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

Impara a progettare un sistema di trading tramite ADX

MetaTrader 5Trading | 20 settembre 2022, 09:21
615 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Questo articolo presenterà un nuovo strumento tecnico di trading, il quale è uno degli strumenti più utili e efficace che può aiutarci a fare trading meglio e comprendere il movimento del mercato. Poiché una delle caratteristiche più utili degli indicatori tecnici è che possono mostrarci ciò che i prezzi non possono farci vedere e questo sarà basato sul calcolo di ogni indicatore, uno di questi utili indicatori è l'indicatore average directional index (ADX). Impareremo questo indicatore nel dettaglio per capirlo bene e imparare semplicemente come usarlo attraverso una semplice strategia perché quando impareremo qualcosa in modo approfondito saremo in grado di avere una maggiore conoscenza e potremo usarlo al meglio.

Lo impareremo attraverso i seguenti argomenti:

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

Attraverso l'argomento di definizione di ADX, discuteremo in dettaglio cos'è l'indicatore average directional index (ADX) cosa misura, e come possiamo calcolarlo manualmente per poterlo comprendere a fondo e per poterlo utilizzare profittevolmente. Quindi dopo aver compreso bene l'indicatore e come funziona impareremo una semplice strategia che può essere utilizzata nel nostro trading e questo lo vedremo dopo l'argomento strategia ADX. E poi nell'argomento schema della strategia ADX impareremo come progettare uno schema per aiutarci a scriverlo come codice per costruire un sistema di trading per questa strategia. Poi impareremo come scrivere un sistema di trading utilizzando questa strategia e questo avverrà attraverso l'argomento sistema di trading con ADX.

Useremo la piattaforma di trading MetaTrader 5 e l'editor MetaQuotes Language che è integrato con MetaTrader 5 che puoi scaricare dal seguente link: https://www.metatrader5.com/en/download

Dopo aver scaricato e installato MetaTrader 5, troverete la stessa come l'immagine seguente della piattaforma di trading:

MT5 

Ti consiglio di applicare ogni cosa in questo articolo da solo in quanto svilupperà rapidamente le tue abilità e ti darà una profonda comprensione dell'argomento. La pratica è una chiave importante per qualsiasi crescita. Quindi, sarà meglio provare ad applicare ogni concetto e testarlo da soli, perché impareremo a progettare un sistema di trading utilizzando uno strumento tecnico e lo faremo tramite MQL5 scrivendo alcuni codici per creare un expert advisor o un programma che ci aiuti a tradare meglio. Sarà essenziale anche avere un conto demo per testare e applicare e puoi farlo se non lo sai aprendo un conto demo tramite la MetaTrader 5 stessa premendo la scheda File dal terminale MetaTrader 5 --> Apri un conto --> puoi inserire il nome del tuo broker per aprire questo conto demo tramite lui o scegliere MetaQuotes --> Avanti --> Scegli Apri un conto demo per fare trading con denaro virtuale senza rischi --> Avanti --> inserisci i tuoi dati e determina i requisiti dell'account, quindi spunta accanto a Accetto --> Avanti --> quindi troverai le credenziali del tuo account demo --> Fine.

Ora puoi utilizzare questo account per fare trading virtuale aprendolo facendo clic sulla scheda File --> Accedi al conto di trading --> inserisci le credenziali del tuo account demo e premi OK.

Dichiarazione di non responsabilità: tutte le informazioni "così come sono" ,sono solo a scopo didattico e non sono preparate per finalità o consigli di trading. tutte le informazioni non garantiscono alcun tipo di risultato. Se scegli di utilizzare questi materiali su uno qualsiasi dei tuoi conti di trading, lo farai a tuo rischio e sarai l'unico responsabile.

Ora, iniziamo a imparare un nuovo strumento che può fare la differenza nei nostri risultati di trading per essere migliori.


Definizione di ADX

In questa parte parleremo nel dettaglio di uno degli indicatori più diffusi nel mondo del trading tecnico per sapere cos'è, cosa misura e come possiamo calcolarlo, per essere in grado di capirlo bene, quindi possiamo utilizzarlo al meglio nelle strategie disponibili o anche con nuove idee intorno ad esso. Questo indicatore è l'average directional index (ADX), è stato sviluppato da Welles Wilder e misura il trend e conferma se c'è un trend o meno perché secondo il suo calcolo, confronta il trading range di un periodo con il trading range di un periodo precedente.

Come risultato di questo confronto, possiamo trovare che abbiamo:

  • Un aumento o un declino (movimento direzionale positivo o movimento direzionale negativo).
  • Nessun aumento o declino.
  • Aumento e declino.

Se c'è un movimento direzionale positivo, significa che il massimo di un periodo ha superato il massimo del periodo precedente e il suo simbolo è (+DM).

L'immagine seguente ci mostra come può essere sul grafico tramite l'azione del prezzo:

+DM

E viceversa, se c'è un movimento direzionale negativo, significa che il minimo di un periodo ha superato il minimo del periodo precedente e il suo simbolo è (-DM).

L'immagine seguente ci mostra come può essere sul grafico tramite l'azione del prezzo:

-DM

Se non abbiamo un movimento direzionale positivo e non abbiamo un movimento direzionale negativo, significa che il massimo non ha superato il massimo precedente e il minimo non ha superato il minimo precedente.

L'immagine seguente ci mostra come può essere sul grafico tramite l'azione del prezzo:

No +DM-DM

