Scalping test

Viewing 15 posts - 1 through 15 (of 18 total)
  • Author
    Posts
  • #130461 quote
    Giovanni Belli
    Participant
    Average

    Buongiorno Roberto, avevo bisogno di un tuo super aiuto.. ti allego la prima parte si una strategia che avevo in mente solo che non capisco perchè il backtest non mi restituisce alcun risultato. Sapresti dirmi dove sbaglio?

    il mio intento è quello di dare un segnale derivato da un timeframe 1h per determinare il trend e dopo lavorare su timeframe di default che sarà 5min.

    All’incrocio delle medie vorrei impostare il SL e nelle successive candele, alla prima rossa disponibile, assegnare TP e prezzo di entrata.

    Dove sbaglio secondo te?

    Grazie mille anticipatamente

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 100000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 203000
    
    
    
    
    
    // Impedisce al sistema di tradare in giorni specifici della settimana
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    
    timeframe (1h,updateonclose)
    N=50
    indicator1 = ExponentialAverage[N](close)
    indicator2 = ExponentialAverage[N](close)
    c1 = (indicator1[1] < indicator2[2]) and (indicator1[2] - indicator2[1]) > 0.00015
    indicator3 = ExponentialAverage[N](close)
    indicator4 = ExponentialAverage[N](close)
    c2 = (indicator3[2] < indicator4[3]) and  (indicator3[3] - indicator4[2]) > 0.00015
    indicator5 = ExponentialAverage[N](close)
    indicator6 = ExponentialAverage[N](close)
    c3 = (indicator5[3] < indicator6[4]) and  (indicator5[4] - indicator6[3]) > 0.00015
    
    
    timeframe (default)
    
    
    signal=0
    sl=0
    price=0
    Tp=0
    
    pip=pipsize
    
    
    
    signal2=0
    if c1 and c2 and c3 then
    signal2=1
    endif
    
    
    
    
    
    indicator7 = ExponentialAverage[3](close)
    indicator8 = ExponentialAverage[8](close)
    
    c4=indicator7[1] crosses under indicator8[1]
    c5=indicator7 crosses over indicator8
    
    
    
    if signal2=1 and c4 then
    signal=1
    endif
    
    if signal=1 and open>close then
    sl=high + (2 * pip)
    endif
    
    if sl > 0 then
    price= low - (AverageTrueRange[14](close)/2)
    TP = price - ((sl - price) * 3)
    endif
    
    if low crosses under price and not daysForbiddenEntry then
    buy 1 contract at market
    else
    if c5 then
    signal=0
    signal2=0
    sl=0
    price=0
    TP=0
    endif
    endif
    
    SET STOP $LOSS sl
    SET TARGET $PROFIT Tp
    #130475 quote
    robertogozzi
    Moderator
    Master

    Perché alla riga 20 confronti lo stesso indicatore per vedere se < a se stesso!

    #130527 quote
    Giovanni Belli
    Participant
    Average

    a dire il vero volevo che la l’indicatore su candela [1] fosse < dell’indicatore stesso ma della candela [2]

    sbaglio qualcosa?

    #130543 quote
    Giovanni Belli
    Participant
    Average

    Ho semplificato il codice per capirne l’errore ma niente, attiva ordini in modo non voluto. ti allego il codice dove faccio cerco una EMA a 1H che sia inferiore della candela precedente e in Timaframe 5m cerco un incrocio di medie veloci. é come se non tenesse conto della prima condizione

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 110000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 193000
    
    
    
    
    
    
    timeframe(1h)
    i1 = ExponentialAverage[200](close)
    timeframe(default)
    
    c1=i1 < i1[1]
    
    i2=ExponentialAverage[3](close)
    i3=ExponentialAverage[8](close)
    
    c2=i2 crosses under i3
    
    if c1 and c2 then
    sellshort 1 contract at market
    endif

    sicuramente sbaglio io qualcosa e per questo mi scuso anticipatamente.

    Grazie del supporto come sempre

    #130553 quote
    robertogozzi
    Moderator
    Master

    La riga 17 fa riferimento non alla barra precedente oraria, ma alla barra precedente del 5 minuti.

    Spostala tra la riga 24 e 15. Però alla riga 13 aggiungi UpdateOnClose altrimenti non cambia niente.

    #130628 quote
    Giovanni Belli
    Participant
    Average

    Roberto sto impazzendo. non capisco dove sbaglio. Non rispetta SL ne TP. non capisco perchè non li aggiorna.

    Ti allego il codice se puoi provare a backtestarlo su timeframe 5m vedi quello che vedo io. Non capisco tutte quelle posizioni chiuse per 1 pip e nemmeno tutte quelle posizioni aperte random.. sicuramente c’è qualcosa che sbaglio ma non ci dormo da 2 giorni con questo pensiero.

    Help me please! 🙏🏻

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
    //DEFPARAM FLATBEFORE = 110000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
    //DEFPARAM FLATAFTER = 193000
    N=230//periodi Ema 1h
    N1=5//periodi Ema veloce default
    N2=13//periodi Ema lenta default
    //n3=100 //periodi Ema extralenta default
    
    // Impedisce al sistema di tradare in giorni specifici della settimana
    //daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    timeframe(1h,updateonclose)
    
    indicator=exponentialaverage[n](close)
    c1 = (indicator[1] – indicator) > 0.0001
    
    timeframe(default,updateonclose)
    
    //atr=AverageTrueRange[14](close) > 0.0005
    indicator1 = ExponentialAverage[N1](close)
    indicator2 = ExponentialAverage[N2](close)
    //indicator3 = ExponentialAverage[N3](close)
    
    c2=indicator1 crosses under indicator2
    c3=indicator1 crosses over indicator2
    
    if (c1 and c2 ) and open > close then
    sl=high
    price=close
    endif
    
    if indicator1 crosses under price and open > close then
    sellshort 1 contract at market
    tp= ((sl-indicator1) * 10000)*3
    set stop ploss sl
    set target pprofit tp
    
    endif
    
    if c3 then
    sl=0
    tp=0
    endif
    #130634 quote
    Giovanni Belli
    Participant
    Average

    dimenticavo.. i miei parametri sono EURUSD a 15.000 unità

    #130654 quote
    robertogozzi
    Moderator
    Master

    pLOSS e pPROFIT vogliono una DIFFERENZA espressa in PIPS (10, 20, 100, o un’espressione ma sempre che restituisca pips).

    Ad esempio, nel tuo caso la riga 31 deve essere scritta:

    sl=(high - close) / pipsize

    cioè devi fare la differenza tra il prezzo d’entrata a mercato e poi devi cinvertirlo in pips (oppure non lo converti in pips, ma allora devi usare LOSS, non pLOSS).

    #131265 quote
    Giovanni Belli
    Participant
    Average

    Grazie Roberto, ero convinto di averti risposto.

    Scusa il ritardo.

    buona giornata

    #131511 quote
    Giovanni Belli
    Participant
    Average
    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    defparam PRELOADBARS = 1000
    // Condizioni per entrare su posizioni long
    indicator1 = ExponentialAverage[500](close)
    indicator2 = ExponentialAverage[21](close)
    c1 = (close CROSSES OVER indicator1)
    c2 = (indicator1 >= indicator1[3])
    c3 = (indicator2 >= indicator2[3])
    
    
    Sl=0
    TP=0
    
    if c1 and c2 and c3 then
    Sl= ((lowest[24](low))-close)/pointsize
    TP= SL * 1.75
    Buy 1 contract at market
    endif
    
    set stop ploss sl
    set target pprofit tp

    Buona sera Roberto, ho fatto un passo indietro per testare in semplicità. Non mi calcola lo stop loss come vorrei. Io vorrei calcolare il più basso livello di LOW delle precedenti 24 bar mentre il TP non è altro che la moltiplicazione dello SL per 1.75

    cortesemente mi indicheresti dove sbaglio?

    Grazie

    #131514 quote
    robertogozzi
    Moderator
    Master

    Alle righe 12 e 13 lo azzera ad ogni barra, per cui SL e TP vengono disattivati.

    A entrambi mettici la parola ONCE + spazio, davanti.

    #131518 quote
    Giovanni Belli
    Participant
    Average

    Ho fatto ma non esegue lo stop loss… parte con un ordine e non stacca più

    #131541 quote
    robertogozzi
    Moderator
    Master

    Perché il calcolo dello SL è negativo, essendo il LOW inferiore a CLOSE, modifica la riga 16 (in aggiunta alle modifiche già fatte sopra) così:

    Sl= abs((lowest[24](low))-close)/pointsize

    in pratica metti solo ABS all’inizio, che restituisce il valore assoluto, quindi trasforma i negativi in positivi.

    #131552 quote
    Giovanni Belli
    Participant
    Average

    Che stupido che sono. Hai ragione funziona.

    Grazie

    #131557 quote
    bertrandpinoy
    Participant
    Veteran

    Buonasera puoi pubblicare il codice corretto che sto testando dalla mia parte?

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

Scalping test


ProOrder: Trading Automatico & Backtesting

New Reply
Author
Summary

This topic contains 17 replies,
has 3 voices, and was last updated by robertogozzi
5 years, 9 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 05/07/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...