Breakeven Stop non mantenuto
Forums › ProRealTime forum Italiano › Supporto ProOrder › Breakeven Stop non mantenuto
- This topic has 12 replies, 4 voices, and was last updated 2 years ago by elfuego77.
-
-
01/06/2022 at 5:20 PM #184774
Ciao a tutti, ho inserito la seguente parte di codice portare lo stop in pari dopo un tot di punti. Nel caso di specie, sul mio TS, lo stop è a 90 ed il target a 100.
Il sistema è entrato, andato a favore di mercato, superato i 50 punti richiesti, lo stop è stato messo sul livello di entry +5. Non è arrivato a target, il mercato ha ritracciato ad un certo punto e mentre veniva giù anche lo stop si è spostato tornando a punto di partenza.
Dov’è l’errore? Grazie anticipatamente per il l’aiuto.
Startbreakeven=50
Pointstokeep=5
If NOT Onmarket then
breakevenlevel=0
endif
If longonmarket and close-tradeprice(1) >= startbreakeven*1 then //
breakevenlevel = tradeprice(1)+Pointstokeep*1
If breakevenlevel>0 then
sell at breakevenlevel stop
endif
endifIf shortonmarket and tradeprice(1)-close>= startbreakeven*1 then//indica un euro a punto per i contratti grandi va modificato
breakevenlevel= tradeprice(1)-Pointstokeep*1
If breakevenlevel>0 then
exitshort at breakevenlevel stop
endif
endif01/06/2022 at 6:24 PM #184776Non moltiplicare POINTSTOKEEP per 1, ma per PIPSIZE, per essere sicuro che funzioni su ogni strumento/asset.
Eccolo modificato:123456789101112131415Startbreakeven=50Pointstokeep=5If NOT Onmarket thenbreakevenlevel=0endifif breakevenlevel = 0 thenIf longonmarket and close-tradeprice(1) >= startbreakeven*pipsize then //breakevenlevel = tradeprice(1)+Pointstokeep*1sell at breakevenlevel stopendifIf shortonmarket and tradeprice(1)-close>= startbreakeven*pipsize then//indica un euro a punto per i contratti grandi va modificatobreakevenlevel= tradeprice(1)-Pointstokeep*1exitshort at breakevenlevel stopendifendif01/10/2022 at 9:52 AM #184993Grazie Mille Roberto. Ho modificato come indicato ma succede sempre la stessa cosa ed in particolare che lo stop viene spostato dopo 50 punti a 5 punti di TP. Se però il mercato ritraccia viene nuovamente rispostato al punto di origine se poi continua nella sua direzione lo sposta nuovamente. Quindi il problema è che lo sposta ma poi non lo mantiene… Come si deve fare per far si che quando lo sposta in pari rimanga li?
01/10/2022 at 3:21 PM #185027123456789101112131415161718Startbreakeven=50Pointstokeep=5If NOT Onmarket thenbreakevenlevel=0endifif breakevenlevel = 0 thenIf longonmarket and close-tradeprice(1) >= startbreakeven*pipsize then //breakevenlevel = tradeprice(1)+Pointstokeep*1endifIf shortonmarket and tradeprice(1)-close>= startbreakeven*pipsize then//indica un euro a punto per i contratti grandi va modificatobreakevenlevel= tradeprice(1)-Pointstokeep*1endifif breakevenlevel > 0 thensell at breakevenlevel stopexitshort at breakevenlevel stopendifprova questo
01/10/2022 at 7:33 PM #18503901/10/2022 at 8:32 PM #18504001/11/2022 at 7:57 AM #185059Posta il codice completo, e indica su quale strumento e timeframe lo hai utilizzazto.
Meglio se indichi anche una data ed un’ora di una o più operazioni errate.
01/11/2022 at 11:19 AM #185092Mercato DAX. E’ entrato correttamente alle 9.48 del 11.01.2022, il mercato è salito ha messo lo stop in pari dopo 40 punti non ha raggiunto il target ha ritracciato e lo stop lo ha spostato a punto di partenza.
defparam FLATBEFORE =090000
defparam FLATAFTER = 173000
defparam CUMULATEORDERS= falseTIMEFRAME (DAILY,UPDATEONCLOSE)
cond1=AverageTrueRange[14](close)
Cond2=AverageTrueRange[8](close)
Condlong=cond1>cond2
Condshort=cond2>cond1TIMEFRAME(1mn,UPDATEONCLOSE)
ST = Supertrend[3,10]
Long= close crosses over ST and Condlong
Short = close crosses under ST and CondshortOnce Contratto = 1
Once Minimo = 1
If StrategyProfit > StrategyProfit[1] then
Contratto = max(Minimo,Contratto -25) //diminuisce se la volta prima ha vinto
ElsIf StrategyProfit < StrategyProfit[1] then
Contratto = max(Minimo,Contratto *2) // raddoppia se la volta prima ha perso
Endifif long then
buy contratto contract at market
elsif short then
sellshort contratto contract at market
endifStartbreakeven=40
Pointstokeep=5
If NOT Onmarket then
breakevenlevel=0
endifIf longonmarket and close-tradeprice(1) >= startbreakeven*pipsize then
breakevenlevel = tradeprice(1)+Pointstokeep*1
If breakevenlevel>0 then
sell at breakevenlevel stop
endif
endifIf shortonmarket and tradeprice(1)-close>= startbreakeven*pipsize then
breakevenlevel= tradeprice(1)-Pointstokeep*1
If breakevenlevel>0 then
exitshort at breakevenlevel stop
endif
endifSET TARGET PPROFIT 75
SET STOP PLOSS 55
01/11/2022 at 2:49 PM #185122Buongiorno,
la lettura è dall’alto verso il basso.
lo stop deve essere sopra il breakeven e il trailling123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051defparam FLATBEFORE =090000defparam FLATAFTER = 173000defparam CUMULATEORDERS= falseTIMEFRAME (DAILY,UPDATEONCLOSE)cond1=AverageTrueRange[14](close)Cond2=AverageTrueRange[8](close)Condlong=cond1>cond2Condshort=cond2>cond1TIMEFRAME(1mn,UPDATEONCLOSE)ST = Supertrend[3,10]Long= close crosses over ST and CondlongShort = close crosses under ST and CondshortOnce Contratto = 1Once Minimo = 1If StrategyProfit > StrategyProfit[1] thenContratto = max(Minimo,Contratto -25) //diminuisce se la volta prima ha vintoElsIf StrategyProfit < StrategyProfit[1] thenContratto = max(Minimo,Contratto *2) // raddoppia se la volta prima ha persoEndifif long thenbuy contratto contract at marketelsif short thensellshort contratto contract at marketendifSET TARGET PPROFIT 75SET STOP PLOSS 55Startbreakeven=40Pointstokeep=5If NOT Onmarket thenbreakevenlevel=0endifIf longonmarket and close-tradeprice(1) >= startbreakeven*pipsize thenbreakevenlevel = tradeprice(1)+Pointstokeep*1endifIf breakevenlevel>0 thensell at breakevenlevel stopendifIf shortonmarket and tradeprice(1)-close>= startbreakeven*pipsize thenbreakevenlevel= tradeprice(1)-Pointstokeep*1endifIf breakevenlevel>0 thenexitshort at breakevenlevel stopendif1 user thanked author for this post.
01/11/2022 at 3:27 PM #18513201/12/2022 at 9:40 AM #185233Ho provato con le modifiche suggerite il problema rimane. Lo stop viene spostato ma se poi il mercato ritraccia viene riportato al punto di partenza. Poi se i prezzi tornano nella direzione giusta viene rimesso in pari. Dunque il problema è che il sistema non tiene fisso il nuovo livello di stop in pari. E’ evidente che sia un errore di calcolo/programmazione. Dov’è l’errore?
01/12/2022 at 5:32 PM #185281Scusami, ma come pensi di farla girare questa strategia?
In meno di 2 mesi apre un’operazione con oltre 5.47 milioni di contratti!?
A parte il fatto che ti servirebbero miliardi di capitale (che nessun broker potrebbe sopportare), credo che tu abbia voluto incrementare i contratti ma abbia fatto qualche errore di calcolo.
Se mi spieghi i dettagli su quando incrementare/decrementare magari posso aiutarti a correggerli.
Io ho fatto le prove mettendo 1 alle righe 16 e 18, ma ti ho lasciato le tue originali accanto, basta che togli 1 e le due barre dei commenti.
Adesso funziona, ho spostato le uscite FUORI dal calcolo del trailing stop:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849efparam FLATBEFORE =090000defparam FLATAFTER = 173000defparam CUMULATEORDERS= falseTIMEFRAME (DAILY,UPDATEONCLOSE)cond1=AverageTrueRange[14](close)Cond2=AverageTrueRange[8](close)Condlong=cond1>cond2Condshort=cond2>cond1TIMEFRAME(1mn,UPDATEONCLOSE)ST = Supertrend[3,10]Long= close crosses over ST and CondlongShort = close crosses under ST and CondshortOnce Contratto = 1Once Minimo = 1If StrategyProfit > StrategyProfit[1] thenContratto = 1//max(Minimo,Contratto -25) //diminuisce se la volta prima ha vintoElsIf StrategyProfit < StrategyProfit[1] thenContratto = 1//max(Minimo,Contratto *2) // raddoppia se la volta prima ha persoEndifif long thenbuy contratto contract at marketelsif short thensellshort contratto contract at marketendifStartbreakeven=40Pointstokeep=5If NOT Onmarket thenbreakevenlevel=0endifIf longonmarket and close-tradeprice(1) >= startbreakeven*pipsize thenbreakevenlevel = tradeprice(1)+Pointstokeep*1//If breakevenlevel>0 then//sell at breakevenlevel stop//endifendifIf shortonmarket and tradeprice(1)-close>= startbreakeven*pipsize thenbreakevenlevel= tradeprice(1)-Pointstokeep*1//If breakevenlevel>0 then//exitshort at breakevenlevel stop//endifendifIf breakevenlevel>0 thensell at breakevenlevel stopexitshort at breakevenlevel stopendifSET TARGET PPROFIT 75SET STOP PLOSS 55graphonprice breakevenlevelgraph positionperf * positionprice / pipsize AS "Profitto"01/12/2022 at 7:48 PM #185300Ciao Roberto Grazie mille. Chiaramente è da impostare sui contratti micro… Con i contratti regolari non sarebbe sostenibile. Il -25 serve proprio per fargli scaricare i contratti perchè altrimenti sarebbe tutto sballato. Grazie ancora!!
-
AuthorPosts
Find exclusive trading pro-tools on