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

Impara come progettare un sistema di trading tramite la Deviazione Standard

MetaTrader 5Trading | 24 aprile 2023, 08:21
629 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Benvenuti ad un nuovo articolo della nostra serie in cui impariamo come poter creare un sistema di trading attraverso gli indicatori tecnici più popolari. In questo nuovo articolo scopriremo in dettaglio un nuovo strumento che può essere utilizzato per migliorare il nostro trading e impareremo a creare un sistema di trading incentrato sul concetto di base che ne è dietro. Questo nuovo indicatore è l'indicatore di Deviazione Standard. Tratteremo questo indicatore nel dettaglio attraverso i seguenti argomenti:

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

Attraverso l'argomento della definizione di Deviazione Standard, impareremo in modo più dettagliato cos'è la Deviazione Standard, cosa misura e come possiamo calcolarla manualmente per apprendere il concetto di base che ne è dietro, quindi lo applicheremo ad un esempio per calcolare il valore della Deviazione Standard. Dopodiché passeremo all'argomento successivo, ovvero la strategia con la Deviazione Standard, per capire come possiamo utilizzare l'indicatore di Deviazione Standard attraverso semplici strategie basate sul concetto di base dell'indicatore. Poi passeremo all'argomento dello schema della strategia con la Deviazione Standard, per progettare uno schema che ci aiuti a creare un sistema di trading per ogni strategia, in quanto questo schema sarà uno schema passo-passo per organizzare le idee e creare questo sistema di trading senza problemi. Dopodiché passeremo all'argomento più interessante di questo articolo, ovvero il sistema di trading con la Deviazione Standard, per creare un sistema di trading per ogni strategia menzionata da utilizzare in MetaTrader 5 per generare segnali automaticamente.

Utilizzeremo MetaTrader 5 e MetaEditor per scrivere i codici MQL5 (MetaQuotes Language) per creare il nostro sistema di trading, se non sapete come scaricare e utilizzare MetaEditor, potete leggere l'argomento Scrivere il codice MQL5 in MetaEditor da un articolo precedente per saperne di più.

Vi consiglio di applicare ciò che imparate da soli per approfondire la vostra comprensione e ottenere maggiori spunti sull'argomento o su qualsiasi altro argomento correlato per trarre il massimo beneficio dalle informazioni dell'articolo. Inoltre, dovete testare qualsiasi strategia da soli prima di utilizzarla sul vostro conto reale, per assicurarvi che vi sia utile, poiché non esiste nulla di adatto a tutti.

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.

Partiamo con i nostri argomenti per imparare il nostro nuovo strumento.


Definizione di Deviazione Standard

In questo argomento impareremo cosa sia l'indicatore Deviazione Standard in modo più dettagliato, definendolo, imparando cosa misura e come calcolarlo manualmente per apprenderne il concetto di base. Applicheremo poi questo calcolo ad un esempio.

Deviazione Standard è un termine di statistica. Questo termine statistico misura la dispersione intorno alla media o al valore medio. Ma cos'è la dispersione? Semplicemente, è la differenza tra un qualsiasi valore effettivo e la media o il valore medio. Più alta è la dispersione, più alta è la Deviazione Standard. Minore è la dispersione, minore è la Deviazione Standard. L'indicatore di Deviazione Standard misura la volatilità.

Ora dobbiamo imparare come possiamo calcolare la Deviazione Standard. Possiamo farlo facilmente attraverso i seguenti passaggi:

1- Calcolare la media o il valore medio del periodo desiderato.

2- Calcolare la deviazione sottraendo ogni prezzo di chiusura dalla sua media.

3- Quadrato di ogni deviazione calcolata.

4- Sommare le deviazioni al quadrato e dividerlo per il numero di osservazioni.

5. Calcolare la Deviazione Standard, che è pari alla radice quadrata del risultato del quarto passo.

Di seguito riportiamo un esempio di applicazione di questo calcolo per approfondire la nostra comprensione. Se abbiamo i seguenti dati di uno strumento.

# Prezzo di chiusura
1 1.05535
2 1.05829
3 1.0518
4 1.04411
5 1.04827
6 1.04261
7 1.04221
8 1.02656
9 1.01810
10 1.01587
11 1.01831

