안녕하세요 아래지표를 예스로 변환부탁드립니다.
감사합니다.
=====================================
PRC_Volume SuperTrend AI
//PRC_Volume SuperTrend AI
//version = 0
//29.02.24
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
///////////////////////////////////////////////////////////////////////
//inputs
// ~~ Input settings for K and N values
k = 3 // Neighbors 1 to 100
m = 10 // Data
n = max(k,m)
//// ~~ Input settings for prediction values
KNNPriceLen = 20 // Price Trend 2 - 500 step 10
KNNSTlen = 100 // Prediction Trend 2 - 500 step 10
aisignals = 1 // Boolean AI Trend Signals
//// ~~ Define SuperTrend parameters
len = 10 // Length
factor = 3.0 // step 0.1
maSrc = 0 // MaType
// ~~ Calculate the SuperTrend based on the user's choice
vwma = average[len,maSrc](close*volume)/average[len,maSrc](volume)
atr = averagetruerange[len](close)
upperband = vwma + factor*atr
lowerband = vwma - factor*atr
if barindex < len then
upperband = close
lowerband = close
direction = 1
else
//Redefine upperband
if upperband < upperband[1] or close[1] > upperband[1] then
upperband = upperband
else
upperband = upperband[1]
endif
//Redefine lowerband
if lowerband > lowerband[1] or close[1] < lowerband[1] then
lowerdband = lowerband
else
lowerband = lowerband[1]
endif
//Define upperband
prevSupertrend = mysuperTrend[1]
if prevSupertrend = upperband[1] then
if close > upperband then
direction = -1
else
direction = 1
endif
else
if close < lowerband then
direction = 1
else
directon = -1
endif
endif
endif
if direction = -1 then
mysupertrend = lowerband
else
mysupertrend = upperband
endif
// ~~ Collect data points and their corresponding labels
myprice = WeightedAverage[KNNPriceLen](close)
sT = WeightedAverage[kNNSTlen](mysupertrend)
for i=0 to n-1 do
$data[i]=mysupertrend[i]
if myprice[i] > sT[i] then
$labels[i] = 1
else
$labels[i] = 0
endif
next
// ~~ Classify the current data point
currentsuperTrend = mysuperTrend
//label = knn_weighted(data, labels, k, current_superTrend)
// Compute distances from the current point to all other points
n1 = lastset($data)
for i = 0 to n1-1 do
$distances[i] = abs(currentsuperTrend[i]-$data[i])
$indices[i] = i
next
// Sort distances and corresponding indices in ascending order
// Bubble sort method
for i=0 to n1-2 do
for j=0 to n1-i-2 do
if $distances[j]>$distances[j+1] then
tempDist = $distances[j]
$distances[j]=$distances[j+1]
$distances[j+1]=tempDist
tempindex = $indices[j]
$indices[j]=$indices[j+1]
$indices[j+1]=tempindex
endif
next
next
// Compute weighted sum of labels of the k nearest neighbors
weightedsum=0
totalweight=0
for i=0 to k-1 do
myindex = $indices[i]
labeli = $labels[i]
weighti = 1 / ($distances[i]+pow(10,-6) )
weightedsum = weighti*labeli+weightedsum
totalweight = weighti+totalweight
next
label = floor(weightedsum / totalweight,2)
// ~~ Plot
if label = 1 then
r=0
g=250
b=0
elsif label = 0 then
r=250
g=0
b=0
else
r=0
g=0
b=250
endif
middleprice = (open+close)/2
colorbetween(middleprice,mysupertrend,r,g,b,40)
// ~~ Ai Super Trend Signals
starttrendup = label = 1 and label[1]<>1 and aisignals
starttrenddn = label = 0 and label[1]<>0 and aisignals
TrendUp = direction = -1 and direction[1] = 1 and label = 1 and aisignals
TrendDn = direction = 1 and direction[1] = -1 and label = 0 and aisignals
if starttrendup or starttrenddn then
drawpoint(barindex,currentsuperTrend,2)coloured(r,g,b)
elsif Trendup then
drawtext("▲",barindex,currentsuperTrend)coloured(r,g,b)
elsif Trenddn then
drawtext("▼",barindex,currentsuperTrend)coloured(r,g,b)
endif
return currentsuperTrend as "SuperTrend" coloured(r,g,b)style(line,2)
답변 1
예스스탁
예스스탁 답변
2024-11-18 14:08:32
안녕하세요
예스스탁입니다.
올려주신 랭귀지는 사용경험이 없어
함수나 문법등을 정확히 알지 못해 변환해 드릴 수 없습니다.
즐거운 하루되세요
> 동해바다01 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
> 안녕하세요 아래지표를 예스로 변환부탁드립니다.
감사합니다.
=====================================
PRC_Volume SuperTrend AI
//PRC_Volume SuperTrend AI
//version = 0
//29.02.24
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
///////////////////////////////////////////////////////////////////////
//inputs
// ~~ Input settings for K and N values
k = 3 // Neighbors 1 to 100
m = 10 // Data
n = max(k,m)
//// ~~ Input settings for prediction values
KNNPriceLen = 20 // Price Trend 2 - 500 step 10
KNNSTlen = 100 // Prediction Trend 2 - 500 step 10
aisignals = 1 // Boolean AI Trend Signals
//// ~~ Define SuperTrend parameters
len = 10 // Length
factor = 3.0 // step 0.1
maSrc = 0 // MaType
// ~~ Calculate the SuperTrend based on the user's choice
vwma = average[len,maSrc](close*volume)/average[len,maSrc](volume)
atr = averagetruerange[len](close)
upperband = vwma + factor*atr
lowerband = vwma - factor*atr
if barindex < len then
upperband = close
lowerband = close
direction = 1
else
//Redefine upperband
if upperband < upperband[1] or close[1] > upperband[1] then
upperband = upperband
else
upperband = upperband[1]
endif
//Redefine lowerband
if lowerband > lowerband[1] or close[1] < lowerband[1] then
lowerdband = lowerband
else
lowerband = lowerband[1]
endif
//Define upperband
prevSupertrend = mysuperTrend[1]
if prevSupertrend = upperband[1] then
if close > upperband then
direction = -1
else
direction = 1
endif
else
if close < lowerband then
direction = 1
else
directon = -1
endif
endif
endif
if direction = -1 then
mysupertrend = lowerband
else
mysupertrend = upperband
endif
// ~~ Collect data points and their corresponding labels
myprice = WeightedAverage[KNNPriceLen](close)
sT = WeightedAverage[kNNSTlen](mysupertrend)
for i=0 to n-1 do
$data[i]=mysupertrend[i]
if myprice[i] > sT[i] then
$labels[i] = 1
else
$labels[i] = 0
endif
next
// ~~ Classify the current data point
currentsuperTrend = mysuperTrend
//label = knn_weighted(data, labels, k, current_superTrend)
// Compute distances from the current point to all other points
n1 = lastset($data)
for i = 0 to n1-1 do
$distances[i] = abs(currentsuperTrend[i]-$data[i])
$indices[i] = i
next
// Sort distances and corresponding indices in ascending order
// Bubble sort method
for i=0 to n1-2 do
for j=0 to n1-i-2 do
if $distances[j]>$distances[j+1] then
tempDist = $distances[j]
$distances[j]=$distances[j+1]
$distances[j+1]=tempDist
tempindex = $indices[j]
$indices[j]=$indices[j+1]
$indices[j+1]=tempindex
endif
next
next
// Compute weighted sum of labels of the k nearest neighbors
weightedsum=0
totalweight=0
for i=0 to k-1 do
myindex = $indices[i]
labeli = $labels[i]
weighti = 1 / ($distances[i]+pow(10,-6) )
weightedsum = weighti*labeli+weightedsum
totalweight = weighti+totalweight
next
label = floor(weightedsum / totalweight,2)
// ~~ Plot
if label = 1 then
r=0
g=250
b=0
elsif label = 0 then
r=250
g=0
b=0
else
r=0
g=0
b=250
endif
middleprice = (open+close)/2
colorbetween(middleprice,mysupertrend,r,g,b,40)
// ~~ Ai Super Trend Signals
starttrendup = label = 1 and label[1]<>1 and aisignals
starttrenddn = label = 0 and label[1]<>0 and aisignals
TrendUp = direction = -1 and direction[1] = 1 and label = 1 and aisignals
TrendDn = direction = 1 and direction[1] = -1 and label = 0 and aisignals
if starttrendup or starttrenddn then
drawpoint(barindex,currentsuperTrend,2)coloured(r,g,b)
elsif Trendup then
drawtext("▲",barindex,currentsuperTrend)coloured(r,g,b)
elsif Trenddn then
drawtext("▼",barindex,currentsuperTrend)coloured(r,g,b)
endif
return currentsuperTrend as "SuperTrend" coloured(r,g,b)style(line,2)