Strategia con più entrate nella stessa direzione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Strategia con più entrate nella stessa direzione
- This topic has 26 replies, 2 voices, and was last updated 3 years ago by MauroPro.
-
-
01/12/2021 at 11:40 AM #157500
Buongiorno, volevo chiedere alcune cose:
1) E’ corretto scrivere, nel modo sotto riportato, le condizioni di entrata di una strategia che va a mercato con due diverse tipologie di segnali di acquisto e di vendita?
Esempio: cLong1 – cLong2 e cShort1 – cShort2, in modo da:
a) avere a mercato una sola tipologia di long o short alla volta (se entra cLong1 non deve entrare cLong 2 e viceversa, se entra cShort 1 non deve entrare cShort 2 e viceversa)
b) far si che sia possibile uno stop and reverse solo tra cLong1 e cShort1
12345678910111213DEFPARAM CumulateOrders=FalseIF cLong or (cLong2 and not onMarket) THENBUY 1 CONTRACT AT MARKETENDIFIf LongOnMarket AND … THENSELL AT MARKETENDIFIF cShort or (cShort2 and not onMarket) THENSELLSHORT 1 CONTRACT AT MARKETENDIFIF ShortOnMarket AND c..THENEXITSHORT AT MARKETENDIF2) E’ possibile marcare nel grafico se il Ts entra con cLong1 o cLong2? (ossia mettere una semplice scritta-etichetta accanto alle freccie di acquisto-vendita)
3) E’ possibile in qualche modo marcare con un segno qualunque tutti punti in cui un Ts entra a mercato anche se è già entrato?
Mi spiego meglio: Prt indica con una freccia un entrata long. Se prima che il trade sia chiuso il Ts sarebbe entrato altre volte, ma non entra in quanto già a mercato, è possibile visualizzare queste altre entrate potenziali in modo da analizzare in modo approfondito i segnali a livello visivo (oltre che statistico con il backtesting)?
Grazie
01/12/2021 at 11:45 AM #157503Per favore usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri.
Grazie 🙂
01/12/2021 at 12:00 PM #1575091 Si, quante condizioni desideri
1a Si, basta che metti DEFPARAM CumulateOrders = TRUE all’inizio ed ogni tentativo d’entrata successivo al primo verrà ignorato
1b Si, basta che non usi la condizione OnMarket e se esegui BUY chiude prima ogni Short esistente (e viceversa per SELLSHORT), anche perché non possono esserci posizioni contrapposte aperte (hedging)
2 No, solo gli indicatori supportano comandi grafici
3 (vedi risposta sopra)
Nel backtesting puoi usare GRAPH per vedere quello che vuoi, devi cambiare un pò la logica d’entrata per fare in modo di vedere quando la condizione è vera ma non viene eseguita perché già a mercato:
1234567891011121314// modo tradizionale (non vedi se la condizione è vera, a meno che non entri)IF MieCondizioniLong AND Not OnMarket THENBUY 1 Contract at MarketENDIF//------------------------------------------------------------------------// modo per vedere se la condizione è vera anche quando non entrax = 0IF MieCondizioniLong THENx = 1IF Not OnMarket THENBUY 1 Contract at MarketENDIFENDIFGRAPH x01/12/2021 at 12:20 PM #157517Non ho capito bene la risposte 1b:
1b) se non metto onMarket come fa il Ts a distinguere cLong1 o cLong2? non sarebbe in questo caso abilitato lo stop and reverse anche da cShort1 a cLong2? (cosa che invece deve essere possibile solo da cShort1 a cLong1 e viceversa)
Per semplicità mi potresti riscrivere soltanto le due condizioni di entrata sopra riportate, dato per scontato che uso DEFPARAM CumulateOrders = TRUE (anche se vorrei precisare che il Ts usa 1 contratto alla volta e non posizioni cumulate)
Grazie
01/12/2021 at 12:40 PM #157522Pert distinguerle puoi mettere IF NOT LongOnMarket (per i LONG) e IF NOT ShortOnMarket (per gli SHORT).
Cosa devo scriverti, quali condizioni?
01/13/2021 at 3:46 PM #157666Mi puoi spiegare in questo codice cosa cambia da Defparam cumulate Orders = false a Defparam cumulate Orders = true (vorrei eseguire una operazione alla volta, se entra cLong, non deve entrare fino alla chiusura di questo trade (in take profit, stop loss, trailing) né cLong2, né cShort2, ma soltanto se capita uno stop and reverse cShort (opposto chiaramente per lo short: se entra cShort, si può uscire, a parte i criteri di gestione, solo con cLong). Grazie
1234567891011121314151617// Condizioni per entrare su posizioni long ENTRATE LONGIF cLong or (cLong2 and not OnMarket) THENBUY 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND cShort2 AND close <bLow THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni short ENTRATE SHORTIF cShort or (cShort2 and not OnMarket) THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket AND cLong2 and close>bHigh THENEXITSHORT AT MARKETENDIF01/13/2021 at 4:15 PM #157668Defparam cumulate Orders = false impedisce di accumulare posizioni nella stessa direzione, mentre Defparam cumulate Orders = true permette di accumulare posizioni nella stessa direzione.
Il tuo esempio sopra NON fa Stop & Reverse, questo si (solo quando si verificano cLong2 o cShort2):
1234567891011121314151617// Condizioni per entrare su posizioni long ENTRATE LONGIF cLong or (cLong2 and not LongOnMarket) THENBUY 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND cShort2 AND close <bLow THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni short ENTRATE SHORTIF cShort or (cShort2 and not ShortOnMarket) THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket AND cLong2 and close>bHigh THENEXITSHORT AT MARKETENDIFDEFPARAM CumulateOrders = FALSE impedisce, da solo, di NON accumulare posizioni nella stessa direzione, quindi non ci sarebbe bisogno di aggiungere la condizione AND Not OnMarket,però è meglio metterla perché, se all’intendo dell’IF…ENDIF non c’è solo BUY o SELLSHORT, ma cnche altre istruzioni, ad esempio il calcolo dello SL, queste verrebbero comunque eseguiote anche se nessuna posizione viene aggiunta. Per essere certi che IF…ENDIF non venga eseguito occorre quindi usare AND Not OnMarket.
L’uso di AND Not OnMarket, però t’impedisce di fare lo Stop & Reverse. Lo Stop & Reverse si fa semplicemente aprendo un’operazione contraria. Quindi, sostituendo AND Not OnMarket, con AND Not LongOnMarket per i LONG e AND Not ShortOnMarket per gli SHORT, si fa in modo di eseguire l’IF…ENDIF solo per fare lo Stop & Reverse e non per accumulare. In questo caso usare, all’inizio, DEFPARAM CumulateOrders = FALSE, oppure DEFPARAM CumulateOrders = TRUE oppure ometterlo del tutto, è indifferente, in quanto con lo Stop & Reverse enrtra solo se in posizione contraria, quindi rimane aperta sempre e solo una posizione.
01/13/2021 at 4:20 PM #157669Ti stavo per scrivere questom mentre mi hai risposto:
Finora ho notato questo: i risultati sono diversi da defparam cumulate orders true o false, inoltre mi prende lo stop and reverse (al di là di defparam), soltanto se alle righe 2 ed 11, scrivo al posto di onMarket, rispettivamente longOnMarket e shortOnMarket (ma anche qui con risultati diversi a seconda se defparam cumulate orders è true o false). Quindi userò longOnMarket e shortOnmarket in attesa del chiarimento su true o false in cumulate orders.
Aggiungo dopo aver letto la tua risposta: perchè allora ho risultati diversi (utilizzando alle righe 2 ed 11 longOnmarket e shortOnMarket risualtati diversi a seconda defparam, mi puoi dare una spiegazione? GRAZIE
01/13/2021 at 4:36 PM #157673Utilizzando per avere necessariamente
1234567891011121314151617// Condizioni per entrare su posizioni long ENTRATE LONGIF cLong or (cLong2 and not longOnMarket) THENBUY 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND cShort2 AND close <bLow THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni short ENTRATE SHORTIF cShort or (cShort2 and not shortOnMarket) THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket AND cLong2 and close>bHigh THENEXITSHORT AT MARKETENDIFlo stop and reverse la formula riportata, in attesa della tua risposta sul perchè ho comunque risultati differenti con defparam cumulate orders false o true, ti posso dire (dalle prove fatte) che cancellare completamente la riga con defparam porta agli stessi risultati di avere defparam = TRUE
01/13/2021 at 6:34 PM #157691I risultati sono diversi con TRUE e FALSE perché se è TRUE le condizioni cLong e cShort consentono di accumulare posizioni, non essendoci la verifica se già a mercato.
01/13/2021 at 7:51 PM #157694Quindi mi sembra di capire che devo usare per forza, correggimi se sbaglio, defparam = False, dato che NON voglio accumulare posizioni. In ogni caso mi potresti anche spiegare questo comportamento del TS (uguale nel caso di true o false), ossia perchè ci sono 3 posizioni e poi 1 ?
01/13/2021 at 9:12 PM #157705La prima sembrerebbe uno Stop & Reverse, cioè viene chiuso lo Short si apre un Long che però viene chiuso sulla stessa candela, il secondo è un’entrata Long.
Però dovrei verificarlo bene con il codice usato e sullo stesso strumento e TF.
01/13/2021 at 9:26 PM #157708Grazie intanto per l’interesse. Controllerò tutto questo, tuttavia non mi sembra che possa accadere tutto questo. In ogni caso devo prima risolvere il problema di base di come, usando defparam = false (unica soluzione dato che non voglio cumulare contratti) non riesco ad usare lo stop and reverse solo sulla condizione cLong e cShort. Da questo punto di vista devo dire che PRT è veramente macchinoso! Non posso usare alla riga 2 ed 11 onMarket perchè non fa stop and reverse, come intuivo longOnmarket e shortOnMarket non funzionano…. MI SEMBTA IMPOSSIBILE che con un software come prt non si riesca a fare una cosa così banale che faccio senza problemi su un altro software (di cui non ha senso fare il nome), ma che sulla carta “dovrebbe” essere peggio. Se hai delle idee ti ringrazio.
01/13/2021 at 10:42 PM #157724Questo ti fa Stop & Reverse solo su cShort e cLong:
12345678910111213141516// Condizioni per entrare su posizioni long ENTRATE LONGIF (cLong and not LongOnMarket) or (cLong2 and not OnMarket) THENBUY 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND cShort2 AND close <bLow THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni short ENTRATE SHORTIF (cShort and not ShortOnMarket) or (cShort2 and not OnMarket) THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket AND cLong2 and close>bHigh THENEXITSHORT AT MARK01/13/2021 at 11:11 PM #157728 -
AuthorPosts
Find exclusive trading pro-tools on