//trailing stop function
trailingstart = start //trailing will start @trailinstart points profit
trailingstep = step //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
Salve, utilizzo spesso questo codice per il trailing stop..ma vorrei avere alcuni chiarimenti per capire se ho capito bene il codice:
Con “start” definisco il numero di pips dal quale parte il trailing stop.
Con “step” invece il numero di pips di ritorno indietro del prezzo per far chiudere la posizione.
Corretto?
Esiste una implementazione di questo codice che permetta di impostare un numero “x “di pips minimo di guadagno?
Grazie a tutti.
STEP è il passo, cioè ogni quanti pips lo stop loss viene aggiornato.
All’inizio ti mette in pareggio.
Il minimo di guadagno è lo step mano a mano che il profitto cresce.
Per fare un esempio, posizione long:
stoploss: SET STOP pLOSS 10
start=8 step=2
Dopo 8 pips di guadagno si attiva il trailing stop, e dopo 2pips che è salito cosa succede? Non mi è ben chiaro.
Porta lo stop loss in guadagno di 2 punti, per cui se il prezzo rintraccia esci in profitto.
Dopo altri due porta lo stop in profitto di 4.
Quindi fino a 8pips di guadagno dal prezzo iniziale non è attivo e poi si attiva da lì, 8 sarebbe il punto di pareggio ovvero il nuovo stoploss definito da codice, giusto?
- se aumenta di 2 pips aggiorna lo stoploss a 10 e così via
- se invece il prezzo scende cosa accade, nel senso di quanto deve scendere per chiudere la posizione? Fa sempre riferimento ai 2 pips o invece si potrebbe definire un valore diverso?
Grazie ancora:-)
8 è quando si attiva la PRIMA volta per il pareggio, poi sale in profitto di 2 in 2.
Sì, capito…e la chiusura della posizione se il prezzo scende come viene fatta? Sale di 2 da 8, raggiunge 10 e poi riscende subito..chiude immediatamente? Si potrebbe impostare uno step anche sul ritorno indietro del prezzo?
È 2 il punto di uscita, può diventare 4, 6 ecc…
ciao mi permetto 2 domande su questo codice:
1 / se l’operazione va verso una perdita qual è il livello dello SL?
2 / Immaginiamo “tradingstart = 2”. se il trade raggiunge questo valore non può diventare negativo in seguito, giusto? … Almeno il profitto = 2
Grazie!
- NewSL è il livello di uscita (se attivato).
- No, tranne quando si verifica uno slippage.
Occorre tenere presente che, specialmente sui time frame bassi, può succedere che il prezzo dello SL sia troppo vicino al prezzo corrente. In quel caso viene eseguito in modo non corretto.
ciao roberto
1 / NewSL: quando viene attivato esattamente, puoi spiegarci la più grande perdita possibile?
2 / ok
La più grande perdita è data dal tuo stop loss.
Se hai uno stop loss di 100 punti e l’operazione va dalla parte opposta prima che il trailin stop venga attivato perderai 100 punti.
Una volta che NewSL è attivato (dopo TRAILINGSTART pips di guadagno alla chiusura della candela) l’operazione viene portata immediatamente in pareggio. Ogni TRAILINGSTEP pips NewSL verrà incrementato per avera un guadagno sempre maggiore nel caso in cui il prezzo tornasse indietro.
Roberto está de acuerdo en que todo está claro para las ganancias. Por otro lado por las pérdidas que no entiendo. O tal vez debería agregar esto: set stop ploss. ¿Al final del código?
Roberto concorda sul fatto che tutto è chiaro per i guadagni. D’altra parte per le perdite che non capisco. O forse dovrei aggiungere questo: set stop ploss. Alla fine del codice?
//************************************************************************
//trailing stop function
trailingstart = 19 //trailing will start @trailinstart points profit
trailingstep = 7 //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
//************************************************************************
Per favore
- Pubblica solo nella lingua del forum in cui stai postando. Ad esempio solo l’inglese nei forum di lingua inglese e il francese solo nei forum di lingua francese.
- usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri.
Certo, è sempre meglio aggiungere al codice sia set stop ploss che set Target pProfit, anche se non sono obbligatori. Questi sono ciò che ti permette di limitare le perdite e determinare i profitti.
Il trailing stop è solo un modo per garantirsi da perdite quando il prezzo cambia direzione dopo essere stato in profitto per un certo numero di pips (39 nel tuo caso).
Se cerchi su internet, troverai molte spiegazioni sul funzionamento del trailing stop.
Scusa, volevo scrivere 19, non 39.