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
funziona 1! solo per il trade di venerdi alle 14.35 non c’e’ l’entrata che dovrebbe
Secondo me NON doveva fare quell’imgresso perché:
- ho evidenziato in arancio l’ultimo cross Rialzista ed il cross del CCI – BENE
- ho evidenziato in viola il precedente cross Ribassista – BENE
- 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)
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?
Perfetto funziona perfettamente.
Per inserire il pattern short che sarebbe esattamente contrario a quello long, CCI incrocia +200 serve un nuovo contatore?
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.
Grazie mille roberto. ho aperto un altro post riguardo ad una differenza inerente ad alcuni orari.
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.
Hai scritto “il cci ritorna sotto 200“, intendevi scrivere -200 ?
Si scusami, sia sotto in caso di long, sia sopra in caso di short
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.
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″]
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
Sei un grande! Ti ringrazio infinitamente!
sembra funzionare, o almeno gli ultimi 5 trade controllati sono perfetti.
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?