Salve, vorrei chiedere aiuto per provare a fare un backtest della candela pin bar ribassista con i seguenti condizioni
Vorrei inserire un ordine pendente all’inizio della candela successiva dopo il formarsi della candela pin bar ribassista
- viene inserito un ordine pendente in corrispondenza del livello di prezzo della Pin bar ribassista, con un pendente sell stop
- in sostanza, si attende che il prezzo superi il minimo della candela pin bar ribassista + 1 pip
- lo stop-loss viene posto in corrispondenza del massimo della candela pin bar ribassista + 1 pip
- il take-profit viene posto alla distanza tra stop-loss e sell stop della stessa
- quando viene raggiunto il 50% della distanza dal take-profit e lo stop-loss lo stop loss viene spostato in parità, ovvero sul prezzo di attivazione della posizione
- il pendente viene lasciato per 1 candela, dopodiché se non si è ancora attivato alla fine della candela successiva viene cancel
Qui sotto è riportatata una bozza del codice ma mancano delle condizioni e non sono riuscito a completarlo.
pip=1 //Inserire il valore del pip
Pin bar ribassista
c1=High=Highest[5](High)
c2=Close < Close[1]
RHB=c1 and c2
if PBR then
ingressoshort = low – (1*pip)
stopshort = high + (1*pip)
targetshort = ingressoshort – (stopshort-ingressoshort)
endif
sellshort at ingressoshort stop
endif
endif
exitshort at stopshort stop
exitshort at targetshort limit
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”.
Inoltre ho spostato questo topic nel supporto ProOrder, in quanto si tratta di una strategia.
Roberto
Ciao Roberto, dove lo trovo il pulsante <> “insert PRT code”.
Grazie.
E’ proprio qui sopra, contrassegnasto dai due simboli <> (vedi screenshot allegato).
pip=1 //Inserire il valore del pip
Pin bar ribassista
c1=High=Highest[5](High)
c2=Close < Close[1]
RHB=c1 and c2
if PBR then
ingressoshort = low – (1*pip)
stopshort = high + (1*pip)
targetshort = ingressoshort – (stopshort-ingressoshort)
endif
sellshort at ingressoshort stop
endif
endif
exitshort at stopshort stop
exitshort at targetshort limit
Non comprendo bene cosa fa il tuo codice, per favore dammi come vuoi che sia definita una pin bar ribassista (quanto deve essere grande il corpo e quanto le due ombre), in tal modo posso provare a scrivere qualcosa.
Inoltre ti faccio presente che:
- il tuo punto 6 non è detto che venga raggiunto in modo preciso (oppure mai), perché le strategie vengono eseguite solo alla CHIUSURA di una candela (almeno fino alla prossima versione, speriamo) , per cui in que momento il prezzo potrebbe essere al 49,9% e lo SL resta invariato, anche se nel corso della formazione della candela il 50% è stato superato
- gli ordini pendenti durano SEMPRE solo una candela, ed ogni volta vanno reimmessi se le condizioni persistono.
La Pin bar ribassista deve essere:
- con un piccolo real body e deve essere situato vicino ai minimi della candela
- ha una lunga upper shadow che deve avere una lunghezza almeno doppia rispetto a quella del real body che segnala il raggiungimento di un massimo importante da parte dei prezzi
- ha una lower shadow molto piccola.
Per quanto riguarda il punto 6 lo modifico mettendo lo stop un pip sopra il massimo della candela successiva, ogni volta che se ne forma una nuova, fino al raggiungimento del target o la chiusura per stop.
La Pin bar ribassista deve essere:
- con un piccolo real body e deve essere situato vicino ai minimi della candela
- ha una lunga upper shadow che deve avere una lunghezza almeno doppia rispetto a quella del real body che segnala il raggiungimento di un massimo importante da parte dei prezzi
- ha una lower shadow molto piccola.
Per quanto riguarda il punto 6 lo modifico mettendo lo stop un pip sopra il massimo della candela successiva, ogni volta che se ne forma una nuova, fino al raggiungimento del target o la chiusura per stop.
Purtroppo i programmi per i computer, contrariamente all’occhio umano, non riescono ad interpretare il concetto di “piccolo” o “vicino”, per cui serve che si indichino esattamente i parametri entro cui tali definizioni sono valide, per cui:
- entro quali limiti (in percentuale sulla lunghezza totale della candela, o range, ad esempio tra il 2% ed il 10%) deve essere il real body?
- il limite “vicino” ai minimi della candela non m’interessa, tanto dovrai dirmi quanto deve essere grande l’ombra inferiore
- per la lunghezza dell’ombra superiore va bene così, ho capito che deve essere almeno il doppio del real body
- entro quali limiti deve essere l’ombra inferiore (ad esempio tra 0, cioè assente, e 3%)?
Una volta avuta risposta ai quesiti 1 e 4 scriverò qualcosa. Tieni presente che, comunque, i valori che io scriverò potrai modificarli a tuo piacimento ogni volta che vorrai, per cui non è necessario che qui tui faccia dei calcoli precisissimi, a me servono come indicazione sommaria.
1- Il realbody deve essere tra il 0,01% e lo 0,50%
2- L’ombra inferiore deve essere nei limiti tra 0 (assente) e lo 0,30%
Spero che questi limiti possano andare bene.
Grazie 🙂
Questo codice (per ora è uno screener, poi lo modificheremo in una strategia) ti fa vedere le candele PinBar ribassiste.
Tu avevi indicato:
- Il realbody deve essere tra il 0,01% e lo 0,50%
- L’ombra inferiore deve essere nei limiti tra 0 (assente) e lo 0,30%
immagino intendessi quei valori SENZA il simbolo di percentuale , altrimenti otterresti dati pressoché inesistenti. Inoltre un Real Body che arriva al 50% può essere definito una PinBar? A me sembra piuttosto alto. Ad ogni modo i valori puoi cambiarli a tuo piacimento.
Corpo = abs(open - close) //grandezza del corpo
//OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
//TotaleOmbre = OmbraSuperiore + OmbraInferiore
Ampiezza = range //ampiezza della candela (high - low)
PinBar = (Corpo >= (Ampiezza * 0.01)) AND (Corpo <= (Ampiezza * 0.50))
PinBar = PinBar AND (OmbraInferiore >= 0) AND (OmbraInferiore <= (Ampiezza * 0.30))
PinBar = PinBar AND (close < open)
SCREENER [PinBar] (PinBar AS "PinBar")
Adesso che il codice per identificare una PinBar ribassista è pronto, cosa vuoi che faccia la tua strategia?
Ok, il realbody lo cambiamo deve essere tra il 0,01% e lo 0,40% , aggiungo in allegato come ho misurato io il real body.
va bene cosi, possiamo andare avanti con la strategia.
Grazie
Ormai la farò l’annuo nuovo.
Buon 2018!
Grazie, Buon 2018 anche a te!
By Fabri! 🙂
Ho scritto questa strategia (provata su DAX 10 minuti) ed inizia correttamente un’operazione Short, però non aggiorna lo Stop Loss e viene chiusa solo quando raggiunge la data indicata come fine del backtest.
Avrebbe dovuto aggiornare lo Stop Loss già alla candela successiva all’entrata, ma non l’ha fatto e non capisco perché. Spero Nicolas possa eserci d’aiuto .
DEFPARAM CumulateOrders = false
ONCE nLots = 1
// aggiornare lo Stop Loss al massimo di ogni candela successiva, se questa è inferiore
IF ShortOnMarket THEN
IF high < high[1] AND high < Sl THEN
Sl = high
SET STOP LOSS Sl
ENDIF
ENDIF
// verificare se + una Pin BAR ribassista
Corpo = abs(open - close) //grandezza del corpo
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
Ampiezza = range //ampiezza della candela (high - low)
PinBar = (Corpo >= (Ampiezza * 0.01)) AND (Corpo <= (Ampiezza * 0.40)) //0.01 e 0.40
PinBar = PinBar AND (OmbraInferiore >= 0) AND (OmbraInferiore <= (Ampiezza * 0.30)) //0 e 0.30
PinBar = PinBar AND (close < open)
// entrare SHORT
IF PinBar AND Not OnMarket THEN
SellPrice = low - (1 * pipsize) //Prezzo di entrata
Sl = high + (1 * pipsize) //Stop Loss
Tp = SellPrice - (Sl - SellPrice) //Target Profit
SELLSHORT nLots CONTRACT AT SellPrice STOP //Ordine Pendente (valido per una sola candela)
SET STOP LOSS Sl
SET TARGET PROFIT Tp
ENDIF
//GRAPH SellPrice
//GRAPH Sl
//GRAPH Tp
//GRAPH high