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

Impara come progettare un sistema di trading tramite Accelerator Oscillator

MetaTrader 5Trading | 29 novembre 2023, 09:36
322 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Ecco un nuovo articolo della nostra serie su come progettare un sistema di trading basato sugli indicatori tecnici più popolari. In questo articolo impareremo un nuovo strumento tecnico che può essere utilizzato a nostro favore nel trading. Impareremo a conoscere in dettaglio l'indicatore Accelerator Oscillator (AC), imparando cos'è, cosa misura, come può essere calcolato, come leggerlo e utilizzarlo anche attraverso semplici strategie di trading e come creare un sistema di trading basato su di esso.

I seguenti argomenti saranno il nostro percorso per saperne di più su questo indicatore:

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

Per scrivere i nostri codici utilizzeremo il linguaggio MQL5 (MetaQuotes Language 5), integrato nel terminale di trading MetaTrader 5 che verrà utilizzato per eseguire il nostro sistema di trading. Se non sapete come scaricare MetaTrader 5 e come utilizzare MQL5, potete leggere l'argomento " Scrivere codice MQL5 in MetaEditor " da un articolo precedente per saperne di più. Tutte le strategie qui menzionate sono state concepite solo a scopo didattico e dovete testarle prima di utilizzarle sul vostro conto reale per assicurarvi che siano profittevoli e adatte a voi. Vi consiglio di provare ad applicare ciò che imparate se volete migliorare le vostre capacità di trading e di codifica, poiché questo passaggio è importante e vi aiuterà a trarre il massimo beneficio da questo articolo.

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 Accelerator Oscillator

L'Accelerator Oscillator (AC) è un indicatore di momentum sviluppato da Bill Williams. Misura se c'è una variazione del momentum. Se il momentum di un trend rialzista è diminuito, ciò può significare che c'è meno interesse ad acquistare lo strumento e in questo caso, potremmo vedere un movimento diverso nella direzione opposta della vendita e, viceversa, se il momentum di un trend ribassista è diminuito, ciò può significare che c'è meno interesse a vendere lo strumento e potremmo assistere ad una forza nell’acquisto. Si tratta inoltre di un indicatore anticipatore, in quanto può muoversi prima del prezzo.

Pertanto, l'obiettivo principale di questo indicatore è quello di misurare l'accelerazione e la decelerazione del potere del mercato in entrambe le direzioni, verso l'alto o verso il basso, per intuire quanto a lungo continuerà l'attuale movimento dei prezzi ed essere pronti a qualsiasi cambiamento.

Ora scopriremo come calcolare manualmente questo indicatore attraverso i seguenti passaggi:

AC = AO - SMA (AO, 5)

Dove:

AC = Accelerator Oscillator.

AO = Awesome Oscillator; a proposito, potete leggere il mio articolo precedente sull'Awesome Oscillator per saperne di più.

SMA = Media Mobile Semplice.

5 = il periodo di SMA.

Per calcolare l'AO, procedere come segue:

MEDIAN PRICE = (HIGH + LOW) / 2 

AO = SMA (MEDIAN PRICE, 5) - SMA (MEDIAN PRICE, 34)

Fortunatamente, non è necessario calcolare manualmente questo indicatore, poiché è presente nella piattaforma di trading MetaTrader 5, e tutto ciò che dobbiamo fare è sceglierlo tra gli indicatori disponibili. All'apertura del terminale di trading premiamo Inserisci --> Indicatori --> Bill Williams --> Accelerator Oscillator.

 AC Inserito

A questo punto troveremo la finestra dei parametri dell'indicatore per impostare le nostre preferenze, come segue:

 Parametri AC

1 - il colore dei valori che vanno verso l’alto.

2 - lo spessore dell'istogramma.

3 - il colore dei valori che vanno verso il basso.

Dopo aver determinato i parametri precedenti secondo le nostre preferenze e aver premuto "OK", l'indicatore verrà inserito nel grafico come segue:

 AC allegato

Come possiamo vedere nel grafico precedente, l'indicatore è stato inserito nella parte inferiore del grafico e i valori di AC oscillano intorno allo zero in base all'accelerazione del momentum.