Primo passaggio: calcoleremo la media mobile a 10 periodi e considereremo che tutte le MA fino alla decima siano la stessa media mobile. Quindi, il seguente è il risultato dopo il calcolo.

Passo 1

Secondo passaggio: Calcolare la deviazione. Di seguito è riportato il risultato dopo il calcolo.

Passaggio 2

Terzo passaggio: Calcolare la deviazione al quadrato.

Terzo passaggio

Quarto passaggio: Calcolare la media a 10 periodi della deviazione al quadrato.

Passo 4

Quinto passaggio: Calcolare la Deviazione Standard = radice quadrata del risultato del quarto passaggio.

Passaggio 5

In base ai passaggi precedenti, abbiamo calcolato il valore della Deviazione Standard. Al giorno d'oggi siamo molto fortunati perché non abbiamo bisogno di calcolarla manualmente in quanto è un indicatore integrato nella piattaforma di trading MetaTrader 5. Tutto ciò che dobbiamo fare è selezionarlo tra gli indicatori disponibili nella piattaforma di trading. Di seguito viene illustrato il modo in cui è possibile farlo.

All'apertura della piattaforma di trading MetaTrader 5 premeremo la scheda Inserisci --> Indicatori --> Trend --> Standard Deviation.

 Inserimento Std Dev

Successivamente, si aprirà la seguente finestra per i parametri dell'indicatore.

 Param. Std Dev

1- Per determinare il periodo che useremo.

2- Per determinare la quantità di scostamento orizzontale della linea dell'indicatore, se si desidera farlo.

3- Per selezionare il tipo di media mobile.

4- Per selezionare i tipi di prezzo che utilizzeremo nel calcolo.

5- Per determinare il colore della linea dell'indicatore.

6- Per determinare lo stile della linea.

7- Per determinare lo spessore della linea.

Dopo aver determinato i parametri desiderati, possiamo trovare l'indicatore inserito nel grafico come segue.

 Indicatore Std Dev allegato

Come si può vedere nell'immagine precedente, la Deviazione Standard è stata inserita e possiamo trovarla nella finestra inferiore come linea oscillante basata sul valore della deviazione standard.

Attraverso questo argomento abbiamo approfondito la conoscenza dell'indicatore Deviazione Standard: abbiamo appreso cos'è, cosa misura e come possiamo calcolarlo manualmente per comprendere il concetto di base e applicare questo calcolo ad un esempio.


Strategia con la Deviazione Standard

In questo argomento, dopo aver appreso in dettaglio l'indicatore Deviazione Standard e averne appreso il concetto principale, impareremo come utilizzare l'indicatore di Deviazione Standard secondo il concetto di base che ne è dietro. Impareremo a utilizzare l'indicatore di Deviazione Standard attraverso tre semplici strategie. La prima, Semplice Std Dev - Volatility, verrà utilizzata per sapere se c'è volatilità o meno. Per quanto riguarda la seconda, Semplice Std Dev - Std e MA, lo utilizzeremo accompagnato dalla media mobile per ottenere segnali di acquisto o vendita. La terza, Semplice Std Dev - Std, AVG e MA, verrà utilizzata insieme alla media mobile dopo aver visto un'elevata volatilità per ottenere segnali di acquisto o vendita.

  • Strategia uno: Semplice Std Dev - Volatility:

Sulla base di questa strategia, dobbiamo misurare la volatilità in base al confronto tra l'attuale Std Dev e la media dei cinque valori Std precedenti. Se l'attuale Std Dev è superiore alla media della Std Dev di 5 periodi, sarà un segnale di alta volatilità. Se l'attuale Std è inferiore alla media della Std Dev di 5 periodi, si tratta di bassa volatilità.

Std corrente > Std AVG --> alta volatilità

Current Std < Std AVG --> bassa volatilità

  • Strategia due: Semplice Std Dev - Std e MA:

Sulla base di questa strategia, dobbiamo ottenere segnali di acquisto e di vendita in base a condizioni specifiche. Se l'attuale Std Dev è maggiore di quella precedente e il valore Ask è maggiore della media mobile, questo sarà un segnale di acquisto. Se l'attuale Std Dev è maggiore della precedente Std Dev e il valore Bid è inferiore alla media mobile, questo sarà un segnale di vendita.

Std corrente > Prev. Std e Ask > MA --> Segnale di acquisto

