Chiusura parziale in guadagno
Forums › ProRealTime forum Italiano › Supporto ProOrder › Chiusura parziale in guadagno
- This topic has 7 replies, 2 voices, and was last updated 3 years ago by supermyguel.
-
-
01/08/2021 at 3:03 PM #156920
Buongiorno
Mi riallaccio a questo thread visto che l’argomento è più o meno lo stesso.
Visto che con PRT11 si possono fare vendite parziali volevo inserire un’istruzione nel trading system che:
- mi venda metà posizione ad un determinato guadagno (e funziona)
- sposti lo stop loss iniziale dal valore inserito a tradeprice. Qua mi blocco perchè il sistema modifica correttamente lo stop loss (lo vedo da graph), ma poi, la candela successiva alla vendità della metà, chiude interamente la posizione perchè “vede” ancora la condizione della prima metà. Come posso evitare che la “veda”?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950if not onmarket thenhalfposition=0endifif miecondizioni thenIF miecondizioni2 thenbuy N shares AT MARKEThalfposition=1SET STOP %LOSS 0.92SET TARGET %PROFIT 0.6elseif miecondizioni3 thensellshort N shares at markethalfposition=1SET STOP %LOSS 0.92SET TARGET %PROFIT 0.6endifendifendifchiusuraparziale= (positionprice*10000*0.0045)livellolong= (close-positionprice)*10000livelloshort= (positionprice-close)*10000If longonmarket and livellolong*pipsize > chiusuraparziale*pipsize thensell partial shares at markethalfposition=2endifIf shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize thenexitshort partial shares at markethalfposition=2endifIf Not OnMarket ThenNewSL = 0ElseIf onmarket and partial ThenIf halfposition=2 ThenNewSL = tradepriceEndifIf NewSL > 0 ThenSELL at NewSL StopEXITSHORT at NewSL StopEndifEndifEndif01/08/2021 at 3:26 PM #156926Per ogni domanda diversa (anche se lievemente) va creato un nuovo argomento.
Grazie 🙂
L’ho fatto io stavolta.
1 user thanked author for this post.
01/09/2021 at 12:16 PM #157071Aggiungi:
1halfposition=0tra la riga 43 e la 44.
Sposta le righe 45-48 (diventate 46-49) a subito dopo la 49 (divenuta 50).
01/10/2021 at 6:09 PM #157221Se è corretto come l’ho riscritto (credo di si) non funziona….. vedo da graph che il Newsl si attiva correttamente ma il sistema vede sempre l’istruzione iniziale “vendi metà posizione al raggiungimento di livellolong*pipsize > chiusuraparziale*pipsize” e quindi una/due barre dopo esce completamente.
In allegato esempio di quanto scrivo.
Entrata 15 contratti a 1.2098
Attivazione corretta di livellolong (verde) e chiusuraparziale (rosso)
Non appena livellolong è maggiore di chiusuraparziale viene venduta metà posizione (corretto) e si attiva il Newsl (blu).
A questo punto però il Ts vende l’ulteriore metà, non rispettando la condizione Newsl
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152if not onmarket thenhalfposition=0endifif miacondizione1 thenIF miacondizione2 thenbuy N shares AT MARKEThalfposition=1SET STOP %LOSS 0.92SET TARGET %PROFIT 0.6elseif miacondizione3 thensellshort N shares at markethalfposition=1SET STOP %LOSS 0.92SET TARGET %PROFIT 0.6endifendifendifchiusuraparziale= (positionprice*10000*0.0045)livellolong= (close-positionprice)*10000livelloshort= (positionprice-close)*10000If longonmarket and livellolong*pipsize > chiusuraparziale*pipsize thensell partial shares at markethalfposition=2endifIf shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize thenexitshort partial shares at markethalfposition=2endifIf Not OnMarket ThenNewSL = 0ElseIf onmarket and partial ThenIf halfposition=2 ThenNewSL = tradepricehalfposition=0EndifEndifEndifIf NewSL > 0 ThenSELL at NewSL StopEXITSHORT at NewSL StopEndif01/11/2021 at 10:29 AM #157288Perché manca AND Not OnMarket alle righe 6 e 12, per cui rieseguetutto il blocco IF…ENDIF quiando le condizioni sono vere, che se sei a mercato. L’avere messo DEFPARAM CumulateOrders = FALSE impeduisce di aprire altre posizioni, ma le righe vengono eseguite comunque, per cui riparte sempre da halfposition=1.
01/11/2021 at 12:33 PM #157301Ho inserito i 2 AND NOT ONMARKET ma non cambia nulla. L’operazione in allegato rimane invariata con la chiusura della seconda metà la barra successiva alla prima metà….
Ma è tecnicamente possibile, per semplificare, inserire un’istruzione:
se onmarket e partial=false allora Set Stop %loss 0.92, se onmarket e partial=true allora Set Stop %Loss=tradeprice?
01/11/2021 at 1:07 PM #157316No, TRADEPRICE è un prezzo, non una differenza.
Occorre il codice completo per verificare bene, indicando anche lo strumento, il timeframe, la data ed ora di apertura di un’operazione errata.
01/11/2021 at 2:29 PM #157337Sono riuscito a risolvere 🙂
1234567891011121314151617181920212223If halfposition=1 thenIf longonmarket and livellolong*pipsize > chiusuraparziale*pipsize thensell partial shares at markethalfposition=2endifIf shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize thenexitshort partial shares at markethalfposition=2endifIf Not OnMarket ThenNewSL = 0ElseIf onmarket and halfposition=2 ThenNewSL = tradepriceEndifEndifIf NewSL > 0 ThenSELL at NewSL StopEXITSHORT at NewSL StopEndifendif -
AuthorPosts
Find exclusive trading pro-tools on