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

Impara come progettare un sistema di trading con MFI di Bill Williams

MetaTrader 5Trading | 9 settembre 2024, 12:38
140 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Ecco un nuovo articolo della nostra serie sull'apprendimento di come progettare sistemi di trading basati sugli indicatori tecnici più comuni. In questo articolo presenteremo un nuovo strumento tecnico che può essere un'utile aggiunta al vostro trading, soprattutto se lo utilizzerete insieme ad altri strumenti tecnici per ottenere informazioni più approfondite. Familiarizzeremo con il Market Facilitation Index di Bill Williams (BW MFI). Questo indicatore sarà trattato attraverso i seguenti argomenti:

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

Utilizzeremo la piattaforma di trading MetaTrader 5 per testare le strategie di questo articolo e utilizzeremo l'IDE MQL5 (MetaQuotes Language) per costruire i nostri sistemi di trading. Se non sapete come scaricarli e utilizzarli, potete leggere l'argomento "Scrivere codice MQL5 in MetaEditor" dal mio precedente articolo per maggiori dettagli.

Tutte le strategie citate in questo articolo sono solo a scopo didattico e devono essere testate prima di essere utilizzate sul proprio conto reale. Hanno sicuramente bisogno di un'ottimizzazione. Alcune strategie potrebbero non essere adatte al vostro stile di trading, poiché non esiste nulla di adatto a tutte le persone. Inoltre, sarà molto utile per voi come codificatori provare ad applicare da soli ciò che avete letto, perché vi aiuterà a migliorare le vostre capacità di programmazione.

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.


Definizione di BW MFI

In questo argomento, impareremo a conoscere nel dettaglio l'indicatore Market Facilitation Index (MFI). Si tratta di uno degli indicatori tecnici sviluppati dal noto trader e autore Bill Williams. Questo indicatore mira a misurare la direzione del mercato studiando e analizzando il prezzo e il volume. Questo ci aiuterà come trader in quanto può essere utile per individuare il movimento futuro del mercato e fornirà indicazioni sulla forza dell'attuale movimento dei prezzi: se continuerà o potrebbe invertire. Questo può essere molto utile per noi, poiché ci aiuta ad operare con la parte più forte del mercato e a prendere la decisione giusta.

Per comprendere la situazione, possiamo analizzare l'MFI e il volume. I casi possono essere i seguenti:

  • Se il BW MFI e il volume aumentano, significa che gli operatori di mercato sono interessati a questo strumento finanziario.
  • Se il BW MFI e il volume diminuiscono, significa che i partecipanti al mercato non sono interessati a questo strumento finanziario.
  • Se il BW MFI aumenta ma il volume diminuisce, indica che il movimento attuale non è supportato dal volume.
  • Se il BW MFI diminuisce ma il volume aumenta, indica che c'è un equilibrio nel mercato tra acquirenti e venditori.

Vediamo ora come calcolare manualmente il BW MFI. Questo ci aiuterà a capire solo l'idea principale o il concetto che ne é alla base, dato che oggi non è più necessario farlo perché possiamo semplicemente utilizzare l'indicatore incorporato in MetaTrader 5. Per calcolare il BW MFI dobbiamo dividere il risultato per il volume dopo aver sottratto il prezzo massimo e minimo.

BW MFI = (Massimo - Minimo) / Volume

Dove:

Massimo => il prezzo più alto
Minimo => il prezzo più basso
Volume => il volume corrente

Ma, come ho detto sopra, in realtà non è necessario calcolarlo manualmente e tutto ciò che dobbiamo fare è sceglierlo tra gli indicatori disponibili nella MetaTrader 5. Di seguito viene illustrato come farlo.

Aprire il terminale MetaTrader 5, selezionare il menu Inserisci -> Indicatori -> Bill Williams -> Market Facilitation Index. La figura seguente ne illustra il funzionamento:

BW MFI inserito

A questo punto, la finestra dei parametri dell'indicatore è uguale alla seguente:

Finestra BW MFI

1 — il colore per indicare il caso in cui MFI e volume aumentano.

2 — il colore per indicare il caso in cui MFI e volume diminuiscono.

3 — il colore per indicare il caso in cui MFI aumenta e il volume diminuisce.

4 — il colore per indicare il caso in cui MFI diminuisce e il volume aumenta.

5 — il tipo di volume (Tick o Real).

6 — lo spessore delle barre dell'indicatore.

Dopo aver determinato i parametri di cui sopra e aver premuto OK, l'indicatore sarà allegato al grafico come nell'esempio seguente:

BW MFI allegato

Come si può vedere nell'immagine precedente, l'indicatore appare nella finestra secondaria del grafico. Appare sotto forma di barre con valori e colori diversi in base al prezzo e al volume secondo il calcolo dell'indicatore BW MFI. Ogni colore e valore dell'indicatore indica uno stato specifico dei movimenti di prezzo.

  • La barra verde: significa che il BW MFI e il volume aumentano, indicando che gli operatori del mercato sono interessati a questo strumento.
  • La barra marrone cuoio: significa che il BW MFI e il volume diminuiscono, indicando che non c'è nessuno interessato allo strumento.
  • La barra blu: significa che il BW MFI aumenta e il volume diminuisce, indicando che il movimento del mercato non è supportato dal volume.
  • La barra rosa: significa che il BW MFI diminuisce e il volume aumenta, indicando che c'è un equilibrio tra tori e orsi.

Strategia BW MFI

In questo argomento condivideremo alcune semplici strategie da utilizzare sulla base dell'idea principale dell'indicatore BW MFI a scopo educativo. Non dimenticate che per ottenere risultati migliori è necessario ottimizzare, modificare alcuni parametri o combinarli con altri indicatori tecnici. Pertanto, è molto importante testarli prima di utilizzarli sul conto reale per assicurarsi che siano profittevoli e utili per il trading.

Strategia uno: BW MFI - Movement Status

Secondo questa strategia, dobbiamo ottenere lo stato del movimento dell'indicatore BW MFI in base all'ordine dei valori BW MFI e ai valori dei volumi. In base a ciò, avremo quattro stati:

  • Se il BW MFI corrente è maggiore di quello precedente e il volume corrente è maggiore di quello precedente. Quindi, la barra è verde e sarà un segnale di uno stato verde.
  • Se il BW MFI corrente è inferiore a quello precedente e il volume corrente è inferiore a quello precedente. Quindi, la barra è marrone e sarà un segnale di uno stato di affievolimento.
  • Se il BW MFI corrente è maggiore di quello precedente e il volume corrente è inferiore a quello precedente. Quindi, la barra è blu e sarà un segnale di un falso stato.
  • Se il BW MFI corrente è inferiore a quello precedente e il volume corrente è maggiore di quello precedente. Quindi, la barra è rosa, sarà un segnale di uno stato di accovacciamento.

Semplicemente,

  • BW MFI attuale > prev. BW MFI e volume corrente > volume precedente ==> Stato verde - barra verde
  • BW MFI attuale < prev. BW MFI e vol. attuale < vol. precedente ==> Stato di affievolimento - barra marrone
  • BW MFI attuale > prev. BW MFI e vol. attuale < vol. precedente ==> Falso stato - barra blu
  • BW MFI attuale < prev. BW MFI e volume attuale > volume precedente ==> Stato di accovacciamento - barra rosa

Strategia due: Segnali BW MFI

In base a questa strategia, dobbiamo ottenere un segnale secondo lo stato dell'indicatore BW MFI. In primo luogo, dobbiamo determinare lo stato del mercato, proprio come lo abbiamo identificato con la strategia precedente. Poi decideremo in base a questo. In accordo con questa strategia, avremo quattro segnali:

  • Se lo stato è verde, sarà un segnale per trovare un buon ingresso.
  • Se lo stato è di affievolimento, sarà un segnale per trovare una buona uscita.
  • Se lo stato è falso, sarà un segnale di probabilità di falso breakout.
  • Se lo Stato è di accovacciamento, sarà un segnale del fatto che il mercato è in equilibrio.

Strategia tre: BW MFI con MA

Sulla base di questa strategia utilizzeremo un altro indicatore tecnico, la media mobile, per ottenere un segnale di acquisto o di vendita. Se lo stato è verde e il prezzo di chiusura è superiore alla media mobile, si tratta di un segnale di acquisto. Nell'altro scenario, se lo stato è verde e il prezzo di chiusura è inferiore alla media mobile, si tratta di un segnale di vendita. In questo modo, dalle caratteristiche dell'analisi tecnica, possiamo combinare insieme gli strumenti tecnici per ottenere maggiori informazioni e vedere diverse prospettive. È possibile farlo anche con altri strumenti tecnici per ottenere maggiori spunti, come supporto e resistenza, MACD, medie mobili o qualsiasi altro strumento tecnico utile per filtrare i segnali generati.

Semplicemente,

  • Stato verde e prezzo di chiusura > MA ==> Segnale di acquisto
  • Stato verde e prezzo di chiusura < MA ==> Segnale di vendita

Schema della strategia BW MFI

In questa parte, prenderemo in considerazione un passo molto importante nella progettazione del nostro sistema di trading, ovvero uno schema passo-passo per ogni strategia menzionata. Lo schema aiuta a creare il sistema di trading senza problemi, poiché visualizza ciò che dobbiamo istruire il computer a fare. Quindi, possiamo considerare questa fase come una fase di pianificazione per la nostra prossima strategia.

 Strategia uno: BW MFI - Movement Status

In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per ottenere un segnale del movimento dell'indicatore BW MFI in base al colore della barra dell'indicatore, che sarà determinato per natura dell'indicatore, confrontando quattro valori ogni tick stabilendo la posizione di ognuno di essi. Questi quattro valori sono il BW MFI corrente, il BW MFI precedente, i volumi correnti e i volumi precedenti. Il programma deve controllarli e determinare la posizione di ciascun valore. Quando il valore attuale di BW MFI è maggiore di quello precedente e allo stesso tempo il volume attuale è maggiore di quello precedente, è necessario che il sistema di trading restituisca un commento sul grafico con "Stato Verde - Barra Verde" e questo è il primo caso. Il secondo è quando il BW MFI corrente è inferiore al precedente e allo stesso tempo il valore del volume corrente è inferiore al precedente, così il sistema di trading restituisce un commento sul grafico con "Stato di Affievolimento - Barra Marrone". Il terzo caso si verifica quando il valore attuale del BW MFI è maggiore di quello precedente e allo stesso tempo il valore del volume attuale è inferiore a quello precedente, è necessario che il sistema restituisca un commento sul grafico con "Falso Stato - Barra Blu". Il quarto e ultimo caso è quello in cui il valore del BW MFI corrente è inferiore a quello precedente e allo stesso tempo il valore del volume corrente è maggiore di quello precedente, dobbiamo ottenere un commento sul grafico con "Stato di Accovacciamento - Barra Rosa".

Il grafico seguente riguarda lo schema della strategia movement status:

Schema Movement Status

Strategia due: Segnali BW MFI

In base a questa strategia e dopo aver identificato ogni stato secondo le barre dell'indicatore, dobbiamo creare un sistema di trading che possa essere utilizzato per restituire il commento sul grafico con il segnale adatto fondato su questo stato dell'indicatore BW MFI. A tal fine, dobbiamo creare un sistema di trading in grado di controllare quattro stati per ogni tick e di restituire un segnale adeguato in base ad essi. Se lo stato del BW MFI è uno stato verde identificato nel sistema di trading, dobbiamo ottenere un segnale come commento sul grafico con "Trova un buon ingresso". Nel secondo stato, quando si controlla lo stato dell'indicatore e si scopre che è uno stato di affievolimento, è necessario che il sistema di trading restituisca un segnale come commento sul grafico con "Trova una buona uscita". Il terzo scenario o stato è quando si controlla lo stato del BW MFI e si scopre che è un falso stato, abbiamo bisogno che il sistema di trading restituisca un commento sul grafico come segnale con "Probabilità di falso breakout". L'ultimo stato è quello in cui, dopo aver verificato che si tratta di uno stato di accovacciamento, dobbiamo ottenere un commento sul grafico come segnale con "Mercato Bilanciato".

Il seguente grafico si riferisce allo schema della strategia dei segnali:

Schema Segnali BW MFI

Strategia tre: BW MFI con MA

In accordo con questa strategia, dobbiamo creare un sistema di trading in grado di restituire un segnale di acquisto o di vendita basato sull'indicatore BW MFI e sulla media mobile semplice. Il sistema di trading deve controllare continuamente il prezzo di chiusura, la media mobile semplice corrente e lo stato dell'indicatore BW MFI corrente dopo aver identificato i suoi quattro stati ad ogni tick. Se il sistema di trading rileva che il prezzo di chiusura è superiore al valore attuale della media mobile semplice e allo stesso tempo lo stato attuale del BW MFI è verde, il sistema di trading deve restituire un segnale di acquisto come commento sul grafico. Se rileva che il prezzo di chiusura è inferiore alla media mobile semplice corrente e allo stesso tempo lo stato attuale del BW MFI è verde, il sistema di trading deve restituire un segnale di vendita come commento sul grafico. Se c'è qualcos'altro, è necessario che il sistema di trading non restituisca nulla.

Il grafico seguente si riferisce allo schema della strategia BW MFI con MA:

Schema BW MFI con MA

Sistema di trading BW MFI

In questa parte dell'articolo inizieremo a creare il nostro sistema di trading per ogni strategia menzionata. Iniziamo a creare un semplice sistema di trading che restituisce un commento sul grafico con il valore attuale del BW MFI per utilizzarlo come base per altre strategie. Di seguito sono illustrati i passi da seguire a tale scopo:

Creare un array per BWMFIArray utilizzando la funzione double, che è uno dei tipi reali per restituire valori con frazioni.

double BWMFIArray[];

Ordinare i dati in questo array utilizzando la funzione "ArraySetAsSeries". I suoi parametri:

  • array[]: per determinare l'array creato, che è BWMFIArray.
  • flag: Direzione di indicizzazione dell’array, che sarà true.
ArraySetAsSeries(BWMFIArray,true);

Creare una variabile integer per BWMFIDef e definire il Bill Williams Market Facilitation Index utilizzando la funzione "iBWMFI", che restituisce l'handle dell'indicatore e i suoi parametri sono:

  • symbol: per determinare il simbolo desiderato, useremo _Symbol da applicare al simbolo corrente.
  • period: per determinare il periodo, utilizzeremo _PERIOD da applicare al time frame corrente.
  • applied_volume: per determinare il tipo di volume, utilizzeremo VOLUME_TICK.
int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);

Definizione dei dati e memorizzazione dei risultati mediante la funzione "CopyBuffer" per BWMFIArray. I suoi parametri:

  • indicator_handle: per determinare l'handle dell'indicatore, utilizzeremo BWMFIDef.
  • buffer_num: per determinare il numero di buffer dell'indicatore, useremo (0).
  • start_pos: per determinare la posizione iniziale, determineremo (0).
  • count: per determinare la quantità da copiare, utilizzeremo (3).
  • buffer[]: per determinare l'array di destinazione da copiare, useremo BWMFIArray.
CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);

Ottenere il valore corrente di BWMFI dopo aver creato una variabile double per BWMFIVal. Quindi, utilizzeremo la funzione NormalizeDouble per arrotondare.

  • value: Utilizzeremo BWMFIArray[0] per il valore corrente.
  • digits: Utilizzeremo (5) per le cifre dopo la virgola.
double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);

Usare la funzione Comment per visualizzare il valore corrente di BW MFI.

Comment("BW MFI Value = ",BWMFIVal);

Di seguito è riportato il codice completo in un unico blocco per questo sistema di trading:

//+------------------------------------------------------------------+
//|                             Simple Market Facilitation Index.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   ArraySetAsSeries(BWMFIArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   Comment("BW MFI Value = ",BWMFIVal);
  }
//+------------------------------------------------------------------+

Dopo aver compilato le righe di codice precedenti senza errori, troveremo questo expert nella finestra del navigatore sotto la cartella Expert Advisors nel terminale di trading MetaTrader 5, come segue:

BW MFI nav

Trascinando e rilasciando l'expert Simple Market Facilitation Index sul grafico desiderato, troveremo la finestra di questo EA uguale alla seguente:

Finestra BW MFI

Dopo aver spuntato la voce Consenti Algo Trading e aver premuto OK, troviamo l'EA allegato come segue:

Simple BW MFI allegato

Ora siamo pronti a ricevere i segnali, come nell'esempio di test che segue:

Segnale Simple BW MFI

Come possiamo vedere nel grafico precedente, abbiamo un segnale basato su questa strategia di trading che viene visualizzato come commento con il valore attuale del BW MFI nell'angolo in alto a sinistra.

Strategia uno: BW MFI - Movement Status

Il codice completo per creare questo tipo di sistema di trading è il seguente:

//+------------------------------------------------------------------+
//|                                     BW MFI - Movement Status.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }
   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }
  }
//+------------------------------------------------------------------+

Differenze in questo codice:

Creare due array BWMFIArray e volArray e ordinare i dati in questi array utilizzando la funzione "ArraySetAsSeries".

   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
Creazione di variabili integer per BWMFIDef e volDef. Definizione di Bill Williams Market Facilitation Index mediante la funzione "iBWMFI" e dei Volumi mediante la funzione "iVolumes", che restituiscono gli handle degli indicatori, i parametri sono gli stessi per entrambi:
  • symbol: per determinare il simbolo desiderato, useremo _Symbol da applicare al simbolo corrente.
  • period: per determinare il periodo, utilizzeremo _PERIOD da applicare al time frame corrente.
  • applied_volume: per determinare il tipo di volume, utilizzeremo VOLUME_TICK.
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);

Definizione dei dati e memorizzazione dei risultati mediante la funzione "CopyBuffer" per volArray.

CopyBuffer(volDef,0,0,3,volArray);

Definizione dei valori attuali e precedenti di BWMFI e dei volumi:

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);

Condizioni della strategia:

Nel caso della barra verde,

   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }

Nel caso della barra marrone,

   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }

Nel caso della barra blu,

   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }

Nel caso della barra rosa,

   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }

Dopo aver compilato il codice precedente senza errori ed averlo eseguito, scopriremo che è allegato al grafico come il seguente:

Movement Status allegato

Come si può vedere, l'EA è allegato nell'angolo in alto a destra della figura precedente. Siamo pronti a ricevere i segnali di questo sistema di trading come i seguenti esempi di test:

Nel caso del segnale di stato verde,

Movement Status - Segnale verde

 

Come si può vedere nella figura precedente, abbiamo il segnale di stato verde nell'angolo in alto a sinistra.

Nel caso dello stato di affievolimento:

Movement Status - Segnale di affievolimento

Il segnale di affievolimento basato su questa strategia è riportato come commento nell'angolo in alto a sinistra.

Nel caso del falso stato:

Movement Status - Falso Segnale

Lo stesso che possiamo vedere nell'esempio precedente, quando abbiamo ottenuto un segnale di falso stato basato su questo sistema di trading.

Nel caso dello stato di accovacciamento:

Movement Status - Segnale di accovacciamento

Abbiamo un segnale di uno stato di accovacciamento come commento nell'angolo superiore sinistro del grafico basato su questa strategia di trading. 

Strategia due: Segnali BW MFI

Di seguito è riportato il codice completo del sistema di trading di questa strategia.

//+------------------------------------------------------------------+
//|                                               BW MFI Signals.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   
   if(greenState)
     {
      Comment("Find a good entry");
     }
   if(fadeState)
     {
      Comment("Find a good exit");
     }
   if(fakeState)
     {
      Comment("False breakout Probability");
     }
   if(squatState)
     {
      Comment("Market is Balanced");
     }
  }
//+------------------------------------------------------------------+

Differenze di questo codice:

Dichiarare le variabili bool per i quattro stati: verde (green), affievolimento (fade), falso (fake) e accovacciamento (squat) alle condizioni specifiche di ogni stato,

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Condizioni della strategia:

Nel caso dello stato verde

   if(greenState)
     {
      Comment("Find a good entry");
     }

Nel caso dello stato di affievolimento

   if(fadeState)
     {
      Comment("Find a good exit");
     }

Nel caso del falso stato

   if(fakeState)
     {
      Comment("False breakout Probability");
     }

Nel caso dello stato di accovacciamento

   if(squatState)
     {
      Comment("Market is Balanced");
     }

Dopo la compilazione e l'esecuzione di questo codice, l'EA è allegato al grafico come segue:

Segnali BW MFI allegato

Possiamo vedere che l'EA dei segnali BW MFI è allegato al grafico nell'angolo in alto a destra. Ora possiamo ottenere i nostri segnali basati su questo sistema di trading come segue:

Nel caso di individuazione di un buon segnale di entrata:

Trovare un buon segnale di ingresso

Il nostro segnale di ricerca di una buon ingresso si trova nell'angolo in alto a sinistra del grafico come commento.

Nel caso di individuazione di un buon segnale di uscita:

Trovare un buon segnale di uscita

Il nostro segnale di ricerca di una buona uscita si trova nell'angolo in alto a sinistra del grafico come commento.

In caso di segnale di Probabilità di falso breakout:

Segnali BW MFI - Falso segnale di breakout

Come possiamo vedere, il nostro segnale, probabilità di falso breakout è riportato nell'angolo in alto a sinistra del grafico come commento.

Segnale nel caso in cui il mercato sia Bilanciato:

Segnali BW MFI - Segnale bilanciato

Il nostro segnale di mercato equilibrato è riportato nell'angolo in alto a sinistra del grafico come commento.

Strategia tre: BW MFI con MA

Di seguito è riportato il codice completo di questo sistema di trading basato sulla strategia che combineremo tra il BW MFI e la media mobile.

//+------------------------------------------------------------------+
//|                                               BW MFI with MA.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   double maArray[];
   MqlRates pArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   ArraySetAsSeries(maArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);
   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }
   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }
      else
         Comment("");
  }
//+------------------------------------------------------------------+

Differenze in questo codice:

Creare altri due array per maArray utilizzando la funzione double e per pArray utilizzando la funzione MqlRates:

   double maArray[];
   MqlRates pArray[];

Ordinamento dei dati in maArray mediante la funzione "ArraySetAsSeries":

ArraySetAsSeries(maArray,true);

Creare una variabile integer per maDef e definire la Media Mobile utilizzando la funzione "iMA" che restituisce l'handle dell'indicatore e i suoi parametri sono:

  • symbol: per determinare il nome del simbolo. Determineremo _SYMBOL da applicare al grafico corrente.
  • period: per determinare il periodo, utilizzeremo _PERIOD da applicare al time frame corrente; è possibile utilizzare anche PERIOD_CURRENT per lo stesso scopo.
  • ma_period: per determinare il periodo della media, utilizzeremo (10).
  • ma_shift: per determinare lo scostamento orizzontale, se necessario. Impostiamo (0) perché non abbiamo bisogno di spostare la MA.
  • ma_method: per determinare il tipo di media mobile, imposteremo SMA (Simple Moving Average).
  • applied_price: per determinare il tipo di prezzo utilizzato nel calcolo, utilizzeremo il prezzo di chiusura.
int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

Ottenere i dati storici di MqlRates utilizzando la funzione "CopyRates":

  • symbol_name: per determinare il nome del simbolo, useremo (_Symbol) da applicare al simbolo corrente.
  • timeframe: per determinare il timeframe si utilizzerà _Period da applicare al timeframe corrente.
  • start_pos: per determinare il punto o la posizione di partenza, useremo (0) per partire dalla posizione corrente.
  • count: per determinare il conteggio da copiare, useremo (10).
  • rates_array[]: per determinare l'array di destinazione da copiare, useremo (pArray).
int data=CopyRates(_Symbol,_Period,0,10,pArray);

Definizione dei dati e memorizzazione dei risultati mediante la funzione "CopyBuffer" per BWMFIArray, volArray e maArray.

   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);

Ottenere i valori del BW MFI corrente, dei volumi, della media mobile semplice e del prezzo di chiusura, oltre ai valori precedenti del BW MFI e dei volumi.

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;

Creazione di variabili bool degli stati verde, affievolimento, falso e accovacciamento:

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Condizioni di questa strategia:

In caso di segnale di acquisto

   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }

In caso di segnale di vendita

   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }

Altrimenti

      else
         Comment("");

Dopo aver compilato ed eseguito questo codice, lo troveremo allegato al grafico come di seguito riportato:

 BW MFI con MA allegato

In caso di segnale di acquisto

BW MFI con MA - segnale di acquisto

Come possiamo vedere nell'angolo in alto a sinistra abbiamo un segnale di acquisto che è apparso come commento sul grafico.

