Ti conviene non usare TRAILING, non è molto affidabile.
Sono stati sviluppati svariati codici per sostituirlo. Basta che cerchi TRAILING STOP o BREAKEVEN e ne troverai a bizzeffe.
Il primo fu ideato da Nicolas, proprio per usarlo al posto di TRAILING, poi ci sono state molte evoluzioni.
ok, grazie per il suggerimento. Vado immediatamente a cercare nel forum per vedere (e capire) come posso usare queste tecniche sostitutive del trailing.
Invece per quanto riguarda l’ultimo codice che ho allegato (quello comprendente anche il secondo spostamento al 80%), hai avuto modo di provarlo un attimo per vedere se come l’ho impostato è corretto o se necessita di qualche ulteriore aggiustamento da parte tua ??
grazie !!!
Lo proverò appena ho un pò di tempo, nei prossimi giorni.
ok, grazie mille.
intanto io faccio qualche ricerca… 🙂
ciao.
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 0.50 //attiva il pareggio al 50% del profitto
PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge la seconda %
PagoSpese = 0.0005 //numero di pips che aggiungo al breakeven per ripagarmi delle spese
//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)
//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)
//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTARE
IF Not OnMarket THEN
BreakEven = 0
ENDIF
ONCE Flag = 0
IF OnMarket OR LOW < MinimoPat THEN
Flag=0 //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...
ENDIF //... una volta entrato oppure quando non ci sono più le condizioni
//IF Not OnMarket THEN
//BreakEven = 0
//ENDIF
//CONDIZIONI
//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>0
Cond2 = AO[1]<0
CondTOT = Cond1 AND Cond2 //Condizione globale da tradare
IF CondTOT THEN
Flag = 1
ENDIF
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT AND Not LongOnMarket THEN
TargetProfit = (HIGH - LOW)/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH - LOW)/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE
MinimoPat = LOW
ENDIF
Moltiplicatore = (MioRischio/(StopLoss/Prezzo)/pipsize) //QUANTITA' dello strumento da negoziare per avere in caso di perdita un valore
//corrispondente a MIORISCHIO (nei parametri iniziali)
IF not onmarket AND Flag THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) THEN
//IF LongOnMarket THEN
//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)
//ENDIF
//ENDIF
IF LongOnMarket THEN
IF Breakeven=0 AND ((High - Tradeprice) >= (TargetProfit * PercStop1)*pipsize) THEN
Breakeven = Tradeprice + PagoSpese
ENDIF
IF Breakeven>0 AND ((High - Tradeprice) >= (TargetProfit * PercStop2)*pipsize) THEN
Breakeven = Tradeprice + (TargetProfit/2)
ENDIF
IF Breakeven>0 AND ((High - Tradeprice) >= (TargetProfit * (PercStop2+0.1))*pipsize) THEN
Breakeven = Breakeven + 1
ENDIF
ENDIF
IF OnMarket AND Breakeven>0 THEN
SELL AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
//SET TARGET pPROFIT TargetProfit
//SET STOP pTRAILING TargetProfit
CIAO !!
…non so come (anzi lo so, con tanta fatica e decine di tentativi) ma sono riuscito ad ottenere un codice definitivo e funzionante che fa tutto ciò che desideravo.
Quando hai anche solo un paio di minuti potresti per favore far girare il codice che allego e vedere come si comporta ?
Non dovrebbero esserci sorprese, anzi, la sorpresa che che tutto (forse) funziona bene.
Tutto ruota attorno alle righe da 49 a 59, in tre distinti momenti:
1- a metà del profitto porta lo stop in pari e aggiungo qualche pips per pagarmi anche le spese 🙂
2. – al raggiungimento della seconda percentuale, il Breakeven diventa uguale al tradeprice + metà del profitto
3. – subito dopo il Breakeven aumenta di 1 Pips alla volta diventando di fatto un Trailing (ed è qui che vorrei sapere da te se funziona bene).
Per me è stato un grande traguardo, se penso che solo un paio di settimane fa facevo fatica a distinguere le candele [1] dalle candele [0] 😉
Spero di avere presto un tuo responso ed eventuali, forse, correzioni da fare.
Grazie di tutto, adesso inizio con i veri test 🙂
ciao.
Qual’è lo scopo della riga 57, che significa aggiungerci 1?
Ciao,
hai assolutamente centrato il problema !
Seguendo il tuo suggerimento ho fatto una ricerca sul forum impostando la parola “trailing” ed ho trovato un mare di informazioni, al momento forse troppe per me 🙁
Mi sono quindi focalizzato sull’articolo intitolato “Complete trailing stop code function” perché mi sembrava quello più adatto a risolvere i miei problemi di trailing (avrei preferito utilizzare il concetto di MFE ma ho provato a modificare il mio codice e non funzionava più nulla…)
E dopo svariate prove/tentativi sono riuscito QUASI ad ottenere ciò che volevo.
Le righe 50 e 51 mi spostano lo stop in pari, e questo mi pare che stia funzionando bene.
Le righe 53 e 54 mi permettono mi mettere al sicuro metà del profitto quando raggiungo la seconda % di stop, ed anche qui dovrebbe funzionare bene.
E adesso viene il bello. Dopo che ho “bloccato” metà del profitto, vorrei anche che da li in poi partisse un vero e proprio trailing per poter cavalcare il più possibile l’operazione.
Mi pare di aver capito che esistono altri due parametri da gestire che si chiamano “trailingstart” e “trailingstep”. Nell’esempio che ho visto veniva indicato “NewSL = NewSL + TrailingStep” ed io che utilizzo il nome “Breakeven” ho scritto “Breakeven = Breakeven + 1″ dove 1 è il valore di TrailingStep e significa che deve salire di pip in pip. Ma purtroppo non funziona 🙁
E non saprei nemmeno cosa toccare. La riga 56 dice che al 90% del target iniziale, ovvero (TargetProfit * (PercStop2+0.1)), dovrebbe partire il trailing con TrailingStart=TargetProfit * PercStop1 e TrailingStep=1 (perché se non do un po’ di spazio tra il TrailingStart ed il prezzo sarebbe come non avere il trailing).
Mi daresti per favore qualche suggeriemento su come rendere funzionanti le righe 56-57 ?
GRAZIE !!
ciao,
ho provato a rileggere tutto il post dove si parlava di trailing ma sinceramente non riesco a capire perché non funziona l’attivazione del trailing 🙁
Hai potuto vedere qualcosa ?
GRAZIE !!
Per attivare il trailing devi dargli uno start, siccome tu vuoi che parta dopo l’80%, che viene calcolato alla riga 56, tu devi convertire quel prezzo in PIPS ed indicare quel valore come TrailingStart, poi stabilisci te i TrailingStep.
ok, grazie. Tra pochissimo proverò, penso di aver capito.
grazie ancora.
ciao.
Ciao,
vorrei tornare ancora un attimo sull’argomento e chiederti, per favore, alcuni chiarimenti…
sia il trailingstart che il trailingstep sono espressi in pips, corretto ?
se il trailingstart è un numero di pips, da dove parte ? dal mio tradaprice, ovvero il mio prezzo di ingresso ?
quindi se io entro long su EURUSD a 1,12 ad esempio, ed il mio target è 1,13 (ovvero 100 pips) ed io voglio far partire li trailing al 80% del target impostato inizialmente, è sufficiente dire in questo caso trailingstart=80 ? (ovvero 80 pips sopra il mio punto di ingresso).
ed inoltre: se ad esempio il mio trailingstep fosse uguale a 10, cosa succede ? quando ho guadagnato 81 pips porta lo stop a 71 oppure quando guadagno 91 pips incomincia a funzionare portando lo stop a 81 ?
tu mi hai giustamente suggerito di convertire il prezzo in pips, ma alla riga 56 “<span class=”crayon-st”>High</span> <span class=”crayon-o”>-</span> <span class=”crayon-st”>Tradeprice” è già un numero di pips ed anche “TargetProfit <span class=”crayon-o”>*</span> (PercStop2<span class=”crayon-o”>+</span><span class=”crayon-cn”>0.1</span>))<span class=”crayon-o”>*</span>pipsize” è un numero di pips 🙁 o dovrei togliere la parte dove lo moltiplico per pipsize ??</span>
…ma poi alla riga 34 è corretto dividere per pipsize ? HIGH-LOW non dovrebbe già essere un numero di pips ?
scusa la valanga di domande ma purtroppo mi sono un po’ incartato…
quando hai un attimo, potresti gentilmente riscrivermi la riga 56 nel modo che ritieni corretto ?
GRAZIE MILLE !
ho fatto un casino con il copia/incolla
volevo scriviere…
tu mi hai giustamente suggerito di convertire il prezzo in pips, ma alla riga 56 High-Tradeprice è già un numero di pips ed anche TargetProfit *(PercStop2(+0.1))*pipsize0.1) è un numero di pips o dovrei togliere la parte dove lo moltiplico per pipsize ??
Il codice del trailing stop parte da TRADEPRICE, quindi ti mette in pareggio solo quanto arriva ad 80 pips, mentre tu sei già in pareggio da tempo.
Devi sostituire TRADEPRICE con MyTradePrice e settarlo a 999999 quando non sei a mercato. Quando arrivi al tuo punto desiderato, setti MyTradePrice a quel valore (+80 pips) e da li lui parte a fare il trailing ogni STEPSIZE pips.
Ricodati che una differenza tra 1.1300 1.1200 NON ti da 10 pips, perché è una differenza di prezzo, quindi ti da 0.0100, devi convertirlo in pips dividendolo per PIPSIZE che te lo convertirà in 100. Questo risponde anche alla domanda su HIGH-LOW (è sempre una differenza di prezzo, non di pips!).
Una differenza tra due medie è, anch’essa, una differenza di prezzo, non di pips! Se tu acquisti in LIMIT a HIGH + 10, non ti acquista 10 pips oltre il massimo, ma a 10 + 1.1300 cioè 11.1300 che non arriverà MAI! In questo caso devi convertire i pips (10 non è un prezzo, sono pips), devi moltiplicare tale valore per PIPSIZE.
La riga 56 corretta sarà:
IF Breakeven>0 AND ((High - Tradeprice)*pipsize >= (TargetProfit * (PercStop2+0.1))) THEN
perché TARGETPROFIT l’avevi già trasformato in Pips quando l’hai calcolato, per cui devi convertire in Pips solo la differenza dei due prezzi, altrimenti confronti, ad esempio, 0.0100 con 80 e non può mai essere vera questa condizione!
Ciao,
sono tornato (dopo tante prove e pochi risultati…). 🙁
perdona la banalità della domanda: ma se alla riga 56 per essere corretta, come da tua indicazione, devo metterci *pipsize dopo tradeprice, anche alle righe 50 e 53 devo fare la stessa cosa ? perché mi sembra che funzionino bene così come sono adesso.
e dopo percstop2+0.1 (sempre alla riga 56) non devo più moltiplicare per pipsize ?
inoltre, il famoso “mytradeprice” deve sostituire il tradeprice solo della riga 56, corretto ? (perché alla riga 50 e 53 è giusto che ci sia tradeprice, mi pare).
Alla riga 13 dovrei aggiungere “AND MyTradePrice=999999” dopo il breakeven=0 per rispettare ciò che mi dici “Devi sostituire TRADEPRICE con MyTradePrice e settarlo a 999999 quando non sei a mercato. Quando arrivi al tuo punto desiderato, setti MyTradePrice a quel valore (+80 pips) e da li lui parte a fare il trailing ogni STEPSIZE pips.”
ma poi non so dove intervenire per sostituire TRADEPRICE con MYTRADEPRICE. Sempre alla riga 56??
onestamente sono un po’ confuso. Per favore aiutami a chiarire i vari passaggi.
Grazie mille.
Certo, anche le altre. Non le avevo indicate perché sono sostanzialmente identiche.
No, dopo percstop2+0.1 non devi fare nessuna conversione, l’avevi già fatta alla riga 34.
Comunque c’è un errore nella mia precedente correzione, la riga 56 deve usare “/”, non “*” con pipsize:
IF Breakeven>0 AND ((High - Tradeprice)/pipsize >= (TargetProfit * (PercStop2+0.1))) THEN
perché converti un prezzo (la differenza tra High e Tradeprice) in Pips, mentre il segno di moltiplicazione va usato per convertire i Pips in prezzo.
Dopo la riga 13 devi aggiungere:
MyTradePrice=999999
AND non serve a niente, non devi valutare più di una condizione, ma solamente assegnare un valore ad una variabile, MyTradePrice in questo caso.
Devi sostituire TRADEPRICE com MyTradePrice. Dove? dove c’è scritto TRADEPRICE.
Quando arriva al valore dove tu vuoi cha parte il Trailing Stop, li ci metterai:
MyTradePrice=close
Usa:
graph close
graph Tradeprice
graph MyTradePrice
graph Breakeven
graph TargetProfit
ed aventuali altri dati che t’interessano, per verificarli, candela per candela, nell’apposita finestra delle variabili di ProBackTest.