Ciao a tutti, vorrei modificare il trailing stop facendolo attivare al raggiungimento del prezzo stabilito senza aspettare la chiusura della candela come avviene adesso . E’ possibile?
Grazie.
/ Funzione di trailing stop
trailingstart = 50 // Il trailing stop comincia quando siamo a 50 punti di profitto
trailingstep = 10 // Ogni step del trailing stop è di 10 punti
// Reset del valore dello stoploss
IF NOT ONMARKET THEN
newSL = 0
ENDIF
// Gestione delle posizioni long
IF LONGONMARKET THEN
// Primo movimento (breakeven)
IF newSL = 0 AND close – tradeprice(1) >= trailingstart * pipsize THEN
newSL = tradeprice(1) + trailingstep * pipsize
ENDIF
// Movimenti successivi
IF newSL > 0 AND close – newSL >= trailingstep * pipsize THEN
newSL = newSL + trailingstep * pipsize
ENDIF
ENDIF
// Gestione delle posizioni short
IF SHORTONMARKET THEN
// Primo movimento (breakeven)
IF newSL = 0 AND tradeprice(1) – close >= trailingstart * pipsize THEN
newSL = tradeprice(1) – trailingstep * pipsize
ENDIF
// Movimenti successivi
IF newSL > 0 AND newSL – close >= trailingstep * pipsize THEN
newSL = newSL – trailingstep * pipsize
ENDIF
ENDIF
// Ordine di stop per uscire dalle posizioni
IF newSL > 0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Se devui attivarlo ad un prezzo stabilito non serve il codice sopra, basta inserire degli ordini pendenti.
In ogni caso è più chiaro se fai un esempio.
Ciao. Per questo dovresti usare set stop price newSL . In questo modo uscirai sulla stessa candela che si verifica, senza attendere l'apertura del giorno successivo.
Non avendo un immagine lo faccio a parole : quello postato sopra si attiva ( parlo di trailing stop ) solo al raggiungimento di tot punti in chiusura di una candela. Nell’ultimo trade à successo che il trade ha toccato e superato la soglia di attivazione in intraday ma poi il mercato ha cominciato a stornare e la chiusura delle candele successive è stata sotto il prezzo di attivazione finendo cosi poi per prendere uno stop. Io vorrei che il trailing stop si attivasse al raggiungimento del prezzo stabilito senza altre condizioni.
Le strategie vengono eseguite solo alla chiusura di ogni candela. Puoi aggiungere al tuo timeframe che usi normalmente, un altro timeframe più piccolo per limitare il divario tra il prezzo di chiusura e quello di riferiment per imopostare il trailing stop.
Quale timeframe usi?
come timeframe uso il 15 minuti, spesso sono operazioni intraday, poter usare il 5 minuti come riferimento può sicuramente ridurre i rischi.
Questo esempio puoi usarlo sul timeframe a 5 minuti, ma anche a 1 minuto o 1 secondo.
Il vantaggio è che il livello del trailing stop viene verificato e settato in modo più preciso, mentre per l’uscita in stop vera e propria questa avviene al prezzo esatto stabilito dal trailing stop.
Lo svantaggio è che se usi un timeframe a 1 minuto avrai meno storico per il backtest, 200K barre da 1 minuto sono poco più di 6 mesi, mentre se usi 1 secondo saranno circa 15 giorni di storico.
Timeframe(15 minute,UpdateOnClose)
Sma5 = average[200,0](close)
c1 = close CROSSES OVER Sma5
c2 = close CROSSES UNDER Sma5
NR7 = c1[1] AND c2 AND Not OnMarket
IF c1 AND Not LongOnMarket THEN
BUY 1 CONTRACT AT MARKET
ELSIF c2 AND Not ShortOnMarket THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
SET STOP pLOSS 50
SET TARGET pPROFIT 100
//
Timeframe(default)
// Funzione di trailing stop
trailingstart = 50 // Il trailing stop comincia quando siamo a 50 punti di profitto
trailingstep = 10 // Ogni step del trailing stop è di 10 punti
// Reset del valore dello stoploss
IF NOT ONMARKET THEN
newSL = 0
ENDIF
// Gestione delle posizioni long
IF LONGONMARKET THEN
// Primo movimento (breakeven)
IF newSL = 0 AND close - tradeprice(1) >= trailingstart * pipsize THEN
newSL = tradeprice(1) + trailingstep * pipsize
ENDIF
// Movimenti successivi
IF newSL > 0 AND close - newSL >= trailingstep * pipsize THEN
newSL = newSL + trailingstep * pipsize
ENDIF
ENDIF
// Gestione delle posizioni short
IF SHORTONMARKET THEN
// Primo movimento (breakeven)
IF newSL = 0 AND tradeprice(1) - close >= trailingstart * pipsize THEN
newSL = tradeprice(1) - trailingstep * pipsize
ENDIF
// Movimenti successivi
IF newSL > 0 AND newSL - close >= trailingstep * pipsize THEN
newSL = newSL - trailingstep * pipsize
ENDIF
ENDIF
// Ordine di stop per uscire dalle posizioni
IF newSL <> NewSL[1] THEN
SET STOP PRICE NewSL
ENDIF
graphonprice NewSL coloured("Red")
graphonprice TradePrice