Secondo Break di una media.

Viewing 15 posts - 16 through 30 (of 58 total)
  • Author
    Posts
  • #81659 quote
    robertogozzi
    Moderator
    Master

    Ho fatto delle prove sommarie e sembra funzionare, provalo anche te:

    defparam cumulateorders = false
    once signal=0
    //once signal2=0
    
    Media   = Average[3](close)[3]
    BarreMedia   = 5
    BarreCC = 20
    ONCE CCIbarindex = 0
    
    MyCCI=cci[136](close)
    cc=MyCCI crosses over -200
    if cc then
    signal=1
    CCIbarindex=BarIndex
    endif
    IF signal THEN
    IF (Barindex - CCIbarindex) > BarreCC THEN
    signal = 0
    ENDIF
    ENDIF
    IF MyCCI >= 0 THEN
    signal = 0
    endif
    if onmarket then
    signal=0
    endif
    
    if signal>0 then
    Rialzo  = summation[BarreMedia - 1](close[1] CROSSES OVER Media[1])
    Ribasso = summation[BarreMedia - 1](close[1] CROSSES UNDER Media[1])
    Rialzo2 = (close crosses over media)
    Cond    = Rialzo AND Ribasso AND Rialzo2
    if Cond then
    SL= (close - lowest[30](low)) / pipsize
    buy 1 contract at market
    set stop ploss SL
    set target pprofit 50
    signal=0
    endif
    endif
    #81661 quote
    Gianluca
    Participant
    Master

    funziona 1! solo per il trade di venerdi alle 14.35 non c’e’ l’entrata che dovrebbe

    #81662 quote
    robertogozzi
    Moderator
    Master

    Secondo me NON doveva fare quell’imgresso perché:

    1. ho evidenziato in arancio l’ultimo cross Rialzista ed il cross del CCI – BENE
    2. ho evidenziato in viola il precedente cross Ribassista                           – BENE
    3. manca il precedente ancora Rialzista                                                       – NO              (perché quello evidenziato in celeste è una candela ribassista, a causa del gap d’apertura, quindi NON è considerato un incrocio al Rialzo)
    x.jpg x.jpg
    #81691 quote
    Gianluca
    Participant
    Master

    Allora il concetto della mia esposizione è stato errato, per la prima candela da rilevare non deve per forza essere un cross rialzista, deve chiudere sopra, poi da li ho sempre parlato di cross al ribasso e rialzo perchè penso sia impossibile dire al codice di distinguere le singole candele che chiudono allora i cross si prestavano meglio, quindi basterebbe modificare nel codice la riga 29 con sostituendo “crosses over” con “>” ? che ne pensi?

    #81694 quote
    Gianluca
    Participant
    Master

    Perfetto funziona perfettamente.

    Per inserire il pattern short che sarebbe esattamente contrario a quello long, CCI incrocia +200 serve un nuovo contatore?

    #81717 quote
    robertogozzi
    Moderator
    Master

    Non ti serve un altro contatore, tanto NON possono esserci due incroci contrari contemporaneamente.

    Dopo la riga 11 dovrai inserirne una per gli SHORT e poi aggiungere le righe per entrare short.

    #81766 quote
    Gianluca
    Participant
    Master

    Grazie mille roberto. ho aperto un altro post riguardo ad una differenza inerente ad alcuni orari.

    #82899 quote
    Gianluca
    Participant
    Master

    Buongiorno Roberto, non so se hai provato il sistema ma devo dire che funziona discretamente bene, l’ho backtestato sui futures e lavora bene, pero’ vorrei correggere un errore, se per il pattern long (cci esce da -200) avviene che prima del secondo break della media il cci ritorna sotto 200 vorrei azzerare il conteggio del pattern, non saprei proprio come fare.

    #82911 quote
    robertogozzi
    Moderator
    Master

    Hai scritto “il cci ritorna sotto 200“, intendevi scrivere -200 ?

    #83144 quote
    Gianluca
    Participant
    Master

    Si scusami, sia sotto in caso di long, sia sopra in caso di short

    #83228 quote
    robertogozzi
    Moderator
    Master

    Prova questa soluzione (fatta sul codice postato, senza gli short, ma puoi adattarlo facilmente):

    defparam cumulateorders = false
    once signal=0
    //once signal2=0
     
    Media   = Average[3](close)[3]
    BarreMedia   = 5
    BarreCC = 20
    ONCE CCIbarindex = 0
     
    MyCCI=cci[136](close)
    cc=MyCCI crosses over -200
    if cc then
       signal=1
       CCIbarindex=BarIndex
    endif
    IF signal THEN
       IF (Barindex - CCIbarindex) > BarreCC THEN
          signal = 0
       ENDIF
    ENDIF
    IF MyCCI >= 0 THEN
       signal = 0
    endif
    if onmarket then
       signal=0
    endif
     
    if signal>0 then
       Rialzo  = summation[BarreMedia - 1](close[1] CROSSES OVER Media[1])
       Ribasso = summation[BarreMedia - 1](close[1] CROSSES UNDER Media[1])
       Rialzo2 = (close crosses over media)
       Cond    = Rialzo AND Ribasso AND Rialzo2
       FOR j = 1 TO (BarreMedia - 1)
          IF NOT Rialzo2[j] THEN
             IF MyCCI[j] CROSSES UNDER -200 THEN
                Cond   = 0
                signal = 0
                BREAK
             ENDIF
          ELSE
             BREAK
          ENDIF
       NEXT
       if Cond then
          SL = (close - lowest[30](low)) / pipsize
          buy 1 contract at market
          set stop ploss SL
          set target pprofit 50
          signal=0
       endif
    endif

    ho aggiunto le linee da 33 a 43.

    #83411 quote
    Gianluca
    Participant
    Master

    Purtroppo no, guarda per esempio oggi alle 9.35 c’e’ un entrata che non doveva fare, e manca invece l’entrata che DOVEVA fare alle 11.30 che infatti ho fatto manualmente e ha portato a casa 100 punti.

    Anche inserendo la tua ultima modifica non cambia il risultato.

    defparam cumulateorders = false
    //defparam flatbefore = 070000
    //defparam flatafter  = 210000
    once signal=0
    //once signal2=0
    
    Media   = Average[3](close)[3]
    BarreMedia   = 5
    BarreCC = 20
    timeon= time> 080000 and time < 205500
    mycc=-200
    myccS=200
    
    ONCE CCIbarindex = 0
    
    
    myCCI=cci[136](close)
    cc=MyCCI crosses over mycc
    if cc then
    signal=1
    CCIbarindex=BarIndex
    endif
    IF signal THEN
    IF (Barindex - CCIbarindex) > BarreCC THEN
    signal = 0
    ENDIF
    ENDIF
    IF MyCCI >= 0 THEN
    signal = 0
    endif
    if onmarket then
    signal=0
    endif
    
    if signal>0 then
    Rialzo  = summation[BarreMedia - 1](close[1] > Media[1])
    Ribasso = summation[BarreMedia - 1](close[1] CROSSES UNDER Media[1])
    Rialzo2 = (close crosses over media)
    Cond    = Rialzo AND Ribasso AND Rialzo2
    if Cond and timeon then
    SL= (close - lowest[30](low)) / pipsize
    buy 1 contract at market
    set stop ploss SL
    set target pprofit SL
    signal=0
    endif
    endif
    
    
    //////////SHORT///
    
    once signalSHORT=0
    
    ccS=MyCCI crosses UNDER myccS
    if ccS then
    signalSHORT=1
    CCIbarindex=BarIndex
    endif
    IF signalSHORT THEN
    IF (Barindex - CCIbarindex) > BarreCC THEN
    signalSHORT = 0
    ENDIF
    ENDIF
    IF MyCCI <= 0 THEN
    signalSHORT = 0
    endif
    if onmarket then
    signalSHORT=0
    endif
    
    if signalSHORT>0 then
    RialzoS  = summation[BarreMedia - 1](close < Media)
    RibassoS = summation[BarreMedia - 1](close[1] CROSSES OVER Media[1])
    Rialzo2S = (close crosses UNDER media)
    CondS    = RialzoS AND RibassoS AND Rialzo2S
    if CondS and timeon then
    SLS= (HIGHEST[30](high)- close) / pipsize
    SELLSHORT 1 contract at market
    set stop ploss SLS
    set target pprofit SLS
    signalSHORT=0
    endif
    endif
    
    IF ONMARKET AND TIME >=222000 THEN
    SELL AT MARKET
    EXITSHORT AT MARKET
    ENDIF
    

    [attachment file=”83412″]

    Cattura-2.jpg Cattura-2.jpg
    #83431 quote
    robertogozzi
    Moderator
    Master

    Ne ho cambiato un bel pò, provalo, ho fatto una prova sommaria non significativa:

    defparam cumulateorders = false
    //defparam flatbefore = 070000
    //defparam flatafter  = 210000
    once signal=0
    //once signal2=0
     
    Media   = Average[3](close)[3]
    //BarreMedia   = 5
    BarreCC = 20
    timeon= time> 080000 and time < 205500
    mycc=-200
    myccS=200
     
    ONCE CCIbarindex     = 0
    ONCE CCICrossOver    = 0
    ONCE CCICrossUnder   = 0
    ONCE MediaCrossOver  = 0
    ONCE MediaCrossUnder = 0
     
    
    myCCI=cci[136](close)
    cc=MyCCI crosses over mycc
    if cc then
    CCICrossOver    = 1
    CCICrossUnder   = 0
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    signal=1
    CCIbarindex=BarIndex
    endif
    IF CCICrossOver THEN
    IF MediaCrossOver = 0 THEN
    MediaCrossOver = close CROSSES OVER Media
    ELSIF MediaCrossUnder = 0 THEN
    MediaCrossUnder = close CROSSES UNDER Media
    ENDIF
    ENDIF
    IF signal THEN
    IF MyCCI crosses under mycc THEN
    signal = 0
    CCICrossOver    = 0
    CCICrossUnder   = 0
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    ELSIF (Barindex - CCIbarindex) > BarreCC THEN
    signal = 0
    CCICrossOver    = 0
    CCICrossUnder   = 0
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    ENDIF
    ENDIF
    IF MyCCI >= 0 THEN
    signal = 0
    endif
    if onmarket then
    signal=0
    endif
     
    if signal>0 then
    Cond = (close crosses over media) AND MediaCrossOver AND MediaCrossUnder
    if Cond and timeon and Not OnMarket then
    SL= (close - lowest[30](low)) / pipsize
    buy 1 contract at market
    set stop ploss SL
    set target pprofit SL
    signal=0
    endif
    endif
     
     
    //////////SHORT///
     
    once signalSHORT=0
     
    ccS=MyCCI crosses UNDER myccS
    if ccS then
    CCICrossOver    = 0
    CCICrossUnder   = 1
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    signalSHORT=1
    CCIbarindex=BarIndex
    endif
    IF CCICrossUnder THEN
    IF MediaCrossUnder = 0 THEN
    MediaCrossUnder = close CROSSES UNDER Media
    ELSIF MediaCrossOver = 0 THEN
    MediaCrossOver = close CROSSES OVER Media
    ENDIF
    ENDIF
    IF signalSHORT THEN
    IF MyCCI crosses over myccS THEN
    signalSHORT = 0
    CCICrossOver    = 0
    CCICrossUnder   = 0
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    ELSIF (Barindex - CCIbarindex) > BarreCC THEN
    signalSHORT = 0
    CCICrossOver    = 1
    CCICrossUnder   = 0
    MediaCrossOver  = 0
    MediaCrossUnder = 0
    ENDIF
    ENDIF
    IF MyCCI <= 0 THEN
    signalSHORT = 0
    endif
    if onmarket then
    signalSHORT=0
    endif
     
    if signalSHORT>0 then
    CondS = (close crosses under media) AND MediaCrossOver AND MediaCrossUnder
    if CondS and timeon and Not OnMarket then
    SLS= (HIGHEST[30](high)- close) / pipsize
    SELLSHORT 1 contract at market
    set stop ploss SLS
    set target pprofit SLS
    signalSHORT=0
    endif
    endif
     
    IF ONMARKET AND TIME >=222000 THEN
    SELL AT MARKET
    EXITSHORT AT MARKET
    ENDIF
    //graph signal
    //graph signalSHORT
    //graph CCICrossOver
    //graph CCICrossUnder
    //graph MediaCrossOver
    //graph MediaCrossUnder
    //graph CCIBarindex
    //graph barindex - CCIbarindex
    Gianluca thanked this post
    #83445 quote
    Gianluca
    Participant
    Master

    Sei un grande! Ti ringrazio infinitamente!
    sembra funzionare, o almeno gli ultimi 5 trade controllati sono perfetti.

    #90540 quote
    Gianluca
    Participant
    Master

    Ciao Roberto… scusami tanto se ti disturbo nuovamente… vorrei chiederti una info, vorrei implementare il sistema con una nuova variabile che non so se sia fattibile sto provando con scarsi risultati.
    Una volta ottenuti i doppi rientri vorrei che partisse l’ordine solo dopo che la barra successiva rompe il massimo della precedente che ha rispettato tutte le condizioni, come si puo’ fare?

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

Secondo Break di una media.


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Gianluca @altares Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 09/28/2018
Status: Active
Attachments: 11 files
Logo Logo
Loading...