Std corrente > Prev. Std e Bid < MA --> Segnale di vendita

  • Strategia tre: Semplice Std Dev - Std, Std AVG e MA:

Sulla base di questa strategia, dobbiamo ottenere segnali di acquisto e di vendita basati su altre condizioni. Se l'attuale Std Dev è maggiore di Std Dev Avg e l’Ask è maggiore della media mobile, questo sarà un segnale di acquisto. Se l'attuale Std Dev è maggiore di Std Dev Avg e il Bid è inferiore alla media mobile, questo sarà un segnale di vendita.

Std corrente > Std Avg e Ask > MA --> Segnale di acquisto

Std corrente > Std Avg e Bid < Ma --> Segnale di vendita

Con la strategia precedente abbiamo imparato a utilizzare l'indicatore Deviazione Standard attraverso tre semplici strategie per misurare la volatilità e ottenere segnali di acquisto e di vendita in base a due diverse condizioni. Potete anche provare ad unire altri indicatori tecnici per ottenere maggiori informazioni su più prospettive dello strumento finanziario in base al vostro piano e alla vostra strategia di trading.


Schema della strategia con la Deviazione Standard

In questo argomento, impareremo come progettare uno schema passo dopo passo per ogni strategia, per aiutarci a creare un sistema di trading basato su ogni strategia menzionata. A mio avviso, questa fase è molto importante perché ci aiuterà a organizzare le nostre idee in modo da creare il nostro sistema di trading in modo semplice e senza intoppi. Pertanto, ora presenterò uno schema che può essere utile per informare il computer su ciò che dobbiamo fare esattamente.

  • Strategia uno: Semplice Std Dev - Volatility:

Secondo questa strategia, abbiamo bisogno che il sistema controlli due valori ed esegua un confronto continuo tra loro. Questi due valori sono l'attuale Std Dev e la media dei cinque valori precedenti della Std Dev. Dopodiché, è necessario che il sistema di trading decida quale dei due è più grande dell'altro. Se l'attuale Std Dev è superiore alla media, è necessario visualizzare un commento sul grafico con:

  • Alta volatilità.
  • Valore corrente di Std Dev.
  • Valore medio di 5 periodi di Std Dev.

Se l'attuale Std Dev è inferiore alla media, è necessario visualizzare un commento sul grafico con,

  • Bassa volatilità.
  • Valore corrente di Std Dev.
  • Valore medio di 5 periodi di Std Dev.
L'immagine che segue è relativa a questo schema passo-passo per la semplice strategia Std Dev - Volatility.

Semplice Std Dev - Volatility schema

  • Strategia due: Semplice Std Dev - Std e MA:

Secondo questa strategia, abbiamo bisogno che il sistema controlli quattro valori ed esegua un confronto continuo. Questi quattro valori sono l’attuale Std Dev, il precedente Std Dev, l’Ask e il valore della media mobile. Dopo aver controllato questi valori, è necessario che il sistema di trading decida e visualizzi un segnale adeguato in base a questi valori.

Se l'attuale Std Dev è maggiore del precedente Std Dev e il valore Ask è maggiore della media mobile, abbiamo bisogno che il sistema di trading generi un commento sul grafico con i seguenti valori:

  • Segnale di acquisto.
  • Valore corrente di Std Dev.
  • Valore precedente di Std Dev.
  • Valore dell’Ask.
  • Valore della media mobile.

Se l'attuale Std Dev è maggiore del precedente Std Dev e il valore Bid è inferiore alla media mobile, abbiamo bisogno che il sistema di trading generi un commento sul grafico con i seguenti valori:

  • Segnale di vendita.
  • Valore corrente di Std Dev.
  • Valore precedente di Std Dev.
  • Valore del Bid.
  • Valore della media mobile.
L'immagine che segue è relativa a questo schema passo-passo per la semplice strategia Std Dev - Std e MA.

 Semplice Std Dev - Std _ MA schema

  • Strategia tre: Semplice Std Dev - Std, Avg e MA:

Secondo questa strategia, abbiamo bisogno che il sistema di trading controlli continuamente quattro valori e decida quale segnale bisogna vedere in base al confronto tra questi valori. Questi valori sono Std Dev corrente, Std Dev Avg, Ask e la media mobile.