Se abbiamo sia un movimento direzionale positivo che un movimento direzionale negativo, significa che il massimo ha superato il massimo precedente e il minimo ha superato il minimo precedente.

L'immagine seguente ci mostra come può essere sul grafico tramite l'azione del prezzo: 

 +DM-DM

Vediamo come possiamo calcolarlo in quanto ci darà più informazioni. Quindi, i passaggi seguenti sono per calcolare (ADX) e devi notare che tutti i valori devono essere assoluti:

1- Calcolo +DM e -DM:

In questo passaggio, dobbiamo determinare se c'è un movimento verso l'alto o il basso per il movimento corrente rispetto al precedente. Calcoleremo quindi due cose:

  • (+DM) si riferisce al movimento direzionale positivo se c'è un movimento al rialzo. 
Sarà calcolato tramite (+DM = massimo attuale - massimo precedente)
  • (-DM) si riferisce al movimento direzionale negativo se c'è un movimento al ribasso. 
Sarà calcolato tramite (-DM = minimo corrente - minimo precedente)

Quindi, controlleremo ogni periodo calcolato e verificheremo se è +DM, -DM o qualsiasi altra cosa.

  • Se abbiamo +DM, quindi:
+DM=n
-DM = 0
  • Se abbiamo -DM, quindi:

-DM = n

+DM = 0

In alcuni casi, possiamo trovare altri scenari in cui non ci sono valori per (+DM e -DM) o possiamo trovare valori per entrambi(+DM e -DM), e quanto segue è come gestirlo:

  • Se non abbiamo (+DM e -DM), allora:

+DM = 0

-DM = 0

no DM

  • Se abbiamo entrambi (+DM e -DM), quindi, confronteremo +DM e -DM e prenderemo in considerazione il valore più grande o verrà ignorato se ci sono valori uguali tra loro:
+DM>-DM = sarà considerato solo +DM,

 +DM maggiore

+DM<-DM = sarà considerato solo -DM

-DM maggiore

+DM=-DM = entrambi saranno ignorati

+DM uguale a -DM

2- Calcolo del True Range (TR):

In questo passaggio e dopo aver calcolato DM, calcoleremo il (TR) e sarà il valore più grande tra i seguenti:

  • La differenza tra il corrente massimo e minimo.
  • La differenza tra il corrente massimo e la chiusura precedente.
  • La differenza tra il corrente minimo e la chiusura precedente.
3- Calcolo la somma dei 14 periodi conteggiati (+DM, -DM e TR)

Dopo aver calcolato i primi 14 periodi conteggiati (+DM,-DM e TR), utilizzeremo le seguenti formule per calcolare i seguenti valori dopo 14:

+DM 15 = (precedente +DM - (precedente +DM/14)) + corrente +DM

-DM 15 = (precedente -DM - (precedente -DM/14)) + corrente -DM

TR 15 = (precedente TR - (precedente TR/14)) + corrente TR

4- Calcolo dei 14 periodi +DI e -DI
+DI 14 = 100*(+DM14/TR14)
-DI 14 = 100*(-DM14/TR14)

5- Calcolo la differenza tra +DI e -DI

DI 14 Diff = (+DI 14) - (-DI 14)

6- Calcolo la somma di +DI e -DI

DI 14 Somma = (+DI 14) + (-DI 14)

7- Calcolo DX

DX = 100*((differenza tra +DI e -DI)/(somma di +DI e -DI))
8- Calcolo ADX
ADX = media dei 14 periodi di DX

Con i passaggi precedenti possiamo calcolare l'ADX e ora vediamo un esempio per applicare questi passaggi, se abbiamo i seguenti dati:

Giorno Massimo Minimo Chiusura
1 110 90 100
2 140 120 130
3 160 120 140
4 150 110 130
5 140 100 130
6 150 130 140
7 170 150 160
8 180 160 170
9 170 150 155
10 170 130 140
11 180 155 160
12 190 175 180
13 220 190 190
14 230 200 200
15 215 205 210
16 200 190 200
17 195 180 190
18 195 180 185
19 210 185 195
20 220 190 200
21 233 195 208
22 246 200 216
23 258 205 223
24 271 210 231
25 283 215 238
26 296 220 246
27 308 225 253
28 321 230 261
29 333 235 268
30 346 240 276

Calcoliamo l'ADX per i dati precedenti:

1- Calcolo +DM e -DM:

+DM = massimo attuale - massimo precedente

-DM = minimo corrente - minimo precedente

Esempio -DM

2- Calcolo del TR:

Sarà il valore più grande tra i seguenti:

  • La differenza tra il corrente massimo e minimo.
  • La differenza tra il corrente massimo e la chiusura precedente.
  • La differenza tra il corrente minimo e la chiusura precedente.

L'immagine seguente è per il TR dopo averlo calcolato:

Esempio - TR

3- Calcolo della somma dei 14 periodi calcolati +DM, -DM e TR:

+DM 14 = Somma +DM 1(giorno 2: giorno 15)

-DM 14 = Somma -DM 1(giorno 2: giorno 15)

TR 14 = Somma TR (giorno 2: giorno 15)

Esempio - 14 DM-TR

4- calcolare 14 periodi +DI e -DI e il primo calcolo sarà dal 15° giorno poiché abbiamo bisogno di 14 DM per calcolare 14 DI:

+DI14 = 100*(+DM14/TR14)

-DI14 = 100*(-DM14/TR14)


5- Calcolo la differenza tra +DI e -DI

DI 14 Diff = (+DI 14) - (-DI 14)

