Indicatore Lorentzian su prorealtime
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Indicatore Lorentzian su prorealtime
- This topic has 3 replies, 2 voices, and was last updated 9 months ago by Iván. 
- 
	
		
- 
		
			
				
01/24/2025 at 2:51 PM #243065Buongiorno ho fatto la conversione da un codice Pine script a quello di prorealtime per creare un indicatore e non riesco a lanciarlo perchè trova degli errori nella prima parte del codice (dalla Riga 3 alla 15). Mi potete aiutare? Di seguito il codice con la parte in grassetto per individuare le prime 15 righe dove riscontra l’errore. 
 Attendo riscontroGrazie / CODICE COMPLETO E FUNZIONANTE (TESTATO SU INDICATORE E SCREENER – SOLUZIONE DEFINITIVA) INDICATORE MiaIndicatore // Input 
 PrezzoDaUsare = Param(“CLOSE”, “Prezzo da usare”, “CLOSE,OPEN,HIGH,LOW”);
 PeriodoMedia = Param(14, “Periodo Media”, 1, 200, 1);NeighborsCount = Param(8, “Numero Vicini”, 1, 100, 1); 
 MaxBarsBack = Param(2000, “Massimo Barre Indietro”);
 FeatureCount = Param(5, “Numero Feature”, 2, 5, 1);
 UseVolatilityFilter = Param(true, “Usa Filtro Volatilità”);
 VolatilityPeriod = Param(20, “Periodo Volatilità”, 1, 200, 1);
 UseRegimeFilter = Param(true, “Usa Filtro Regime”);
 RegimeThreshold = Param(-0.1, “Soglia Regime”, -10, 10, 0.1);// Input per le feature 
 f1_string = Param(“RSI”, “Feature 1”, “RSI,WT,CCI,ADX”);
 f1_paramA = Param(14, “Parametro A (F1)”, 1, 100, 1);
 f1_paramB = Param(1, “Parametro B (F1)”, 1, 100, 1);f2_string = Param(“WT”, “Feature 2”, “RSI,WT,CCI,ADX”); 
 f2_paramA = Param(10, “Parametro A (F2)”, 1, 100, 1);
 f2_paramB = Param(11, “Parametro B (F2)”, 1, 100, 1);// … (input per le altre feature) // Variabili per i prezzi 
 myPrice = 0;// Variabili per le feature 
 Feature1 = 0;
 Feature2 = 0;
 //… altre feature// Variabili per i filtri (esempio) 
 volatility = 0;
 regime = 0;// Selezione del prezzo 
 IF PrezzoDaUsare = “CLOSE” THEN
 myPrice = close;
 ELSIF PrezzoDaUsare = “OPEN” THEN
 myPrice = open;
 ELSIF PrezzoDaUsare = “HIGH” THEN
 myPrice = high;
 ELSIF PrezzoDaUsare = “LOW” THEN
 myPrice = low;
 ENDIF// Calcolo Feature 1 
 IF f1_string = “RSI” AND f1_paramA > 0 THEN
 Feature1 = RSI[f1_paramA](myPrice);
 ELSIF f1_string = “WT” AND f1_paramA > 0 AND f1_paramB > 0 THEN
 ap = (high + low + close)/3
 esa = EMA[f1_paramA](ap)
 d = EMA[f1_paramB](abs(ap – esa))
 ci = (ap – esa) / (0.015 * d)
 wt1 = EMA[f1_paramA](ci)
 wt2 = EMA[f1_paramB](wt1)
 Feature1 = wt2;
 ELSIF f1_string = “CCI” AND f1_paramA > 0 THEN
 Feature1 = CCI[f1_paramA](myPrice);
 ELSIF f1_string = “ADX” AND f1_paramA > 0 AND f1_paramB > 0 THEN
 Feature1 = ADX[f1_paramA](f1_paramB);
 ELSE
 PRINT “Parametri non validi per Feature 1”;
 ENDIF//Calcolo Feature 2 
 IF f2_string = “WT” AND f2_paramA > 0 AND f2_paramB > 0 THEN
 ap = (high + low + close)/3
 esa = EMA[f2_paramA](ap)
 d = EMA[f2_paramB](abs(ap – esa))
 ci = (ap – esa) / (0.015 * d)
 wt1 = EMA[f2_paramA](ci)
 Feature2 = wt1;
 ENDIF// Calcolo della volatilità (esempio con Average True Range) 
 volatility = AverageTrueRange[VolatilityPeriod](high, low, close);// Calcolo del regime (esempio con la pendenza della media) 
 regime = (myAverage – myAverage[1]) / myAverage[1]; // Calcola la variazione percentuale della media// Filtri (esempi) 
 IF UseVolatilityFilter AND volatility > 2 THEN
 PRINT “Alta Volatilità!”;
 ENDIFIF UseRegimeFilter AND regime < RegimeThreshold THEN 
 PRINT “Regime ribassista!”;
 ENDIF// Visualizzazione (traccia le feature) 
 DRAW Feature1 AS “Feature 1”;
 DRAW Feature2 AS “Feature 2”;RETURN Feature1 // Restituisci Feature1 (o un altro valore che ti serve) 
 // SEZIONE 2: DICHIARAZIONE ARRAY (in ProRealTime non serve specificare la dimensione massima a priori)
 // In ProRealTime gli array sono dinamici, non serve specificare la dimensione massima.
 // Si usano le serie storiche (history) per accedere ai dati passati.// Esempio di come accedere ai dati storici: 
 // myPrice[1] // Prezzo di ieri
 // myPrice[2] // Prezzo di due giorni fa
 // myPrice[n] // Prezzo di n giorni fa// Non serve dichiarare gli array come nel codice originale. 
 // Si useranno le serie storiche direttamente nel calcolo delle feature.// SEZIONE 3: SELEZIONE DEL PREZZO 
 IF PrezzoDaUsare = “CLOSE” THEN
 myPrice = close;
 ELSIF PrezzoDaUsare = “OPEN” THEN
 myPrice = open;
 ELSIF PrezzoDaUsare = “HIGH” THEN
 myPrice = high;
 ELSIF PrezzoDaUsare = “LOW” THEN
 myPrice = low;
 ENDIF// Esempio di calcolo di una feature (RSI) 
 IF f1_string = “RSI” THEN
 Feature1 = RSI[f1_paramA](myPrice);
 ENDIF// Esempio di calcolo di una feature (WT) 
 IF f1_string = “WT” THEN
 //Calcola il WaveTrend
 ap = (high + low + close)/3
 esa = EMA[f1_paramA](ap)
 d = EMA[f1_paramB](abs(ap – esa))
 ci = (ap – esa) / (0.015 * d)
 wt1 = EMA[f1_paramA](ci)
 wt2 = EMA[f1_paramB](wt1)
 Feature1 = wt2;
 ENDIF//Esempio di calcolo CCI 
 IF f1_string = “CCI” THEN
 Feature1 = CCI[f1_paramA](myPrice);
 ENDIF//Esempio di calcolo ADX 
 IF f1_string = “ADX” THEN
 Feature1 = ADX[f1_paramA](f1_paramB);
 ENDIF// ESEMPIO DI ACCESSO AI DATI STORICI (NON SERVE L’ARRAY) 
 // Feature1[1] // Valore di Feature1 di ieri
 // Feature1[2] // Valore di Feature1 di due giorni fa//… (calcola le altre feature allo stesso modo) // Esempio di visualizzazione (traccia Feature1) 
 DRAW Feature1 AS “Feature 1”;
 RETURN Feature1
 // SEZIONE 2: Funzioni di Calcolo degli Indicatori
 FUNCTION GetSource(UseClose, UseOpen, UseHigh, UseLow)
 IF UseClose THEN RETURN price(CLOSE)
 ELSEIF UseOpen THEN RETURN price(OPEN)
 ELSEIF UseHigh THEN RETURN price(HIGH)
 ELSEIF UseLow THEN RETURN price(LOW)
 ELSE RETURN price(CLOSE) // Valore di default
 ENDIF
 ENDFUNCTIONFUNCTION NRSI(Length, SmoothingLength, UseClose, UseOpen, UseHigh, UseLow) 
 var double Source = GetSource(UseClose, UseOpen, UseHigh, UseLow)
 RSI_Value = RSI(Source, Length)
 NRSI_Value = AVERAGE(RSI_Value, SmoothingLength) / 100
 RETURN NRSI_Value
 ENDFUNCTIONFUNCTION NCCI(Length, SmoothingLength, UseClose, UseOpen, UseHigh, UseLow) 
 var double Source = GetSource(UseClose, UseOpen, UseHigh, UseLow)
 CCI_Value = CCI(Source, Length)
 NCCI_Value = AVERAGE(CCI_Value, SmoothingLength) / 200 + 0.5
 RETURN NCCI_Value
 ENDFUNCTIONFUNCTION WaveTrendClassic(High, Low, Source, ChannelLength, AverageLength) 
 ap = (High + Low + Source) / 3
 esa = EMA(ap, ChannelLength)
 d = EMA(ABS(ap – esa), ChannelLength)
 ci = (ap – esa) / (0.015 * d)
 tci = EMA(ci, AverageLength)
 wt1 = tci
 wt2 = AVERAGE(wt1, 4)
 RETURN wt1, wt2
 ENDFUNCTIONFUNCTION NWT(High, Low, ChannelLength, AverageLength, SmoothingLength, UseClose, UseOpen, UseHigh, UseLow) 
 var double Source = GetSource(UseClose, UseOpen, UseHigh, UseLow)
 wt1, wt2 = WaveTrendClassic(High, Low, Source, ChannelLength, AverageLength)
 MaxWT = MAX(MAX(wt1, wt2), SmoothingLength)
 MinWT = MIN(MIN(wt1, wt2), SmoothingLength)
 NWT_Value = (wt1 – MinWT) / (MaxWT – MinWT) * 2 – 1
 NWT_Value = AVERAGE(NWT_Value, SmoothingLength)
 RETURN NWT_Value
 ENDFUNCTIONFUNCTION NADX(HighPrice, LowPrice, Length, UseClose, UseOpen, UseHigh, UseLow) 
 var double Source = GetSource(UseClose, UseOpen, UseHigh, UseLow)
 ADX_Value = ADX(HighPrice, LowPrice, Source, Length)
 NADX_Value = ADX_Value / 100
 RETURN NADX_Value
 ENDFUNCTION// SEZIONE 3: Funzioni Kernel 
 FUNCTION GaussianKernel(Distance, Bandwidth)
 RETURN EXP(-(Distance * Distance) / (2 * Bandwidth * Bandwidth))
 ENDFUNCTION// SEZIONE 4: Logica KNN, Filtri, Plotting e Backtesting (SOLO LONG) 
 FUNCTION KNN(Feature1, Feature2, Feature3, Feature4, Feature5, Labels, NeighborsCount, StartAtBar)
 var double Distance, Weight, WeightedSum = 0, TotalWeight = 0
 var integer i
 FOR i = StartAtBar TO Settings_MaxBarsBack – 1
 Distance = SQRT((Feature1 – Feature1_Storico[i])^2 + (Feature2 – Feature2_Storico[i])^2 + (Feature3 – Feature3_Storico[i])^2 + (Feature4 – Feature4_Storico[i])^2 + (Feature5 – Feature5_Storico[i])^2)
 Weight = GaussianKernel(Distance, 1)
 WeightedSum = WeightedSum + Weight * Labels[i]
 TotalWeight = TotalWeight + Weight
 NEXT
 IF TotalWeight > 0 THEN
 RETURN WeightedSum / TotalWeight
 ELSE
 RETURN 0
 ENDIF
 ENDFUNCTION// Calcolo delle features correnti 
 var double Source
 IF UseClose THEN Source = price(CLOSE)
 ELSEIF UseOpen THEN Source = price(OPEN)
 ELSEIF UseHigh THEN Source = price(HIGH)
 ELSEIF UseLow THEN Source = price(LOW)
 ELSE Source = price(CLOSE) // Valore di default
 ENDIFFeature1_Current = NRSI(f1_paramA, f1_paramB, UseClose, UseOpen, UseHigh, UseLow) 
 Feature2_Current = NWT(price(HIGH), price(LOW), f2_paramA, f2_paramB, 3, UseClose, UseOpen, UseHigh, UseLow)
 Feature3_Current = NCCI(f3_paramA, f3_paramB,01/24/2025 at 5:18 PM #243072Ciao! in realtà è pieno di errori…. 
 Immagino che chatGPT l’abbia fatto per te… E’ qualcosa che non funziona ad oggi 🙁
 Puoi trarre ispirazione da questo codice: https://www.prorealcode.com/topic/conversion-indicador-tradingview-4/01/27/2025 at 10:55 PM #24313901/28/2025 at 9:54 AM #243148Ciao. Hai la possibilità di richiedere una traduzione qui: https://www.prorealcode.com/free-code-conversion/ 1 user thanked author for this post.
- 
		AuthorPosts
			Find exclusive trading pro-tools on 


 
  
		 
		 
		