Equity dei segnali di un indicatore Probuilder
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Equity dei segnali di un indicatore Probuilder
- This topic has 8 replies, 4 voices, and was last updated 1 year ago by robertogozzi.
-
-
08/22/2023 at 4:41 PM #219500
Buongiorno a tutti,
sto cercando di ricreare in linguaggio probuilder, l’equity di una semplice strategia giornaliera ProOrder che ho pubblicato a questo link (https://www.prorealcode.com/prorealtime-trading-strategies/universal-xbody-strategy-on-cac-1day/) ma sto riscontrando dei problemi nella forma dell’equity che nell’indicatore adhoc non rispecchia perfettamente i risultati in backtest (vorrei l’equity per eseguire delle ottimizzazioni automatiche) . Per ricreare l’equity ho eseguito la differenza dei body delle candele profittevoli meno i body delle candele perdenti. Questo è il codice da correggere, grazie a chiunque mi vorrà aiutare:
Universal XBody Indicator on AUDUSD1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//***********************************************************************************************************//------------------ SYSTEM VARIABLES---------------------------------------//AUDUSD Values: -------------------------------------------- Ottimization infoperiod=394// Optimize best value for each Symbol, range=1-1000, with step=1mode=1// Optimize the best trading mode , range=1-4, with step=1invertsignal=1// 1=positive signal, -1=negative signal, range=-1-1, with step=2//***********************************************************************************************//------------------ SYSTEM FILTER---------------------------------------filter1=0// to set after the variable optimization, range=1-100, with step=1filter2=0// to set after the variable optimization, range=1-100, with step=1//------------------ INDICATOR ---------------------------------------body=close-openvar=(body-body[1])sumvar=summation[period](var)if sumvar>filter1*pipsize thengreen=(sumvar)endifif sumvar<-filter2*pipsize thenred=(sumvar)endifif mode=1 thenc1=red<red[1]c2=green>green[1]endifif mode=2 thenc1=red>red[1]c2=green<green[1]endifif mode=3 thenc1=red<red[1]c2=green<green[1]endifif mode=4 thenc1=red>red[1]c2=green>green[1]endifif c1 thensignal=1*invertsignalelsif c2 thensignal=-1*invertsignalendifif close>open thensig=1elsesig=-1endifif barindex>a thenonce profitto=0once perdita=0if signal[1]=sig thenprofitto=ABS(body/pipsize)+profittoelsif signal[1]<>sig thenperdita=ABS(body/pipsize)+perditaendifequity=profitto-perditaendifreturn equity as "equity"08/22/2023 at 5:14 PM #219503Errata corrige
Errata corrige1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//***********************************************************************************************************//------------------ SYSTEM VARIABLES---------------------------------------//AUDUSD Values: -------------------------------------------- Ottimization infoperiod=394// Optimize best value for each Symbol, range=1-1000, with step=1mode=1// Optimize the best trading mode , range=1-4, with step=1invertsignal=1// 1=positive signal, -1=negative signal, range=-1-1, with step=2//***********************************************************************************************//------------------ SYSTEM FILTER---------------------------------------filter1=0// to set after the variable optimization, range=1-100, with step=1filter2=0// to set after the variable optimization, range=1-100, with step=1//------------------ INDICATOR ---------------------------------------body=close-openvar=(body-body[1])sumvar=summation[period](var)if sumvar>filter1*pipsize thengreen=(sumvar)endifif sumvar<-filter2*pipsize thenred=(sumvar)endifif mode=1 thenc1=red<red[1]c2=green>green[1]endifif mode=2 thenc1=red>red[1]c2=green<green[1]endifif mode=3 thenc1=red<red[1]c2=green<green[1]endifif mode=4 thenc1=red>red[1]c2=green>green[1]endifif c1 thensignal=1*invertsignalelsif c2 thensignal=-1*invertsignalendifif close>open thensig=1elsesig=-1endifif barindex>period thenonce profitto=0once perdita=0if signal[1]=sig thenprofitto=ABS(body/pipsize)+profittoelsif signal[1]<>sig thenperdita=ABS(body/pipsize)+perditaendifequity=profitto-perditaendifreturn equity as "equity08/23/2023 at 9:15 AM #219516Grazie per la tua condivisione Davide! 🙂
1 user thanked author for this post.
08/23/2023 at 11:04 AM #219533Grazie tante Nicholas! Se potessi darmi una mano per migliorare ancora di più questa strategia, non sarei il solo ad essertene grato. Ho bisogno della vostra esperienza di programmatori per renderla più indipendente dal timeframe e userfriendly. L’intento di questo post era quello di ricreare l’equity in ambiente Probuilder, per ottimizzare il periodo della strategia in modo automatico .
Ps: ho già provato a fare una cosa simile, creando tanti indicatori uguali al suddetto, uno per ogni periodo ma in questo modo richiederebbe 1000 indicatori riuniti in un unico indicatore, il che è quasi impossibile.
08/23/2023 at 5:18 PM #219579Parli di strategia ed hai allegato la foto di un backtest, ma questo è un indicatore!
Cosa desideri fare con questo indicatore?
08/23/2023 at 9:22 PM #219597Ciao Roberto.
Si! Nell’immagine si vede nella prima finestra, in alto, la strategia backtestata su AUDUSD, nella seconda è l’equity della strategia calcolata direttamente dall’indicatore, e l’ultima è il prezzo (allego l’immagine insieme al codice della strategia e dell’indicatore). Questo indicatore dovrebbe disegnare la stessa equity della strategia, ma come puoi vedere nell’immagine non sono affatto uguali. La mia domanda è:
C’è un modo per disegnare la stessa equity della strategia con un indicatore?
08/24/2023 at 10:24 AM #219710Per il calcolo del Profitto, nella strategia, aggiungi alla fine queste righe e vedrai che CURVA sarà identica alla Equity Line del backtest (io ho messo 100000 come capitale iniziale, tu metti quello che usi nel tuo backtest):
1234567//------------------------------------------------------------------------------------IF OnMarket THENtempProfit = PositionPrice * PositionPerf * PipValueENDIFCurva = round(StrategyProfit + tempProfit + 100000,1)graph Curva//------------------------------------------------------------------------------------devi quindi cercare di ottenere, nell’indicatore, i valori usati nella strategia:
- calcolare STRATEGYPROFIT quando non sei più a mercato ed è appena stata chiusa un’operazione, dato dal prezzo di uscita – quello d’entrata (o il prezzo medio se accumuli) o viceversa se sei Short
- calcolare il profitto/perdita temporaneo mentre un’operazione è in corso con la formula round(StrategyProfit + tempProfit + 100000,1), sostituendo 100000 con il Capitale che usi nel backtest.
09/08/2023 at 6:55 PM #220598Per il calcolo del Profitto, nella strategia, aggiungi alla fine queste righe e vedrai che CURVA sarà identica alla Equity Line del backtest (io ho messo 100000 come capitale iniziale, tu metti quello che usi nel tuo backtest):
1234567//————————————————————————————IF OnMarket THENtempProfit= PositionPrice * PositionPerf * PipValueENDIFCurva = round(StrategyProfit + tempProfit + 100000,1)graph Curva//————————————————————————————devi quindi cercare di ottenere, nell’indicatore, i valori usati nella strategia:
- calcolare STRATEGYPROFIT quando non sei più a mercato ed è appena stata chiusa un’operazione, dato dal prezzo di uscita – quello d’entrata (o il prezzo medio se accumuli) o viceversa se sei Short
- calcolare il profitto/perdita temporaneo mentre un’operazione è in corso con la formula round(StrategyProfit + tempProfit + 100000,1), sostituendo 100000 con il Capitale che usi nel backtest.
Scusa ma l’istruzione graph non è proibita in live ? Mi pare si possa usare solo in backtest giusto ?
09/09/2023 at 10:33 AM #220617Esatto, si può usare solo in backtest, anche perché LIVE non potrebbe stampare niente, sarebbe inutile!
LIVE si può usare solo la variabile per prendere eventuali decisioni sul da farsi, secondo il suo andamento.
-
AuthorPosts
Find exclusive trading pro-tools on