Verifica codice: non tradare per x barre dopo un trade

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #179282 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, ti volevo chiedere se questi tre codici per dire al TS di non tradare dopo x  barre sono equivalenti.

    Te lo chiedo perchè a volte i risultati sono differenti. Quindi o non sono completamente equivalenti o c’è qualche problema nel proBackTest come penso.

    CODICE A

    ONCE BarCount = 0
    ONCE TradeON  = 1
    IF OnMarket AND Not OnMarket[1] THEN
    TradeON  = 0
    BarCount = 0
    ENDIF
    IF Not OnMarket THEN
    BarCount = BarCount + 1
    ENDIF
    IF BarCount >10 THEN
    TradeON = 1
    ENDIF

    CODICE B

    if not OnMarket and OnMarket[1]  then
    myBar = barIndex[1]
    endif
    if barIndex-mybar>10 then
    tradeON = 1
    else
    tradeON = 0
    endif

    CODICE C

    nBarStop=10
    if onMarket[1]=1 and onMarket=0 then
    start=barIndex[1]
    endif
    tradeON=barIndex-start>nBarStop
    #179284 quote
    robertogozzi
    Moderator
    Master

    A è corretto.

    B alla riga 2 togli [1] a Barindex.

    C alla riga 3 togli [1] a Barindex.

    Dovrebbero funzionare, non ho verificato.

    Se usi GRAPH lo verifichi velocemente:

    Graph Barcount         //A
    Graph BarIndex-MyBar   //B
    Graph barIndex-start   //C
    #179287 quote
    MauroPro
    Participant
    Veteran

    I codici B e C quando sono uguali  e quando sono uguali al codice A sono scritti entrambi con [1] come li avevo scritti.

    Ho testato questa semplice parte di un codice più complesso . (DAX 15 minuti).

    Con 10 K di storico sul Dax a 15 minuti i tre codici sono uguali (immagine 10K) però già a 50k sono diversi (immagine 50K). Puoi provare?

    CODICE A

    defparam cumulateorders = false
    avgHull = average[130,7]
    //————————————————-
    ONCE BarCount = 0
    ONCE TradeON = 1
    IF OnMarket AND Not OnMarket[1] THEN
    TradeON = 0
    BarCount = 0
    ENDIF
    IF Not OnMarket THEN
    BarCount = BarCount + 1
    ENDIF
    IF BarCount >10 THEN
    TradeON = 1
    ENDIF
    //————————————————————–
    if close > avgHull and tradeON=1 then
    buy 1 contract at market
    endif
    //——————————————————————————————–
    set stop %loss 0.8
    set target %profit 1.5
    //————————————————————————————-

    CODICE B

    defparam cumulateorders = false
    avgHull = average[130,7]
    //————————————————-
    if not OnMarket and OnMarket[1] then
    myBar = barIndex[1]
    endif
    if barIndex-mybar>10 then
    tradeON = 1
    else
    tradeON = 0
    endif
    //————————————————————–
    if close > avgHull and tradeON=1 then
    buy 1 contract at market
    endif
    //——————————————————————————————–
    set stop %loss 0.8
    set target %profit 1.5

    //————————————————————————————-

    CODICE C

    defparam cumulateorders = false
    avgHull = average[130,7]
    //————————————————-
    nBarStop=10
    if onMarket[1]=1 and onMarket=0 then
    start=barIndex[1]
    endif
    tradeON=barIndex-start>nBarStop
    //————————————————————–
    if close > avgHull and tradeON then
    buy 1 contract at market
    endif
    //——————————————————————————————–
    set stop %loss 0.8
    set target %profit 1.5

    //————————————————————————————-

    10k.jpg 10k.jpg 50k.jpg 50k.jpg
    #179290 quote
    MauroPro
    Participant
    Veteran

    Ecco il test a 100k dei tre sistemi, secondo me NON funziona bene il proBackTest (perde per strada qualche operazione ogni tanto il che sarebbe abbastanza grave)

    Image-003.jpg Image-003.jpg
    #179292 quote
    MauroPro
    Participant
    Veteran

    Se hai tempo prova a testare i tre TS sopra riportati con vari periodi storici, e se confermi la cosa apro una segnalazione al reparto tecnico

    #179295 quote
    robertogozzi
    Moderator
    Master

    A alla riga 3 lascia solo OnMarket.

    B e C devi lasciare [1], hai ragione.

    Con GRAPH i valori sono identici oppure no?

    #179296 quote
    MauroPro
    Participant
    Veteran

    Sono uguali fino a che non trovi l’operazione mancante. Questa si trova prima dall’equity line che dal graph.

    #179299 quote
    MauroPro
    Participant
    Veteran

    A parte problemi (da verificare con certezza) del probacktest, i codici B e C sono uguali,

    Non sono ancora convinto che sia uguale a questi il codice A.

    Riesci ad accertare se i tre codici sono uguali con sicurezza ?(quando li provo in TS complessi le differenze sono rilevanti)

    #179315 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, devo ancora verificare bene se:  il codice A è uguale o simile ai codici B e C (che sono uguali)

    Per quanto riguarda invece  il funzionamento del proBackTest la cosa è chiara: non funziona bene (lo avevo notato anche altre volte con TS e strumenti differenti, ma senza porgervi troppa attenzione).

    Guarda queste due slide dello stesso TS in cui è applicato una volta  il codice B ed un altra volta il codice C  (vedi sopra).

    Alle 20: 25 i risultati sono differenti, in quello con il codice C mancano due operazioni che il proBackTest ha saltato.

    Alle 20:27 ho semplicemente riapplicato gli stessi TS e questa volta i risultati sono uguali! (come devono essere dato che i due codici sono equivalenti).

    Cosa ne pensi? Ti è mai capitato?

    Image-001.jpg Image-001.jpg Image-002.jpg Image-002.jpg
    #179619 quote
    robertogozzi
    Moderator
    Master

    Anche a me danno, a volte, risultati diversi. Tutti e tre i codici.

    Faccio il backtest ed ho un risultato, lo rifaccio e cambia, oppure lo cambia a quello successivo ancora e se lo faccio di nuovo torna com’era prima.

    Non capisco il perché, evidentemente c’è un motivo (o un difetto) tecnico che non conosco.

    Ti consiglio di chiedere l’assistenza di ProRealTime.

    x-8.jpg x-8.jpg
    #179633 quote
    MauroPro
    Participant
    Veteran

    Per quanto riguarda il probacktest è evidente che ha dei problemi. La cosa “sembra” migliorare togliendo la modalità “probacktest in modalità tick per tick”.

    Per quanto riguarda invece l’uguaglianza dei tre codici, dalle mie prove risultano essere tutti e tre uguali SE utilizzati in codici semplici. In codici complessi (dove ci sono altri snippets) l’unico che funziona bene (ossia che rispetta sempre gli intervalli) è il codice A, quindi conviene utilizzare sempre questo.

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

Verifica codice: non tradare per x barre dopo un trade


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 10 replies,
has 2 voices, and was last updated by MauroPro
4 years, 4 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 10/10/2021
Status: Active
Attachments: 6 files
Logo Logo
Loading...