Se il valore Std corrente è maggiore di Std Dev Avg e l'Ask è maggiore della media mobile, il sistema di trading deve generare un segnale come commento sul grafico con i seguenti valori:

  • Segnale di acquisto.
  • Valore corrente di Std Dev.
  • Valore della media di Std Dev.
  • Valore dell’Ask.
  • Valore della media mobile.

Se l'attuale Std Dev è maggiore della media di Std Dev e il Bid è inferiore alla media mobile, il sistema di trading deve generare un segnale come commento sul grafico con i seguenti valori:

  • Segnale di vendita.
  • Valore corrente di Std Dev.
  • Valore della media di Std Dev.
  • Valore del Bid.
  • Valore della media mobile.
L'immagine che segue è relativa a questo schema passo-passo per la semplice strategia Std Dev - Std, Std AVG e MA.

Semplice Dev. std - Dev. std _ AVG _ MA schema

Ora, abbiamo imparato a progettare uno schema passo-passo per ogni strategia, per aiutarci a creare un sistema di trading per loro attraverso passaggi organizzati. 


Sistema di trading con la Deviazione Standard

In questo argomento, impariamo come progettare un sistema di trading per ogni strategia menzionata con MQL5 da applicare su MetaTrader 5. In primo luogo, progetteremo un semplice sistema di trading per la Deviazione Standard in grado di generare un commento sul grafico desiderato con il valore della deviazione standard in modo da utilizzarlo come base di progetto del sistema di trading per ogni strategia.  

  • Creazione di un array Std Dev utilizzando la funzione "double", che rappresenta valori frazionari. Double è uno dei tipi di dati in virgola mobile.
double StdDevArray[];
  • Ordinamento di questo array a partire dai dati correnti e lo faremo utilizzando la funzione "ArraySetAsSeries" per restituire un valore booleano vero o falso. I parametri di "ArraySetAsSeries" sono:
    • Un array[]
    • Flag
ArraySetAsSeries(StdDevArray,true);
  • Creare una variabile di tipo integer per StdevDef per definire la Deviazione Standard utilizzando la funzione "iStdDev" che restituisce l'handle dell'indicatore della Deviazione Standard. I parametri di questa funzione sono:
    • symbol, per impostare il nome del simbolo, specificheremo "_Symbol" per essere applicato al grafico corrente.
    • period, per impostare il time frame, specificheremo "_Period" per essere applicato al time frame corrente.
    • ma_period, per impostare la lunghezza della media mobile; come impostazione predefinita, imposteremo 20.
    • ma_shift, per impostare lo scostamento orizzontale, se lo si desidera, imposteremo 0.
    • ma_method, per determinare il tipo di media mobile, utilizzeremo la media mobile semplice (MODE_SMA).
    • applied_price, per determinare il tipo di prezzo da utilizzare, useremo il prezzo di chiusura (PRICE_CLOSE).
int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
  • Copiare i dati dei prezzi nell'array StdDev utilizzando la funzione "CopyBuffer" deve restituire il conteggio dei dati copiati o -1 in caso di errore. I parametri di questa funzione sono:
    • indicator_handle, specificheremo la definizione dell’indicatore "StdDevDef".
    • buffer_num, per impostare il numero del buffer dell'indicatore, si imposterà 0.
    • start_pos, per impostare la posizione iniziale, imposteremo 0.
    • count, per impostare la quantità da copiare, imposteremo 3.
    • buffer[], per determinare l'array di destinazione in cui copiare, determineremo "StdDevArray".
CopyBuffer(StdDevDef,0,0,3,StdDevArray);
  • Ottenere il valore StdDev utilizzando la funzione "NormalizeDouble" un tipo double, dopo aver creato una variabile double per "StdDevVal". I parametri di "Normalizedouble" sono:
    • value, per determinare il numero normalizzato, specificheremo "StdDevArray[0]".
    • digits, per determinare il numero di cifre dopo la virgola decimale, determineremo 6.
double StdDevVal = NormalizeDouble(StdDevArray[0],6);
  • La funzione "Comment" consente di visualizzare un commento sul grafico con il valore corrente di StdDev; non è previsto un valore di ritorno, ma verrà emesso il commento definito.
Comment("StdDev Value is",StdDevVal);

 Dopo la compilazione di questo codice, scopriremo che non ci sono errori o avvertimenti. Poi troveremo l'expert di questo sistema di trading nella finestra del navigatore come segue:

Std Dev n1

Trascinandolo e rilasciandolo sul grafico desiderato, apparirà la seguente finestra del sistema di trading:

Finestra Semplice Std Dev

Dopo aver spuntato la voce "Consenti Algo Trading" e aver premuto "OK", l'esperto di questo sistema di trading sarà allegato al grafico come segue:

 Semplice Std Dev allegato

Come si può vedere nell'angolo destro dell'immagine precedente, l'esperto è allegato al grafico.

L'immagine seguente è un esempio di test che mostra il segnale generato da questo sistema di trading.

Segnale semplice Std Dev

L'immagine seguente è un altro esempio dopo aver allegato l'expert di questo sistema di trading per generare automaticamente i segnali e, allo stesso tempo, inseriremo l'indicatore di Deviazione Standard incorporato per assicurarci che entrambi i valori StdDev siano uguali.

 Std Dev semplice stesso segnale 

  • Strategia uno: Semplice Std Dev - Volatility:

Ora, creeremo un sistema di trading per la semplice strategia Std Dev - Volatility e di seguito riportiamo il codice completo per creare un sistema di trading basato su questa strategia.

//+------------------------------------------------------------------+
//|                                  Simple Std Dev - Volatility.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()
  {
   double StdDevArray[];

   ArraySetAsSeries(StdDevArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

  }
//+------------------------------------------------------------------+

Le differenze in questo codice sono le stesse di quelle riportate di seguito:

Definiremo non solo il valore corrente di Std Dev, ma anche i cinque valori precedenti utilizzando la stessa funzione di definizione del valore corrente, ma useremo un numero differente nel numero normalizzato in modo fa fornirci il valore desiderato.

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);

Calcolo della media dei cinque valori precedenti.

double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

Condizioni della strategia:

In caso di elevata volatilità,

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

In caso di bassa volatilità,

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

Dopo aver compilato questo codice, lo troveremo nel navigatore come al seguente:

 Std Dev n2

Trascinandolo e rilasciandolo sul grafico desiderato, la finestra di questo sistema di trading si presenta come segue:

 Finestra semplice Std Dev - Volatility

Dopo aver premuto "OK", troveremo l'esperto allegato al grafico uguale al seguente per iniziare a generare segnali secondo questa strategia:

Semplice Std Dev - Volatility allegato

Come possiamo vedere, l'expert del sistema di trading semplice Std Dev - Volatility è allegato allo stesso modo come si vede nell'angolo in alto a destra dell'immagine precedente.

Possiamo vedere esempi di segnali generati secondo questo sistema di trading dai test dalle seguenti immagini:

In caso di elevata volatilità, secondo questa strategia,

Semplice Std Dev - Volatility - high signa

Come si può vedere nell'immagine precedente, nell'angolo in alto a sinistra del grafico si trovano tre righe di commenti:

  • Dichiarazione di alta volatilità.
  • Valore corrente di Std Dev.
  • Media dei cinque precedenti valori Std Dev.

In caso di bassa volatilità secondo questa strategia,

Semplice Std Dev - Volatility - low signal

Come possiamo vedere nell'immagine precedente, nell'angolo in alto a sinistra del grafico sono presenti altre tre righe di commenti,ci informano che:

  • La volatilità è bassa.
  • Il valore corrente di Std Dev.
  • La media dei cinque precedenti valori di Std Dev.
Attraverso i precedenti, abbiamo imparato a creare un sistema di trading in grado di generare un segnale che ci informi sulla volatilità come misura.
  • Strategia due: Semplice Std Dev - Std e MA:

Il codice seguente spiega come creare un sistema di trading per questa semplice strategia Std Dev - Std e MA:

//+------------------------------------------------------------------+
//|                                    Simple Std Dev - Std & MA.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()
  {
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,3,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

   double MAValue = NormalizeDouble(PArray[0],6);


   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }

//+------------------------------------------------------------------+

Le differenze in questo codice sono le seguenti:

Definire i valori di Ask e Bid creando variabili double per ognuno, utilizzando la funzione "NormalizeDouble" in modo da restituire un valore di tipo double, poi utilizzando "SymbolInfoDouble" come numero normalizzato per restituire la proprietà corrispondente di uno specifico simbolo.  I parametri di "SymbolInfoDouble" sono:

  • nome del simbolo, utilizzeremo "_Symbol" da applicare al grafico del simbolo corrente.
  • prop_id, per definire la proprietà, che qui è "SYMBOL_ASK".