6- Calcolo la somma di +DI e -DI

DI 14 Somma = (+DI 14) + (-DI 14)

DI14 - differenza e somma

7- Calcolo DX:

DX = 100*((differenza tra +DI e -DI)/(somma di +DI e -DI))


DX

8- Calcolo ADX e il primo calcolo sarà quello di 28 poiché abbiamo bisogno più di 14 giorni per calcolare ADX:

ADX = media 14 periodi di DX --> media DI (giorno15: giorno 28)


ADX

Ora, abbiamo calcolato l'indicatore ADX manualmente ma non è necessario farlo poiché è integrato con MetaTrader 5, abbiamo solo imparato come calcolarlo per approfondire la nostra comprensione dell'indicatore ADX e di come funziona. Se dobbiamo inserirlo nel grafico tutto ciò che dobbiamo fare è sceglierlo tra gli indicatori disponibili nel terminale di trading, tramite (Inserisci --> Indicatore --> Trend --> Average Directional Movement Index) e quanto segue è per sapere come possiamo farlo:

Inserisci ADX

Dopo aver scelto "Average Directional Movement Index" apparirà la seguente finestra:

Finestra ADX

Questa finestra è per i parametri dell' indicatore ADX e sono gli stessi come i seguenti:
  1. per determinare il periodo desiderato.
  2. per determinare il colore della linea ADX.
  3. per determinare il tipo di linea ADX.
  4. per determinare lo spessore della linea ADX.
  5. per determinare il colore della linea +DI.
  6. per determinare il tipo di linea +DI.
  7. per determinare lo spessore della linea +DI.
  8. per determinare il colore della linea -DI.
  9. per determinare il tipo di linea -DI.
  10. per determinare lo spessore della linea -DI.

Dopo aver determinato i parametri ADX e aver premuto OK, verrà allegato al grafico e l'immagine seguente è un esempio:

ADX allegato

Strategia con ADX

In questa parte vedremo semplici strategie che possono essere utilizzate con l'indicatore ADX e mi piace ricordare qui che presentiamo solo alcune semplici strategie per l'indicatore ADX e devi sapere che ci sono molte strategie che possono essere utilizzate tramite l'indicatore ADX da strategie semplici a complicate, ma attraverso questo articolo ci limitiamo a citare semplici strategie per comprendere il concetto alla base dell'indicatore e imparare come progettare un sistema di trading basato sull'idea che c'è dietro.

Secondo il concetto alla base del calcolo dell'indicatore ADX, mostra se c'è un trend o meno qualunque sia questo tipo di trend (su o giù), se la curva ADX si sta muovendo verso l'alto, significa che c'è un trend e viceversa se la curva ADX è in discesa significa che non c'è trend. Ma prima dobbiamo definire il trend e sarà lo stesso come il seguente:

Definizione di Trend:

Per tua informazione, l'azione dei prezzi è molto importante in quanto ci mostra il tipo di trend in quanto sappiamo che abbiamo tre tipi di trend (trend al rialzo, al ribasso e laterale).

Trend rialzista: è la direzione del mercato o il trend in cui possiamo vedere i prezzi creare minimi e massimi più alti, i prezzi salgono e i compratori controllano il mercato in questo movimento.

L'immagine seguente è la formazione di questa direzione o trend di mercato:

Formazione trend rialzista

L'immagine seguente è un esempio del mercato per il trend rialzista:

Esempio trend rialzista

Trend al ribasso: è la direzione o trend di mercato in quanto possiamo vedere i prezzi creare massimi e minimi più bassi, i prezzi scendono e i venditori controllano il mercato in questo movimento.

La seguente è la formazione di questa direzione o trend di mercato:

Formazione trend ribassista

L'immagine seguente è un esempio di un trend ribassista nel mercato

Esempio trend ribassista

Laterale: è qualsiasi direzione di mercato eccetto trend rialzista o trend ribassista, dove non c'è una direzione chiara e c'è un equilibrio tra compratori e venditori.

Di seguito sono riportate alcune formazioni di questa direzione di mercato:

Formazione laterale 1

Formazione laterale 2

Formazione laterale 3

Formazione laterale 4

Quello che segue è un esempio di mercato laterale:

esempio dal vivo di lateralità

Dopo l'identificazione dei trend, vedremo semplici strategie che possono essere utilizzate secondo il concetto di ADX.

  • Strategia uno: Sistema ADX semplice - Movimento ADX:

La strategia si basa sul movimento della curva ADX,

valore ADX attuale > valore ADX precedente = ADX in aumento.

valore ADX attuale < valore ADX precedente = ADX in discesa.

  • Strategia due: Sistema ADX semplice - Trend rialzista:

Secondo questa strategia, durante il trend rialzista,

il valore ADX > 25 e il valore ADX attuale > del valore ADX precedente --> quando il valore di +DI > del valore di -DI = buy

  • Strategia tre: Sistema ADX Semplice - Trend ribassista:

Secondo questa strategia, durante il trend ribassista,

il valore ADX > 25 e il valore ADX attuale > del valore ADX precedente --> quando il valore di +DI < del valore di -DI = sell


Schema della strategia ADX

In questa parte, progetteremo uno schema per ogni strategia che ci aiuti a creare il sistema di trading, e questo schema organizzerà e imposterà ciò di cui abbiamo bisogno che il programma o il sistema facciano passo dopo passo.

  • Strategia uno: Sistema ADX semplice - Movimento ADX:

Secondo questa strategia, abbiamo bisogno ad ogni tick che il programma controlli il valore ADX corrente e il valore ADX precedente e quindi decidere se il valore ADX corrente è maggiore del valore ADX precedente o meno, se l'ADX corrente è maggiore del valore precedente abbiamo bisogno poi che il sistema faccia comparire un commento sul grafico con "ADX in aumento", "Il Valore ADX è (n)" in una nuova riga e "Il Valore precedente ADX è (n)" in un'altra nuova riga. Se il valore ADX corrente è inferiore all'ADX precedente allora abbiamo bisogno che il sistema faccia comparire un commento sul grafico con "ADX in calo". Se l'ADX corrente è uguale al precedente è necessario che il sistema non faccia nulla.

L'immagine seguente è uno schema per questa strategia:

ADX movement blueprint

  • Strategia due: Sistema ADX semplice - Trend rialzista:

Secondo questa strategia abbiamo bisogno che il sistema controlli ad ogni tick il valore ADX corrente, il valore ADX precedente, il valore +DI e il valore -DI, questo ci serve per decidere se il valore ADX corrente è maggiore di 25 e del valore ADX precedente o no. Se non è maggiore di entrambi abbiamo bisogno che il sistema non faccia nulla, se è maggiore di entrambi allora abbiamo bisogno che il sistema controlli +DI e -DI, se +DI è maggiore di -DI o no, se +DI è maggiore di -DI, è necessario che il sistema commenti con un segnale di acquisto, il valore ADX è (n), il valore ADX precedente è (n), il valore +DI è (n) e il valore -DI è (n) o se +DI non è maggiore di -DI, abbiamo bisogno che il sistema non faccia nulla.

L'immagine seguente è per uno schema per questa strategia:

ADX - Buy signal blueprint

  • Strategia tre: Sistema ADX Semplice - Trend ribassista:

Secondo questa strategia abbiamo bisogno che il sistema controlli ad ogni tick il valore ADX corrente, il valore ADX precedente, il valore +DI e il valore -DI, questo ci serve per decidere se il valore ADX corrente è minore di 25 e del valore ADX precedente o no. Se non è inferiore a entrambi abbiamo bisogno che il sistema non faccia nulla, se è inferiore a entrambi allora abbiamo bisogno che il sistema controlli +DI e -DI, se +DI è inferiore a -DI o no, se +DI è inferiore a -DI, è necessario che il sistema commenti con un segnale di vendita, il valore ADX è (n), il valore ADX precedente è (n), il valore +DI è (n) e il valore -DI è (n) o se +DI non è inferiore a -DI abbiamo bisogno che il sistema non faccia nulla.

L'immagine seguente è per uno schema per questa strategia:

ADX - Sell signal blueprint

Sistema di trading con ADX

In questa parte più interessante, scopriremo come creare un sistema di trading per queste semplici strategie menzionate per usarle nel terminale di trading MetaTrader 5 e utilizzeremo il MetaQuotes Language Editor (MQL5) integrato per scrivere il codice di questo sistema di trading e per aprire questo Editor per il linguaggio MetaQuotes durante l'apertura del terminale di trading MetaTrader 5, puoi premere F4 o fare clic sulla scheda Attrezzi da MetaTrader 5 --> quindi selezionare Editor per il linguaggio MetaQuotes.

L'immagine seguente mostra come farlo:

Metaeditor opening 1

O puoi premere il pulsante IDE:

Metaeditor opening 2

Dopodiché si aprirà la seguente finestra per MetaQuotes Language Editor:

Metaeditor window

Quindi apriremo un nuovo file per creare il nostro sistema di trading facendo clic su "Nuovo":

Metaeditor window 2

Poi verrà aperta la finestra seguente:

Metaeditor - New file

Di seguito sono elencate il tipo di opzioni del nuovo file:

  1. Expert Advisor: EA è un programma nel terminale per automatizzare i processi di trading in base a condizioni predeterminate.
  2. Indicatore personalizzato: questo è un codice di programma che ci aiuta a leggere il grafico per migliorare le decisioni di trading.
  3. Script: è un programma che può eseguire un'attività una sola volta dopo l'esecuzione.

Ora sceglieremo di creare un file EA Expert Advisor per realizzare il nostro sistema di trading.

Innanzitutto, creeremo un programma che faccia comparire sul grafico il valore ADX corrente come commento e i seguenti sono i passaggi per farlo:

  • Crea un array per le quote e useremo la funzione "double" che rappresenta i valori con una parte frazionaria
double PriceArray[];
  • Ordiniamo questo array di quote creato partendo dal dato attuale e useremo la funzione "ArraySetAsSeries", restituisce true in caso di successo o false in caso di errore (bool). I parametri richiesti sono:
array[] per riferimento e flag

ArraySetAsSeries(PriceArray,true);

  • Identificando l'indicatore ADX utilizzeremo la funzione "iADX", restituisce l'handle dell'indicatore tecnico ADX e i suoi parametri sono:
symbol come stringa,period per il timeframe e periodo per ADX saranno come i seguenti:
  • _Symbol: per il simbolo corrente
  • _Period: per il timeframe corrente
  • 14: per il periodo
int ADXDef = iADX(_Symbol,_Period,14);
  • Riempiendo con i dati in base all'indicatore ADX creato utilizzeremo la funzione "CopyBuffer", che restituisce il conteggio dei dati copiati o restituisce -1 in caso di errore. I suoi parametri sono:
