Entrare ed uscire dal mercato ad una data ora
Forums › ProRealTime forum Italiano › Supporto ProOrder › Entrare ed uscire dal mercato ad una data ora
- This topic has 12 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
-
-
08/12/2019 at 7:04 AM #104582
Buongiorno
vorrei scrivere un sistema che mi permetta di entrare long ad esempio alle ore 10:00 ed uscire alle 16:00 e contemporaneamente entrare short alle 16:00 ed uscire alle 22:00.
08/12/2019 at 10:57 AM #104600Eccolo:
123456789101112131415161718DEFPARAM FlatAfter 220000IF time = 100000 THENIF MieCondizioniLong THENBUY 1 CONTRACT AT MARKETSET TARGET pPROFIT ...SET STOP pLOSS ...ENDIFENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFIF MieCondizioniShort THENSELLSHORT 1 CONTRACT AT MARKETSET TARGET pPROFIT ...SET STOP pLOSS ...ENDIFENDIFIndica te il valore del TP e SL (in Pips) mettendolo al posto dei puntini.
08/14/2019 at 6:15 AM #104720Grazie come sempre Roberto,
ho provato ad inserire il codice senza ulteriori condizioni e senza stop e limiti.
Tuttavia mi da errore di sintassi
12345678910111213DEFPARAM FlatAfter = 220000IF time = 100000 THENBUY 1 CONTRACT AT MARKETENDIFENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFIF time = 160000 THENSELLSHORT 1 CONTRACT AT MARKETENDIFENDIF08/14/2019 at 8:59 AM #104730Non vedo la segnalazione di errore.
Allega la foto.
08/15/2019 at 8:31 AM #104767Risolto eliminando l’ ENDIF alla riga 5.
Ora però vorrei fare un passo avanti: se volessi far funzionare il sistema senza l’interruzione delle 22:00 ovvero in ciclo continuo acquistare alle 10 , chiudere la posizione alle 16 e al contempo alle 16 andare short per poi l’indomani alle 10 chiudere lo short e riaprire il long?
Ho provato come da codice allegato ma non va.
Buon ferragosto a tutti
123456789101112131415IF time = 100000 THENBUY 1 CONTRACT AT MARKETENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFIF time = 160000 THENSELLSHORT 1 CONTRACT AT MARKETENDIFIF time = 100000 THENIF ShortOnMarket THENBUY AT MARKETENDIF08/15/2019 at 8:52 AM #104774Nel tuo codice postato mancano delle righe, dovrebbero essere 2 chiusure di IF, quindi ENDIF, infatti segnala errore su righe mancanti.
Se aggiungi le due righe funziona perfettamente!
08/19/2019 at 12:56 PM #105066Ok inserendo altre 2 endif finali funziona ,
ora mi chiedevo come faccio a sapere quante volte devo inserire endif per chiudere if .
Dato che dalla riga 5 alla 8 ho due volte if ed un solo endif, perchè dalla riga 12 in poi ho sempre due if e devo inserire tre endif,
non capisco il criterio, dove è spiegato ? Sul manuale non ho trovato niente che mi da questa informazione.
Inoltre ho provato a modificare il sistema in maniera che operasse soltanto in due giorni ben precisi sia long che short.
Per il long è ok mentre per lo short anzichè chiudermi la posizione all’indomani alle 10 me la chiude dopo 7 giorni,
come posso ovviare a questo inconveniente?
1234567891011121314151617181920//ts corretto da Robertoa = DayOfWeek=2IF time = 100000 and a THENBUY 1 CONTRACT AT MARKETENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFb = DayOfWeek=2IF time = 160000 and b THENSELLSHORT 1 CONTRACT AT MARKETENDIFIF time = 100000 THENIF ShortOnMarket THENBUY AT MARKETENDIFendifendif08/19/2019 at 1:36 PM #105069Ti sei risposto da solo.
Se hai due IF ed un solo ENDIF, è chiaro che prima della fine dovrai pareggiare il conto e mettere un ENDIF in più.
È come per le parentesi, IF è una parentesi aperta, ne serve una a chiusura e questa è ENDIF.
Ogni IF deve avere un ENDIF a chiusura.
Sul manuale PRT non c’è perché non è una cosa specifica di PRT, ma di ogni linguaggio di programmazione e di logica.
08/19/2019 at 1:42 PM #105071Togli ENDIF dalla riga 20 e mettilo dove avrebbe dovuto essere, tra la 10 e la 11.
08/20/2019 at 8:28 AM #105102Ok grazie Roberto,
ho afferrato il concetto relativo al linguaggio.
Ora però ho riscontrato un altro problema.
Ho inserito la condizione che il sistema deve operare solo il martedi,
in effetti per le posizioni short nessun problema.
Mentre per le posizioni long ne apre una regolarmente il martedi alle 10 e la chiude alle 16 ma…..
….ne riapre un’altra (long) il giorno dopo mercoledi sempre alle 10 per poi chiuderla alle 16.
Non riesco a capire questa seconda apertura non richiesta,
dove sbaglio questa volta ?
1234567891011121314151617181920//ts corretto da Robertoa = DayOfWeek=2IF time = 100000 and a THENBUY 1 CONTRACT AT MARKETENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFendifb = DayOfWeek=2IF time = 160000 and b THENSELLSHORT 1 CONTRACT AT MARKETENDIFIF time = 100000 THENIF ShortOnMarket THENBUY AT MARKETENDIFendif08/20/2019 at 10:10 AM #105108Quando alleghi le foto allegale del grafico, in modo che si veda:
- strumento
- time frame
- data ed ora della candela interessata
dopodiché nel post indichi qual’è la candela in questione).
Il problema è che alla riga 18 usi BUY per uscire da uno Short, mentre l’istruzione corretta è EXITSHORT (non me n’ero accorto fin dal primo post).
- BUY entra long (SELL esce da long)
- SELLSHORT entra short (EXITSHORT esce da short)
Per fare uno Stop & Reverse (nel caso t’interessasse):
- quando sei già Long basta che esegui SELLSHORT e ti chiude il long per aprire lo short
- quando sei già Short basta che esegui BUY e ti chiude lo short per aprire il long
08/24/2019 at 10:29 AM #105428ok grazie Roberto ora è ok.
Ora vorrei fare un ulteriore passo avanti e chiedere al sistema di entrare a mercato long solo se la media a 20 giorni è al rialzo
e short solo se la media a 20 giorni è al ribasso con tf settato ad 1 h.
Ho inserito alla linea 4 : c = Average[20](close)> Average[20](close[1])
credo però che cosi mi calcoli la media a 20 ore e non a 20 giorni come io vorrei.
Che ne pensi?
12345678910111213141516171819202122//ts corretto da Roberto// con tf 1h come faccio ad ottenere nella linea 4 una media giornaliera e non oraria?a = DayOfWeek=2c = Average[20](close)> Average[20](close[1])IF time = 100000 and a and c THENBUY 1 CONTRACT AT MARKETENDIFIF time = 160000 THENIF LongOnMarket THENSELL AT MARKETENDIFendifb = DayOfWeek=2IF time = 160000 and b THENSELLSHORT 1 CONTRACT AT MARKETENDIFIF time = 100000 THENIF ShortOnMarket THENexitshort AT MARKETENDIFendif08/24/2019 at 10:45 AM #105429Certo che la calcola a 20 ore, sei sul TF a 1 ora!
Devi usare il supporto MTF (Multiple Time Frame) per calcolarla sun un altro TF, in questo caso Daily.
Devi fare queste cose (nell’ordine indicato):
- invertire innanzitutto la riga 3 con la 4 (la 3 deve essere la prima riga)
- ti sei dimenticato di mettere la parte Short, quindi subito dopo la riga 3 (dopo il precedente spostamento) inseriscine una con d=…… e la condizione inversa ed aggiungi d alla riga 15 (che dovrebbe essere diventata 16 nel frattempo)
- come prima riga del programma, dopo i commenti, inserisci TIMEFRAME(Daily,UpdateOnClose) oppure TIMEFRAME(Daily,Default) secondo le tue necessità, studiati i video e istruzioni per capire la differenza tra Default e UpdateOnClose, comunque in bereve UpDateOnClose aggiornerà c solo una volta al giorno, quando chiude la barra giornaliera, quindi c resterà invariata per 24 ore, mentre Default aggiornerà c ogni ora o qualunque altro orario tu scelga
- prima della riga dove c’è a = DayOfWeek=2 (che avrà sicuramente cambiato numero), inserisci TIMEFRAME(Default).
Adesso lancia la strategia dal TF ad 1 ora o 2 ore o da dove vuoi (purché DAILY ne sia un multiplo, non puoi lanciarla da un grafico a 5 ore perché DAILY non è un multiplo di 5) e vedrai che funzionerà.
-
AuthorPosts
Find exclusive trading pro-tools on