Il livello zero significa che c'è un equilibrio tra le due parti del mercato, tori e orsi. Se AC è superiore al livello zero, significa che potremmo trovare una continuazione del movimento verso l'alto e viceversa, se AC è inferiore al livello zero, significa che potremmo trovare una continuazione del movimento verso il basso.


Strategia Accelerator Oscillator

In questo argomento impareremo semplici strategie di trading da utilizzare sul concetto di base dell'indicatore AC, ma dovrete testarle prima di utilizzarle sul vostro conto reale, poiché l'obiettivo principale è solo didattico. Quindi, dovete assicurarvi che sia adatto e redditizio per il vostro trading.

    Strategia uno: AC Zero Crossover

      In base a questa strategia, dobbiamo utilizzare l'AC per sapere quando c'è un segnale rialzista o ribassista, confrontando due valori per determinare le loro posizioni: il valore corrente dell'AC e il livello zero dell'indicatore AC. Se il valore corrente di AC è superiore al livello zero, sarà un segnale rialzista. Nell'altro scenario, se il valore corrente di AC è inferiore al livello zero, sarà un segnale ribassista.

      Semplicemente,

      AC > livello zero --> Rialzista

      AC < Livello zero --> Ribassista

        Strategia due: Forza AC

          In base a questa strategia, è necessario ottenere segnali della forza del movimento AC facendo un confronto del valore AC attuale con il valore AC massimo e il valore AC minimo degli ultimi dieci valori AC per determinare la posizione di ogni valore e ottenere il segnale adatto. Se il valore corrente di AC è superiore al valore massimo di AC, si tratta di un segnale di forza. Nell'altro scenario, se il valore corrente di AC è inferiore al valore minimo di AC, sarà un segnale di debolezza.

          Semplicemente,

          AC > Valore massimo AC --> AC forte

          AC < Valore minimo AC --> AC debole

            Strategia tre: Strategia AC & MA

              Sulla base di questa strategia, dobbiamo ottenere segnali di acquisto o di vendita in base al controllo di cinque valori che sono: il prezzo di chiusura, la media mobile esponenziale a 50 periodi, l'AC corrente, il valore massimo dell'AC e il valore minimo dell'AC degli ultimi dieci valori dell'AC per determinare la posizione di questi ultimi per ottenere il segnale adatto. Se l'AC corrente è superiore al valore massimo dell'AC e il prezzo di chiusura è superiore all'EMA a 50 periodi, sarà un segnale di acquisto. Nell'altro scenario, se l'AC corrente è inferiore al valore minimo dell'AC e il prezzo di chiusura è inferiore all'EMA a 50 periodi, sarà un segnale di vendita.

              Semplicemente,

              AC > valore massimo AC e Chiusura > 50- EMA --> Acquistare

              AC < valore minimo AC e Chiusura < 50- EMA --> Vendere 

              Schema della strategia Accelerator Oscillator

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

                Strategia uno: AC Zero Crossover

                  In base a questa strategia dobbiamo creare un sistema di trading che possa essere utilizzato per generare automaticamente segnali rialzisti o ribassisti come commento sul grafico basandosi sul controllo continuo del valore corrente di AC e del livello zero dell'indicatore AC per determinare la posizione di questi ultimi e restituire il segnale adatto. Se il valore corrente dell’AC è superiore al livello zero, il sistema di trading deve restituire un commento sul grafico con i seguenti valori:

                  • Rialzista
                  • Valore AC

                  Nell'altro caso, se il valore di AC è inferiore al livello zero, è necessario che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                  • Ribassista
                  • Valore AC

                  Di seguito è riportato lo schema di questo sistema di trading:

                  Schema AC Zero Crossover

                    Strategia due: Forza AC

                      In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare un segnale con la forza del movimento AC, se è forte o debole, sulla base di un controllo continuo di tre valori che sono: il valore AC attuale, il valore massimo e il valore minimo degli ultimi dieci valori dell'indicatore AC. Se il valore corrente dell’AC è superiore al valore massimo, il sistema di trading deve restituire un commento sul grafico con i seguenti valori:

                      • AC è forte
                      • Valore AC
                      • Valore massimo AC
                      • Valore minimo AC

                      Nell'altro caso, se il valore corrente di AC è inferiore al valore minimo, il sistema di trading deve restituire un commento sul grafico con i seguenti valori:

                      • AC è debole
                      • Valore AC
                      • Valore massimo AC
                      • Valore minimo AC

                      Di seguito è riportato lo schema di questo sistema di trading:

                      Schema  forza AC

                        Strategia tre: Strategia AC & MA

                          In base a questa strategia dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali di acquisto e vendita come commento sul grafico basandosi sul controllo continuo dei seguenti cinque valori, l'AC corrente, l'AC massimo, l'AC minimo, il prezzo di chiusura e il valore della media mobile per determinare la posizione di questi ultimi per generare il segnale adatto. Se l'AC corrente è superiore al valore massimo dell'AC e il prezzo di chiusura è superiore alla media mobile, il sistema di trading deve generare un commento sul grafico come segnale con i seguenti valori:

                          • Compra
                          • Prezzo di chiusura
                          • Valore AC
                          • AC Max
                          • AC Min
                          • Valore MA

                          Nell'altro caso, se l'AC corrente è inferiore al valore minimo dell'AC e il prezzo di chiusura è inferiore alla media mobile, è necessario che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                          • Vendi
                          • Prezzo di chiusura
                          • Valore AC
                          • AC Max
                          • AC Min
                          • Valore MA

                          Di seguito è riportato lo schema di questo sistema di trading:

                          Schema Strategia AC _ MA

                          Sistema di trading con Accelerator Oscillator

                          In questo interessante argomento, creeremo il nostro sistema di trading secondo le strategie menzionate, creeremo una base creando un semplice sistema di trading che sarà in grado di restituire un commento sul grafico con il valore corrente di AC. A seguire i passaggi per farlo:

                          Creare un array per acArray utilizzando la funzione "double":

                          double acArray[];

                          Utilizzare la funzione "ArraySetAsSeries" per acArray che restituisce un valore booleano true o false. I suoi parametri sono:

                          • array[]: utilizzeremo acArray.
                          • flag: Utilizzeremo "true" come direzione di indicizzazione dell'array.
                          ArraySetAsSeries(acArray,true);

                          Definizione dell'indicatore AC utilizzando la funzione "iAC" che restituisce l'handle dell'indicatore Accelerator Oscillator. I suoi parametri sono:

                          • symbol: utilizzeremo (_Symbol) da applicare al simbolo corrente.
                          • period: utilizzeremo (_Period) da applicare al periodo corrente.
                          int acDef = iAC(_Symbol,_Period);

                          Ottenere i dati dal buffer dell'indicatore AC utilizzando la funzione "CopyBuffer". I suoi parametri sono: 

                          • indicator_handle: utilizzeremo l'handle (acDef) dell'indicatore AC predefinito.
                          • buffer_num: per determinare il numero di buffer dell'indicatore, useremo (0).
                          • start_pos: per determinare la posizione iniziale, useremo (0).
                          • count: per determinare la quantità da copiare, utilizzeremo (3).
                          • buffer[]: per determinare l'array di destinazione da copiare, useremo (acArray).
                          CopyBuffer(acDef,0,0,3,acArray);

                          Definire il valore AC dopo aver creato una variabile double per acVal e averla normalizzata con "NormalizeDouble". I parametri di "NormalizeDouble" sono:

                          • value: Numero normalizzato. Utilizzeremo (acArray[0]).
                          • digits: per determinare il numero di cifre dopo il decimale. Utilizzeremo (7).
                          double acVal = NormalizeDouble(acArray[0],7);

                          Restituire il commento del valore AC corrente sul grafico utilizzando la funzione "Comment".

                          Comment("AC Value is ",acVal);

                          Di seguito è riportato il codice completo di questo sistema di trading:

                          //+------------------------------------------------------------------+
                          //|                                                    Simple AC.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 acArray[];
                             ArraySetAsSeries(acArray,true);
                             int acDef = iAC(_Symbol,_Period);
                             CopyBuffer(acDef,0,0,3,acArray);
                             double acVal = NormalizeDouble(acArray[0],7);
                             Comment("AC Value is ",acVal);
                            }
                          //+------------------------------------------------------------------+

                          Dopo aver compilato questo codice, lo troveremo nel navigatore nella cartella Expert Advisors, come di seguito riportato:

                            Navigatore AC Semplice

                          Per eseguire questo file, trascinarlo e rilasciarlo sul grafico desiderato così troveremo la sua finestra come quella che segue:

                           Fin Semplice AC

                           AC semplice allegato

                          Come si può vedere nell'immagine precedente, nell'angolo in alto a destra, l'expert è allegato al grafico. Ora siamo pronti a ricevere il nostro segnale, che sarà uguale al seguente:

                           Segnale AC semplice

                          Come si può vedere nell'angolo in alto a sinistra, abbiamo un commento sul valore corrente di AC.

                            Strategia uno: AC Zero Crossover

                              Di seguito è riportato il codice completo per creare il sistema di trading di questa strategia:

                              //+------------------------------------------------------------------+
                              //|                                            AC Zero 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()
                                {
                                 double acArray[];
                                 ArraySetAsSeries(acArray,true);
                                 int acDef = iAC(_Symbol,_Period);
                                 CopyBuffer(acDef,0,0,3,acArray);
                                 double acVal = NormalizeDouble(acArray[0],7);
                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }
                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Differenze in questo codice:

                              Condizioni della strategia.

                              In caso di segnale rialzista:

                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }

                              In caso di segnale ribassista

                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }

                              Dopo aver compilato questo codice, aver verificato che non ci siano errori e averlo eseguito trascinandolo sul grafico come abbiamo imparato prima, scopriremo che è allegato al grafico come segue:

                               AC Zero Crossover allegato

                              Nell'angolo in alto a destra, possiamo vedere che l'esperto di questa strategia è allegato al grafico. Siamo pronti a ricevere i nostri segnali.

                              In caso di segnale rialzista:

                               AC Zero Crossover - segnale rialzista

                              Nell'angolo in alto a sinistra possiamo vedere che abbiamo il commento come segnale di questa strategia con i seguenti valori:

                              • Rialzista
                              • Valore AC

                              In caso di segnale ribassista:

                               AC Zero Crossover - segnale ribassista

                              Nell'angolo in alto a sinistra sono presenti i seguenti valori:

                              • Ribassista
                              • Valore AC
                                Strategia due: Forza AC

                                  Di seguito è riportato il codice completo per creare il sistema di trading di questa strategia:

                                  //+------------------------------------------------------------------+
                                  //|                                                  AC Strength.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 acArray[];
                                     ArraySetAsSeries(acArray,true);
                                     int acDef = iAC(_Symbol,_Period);
                                     CopyBuffer(acDef,0,0,11,acArray);
                                     double acCurrVal = NormalizeDouble(acArray[0],7);
                                     int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                     int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

                                  Differenze in questo codice.

                                  Definizione del valore attuale di AC:

                                  double acCurrVal = NormalizeDouble(acArray[0],7);

                                  Definire il valore massimo nell'intero array AC utilizzando la funzione "ArrayMaximum" che restituisce il valore massimo. I suoi parametri:

                                  • array[]: utilizzeremo acArray.
                                  • start: il punto di partenza del controllo. Utilizzeremo (1).
                                  • count: totale degli elementi dell'array da controllare. Utilizzeremo (WHOLE_ARRAY) per controllare l'intero array.
                                  int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);

                                  Definire il valore minimo nell'intero array AC utilizzando la funzione "ArrayMinimum" che restituisce il valore minimo. I suoi parametri:

                                  • array[]: utilizzeremo (acArray).
                                  • start: il punto di partenza del controllo. Utilizzeremo (1).
                                  • count: totale degli elementi dell'array da controllare. Utilizzeremo (WHOLE_ARRAY) per controllare l'intero array.
                                  int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                  Normalizzazione dei valori massimi e minimi mediante la funzione "NormalizeDouble".

                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);

                                  Condizioni della strategia:

                                  In caso di segnale forte,

                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

                                  In caso di segnale debole,

                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

                                  Dopo aver compilato ed eseguito questo codice sul grafico desiderato, lo troveremo allegato come il seguente:

                                  Forza AC allegata

                                  Come si può vedere in alto a destra nel grafico l'esperto è allegato, siamo pronti a ricevere i segnali di questa strategia, così come i seguenti esempi di test.

                                  In caso di segnale forte:

                                  Forza AC - segnale forte

                                  Come possiamo vedere nel grafico in alto a sinistra, abbiamo ricevuto il segnale con i seguenti valori:

                                  • AC è forte
                                  • Valore AC
                                  • Valore massimo AC
                                  • Valore minimo AC

                                  In caso di debolezza:

                                  Forza AC - segnale debole

                                  Come si può notare, abbiamo ottenuto il segnale con i seguenti valori:

                                  • AC è debole
                                  • Valore AC
                                  • Valore massimo AC
                                  • Valore minimo AC
                                    Strategia tre: Strategia AC & MA

                                      Di seguito è riportato il codice completo per creare il sistema di trading di questa strategia:

                                      //+------------------------------------------------------------------+
                                      //|                                             AC & MA 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()
                                        {
                                         MqlRates pArray[];
                                         double acArray[];
                                         double maArray[];
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                         double closingPrice = pArray[0].close;
                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);
                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Differenze in questo codice:

                                      Creazione degli array pArray, acArray e maArray. Utilizzeremo la funzione double per acArray e maArray, ma useremo la funzione MqlRates per pArray per memorizzare le informazioni su prezzo, volume e spread.

                                         MqlRates pArray[];
                                         double acArray[];
                                         double maArray[];

                                      Impostando il flag AS_SERIES agli array (acArray) e (maArray) come abbiamo detto prima e definendo i dati con la funzione "CopyRates" si ottengono i dati storici della struttura MqlRates e i suoi parametri sono:

                                      • symbol_name: useremo _Symbol da applicare al simbolo corrente.
                                      • timeframe: useremo _Period per applicarlo al periodo corrente.
                                      • start_pos: per determinare la posizione iniziale, useremo (0). 
                                      • count: per determinare il conteggio dei dati da copiare, utilizzeremo (1).
                                      • rates_array[]: per determinare l'array di destinazione da copiare, utilizzeremo pArray.
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);

                                      Definiremo AC,MA:

                                      AC utilizzando la funzione "iAC" come abbiamo detto. Invece per MA, utilizzeremo la funzione "iMA" e i suoi parametri sono:

                                      • symbol: useremo (_Symbol)
                                      • period: useremo (_Period)
                                      • ma_period: per determinare il periodo della media mobile, utilizzeremo 50 
                                      • ma_shift: per determinare lo scostamento orizzontale, useremo (0) 
                                      • ma_method: per determinare il tipo di media mobile, useremo la MA esponenziale 
                                      • applied_price: per determinare il tipo di prezzo utilizzabile, utilizzeremo il prezzo di chiusura
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

                                      Otterremo i dati dal buffer degli indicatori AC e MA utilizzando la funzione "CopyBuffer".

                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);

                                      Ottenere i valori massimo e minimo di acArray.

                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                      Definizione dei valori di AC, AC massimo, AC minimo e Media Mobile Esponenziale.

                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);

                                      Condizioni della strategia.

                                      In caso di segnale di acquisto:

                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

                                      In caso di segnale di vendita:

                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

                                      Dopo aver compilato questo codice e averlo eseguito siamo pronti a ricevere il nostro segnale, sarà allegato come il seguente:

                                      Strategia AC _ MA allegata

                                      Come si può vedere nell'angolo in alto a destra, l'esperto è allegato al grafico. Ora possiamo ricevere i nostri segnali.

                                      In caso di segnale di acquisto:

                                      Strategia AC & MA - segnale buy

                                      Come possiamo vedere nell'angolo in alto a sinistra sono presenti i seguenti valori:

                                      • Compra
                                      • Prezzo di chiusura
                                      • Valore AC
                                      • AC Max
                                      • AC Min
                                      • Valore MA

                                      In caso di segnale di vendita:

                                      Strategia AC & MA - segnale di vendita

                                      Abbiamo il commento con i seguenti valori:

                                      • Vendi
                                      • Prezzo di chiusura
                                      • Valore AC
                                      • AC Max
                                      • AC Min
                                      • Valore MA

                                      Conclusioni

                                      Dopo tutto ciò che abbiamo appreso in questo articolo, si presume che abbiate compreso bene l'indicatore Accelerator Oscillator, dato che in questo articolo abbiamo appreso cos'è, cosa misura, come possiamo calcolarlo, come possiamo leggerlo e utilizzarlo attraverso semplici strategie di trading che sono le seguenti:

                                      • AC Zero Crossover: per ottenere segnali rialzisti e ribassisti in base al crossover tra il valore AC e il livello zero dell'indicatore AC.
                                      • Forza AC: per ottenere un segnale della forza del movimento AC basato sul confronto tra il valore AC attuale e il massimo e il minimo degli ultimi dieci valori AC.
                                      • Strategia AC & MA: per ottenere segnali di acquisto e di vendita basati sul posizionamento del prezzo di chiusura, della media mobile esponenziale a 50 periodi, del valore AC corrente, del valore AC massimo e del valore AC minimo.

                                      Poi abbiamo progettato uno schema passo-passo per tutte le strategie menzionate, per aiutarci a creare il nostro sistema di trading in modo semplice, efficace e senza intoppi. Poi siamo arrivati alla parte più interessante dell'articolo: abbiamo scritto i nostri codici per creare un sistema di trading basato su queste strategie da eseguire nella MetaTrader 5 per generare segnali automatici senza alcuna lettura o monitoraggio manuale delle condizioni da applicare.

                                      Spero che abbiate provato ad applicare ciò che avete imparato come vi ho detto all'inizio di questo articolo e che abbiate ottenuto dei benefici completi da questo articolo, ottenendo maggiori approfondimenti sull'argomento di questo articolo o su qualsiasi altro argomento correlato. Devo ribadire ancora una volta che è necessario testare qualsiasi strategia menzionata prima di utilizzarla sul proprio conto reale per assicurarsi che sia redditizia o adatta al proprio stile di trading, poiché non esiste nulla di adatto a tutti. Inoltre, l'obiettivo principale è solo l'educazione.

                                      Spero che questo articolo vi sia stato utile per il vostro trading e che vogliate leggere altri articoli simili su come progettare un sistema di trading basato sui più popolari indicatori tecnici come RSI, MACD, MA, Stocastico, Bande di Bollinger ... ecc. Per saperne di più, potete leggere i miei precedenti articoli di questa serie.

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

                                      File allegati |
                                      Simple_AC.mq5 (0.86 KB)
                                      AC_Strength.mq5 (1.46 KB)
                                      Imparare come progettare un sistema di trading con l’Alligator Imparare come progettare un sistema di trading con l’Alligator
                                      In questo articolo completeremo la nostra serie su come progettare un sistema di trading basato sugli indicatori tecnici più popolari. Impareremo a creare un sistema di trading basato sull'indicatore Alligator.
                                      Algoritmi di ottimizzazione della popolazione: Algoritmo del pipistrello (Bat - BA) Algoritmi di ottimizzazione della popolazione: Algoritmo del pipistrello (Bat - BA)
                                      In questo articolo prenderò in considerazione l'algoritmo Bat (BA), che mostra una buona convergenza sulle funzioni regolari.
                                      Sviluppare un Expert Advisor per il trading da zero (Parte 24): Fornire robustezza al sistema (I) Sviluppare un Expert Advisor per il trading da zero (Parte 24): Fornire robustezza al sistema (I)
                                      In questo articolo renderemo il sistema più affidabile per garantire un utilizzo robusto e sicuro. Uno dei modi per raggiungere la robustezza desiderata è cercare di riutilizzare il codice il più possibile in modo che venga costantemente testato in casi differenti. Ma questo è solo uno dei modi. Un altro è usare l'OOP.
                                      Algoritmi di ottimizzazione della popolazione: Algoritmo della Lucciola (Firefly FA) Algoritmi di ottimizzazione della popolazione: Algoritmo della Lucciola (Firefly FA)
                                      In questo articolo prenderò in considerazione il metodo di ottimizzazione dell'Algoritmo Firefly(FA). Grazie alla modifica, l'algoritmo si è trasformato da outsider a vero leader della classifica.