Buongiorno a tutti! Ho da poco iniziato ad approcciarmi al mondo PRT automatico, attualmente uso solamente strategie discrezionali.
Avrei la necessità di sviluppare un trading system (per ricerche statistiche) che abbia le seguenti caratteristiche:
- Pattern: presenza di tre candele ribassiste consecutive (C < O) e di una successiva candela rialzista (C > O)
- Entry: buy stop (1 pip sopra il massimo della candela rialzista)
- Stop loss: 2 pip sotto il minimo più basso delle ultime 4 sedute (delle 4 candele che formano il pattern)
- Target: chiudere quanto il prezzo esegue una variazione percentuale del 4% al rialzo, calcolata dal livello di entry
(Allego immagini per esempio)
Regole aggiuntive:
- Rimuovere l’ordine nel caso in cui viene violato il livello di Stop Loss senza che la posizione sia entrata a mercato
- Rimuovere l’ordine nel caso in cui il giorno successivo alla creazione del pattern l’ordine non viene eseguito
Attualmente stavo lavorando all’identificazione del setup tramite indicatore:
// PATTERN
c1 = Close[1] > Open[1] // 4° giornata: rialzista
c2 = Close[2] < Open[2] // 3° giornata: ribassista
c3 = Close[3] < Open[3] // 2° giornata: ribassista
c4 = Close[4] < Open[4] // 1° giornata: ribassista
if c1 and c2 and c3 and c4 then // se tutte le condizioni sono verificate
setup = c1 and c2 and c3 and c4
entry = high[1] + 1*pipsize
sl = lowest[4](low[1]) - 2*pipsize
endif
return entry as "entry" ,sl as "sl"
Ringrazio chiunque potrà aiutarmi, a presto!
Sul timeframe Giornaliero?
Ciao Roberto, si esatto sul grafico Daily
Eccola:
DEFPARAM CumulateOrders = False
ONCE setup = 0
ONCE Distanza = 7
//
// PATTERN
c1 = Close[0] > Open[0] // 4° giornata: rialzista
c2 = Close[1] < Open[1] // 3° giornata: ribassista
c3 = Close[2] < Open[2] // 2° giornata: ribassista
c4 = Close[3] < Open[3] // 1° giornata: ribassista
//
//
IF OnMarket THEN
setup = 0
ENDIF
//
if c1 and c2 and c3 and c4 and Not OnMarket then // se tutte le condizioni sono verificate
gg = OpenDay
setup = 1
entry = high + 1*pipsize
sl = entry - (lowest[4](low) - 2*pipsize)
tp = entry * 0.04
SET TARGET PROFIT tp
SET STOP LOSS sl
endif
IF Not OnMarket AND ((low <= (entry - sl)) OR (OpenDay <> gg)) THEN
setup = 0
ENDIF
IF setup AND Not OnMarket THEN
IF close < (entry - Distanza) THEN
BUY 1 CONTRACT AT Entry STOP
ELSIF close > (entry + Distanza) THEN
BUY 1 CONTRACT AT Entry LIMIT
ELSE
//BUY 1 CONTRACT AT MARKET
ENDIF
ENDIF
graphonprice entry
graphonprice entry - sl coloured(255,0,0,255)
graphonprice entry + tp coloured(0,0,255,255)
graph setup
Ho cambiato l’indice tra parentesi quadre nel setup, in quanto la candela [0] è quella appena chiusa perché quella in corso di formazione non è accessibile fino alla sua chiusura.
Ho aggiunto la DISTANZA minima richiesta dal broker (per disabilitarla mettila a 0, ma è sconsigliabile) per piazzare ordini pendenti. Se non si rispetta la distanza l’ordine viene respinto e la strategia interrotta, sia sul demo che in reale (non sul backtest, ovviamente, in quanto non è legato al broker).
Nella verifica della distanza ho anche aggiunto un’entrata a MERCATO (commentata, quindi ignorata) nel caso tu voglia entrare quando non c’è la distanza richiesta, basta che togli le due barre iniziali dei commenti su quella riga.
Caspita grazie mille! Appena ho tempo mi metto a provarla.