
Impara come progettare un sistema di trading tramite MFI
Introduzione
Questo articolo continua la nostra serie su come progettare semplici sistemi di trading basati sugli indicatori tecnici più comuni per aiutarci a imparare la codifica MQL5. In questo nuovo articolo, daremo uno sguardo al nuovo indicatore tecnico chiamato Money Flow Index (MFI). Impareremo questo indicatore in dettaglio e scopriremo come sviluppare un semplice sistema di trading basato sul concetto principale che ne è alla base. Tratteremo questo indicatore attraverso i seguenti argomenti:
Se leggi gli altri articoli della serie, puoi trovare che gli argomenti hanno la stessa disposizione con nuove informazioni sull'indicatore e alcuni nuovi codici secondo le nuove strategie menzionate per cercare di apprendere nuovi concetti sul trading e sulla codifica MQL5. Impareremo cos'è l'indicatore MFI, cosa misura e come possiamo calcolarlo manualmente per apprendere il concetto principale dietro di esso. Quindi vedremo un esempio di calcolo dell'indicatore MFI. Naturalmente, queste sono solo le basi. Dobbiamo imparare un argomento più importante, su come usarlo in strategie semplici considerando il concetto di base dietro di esso. Successivamente, elaboreremo uno schema passo-passo per ogni strategia menzionata per aiutarci a progettare un sistema di trading per loro. L'argomento più interessante è scoprire come possiamo creare un sistema di trading per queste strategie grazie a MQL5 per utilizzarle nella piattaforma di trading MetaTrader 5.
Per essere in grado di creare il tuo sistema di trading basato sulla tua strategia di trading vincente, ti consiglio di fare l'intero codice da solo. Non accontentarti solo di leggere, ma applica ciò che leggi e codifica ogni singolo codice da solo. Sarà meglio cercare funzioni e concetti di programmazione per saperne di più su di loro poiché questo ti aiuterà ad aumentare le tue conoscenze. Non dimenticare che una delle abilità più importanti di qualsiasi programmatore di successo è sapere come cercare in modo efficace, oltre alla pratica, poiché queste due cose sono molto importanti in qualsiasi processo di apprendimento o sviluppo.
Inoltre, devi testare qualsiasi strategia prima di usarla, soprattutto se il suo scopo principale è educativo. Non esiste una strategia adatta a tutte le persone. Quindi, ciò che può essere utile per me, potrebbe non essere utile per te.
Attraverso questo articolo, utilizzeremo MetaQuotes Language (MQL5) per scrivere i codici delle strategie in MetaEditor, integrato nella MetaTrader 5. Se vuoi sapere come scaricare e utilizzare MetaEditor, leggi l’argomento Scrivere codice MQL5 in MetaEditor dell'articolo precedente.
Avvertenza: Tutte le informazioni sono fornite "così come sono" solo a scopo didattico e non sono preparate per scopi commerciali o di consulenza. Le informazioni non garantiscono alcun tipo di risultato. Se scegliete di utilizzare questi materiali su uno qualsiasi dei vostri conti di trading, lo farete a vostro rischio e pericolo e sarete gli unici responsabili.
Ora esaminiamo direttamente i nostri argomenti per apprendere un nuovo strumento così da aumentare il numero di attrezzi nella nostra valigia del trading.
Definizione MFI
In questa sezione, descriveremo in dettaglio l'indicatore Money Flow Index (MFI) e daremo uno sguardo al concetto alla base di questo indicatore che è uno degli indicatori basati sul volume. Impareremo cos'è, oltre a cosa misura, quindi impareremo come calcolarlo manualmente analizzando un esempio.
Come già accennato nel precedente articolo, il volume è un fattore vitale nel trading. Un'analisi approfondita del volume ci dà un vantaggio nel trading poiché il mercato ha molti aspetti che possono influenzarlo. Più aspetti capisci, migliori decisioni puoi prendere, poiché la conoscenza acquisita aumenta il peso dell'evidenza che ti guida in una direzione specifica per prendere una determinata decisione.
Se abbiamo un asset che subisce acquisti e vendite pesanti, allora quell'asset è di maggiore importanza rispetto a quello con un numero inferiore di transazioni. Nei mercati finanziari, il volume è un numero di azioni o contratti scambiati durante un lasso di tempo. È bello vedere un volume elevato quando il prezzo rompe la resistenza durante un trend rialzista o il supporto durante un trend ribassista poiché questo è uno dei segni importanti della forza del movimento. È meglio quando il volume si muove con il trend, sale durante il movimento al rialzo e diminuisce durante una correzione del trend rialzista, così come diminuisce durante un movimento al ribasso e sale durante una correzione. Se vediamo il volume muoversi con il trend, questo è uno dei segnali importanti che confermano il trend attuale.
L'indicatore Money Flow Index (MFI) è stato creato da Gene Quong e Avrum Soudack. È un indicatore basato sul volume ma utilizza il prezzo e il volume nel suo calcolo per misurare la pressione di acquisto e vendita. Si muove tra zero e 100. Un aumento dell'indicatore MFI significa che c'è pressione di acquisto e viceversa, una diminuzione dell'MFI significa che c'è pressione di vendita. Può confermare la direzione del trend o può dare un avvertimento per le inversioni. Se vuoi saperne di più sul trend, puoi leggere l'argomento della definizione di trend da uno degli articoli precedenti.
Il calcolo manuale dell'MFI consiste in più passaggi:
- Calcolo del typical price (TP) = (massimo+minimo+chiusura)/3
- Calcolo del flusso di denaro grezzo = volume * TP
- Determinazione del movimento di TP: su o giù. Se TP corrente > TP precedente = su, se TP corrente < TP precedente = giù.
- Calcolo di 1+MF = MF grezzo dei periodi su
- Calcolo di 1-MF = MF grezzo dei periodi giù
- Calcolare 14 +MF = somma di 14 (1+MF)
- Calcolare 14 -MF = somma di 14 (1-MF)
- Calcolo del rapporto 14 MF = 14+MF / 14-MF
- Calcolo MFI = 100-100/(rapporto 1+MF)
Vediamo un esempio per applicare questo calcolo se abbiamo i seguenti dati per uno strumento:
Giorno | Massimo | Minimo | Chiusura | Volume |
---|---|---|---|---|
1 | 55 | 53 | 54 | 12000 |
2 | 56 | 54 | 55 | 10000 |
3 | 61 | 59 | 60 | 15000 |
4 | 67 | 64 | 65 | 20000 |
5 | 63 | 58 | 60 | 10000 |
6 | 58 | 52 | 55 | 5000 |
7 | 64 | 58 | 60 | 7000 |
8 | 52 | 47 | 50 | 7500 |
9 | 52 | 48 | 48 | 8000 |
10 | 50 | 48 | 49 | 5000 |
11 | 49 | 47 | 48 | 6000 |
12 | 48 | 47 | 47 | 7500 |
13 | 50 | 46 | 48 | 9000 |
14 | 52 | 45 | 47 | 10000 |
15 | 55 | 46 | 49 | 7000 |
16 | 53 | 45 | 47 | 7500 |
17 | 51 | 43 | 46 | 6000 |
18 | 50 | 42 | 44 | 5000 |
19 | 50 | 43 | 45 | 15000 |
Se dobbiamo calcolare l'indicatore MFI dai dati precedenti, eseguiremo i seguenti passaggi:
Calcolo del typical price (TP) = (massimo+minimo+chiusura)/3
E quanto segue è per ottenere il TP dopo il calcolo:
Calcolo del flusso di denaro grezzo = volume * TP
Determinazione del movimento di TP: su o giù.
Calcolo di 1+MF = MF grezzo dei periodi su
Calcolo di 1-MF = MF grezzo dei periodi giù
Calcolare 14+MF = somma di 14 (1+MF)
Calcolare 14-MF = somma di 14 (1-MF)
Calcolare il rapporto 14 MF = 14+MF/14-MF
Calcola MFI = 100-100/(rapporto 1+MF)
Durante i passaggi precedenti, abbiamo calcolato manualmente l'indicatore MFI, ma oggigiorno non è necessario farlo. Ora che abbiamo appreso il concetto alla base dell'indicatore, possiamo utilizzare l'indicatore integrato in MetaTrader 5. Tutto quello che devi fare è sceglierlo tra gli indicatori disponibili:
Durante l'apertura di MetaTrader 5 -> fai clic sulla scheda Inserisci -> Indicatori -> Volumi -> Money Flow Index
I parametri dell'indicatore appariranno dopo aver scelto il Money Flow Index:
1. Periodo desiderato dell’indicatore.
2. Tipo di volume (Tick o Real).
3. Colore della linea MFI
4. Tipo di linea
5. Spessore della linea MFI.
Dopo aver fatto clic su OK, l'indicatore MFI è allegato al grafico:
Strategia MFI
In questa sezione, impareremo come utilizzare l'indicatore MFI dopo aver identificato cos'è, cosa misura e il concetto principale che ne è alla base. Ora impareremo alcune semplici strategie che possono essere utilizzate.
- Strategia uno: MFI - OB e OS
Secondo questa strategia, identificheremo le aree di ipercomprato (OB) e ipervenduto (OS). Quando MFI si avvicina al livello 20, questo sarà un OS e quando si avvicina al livello 80, questo sarà un OB. Le aree di ipervenduto aumentano il potenziale rialzo e viceversa, le aree di ipercomprato aumentano il potenziale ribasso.
Così, possiamo dire:
MFI <= 20 --> OS
MFI >= 80 --> OB
- Strategia due: MFI - trend rialzista - acquisto
Secondo questa strategia, attenderemo di vedere MFI al di sotto o uguale al livello 50 per vedere il segnale di acquisto attivo. L’avvicinarsi al livello 70 sarà un segnale di take profit. La logica alla base di questa strategia è che la maggior parte del tempo, MFI si muove tra 50 e 70 durante un trend rialzista.
Quindi,
MFI <= 50 --> Segnale di acquisto
MFI >= 70 --> Segnale di take profit
- Strategia tre: MFI - trend ribassista - vendita
Questa strategia sarà l’opposta della precedente (MFI - trend rialzista - acquisto), perché abbiamo bisogno di vedere MFI al di sopra o uguale al livello 50 per dire che il segnale di vendita è attivato e il take profit verrà segnalato quando MFI è sceso al di sotto o uguale al livello 30. La logica che c’è dietro è che la maggior parte del tempo, MFI si muove tra i livelli 50 e 30 durante un trend ribassista.
Quindi,
MFI >=50 --> Segnale di vendita
MFI <= 30 --> Take profit
- Strategia quattro: MFI - trend rialzista o divergenza
Secondo questa strategia, abbiamo bisogno che l'indicatore confermi se il movimento attuale è forte o meno. Possiamo vederlo comparando i valori MFI corrente e precedente e i massimi attuale e precedente e vedere se c'è la conferma che il movimento attuale è forte o c'è una divergenza. Quindi, durante un trend rialzista, se l’MFI attuale è maggiore dell’MFI precedente e il massimo attuale è maggiore del massimo precedente, questo vuol dire che il movimento attuale è forte ma se l’MFI attuale è inferiore al precedente e il massimo attuale è maggiore del precedente massimo, questo significa che c’è una divergenza ribassista in quanto l’indicatore non conferma il movimento del prezzo. È possibile regolare la lunghezza dei valori da confrontare, in modo da aiutare a comprenderne il concetto.
Quindi,
MFI attuale > MFI precedente e massimo attuale > massimo precedente --> forte movimento al rialzo
MFI attuale < MFI precedente e massimo attuale > massimo precedente --> divergenza ribassista
- Strategia cinque: MFI - Trend ribassista o divergenza:
Questa strategia è l'opposto della precedente (MFI - trend rialzista o divergenza) in quanto abbiamo bisogno che l'indicatore confermi anche se il movimento attuale è forte o se c'è una divergenza nella sua forma semplice confrontando solo due valori. Quindi, se l'attuale MFI è inferiore al precedente e il minimo attuale è inferiore al precedente, ciò significa che l'attuale movimento ribassista è forte, ma se l'attuale MFI è maggiore del precedente e il minimo attuale è inferiore al precedente, questo significa che c'è una divergenza rialzista.
Semplicemente,
MFI attuale < MFI precedente e minimo attuale < minimo precedente --> forte movimento ribassista
MFI attuale > MFI precedente e minimo attuale < minimo precedente --> divergenza rialzista
Schema della strategia con MFI
In questa sezione, progetteremo uno schema per ciascuna strategia per aiutarci nella creazione di un sistema di trading per ognuna di esse, ma prima progetteremo uno schema per un semplice sistema di trading che sia la base di tutte le strategie di trading menzionate. Questo semplice sistema visualizzerà solo il valore corrente dell'MFI come commento sul grafico. Quindi, abbiamo bisogno che il computer controlli il valore MFI ogni tick e successivamente visualizzi questo valore sul grafico come commento. Lo schema per farlo è mostrato di seguito:
In questa parte, progetteremo uno schema per ciascuna strategia come segue:
- Strategia uno: MFI - OB e OS
Sulla base di questa strategia, dobbiamo dare istruzioni al sistema di trading di controllare il valore MFI ad ogni tick e confrontare questo valore con livelli specifici (20 e 80) e decidere o restituire il risultato come commento sul grafico secondo questo confronto . Se l'MFI è minore o uguale a 20, restituisce l'ipervenduto e il valore MFI attuale come commenti sul grafico e ogni commento in una riga separata. Se l'MFI è maggiore o uguale a 80, restituisce l'ipercomprato e l'MFI attuale come commenti sul grafico e ciascuno in una riga separata. Se l'MFI è superiore a 20 e inferiore a 80, restituisce solo il valore corrente dell'MFI. Lo schema per farlo è il seguente:
- Strategia due: MFI - trend rialzista - acquisto
Secondo questa strategia, abbiamo bisogno che il sistema di trading controlli anche il valore MFI, ed i livelli 50 e 70 ad ogni tick per decidere se l'MFI è minore o uguale a 50, così da restituire il segnale di acquisto. Se l’MFI è maggiore o uguale a 70, deve restituire un segnale di take profit e ciò che segue è lo schema per farlo:
- Strategia tre: MFI - trend ribassista - vendita
Secondo questa strategia, abbiamo bisogno che il programma di trading ci avvisi con un segnale generato basato su un confronto tra i valori MFI, 50 e 30. Se MFI è maggiore o uguale a 50, deve restituire un segnale di vendita e se MFI è minore o uguale a 30, deve restituire un segnale di take profit. Quello che segue è lo schema per farlo:
- Strategia quattro: MFI - trend rialzista o divergenza
Secondo questa strategia, dobbiamo progettare un sistema di trading in grado di controllare quattro valori (MFI attuale, MFI precedente, massimo attuale e massimo precedente) ogni tick e decidere quale segnale deve essere generato.
MFI attuale > MFI precedente e massimo attuale > massimo precedente --> forte segnale di movimento al rialzo
MFI attuale < MFI precedente e massimo attuale > massimo precedente --> divergenza ribassista
Quello che segue è lo schema per farlo:
- Strategia cinque: MFI - Trend ribassista o divergenza:
Questa strategia è l'opposto della precedente. Secondo questa strategia, dobbiamo progettare un sistema di trading in grado di controllare quattro valori (MFI attuale, MFI precedente, minimo attuale e minimo precedente) ogni tick e decidere quale segnale deve essere generato.
MFI attuale < MFI precedente e minimo attuale < minimo precedente --> forte segnale ribassista
MFI attuale > MFI precedente e minimo attuale < minimo precedente --> divergenza rialzista
Quello che segue è lo schema per farlo:
Sistema di trading MFI
In questa interessante sezione, progetteremo un sistema di trading per ogni strategia menzionata scrivendo i nostri codici in MQL5 per eseguirli in MetaTrader 5. Inizieremo con il semplice MFI che genera un commento sul grafico con il valore attuale dell’MFI.
- Creare un array per MFI utilizzando la funzione 'double' per rappresentare i valori con frazioni.
double MFIArray[];
- Ordinare l'array MFI dai dati più recenti utilizzando la funzione ArraySetAsSeries per restituire un risultato booleano (vero o falso) e i relativi parametri sono (array[] e flag).
ArraySetAsSeries(MFIArray,true);
- Definire MFI utilizzando la funzione iMFI dopo aver creato una variabile di tipo intera per MFIDef. La funzione iMFI restituisce l'handle dell'indicatore MFI ei suoi parametri sono (simbolo, periodo, periodo ma e volume applicato).
int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);
- Riempire l'array utilizzando la funzione CopyBuffer per ottenere i dati dall'indicatore MFI.
CopyBuffer(MFIDef,0,0,3,MFIArray);
- Calcolare il valore MFI corrente utilizzando NormalizeDouble che restituisce un valore di tipo double dopo aver creato una variabile double MFIValue.
double MFIValue=NormalizeDouble(MFIArray[0],5);
- Creare un commento sul grafico utilizzando la funzione Comment.
Comment("MFI Value is: ",MFIValue);
Quindi il codice completo sarà lo stesso del seguente:
//+------------------------------------------------------------------+ //| Simple MFI.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //creating a comment with MFI value Comment("MFI Value is: ",MFIValue); } //+------------------------------------------------------------------+
Dopo la compilazione, possiamo trovare l'Expert Advisor nella finestra del Navigatore:
Facendo doppio clic, apparirà la seguente finestra:
Dopo aver fatto clic su OK, l'EA è allegato al grafico:
Quello che segue è un esempio di segnali generati dai test:
Se vogliamo assicurarci che il valore MFI generato sia lo stesso del valore MFI dell'indicatore integrato:
- Strategia uno: MFI - OB e OS
Di seguito è riportato il codice completo per la creazione di un sistema di trading per questa strategia:
//+------------------------------------------------------------------+ //| MFI - OB&OS.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Conditions of OS&OS //OS if(MFIValue<=20) { Comment("Oversold","\n","MFI value is : ",MFIValue); } //OB if(MFIValue>=80) { Comment("Overbought","\n","MFI value is : ",MFIValue); } //no signal if(MFIValue>20 && MFIValue<80 ) { Comment("MFI value is : ",MFIValue); } } //+------------------------------------------------------------------+
La differenza in questo codice è:
Condizioni di ipervenduto e ipercomprato://Conditions of OS&OS //OS if(MFIValue<=20) { Comment("Oversold","\n","MFI value is : ",MFIValue); } //OB if(MFIValue>=80) { Comment("Overbought","\n","MFI value is : ",MFIValue); } //no signal if(MFIValue>20 && MFIValue<80 ) { Comment("MFI value is : ",MFIValue); }
Dopo aver compilato questo codice, possiamo trovare l'EA nella finestra del Navigatore:
Trascinalo e rilascialo sul grafico per aprire la sua finestra:
Dopo aver fatto clic su OK, sarà allegato al grafico:
Quello che segue è un esempio di segnali generati secondo questo sistema di trading.
Segnale di ipervenduto:
Segnale di ipercomprato:
Nessun segnale:
- Strategia due: MFI - trend rialzista - acquisto
Quanto segue è per come scrivere il codice di questa strategia:
//+------------------------------------------------------------------+ //| MFI - Uptrend - Buy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Buy signal if(MFIValue<=50) { Comment("Buy signal"); } //TP if(MFIValue>=70) { Comment("Take profit"); } } //+------------------------------------------------------------------+
La differenza con questo codice:
Condizioni dei segnali:
Segnale d’acquisto:
//Buy signal if(MFIValue<=50) { Comment("Buy signal"); }
Segnale di take profit:
//TP if(MFIValue>=70) { Comment("Take profit"); }
Dopo la compilazione, l'EA apparirà nella finestra del Navigatore:
La finestra dell’EA sarà come la seguente:
Dopo aver fatto clic su OK, sarà allegato al grafico:
Quello che segue è un esempio di segnali generati dai test:
Segnale d’acquisto:
Segnale di take profit:
- Strategia tre: MFI - trend ribassista - vendita
Quello che segue è il codice completo per creare un sistema di trading per questa strategia:
//+------------------------------------------------------------------+ //| MFI - Downtrend - Short.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Sell signal if(MFIValue>=50) { Comment("Sell signal"); } //TP if(MFIValue<=30) { Comment("Take profit"); } } //+------------------------------------------------------------------+
La differenza in questo codice è:
Condizioni dei segnali:
Segnale di vendita:
//Sell signal if(MFIValue>=50) { Comment("Sell signal"); }
Segnale di take profit:
//TP if(MFIValue<=30) { Comment("Take profit"); }
Dopo la compilazione, possiamo eseguirlo facendo doppio clic dal Navigatore:
Dopo aver fatto doppio clic, la sua finestra sarà uguale alla seguente:
Dopo aver fatto clic su OK, sarà allegato al grafico:
Di seguito è riportato un esempio di segnali generati basati sulla strategia MFI - trend ribassista - short dai test:
Segnale di vendita:
Segnale di take profit:
- Strategia quattro: MFI - trend rialzista o divergenza
Quello che segue è il codice completo di MFI - strategia trend rialzista o divergenza dai test:
//+------------------------------------------------------------------+ //| MFI - Uptrend or divergence.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create arrays for MFI and price double MFIArray[]; MqlRates PriceArray[]; //sorting arrays from the current data ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the MFI array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current and previous MFI values double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5); //calculating current and previous highs double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5); double PrevHighValue=NormalizeDouble(PriceArray[1].high,5); //conditions of strong move or divergence //strong up if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Strong up move"); } //bearish divergence if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Bearish divergence"); } } //+------------------------------------------------------------------+
Le differenze in questo codice sono:
Creazione di array per MFI e per i prezzi utilizzando la funzione MqlRates che memorizza informazioni su prezzi, volumi e spread:
double MFIArray[]; MqlRates PriceArray[];
Ordinamento degli array:
Per MFI, utilizzando la funzione ArraySetAs Series come menzionato in precedenza.
Per i prezzi, utilizzando la funzione CopyRates per ottenere i dati storici di MqlRates e i relativi parametri sono (nome del simbolo, timeframe, ora di inizio, ora di fine e array con i prezzi).
ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
Calcolo dei valori MFI attuali e precedenti:
double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5);
Calcolo dei massimi attuali e precedenti:
double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5); double PrevHighValue=NormalizeDouble(PriceArray[1].high,5);
Condizioni dell’FMI - strategia di trend rialzista o divergenza:
Forte rialzo:
if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Strong up move"); }
Divergenza:
if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Bearish divergence"); }
Dopo aver compilato questo codice, lo troveremo negli Expert Advisor del Navigatore:
Lo stesso vale per eseguirlo. Trascina e rilascia o fai doppio clic su di esso per aprire la sua finestra:
Quindi fare clic su OK per allegarlo al grafico:
Di seguito è riportato un esempio di segnali generati con la finestra dati basata su questa strategia:
Segnale rialzista forte con finestra dati corrente:
Segnale rialzista forte con finestra dati precedente:
Segnale di divergenza con finestra dati corrente:
Segnale di divergenza con finestra dati precedente:
- Strategia cinque: MFI - Trend ribassista o divergenza:
E quello che segue è il codice di questa strategia.
//+------------------------------------------------------------------+ //| MFI - Downtrend or divergence.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //Create arrays for MFI and price double MFIArray[]; MqlRates PriceArray[]; //sorting arrays from the current data ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current and previous MFI values double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5); //calculating current and previous highs double CurrentLowValue=NormalizeDouble(PriceArray[2].low,5); double PrevLowValue=NormalizeDouble(PriceArray[1].low,5); //conditions of strong move or divergence //strong down if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Strong down move"); } //bullish divergence if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Bullish divergence"); } } //+------------------------------------------------------------------+
La differenza in questo codice è:
Condizioni dei segnali generati basati su questa strategia:
Forte segnale di movimento ribassista:
if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Strong down move"); }
Divergenza rialzista:
if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Bullish divergence"); }
Dopo la compilazione, la finestra del Navigatore si presenta come segue:
All'esecuzione, la sua finestra appare come segue:
Dopo aver fatto clic su OK, sarà allegato al grafico:
Di seguito è riportato un esempio di segnali generati con la finestra dei dati per visualizzarli in base ai valori del test:
Forte movimento ribassista con la finestra dei dati correnti:
Forte movimento ribassista con la finestra dei dati precedenti:
Divergenza rialzista con la finestra dei dati correnti:
Divergenza rialzista con la finestra dei dati precedenti:
Conclusioni
Ho trattato l'argomento dell'indicatore Money Flow Index (MFI) fornendo nuove informazioni che possono migliorare il tuo trading poiché ora sappiamo cos’è il volume, perché è molto importante nel trading, cos'è l'indicatore MFI, cosa misura, oltre a imparare come possiamo calcolarlo manualmente e inserire l'indicatore MFI, integrato in MetaTrader 5. Dopo aver appreso le basi dell'indicatore MFI e afferrato il concetto di base dietro di esso, abbiamo imparato alcune semplici strategie: queste sono le strategie di ipercomprato e ipervenduto che possono rivelare le aree di ipercomprato e ipervenduto di uno strumento, la MFI - strategia trend rialzista che può essere utilizzata per rilevare segnali di acquisto e take profit durante un trend rialzista sulla base dell'indicatore MFI, la MFI - strategia trend ribassista che può essere utilizzata per generare segnali di vendita e take profit durante un trend ribassista sulla base dell'indicatore MFI, la MFI - strategia trend rialzista o di divergenza che può essere utilizzato per confermare la forza dei movimenti al rialzo durante il trend rialzista o avvisarci di una divergenza ribassista, e la MFI - trend ribassista o divergenza che può essere utilizzata per confermare se gli attuali movimenti al ribasso sono forti o avvisare di una divergenza rialzista.
In aggiunta a ciò, abbiamo sviluppato uno schema per ogni strategia in modo da aiutarci a creare un sistema di trading che generi segnali automaticamente nella MetaTrader 5 progettando uno schema passo dopo passo. Successivamente, abbiamo creato un sistema di trading per ogni strategia tramite MQL5 da eseguire nella piattaforma di trading MetaTrader 5 in modo da funzionare automaticamente e con precisione senza interferenze umane per facilitare il nostro trading e risparmiare tempo, oltre a fare le cose in modo efficiente.
Spero che tu abbia provato ad applicare e mettere in pratica ciò che hai imparato attraverso questo articolo. Spero anche che questo articolo ti abbia fornito spunti utili sul trading, sia che si tratti di approfondimenti relativi all'argomento attuale o ad argomenti correlati. Come ho già detto, assicurati di testare qualsiasi strategia prima di utilizzarla su un conto reale perché l'obiettivo principale di questo articolo è quello di contribuire a fornire informazioni ai principianti per imparare a codificare da soli semplici strategie di trading. Quindi, potresti scoprire che queste strategie necessitano di ottimizzazione o aggiustamenti o potresti scoprire che sarà meglio se le combini con un altro strumento tecnico. Questo è un approccio utile per combinare strumenti tecnici essenziali per rivelare molte prospettive per poter prendere una decisione adeguata. Dopo aver combinato questi strumenti, puoi anche creare un sistema di trading con loro in quanto possiamo trovare tutti i tipi di sistemi di trading, da quelli semplici a quelli complicati, e questo ci permetterà di fare esattamente ciò di cui abbiamo bisogno superando il problema della soggettività la quale può essere un ostacolo per raggiungere i tuoi obiettivi di trading. La programmazione è uno strumento straordinario che ci aiuta a fare ciò di cui abbiamo bisogno in modo semplice, preciso e senza intoppi. Ci evita di svolgere sempre le stesse attività ogni volta, oltre a molte altre belle caratteristiche.
Se trovi utile questo articolo e hai bisogno di leggere altri articoli simili, puoi leggere i miei altri articoli in questa serie sull'apprendimento di come progettare un sistema di trading basato sugli indicatori tecnici più comuni. Spero che ti aiutino a migliorare i tuoi risultati di trading.
Tradotto dall’inglese da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/en/articles/11037





- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso