Frazionamento in uscita
Forums › ProRealTime forum Italiano › Supporto ProOrder › Frazionamento in uscita
- This topic has 28 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
Tagged: distance, distanza, exit, frazionamento, minima, minimum, ordini, partial, pendenti, uscite parziali
-
-
07/01/2021 at 10:40 AM #172875
TIMEOPERATE = TIME>075900 AND TIME<180000
Come C1 e C2 ne sto provando alcuni ma puoi mettere ciò che vuoi.
C1= close>ExponentialAverage[50](close) and close>ExponentialAverage[10](close)
C2= close<ExponentialAverage[50](close) and close<ExponentialAverage[10](close)07/01/2021 at 11:37 AM #172876Ah….. adesso mi sono accorto che hai usato TRADEPRICE (scritto anche TRADEPRICE(1)), che è l’ultimo prezzo tradato, che va bene quando apri uno o più contratti TUTTI insieme e li chiudi TUTTI insieme, altrimenti:
- se, come in questo caso, ne apri 3 TUTTI insieme, ma poi li chiudi separatamente, devi salvare il prezzo d’entrata in una variabile (PREZZO in questo caso), perché alla prima chiusura TRADEPRICE prende il prezzo della chiusura e oper fare riferimento a quello di apertura dovresti scrivere TRADEPRICE(2), alla successiva chiusura scaleranno ancora tutti di una posizione ed il prezzo d’apertura sarà contenuto in TRADEPRICE(3), ecc…
- se, invece ne apri più di uno, ma in TEMPI DIVERSI (usando anche DEFPARAM CumulateOrders=True all’inizio) e li chiudi INSIEME o SEPARATAMENTE, dovrai fare riferimento non più a TRADEPRICE, ma a POSITIONPRICE, che è la media dei vari prezzi d’entrata * il numero di lotti per ciascuina entrata.
Utilizza GRAPH e GRAPHONPRICE per analizzare beme le variabili (te li ho aggiunti alla fine del codice):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111TP1=18TP2=12TP3=12SL=15ONCE Distanza = 10TIMEOPERATE = TIME>075900 AND TIME<180000C1= close>ExponentialAverage[50](close) and close>ExponentialAverage[10](close)C2= close<ExponentialAverage[50](close) and close<ExponentialAverage[10](close)//************// LONG *//************IF not longonmarket AND C1 AND TIMEOPERATE THENBUY 3 CONTRACTS AT MARKETSET STOP LOSS SLENDIFIF COUNTOFLONGSHARES =3 THENPrezzo = TradePriceIF (close + Distanza) < Prezzo +TP1*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP1*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFLONGSHARES =2 THENIF (close + Distanza) < Prezzo +TP2*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP2*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP2*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP2*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFLONGSHARES =1 THENIF (close + Distanza) < Prezzo +TP3*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP3*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP3*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP3*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFENDIFIF longonmarket and not C1 thenA=COUNTOFLONGSHARESSELL A CONTRACT AT MARKETENDIFiF LONGONMARKET AND NOT TIMEOPERATE THENA=COUNTOFLONGSHARESSELL A CONTRACT AT MARKETENDIF//************// SHORT *//************IF not SHORTOnmarket and C2 AND TIMEOPERATE THENSELLSHORT 3 CONTRACTS AT MARKETSET STOP LOSS SLENDIFIF COUNTOFSHORTSHARES =3 THENPrezzo = TradePriceIF (close - Distanza) > Prezzo -TP1*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE LIMITELSIF (close + Distanza) < Prezzo -TP1*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFSHORTSHARES =2 THENIF (close - Distanza) > Prezzo -TP2*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP2*POINTSIZE LIMITELSIF (close + Distanza) < Prezzo -TP2*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP2*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFSHORTSHARES =1 THENIF (close - Distanza) > Prezzo -TP3*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP3*POINTSIZE LIMITELSIF (close + Distanza) > Prezzo -TP3*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP3*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFENDIFIF SHORTONMARKET AND NOT C2 THENA=COUNTOFSHORTSHARESEXITSHORT A CONTRACTS AT MARKETENDIFiF SHORTONMARKET AND NOT TIMEOPERATE THENA=COUNTOFSHORTSHARESEXITSHORT A CONTRACTS AT MARKETENDIFgraphonprice Prezzographonprice Prezzo+TP1graphonprice Prezzo+TP2graphonprice Prezzo+TP3graphonprice Prezzo-TP1graphonprice Prezzo-TP2graphonprice Prezzo-TP3graph abs(CountOfPosition) //numero posizioni aperte (positivo se LONG, negativo se SHORT, usando ABS() non fa differenza)graph PositionPerf*close/pipsize //PIPS di guadagno (o perdita, se negativo)1 user thanked author for this post.
07/01/2021 at 12:40 PM #172879Roberto, stasera dopo le 18 tiro giù dal auto trading pro order il codice “vecchio” e metto in pista per domani questo “nuovo” da te suggerito. Non desidero cadere nell’equivoco dell’adulazione, ma confesso nutrire una forma di piacere nel confrontarmi con persone qualificate e preparate come te. Grazie ancora, seguiranno gli aggiornamenti in merito.
1 user thanked author for this post.
07/02/2021 at 9:17 AM #172934Buongiorno, oggi il Dax ha fatto dei movimenti ampi con TF a 5 minuti e con l’ultimo codice messo a disposizione ecco come si comporta.
Esempio di barra delle 9:25
open 15.658,4
min 15655.9
max 15691,4
close 15690,4Condizioni hanno innescato ordine di acquisto di 3 contratti a 15659 alle 9:25
Gli stop loss sono stati caricati regolarmente, ma l’ordine con stop limit continua a non caricarsi per la stessa barra ed in quella successiva che è andata ancora più in alto è rimasto dentro con tutti i 3 contratti. Devo uscire manualmente ed in alcuni casi mi si pianta il robot.
In definitiva ogni volta che entra con 3 contratti, solo in alcune condizioni e solo nella barra successiva riesce a piazzare l’ordine limit.
A supporto, qui sotto allego la barra delle 9:25 e un immagine che mostra di come ogni volta entri con 3 contratti, l’ordine limit non risulta mai in essere; in alcune condizioni, l0rdine limit verrà inserito nelle barre successive in altre condizioni non scatta nessun ordine (limit, stop o at market).
Grazie per l’attenzione.
07/02/2021 at 9:40 AM #172945Va tutto bene per quel che mi risulta.
E’ entrato alle 9:30, ha piazzato gli ordini pendenti ma non ha raggiunto nessun TP per cui è uscito in SL alle 9:45.
07/02/2021 at 10:47 AM #172955Ma così non va bene. La logica sarebbe questa:
Entra ad esempio a 16500.
Piazza immediatamente lo stop loss per ogni contratto (questo lo fa)
Piazza immediatamente la vendita di un contratto al raggiungimento del primo target. (questo non lo fa)Cosa sta accadendo ora?
Piazza immediatamente lo stop loss per ogni contratto (questo lo fa)
NON piazza immediatamente la vendita di un contratto al raggiungimento del primo target.
Nella barra successiva ed in determinate condizioni piazza un ordine relativo primo contratto in uscita e quando non riesce fallisce la logica del robot.Grazie per l’attenzione
07/02/2021 at 11:11 AM #172959“Piazza immediatamente la vendita di un contratto al raggiungimento del primo target. (questo non lo fa)“, perché a te non lo fa? A me lo fa.
Se per piazzare l’ordine pendente intendi piazzarlo immediatamente quando entra a mercato devi dirglielo appositamente. Tu gli hai chiesto di metterli solo quando sono già a mercato determinate posizioni (3, 2 o 1) e questo NON può saperlo subito perché l’ordine potrebbe essere respinto o esguito parzialmente, ecc… quindi ha bisogno di una barra per sapere se (e con quante) posizioni è a mercato.
Una soluzione può essere quella di usare più TF (se cerchi la parola MTF, Multi o Multiple Time Frame, troverai un sacco di discussioni ed esempi, oltre a blog e articoli).
Un’altra soluzione è quella di piazzare immediatamente gli ordini per tutti e 3 i casi (solo la prima volta, poi va bene così com’è). In questo modo:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117TP1=18TP2=12TP3=12SL=15ONCE Distanza = 10TIMEOPERATE = TIME>075900 AND TIME<180000C1= close>ExponentialAverage[50](close) and close>ExponentialAverage[10](close)C2= close<ExponentialAverage[50](close) and close<ExponentialAverage[10](close)//************// LONG *//************IF not longonmarket AND C1 AND TIMEOPERATE THENBUY 3 CONTRACTS AT MARKETSET STOP LOSS SLPrezzo = closeSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE LIMITSELL 1 CONTRACTS AT Prezzo +TP2*POINTSIZE LIMITSELL 1 CONTRACTS AT Prezzo +TP3*POINTSIZE LIMITENDIFIF COUNTOFLONGSHARES =3 THENPrezzo = TradePriceIF (close + Distanza) < Prezzo +TP1*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP1*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFLONGSHARES =2 THENIF (close + Distanza) < Prezzo +TP2*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP2*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP2*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP2*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFLONGSHARES =1 THENIF (close + Distanza) < Prezzo +TP3*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP3*POINTSIZE LIMITELSIF (close - Distanza) > Prezzo +TP3*POINTSIZE THENSELL 1 CONTRACTS AT Prezzo +TP3*POINTSIZE STOPELSESELL 1 CONTRACTS AT MARKETENDIFENDIFIF longonmarket and not C1 thenSELL AT MARKETENDIFiF LONGONMARKET AND NOT TIMEOPERATE THENSELL AT MARKETENDIF//************// SHORT *//************IF not SHORTOnmarket and C2 AND TIMEOPERATE THENSELLSHORT 3 CONTRACTS AT MARKETSET STOP LOSS SLPrezzo = closeEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE LIMITEXITSHORT 1 CONTRACTS AT Prezzo -TP2*POINTSIZE LIMITEXITSHORT 1 CONTRACTS AT Prezzo -TP3*POINTSIZE LIMITENDIFIF COUNTOFSHORTSHARES =3 THENPrezzo = TradePriceIF (close - Distanza) > Prezzo -TP1*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE LIMITELSIF (close + Distanza) < Prezzo -TP1*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFSHORTSHARES =2 THENIF (close - Distanza) > Prezzo -TP2*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP2*POINTSIZE LIMITELSIF (close + Distanza) < Prezzo -TP2*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP2*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFELSIF COUNTOFSHORTSHARES =1 THENIF (close - Distanza) > Prezzo -TP3*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP3*POINTSIZE LIMITELSIF (close + Distanza) > Prezzo -TP3*POINTSIZE THENEXITSHORT 1 CONTRACTS AT Prezzo -TP3*POINTSIZE STOPELSEEXITSHORT 1 CONTRACTS AT MARKETENDIFENDIFIF SHORTONMARKET AND NOT C2 THENA=COUNTOFSHORTSHARESEXITSHORT A CONTRACTS AT MARKETENDIFiF SHORTONMARKET AND NOT TIMEOPERATE THENA=COUNTOFSHORTSHARESEXITSHORT A CONTRACTS AT MARKETENDIFgraphonprice Prezzographonprice Prezzo+TP1graphonprice Prezzo+TP2graphonprice Prezzo+TP3graphonprice Prezzo-TP1graphonprice Prezzo-TP2graphonprice Prezzo-TP3graph abs(CountOfPosition) //numero posizioni aperte (positivo se LONG, negativo se SHORT, usando ABS() non fa differenza)graph PositionPerf*close/pipsize //PIPS di guadagno (o perdita, se negativo)come vedi ho inserito 3 ordini pendenti, sia dopo BUY che dopo SELLSHORT. Questi li esegue solo la prima volta, poi usa gli altri. Ho dovuto usare CLOSE per il prezzo, in quanto alla chiusura della barra non si sa quale sarà il prezzo d’ingresso. Quindi alla prima barra successiva, se c’è stato un gap o slippage, PREZZO cambierà leggermente, quindi anche i livelli di un’eventuale uscita.
Uno svantaggio di questa soluzione è che, in caso di uno spike, esce con 1 posizione appena il prezzo più vicino viene raggiunto, mentre tu vorresti che la prima uscita venisse fatta al livello più alto, puoi provare ad eliminare le righe (solo per la prima barra, nelle righe dopo subito successive a BUY e SELLSHORT) relative a TP2 e TP3, tanto restano per le barre successive alla prima con il codice già esistente in precedenza.
Ho eliminato la A per le uscite, in quanto per uscire con tutte le restanti posizioni è sufficiente NON indicare il numero di contratti.1 user thanked author for this post.
07/02/2021 at 11:21 AM #172960Lo metto in onda subito. Bisogna capire se la piattaforma IG riesce ad accumulare 3 ordini limit alla volta. Avevo provato anch’io quasi la stessa cosa, infatti non avevo messo Prezzo=close 🙁
Seguiranno esiti. Grazie
07/02/2021 at 11:40 AM #172967Si, io ne ho messi anche 20, non ci sono problemi (almeno sul backtest, in reale non ne ho mai usati più di 2-3).
07/02/2021 at 12:33 PM #172969Nel dubbio ecco ciò che mi piacerebbe accadere:
Compra a 1650.
Se raggiunto 1668 esce col primo e il secondo sta pronto ad uscire a 1680 ed il terzo sta pronto ad uscire a 1692. (magari nella stessa barra nel caso di uno spike con il terzo se ci arriva)
Se raggiunto il secondo ed uscito con 1680 sta pronto ad uscire con 1692 (magari nella stessa barra nel caso di uno spike).Scusa in anticipo se non avevo specificato.
07/02/2021 at 1:42 PM #172976Tu gli ordini li hai messi all’inverso.
La prima uscita deve farla a TP1, poi a TP2 ed infine a TP3.
07/02/2021 at 2:46 PM #172981Al momento pare parzialmente risolta così in caso di spyke:
Ho messo solo le due parti al momento modificate.
Penso di dargliela su… nel senso che spaccherò il codice in 3 codici distinti, ognuno entrerà con un take profit diverso e buonanotte…. Avesso funzionato avrei messo altre condizioni per impedire di mangiare il profitto realizzato da primo o secondo contratto.Nel frattempo sempre grazie.
1234567891011121314151617IF not longonmarket AND C1 AND TIMEOPERATE THENBUY 3 CONTRACTS AT MARKETSET STOP LOSS SLPrezzo = closeSELL 1 CONTRACTS AT Prezzo +TP1*POINTSIZE LIMITSELL 1 CONTRACTS AT Prezzo +TP1+TP2*POINTSIZE LIMITSELL 1 CONTRACTS AT Prezzo +TP1+TP2+TP3*POINTSIZE LIMITENDIFIF not SHORTOnmarket and C2 AND TIMEOPERATE THENSELLSHORT 3 CONTRACTS AT MARKETSET STOP LOSS SLPrezzo = closeEXITSHORT 1 CONTRACTS AT Prezzo -TP1*POINTSIZE LIMITEXITSHORT 1 CONTRACTS AT Prezzo -(TP1+TP2)*POINTSIZE LIMITEXITSHORT 1 CONTRACTS AT Prezzo -(TP1+TP2+TP3)*POINTSIZE LIMITENDIF07/02/2021 at 3:09 PM #172983Anche perchè il robot si interrompe di continuo ora. Va proprio ripensata la logica a questo punto.
07/02/2021 at 4:30 PM #172996Evidentemente si.
Non può non funzionare, se la logica è corretta.
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on