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

Impara come progettare un sistema di trading tramite VIDYA

MetaTrader 5Trading | 11 agosto 2023, 09:24
521 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Ecco un nuovo articolo della nostra serie che serve ai principianti a conoscere un nuovo strumento tecnico e a come progettare un sistema di trading basato su semplici strategie. Si tratta dell'indicatore Variable Index Dynamic Average (VIDYA). Questo indicatore è uno degli indicatori trend-following che possono essere utilizzati nel nostro trading e il concetto di questo termine significa che questo indicatore segue il trend. Si tratta quindi di un indicatore ritardatario e significa che si muove dopo il movimento del prezzo. Tratteremo questo indicatore attraverso i seguenti argomenti:

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


Se volete sviluppare le vostre capacità di programmazione, potete applicare da soli ciò che imparate per approfondire la vostra comprensione, perché la pratica è una fase molto importante in qualsiasi processo di apprendimento. Utilizzeremo il linguaggio MQL5 (MetaQuotes Language 5) che è integrato nel terminale di trading MetaTrader 5, se non sapete come scaricarlo e utilizzarlo, potete leggere l'argomento " Scrivere codice MQL5 in MetaEditor " da un articolo precedente.

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.


Definizione di VIDYA

Il Variable Index Dynamic Average (VIDYA) è un indicatore trend-following sviluppato da Tushar Chande. Assomiglia alla media mobile esponenziale, ma viene regolata dinamicamente in base alla volatilità relativa dei prezzi. La volatilità in questo indicatore viene misurata dal Chande Momentum Oscillator (CMO), misurando il rapporto tra la somma dei movimenti positivi e negativi, come vedremo quando impareremo a calcolarlo. (CMO) viene utilizzato per smussare la media mobile esponenziale. Quindi, come vedremo, le impostazioni di questo indicatore sono parametri come il periodo CMO e il periodo EMA. Può essere utilizzato lo stesso di qualsiasi media mobile per ottenere il tipo di trend se si tratta di un trend rialzista o trend al ribasso. Se volete saperne di più sui tipi di trend e su come identificarli, potete leggere l'argomento sulla definizione di trend da un articolo precedente. Oppure si può utilizzare per generare segnali di acquisto o di vendita e vedremo attraverso l'argomento della strategia VIDYA alcune semplici strategie basate su di essa.

Ora dobbiamo imparare come calcolare l'indicatore VIDYA per capire meglio il concetto principale che ne è alla base. I seguenti passaggi sono per come calcolarlo manualmente.

  • Calcolare l'EMA:

EMA(i) = Price(i) * F + EMA(i-1)*(1-F)

Dove:

EMA(i) = EMA corrente

Prezzo(i) = Prezzo corrente

F (fattore di smussatura) = 2/(EMA del periodo+1)

EMA(i-1) = Valore EMA precedente

  • Calcolare il valore Variable Index Dynamic Average (VIDYA):

VIDYA(i) = Price(i) * F * ABS(CMO(i)) + VIDYA(i-1) * (1 - F* ABS(CMO(i)))

Dove:

VIDYA(i) = VIDYA corrente

ABS(CMO(i)) = Valore assoluto attuale Chande Momentum Oscillator

VIDYA(i-1) = Valore VIDYA precedente

  • Calcolare il Chande Momentum Oscillator (CMO):

CMO(i) = (UpSum(i) - DnSum(i))/(UpSum(i) + DnSum(i))

Dove:

UpSum(i) = Valore attuale della somma dei movimenti positivi del periodo.

DnSum(i) = Il valore attuale della somma dei movimenti negativi durante il periodo

Dopodiché, possiamo ottenere l'indicatore VIDYA. Al giorno d'oggi non è più necessario calcolarlo manualmente, ma si può semplicemente scegliere di inserirlo nel grafico tra gli indicatori disponibili nella piattaforma di trading MetaTrader 5. Ecco come inserirlo.

