Il problema capita quando gli ordini pendenti (non solo STOP, ma anche LIMIT) non rispettano la distanza minima. Il problema principale è che NON si può conoscere (in modo live, cioè durante l’operatività) questo dato che può variare durante il giorno a causa della volatilità, oltre che in base all’orario in cui viene piazzato l’ordine, la notte la distanza minima è solitamente abbastanza più alta.
Ti consiglio di vedere quanto indica il broker per lo strumento che t’interessa, poi aumentarla un pò (devi fare dei tentativi. Con il DAX, generalmente il broker indica 6 pip di distanza ed io solitamente ne metto 10 o 12. Devi fare delle prove finché l’errore non scompare.
Questo è il codice per indicare una distanza (ho messo 10 a caso, scegli tu il valore che ritieni opportuno), da usare sia per le entrate LONG che SHORT:
ONCE Distanza = 10 * PipSize
ONCE StopLoss = 50 * PipSize
// LONG exit
LongSTOP = PositionPrice - StopLoss
IF (close - LongSTOP) > Distanza THEN
IF close >= LongSTOP THEN
SELL AT LongSTOP STOP
ELSE
SELL AT LongSTOP LIMIT
ENDIF
ELSE
//SELL AT Market
ENDIF
// SHORT exit
ShortSTOP = PositionPrice + StopLoss
IF (ShortSTOP - close) > Distanza THEN
IF close <= ShortSTOP THEN
EXITSHORT AT ShortSTOP STOP
ELSE
EXITSHORT AT ShortSTOP LIMIT
ENDIF
ELSE
//EXITSHORT AT Market
ENDIF
ho messo una linea commentate per fare un’uscita a mercato quando non c’è la distanza. Se la vuoi utilizzare basta togliere le doppie barre iniziali.
Ovviamente la verifica della distanza va fatta che per le entrate con ordini pendenti, non solo per le uscite.
E, ripeto, serve solo per gli ordini pendenti (lo Stop è un ordine pendente).
In alternativa puoi lasciare lo Stop Loss disabilotato (con SET STOP pLOSS 0) e poi gestire tu gli stop A MERCATO, ovviamente in tal caso rischi che lo Stop sia qualche (o anche molti) pip oltre quanto ti aspettavi:
ONCE StopLoss = 50 * PipSize
PrezzoSTOPLong = close // oppure LOW
PrezzoSTOPShort = close // oppure HIGH
// LONG exit
LongSTOP = PositionPrice - StopLoss
IF PrezzoSTOPLong <= LongSTOP THEN
SELL AT Market
ENDIF
// SHORT exit
ShortSTOP = PositionPrice + StopLoss
IF PrezzoSTOPShort >= ShortSTOP THEN
EXITSHORT AT Market
ENDIF
se usi CLOSE (come ho indicato io) solitamente paghi qualche PIP in più di stop loss. Se, invece, usi LOW o HIGH potresti anche andare in stop loss pagando qualche PIP in meno (o al massimo uguale a quanto avevi stabilito).