Donchian Regressione: condivisione e richiesta di miglioramenti
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Donchian Regressione: condivisione e richiesta di miglioramenti
- This topic has 1 reply, 2 voices, and was last updated 1 month ago by
robertogozzi.
-
-
07/08/2024 at 5:11 PM #234961
Buongiorno a tutti,
vorrei condividere con voi il mio indicatore Donchian Regression, che calcola la massima e la minima regressione lineare del periodo tra tre regressioni lineari (applicate a close, high, e low). Può essere utile per chi vuole individuare un trend in base al periodo scelto. Lo sfondo si colora di verde o di rosso a seconda che la differenza tra maxregression corrente e precedente sommata a minregression corrente e precendente , da un valore superiore o inferiore a 0. E’ possibile anche immettere dei valori esempio a scelta di close e volendo anche di high e low, per trovare ad esempio il livello di prezzo limite oltre il quale il colore cambia.
Ecco il codice in questione:
Donchian Regression MOD123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475periodo=3 // Periodo della regressione linearenclose=1 // Prezzo che è possibile modificaren=100 // Barra in cui è applicato il prezzo modificatox=0 // per x=0 è visibile nclose e la linea di barraperiod = max(3,periodo)if x=0 thenDRAWVLINE(n) //Segna la barra modificata, indicata da nDRAWHLINE(nclose)// Segna il prezzo modificato, indicato da ncloseendif// Inizializzazione delle variabilinclose = nclose // Il valore di chiusura per la candela nnhigh = nclose // Il valore massimo per la candela nnlow = nclose // Il valore minimo per la candela nmaxregression = 0minregression = 100000aMax = 0aMin = 0// Inizializzazione delle variabiliclosemod = 0highmod = 0lowmod = 0// Modifica della candela nif barssince(barindex-n) thenclosemod = nclosehighmod = nhighlowmod = nlowopenmod=ncloseelseclosemod = closehighmod = highlowmod = lowopenmod=openendiffor i = 3 to period// Calcola il valore corrente della regressione linearecurrentregression = linearregression[i](closemod)// Calcola il valore corrente della regressione lineare per i minimilowregression = linearregression[i](lowmod)// Calcola il valore corrente della regressione lineare per i massimihighregression = linearregression[i](highmod)// Trova il massimo tra i valori di regressione correntimaxregression = max(maxregression, max(currentregression,lowregression))// Trova il minimo tra i valori di regressione correntiminregression = min(minregression, min(currentregression,maxregression))nexttot=(maxregression-maxregression[1])+(minregression-minregression[1])// Output della soglia superatamedia=(maxregression+minregression)/2if tot>0 thensignal=1r=0g=255b=0elsif tot<0 thensignal=-1r=255g=0b=0endifBACKGROUNDCOLOR(r,g,b,50)return (maxregression) as "Max Regression4", (minregression) as "Min Regression4", tot as "tot"Vorrei aggiungere un calcolo automatico del livello di prezzo limite in cui tot cambia segno e quindi fa cambiare il colore alla candela . Ho provato a usare i cicli for e next richiamando l’indicatore con la funzione call , ma il calcolo è troppo lento e inoltre non sono riuscito a calcolarlo oltre alla candela n e senza impostare una quantità di pips fissa sopra e sotto open . Sarebbe utile calcolarlo per un tot di candele precedenti a n . Ecco il codice dell’indicatore :
Donchian Regression livello di cambio colore123456789101112131415161718192021222324252627282930313233343536pips=100 //range di pips entro cui cercare il livello di cambio colorenbar=550 //barra in cui cercare il livello di cambio colorex=0p=3p=max(p,3)y=closemyMaxRegression4, myMinRegression4, mytot4 = CALL "Donchian Regressione(5)"[p, 1, y, nbar, 1]if x=0 thendrawvline(nbar)endifzero = close // inizializzo la variabile zerot=-mytot4if mytot4 > 0 thenfor i = 1 to pipsnclose1 = y - (i * pipsize)nclose2=y-((i-1)*pipsize)myMaxRegression, myMinRegression, mytot = CALL "Donchian Regressione(3)"[p, 1, nclose1, nbar, 1]myMaxRegression4, myMinRegression4, mytot4 = CALL "Donchian Regressione(5)"[p, 1, nclose2, nbar, 1]if (nclose1 < y and mytot<0) and (nclose1<nclose2 and mytot4>0) thenzero = nclose1breakendifnextelsefor i = 1 to pipsnclose1 = y + (i * pipsize)nclose2=y+((i-1)*pipsize)myMaxRegression, myMinRegression, mytot = CALL "Donchian Regressione(3)"[p, 1, nclose1, nbar, 1]myMaxRegression4, myMinRegression4, mytot4 = CALL "Donchian Regressione(5)"[p, 1, nclose2, nbar, 1]if (nclose1 > y and mytot>0) and (nclose1>nclose2 and mytot4<0) thenzero = nclose1breakendifnextendifreturn zero as "zero"Ringrazio in anticipo tutti quelli che vorranno partecipare a questa mia piccola creazione.
1 user thanked author for this post.
07/24/2024 at 4:48 PM #235731In realtà non c’è bisogno di nessun ciclo, basta verificarlo di volta in volta.
Si ha un cambiamento di colore quando la variabile “r” assume un valore diverso dal precedente (avrei potuto usare la variabile “g“, è indifferente).
Stampa ciascun prezzo sul grafico:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283periodo=3 // Periodo della regressione linearenclose=1 // Prezzo che è possibile modificaren=100 // Barra in cui è applicato il prezzo modificatox=0 // per x=0 è visibile nclose e la linea di barraperiod = max(3,periodo)if x=0 thenDRAWVLINE(n) //Segna la barra modificata, indicata da nDRAWHLINE(nclose)// Segna il prezzo modificato, indicato da ncloseendif// Inizializzazione delle variabilinclose = nclose // Il valore di chiusura per la candela nnhigh = nclose // Il valore massimo per la candela nnlow = nclose // Il valore minimo per la candela nmaxregression = 0minregression = 100000aMax = 0aMin = 0// Inizializzazione delle variabiliclosemod = 0highmod = 0lowmod = 0// Modifica della candela nif barssince(barindex-n) thenclosemod = nclosehighmod = nhighlowmod = nlowopenmod=ncloseelseclosemod = closehighmod = highlowmod = lowopenmod=openendiffor i = 3 to period// Calcola il valore corrente della regressione linearecurrentregression = linearregression[i](closemod)// Calcola il valore corrente della regressione lineare per i minimilowregression = linearregression[i](lowmod)// Calcola il valore corrente della regressione lineare per i massimihighregression = linearregression[i](highmod)// Trova il massimo tra i valori di regressione correntimaxregression = max(maxregression, max(currentregression,lowregression))// Trova il minimo tra i valori di regressione correntiminregression = min(minregression, min(currentregression,maxregression))nexttot=(maxregression-maxregression[1])+(minregression-minregression[1])// Output della soglia superatamedia=(maxregression+minregression)/2if tot>0 thensignal=1r=0g=255b=0elsif tot<0 thensignal=-1r=255g=0b=0endifBACKGROUNDCOLOR(r,g,b,50)IF r <> r[1] THENPrezzo = totBarra = BarIndexOffset = high + rangedrawtext("#Prezzo#",Barra,Offset)ENDIFreturn (maxregression) as "Max Regression4", (minregression) as "Min Regression4", tot as "tot"ho aggiunto le righe tra BACKGROUNDCOLOR e RETURN.
-
AuthorPosts
Find exclusive trading pro-tools on