orari di apertura posizioni errati
Forums › ProRealTime forum Italiano › Supporto ProOrder › orari di apertura posizioni errati
- This topic has 15 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
12/19/2020 at 5:42 PM #154437
salve, qualcuno mi saprebbe dire perchè il prorealtime mi apre le posizionio in orari totalmente differenti da quelli da me indicati? grazie a tutti per il supporto
il codice è il seguente
bias12345678910111213141516171819202122232425262728defparam cumulateorders=falsetime1=120000time2=010000time3=160000time4=070000daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 OR OpenDayOfWeek = 1 OR OpenDayOfWeek = 2IF NOT LongOnMarket and time1 AND dayofweek=3 or dayofweek=4 or dayofweek=5 THENBUY 1 CONTRACT AT MARKETENDIFIF longonmarket and time2 THENSELL 1 CONTRACT AT MARKETENDIFIF not longonmarket and time2 and dayofweek=5 THENSELL 1 CONTRACT AT MARKEtENDIF//ribassistaif not shortonmarket and dayofweek=1 or dayofweek=5 and time2 thensellshort 1 CONTRACT at marketendifif shortonmarket and dayofweek=1 or dayofweek=5 and time1 thenexitshort at marketendifif not shortonmarket and dayofweek=2 or dayofweek=4 and time4 thensellshort 1 CONTRACT at marketendifif shortonmarket and dayofweek=2 or dayofweek=4 and time4 thenexitshort at marketendif12/19/2020 at 5:44 PM #154438la stringa daysforbiddenentry andava inibita, ho sbagliato a copiare, non tenetene conto
12/19/2020 at 7:08 PM #154450Perché alle righe 2-5 assegni un valore semplicemente, per cui sono SEMPRE vere.
Trasformale in:
1234time1 = time = 120000 //OpenTimetime2 = time = 010000 //OpenTimetime3 = time = 160000 //OpenTimetime4 = time = 070000 //OpenTime12/21/2020 at 8:51 PM #154774ciao, intanto grazie per la delucidazione tuttavia nonostante abbia fatto la modifica descritta il prt continua ad aprire e chiudere posizioni quando vuole, allego schermata posizioni chiuse su crude oil ad 1 ora
12/21/2020 at 8:55 PM #154776il programma utilizzato è il seguente
bias123456789101112131415161718192021222324252627defparam cumulateorders=falsetime1=time=120000time2=time=010000time3=time=160000time4=time=070000IF NOT LongOnMarket and time1 AND dayofweek=3 or dayofweek=4 or dayofweek=5 THENBUY 1 CONTRACT AT MARKETENDIFIF longonmarket and time2 THENSELL 1 CONTRACT AT MARKETENDIFIF not longonmarket and time2 and dayofweek=5 THENSELL 1 CONTRACT AT MARKEtENDIF//ribassistaif not shortonmarket and dayofweek=1 or dayofweek=5 and time2 thensellshort 1 CONTRACT at marketendifif shortonmarket and dayofweek=1 or dayofweek=5 and time1 thenexitshort at marketendifif not shortonmarket and dayofweek=2 or dayofweek=4 and time4 thensellshort 1 CONTRACT at marketendifif shortonmarket and dayofweek=2 or dayofweek=4 and time4 thenexitshort at marketendif12/22/2020 at 3:29 AM #154812C’era anche un errore nelle precedenze degli operatori logici; è sempre meglio mettere le parentesi per indicare quale deve essere la precedenza tra gli operatori, specialmente quando ce ne sono vari su una stessa riga:
123456789101112131415161718192021222324252627defparam cumulateorders=falsetime1=time=120000time2=time=010000time3=time=160000time4=time=070000IF (NOT LongOnMarket) and time1 AND (dayofweek=3 or dayofweek=4 or dayofweek=5) THENBUY 1 CONTRACT AT MARKETENDIFIF longonmarket and time2 THENSELL 1 CONTRACT AT MARKETENDIFIF (not longonmarket) and time2 and dayofweek=5 THENSELL 1 CONTRACT AT MARKEtENDIF//ribassistaif (not shortonmarket) and (dayofweek=1 or dayofweek=5) and time2 thensellshort 1 CONTRACT at marketendifif shortonmarket and (dayofweek=1 or dayofweek=5) and time1 thenexitshort at marketendifif (not shortonmarket) and (dayofweek=2 or dayofweek=4) and time4 thensellshort 1 CONTRACT at marketendifif shortonmarket and (dayofweek=2 or dayofweek=4) and time4 thenexitshort at marketendif12/22/2020 at 8:44 AM #154845ok, quindi la priorità è la seguente operazioni fuori dalla parentesi
operazioni dentro
e se volessi aggiungere anche una limitazione dell’operatività legata ai mesi? scrivo dentro la parentesi dei giorni oppure a parte? grazie
12/22/2020 at 9:30 AM #154850No, è l’opposto, come in qualunque espressione.
Le parentesi servono per cambiare l’ordine di precedenza, assegnandogli la priorità.
In 3 + 1 * 4 la moltiplicazione ha la precedenza, se vuoi darla all’addizione devi metterla tra parentesi (3 + 1) * 4, nel primo caso il risultato è 7, nel secondo è 16.
12/22/2020 at 9:33 AM #154853Per i mesi, se non devi legarli ad altro mettili al di fuori. Meglio se li metti all’interno di proprie parentesi.
12/22/2020 at 11:15 AM #154877devo comunque aggiungerli anche ai giorni della settimana, quindi suppongo che if (not longonmarket) and time1 and (dayofweek=3 or dayofweek=5) and (months=1 or months=6) then………… ho scritto months ma in realtà non so il comando giusto, ho cercato in giro ma trovo sempre riferimento ai giorni
12/22/2020 at 2:05 PM #154892Qui puoi trovare tutte le istruzioni e costanti https://www.prorealcode.com/prorealtime-documentation/
12/23/2020 at 10:13 PM #155051salve, dopo aver modificato (spero correttamente il programma) funziona ma comunque con qualche errore
mi spiego meglio
il giorno 04/10/2016 entra short ed esce il giorno 5/10/2016 alle 16, questo orario è usato solo per le operazioni long e comunque solo per il venerdi…dayofweek=5, come mai questo errore? secondo me ce ne sono anche altri , cosa è scritto male? posto sia il codice che la lista di posizioni. grazie
1234567891011121314151617181920212223242526272829defparam cumulateorders=falsetime1=time=120000time2=time=010000time3=time=160000time4=time=070000//daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 OR OpenDayOfWeek = 1 OR OpenDayOfWeek = 2IF (NOT LongOnMarket) and (month>=1 and month<=4) and time1 AND (dayofweek=3 or dayofweek=4 or dayofweek=5) THENBUY 1 CONTRACT AT MARKETENDIFIF longonmarket and time2 THENSELL 1 CONTRACT AT MARKETENDIFIF longonmarket and time3 and dayofweek=5 THENSELL 1 CONTRACT AT MARKEtENDIF//ribassistaif (not shortonmarket) and (month>=7 and month<=12) and (dayofweek=1 or dayofweek=5) and time2 thensellshort 1 CONTRACT at marketendifif shortonmarket and (dayofweek=1 or dayofweek=5) and time1 thenexitshort at marketendifif (not shortonmarket) and (month>=10 and month<=11) and (dayofweek=2 or dayofweek=4) and time4 thensellshort 1 CONTRACT at marketendifif shortonmarket and (dayofweek=2 or dayofweek=4) and time4 thenexitshort at marketendifset stop loss 12712/23/2020 at 10:18 PM #155052ecco uno degli errori(presunti)
12/24/2020 at 1:39 AM #155071Per fare una prova occorre sapere su quale strumento e TF l’hai usato.
Ad ogni modo aggiungi queste righe alla fine del codice e guarda nella finestra delle variabili, alla fine del backtest, quali valori hanno candela per candela che ti risulti errata:
123456graph time1graph time2graph time3graph time4graph dayofweekgraph month12/28/2020 at 10:03 PM #155492grazie per le info, una delucidazione: come si traduce questa stringa(tradestation) per calcolare lo stop loss con il prorealtime? grazie
if mp=0 then value1=c*bigpointvalue*0.03;
setstoploss(value1);
-
AuthorPosts
Find exclusive trading pro-tools on