DIFFERENZA TRA MEDIE MOBILI
Forums › ProRealTime forum Italiano › Supporto ProOrder › DIFFERENZA TRA MEDIE MOBILI
- This topic has 9 replies, 2 voices, and was last updated 3 years ago by antvaudo.
-
-
01/17/2021 at 9:56 AM #158122
Buongiorno,
potreste aiutarmi a codificare in probacktest i seguenti indicatori (allego immagine)?
Indicatore “SMA20-SMA50”:
SMA20 = average[20,0](close)
SMA50 = average[50,0](close)
DIFFERENZA = SMA20 – SMA50
RETURN DIFFERENZA,0
Indicatore “EMA20-EMA50”:
EMA20 = average[20,1](close)
EMA50 = average[50,1](close)
DIFFERENZA = EMA20 – EMA50
RETURN DIFFERENZA,0
Come evidenziato dall’immagine allegata vorrei:
entrare Short quando entrambi gli indicatori sono rossi (27 luglio 2020)
uscire Short quando entrambi gli indicatori sono verdi (5 novembre 2020) .
entrare Long quando entrambi gli indicatori sono verdi (nell’immagine allegata entra long il 5 nov 2020)
uscire Long quando entrambi gli indicatori sono rossi (nell’immagine allegata esce long il 14 dic 2020).
Potreste aiutarmi a comprendere la logica utilizzata dal programma per il cambio di colore da rosso a verde di uno dei 2 indicatori?
Grazie.
01/17/2021 at 11:06 AM #158134Per favore usa il forum appropriato, come ben indicato in giallo qui sotto.
Per le strategie è ProOrder quello corretto.
Grazie 🙂
L’ho spostato io.
01/17/2021 at 11:10 AM #158137Una media è verde quando adesso è > rispetto alla candela precedente, altrimenti è rossa.
Appena posso ti creo la strategia.
01/17/2021 at 7:48 PM #15818801/18/2021 at 11:41 AM #158258Scusami, la mia indicazione di VERDE/ROSSO era per una media.
Qui è una differenza di medie, quindi il colore è VERDE quando la media veloce (20 periodi) è maggiore di quella lenta (a 50 periodi), altrimenti è ROSSA.
Ecco la strategia:
12345678910111213DEFPARAM CumulateOrders = falseSma20 = average[20,0](close)Sma50 = average[50,0](close)Ema20 = average[20,1](close)Ema50 = average[50,1](close)Verde = ((Sma20 - Sma50) > 0) AND ((Ema20 - Ema50) > 0)Rosso = ((Sma20 - Sma50) < 0) AND ((Ema20 - Ema50) < 0)IF Verde AND Not LongOnMarket THENBUY 1 Contract AT MarketENDIFIF Rosso AND Not ShortOnMarket THENSELLSHORT 1 Contract AT MarketENDIF01/22/2021 at 8:08 PM #158950Buonasera Roberto,
grazie per la disponibilità. Tuttavia il programma non esegue le condizioni di entrata e uscita che ho individuato manualmente sul grafico allegato. Per esempio lunedi 04/02/2019 vorrei entrare short all’apertura dopo che entrambi gli indicatori siano diventati negativi (rossi) alla chiusura di venerdi 01/02/2019; chiudere la posizione short in data 13/02/2019 dopo che entrambi gli indicatori siano diventati positivi (verdi) alla chiusura della giornata precedente. Come puoi rilevare dal grafico, il colore degli indicatori passa da verde a rosso anche se continua a essere al di sopra della linea dello zero e viceversa… forse “l’anomalia” è proprio qui… Il programma invece entra long quando entrambi gli indicatori sono positivi (nello screeshot ho evidenziato i valori 0,00028 e 0,01426) – superiori alla linea dello zero, short quando entrambi gli indicatori sono negativi – inferiori alla linea dello zero.
01/23/2021 at 11:23 AM #158986Cosa vuyoi che sia VERDE o ROSSO, ciascuna media o la DIFFERENZA tra le medie?
01/23/2021 at 2:57 PM #159046Buondì Roberto,
ho risolto in questo modo, impostando il programma in modo entrare LONG all’apertura del giorno seguente se (EMA20-EMA50) “differenza tra le medie esponenziali alla chiusura barra in corso” sia > (EMA20-EMA50)[1] “differenza tra le medie esponenziali alla chiusura barra giorno precedente E che (SMA20-SMA50) “differenza tra le medie semplici alla chiusura barra in corso” sia > (SMA20-SMA50)[1] “differenza tra le medie semplici alla chiusura barra giorno precedente. Condizioni inverse per stop and reverse.
Leggevo che per poter richiamare un mio indicatore avrei potuto utilizzare la funzione CALL ma non ne sono venuto a capo.
123456789101112131415161718192021222324252627282930313233343536373839404142// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateEMA20 = Exponentialaverage[20](Close)EMA50 = Exponentialaverage[50](Close)SMA20 = average[20](Close)SMA50 = average[50](Close)// Condizioni per entrare su posizioni longindicator1 = (EMA20-EMA50)indicator2 = (EMA20-EMA50)[1]c1 = (indicator1 > indicator2)indicator3 = (SMA20 – SMA50)indicator4 = (SMA20 – SMA50)[1]c2 = (indicator3 > indicator4)IF c1 AND c2 THENBUY 1 SHARES AT MARKETENDIF// Condizioni per uscire da posizioni longc3 = (indicator1 < indicator2)c4 = (indicator3 < indicator4)IF c3 AND c4 THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni short (sono cdz identiche all’uscita long)c5 = (indicator1 < indicator2)c6 = (indicator3 < indicator4)IF c5 AND c6 THENSELLSHORT 1 SHARES AT MARKETENDIF// Condizioni per uscire da posizioni shortc7 = (indicator1 > indicator2)c8 = (indicator3 > indicator4)IF c7 AND c8 THENEXITSHORT AT MARKETENDIF01/23/2021 at 3:52 PM #159068Per favore usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri.
Grazie 🙂
Per richiamare gli indicatori personalizzati si usa CALL, che è spiegata qui https://www.prorealcode.com/documentation/call/. In pratica prima dell’uguale si indicano tutti i parametri che l’indicatore restituisce con RETURN (se qualcuno non interessa occorre scrivere IGNORED e tra parentesi quadre occorre scrivere i valori su cui l’indicatore deve fare i propri calcoli (numero di periodi, ecc…).
Ad ogni modo se t’interessa chiedere qualcosa sugli indicatori apri un novo argomento nel forum di supporto ProBuilder.
1 user thanked author for this post.
01/24/2021 at 8:54 AM #159160 -
AuthorPosts
Find exclusive trading pro-tools on