double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

Creare un'altro array di prezzi.

double PArray[];

Ordinamento dell'array a partire dai dati correnti.

ArraySetAsSeries(PArray,true);

Definire la media mobile utilizzando la funzione "iMA" dopo aver creato una variabile di tipo intera MADef.

int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

Copia dei dati dei prezzi in questo array creato.

CopyBuffer(MADef,0,0,10,PArray);

Definizione del valore precedente di Std Dev.

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

Definizione del valore della media mobile.

double MAValue = NormalizeDouble(PArray[0],6);

Condizioni della strategia:

In caso di segnale di acquisto,

   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

In caso di segnale di vendita,

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

Dopo aver compilato questo codice, lo troveremo nella finestra del navigatore come nell'immagine seguente:

 Dev. std. n3

Facendo doppio clic troveremo la finestra di questo expert advisor, uguale a quella della figura seguente:

Finestra semplice Std Dev MA

Dopo aver spuntato la voce "Consenti Algo Trading" e aver premuto "OK", l'esperto verrà allegato al grafico come nell'immagine seguente:

Semplice Std Dev allegato

Come si può vedere nel grafico in alto a destra, l'expert advisor è allegato, possiamo vedere esempi di test secondo questa strategia, come negli esempi seguenti.

In caso di segnale di acquisto,

 Semplice Std Dev - Std _ MA - acquisto signa

Come possiamo vedere nell'esempio precedente del segnale di acquisto, abbiamo cinque righe di commenti nell'angolo superiore sinistro del grafico:

  • Segnale d’acquisto
  • Valore corrente di Std Dev
  • Valore precedente di Std Dev
  • Valore Ask
  • Valore Ma

In caso di segnale di vendita,

 Semplice Std Dev - Std _ MA - vendita signa

Come possiamo vedere nell'esempio precedente del segnale di vendita, abbiamo cinque righe di commenti nell'angolo in alto a sinistra del grafico:

  • Segnale di vendita
  • Valore corrente di Std Dev
  • Valore precedente di Std Dev
  • Valore Bid
  • Valore Ma

In precedenza abbiamo imparato a creare un sistema di trading che può essere utilizzato per generare segnali di acquisto o di vendita in base alla deviazione standard e alla media mobile.

  • Strategia tre: Semplice Std Dev - Std Dev, Std AVG e MA:

Quello che segue è il codice completo per creare un sistema di trading per questa strategia.

//+------------------------------------------------------------------+
//|                  Simple Std Dev - Std Dev & AVG Std Dev & MA.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()
  {
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);
   double MAValue = NormalizeDouble(PArray[0],6);

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }
  
//+------------------------------------------------------------------+

Le differenze in questo codice sono:

Condizioni della strategia,

In caso di segnale di acquisto,

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

In caso di segnale di vendita,

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

Dopo aver compilato questo codice, nella finestra del navigatore possiamo trovare l'expert come di seguito:

 Std Dev n4

Dopo aver fatto doppio clic o averlo trascinato e rilasciato sul grafico, si aprirà una finestra simile alla seguente:

Finestra semplice Std Dev - Std Dev _ AVG _ MA

Dopo aver premuto "OK", troveremo l’expert allegato al grafico come nell'immagine sottostante.

Semplice Dev. Std - Dev. Std _ AVG _ MA allegato

Come possiamo vedere nell'angolo in alto a destra del grafico, l'expert è allegato.

Ora abbiamo bisogno di vedere esempi di segnali generati sulla base di questo sistema di trading e possiamo vederli attraverso i seguenti esempi:

In caso di segnale di acquisto,

Semplice Std Dev - Std Dev _ AVG _ MA - segnale acquisto

Come possiamo vedere attraverso l'esempio precedente, nell'angolo in alto a sinistra del grafico questo sistema di trading ha generato cinque righe di commento:

  • Segnale d’acquisto
  • Valore corrente di Std Dev
  • Valore Medio Std Dev
  • Valore Ask
  • Valore Ma

In caso di segnale di vendita,

 Semplice Std Dev - Std Dev _ AVG _ MA - sell signa