handle dell'indicatore, buffer_num numero del buffer dell'indicatore,start_time(data e tempo d'inizio), stop_time ( data e tempo di fine) e buffer[] (array di destinazione).
CopyBuffer(ADXDef,0,0,3,PriceArray);
  • Ottenuto il valore di ADX, dopo aver creato una variabile per "ADXValue" con la funzione "double" utilizzeremo la funzione "NormalizeDouble" che restituisce un valore di tipo double con precisione preimpostata, i suoi parametri sono: 
valore di tipo double (numero normalizzato) e cifre come intero (numero di cifre dopo il punto decimale)
double ADXValue=NormalizeDouble(PriceArray[0],2);
  • Per visualizzare un commento con il valore corrente ADX utilizzeremo la funzione "comment" e i suoi parametri sono:
Qualsiasi valore separato da una virgola tra di loro e quando necessitiamo che alcuni di loro appaiano in una nuova linea, useremo il simbolo d'interruzione di linea "\n" 
Comment("ADX Value is ", ADXValue);

Se vuoi vedere il codice completo di questo programma puoi vederlo attraverso quanto segue:

//+------------------------------------------------------------------+
//|                                            Simple ADX System.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()
  {
//creiamo un array per le quote
   double PriceArray[];

//ordiniamo l'array di quote dal dato attuale
   ArraySetAsSeries(PriceArray,true);

//identifichiamo ADX
   int ADXDef = iADX(_Symbol,_Period,14);

//Riempiamo con i dati secondo l'ADX creato
   CopyBuffer(ADXDef,0,0,3,PriceArray);

//Otteniamo il valore dei dati attuali
   double ADXValue=NormalizeDouble(PriceArray[0],2);

//Commentiamo con il valore di ADX
   Comment("ADX Value is ", ADXValue);
  }
//+------------------------------------------------------------------+

Dopo aver scritto questo programma possiamo vedere questo file di programma nella finestra del navigatore del terminale di trading MetaTrader 5 e quanto segue lo mostra:

Nav

Dopo aver fatto doppio clic sul file o trascinandolo sul grafico, apparirà la seguente finestra:

Simple ADX window

Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, il file verrà allegato al grafico:

Simple ADX attached

Quindi, apparirà il risultato secondo questo sistema di trading e l'immagine seguente ne è un esempio:

Simple ADX

Ora, abbiamo creato ciò che aiuta a far visualizzare il valore dell' ADX corrente, quindi dobbiamo aggiungere qualcosa che ci aiuti a progettare il nostro sistema di trading, dobbiamo codificare un programma che aiuti a visualizzare altri valori dell'indicatore ADX (valore +DI e valore -DI) e quanto segue è per come farlo:

  • Creiamo un array di quote per ogni valore (valore ADX, +DI e -DI) e creiamo delle variabili per loro utilizzando la funzione "double":
    • ADXArray: per ADX value
    • PDIArray: per +DI value
    • NDIArray: per -DI value
double ADXArray[];
double PDIArray[];
double NDIArray[];
  • Ordiniamo ogni array di quote per ogni valore partendo dal dato attuale utilizzando la funzione "ArraySetAsSeries":
ArraySetAsSeries(ADXArray,true);
ArraySetAsSeries(PDIArray,true);
ArraySetAsSeries(NDIArray,true);

  • Identifichiamo l'indicatore ADX tramite l'utilizzo della funzione "iADX":
int ADXDef = iADX(_Symbol,_Period,14);
  • Riempiamo con i dati secondo l'identificazione dell'ADX tramite l'utilizzo della funzione CopyBuffer":
CopyBuffer(ADXDef,0,0,3,ADXArray);
CopyBuffer(ADXDef,1,0,3,PDIArray);
CopyBuffer(ADXDef,2,0,3,NDIArray);
  • Otteniamo i valori dei dati correnti, dopo aver creato le variabili per ogni valore tramite l'utilizzo della funzione"double", useremo la funzione "NormalizeDouble" :
double ADXValue=NormalizeDouble(ADXArray[0],2);
double PDIValue=NormalizeDouble(PDIArray[0],2);
double NDIValue=NormalizeDouble(NDIArray[0],2);
  • Visualizziamo i commenti con ogni valore in una nuova linea tramite l'utilizzo della funzione "comment" :
Comment("ADX Value is ", ADXValue,"\n""+DI Value is ", 
PDIValue,"\n""-DI Value is ", NDIValue);

Di seguito è riportato il codice completo per questo expert advisor:

//+------------------------------------------------------------------+
//|                                  Simple ADX System - 3 lines.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()
  {
   //creating an array for prices
   double ADXArray[];
   double PDIArray[];
   double NDIArray[];
   
   //sort price array from current data
   ArraySetAsSeries(ADXArray,true);
   ArraySetAsSeries(PDIArray,true);
   ArraySetAsSeries(NDIArray,true);

   //identify ADX
   int ADXDef = iADX(_Symbol,_Period,14);
   
   
   //Filling data according to created ADX
   CopyBuffer(ADXDef,0,0,3,ADXArray);
   CopyBuffer(ADXDef,1,0,3,PDIArray);
   CopyBuffer(ADXDef,2,0,3,NDIArray);
   
   //Getting value of current data
   double ADXValue=NormalizeDouble(ADXArray[0],2);
   double PDIValue=NormalizeDouble(PDIArray[0],2);
   double NDIValue=NormalizeDouble(NDIArray[0],2);
   
   //Comment with ADX value
   Comment("ADX Value is ", ADXValue,"\n""+DI Value is ", 
   PDIValue,"\n""-DI Value is ", NDIValue);
  }
//+------------------------------------------------------------------+

Dopo aver scritto questo programma possiamo trovare il suo file nella finestra del Navigatore:

 Nav 2

Dopo aver fatto doppio clic sul file o trascinandolo sul grafico apparirà la seguente finestra:

Simple ADX - 3 lines window

Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto OK, il programma verrà allegato al grafico:

Simple ADX - 3 lines attached

Successivamente, i valori appariranno sul grafico secondo questo expert advisor:

Simple ADX - 3 lines

Ora creeremo il nostro sistema di trading per le nostre strategie menzionate (movimento ADX, trend rialzista e trend ribassista).

  • Strategia uno: Sistema ADX semplice - Movimento ADX:

valore ADX attuale > valore ADX precedente = ADX in aumento.

valore ADX attuale < valore ADX precedente = ADX in discesa.

Quanto segue è per scrivere il codice del programma o dell'expert advisor per fare questo:

  • Creare un array di quote per il valore ADX (corrente,precedente):
    • ADXArray0: per il valore dell'ADX corrente.
    • ADXArray1: per il valore ADX precedente.
double ADXArray0[];
double ADXArray1[];

  • Ordiniamo gli array dal dato corrente:
ArraySetAsSeries(ADXArray0,true);
ArraySetAsSeries(ADXArray1,true);

  • Identifichiamo l'ADX:
int ADXDef = iADX(_Symbol,_Period,14);
  • Riempiamo con i dati secondo l'ADX:
CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,0,0,2,ADXArray1);
  • Otteniamo i valori dopo aver creato le variabili per loro:
