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 1 week ago by
Iván.
-
-
01/24/2025 at 2:51 PM #243065
Buongiorno 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