
Impara come progettare un sistema di trading tramite la Deviazione Standard
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:
- Definizione di Deviazione Standard
- Strategia con la Deviazione Standard
- Schema della strategia con la Deviazione Standard
- Sistema di trading con la Deviazione Standard
- 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.
Secondo passaggio: Calcolare la deviazione. Di seguito è riportato il risultato dopo il calcolo.
Terzo passaggio: Calcolare la deviazione al quadrato.
Quarto passaggio: Calcolare la media a 10 periodi della deviazione al quadrato.
Quinto passaggio: Calcolare la Deviazione Standard = radice quadrata del risultato del quarto passaggio.
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.
Successivamente, si aprirà la seguente finestra per i parametri dell'indicatore.
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.
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.
- 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.
- 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.
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:
Trascinandolo e rilasciandolo sul grafico desiderato, apparirà la seguente finestra del sistema di trading:
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:
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.
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.
- 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:
Trascinandolo e rilasciandolo sul grafico desiderato, la finestra di questo sistema di trading si presenta come segue:
Dopo aver premuto "OK", troveremo l'esperto allegato al grafico uguale al seguente per iniziare a generare segnali secondo questa strategia:
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,
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,
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.
- 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:
Facendo doppio clic troveremo la finestra di questo expert advisor, uguale a quella della figura seguente:
Dopo aver spuntato la voce "Consenti Algo Trading" e aver premuto "OK", l'esperto verrà allegato al grafico come nell'immagine seguente:
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,
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,
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:
Dopo aver fatto doppio clic o averlo trascinato e rilasciato sul grafico, si aprirà una finestra simile alla seguente:
Dopo aver premuto "OK", troveremo l’expert allegato al grafico come nell'immagine sottostante.
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,
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,
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





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