English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
preview
Impara come progettare un sistema di trading tramite MFI

Impara come progettare un sistema di trading tramite MFI

MetaTrader 5Trading | 18 dicembre 2022, 19:35
473 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

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:

  1. Definizione MFI
  2. Strategia MFI
  3. Schema della strategia con MFI
  4. Sistema di trading MFI
  5. Conclusioni

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:

 MFI calc2

Calcolo del flusso di denaro grezzo = volume * TP

MFI calc3

Determinazione del movimento di TP: su o giù.

MFI calc4

Calcolo di 1+MF = MF grezzo dei periodi su

Calcolo di 1-MF = MF grezzo dei periodi giù

 MFI calc5

Calcolare 14+MF = somma di 14 (1+MF)

Calcolare 14-MF = somma di 14 (1-MF)

MFI calc6

Calcolare il rapporto 14 MF = 14+MF/14-MF

 MFI calc7

Calcola MFI = 100-100/(rapporto 1+MF)

MFI calc8

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

MFI inserito

I parametri dell'indicatore appariranno dopo aver scelto il Money Flow Index:

Finestra parametri MFI

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:

 MFI allegato


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:

Schema MFI Semplice

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:

Schema MFI -OB-OS

  • 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:

 MFI - Trend rialzista - Schema Buy

  • 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:

MFI - Trend ribassista - Schema Sell

  • 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:

 MFI - Schema trend rialzista o divergenza

 

  • 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:

MFI - Schema trend ribassista o divergenza


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:

MFI nav1

Facendo doppio clic, apparirà la seguente finestra:

Finestra MFI semplice

Dopo aver fatto clic su OK, l'EA è allegato al grafico:

MFI semplice allegato

Quello che segue è un esempio di segnali generati dai test:

MFI semplice - segnale

Se vogliamo assicurarci che il valore MFI generato sia lo stesso del valore MFI dell'indicatore integrato:

MFI semplice - stesso segnale

  • 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:

MFI nav 2

Trascinalo e rilascialo sul grafico per aprire la sua finestra:

 Finestra MFI - OB_OS

Dopo aver fatto clic su OK, sarà allegato al grafico:

 MFI - OB_OS allegato

Quello che segue è un esempio di segnali generati secondo questo sistema di trading.

Segnale di ipervenduto:

Simple MFI - OB_OS - OS

Segnale di ipercomprato:

Simple MFI - OB_OS - OB

Nessun segnale:

MFI semplice - OB_OS - 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:

MFI nav3

La finestra dell’EA sarà come la seguente:

MFI - Trend rialzista - Finestra di acquisto

Dopo aver fatto clic su OK, sarà allegato al grafico:

 MFI - Trend rialzista - Buy allegato

Quello che segue è un esempio di segnali generati dai test:

Segnale d’acquisto:

 MFI - Trend rialzista - Segnale di acquisto

Segnale di take profit:

MFI - Trend rialzista - 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:

 MFI - Trend ribassista - Finestra Short

Dopo aver fatto clic su OK, sarà allegato al grafico:

MFI - Trend ribassista - Short allegato

Di seguito è riportato un esempio di segnali generati basati sulla strategia MFI - trend ribassista - short dai test:

Segnale di vendita:

MFI - Trend ribassista - Segnale di vendita

Segnale di take profit:

MFI - Trend ribassista - 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:

 MFI nav5

Lo stesso vale per eseguirlo. Trascina e rilascia o fai doppio clic su di esso per aprire la sua finestra:

 MFI - Finestra di trend rialzista o di divergenza

Quindi fare clic su OK per allegarlo al grafico:

MFI - Trend rialzista o divergenza allegata

Di seguito è riportato un esempio di segnali generati con la finestra dati basata su questa strategia:

Segnale rialzista forte con finestra dati corrente:

MFI - Trend rialzista o divergenza - forte - corrente

Segnale rialzista forte con finestra dati precedente:

MFI - Trend rialzista o divergenza - forte - precedente

Segnale di divergenza con finestra dati corrente:

MFI - Trend rialzista o divergenza - Divergenza ribassista - 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:

MFI nav6

All'esecuzione, la sua finestra appare come segue:

MFI - Finestra Trend ribassista o divergenza

Dopo aver fatto clic su OK, sarà allegato al grafico:

MFI - Trend ribassista o divergenza allegato

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:

MFI - Trend ribassista o divergenza - Forte - corrente

Forte movimento ribassista con la finestra dei dati precedenti:

MFI - Trend ribassista o divergenza - Forte - precedente

Divergenza rialzista con la finestra dei dati correnti:

MFI - Trend ribassista o divergenza - Divergenza rialzista - corrente

Divergenza rialzista con la finestra dei dati precedenti:

MFI - Trend ribassista o divergenza - Divergenza rialzista - precedente

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

Impara come progettare un sistema di trading tramite Volumes Impara come progettare un sistema di trading tramite Volumes
Ecco un nuovo articolo della nostra serie sull'apprendimento di come progettare sistemi di trading basati sugli indicatori tecnici più comuni. Questo articolo sarà dedicato all'indicatore Volumes. Il volume come concetto è uno dei fattori più importanti nel trading sui mercati finanziari e dobbiamo prestargli attenzione. Attraverso questo articolo, impareremo come progettare un semplice sistema di trading tramite l'indicatore Volumes.
Sviluppare un Expert Advisor per il trading da zero (Parte 13): Times e Trade (II) Sviluppare un Expert Advisor per il trading da zero (Parte 13): Times e Trade (II)
Oggi costruiremo la seconda parte del sistema Times & Trade per l'analisi del mercato. Nel precedente articolo "Times & Trade (I)" abbiamo discusso di un sistema di organizzazione grafica alternativa, che consentirebbe di avere un indicatore per l'interpretazione più rapida possibile delle transazioni eseguite sul mercato.
Matrici e vettori in MQL5 Matrici e vettori in MQL5
Utilizzando tipi di dati speciali "matrix" e "vector", è possibile creare un codice che è molto vicino alla notazione matematica. Con questi metodi, si evita la necessità di creare cicli annidati o di occuparsi della corretta indicizzazione degli array nei calcoli. Pertanto, l'uso di metodi matriciali e vettoriali aumenta l'affidabilità e la velocità nello sviluppo di programmi complessi.
Sviluppare un Expert Advisor per il trading da zero (Parte 12): Times e Trade (I) Sviluppare un Expert Advisor per il trading da zero (Parte 12): Times e Trade (I)
Oggi creeremo Times & Trade con interpretazione rapida per la lettura del flusso degli ordini. È la prima parte in cui costruiremo il sistema. Nel prossimo articolo completeremo il sistema con le informazioni mancanti. Per implementare questa nuova funzionalità, dovremo aggiungere parecchie cose nuove al codice del nostro Expert Advisor.