Come si può vedere dall'esempio precedente del segnale di vendita, ci sono cinque righe di commento basate su questo sistema di trading:

  • Segnale di vendita
  • Valore corrente di Std Dev
  • Valore Medio Std Dev
  • Valore Bid
  • Valore Ma

Attraverso i precedenti, abbiamo imparato come creare un sistema di trading basato su ciascuna strategia menzionata che può essere utilizzato per generare segnali automatici.


Conclusioni

Ora e dopo gli argomenti precedenti, riteniamo di aver imparato di più sull'indicatore Deviazione Standard, in quanto abbiamo appreso cos'è, su cosa ci informa o cosa misura e come possiamo calcolarlo manualmente approfondendo la nostra comprensione dell'indicatore attraverso l'applicazione di un esempio. Dopo aver compreso a fondo questo indicatore, abbiamo imparato come utilizzarlo attraverso semplici strategie incentrate sul concetto di base dell'indicatore. Abbiamo imparato ad usarlo come misura della volatilità attraverso la semplice strategia Std Dev - volatility. E come usarlo per ottenere segnali di acquisto o vendita basati su due condizioni diverse attraverso la semplice strategia Std Dev - Std e MA e la strategia Std, Std AVG, MA. In seguito, abbiamo imparato a progettare uno schema passo dopo passo per ogni strategia, per aiutarci a creare un sistema di trading per ognuna di esse in modo semplice e agevole. Successivamente, abbiamo creato un sistema di trading MQL5 basato su ogni strategia menzionata da utilizzare con MetaTrader 5 per generare automaticamente segnali che ci aiutino a risparmiare tempo, a ottenere segnali accurati basati su specifiche condizioni, in modo da evitare emozioni dannose e soggettività ottenendo segnali chiari e questi sono i vantaggi della programmazione.

Sarà utile provare ad affiancare questo indicatore con altri indicatori tecnici per ottenere maggiori informazioni e vedere più di una prospettiva, poiché questa è una delle caratteristiche dell'analisi tecnica quando si progetta un sistema di trading che può essere utilizzato per fornirci chiare informazioni sui fattori più importanti dello strumento finanziario.

Devo ribadire ancora una volta che è necessario testare qualsiasi strategia da soli prima di utilizzarla, poiché l'obiettivo principale qui è l'istruzione, solo per essere sicuri che sia utile o adatta a voi. Spero che questo articolo vi sia utile per comprendere l'argomento e per trarre nuove idee che possano essere utili per migliorare il vostro trading.

Se questo articolo vi è stato utile e volete leggere altri articoli simili per imparare a progettare un sistema di trading con gli indicatori tecnici più popolari, potete trovare gli altri miei articoli in questa serie.

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

Impara come progettare un sistema di trading tramite Chaikin Oscillator Impara come progettare un sistema di trading tramite Chaikin Oscillator
Benvenuti nel nostro nuovo articolo della nostra serie sull'imparare a progettare un sistema di trading tramite gli indicatori tecnici più popolari. Attraverso questo nuovo articolo, impareremo come progettare un sistema di trading tramite l'indicatore Chaikin Oscillator.
Sviluppare un Expert Advisor per il trading da zero (Parte 17): Accesso ai dati sul web (III) Sviluppare un Expert Advisor per il trading da zero (Parte 17): Accesso ai dati sul web (III)
In questo articolo continuiamo a considerare come ottenere dati dal web e utilizzarli in un Expert Advisor. Questa volta procederemo allo sviluppo di un sistema alternativo.
Algoritmi di ottimizzazione della popolazione Algoritmi di ottimizzazione della popolazione
Questo è un articolo introduttivo sulla classificazione dell'algoritmo di ottimizzazione (OA). L'articolo tenta di creare un banco di prova (un insieme di funzioni), che deve essere utilizzato per confrontare gli OA e forse, identificare l'algoritmo più universale tra tutti quelli ampiamente conosciuti.
Sviluppare un Expert Advisor per il trading da zero (Parte 16): Accesso ai dati sul web (II) Sviluppare un Expert Advisor per il trading da zero (Parte 16): Accesso ai dati sul web (II)
Conoscere come inserire dati dal Web in un Expert Advisor non è così scontato. Non è così facile farlo, senza comprendere tutte le possibilità offerte da MetaTrader 5.