Equity dei segnali di un indicatore Probuilder

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #219500 quote
    davidelaferla
    Participant
    Average

    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:

     

    //***********************************************************************************************************
    //------------------ SYSTEM VARIABLES---------------------------------------
    //AUDUSD Values:      -------------------------------------------- Ottimization info
    period=394// Optimize best value for each Symbol, range=1-1000, with step=1
    mode=1// Optimize the best trading mode , range=1-4, with step=1
    invertsignal=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=1
    filter2=0// to set after the variable optimization, range=1-100, with step=1
    //------------------ INDICATOR ---------------------------------------
    body=close-open
    var=(body-body[1])
    sumvar=summation[period](var)
    if sumvar>filter1*pipsize then
    green=(sumvar)
    endif
    if sumvar<-filter2*pipsize then
    red=(sumvar)
    endif
     
    if mode=1 then
    c1=red<red[1]
    c2=green>green[1]
    endif
    if mode=2 then
    c1=red>red[1]
    c2=green<green[1]
    endif
    if mode=3 then
    c1=red<red[1]
    c2=green<green[1]
    endif
    if mode=4 then
    c1=red>red[1]
    c2=green>green[1]
    endif
    if c1 then
    signal=1*invertsignal
    elsif c2  then
    signal=-1*invertsignal
    endif
    
    if close>open then
    sig=1
    else
    sig=-1
    endif
    
    if barindex>a then
    once profitto=0
    once perdita=0
    if signal[1]=sig then
    profitto=ABS(body/pipsize)+profitto
    elsif signal[1]<>sig then
    perdita=ABS(body/pipsize)+perdita
    endif
    equity=profitto-perdita
    endif
    
    
    return equity as "equity"
    
    Errore-Equity-Universal-XBody-Indicator.jpg Errore-Equity-Universal-XBody-Indicator.jpg
    #219503 quote
    davidelaferla
    Participant
    Average

    Errata corrige

     

    	
    //***********************************************************************************************************
    //------------------ SYSTEM VARIABLES---------------------------------------
    //AUDUSD Values:      -------------------------------------------- Ottimization info
    period=394// Optimize best value for each Symbol, range=1-1000, with step=1
    mode=1// Optimize the best trading mode , range=1-4, with step=1
    invertsignal=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=1
    filter2=0// to set after the variable optimization, range=1-100, with step=1
    //------------------ INDICATOR ---------------------------------------
    body=close-open
    var=(body-body[1])
    sumvar=summation[period](var)
    if sumvar>filter1*pipsize then
    green=(sumvar)
    endif
    if sumvar<-filter2*pipsize then
    red=(sumvar)
    endif
     
    if mode=1 then
    c1=red<red[1]
    c2=green>green[1]
    endif
    if mode=2 then
    c1=red>red[1]
    c2=green<green[1]
    endif
    if mode=3 then
    c1=red<red[1]
    c2=green<green[1]
    endif
    if mode=4 then
    c1=red>red[1]
    c2=green>green[1]
    endif
    if c1 then
    signal=1*invertsignal
    elsif c2  then
    signal=-1*invertsignal
    endif
     
    if close>open then
    sig=1
    else
    sig=-1
    endif
     
    if barindex>period then
    once profitto=0
    once perdita=0
    if signal[1]=sig then
    profitto=ABS(body/pipsize)+profitto
    elsif signal[1]<>sig then
    perdita=ABS(body/pipsize)+perdita
    endif
    equity=profitto-perdita
    endif
     
     
    return equity as "equity
    #219516 quote
    Nicolas
    Keymaster
    Master

    Grazie per la tua condivisione Davide! 🙂

    davidelaferla thanked this post
    #219533 quote
    davidelaferla
    Participant
    Average

    Grazie 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.

    #219579 quote
    robertogozzi
    Moderator
    Master

    Parli di strategia ed hai allegato la foto di un backtest, ma questo è un indicatore!

    Cosa desideri fare con questo indicatore?

    #219597 quote
    davidelaferla
    Participant
    Average

    Ciao 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?

    Universal-XBody-Strategy-AUDUSD.png Universal-XBody-Strategy-AUDUSD.png Universal-XBody-Strategy-on-AUDUSD.itf Universal-XBody-indicator-on-AUDUSD.itf
    #219710 quote
    robertogozzi
    Moderator
    Master

    Per 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):

    //------------------------------------------------------------------------------------
    IF OnMarket THEN
       tempProfit = PositionPrice * PositionPerf * PipValue
    ENDIF
    Curva = 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.
    #220598 quote
    Alessandro Furlani
    Participant
    Average

    Per 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):

    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 ?

    #220617 quote
    robertogozzi
    Moderator
    Master

    Esatto, 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.

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.

Equity dei segnali di un indicatore Probuilder


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
Summary

This topic contains 8 replies,
has 4 voices, and was last updated by robertogozzi
2 years, 6 months ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 08/22/2023
Status: Active
Attachments: 4 files
Logo Logo
Loading...