Inserisci --> Indicatori --> Trend --> Variable Index Dynamic Average

VIDYA Inserito

Si aprirà la seguente finestra con i parametri dell'indicatore:

Parametri VIDYA

1 - il periodo del Chande Momentum Oscillator (CMO)

2 - il periodo della media mobile esponenziale (EMA)

3 - il tipo di prezzo

4 - il colore della linea VIDYA

5 - lo stile della linea VIDYA

6 - lo spessore della linea VIDYA

Dopo aver determinato tutti i parametri precedenti e aver premuto "OK", l'indicatore sarà allegato al grafico come segue:

 VIDYA allegato

Come si può vedere nel grafico precedente, l'indicatore è inserito nel grafico e rappresenta una linea al di sopra o al di sotto dei prezzi in base al suo valore e ai movimenti di prezzo. Quando vediamo la linea VIDYA sopra il prezzo, significa che c'è un controllo ribassista e viceversa, quando la linea VIDYA è sotto il prezzo, significa che c'è un controllo rialzista.


Strategia VIDYA

In questo argomento impareremo a utilizzare l'indicatore VIDYA attraverso semplici strategie basate sul concetto principale di questo indicatore. È meglio combinare questo indicatore con altri strumenti o indicatori tecnici per ottenere risultati più affidabili ed efficaci. Perché vi darà maggiori informazioni da diverse prospettive e questa è una delle caratteristiche dell'analisi tecnica.

    Strategia uno: Identificatore di trend VIDYA

      Dobbiamo ottenere un segnale con il tipo di trend se è al rialzo o al ribasso in base al confronto tra la chiusura corrente e il VIDYA corrente con le sue impostazioni predefinite (9,12). Dobbiamo impostare un segnale di rialzo se la chiusura attuale è superiore al VIDYA. Nell'altro caso, dobbiamo ottenere un segnale di trend al ribasso se la chiusura attuale è inferiore a VIDYA.

      Chiusura attuale > VIDYA --> trend al rialzo

      Chiusura attuale < VIDYA --> trend al ribasso

        Strategia due: VIDYA crossover uno

          Dobbiamo ottenere segnali di acquisto o di vendita basati sul confronto degli stessi valori della strategia precedente. Dobbiamo ottenere un segnale di acquisto se la chiusura attuale è superiore a VIDYA. Viceversa, se la chiusura attuale è inferiore all'attuale VIDYA, dobbiamo ottenere un segnale di vendita.

          Chiusura corrente > VIDYA --> Segnale di acquisto

          Chiusura attuale < VIDYA --> Segnale di vendita

            Strategia tre: VIDYA crossover due

              Dobbiamo ottenere segnali di acquisto o di vendita basati sul confronto tra il VIDYA con la sua impostazione (9, 12) e il VIDYA con la sua impostazione (20, 50). Dobbiamo ottenere un segnale di acquisto quando il VIDYA (9, 12) diventa maggiore del VIDYA (20, 50). Nell'altro scenario, se l'attuale VIDYA (9, 12) è inferiore all'attuale VIDYA (20, 50), sarà un segnale di vendita.

              VIDYA (9, 12) > VIDYA (20, 50) --> Segnale d'acquisto

              VIDYA (9, 12) < VIDYA (20, 50) --> Segnale di vendita

              Attraverso le tre semplici strategie precedenti, abbiamo imparato a utilizzare l'indicatore VIDYA basandoci sul concetto principale che lo sottende.


              Schema della strategia VIDYA

              In questo argomento, progetteremo uno schema passo-passo che ci aiuterà a creare il nostro sistema di trading per ogni strategia menzionata senza problemi.

                Strategia uno: Identificatore di trend VIDYA

                  In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali con il tipo di trend. Il sistema di trading deve controllare due valori: la chiusura attuale e il valore attuale di VIDYA per determinare il tipo di trend. Se il valore della chiusura attuale è superiore al valore di VIDYA, sarà un segnale che il trend è al rialzo.

                  Quindi, abbiamo bisogno che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                  • Trend rialzista
                  • Valore della chiusura attuale
                  • Valore attuale di VIDYA

                  Nell'altro scenario, se il valore di chiusura attuale è inferiore al valore attuale di VIDYA, sarà un segnale che il trend è al ribasso.

                  Quindi, abbiamo bisogno che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                  • Trend ribassista
                  • Valore della chiusura attuale
                  • Valore attuale di VIDYA

                  Di seguito è riportato lo schema di questa strategia:

                   Schema identificatore di trend VIDYA

                    Strategia due: VIDYA crossover uno

                      In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per avvisarci se abbiamo un segnale di acquisto o di vendita. In questa strategia utilizzeremo gli stessi valori dell'identificatore di trend VIDYA ma per ottenere segnali diversi. Il sistema di trading deve controllare due valori: la chiusura attuale e il valore attuale di VIDYA, se la chiusura attuale è maggiore del valore di VIDYA, si tratta di un segnale di acquisto.

                      Quindi, abbiamo bisogno che il sistema di trading restituisca i seguenti valori:

                      • Segnale d’acquisto
                      • Valore della chiusura attuale
                      • Valore attuale di VIDYA

                      Viceversa, se la chiusura attuale è inferiore al VIDYA, si tratta di un segnale di vendita.

                      Quindi, abbiamo bisogno che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                      • Segnale di vendita
                      • Valore della chiusura attuale
                      • Valore attuale di VIDYA
                      Di seguito è riportato lo schema di questa strategia:

                      Schema VIDYA crossover uno

                        Strategia tre: VIDYA crossover due

                          In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali di acquisto e vendita. Dobbiamo controllare due valori e sono: VIDYA corrente (9, 12) e VIDYA corrente (20, 50) in modo continuo. Se il valore attuale (9, 12) è maggiore dell'attuale (20, 50), si tratta di un segnale di acquisto.

                          Quindi, abbiamo bisogno che il sistema di trading restituisca i seguenti valori:

                          • Segnale d’acquisto
                          • Valore della chiusura attuale
                          • Valore attuale di VIDYA (9, 12)
                          • Valore attuale di VIDYA (20, 50)

                          Nell'altro scenario, se il valore corrente di VIDYA (9, 12) è inferiore al valore corrente di VIDYA (20, 50), si tratterà di un segnale di vendita.

                          Quindi, abbiamo bisogno che il sistema di trading restituisca i seguenti valori:

                          • Segnale di vendita
                          • Valore della chiusura attuale
                          • Valore attuale di VIDYA (9, 12)
                          • Valore attuale di VIDYA (20, 50)

                          Di seguito è riportato lo schema di questa strategia:


                          Schema VIDYA crossover due

                          Ora, abbiamo progettato un semplice schema passo-passo per ogni strategia menzionata per aiutarci a creare il nostro sistema di trading automatico e siamo pronti ad affrontare l'argomento più interessante, quello del sistema di trading VIDYA per creare un sistema di trading per ogni strategia. 


                          Sistema di trading VIDYA

                          Questo semplice sistema di trading ci aiuterà a vedere il valore attuale dell'indicatore VIDYA in modo continuo, perché lo vedremo come commento sul grafico.

                          I passi che seguono indicano come creare un sistema di trading che faccia ciò di cui abbiamo bisogno.

                          Creeremo un array per "vidyaArray" utilizzando la funzione double, che è uno dei tipi reali o a virgola mobile che rappresenta valori con frazioni.

                          double vidyaArray[];

                          Ordineremo l'array "vidyaArray" creato utilizzando la funzione "ArraySetAsSeries" che restituisce un valore booleano.

                          ArraySetAsSeries(vidyaArray,true);

                          Creeremo una variabile intera per "vidyaDef" che sarà uguale alla definizione dell'indicatore VIDYA utilizzando la funzione "iVIDyA" che restituisce l'handle dell'indicatore.

                          I parametri sono:

                          • symbol: utilizzeremo (_Symbol) da applicare al simbolo corrente
                          • periodo: si utilizzerà (_Period) per essere applicato al periodo o timeframe corrente
                          • cmo_period: per determinare il periodo del Chande Momentum, determineremo 9
                          • ema_period: per determinare il periodo di smussatura della media mobile esponenziale, si determinerà 12
                          • ma_shift: per determinare lo scostamento orizzontale sul grafico, se necessario, determineremo 0
                          • prezzo_applicato: per determinare il tipo di prezzo, utilizzeremo il prezzo di chiusura
                          int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);

                          Riempiremo l'array creato utilizzando la funzione "CopyBuffer" per ottenere i dati dall'indicatore VIDYA.

                          Parametri di questa funzione:

                          • indicator_handle: per determinare l'handle dell'indicatore e useremo (vidyaDef)
                          • buffer_num: per determinare il numero di buffer dell'indicatore e useremo (0)
                          • start_pos: per determinare la posizione iniziale e useremo (0)
                          • count: per determinare la quantità da copiare e useremo (3)
                          • buffer[]: per determinare l'array di destinazione in cui copiare e useremo (vidyaArray)
                          CopyBuffer(vidyaDef,0,0,3,vidyaArray);

                           Otterremo "vidyaVal" dopo aver creato una variabile utilizzando la funzione "NormalizeDouble" che restituisce il valore di tipo double.

                          Parametri di questa funzione:

                          • value: useremo (vidyaArray[0]) come numero normalizzato
                          • digits: utilizzeremo (6) come numero di cifre dopo la virgola decimale
                          double vidyaVal = NormalizeDouble(vidyaArray[0],6);

                          Utilizzeremo la funzione Comment per generare un commento sul grafico con il valore attuale di VIDYA:

                          Comment("VIDYA Value is ",vidyaVal);

                          Quindi, il codice completo di questo sistema di trading è il seguente:

                          //+------------------------------------------------------------------+
                          //|                                                 Simple VIDYA.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 vidyaArray[];
                          
                             ArraySetAsSeries(vidyaArray,true);
                          
                             int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                          
                             CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                          
                             double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                          
                             Comment("VIDYA Value is ",vidyaVal);
                          
                            }
                          //+------------------------------------------------------------------+
                          

                          Dopo aver compilato questo codice, nel navigatore troveremo l'expert di questo sistema di trading come di seguito:

                           VIDYA nav

                          Dopo averlo trascinato e rilasciato sul grafico, la finestra di questo sistema di trading sarà come al seguente:

                          Finestra VIDYA Semplice

                          Premendo "OK", scopriremo che l'expert è allegato come segue:

                          VIDYA Semplice allegato

                          Come si può vedere nel grafico precedente, l'expert è allegato nell'angolo in alto a destra. Il segnale desiderato appare quindi come il seguente:

                           Segnale VIDYA semplice

                          Come si può vedere nel grafico precedente, nell'angolo in alto a sinistra è presente un commento con il valore attuale di VIDYA. Se vogliamo assicurarci di avere lo stesso valore dell'indicatore VIDYA integrato, dopo aver allegato l'expert possiamo inserire l'indicatore integrato con le stesse impostazioni dell'expert, come di seguito indicato:

                           VIDYA semplice stesso segnale

                          Come si può vedere nel grafico precedente, l'expert è allegato al grafico nell’angolo in alto a destra e il valore attuale dell'expert si trova nell'angolo in alto a sinistra del grafico, mentre l'indicatore integrato è allegato al grafico dei prezzi e il suo valore è visibile nella finestra dei dati a destra. È evidente che i due valori sono uguali.

                            Strategia uno: Identificatore di trend VIDYA

                              Se abbiamo bisogno di creare un sistema di trading per questa strategia, possiamo trovare il seguente codice completo:

                              //+------------------------------------------------------------------+
                              //|                                       VIDYA trend identifier.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()
                                {
                                 MqlRates priceArray[];
                                 double vidyaArray[];
                              
                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);
                              
                                 int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                              
                                 CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                              
                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                              
                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                              
                                }
                              //+------------------------------------------------------------------+
                              

                              Differenze in questo codice:

                              Creare due array, per i prezzi utilizzando la funzione "MqlRates" e per VIDYA utilizzando "double" come abbiamo detto prima.

                                 MqlRates priceArray[];
                                 double vidyaArray[];
                              

                              Ordinamento di questi array creati. Per priceArray utilizzeremo la funzione "CopyRates" per ottenere i dati storici di "MqlRates". I suoi parametri sono:

                              • symbol name: useremo (_Symbol)
                              • timeframe: useremo (_Period)
                              • start time: useremo (0)
                              • stop time: useremo (3)
                              • rates array: utilizzeremo (priceArray)

                              Per vidyaArray useremo la funzione "ArraySetAsSeries", come abbiamo detto prima.

                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);
                              

                              Definizione del prezzo corrente di chiusura e dei valori correnti di VIDYA.

                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                              

                              Condizioni di questa strategia:

                              1. In caso di trend rialzista

                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              

                              2. In caso di tendenza al ribasso

                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              

                              Dopo aver compilato questo codice e averlo inserito nel grafico desiderato, il risultato sarà il seguente:

                              Identificatore di trend VIDYA allegato

                              Come si può notare, l’expert identificatore di trend VIDYA è allegato nell'angolo in alto a destra del grafico precedente. Ora possiamo iniziare a ricevere i segnali da esso. Di seguito sono riportati alcuni esempi di questi segnali ottenuti durante i test.

                              1. In caso di trend rialzista

                               Identificatore di trend VIDYA - segnale rialzista

                              Come si può vedere nel grafico precedente, nell'angolo in alto a sinistra si trovano i seguenti valori:

                              • Trend rialzista
                              • Valore della chiusura attuale
                              • Valore attuale di VIDYA

                              2. In caso di tendenza al ribasso

                               Identificatore di trend VIDYA - segnale ribassista

                              Sulla base del grafico precedente, possiamo trovare i seguenti valori:

                              • Trend ribassista
                              • Valore della chiusura attuale
                              • Valore attuale di VIDYA
                                Strategia due: VIDYA crossover uno

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

                                  //+------------------------------------------------------------------+
                                  //|                                          VIDYA one crossover.mq5 |
                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                  //|                                             https://www.mql5.com |
                                  //+------------------------------------------------------------------+
                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                  #property link      "https://www.mql5.com"
                                  #property version   "1.00"
                                  //+------------------------------------------------------------------+
                                  void OnTick()
                                    {
                                     MqlRates priceArray[];
                                     double vidyaArray[];
                                  
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                     ArraySetAsSeries(vidyaArray,true);
                                  
                                     int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                  
                                     CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                  
                                     double currentClose=NormalizeDouble(priceArray[2].close,6);
                                     double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                  
                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                  
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Differenze in questo codice:

                                  Commento basato su questa strategia.

                                  1. In caso di segnale di acquisto

                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  

                                  2. In caso di segnale di vendita

                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  

                                  Dopo aver compilato questo codice e averlo inserito nel grafico desiderato sarà come segue:

                                  VIDYA crossover uno allegato

                                  Come si può vedere nel grafico precedente, nell'angolo in alto a destra l'expert è allegato al grafico. In seguito, otterremo segnali di acquisto e di vendita basati su questa strategia. Di seguito sono riportati alcuni esempi di test del sistema.

                                  1. In caso di segnale di acquisto

                                  VIDYA crossover uno - segnale d'acquisto

                                  Come possiamo vedere nel grafico precedente, nell'angolo in alto a sinistra, possiamo trovare i seguenti valori basati sul VIDYA crossover uno:

                                  • Segnale d’acquisto
                                  • Valore della chiusura attuale
                                  • Valore attuale di VIDYA

                                  2. In caso di segnale di vendita

                                  VIDYA crossover uno - segnale di vendita

                                  Come si può vedere nel grafico precedente, nell'angolo in alto a sinistra si trovano i seguenti valori:

                                  • Segnale di vendita
                                  • Valore della chiusura attuale
                                  • Valore attuale di VIDYA
                                    Strategia tre: VIDYA crossover due

                                      Di seguito riportiamo il codice completo della strategia VIDYA crossover due per creare un sistema di trading.

                                      //+------------------------------------------------------------------+
                                      //|                                          VIDYA two crossover.mq5 |
                                      //|                                  Copyright 2022, MetaQuotes Ltd. |
                                      //|                                             https://www.mql5.com |
                                      //+------------------------------------------------------------------+
                                      #property copyright "Copyright 2022, MetaQuotes Ltd."
                                      #property link      "https://www.mql5.com"
                                      #property version   "1.00"
                                      //+------------------------------------------------------------------+
                                      void OnTick()
                                        {
                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];
                                      
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);
                                      
                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);
                                      
                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);
                                      
                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                      
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Differenze in questo codice:

                                      Creare tre array, per il prezzo, vidyaArray, vidyaArray1

                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];
                                      

                                      Ordinamento degli array creati

                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);
                                      

                                      Definizione di "vidyaDef" e "vidyaDef1"

                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);
                                      

                                      Riempire gli array "vidyaArray" e " vidyaArray1".

                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);
                                      

                                      Definizione dei valori di currentClose, "vidyaVal" e "vidyaVal1".

                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);
                                      

                                      Condizioni dei segnali basati su questa strategia:

                                      1. In caso di segnale di acquisto

                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      

                                      2. In caso di segnale di vendita

                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      

                                      Dopo aver compilato questo codice e averlo inserito nel grafico desiderato, il risultato sarà il seguente:

                                      VIDYA crossover due allegato

                                      Come si può vedere nel grafico precedente, nell'angolo in alto a destra abbiamo l'expert allegato al grafico. Ora possiamo vedere i segnali di acquisto e di vendita basati su questa strategia. Di seguito sono riportati alcuni esempi di test del sistema.

                                      In caso di segnale di acquisto:

                                      VIDYA crossover due - segnale d'acquisto

                                      Come possiamo vedere nel grafico precedente, nell'angolo in alto a sinistra abbiamo i seguenti valori dopo il crossover:

                                      • Segnale d’acquisto
                                      • Valore della chiusura attuale
                                      • Valore VIDYA Attuale (9,12)
                                      • Valore VIDYA Attuale (20,50)

                                      In caso di segnale di vendita:

                                       VIDYA crossover due - segnale di vendita

                                      Nell'altro scenario, come possiamo vedere nel grafico precedente in alto a sinistra, abbiamo i seguenti valori dopo il crossover:

                                      • Segnale di vendita
                                      • Valore della chiusura attuale
                                      • Valore VIDYA Attuale (9,12)
                                      • Valore VIDYA Attuale (20,50)


                                      Conclusioni

                                      Dopo aver affrontato tutti gli argomenti citati, si ritiene che ora sappiate cos'è la Variable Index Dynamic Average (VIDYA) in dettaglio, poiché in questo articolo abbiamo affrontato altri argomenti che sono in grado di chiarirlo. Abbiamo individuato cos'è l'indicatore Variable Index Dynamic Average (VIDYA), cosa misura, come possiamo calcolarlo manualmente per capire il concetto principale che sta alla base, e come inserirlo nel grafico e leggerlo. Abbiamo imparato tutto questo attraverso il tema della definizione di VIDYA. Poi abbiamo imparato come utilizzarlo attraverso semplici strategie basate sul concetto principale che ne è alla base dell'indicatore, e le abbiamo imparato attraverso l'argomento della strategia VIDYA:

                                      • Strategia di identificazione del trend VIDYA: per ottenere segnali con il tipo di trend se c'è un uptrend o un downtrend.
                                      • Strategia VIDYA crossover uno: per ottenere segnali di acquisto o di vendita basati sul crossover tra i prezzi e la linea VIDYA.
                                      • Strategia VIDYA crossover due: per ottenere segnali di acquisto o di vendita basati sul crossover tra VIDYA con impostazioni di (9,12) e VIDYA con impostazioni (20, 50).

                                      Spero che abbiate provato a scrivere da soli i codici del sistema di trading progettato per sviluppare le vostre abilità di programmazione come principianti, poiché questa pratica è un passaggio molto importante per approfondire la vostra comprensione e migliorare le vostre abilità non solo nella programmazione ma in un qualsiasi processo di apprendimento per qualsiasi argomento. Non dimenticherò di ribadire che dovete testare qualsiasi strategia prima di utilizzarla sul vostro conto reale con denaro vero, poiché il concetto principale di questo articolo è solo a scopo educativo e potreste scoprire che è necessario ottimizzarle o modificarle o che non siano adatte al vostro stile di trading, poiché non esiste una strategia adatta a tutti.

                                      Spero che questo articolo vi sia stato utile e che vi abbia dato buoni spunti di riflessione sull'argomento dell'articolo o su qualsiasi altro argomento correlato. Se volete leggere altri articoli simili per conoscere gli indicatori tecnici più popolari, come usarli e come progettare un sistema di trading con loro, potete leggere i miei articoli precedenti di questa serie per principianti per saperne di più sulla progettazione di un sistema di trading con RSI, MACD, Stocastico, Medie Mobili, Bande di Bollinger, Envelopes... e altri ancora dopo aver imparato e compreso in modo più dettagliato questi indicatori tecnici.

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

                                      Algoritmi di ottimizzazione della popolazione: Ottimizzazione Grey Wolf (GWO) Algoritmi di ottimizzazione della popolazione: Ottimizzazione Grey Wolf (GWO)
                                      Prendiamo in considerazione uno dei più recenti algoritmi di ottimizzazione moderni - l'ottimizzazione Grey Wolf. Il comportamento originale sulle funzioni test rende questo algoritmo uno dei più interessanti tra quelli considerati in precedenza. Si tratta di uno dei principali algoritmi per l'addestramento di reti neurali e funzioni regolari con molte variabili.
                                      Impara come progettare un sistema di trading tramite Bull’s Power Impara come progettare un sistema di trading tramite Bull’s Power
                                      Benvenuti ad un nuovo articolo della nostra serie su come imparare a progettare un sistema di trading attraverso gli indicatori tecnici più popolari. In questo articolo impareremo a conoscere un nuovo indicatore tecnico e a progettare un sistema di trading in base ad esso, questo indicatore è il Bull's Power.
                                      Algoritmi di ottimizzazione della popolazione: Algoritmo di Ottimizzazione del Cuculo (COA) Algoritmi di ottimizzazione della popolazione: Algoritmo di Ottimizzazione del Cuculo (COA)
                                      Il prossimo algoritmo che considererò è l'ottimizzazione della ricerca del cuculo utilizzando i voli di Levy. Si tratta di uno dei più recenti algoritmi di ottimizzazione e di un nuovo leader in classifica.
                                      Sviluppare un Expert Advisor per il trading da zero (Parte 21): Nuovo sistema di ordini (IV) Sviluppare un Expert Advisor per il trading da zero (Parte 21): Nuovo sistema di ordini (IV)
                                      Finalmente, il sistema visivo inizierà a funzionare, anche se non sarà ancora completato. Qui finiremo di apportare le modifiche principali. Ce ne saranno parecchie, ma sono tutte necessarie. Bene, l'intero lavoro sarà piuttosto interessante.