Help for the translation from trading view
Forums › ProRealTime English forum › ProRealTime platform support › Help for the translation from trading view
- This topic has 6 replies, 3 voices, and was last updated 6 months ago by GraHal.
Viewing 7 posts - 1 through 7 (of 7 total)
-
-
04/24/2024 at 4:32 AM #231868
Hi All,
I would like to ask for help to translate a script from tradingview as below with thanks in advance
AI Trend Navigator by Zeiierma04/24/2024 at 10:50 AM #23188204/24/2024 at 11:49 AM #231885AI Trend Navigator123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/// © Zeiierman {//@version=5indicator('AI Trend Navigator', overlay=true)// ~~ Tooltips {t1 ="PriceValue selects the method of price computation. \n\nSets the smoothing period for the PriceValue. \n\nAdjusting these settings will change the input values for the K-Nearest Neighbors algorithm, influencing how the trend is calculated."t2 = "TargetValue specifies the target to evaluate. \n\nSets the smoothing period for the TargetValue."t3 ="numberOfClosestValues sets the number of closest values that are considered when calculating the KNN Moving Average. Adjusting this number will affect the sensitivity of the trend line, with a higher value leading to a smoother line and a lower value resulting in a line that is more responsive to recent price changes."t4 ="smoothingPeriod sets the period for the moving average applied to the KNN classifier. Adjusting the smoothing period will affect how rapidly the trend line responds to price changes, with a larger smoothing period leading to a smoother line that may lag recent price movements, and a smaller smoothing period resulting in a line that more closely tracks recent changes."t5 ="This option controls the background color for the trend prediction. Enabling it will change the background color based on the prediction, providing visual cues on the direction of the trend. A green color indicates a positive prediction, while red indicates a negative prediction."//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}// ~~ Inputs {PriceValue = input.string("hl2", options = ["hl2","VWAP", "sma", "wma", "ema", "hma"], group="", inline="Value")maLen = input.int(5, minval=2, maxval=200, title="", group="", inline="Value", tooltip=t1)TargetValue = input.string("Price Action", options = ["Price Action","VWAP", "Volatility", "sma", "wma", "ema", "hma"], group="", inline="Target")maLen_ = input.int(5, minval=2, maxval=200, title="", group="", inline="Target", tooltip=t2)// Input parameters for the KNN Moving AveragenumberOfClosestValues = input.int(3, "Number of Closest Values", 2, 200, tooltip=t3)smoothingPeriod = input.int(50, "Smoothing Period", 2, 500, tooltip=t4)windowSize = math.max(numberOfClosestValues, 30)// knn ColorUpknn_col = input.color(color.lime, title="", group="KNN Color", inline="knn col")Dnknn_col = input.color(color.red, title="", group="KNN Color", inline="knn col")Neuknn_col = input.color(color.orange, title="", group="KNN Color", inline="knn col")// MA knn ColorMaknn_col = input.color(color.teal, title="", group="MA KNN Color", inline="MA knn col")// BG Colorbgcolor = input.bool(false, title="Trend Prediction Color", group="BG Color", inline="bg", tooltip=t5)Up_col = input.color(color.lime, title="", group="BG Color", inline="bg")Dn_col = input.color(color.red, title="", group="BG Color", inline="bg")//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}// ~~ kNN Classifier {value_in = switch PriceValue"hl2" => ta.sma(hl2,maLen)"VWAP" => ta.vwap(close[maLen])"sma" => ta.sma(close,maLen)"wma" => ta.wma(close,maLen)"ema" => ta.ema(close,maLen)"hma" => ta.hma(close,maLen)meanOfKClosest(value_,target_) =>closestDistances = array.new_float(numberOfClosestValues, 1e10)closestValues = array.new_float(numberOfClosestValues, 0.0)for i = 1 to windowSizevalue = value_[i]distance = math.abs(target_ - value)maxDistIndex = 0maxDistValue = closestDistances.get(0)for j = 1 to numberOfClosestValues - 1if closestDistances.get(j) > maxDistValuemaxDistIndex := jmaxDistValue := closestDistances.get(j)if distance < maxDistValueclosestDistances.set(maxDistIndex, distance)closestValues.set(maxDistIndex, value)closestValues.sum() / numberOfClosestValues// Choose the target input based on user selectiontarget_in = switch TargetValue"Price Action" => ta.rma(close,maLen_)"VWAP" => ta.vwap(close[maLen_])"Volatility" => ta.atr(14)"sma" => ta.sma(close,maLen_)"wma" => ta.wma(close,maLen_)"ema" => ta.ema(close,maLen_)"hma" => ta.hma(close,maLen_)knnMA = meanOfKClosest(value_in,target_in)//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}// ~~ kNN Prediction {// Function to calculate KNN Classifierprice = math.avg(knnMA, close)c = ta.rma(knnMA[1], smoothingPeriod)o = ta.rma(knnMA, smoothingPeriod)// Defines KNN function to perform classificationknn(price) =>Pos_count = 0Neg_count = 0min_distance = 10e10nearest_index = 0for j = 1 to 10distance = math.sqrt(math.pow(price[j] - price, 2))if distance < min_distancemin_distance := distancenearest_index := jNeg = c[nearest_index] > o[nearest_index]Pos = c[nearest_index] < o[nearest_index]if PosPos_count += 1if NegNeg_count += 1output = Pos_count>Neg_count?1:-1// Calls KNN function and smooths the predictionknn_prediction_raw = knn(price)knn_prediction = ta.wma(knn_prediction_raw, 3)//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}// ~~ Plots {// Plots for display on the chartknnMA_ = ta.wma(knnMA,5)knnMA_col = knnMA_>knnMA_[1]?Upknn_col:knnMA_<knnMA_[1]?Dnknn_col:Neuknn_colClassifier_Line = plot(knnMA_,"Knn Classifier Line", knnMA_col)MAknn_ = ta.rma(knnMA, smoothingPeriod)plot(MAknn_,"Average Knn Classifier Line" ,Maknn_col)green = knn_prediction < 0.5red = knn_prediction > -0.5bgcolor( green and bgcolor? color.new(Dn_col,80) :red and bgcolor ? color.new(Up_col,80) : na)//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}// ~~ Alerts {knnMA_cross_Over_Ma = ta.crossover(knnMA_,MAknn_)knnMA_cross_Under_Ma = ta.crossunder(knnMA_,MAknn_)knnMA_cross_Over_Close = ta.crossover(knnMA_,close)knnMA_cross_Under_Close = ta.crossunder(knnMA_,close)knnMA_Switch_Up = knnMA_[1]<knnMA_ and knnMA_[1]<=knnMA_[2]knnMA_Switch_Dn = knnMA_[1]>knnMA_ and knnMA_[1]>=knnMA_[2]knnMA_Neutral = knnMA_col==Neuknn_col and knnMA_col[1]!=Neuknn_colgreenBG = green and not green[1]redBG = red and not red[1]alertcondition(knnMA_cross_Over_Ma, title = "Knn Crossover Average Knn", message = "Knn Crossover Average Knn")alertcondition(knnMA_cross_Under_Ma, title = "Knn Crossunder Average Knn", message = "Knn Crossunder Average Knn")alertcondition(knnMA_cross_Over_Close, title = "Knn Crossover Close", message = "Knn Crossover Close")alertcondition(knnMA_cross_Under_Close, title = "Knn Crossunder Close", message = "Knn Crossunder Close")alertcondition(knnMA_Switch_Up, title = "Knn Switch Up", message = "Knn Switch Up")alertcondition(knnMA_Switch_Dn, title = "Knn Switch Dn", message = "Knn Switch Dn")alertcondition(knnMA_Neutral, title = "Knn is Neutral", message = "Knn is Neutral")alertcondition(greenBG, title = "Positive Prediction", message = "Positive Prediction")alertcondition(redBG, title = "Negative Prediction", message = "Negative Prediction")//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}Hi GraHal,
Noted with thanks for your reminding.
Here above is the code, please help me for the translation in your convenience with thanks.
05/03/2024 at 5:33 PM #232290Hi All,
Can anyone help me to convert the above indicator with thanks.
05/22/2024 at 1:49 PM #232925Hi
Here you have the indicator:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174//-----------------------------------------------------------////PRC_AI Trend Navigator//version = 0//24.04.24//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge//-----------------------------------------------------------////-----Inputs------------------------------------------------//PriceValue=0//0=hl2,1=vwap,2=sma,3=wma,4=ema,5=hmamaLen=5TargetValue=0//0=Price Action, 1=vwap,2=volatility,3=sma,4=wma,5=ema,6=hmamaLen1=5//---Input parameters for the KNN Moving AveragenumberOfClosestValues=3//Number of Closest ValuessmoothingPeriod=50windowSize=max(numberOfClosestValues,30)//---Background Colourbgcolour=0//Boolean//Backgroundcolor//-----------------------------------------------------------////-----PriceValue calculation--------------------------------//if PriceValue=0 thenValueIn=average[maLen]((high+low)/2)elsif PriceValue=1 thenValueIn=VolumeAdjustedAverage[maLen](close)elsif PriceValue=2 thenValueIn=average[maLen](close)elsif PriceValue=3 thenValueIn=weightedaverage[maLen](close)elsif PriceValue=4 thenValueIn=exponentialaverage[maLen](close)elsif PriceValue=5 thenValueIn=hullaverage[maLen](close)endif//-----------------------------------------------------------////-----Target input calculation------------------------------//if TargetValue=0 thenalpha = 1/maLen1if barindex <= maLen1 thenTargetIn=closeelseif barindex = maLen1 thenTargetIn = average[maLen1](close)elseTargetIn = alpha*close + (1-alpha)*TargetIn[1]endifendifelsif TargetValue=1 thenTargetIn=VolumeAdjustedAverage[maLen1](close)elsif TargetValue=2 thenTargetIn=averagetruerange[14](close)elsif TargetValue=3 thenTargetIn=average[maLen1](close)elsif TargetValue=4 thenTargetIn=weightedaverage[maLen1](close)elsif TargetValue=5 thenTargetIn=exponentialaverage[maLen1](close)elsif TargetValue=6 thenTargetIn=hullaverage[maLen1](close)endif//-----------------------------------------------------------////-----KNN Classifier----------------------------------------////knnMA = meanOfKClosest(value_in,target_in)$closestDistances[0]=exp(10)$closestValues[0]=0for i=1 to windowSize domyvalue=valueIn[i]distance=abs(targetIn-myvalue)maxDistIndex=0maxDistValue=$closestDistances[0]for j=0 to numberOfClosestValues-1 doif $closestDistances[j] > maxDistValue thenmaxDistIndex=jmaxDistValue=$closestDistances[j]endifnextif distance < maxDistValue then$closestDistances[maxDistIndex]=distance$closestValues[maxDistIndex]=myvalueendifnextsumclosestValues=summation[numberOfClosestValues]($closestValues[lastset($closestValues)])knnMA = sumclosestValues/numberOfClosestValues//-----------------------------------------------------------//price1=(KnnMA+close)/2alpha1 = 1/smoothingPeriodalpha2 = 1/smoothingPeriodif barindex <= smoothingPeriod thenc = knnMA[1]o = knnMAelseif barindex = smoothingPeriod thenc = average[smoothingPeriod](knnMA[1])elsec = alpha1*knnMA[1] + (1-alpha1)*c[1]endifif barindex = smoothingPeriod theno = average[smoothingPeriod](knnMA)elseo = alpha2*knnMA + (1-alpha2)*o[1]endifendif//-----------------------------------------------------------//poscount=0negcount=0mindistance=10*exp(10)nearestindex=0for j=1 to 10 dodistance1=sqrt(pow(price1[j]-price1,2))if distance1 < mindistance thenmindistance=distance1nearestindex=jneg=c[nearestindex]>o[nearestindex]pos=c[nearestindex]<o[nearestindex]if pos thenposcount=1+poscountelsif neg thennegcount=1+negcountendifendifnextif poscount>negcount thenknnPredictionRaw=1elseknnPredictionRaw=-1endifknnPrediction=weightedaverage[3](knnPredictionRaw)//-----------------------------------------------------------//KnnMA1 = weightedaverage[5](KnnMA)if KnnMA1>KnnMA1[1] thenr=0g=230b=118elsif KnnMA1<KnnMA1[1] thenr=255g=82b=82elser=255g=152b=0endif//-----------------------------------------------------------//alpha2 = 1/smoothingPeriodif barindex <= smoothingPeriod thenMAknn=knnMAelseif barindex = smoothingPeriod thenMAknn = average[smoothingPeriod](knnMA)elseMAknn = alpha2*knnMA + (1-alpha2)*MAknn[1]endifendif//-----------------------------------------------------------//if bgcolour thenif knnPrediction > -0.5 thenrbars=0gbars=230bbars=118elsif knnPrediction < 0.5 thenrbars=255gbars=82bbars=82endifbackgroundcolor(rbars,gbars,bbars,35)endif//-----------------------------------------------------------//return knnMA1 as "Knn Classifier Line"coloured(r,g,b)style(line,2), MAknn as "Average Knn Classifier Line"coloured(1,137,123)05/22/2024 at 3:18 PM #23292805/22/2024 at 4:16 PM #232932 -
AuthorPosts
Viewing 7 posts - 1 through 7 (of 7 total)
Find exclusive trading pro-tools on
Similar topics: