English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Scopri come progettare diversi sistemi di Media Mobile

Scopri come progettare diversi sistemi di Media Mobile

MetaTrader 5Trading | 20 maggio 2022, 10:09
734 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Penso che, qualunque sia il tuo periodo di esperienza nel trading archiviato, tu abbia sentito la citazione 'Trend is your friend'. E se non ne hai sentito parlare, ecco cosa significa perché tutti sanno che abbiamo diversi tipi di direzioni di mercato o tendenze di movimento dei prezzi.

  • Trend rialzista: possiamo vederlo quando i prezzi fanno minimi e massimi crescenti
  • Trend ribassista: possiamo vederlo quando i prezzi fanno l'opposto del trend rialzista, massimi e minimi decrescenti.
  • Laterale: si definisce così ogni movimento diverso dal trend rialzista o ribassista.

Le seguenti figure mostrano trend rialzista e ribassista in forma di grafico a linee. Qualsiasi movimento diverso è laterale:

Trend rialzista

Trend ribassista

Ora, abbiamo identificato il trend, ma perché il trend è mio amico?

Parleremo qui di tendenze, ovvero trend rialzista e ribassista, ovvero di chiari movimenti al rialzo o al ribasso. Possiamo vedere il controllo del mercato da parte di un particolare partecipante. Durante il trend rialzista, possiamo vedere che l'acquirente è il ha il controllo mentre spinge i prezzi verso l'alto, qualunque sia l'offerta, e qui chiamiamo questo mercato un mercato rialzista. Viceversa, durante un trend al ribasso, possiamo vedere che il venditore è in controllo mentre spinge i prezzi verso il basso e qui chiamiamo questo mercato un mercato ribassista.

In alcuni casi, potremmo incontrare ciò che chiamiamo falso breakout. I falsi breakout possono danneggiare i nostri risultati di trading. Come? Vedremo qui come, ma prima definiamo i falsi breakout.

I Falsi breakout sono i segnali che ci danno un input per prendere una decisione e, dopo aver preso la decisione, il mercato va contro quella decisione. E sicuramente questo tipo di decisioni danneggerà i nostri risultati di trading. Questi falsi breakout o seghe a frusta possono essere ridotti filtrandoli con molte strategie. Una delle migliori strategie che può farlo per noi è usare una media mobile e questo è l'argomento di questo articolo per imparare come possiamo usare alcune delle strategie di media mobile e come progettare un sistema di trading algoritmico per loro e farne uso preciso, facile e sistematico.

In questo articolo analizzeremo i seguenti argomenti:

Disclaimer: tutto il contenuto di questo articolo è stato creato solo a scopo educativo e non per altro. Quindi, qualsiasi azione verrà intrapresa in base al contenuto di questo articolo, sarà tua responsabilità in quanto il contenuto di questo articolo non garantirà alcun tipo di risultato. Tutte le strategie potrebbero richiedere test e ottimizzazioni preliminari per dare risultati migliori poiché quello che ho definito come l'obiettivo principale di questo articolo è solo uno scopo educativo.

Tutti i codici saranno scritti da MQL5 e saranno testati su MT5.

Si noti che ci sono molte strategie che possono essere utilizzate per filtrare i segnali generati in base a qualsiasi strategia, anche utilizzando la stessa media mobile che è l'argomento di questo articolo. Quindi, l'obiettivo di questo articolo è condividere con te alcune delle strategie di media mobile e come progettare un sistema di trading algoritmico per farti sapere e aprire gli occhi su cosa puoi fare e come potresti sviluppare la tua strategia di trading. Ora, esaminiamo questo argomento 'Impara a progettare diversi sistemi di media mobile' poiché sono molto entusiasta di condividerlo con te…


Definizione di Media Mobile


La media mobile è un indicatore comunemente utilizzato nell'analisi tecnica ed è calcolato per darci una media dei prezzi durante un periodo di tempo specifico o in altre parole ci aiuta a uniformare i dati sui prezzi per mitigare i movimenti casuali o fluttuanti a breve termine sul grafico.

Esistono molti tipi di medie mobili e le differenze tra di loro sono legate ai calcoli utilizzati per definirle, cosa di cui parlerò in dettaglio nel prossimo argomento. Ma qui quello che voglio che tu sappia, prima di scendere in ulteriori dettagli, è che ci sono molti tipi di medie e che la differenza tra di loro attiene al calcolo per ottenere il miglior risultato.

La media mobile è un indicatore di tendenza in quanto viene calcolato sui prezzi. Pertanto, se il prezzo si muove in una determinata tendenza, la media mobile seguirà la stessa tendenza.

La media mobile è un indicatore in ritardo (lagging) poiché cambia dopo il prezzo, e questo è normale in quanto viene calcolata in base al prezzo, quindi il prezzo deve muoversi per primo. In altre parole, dobbiamo prima avere i dati sui prezzi, quindi possiamo trovare i dati sulla media mobile, facendo calcoli su i dati relativi ai prezzi.

In base alla natura della media mobile, possiamo capire che la media mobile:

  • Dà la Media.
  • Funziona meglio con i mercati in trend.
  • Confermerà che c'è una tendenza o ci aiuterà a identificare la tendenza.
  • Eliminerà il rumore o il movimento casuale dei prezzi.
  • Ci aiuterà a evitare i falsi breakout dovuti ai movimenti casuali, in quanto verranno eliminati.
  • E altro ancora…...

Tipi di Medie Mobili


Esistono molti tipi di medie mobili che possono essere utilizzate. Le più comunemente utilizzate sono:

  • Media Mobile Semplice.
  • Media Mobile Ponderata.
  • Media Mobile Esponenziale.

La principale differenza tra di loro è legata ai diversi calcoli utilizzati per ottenere un risultato migliore, ciò a cui ho accennato prima.

Adesso identificheremo questi tipi di medie mobili ed esploreremo le differenze tra di loro. Vedremo anche come queste medie mobili possono essere utilizzate in MQL5 e come possiamo richiamarle se vogliamo usarne un tipo specifico.

Media Mobile Semplice:

Questo è il tipo più semplice di media mobile e la sua dicitura comunemente usata è SMA.

Viene calcolata prendendo la media aritmetica di un dato insieme di valori in un determinato periodo di tempo. Una serie di prezzi viene sommata e poi divisa per il numero di prezzi della serie.

SMA

Esempio: abbiamo 5 giorni di negoziazione e i prezzi di chiusura di questi 5 giorni erano i seguenti:

  • Giorno1 = 10
  • Giorno2 = 15
  • Giorno3 = 20
  • Giorno4 = 30
  • Giorno5 = 35

Se vogliamo ottenere SMA per questi 5 giorni, verrà calcolato come segue:


Esempio SMA

Media Mobile Ponderata

La media mobile ponderata (WMA), nel modo in cui viene comunemente utilizzata, fornisce una media dei prezzi di un periodo di tempo specifico. La differenza qui sta nel fatto che il calcolo attribuisce più peso ai dati più recenti. Ciò significa che se calcoliamo 10 giorni di negoziazione, questo tipo di media non darà ugual peso ai dati di tutti i 10 giorni di negoziazione ma darà più peso ai dati recenti.

Può essere calcolata con la seguente formula:

WMA


Esempio:

Se abbiamo gli stessi 5 giorni di negoziazione e i prezzi di chiusura di questi 5 giorni erano i seguenti:

  • Giorno1 = 10
  • Giorno2 = 15
  • Giorno3 = 20
  • Giorno4 = 30
  • Giorno5 = 35

Se vogliamo ottenere WMA per questi 5 giorni, verrà calcolato come segue:

Esempio WMA


Esempio WMA1


Media mobile esponenziale

La media mobile esponenziale o EMA, nel suo uso comune, rende sempre una media dei prezzi con la differenza che nella EMA non non si elimina il periodo prima del periodo calcolato come MA, questo significa che se dobbiamo calcolare 10 MA, verrà considerato il periodo prima di quei 10 giorni di negoziazione.

Può essere calcolata come segue:

Innanzitutto, calcoleremo 'K' per fare riferimento all'esponente per calcolare il peso di un intervallo e 'n' si riferirà al numero di intervalli:

EMA

Quindi,

EMA

Esempio:

Se abbiamo gli stessi 5 giorni di negoziazione e i prezzi di chiusura di questi 5 giorni erano i seguenti:

  • Giorno1 = 10
  • Giorno2 = 15
  • Giorno3 = 20
  • Giorno4 = 30
  • Giorno5 = 35
  • Giorno6 = 40

Se vogliamo ottenere l'EMA per questi 5 giorni, sarà calcolato come segue:

Esempio EMA


Esempio EMA

Si noti che qui l'EMA di ieri sarà la prima usata per calcolare l'EMA al Giorno6, quindi utilizzeremo la SMA di 5 giorni (22).


Ora, dopo aver chiarito cos'è una media mobile e quali sono i tipi di medie mobili, analizzeremo la parte più interessante di questo articolo. Parleremo delle strategie basate sulla media mobile e di come possiamo progettare sistemi di trading algoritmici per esse.


Strategia1: Incrocio di Una Media Mobile

In questo articolo, sceglieremo la media mobile semplice. Tuttavia, puoi utilizzare qualsiasi tipo di media mobile nel tuo codice.

Secondo la strategia, prezzi e SMA verranno controllati ad ogni tick:

  • Prezzo > SMA: il segnale sarà di acquisto e abbiamo bisogno che questo segnale appaia come commento sul grafico.
  • Prezzo < SMA: il segnale sarà vendere e abbiamo bisogno che questo segnale appaia come commento sul grafico.
  • Se non altro, non fare nulla.

Lo screenshot seguente mostra un progetto di media mobile semplice che vogliamo progettare:

Progetto 1MA


Il seguente è il codice per progettare questa strategia:

//+------------------------------------------------------------------+
//|                                            One SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for price
   double myMovingAverageArray1[];
   
   //define Ask, Bid
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //define the properties of  MAs - simple MA 24
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   
   //sort the price arrays current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   
   //Defined MA - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   
   //Check if we have a buy entry signal
   if (
      (Ask>myMovingAverageArray1[0])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (Bid<myMovingAverageArray1[0])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Gli screenshot seguenti mostrano i segnali generati dopo l'esecuzione del codice:

1MA - segnale di acquisto

1MA - segnale di vendita

Strategia 2: Incrocio di Due Medie Mobili

In questa strategia utilizzeremo due semplici medie mobili. Il periodo di media mobile semplice più breve è 24 e quello più lungo è 50.

Secondo questa strategia, abbiamo bisogno di controllare le due medie mobili semplici ad ogni tick:

  • Se 24 SMA > 50 SMA: il segnale sarà di acquisto e abbiamo bisogno che questo segnale appaia come commento sul grafico.
  • Se 24 SMA < 50 SMA: il segnale sarà vendere e abbiamo bisogno che questo segnale appaia come commento sul grafico.
  • Altrimenti, non fare nulla.

Lo screenshot seguente mostra il progetto di due medie mobili semplici che vogliamo progettare:

Progetto 2MA


Il seguente è il codice per progettare questa strategia:

//+------------------------------------------------------------------+
//|                                            Two SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for several prices
   double myMovingAverageArray1[], myMovingAverageArray2[];
   
   //define the properties of  MAs - simple MA, 1st 24 / 2nd 50
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,50,0,MODE_SMA,PRICE_CLOSE);
   
   //sort the price arrays 1, 2 from current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   
   //Defined MA1, MA2 - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   
   //Check if we have a buy entry signal
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Gli screenshot seguenti mostrano i segnali generati dopo l'esecuzione del codice:

2MA - segnale di acquisto


2MA - segnale di vendita


Strategia 3: Incrocio di Tre Medie Mobili

In questa strategia, utilizzeremo tre medie mobili semplici: il periodo della media mobile semplice più breve è 10, il periodo più lungo è 48 e nel mezzo un periodo di 24.

Secondo la strategia, abbiamo bisogno delle tre medie mobili semplici da controllare ad ogni tick:

  • Se 10 SMA > 24 SMA, 10 SMA > 48 SMA, e 24 SMA > 48 SMA: il segnale sarà di acquisto e dobbiamo comparire come commento sul grafico.
  • Se 10 SMA < 24 SMA, 10 SMA < 48 SMA e 24 SMA < 48 SMA: il segnale sarà di vendere e dobbiamo comparire come commento sul grafico.
  • Altrimenti, non fare nulla.

Lo screenshot seguente mostra il progetto delle tre medie mobili semplici che vogliamo progettare:

Progetto 3MA


Il seguente è il codice per progettare questa strategia:

//+------------------------------------------------------------------+
//|                                          Three SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for several prices
   double myMovingAverageArray1[], myMovingAverageArray2[],myMovingAverageArray3[];
   
   //define the properties of  MAs - simple MA, 1st 10 / 2nd 24, 3rd 48
   int movingAverage1 = iMA(_Symbol, _Period, 10, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,24,0,MODE_SMA,PRICE_CLOSE);
   int movingAverage3 = iMA(_Symbol,_Period,48,0,MODE_SMA,PRICE_CLOSE);
   
   //sort the price arrays 1, 2, 3 from current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   ArraySetAsSeries(myMovingAverageArray3,true);
   
   //Defined MA1, MA2, MA3 - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   CopyBuffer(movingAverage3,0,0,3,myMovingAverageArray3);
   
   //Check if we have a buy entry signal
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]<myMovingAverageArray3[1])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]>myMovingAverageArray3[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Gli screenshot seguenti mostrano i segnali generati dopo l'esecuzione del codice:

3MA - segnale di acquisto


3MA - segnale di vendita


Conclusione

In questo articolo ho preso in esame uno degli indicatori più comunemente utilizzati e importanti, condividendo tre diverse strategie. Ho anche cercato di mostrare come possiamo utilizzare questi indicatori e come possiamo progettare sistemi di trading algoritmici basati su ciascuno di essi. Queste strategie possono essere utilizzate in modo accurato ed efficace, ovviamente dopo precedenti test e ottimizzazioni.



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

Stoploss Fisso sulla PriceAction o RSI Fisso (StopLoss Intelligente) Stoploss Fisso sulla PriceAction o RSI Fisso (StopLoss Intelligente)
Lo stop loss è uno strumento importante quando si tratta di gestione del denaro nel trading. L'uso efficace di stop-loss, take profit e dimensione del lotto può rendere un trader più costante nel trading e nel complesso più redditizio. Sebbene lo stop-loss sia un ottimo strumento, ci sono delle sfide che si incontrano quando viene utilizzato. La principale è la caccia allo stop loss. Questo articolo esamina come ridurre gli effetti della caccia allo stop loss nel trading e confrontarlo con il classico utilizzo dello stop loss per determinarne la redditività.
Sviluppo di un Expert Advisor di trading da zero Sviluppo di un Expert Advisor di trading da zero
In questo articolo, discuteremo come sviluppare un robot di trading con una programmazione minima. Naturalmente, MetaTrader 5 offre un elevato livello di controllo sulle posizioni di trading. Tuttavia, utilizzare solo la capacità manuale di effettuare ordini può essere piuttosto difficile e rischioso per gli utenti meno esperti.
MetaTrader 4 su Linux MetaTrader 4 su Linux
In questo articolo, mostriamo un modo semplice per installare MetaTrader 4 sulle versioni Linux più diffuse: Ubuntu e Debian. Questi sistemi sono ampiamente utilizzati sull'hardware del server e sui personal computer degli operatori.
Scopri perché e come progettare il tuo sistema di trading algoritmico Scopri perché e come progettare il tuo sistema di trading algoritmico
Questo articolo mostra le basi di MQL per i principianti che vogliono progettare il loro sistema di trading algoritmico (Expert Advisor) attraverso la progettazione di un semplice sistema di trading algoritmico, dopo aver passato in rassegna alcune delle basi di MQL5