Incrocio medie mobili in sequenza
Forums › ProRealTime forum Italiano › Supporto ProOrder › Incrocio medie mobili in sequenza
- This topic has 4 replies, 2 voices, and was last updated 4 years ago by frapasqua.
Tagged: Incrocio, incrocio medie, Medie
-
-
03/05/2020 at 1:14 PM #121244
Ciao a tutti
sono nuovissimo alla programmazione e vorrei capire come far eseguire un comando al verificarsi di due condizioni in sequenza temporale, cioè due condizioni che non si verifichino nello stesso momento ma una dopo l’altra.
In particolare, aprire una posizione long soltanto se si verificano in sequenza tutte e due le condizioni seguenti:
1) la media mobile MM1 incrocia al rialzo la media mobile MM2 e in seguito
2) la MM3 incrocia al rialzo la MM4.
Ovviamente il comando non deve essere eseguito all’incrocio tra MM1 e MM2, ma soltanto se successivamente si verifica anche l’incrocio tra MM3 e MM4.
Il problema è che non si può sapere se e quando, dopo il primo incrocio, si verificherà anche l’altro, per cui non è possibile inserire limiti temporali o di prezzo o numero di barre.
Ho provato con la sequenza IF/THEN/IF/ ma non funziona, probabilmente perché assume che le due condizioni debbano verificarsi contemporaneamente – il che ovviamente non può mai accadere.
Riporto comunque quello che ho scritto e ringrazio chiunque vorrà darmi una mano.
Lo strumento è il Mini S&P500 Only0320, il TF 1 min. su un intervallo di 5 giorni.
<pre class=”lang:probuilder decode:true” title=”Cross M1/M2 poi M3/M4″>defparam cumulateorders=falseM1=average [20](close)
M2=average [50](close)
M3=average [30](close)
M4=average [60](close)if M1 crosses over M2 then
if M3 crosses over M4 then
buy 1 shares at market
endif
endif03/05/2020 at 1:33 PM #121249Provalo:
12345678910111213141516171819202122232425262728293031ONCE Cross1 = 0ONCE Cross2 = 0M1=average [20](close)M2=average [50](close)M3=average [30](close)M4=average [60](close)//// Verificare se c'è il primo incrocio (ed azzerare tutto se c'è l'incrocio opposto)//if M1 crosses over M2 thenCross1 = 1Cross2 = 0endifif M1 crosses under M2 thenCross1 = 0endif//// Verificare se c'è il secondo incrocio, purché cia sia stato il primo (ed azzerare solo il secondo se avviene quello opposto)//if M3 crosses over M4 thenIf Cross1 THENCross2 = 1endifendifif M3 crosses under M4 thenCross2 = 0endif//IF Cross1 AND Cross2 AND Not OnMarket THENbuy 1 shares at marketENDIF03/06/2020 at 1:47 PM #121352Grazie Roberto per la risposta prontissima.
Purtroppo non mi funziona neanche questo, mi dà solo un primo acquisto in apertura poi più nulla. Ti allego il risultato del backtesting.
Tu l’hai provato? Non vorrei che fosse un problema soltanto della mia piattaforma, da quando c’è stato l’aggiornamento alla versione 11 succedono cose strane.
In ogni caso studiando il codice che mi hai mandato ho capito un sacco di cose, ti ringrazio.
03/06/2020 at 2:13 PM #121359Tu mi hai chiesto come mettere insieme le condizioni per entrare e l’ho fatto (solo Long, lo Short è opposto).
Devi mettere te le condizioni per uscire. Non è prevista un’uscita, quindi immagino la posizione resti aperta all’infinito.
Basta che metti un target profit ed uno stop loss ed uscirà, prova ad aggiungere alla fine:
12SET STOP pLOSS 30SET TARGET pPROFIT 100oviamente cambierai i valori come vorrai tu.
Oppure puoi scegliere di uscire quando c’è un incrocio opposto.
1 user thanked author for this post.
03/06/2020 at 3:49 PM #121376Sì con gli stop funziona. Ogni volta che vende poi riapre il long esattamente al secondo incrocio.
Non avevo provato ad inserire gli stop perchè pensavo che dovesse comunque darmi sul grafico un acquisto ogni volta che si verificava un doppio incrocio al rialzo, invece non è così.
Grazie mille!
-
AuthorPosts
Find exclusive trading pro-tools on