Impara a progettare un sistema di trading tramite ADX
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:
- Definizione di ADX
- Strategia con ADX
- Schema della strategia ADX
- Sistema di trading con ADX
- 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:
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:
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:
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:
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:
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
- 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,
2- Calcolo del True Range (TR):+DM<-DM = sarà considerato solo -DM
+DM=-DM = entrambi saranno ignorati
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.
Dopo aver calcolato i primi 14 periodi conteggiati (+DM,-DM e TR), utilizzeremo le seguenti formule per calcolare i seguenti valori dopo 14:
4- Calcolo dei 14 periodi +DI e -DI+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
+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
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:
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)
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)
7- Calcolo DX:
DX = 100*((differenza tra +DI e -DI)/(somma di +DI e -DI))
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)
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:
Dopo aver scelto "Average Directional Movement Index" apparirà la seguente finestra:
Questa finestra è per i parametri dell' indicatore ADX e sono gli stessi come i seguenti:
- per determinare il periodo desiderato.
- per determinare il colore della linea ADX.
- per determinare il tipo di linea ADX.
- per determinare lo spessore della linea ADX.
- per determinare il colore della linea +DI.
- per determinare il tipo di linea +DI.
- per determinare lo spessore della linea +DI.
- per determinare il colore della linea -DI.
- per determinare il tipo di linea -DI.
- 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:
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:
L'immagine seguente è un esempio del mercato per il 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:
L'immagine seguente è un esempio di un trend ribassista nel mercato
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:
Quello che segue è un esempio di mercato laterale:
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:
- 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:
- 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:
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:
O puoi premere il pulsante IDE:
Dopodiché si aprirà la seguente finestra per MetaQuotes Language Editor:
Quindi apriremo un nuovo file per creare il nostro sistema di trading facendo clic su "Nuovo":
Poi verrà aperta la finestra seguente:
Di seguito sono elencate il tipo di opzioni del nuovo file:
- Expert Advisor: EA è un programma nel terminale per automatizzare i processi di trading in base a condizioni predeterminate.
- Indicatore personalizzato: questo è un codice di programma che ci aiuta a leggere il grafico per migliorare le decisioni di trading.
- 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:
Dopo aver fatto doppio clic sul file o trascinandolo sul grafico, apparirà la seguente finestra:
Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, il file verrà allegato al grafico:
Quindi, apparirà il risultato secondo questo sistema di trading e l'immagine seguente ne è un esempio:
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:
Dopo aver fatto doppio clic sul file o trascinandolo sul grafico apparirà la seguente finestra:
Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto OK, il programma verrà allegato al grafico:
Successivamente, i valori appariranno sul grafico secondo questo expert advisor:
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:
Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:
Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, l'EA verrà allegato al grafico:
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:
- Quando l'ADX è in calo, possiamo vedere l'expert advisor visualizzare valori come commenti come gli stessi dell'immagine seguente:
- 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:
Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:
Dopo aver spuntato accanto a "Consenti Algo Trading" e aver premuto il pulsante OK, l'expert advisor verrà allegato al grafico:
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.
- 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:
Dopo aver fatto doppio clic o trascinandolo sul grafico, apparirà la seguente finestra:
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:
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:
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
- 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