double ADXValue=NormalizeDouble(ADXArray0[0],2);
double ADXValuelast=NormalizeDouble(ADXArray1[1],2);
  • Impostiamo le condizioni del movimento ADX secondo il valore di ADX:
if (ADXValue>ADXValuelast)
      {
       Comment("ADX is rising","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", 
   ADXValuelast);
      }
   
if (ADXValue<ADXValuelast)
     {
      Comment("ADX is falling","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", 
   ADXValuelast);
      }

Il seguente è l'intero codice per questa strategia per creare l'expert advisor:

//+------------------------------------------------------------------+
//|                             Simple ADX System - ADX Movement.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()
  {
   //creating an array for prices
   double ADXArray0[];
   double ADXArray1[];

   //sort price array from current data
   ArraySetAsSeries(ADXArray0,true);
   ArraySetAsSeries(ADXArray1,true);
      
   //identify ADX
   int ADXDef = iADX(_Symbol,_Period,14);
   
   //Filling data according to created ADX
   CopyBuffer(ADXDef,0,0,3,ADXArray0);
   CopyBuffer(ADXDef,0,0,2,ADXArray1);
   
   //Getting value of current data
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValuelast=NormalizeDouble(ADXArray1[1],2);
   
   //ADX movement signal
   if (ADXValue>ADXValuelast)
      {
         Comment("ADX is rising","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", 
   ADXValuelast);
      }
   
   if (ADXValue<ADXValuelast)
     {
         Comment("ADX is falling","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", 
   ADXValuelast);
      }
  }
//+------------------------------------------------------------------+

Dopo aver creato questo expert advisor, possiamo trovarlo nella finestra del navigatore:

Nav - adx3

Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:

ADX movement window 

Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, l'EA verrà allegato al grafico:

ADX movement attached

Dopodiché può funzionare in base alle sue condizioni e i seguenti sono esempi di risultati dei test:

  • Quando l'ADX è in aumento, possiamo vedere l expert advisor visualizzare valori come commenti come gli stessi della seguente immagine:

ADX movement - rising 


  • Quando l'ADX è in calo, possiamo vedere l'expert advisor visualizzare valori come commenti come gli stessi dell'immagine seguente:

ADX movement2.png

  • Strategia due: Sistema ADX semplice - Trend rialzista:

il valore ADX > 25 e il valore ADX attuale > del valore ADX precedente --> quando il valore di +DI > del valore di -DI = buy

I seguenti è per come creare un expert advisor che esegue questa strategia:

  • Creare una variabile per il "segnale" con assegnazione vuota perché verrà calcolata successivamente, utilizzeremo la funzione "string":
string signal="";
  • Creeremo gli array per il valore corrente di ADX, per il valore precedente di ADX, il valore +DI e il valore -DI:
    • ADXArray0: per il valore dell'ADX corrente
    • ADXArray1: per il valore ADX precedente
    • PDIArray: per +DI value
    • NDIArray: per -DI value 
double ADXArray0[];
double ADXArray1[];
double PDIArray[];
double NDIArray[];
  • Ordiniamo gli array dal dato corrente:
ArraySetAsSeries(ADXArray0,true);
ArraySetAsSeries(ADXArray1,true);
ArraySetAsSeries(PDIArray,true);
ArraySetAsSeries(NDIArray,true);
  • Identifichiamo l'indicatore ADX:
int ADXDef = iADX(_Symbol,_Period,14);
  • Riempiamo con i dati secondo l'ADX creato:
CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,0,0,2,ADXArray1);
CopyBuffer(ADXDef,1,0,3,PDIArray);
CopyBuffer(ADXDef,2,0,3,NDIArray);
  • Otteniamo i valori dai dati correnti:
double ADXValue=NormalizeDouble(ADXArray0[0],2);
double ADXValueLast=NormalizeDouble(ADXArray1[1],2);
double PDIValue=NormalizeDouble(PDIArray[0],2);
double NDIValue=NormalizeDouble(NDIArray[0],2);
  • Impostiamo le condizioni della strategia rialzista:
if (ADXValue>25&&ADXValue>ADXValueLast)
   if(PDIValue>NDIValue)
   {
    signal = "BUY";
   }
  • Commentiamo con il segnale buy e con i valori, ognuno in una nuova linea:
Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
"\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
"\n""-DI Value is ", NDIValue);

Il seguente è l'intero codice per questa strategia per creare l'expert advisor:

//+------------------------------------------------------------------+
//|                     Simple ADX System - Uptrend - Buy Signal.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()
  {
  
   // creating a variable for signal
   string signal="";
   
   //creating an array for prices
   double ADXArray0[];
   double ADXArray1[];
   double PDIArray[];
   double NDIArray[];
   
   //identify ADX, positive DI, negative DI
   int ADXDef = iADX(_Symbol,_Period,14);
   
   
   //sort price array from current data
   ArraySetAsSeries(ADXArray0,true);
   ArraySetAsSeries(ADXArray1,true);
   ArraySetAsSeries(PDIArray,true);
   ArraySetAsSeries(NDIArray,true);
   
   //Filling data according to created ADX
   CopyBuffer(ADXDef,0,0,3,ADXArray0);
   CopyBuffer(ADXDef,0,0,2,ADXArray1);
   CopyBuffer(ADXDef,1,0,3,PDIArray);
   CopyBuffer(ADXDef,2,0,3,NDIArray);
   
   //Getting value of current data
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValueLast=NormalizeDouble(ADXArray1[1],2);
   double PDIValue=NormalizeDouble(PDIArray[0],2);
   double NDIValue=NormalizeDouble(NDIArray[0],2);
   
   //Comment with Buy signal according to Buy Strategy
    if (ADXValue>25&&ADXValue>ADXValueLast)
      if(PDIValue>NDIValue)
      {
         signal = "BUY";
      }
      
   Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);
  }
//+------------------------------------------------------------------+

Fatto questo possiamo trovare l'expert advisor nella finestra del navigatore:

Nav - ADX4

Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:

ADX - uptrend window

Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, l'expert advisor verrà allegato al grafico:

ADX - uptrend attached

Successivamente possiamo trovare i segnali che vengono visualizzati secondo la strategia:

  • Il segnale buy.
  • Una nuova riga con il valore ADX corrente.
  • Una nuova riga con il valore ADX precedente.
  • Una nuova riga con il valore +DI.
  • Una nuova riga con il valore -DI.
L'immagine seguente è un esempio di questa strategia o dei risultati dei test del' Expert Advisor :


ADX - Buy signal

  • Strategia tre: Sistema ADX Semplice - Trend ribassista:

il valore ADX > 25 e il valore ADX attuale > del valore ADX precedente --> quando il valore di +DI < del valore di -DI = sell

Di seguito è riportato come creare un expert advisor che eseguirà questa strategia:

//+------------------------------------------------------------------+
//|                Simple ADX System - Downtrend - Sell Strategy.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()
  {
  
   // creating a variable for signal
   string signal="";
   
   //creating an array for prices
   double ADXArray0[];
   double ADXArray1[];
   double PDIArray[];
   double NDIArray[];
   
   //identify ADX, positive DI, negative DI
   int ADXDef = iADX(_Symbol,_Period,14);
   
   
   //sort price array from current data
   ArraySetAsSeries(ADXArray0,true);
   ArraySetAsSeries(ADXArray1,true);
   ArraySetAsSeries(PDIArray,true);
   ArraySetAsSeries(NDIArray,true);
   
   //Filling data according to created ADX
   CopyBuffer(ADXDef,0,0,3,ADXArray0);
   CopyBuffer(ADXDef,0,0,2,ADXArray1);
   CopyBuffer(ADXDef,1,0,3,PDIArray);
   CopyBuffer(ADXDef,2,0,3,NDIArray);
   
   //Getting value of current data
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValueLast=NormalizeDouble(ADXArray1[1],2);
   double PDIValue=NormalizeDouble(PDIArray[0],2);
   double NDIValue=NormalizeDouble(NDIArray[0],2);
   
   //Comment with Buy signal according to Buy Strategy
    if (ADXValue>25&&ADXValue>ADXValueLast)
      if(PDIValue<NDIValue)
      {
         signal = "SELL";
      }
      
   Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);
  }
//+------------------------------------------------------------------+

Sono gli stessi passaggi della strategia di trend rialzista con le seguenti differenze:

  • Le condizioni della strategia ribassista:
    if (ADXValue>25&&ADXValue>ADXValueLast)
      if(PDIValue<NDIValue)
      {
         signal = "SELL";
      }
  • Il commento tramite il segnale:
   Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);

Dopo aver scritto il codice di questa strategia, possiamo trovare il file dell'expert advisor nella finestra del Navigatore:

Nav - ADX 5

Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:

ADX - downtrend window 

Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, l'expert advisor verrà allegato al grafico e l'immagine seguente ne mostra un esempio:

ADX - downtrend attached

Quindi possiamo trovare i segnali che vengono visualizzati secondo la strategia di downtrend:

  • Il segnale sell.
  • Una nuova riga con il valore ADX corrente.
  • Una nuova riga con il valore ADX precedente.
  • Una nuova riga con il valore +DI.
  • Una nuova riga con il valore -DI.