In caso di segnale di vendita

BW MFI con MA - segnale di vendita

Come possiamo vedere nell'angolo in alto a sinistra abbiamo un segnale di vendita che è apparso come commento sul grafico. Attraverso i precedenti di questo argomento, abbiamo imparato a creare diversi sistemi di trading basati sulle strategie citate.

Conclusioni

Alla fine di questo articolo, si presume che abbiate compreso il concetto principale dell'indicatore tecnico Market Facilitation Index, sviluppato da Bill Williams. Ora dovreste sapere come calcolarlo manualmente e come inserirlo nel grafico della piattaforma di trading MetaTrader 5, nonché come interpretarne le letture. Abbiamo anche imparato a usarlo. A tal scopo, abbiamo preso in considerazione alcune semplici strategie basate sul concetto principale:

  • Strategia BW MFI - Movement Status: può essere utilizzato per ottenere gli stati del mercato in base alle barre dell'indicatore come segnale sul grafico (stati verde, affievolimento, falso, accovacciamento).
  • Strategia BW MFI Signals: può essere utilizzata per ottenere segnali sul grafico con la decisione adatta in base all'indicatore BW MFI (trovare una buona entrata, trovare una buona uscita, probabilità di falso breakout e il mercato è equilibrato).
  • Strategia BW MFI con MA: può essere utilizzata per ottenere segnali di acquisto e vendita basati sul BW MFI e sull'indicatore della media mobile semplice.

Consiglio a tutti di provare ad utilizzare strumenti tecnici aggiuntivi per ottenere risultati migliori e vedere l'intera visione del mercato. Inoltre, dovete testarli prima di utilizzarli nel vostro trading reale per assicurarvi che siano utili per voi, perché il concetto principale di questo articolo è quello di condividere informazioni solo a scopo educativo. In seguito, abbiamo progettato degli schemi passo-passo per ogni strategia, per aiutarci a creare facilmente i nostri sistemi di trading da utilizzare nella MetaTrader 5. Li abbiamo imparati e creati utilizzando il linguaggio MQL5.

Spero che questo articolo vi sia utile e che possiate ottenere ulteriori approfondimenti su questo argomento o su qualsiasi altro argomento correlato per migliorare il vostro trading. Spero anche che proviate ad applicare quanto appreso in questo articolo scrivendo i codici da soli - se volete migliorare le vostre capacità di programmazione MQL5, questo è un passo molto importante in ogni processo di apprendimento. Se volete leggere altri articoli simili su come imparare a creare un sistema di trading basato sugli indicatori tecnici più popolari, potete leggere gli altri articoli di questa serie e spero che anche voi li troviate utili.

Tradotto dall’inglese da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/en/articles/12172

Sviluppare un Expert Advisor per il trading da zero (Parte 29): La piattaforma parlante Sviluppare un Expert Advisor per il trading da zero (Parte 29): La piattaforma parlante
In questo articolo scopriremo come far parlare la piattaforma MetaTrader 5. E se rendessimo l'EA più divertente? Il trading sui mercati finanziari è spesso troppo noioso e monotono, ma possiamo rendere questo lavoro meno faticoso. Notare che questo progetto può essere pericoloso per chi ha problemi di dipendenza. Tuttavia, in generale, rende le cose meno noiose.
Impara come progettare un sistema di trading tramite Gator Oscillator Impara come progettare un sistema di trading tramite Gator Oscillator
Un nuovo articolo della nostra serie su come progettare un sistema di trading basato sugli indicatori tecnici popolari riguarderà l'indicatore tecnico Gator Oscillator e come creare un sistema di trading attraverso semplici strategie.
Sviluppare un Expert Advisor da zero (Parte 30): CHART TRADE come indicatore? Sviluppare un Expert Advisor da zero (Parte 30): CHART TRADE come indicatore?
Oggi utilizzeremo nuovamente Chart Trade, ma questa volta si tratterà di un indicatore su grafico che può essere presente o meno sul grafico.
Come gestire le linee utilizzando MQL5 Come gestire le linee utilizzando MQL5
In questo articolo, troverete il modo di gestire le linee più importanti come le trend line, supporto e resistenza con MQL5.