Ciao a tutti, sto cercando di impostare uno stop loss che sia una % dell’eventuale guadagno dell’ultimo trading, nel caso l’ultimo trading sia a N barre dall’ingresso corrente.
Riporto il codice. Nsl è una variabile che calcolo per indicare con 1 se la distanza con l’ultimo trading è inferiore a N barre, con 0 se superiore. Sulla base di questa imposto un stop che sia un x %, piuttosto che una % dell’ultimo guadagno. Se inserisco differenti percentuali di stop sulla base del valore di NSL, funziona. Non funziona se uso PosoitionPerf.
Spero di essere stato chiaro.
Qualcuno mi può dare una mano
IF mie condizioni then
BUY n share at MyLimitBuy stop
if nsl=1 then
set stop %loss positionPerf
elsif nsl=0 then
set stop %loss x%
endif
endif
Hai graficato positionperf, per capire quale valore restituisce?
GRAPH positionPerf
Buonasera
mi allaccio a questo topic visto che l’argomento è piuttosto simile.
E’ possibile con PRT creare un Ts in cui lo stop loss è impostato, di base, ad un valore che cambia al raggiungimento di una certa performance?
Ad esempio:
La mia condizione si avvera ed entro long con StopLoss preimpostato di 10pips
Nel momento in cui guadagno 40 pips automaticamete lo stop loss si modifica e va ad entryprice+1
E’ fattibile?
Grazie
Questo dovrebbe funzionare, ma non l’ho provato:
If Not OnMarket Then
NewSL = 0
Else
If LongOnMarket Then
If (close - PositionPrice) >= 40 * pipsize Then
NewSL = PositionPrice + 1
Endif
If NewSL > 0 Then
SELL at NewSL Stop
Endif
Else
If (PositionPrice - close) >= 40 * pipsize Then
NewSL = PositionPrice - 1
Endif
If NewSL > 0 Then
EXITSHORT at NewSL Stop
Endif
Endif
Endif
Thanks!
Buongiorno
Ho creato il mio TS aggiungendo le istruzioni ma sembra non funzionare….
Ad esempio stanotte è stata aperta una posizione long sul Us Tech 100 da 11.500 e avendo fatto un max a 11.780 (+280punti) in teoria il NewSl doveva essere posizionato a 11.512 ma non lo ha fatto…..
Ipotesi 1
- non funziona mettendo anche il set stop ploss?
ipotesi 2
- bisogna aggiungere * pipsize anche dopo NewSL = PositionPrice + 12 e NewSL = PositionPrice – 14?
If Not OnMarket Then
NewSL = 0
Else
If LongOnMarket Then
If (close - PositionPrice) >= 174 * pipsize Then
NewSL = PositionPrice + 12
Endif
If NewSL > 0 Then
SELL at NewSL Stop
Endif
Else
If (PositionPrice - close) >= 90 * pipsize Then
NewSL = PositionPrice - 14
Endif
If NewSL > 0 Then
EXITSHORT at NewSL Stop
Endif
Endif
Endif
set stop ploss 581
Set Stop pLoss non influisce sul trailing stop.
Pipsize è meglio metterlo sempre, me n’ero dimenticato, per un problema di portabilità ma in questo caso il rapporto tra pip e prezzo è 1:1 quindi non influisce sul risultato.
Che time frame hai usato?
Considera che non devi guardare i massimi o minini fatti, ma la chiusura.
Considera che non devi guardare i massimi o minini fatti, ma la chiusura.
Considera che non devi guardare i massimi o minini fatti, ma la chiusura.
e’ sicuramente quello il problema…… perchè uso il tf orario e non ha chiuso a +174 ma una ventina di pips in meno….
ma è possibile invece che il close usare il valore puntuale?
Basta sostituire close con HIGH per i long e LOW per gli short.
Per una precisione ancora maggiore potresti usare il supporto MTF (Multi Time Frame), che ti consente di operare su più TF, nel tuo caso su H1 per il setup e l’entrata a mercato, e un TF più breve, ad esempio 1 minuto, per gestire il trailing stop. In questo modo non devi attendere la chiusura della candela oraria.
L’unico inconveniente è che il TF più breve è considerato come principale, quindi deve essere quello sul grafico (non più H1, ma 1 minuto), il che comporta una backtest con uno storico più breve. 100K barre da 1 minuto sono molte meno di 100K barre da 1 ora!
Se cerchi sul forum troverai molti esempi, articoli e post in materia MTF.
Per favore non usare la citazione (quote) quando non serve. Addirittura hai citato te stesso! E in ogni caso NON quotare post dove ci sia del codice! Questo per evitare che i post diventino troppo lunghi e più difficili da leggere. Tieni sempre presente che affinché qualcuno sia disposto ad aiutarti i post devono essere chiari e non troppo lunghi, in modo la leggerli bene in poco tempo. Grazie 🙂
Se uso High/Low il trigger avviene comunque a chiusura barra e non istantaneo giusto?
Perchè se è così allora come hai giustamente scritto è meglio usare MTF con barra 1 minuto.
Grazie!!!!
p.s.
chiedo scusa per il quote a me stesso ma non me ne sono accorto…..
Si, ogni strategia viene sempre eseguita alla chiusura della barra.
È meglio usare il supporto MTF.
Nel tuo esempio di cui sopra, in ogni caso, utilizzando HIGH alla riga 5, lo stop sarebbe stato portato in profitto di 12 punti.
Con l’utilizzo di MTF funziona perfettamente!
Grazie
Un’ultima cosa….. è possibile duplicare le istruzioni
If LongOnMarket Then
If (close - PositionPrice) >= 174 * pipsize Then
NewSL = PositionPrice + 12
mettendo un ulteriore step di aumento in modo da creare un trailing personalizzato o c’è un conflitto?
Ad esempio, dopo le prime istruzioni, mettere
If LongOnMarket Then
If (close - PositionPrice) >= 300 * pipsize Then
NewSL = PositionPrice + 50
Si, però quando assegni un valore a NewSL fai in modo che non torni indietro, altrimenti se passa 300 lo porta a +50 e se poi scende a 174 lo porta indietro a +12:
NewSL = max(NewSL,PositionPrice + 12)
ripeti anche alla riga dove c’è +50.
La seconda istruzione va quindi messa dopo la prima
If Not OnMarket Then
NewSL = 0
Else
If LongOnMarket Then
If (close - PositionPrice) >= 174 * pipsize Then
NewSL = max(NewSL,PositionPrice + 12)
Endif
If (close - PositionPrice) >= 300 * pipsize Then
NewSL = max(NewSL,PositionPrice + 50)
endif
If NewSL > 0 Then
SELL at NewSL Stop
Endif
o va messa “esternamente” rispetto alla prima istruzione riscrivendo If Longonmarket then…..?
Tecnicamente, usando la funzione max (e min per short) posso creare quanti NewSL voglio giusto?