Apertura trade dopo numero barre con condizione

Viewing 9 posts - 16 through 24 (of 24 total)
  • Author
    Posts
  • #109145 quote
    carlo__
    Participant
    Average

    Allora ad occhio credo ci sia ancora qualcosa che non torna, immagine allegata

    Si vede bene che il pattern a sinistra è identificato correttamente, il conteggio ed il limite di barre funzionano, c’è quindi l’entry come da regole ma l’uscita è prematura. E secondo me ho anche capito perchè. Esce alla identificazione di un pattern uguale successivo (immagine con numerino 2 sulla candela) invece di rispettare la rule di exit che dovrebbe invece portare il trade fino al tocco del livello della open della candela 1.

     

    Possibile che questo apparente accavallarsi di pattern non ben filtrati poi impedisca al sistema di andare short?

    Cattura.png Cattura.png
    #109147 quote
    carlo__
    Participant
    Average

    Sembrerebbe inoltre che il “Conto” nelle opportunità short non “funzionerebbe” a dovere

    Altra immagine; “MyProfitShort” segnala l’identificazione del pattern (candela 1) ma poi il Conto fallisce (piu di 7 barre non conteggiate e nessuna apertura trade con target che punta alla open della candela verde num 1 – “MyProfitShort”)

    Cattura-1.png Cattura-1.png
    #109162 quote
    robertogozzi
    Moderator
    Master

    No, il pattern 2 non è uguale al pattern 1, ma contrario.

    Quando è uguale è chiaro che cambia il prezzo ed il conteggio riparte.

    Quando ci sono due pattern diversi che deve fare, tenere due conteggi di barre separati, oppure al secondo pattern trovato deve azzerare il primo?

    #109181 quote
    carlo__
    Participant
    Average

    Tenere 2 conteggi di barre separati sarebbe meglio, cosi per entrambi se le condizioni sono rispettate possono essere aperti i 2 trade (in momenti successivi) a patto però che ci sia comunque un cumulateorder = false.

    Tuttavia è necessario che i takeprofit vengano rispettati, sia che ci sia sovrapposizione di pattern identici sia opposti. Una volta entrato in posizione i livelli MyProfit sono gli unici che possono chiudere il trade.

    #109261 quote
    robertogozzi
    Moderator
    Master

    Prova queste modifiche:

    DEFPARAM Cumulateorders=False
    
    ONCE ContoL   = 0
    ONCE ContoS   = 0
    ONCE MaxBarre = 7
     
    Bullish       = close > open
    Bearish       = open > close
    Body          = (abs(open - close) > 0.5 * pipsize)
    UpperSHGreen  = High > Close
    LowerSHRed    =  Low < Close
     
    //------ Trading Periods Parameters
    
    If Not OnMarket AND OnMarket[1] Then
    ContoL        = 0
    ContoS        = 0
    MyProfitLong  = 0
    MyProfitShort = 0
    Endif
     
    If (Time >=153000 AND Time <=154000) OR (Time < 091500 OR Time > 210000)OR (Month = 12 AND Day > 15) OR (Month = 8 AND Day >10) THEN
    NoPattern     = 1
    ContoL        = 0
    ContoS        = 0
    MyProfitLong  = 0
    MyProfitShort = 0
    ELSE
    NoPattern = 0
    ENDIF
    
    //----- Counter Bars per apertura posizione
    
    // verificare che, se il Conto è già iniziato, non abbia superato la soglia o che il prezzo non abbia toccato MyTarget
     
    IF ContoL > 0 Then
    ContoL = ContoL + 1
    IF Not OnMarket Then
    If ContoL > MaxBarre Or high >= MyProfitLong Then
    ContoL       = 0
    MyProfitLong = 0
    Endif
    Endif
    Endif
    
    IF ContoS > 0 Then
    ContoS = ContoS + 1
    IF Not OnMarket Then
    If ContoS > MaxBarre Or high >= MyProfitShort Then
    ContoS        = 0
    MyProfitShort = 0
    Endif
    Endif
    Endif
    // ----- ombra assente sull'Apertura - identificazione PATTERN
     
    IF Bullish[1] and Bearish and (Open=High) and (Body[1]) AND LowerSHRed AND (NoPattern=0) THEN
    //RedNSH=1
    MyProfitLong=Open
    ContoL    = 1
    //ELSE
    //RedNSH=0
    ENDIF
    
    IF Bearish[1] and Bullish and (Open=Low) and (Body[1]) AND UpperSHGreen AND (NoPattern=0)THEN
    //GreenNSH=1
    MyProfitShort=Open
    ContoS    = 1
    //ELSE
    //GreenNSH=0
    ENDIF
     
    // una volta a mercato azzerare il conteggio e azzerare MyProfitLong/MyProfitShort
    If OnMarket Then
    ContoL    = 0
    ContoS    = 0
    //MyProfitLong = 0
    //MyProfitShort = 0
    Endif
     
    // quando si verificano le condizioni settare MyProfitLOng/MyProfitShort ed iniziare il conteggio
     
    //If (GreenNSH=1) then
    //MyProfitShort = Open[0]
    //ContoL    = 1
    //ELSIF (RedNSH=1) then
    //MyProfitLong = Open[0]
    //ContoL    = 1
    //Endif
     
    // entrare a mercato se già non lo si è, se il conteggio è pari alla soglia e se MyProfitLong/MYProfitShort non sono stati toccati
    
    IF Not OnMarket THEN
    If MyProfitLong  > 0 AND ContoL = MaxBarre Then
    Buy 1 Contracts at market
    ENDIF
    IF MyProfitShort > 0 AND ContoS = MaxBarre Then
    SellShort 1 Contracts at market
    ENDIF
     ENDIF
     
    //----- Trade Closing Conditions
    IF LONGONMARKET THEN
    SELL AT MyProfitLong Limit
    ELSIF SHORTONMARKET THEN
    EXITSHORT AT MyProfitShort Limit
    ENDIF
     
    IF ONMARKET AND (BarIndex - TradeIndex >= 40) then
    EXITSHORT AT MARKET
    SELL AT MARKET
    ENDIF
    graph NoPattern
    graphonprice MyProfitLong  coloured(0,0,255,255)
    graphonprice MyProfitShort coloured(0,255,0,255)
    graph ContoL
    graph ContoS
    graph MaxBarre
    graph OnMarket

    se ricontri problemi fammi sapere in quale candela (orario e giorno) l’hai riscontrato.

    #109270 quote
    carlo__
    Participant
    Average

    Slve Roberto

    Anzitutto un sentito ringraziamento per l’aiuto.

    Allora la buona notizia è che ho risolto il problema della mancanza dei trade short. C’era un “high” al posto di un “low” in riga 49 e adesso il sistema apre anche short.

    Tuttavia, se ho ben capito la logica di impostazione dello script, il codice (se le condizioni di orario e giorni/mesi sono rispettate) deve iniziare il Conto S o L ogni qualvolta ci sia l’identificazione di un pattern. Eventualmente poi, se il MyProfitShort o Long non vengono toccati entro le successive MaxBars, si apre il trade.

    Adesso, mi corregga se sbaglio, ma io vedo che il codice continua a identificare correttamente tutti i pattern ma che a volte (non sempre) fa partire il “Conto” ma poi lo arresta immediatamente alla barra successiva (anche se le condizioni rimangono valide). Un esempio è quello in allegato. In particolare sull’esatta identificazione del secondo pattern in blu, è chiaro come in quel caso il MyProfitLong (che è pari alla Open della candela come da riga 59 del codice) non venga violato successivamente e le altre condizioni di orario/giorni sono già rispettate.

    Ho malinterpretato io oppure c’è ancora qualcosa da sistemare?

     

    Comunque sia ho ripensato al discorso del conteggio separato e credo sia inutile perchè poi lo script non può andare a controllare oltre le 7 barre se un pattern è invalidato. Quindi io le chiederei in ultimo di fare cosi:

    Analisi pattern–>se identificato iniziare il conteggio per ContoL/S  e maxbars ed eventualmente entrare in posizione se MyProfitLong/Short non viene violato entro 7 barre. Ciò che accade in termini di ulteriori pattern durante il conteggio delle 7 barre non ci interessa. Ricominciare invece a conteggiare dopo l’uscita dal trade.

     

    Con questo non la disturberò piu, credo di aver imparato abbastanza 🙂

    Cattura.jpg Cattura.jpg
    #109279 quote
    robertogozzi
    Moderator
    Master

    Ecco una cosa da precisare, una volta che il conteggio è iniziato, se viene trovato un pattern uguale si riparte dal nuovo pattern o si ignora e si aspetta che termini il conteggio?

    Come l’ho scritto adesso riparte dal nuovo pattern.

    #109289 quote
    carlo__
    Participant
    Average

    Perfetto allora aspettare il termine del conteggio mi pare piu razionale e in linea con quello che poi devo modificare successivamente (tutto ciò è parte integrante di un sistema un pò piu lungo che sto costruendo)

    Pertanto si parte col conteggio in base al parametro maxbars e se ci sono le condizioni (livelli “myprofit” non violati entro il numero specificato in “maxbars”) si apre il trade. Una volta invece che vengono violati i livelli “myprofit” oppure dopo che si chiude il trade, il sistema ricomincia il conteggio.

     

    Chiedo scusa per l’incomprensione

    #109328 quote
    robertogozzi
    Moderator
    Master

    Bene, questo è il codice con la modifica per cui si ignorano i nuovi pattern fino a che il precedente è valido (le istruzioni GRAPH/GRAPHONPRICE alla fine puoi toglierle o commentarle se non ti servono più):

    DEFPARAM Cumulateorders=False
    
    ONCE ContoL   = 0
    ONCE ContoS   = 0
    ONCE MaxBarre = 7
     
    Bullish       = close > open
    Bearish       = open > close
    Body          = (abs(open - close) > 0.5 * pipsize)
    UpperSHGreen  = High > Close
    LowerSHRed    =  Low < Close
     
    //------ Trading Periods Parameters
    
    If Not OnMarket AND OnMarket[1] Then
    ContoL        = 0
    ContoS        = 0
    MyProfitLong  = 0
    MyProfitShort = 0
    Endif
     
    If (Time >=153000 AND Time <=154000) OR (Time < 091500 OR Time > 210000)OR (Month = 12 AND Day > 15) OR (Month = 8 AND Day >10) THEN
    NoPattern     = 1
    ContoL        = 0
    ContoS        = 0
    MyProfitLong  = 0
    MyProfitShort = 0
    ELSE
    NoPattern = 0
    ENDIF
    
    //----- Counter Bars per apertura posizione
    
    // verificare che, se il Conto è già iniziato, non abbia superato la soglia o che il prezzo non abbia toccato MyTarget
     
    IF ContoL > 0 Then
    ContoL = ContoL + 1
    IF Not OnMarket Then
    If ContoL > MaxBarre Or high >= MyProfitLong Then
    ContoL       = 0
    MyProfitLong = 0
    Endif
    Endif
    Endif
    
    IF ContoS > 0 Then
    ContoS = ContoS + 1
    IF Not OnMarket Then
    If ContoS > MaxBarre Or high >= MyProfitShort Then
    ContoS        = 0
    MyProfitShort = 0
    Endif
    Endif
    Endif
    // ----- ombra assente sull'Apertura - identificazione PATTERN
     
    IF Bullish[1] and Bearish and (Open=High) and (Body[1]) AND LowerSHRed AND (NoPattern=0) AND MyProfitLong = 0 THEN
    //RedNSH=1
    MyProfitLong=Open
    ContoL    = 1
    //ELSE
    //RedNSH=0
    ENDIF
    
    IF Bearish[1] and Bullish and (Open=Low) and (Body[1]) AND UpperSHGreen AND (NoPattern=0)AND MyProfitShort = 0 THEN
    //GreenNSH=1
    MyProfitShort=Open
    ContoS    = 1
    //ELSE
    //GreenNSH=0
    ENDIF
     
    // una volta a mercato azzerare il conteggio e azzerare MyProfitLong/MyProfitShort
    If OnMarket Then
    ContoL    = 0
    ContoS    = 0
    //MyProfitLong = 0
    //MyProfitShort = 0
    Endif
     
    // quando si verificano le condizioni settare MyProfitLOng/MyProfitShort ed iniziare il conteggio
     
    //If (GreenNSH=1) then
    //MyProfitShort = Open[0]
    //ContoL    = 1
    //ELSIF (RedNSH=1) then
    //MyProfitLong = Open[0]
    //ContoL    = 1
    //Endif
     
    // entrare a mercato se già non lo si è, se il conteggio è pari alla soglia e se MyProfitLong/MYProfitShort non sono stati toccati
    
    IF Not OnMarket THEN
    If MyProfitLong  > 0 AND ContoL = MaxBarre Then
    Buy 1 Contracts at market
    ENDIF
    IF MyProfitShort > 0 AND ContoS = MaxBarre Then
    SellShort 1 Contracts at market
    ENDIF
    ENDIF
     
    //----- Trade Closing Conditions
    IF LONGONMARKET THEN
    SELL AT MyProfitLong Limit
    ELSIF SHORTONMARKET THEN
    EXITSHORT AT MyProfitShort Limit
    ENDIF
     
    IF ONMARKET AND (BarIndex - TradeIndex >= 40) then
    EXITSHORT AT MARKET
    SELL AT MARKET
    ENDIF
    graph NoPattern
    graphonprice MyProfitLong  coloured(0,0,255,255)
    graphonprice MyProfitShort coloured(0,255,0,255)
    graph ContoL
    graph ContoS
    graph MaxBarre
    graph OnMarket

    Ho scritto un indicatore per vedere chiaramente sul grafico quando i pattern si verificano in modo da controllare se la strategia apre correttamente le operazioni (vedi schermata con evidenziato in basso l’indicatore dove ho mi sono impostato le proprietà come istogramma do due colori), ti allego il file per l’importazione.

    carlo__ thanked this post
    x-2.jpg x-2.jpg Il-Mio-Indicatore50-CARLO.itf
Viewing 9 posts - 16 through 24 (of 24 total)
  • You must be logged in to reply to this topic.

Apertura trade dopo numero barre con condizione


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
carlo__ @carlo__ Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 09/30/2019
Status: Active
Attachments: 7 files
Logo Logo
Loading...