Buonasera ragazzi,
cortesemente avrei bisogno di una mano per risolvere questo problema. Ho settato alcune strategie attivando il trailing stop + stop loss, ma in fase di lancio in pro order non mi viene accettato.
Come posso aggirare questo problema ?
Vi ringrazio in anticipo
Non si possono usare congiuntamente, o l’uno o l’altro.
Ad ogni modo per il trailing stop è meglio usare i vari codici che si trovano sul forum, così potrai usarlo insieme allo stop loss.
Il più usato e già pronto per l’uso è il codice di Nicolas che va dalla riga 17 alla riga 56 a questo link https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/.
Ciao Roberto,
il codice funziona alla grande. Grazie.
Vorrei chiederti ancora una cosa : vorrei testare una strategia nel forex con shares inferiore a 1 (ho provato da 0.1 fino a 0.9), però non so in cosa sbaglio, ma in backtest non mi apre neppure una posizione.
Grazie per la risposta
Devi verificare sul sito di IG qual’è il minimo tradabile, in alcuni casi è 1, in altri 0.5. Non saprei dirti.
Ciao Roberto, il referente di IG mi aveva detto che avrei potuto operare con lotti da 0,25 e 0,50… Ho provato a riscrivergli e adesso vedremo.
A proposito dell’argomento messo nel titolo di questa discussione, il codice funziona perfettamente, ma se ho capito bene con questo riesco a muovere lo stop nel caso in cui i mercato mi viene incontro, nel caso opposto invece volevo aggiungere uno stop loss fisso. Però in questo modo non riesco a sortire alcuna differenza in termini di protezione del capitale.
Ti allego il codice, per favore gli daresti un occhio ?
Grazie.
//trailing stop function
trailingstart = trailingstart1 // 12 trailing will start @trailinstart points profit
trailingstep = trailingstep1 //18 trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
//manage short positions
IF SHORTONMARKET THEN
//first move (breakeven)
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Set stop ploss 10
GRAPH newSL as "trailing"
Questo trailing stop non è il classico trailing stop che incrementa lo SL di un certo numero di pips, pur anche rimanendo sempre in prdita (minore rispetto a quella iniziale). Appena arriva al TRAILINGSTART mette l’operazione in pareggio (break even) e da li iniza a fare il trailing profit (più che stop).
Non capisco bene il tuo esempio, fammelo con qualche numero.
Ciao Roberto,
hai ragione cercherò di essere più chiaro.
Ipotizziamo di voler impostare un trailingstart a 10pips ed un trailingstep a 5pips e che imposti di andare long. Se l’operazione a mercato mi da ragione, lo stop loss lo avrò a +10pips dall’apertura della posizione (ovviamente se il prezzo avrà fatto +10pips di strada) e se continua nella stessa direzione ogni +5pips successivi ai primi +10pips sposterà il mio SL di +5pips.
Se il mercato invece non mi da ragione e mi va in short, non ho SL impostati e potrei perdere parecchio.
Quindi vorrei impostare un valore di trailingstart e trailingstop ma anche uno SL in caso di mercato opposto al movimento da me atteso.
Spero di essere riuscito ad essere più chiaro.
Grazie ancora per la tua pazienza e disponibilità
Per mettere lo SL fisso la riga 49 va benissimo, metti il numero di pips desiderati.
Il codice inizia a fare trailing a +Trailingstart. La prima volta lo mette in pareggio, dopo lo incrementerà di trailingstep.
Tieni presente, con SL e TP troppo stretti, di mantenere la distanza minima dal prezzo corrente richiesta da IG, altrimenti l’ordine di SL può essere rifiutato o eseguito a mercato.