L'immagine seguente è un esempio del segnale generato in accordo con questa strategia tramite test:

ADX - Sell signal

Conclusioni

Ora e dopo aver menzionato gli argomenti di questo articolo, si suppone che tu conosca in dettaglio uno degli indicatori più popolari e utili che è l'indicatore ADX e come progettare un sistema di trading che lo utilizza poiché sappiamo cos'è l'ADX, cosa misura, come lo calcoliamo manualmente. Abbiamo visto semplici strategie basate sull'indicatore ADX, durante il trend rialzista e ribassista, quindi abbiamo progettato uno schema per queste strategie che ci aiutano a progettare il sistema di trading passo dopo passo, per capire cosa è necessario comunicare al programma che deve fare esattamente. Abbiamo appreso come progettare un sistema di trading per funzionare automaticamente basato su queste strategie ADX e visto come scrivere il codice per queste strategie di trading tramite MQL5 (MetaQuotes Language).

L'indicatore ADX ha molte strategie che possono essere utilizzate per il trading da strategie semplici a complicate ma qui abbiamo menzionato solo alcune semplici strategie per apprendere il concetto base dell'indicatore e il concetto base dell'articolo e l'obiettivo principale è imparare strategie di trading basate sull'approccio tecnico e progettare un sistema di trading per loro tramite MQL5 da utilizzare nella piattaforma di trading MetaTrader 5.

Quello che devo anche menzionare qui è che abbiamo molti strumenti e strategie utili che possono essere utilizzate per il nostro trading. Questi strumenti possono essere utilizzati singolarmente oppure possiamo combinare ciò che è valido per essere combinato per ottenere risultati migliori e questa è una delle caratteristiche più utili dell'analisi tecnica in quanto ha molti strumenti basati su concetti diversi che possono migliorare le nostre decisioni di trading e questo restituirà risultati migliori dal trading. Consiglio di leggere i miei articoli precedenti su altri indicatori popolari che possono essere utilizzati tramite alcune semplici strategie e su come progettare un semplice sistema di trading basato su queste strategie con MQL5 da utilizzare con MetaTrader 5. Quindi, la nostra missione è imparare questi concetti e strumenti e vedere cosa è adatto al nostro stile e piano di trading poiché puoi trovare molte strategie che possono essere utili per qualcuno ma non per un altro e ogni persona deve avere un piano di trading basato sulla sua strategia di trading e possiamo saperlo testando ogni nuova strategia o strumento, per confermare se sarà utile e profittevole o meno, prima di utilizzarli su conti reali.

La programmazione può essere molto utile in questa fase per molte ragioni, ci aiuta a farlo facilmente, senza intoppi e con precisione. Una volta trovata una strategia profittevole, possiamo anche progettare un sistema di trading affinché il computer lavori automaticamente per noi in base alle condizioni del programma progettato. Questo ci farà evitare emozioni dannose che possono essere coinvolte nel nostro processo di trading, quindi la programmazione ci aiuta a fare trading con disciplina, che è una delle chiavi più importanti per fare trading con successo. Quindi, è bene imparare la programmazione e MQL5 in quanto possono essere utili per raggiungere questi obiettivi.

Spero che tu abbia trovato questo articolo utile per il tuo trading anche se ti ha aperto gli occhi a nuove idee e ti ha fornito approfondimenti sull'argomento dell'articolo o su qualsiasi argomento correlato per aiutarti a migliorare i tuoi risultati di trading e ottenere risultati migliori continuamente perché questo è l'obiettivo principale del nostro trading è ottenere buoni risultati e raggiungere la costanza dei profitti e spero che questo articolo contribuisca a raggiungere questo prezioso obiettivo. 


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

Imparare come progettare un sistema di trading con ATR Imparare come progettare un sistema di trading con ATR
In questo articolo, impareremo un nuovo strumento tecnico che può essere utilizzato nel trading, come continuazione all'interno della serie in cui impariamo a progettare semplici sistemi di trading. Questa volta lavoreremo con un altro indicatore tecnico popolare: Average True Range (ATR).
Scienza dei Dati e Apprendimento Automatico (Parte 02): Regressione Logistica Scienza dei Dati e Apprendimento Automatico (Parte 02): Regressione Logistica
La classificazione dei dati è una cosa cruciale per un algo trader e un programmatore. In questo articolo, ci concentreremo su uno degli algoritmi logistici di classificazione che possono aiutarci a identificare i Sì o i No, gli alti e bassi, gli acquisti e le vendite.
Scienza dei dati e apprendimento automatico (Parte 03): Regressioni a matrice Scienza dei dati e apprendimento automatico (Parte 03): Regressioni a matrice
Questa volta i nostri modelli sono realizzati da matrici, il che ci permette flessibilità e consente di creare modelli potenti che possono gestire non solo cinque variabili indipendenti ma anche molte variabili finché restiamo entro i limiti di calcolo di un computer, questo articolo sarà una lettura interessante, questo è sicuro.
Scienza dei Dati e Apprendimento Automatico (Parte 01): Regressione Lineare Scienza dei Dati e Apprendimento Automatico (Parte 01): Regressione Lineare
È il momento per noi trader di allenare i nostri sistemi e noi stessi a prendere decisioni in base a ciò che dicono i numeri. Non con i nostri occhi, o ciò che le nostre viscere ci fanno credere, è qui che il mondo si sta dirigendo, quindi spostiamoci perpendicolarmente nella direzione dell'onda.