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

Imparare come progettare un sistema di trading con l’Alligator

MetaTrader 5Trading | 5 dicembre 2023, 12:18
451 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 a conoscere nel dettaglio l'indicatore Alligator, su cos'è, cosa misura, come possiamo calcolarlo, come leggerlo e utilizzarlo. Quindi creeremo un sistema di trading basato su alcune semplici strategie che si basano sull'obiettivo principale di questo indicatore. Tratteremo questo indicatore attraverso i seguenti argomenti:

  1. Definizione di Alligator
  2. Strategia dell’Alligator
  3. Schema della strategia dell'Alligator
  4. Sistema di trading Alligator
  5. Conclusioni

Vi consiglio di provare ad applicare da soli quanto appreso, in particolare i codici contenuti in questo articolo, per sviluppare le vostre capacità di programmazione, poiché si tratta di un passo importante per raggiungere questo obiettivo di sviluppo. In questo articolo utilizzeremo l'IDE MQL5 (MetaQuotes Language 5) che è integrato nel terminale di trading MetaTrader 5. Se non sapete come scaricare MetaTrader 5 e come utilizzare MQL5, potete leggere l'argomento Scrivere codice MQL5 in MetaEditor per saperne di più.

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 Alligator

L'indicatore tecnico Alligator è un trend-following, sviluppato da Bill Williams. Si basa sul fatto che il trend non è la maggior parte del tempo del periodo degli strumenti del mercato finanziario e che lo è solo per il 15-30% del tempo, mentre consuma la maggior parte del tempo nell'oscillazione o lateralità, dove prende dal 70% all’85% del tempo. Quindi, a volte abbiamo un trend al rialzo o al ribasso, ma nella maggior parte dei casi abbiamo periodi di oscillazione. Se volete saperne di più sui trend, sui loro tipi e su come identificarli, potete leggere l'argomento della definizione di trend dal mio precedente articolo, che vi sarà utile in questo contesto. Utilizza alcuni numeri di Fibonacci nel calcolo, così come vedremo che utilizza tre medie mobili levigate (smoothed) con una serie di numeri a cinque, otto e tredici periodi. Come abbiamo detto, l'indicatore Alligator è composto da tre medie mobili levigate, che sono le seguenti:

  • La Mascella dell'Alligator.
  • I Denti dell'Alligator.
  • Le Labbra dell’Alligator.

Possiamo calcolare questo indicatore manualmente attraverso i seguenti passaggi:

La Mascella dell'Alligator = SMMA (prezzo medio, 13, 8)

I Denti dell'Alligator = SMA (prezzo medio, 8, 5)

Le Labbra dell’Alligator = SMMA (prezzo medio, 5, 3)

Prezzo medio = (Massimo + Minimo)/2

Dove:

SMMA = Media Mobile Levigata (smoothed)

Prezzo medio = prezzo medio dei dati

Massimo = il prezzo più alto

Minimo = il prezzo più basso

Dopo i passaggi precedenti, otterremo l'indicatore Alligator, ma non avremo bisogno di calcolarlo manualmente poiché è un indicatore integrato nel terminale MetaTrader 5 e tutto ciò che dobbiamo fare è sceglierlo tra gli indicatori tecnici disponibili, come di seguito:

All'apertura del terminale MetaTrader 5, premere Inserisci --> Indicatori --> Bill Williams --> Alligator.

 Alligator inserito

In seguito troveremo i suoi parametri come quelli riportati di seguito:

 Param alligator

1 - il periodo delle Mascelle dell'Alligator.

2 - lo scostamento orizzontale delle Mascelle dell'Alligator.

3 - il periodo dei Denti dell’Alligator.

4 - lo scostamento orizzontale dei Denti dell’Alligator.

5 - il periodo delle Labbra dell’Alligator.

6 - lo scostamento orizzontale delle Labbra dell’Alligator.

7 - il metodo di levigatura (smoothing).

8 - il tipo di prezzo utilizzabile.

Attraverso la finestra seguente è possibile determinare lo stile dell'indicatore:

 Alligator param1

1 - il colore della linea delle mascelle.

2 - il tipo di linea delle mascelle.

3 - lo spessore della linea delle mascelle.

4 - il colore della linea dei denti.

5 - il tipo di linea dei denti.

6 - lo spessore della linea dei denti.

7 - il colore della linea delle labbra.

8 - il tipo di linea delle labbra.

9 - lo spessore della linea delle labbra.

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

 Alligator allegato

Come si può vedere nel grafico precedente, l'indicatore è stato inserito nel grafico e sono presenti tre linee:

1 - Labbra dell’Alligator

2 - Denti dell’Alligator

3 - Mascelle dell’Alligator

Possiamo leggere l'indicatore semplicemente osservando la posizione di queste linee rispetto ai prezzi. Se il prezzo si trova al di sopra di labbra, denti e mascelle, possiamo dire che la tendenza è al rialzo. Se il prezzo è al di sotto di labbra, denti e mascelle, possiamo dire che la tendenza è al ribasso. Se il prezzo si muove attraverso le tre linee, possiamo dire che abbiamo un andamento laterale.

Strategia dell’Alligator

Ci sono molti modi per utilizzare l'indicatore Alligator nel trading, ma menzionerò delle semplici strategie che possono essere utilizzate sulla base dell'idea principale di questo argomento a scopo didattico e che dovrete testare prima di utilizzarle sul vostro conto reale per assicurarvi che siano redditizie. Potreste scoprire che è necessario ottimizzare le strategie menzionate, ed è normale che possiate farlo per raggiungere la formula migliore che possa essere utile per il vostro stile di trading.

    Strategia uno: Alligator Trend Identifier

      Sulla base di questa strategia, dobbiamo ottenere segnali rialzisti e ribassisti in base a condizioni specifiche. Se il valore delle labbra è superiore ai valori, dei denti e delle mascelle, e contemporaneamente quello dei denti e superiore a quello delle mascelle, sarà un segnale rialzista. Nell’altro caso, se il valore delle labbra è inferiore a quello dei denti e delle mascelle e allo stesso tempo il valore dei denti è inferiore a quello delle mascelle, sarà un segnale ribassista.

      labbra > valore dei denti, labbra > valore delle mascelle e denti > valore delle mascelle --> rialzista

      labbra < valore dei denti, labbra < valore delle mascelle e denti < valore delle mascelle --> ribassista

        Strategia due: Sistema di segnali alligator

          Sulla base di questa strategia, dobbiamo ottenere segnali di acquisto e vendita in base all'incrocio dei valori di labbra, denti e mascella. Se il valore delle labbra è maggiore del valore dei denti e del valore della mascella, si tratta di un segnale di acquisto. Nell'altro scenario, se il valore delle labbra è inferiore a quello dei denti e delle mascelle, si tratta di un segnale di vendita.

          valore labbra > valore denti, valore labbra > valore mascelle --> acquistare

          valore labbra < valore denti, valore labbra < valore mascelle --> vendere

            Strategia tre: Miglioramento del sistema dei segnali dell'alligator

              In base a questa strategia, dobbiamo ottenere segnali di acquisto e vendita basati sull'incrocio tra labbra, denti e mascelle e sull'incrocio tra il prezzo di chiusura e il valore dei denti. Se la linea delle labbra è inferiore a quella dei denti e delle mascelle e il prezzo di chiusura è superiore al valore dei denti, sarà un segnale di acquisto. Nell'altro caso, se la linea delle labbra è maggiore a quella dei denti e delle mascelle e il prezzo di chiusura è inferiore al valore dei denti, si tratta di un segnale di vendita.

              valore labbra < valore dei denti, valore labbra < valore delle mascelle e prezzo di chiusura > valore denti --> acquistare

              valore labbra > valore denti, valore labbra > valore mascelle e prezzo di chiusura < valore denti --> vendere

              Schema della strategia dell'Alligator

              Ora dobbiamo creare un sistema di trading basato sulle strategie menzionate nell'argomento precedente e per farlo, creeremo uno schema passo-passo che ci aiuterà a creare questo sistema di trading.

                Strategia uno: Alligator Trend Identifier

                  In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali rialzisti o ribassisti basati sul controllo continuo dei seguenti valori:

                  • Valore delle labbra
                  • Valore dei denti
                  • Valore delle mascelle

                  È necessario che il sistema di trading determini le posizioni di questi valori per generare segnali adeguati in base a ciò. Se la linea delle labbra è superiore a quella dei denti e a quella delle mascelle e quella dei denti è superiore a quella delle mascelle, in questo caso è necessario che il sistema di trading restituisca i seguenti valori come commento sul grafico:

                  • Rialzista
                  • Valore delle mascelle = n
                  • Valore dei denti = n
                  • Valore delle labbra = n

                  Nell'altro caso, se la linea delle labbra è inferiore alla linea dei denti e a quella delle mascelle e allo stesso tempo la linea dei denti è inferiore alla linea delle mascelle, in questo caso abbiamo bisogno che il sistema di trading restituisca i seguenti valori come commento sul grafico:

                  • Ribassista
                  • Valore delle mascelle = n
                  • Valore dei denti = n
                  • Valore delle labbra = n

                  Di seguito lo schema passo-passo di questo sistema di trading:

                  Schema dell'Alligator Trend Identifier

                    Strategia due: Sistema di segnali alligator

                      In base a questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali di acquisto o vendita basati sul controllo continuo dei seguenti valori per determinare le posizioni di ciascuno di essi:

                      • Valore delle labbra
                      • Valore dei denti
                      • Valore delle mascelle

                      Se la linea delle labbra è maggiore del valore dei denti e allo stesso tempo la linea delle labbra è maggiore del valore delle mascelle, in questo caso è necessario che il sistema di trading restituisca un commento sul grafico con i seguenti valori:

                      • Buy
                      • Valore delle mascelle = n
                      • Valore dei denti = n
                      • Valore delle labbra = n

                      Nell'altro caso, se la linea delle labbra è inferiore al valore dei denti e allo stesso tempo la linea delle labbra è inferiore alla linea delle mascelle, è necessario che il sistema di trading restituisca un commento sul grafico come segnale con i seguenti valori:

                      • Sell
                      • Valore delle mascelle = n
                      • Valore dei denti = n
                      • Valore delle labbra = n

                      Di seguito lo schema passo-passo di questo sistema di trading:

                      Schema del sistema di segnali Alligator

                        Strategia tre: Potenziamento del Sistema Segnali dell'Alligator

                          In base a questa strategia, dobbiamo creare un sistema di trading che generi segnali di acquisto e vendita basati sul controllo dei seguenti valori per determinare la posizione di ciascuno di essi:

                          • Valore delle labbra
                          • Valore dei denti
                          • Valore delle mascelle
                          • Prezzo di chiusura

                          Se il valore delle labbra è inferiore a quello dei denti, la linea delle labbra è inferiore a quella delle mascelle e il prezzo di chiusura diventa maggiore del valore dei denti, il sistema di trading deve restituire un commento sul grafico come segnale con i seguenti valori:

                          • Buy
                          • Valore delle labbra = n
                          • Valore dei denti = n
                          • Prezzo di chiusura = n
                          • Valore delle mascelle = n

                          Se la linea delle labbra è maggiore della linea dei denti, la linea delle labbra è maggiore della linea delle mascelle e il prezzo di chiusura diventa inferiore al valore dei denti, il sistema di trading deve restituire un commento sul grafico come segnale con i seguenti valori:

                          • Sell
                          • Valore delle labbra = n
                          • Valore dei denti = n
                          • Prezzo di chiusura = n
                          • Valore delle mascelle = n

                          Di seguito lo schema passo-passo di questo sistema di trading:

                          Schema del sistema di potenziamento dei segnali dell'Alligatore

                          Sistema di trading Alligator

                          Ora creeremo un sistema di trading per ogni strategia menzionata da eseguire nel terminale MetaTrader 5 per generare automaticamente i segnali desiderati. Per prima cosa, creeremo un sistema di trading di base per generare un segnale dei valori dei componenti dell’Alligator da utilizzare nel nostro sistema di trading. Di seguito sono riportati i passaggi per creare questo tipo di sistema:

                          Creare array per ciascuno dei componenti dell'Alligator (Labbra, Denti, Mascelle).

                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[]; 

                          Ordinare i dati in questi array utilizzando la funzione "ArraySetAsSeries". I suoi parametri:

                          • array[]
                          • flag
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);

                          Definizione dell'Alligator mediante la funzione "iAlligator". I suoi parametri:

                          • symbol: useremo (_Symbol) da applicare al simbolo corrente.
                          • period: utilizzeremo (_Period) da applicare al timeframe corrente.
                          • jaw_period: per determinare il periodo di calcolo delle mascelle, utilizzeremo (13).
                          • jaw_shift: per determinare lo scostamento orizzontale delle mascelle, utilizzeremo (8).
                          • teeth_period: per determinare il periodo di calcolo dei denti, utilizzeremo (8).
                          • teeth_shift: per determinare lo scostamento orizzontale dei denti, utilizzeremo (5).
                          • lips_period: per determinare il periodo di calcolo delle labbra, utilizzeremo (5).
                          • lips_shift: per determinare lo scostamento orizzontale delle labbra, utilizzeremo (3).
                          • ma_method: per determinare il tipo di media mobile, utilizzeremo(MODE_SMA).
                          • applied_price: per determinare il tipo di prezzo, utilizzeremo (PRICE_MEDIAN).
                          int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);

                          Definizione dei dati e memorizzazione dei risultati mediante la funzione "CopyBuffer". I suoi parametri:

                          • indicator_handle: per determinare l'handle dell'indicatore, utilizzeremo (alligatorDef).
                          • buffer_num: per determinare il numero di buffer dell'indicatore, useremo (0 per le mascelle), (1 per i denti) e (2 per le labbra).
                          • start_pos: per determinare la posizione iniziale, determineremo (0).
                          • count: per determinare la quantità da copiare, utilizzeremo (3).
                          • buffer[]: per determinare l'array di destinazione da copiare, useremo (jawsArray, teethArray, lipsArray).
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);

                          Ottenere i valori dei tre componenti.

                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);

                          Commento con i tre componenti dell'indicatore.

                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);

                          Quello che segue è il codice completo per creare questo sistema di trading:

                          //+------------------------------------------------------------------+
                          //|                                      Simple Alligator 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()
                            {
                             //creating price array
                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[];   
                             //Sorting data
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);
                             //define Alligator
                             int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);      
                             //define data and store result
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);
                             //get value of current data
                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);
                             //comment on the chart
                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);
                            }
                          //+------------------------------------------------------------------+

                          Dopo aver compilato questo codice, lo troveremo nel navigatore, nella cartella Expert Advisors, come al seguente:

                          Sistema Alligator Semplice nav

                          Trascinandolo e rilasciandolo sul grafico desiderato, la finestra di questo EA sarà uguale alla seguente:

                          Finestra Sistema Alligator semplice

                          Dopo aver premuto "OK" e aver spuntato la voce "Consenti Algo Trading", si otterrà un EA allegato al grafico come quello riportato di seguito:

                          Sistema alligatore semplice allegato

                          Come si può vedere nel grafico precedente, nell'angolo in alto a destra, l'EA è allegato. Ora siamo pronti a ricevere i segnali. Di seguito viene riportato un esempio di test per verificare i segnali generati.

                           Segnale del sistema Alligator semplice

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

                          Valore delle mascelle = n

                          Valore dei denti = n

                          Valore delle labbra = n

                            Strategia uno: Alligator Trend Identifier

                              Possiamo creare un sistema di trading basato su questa strategia come il seguente codice completo:

                              //+------------------------------------------------------------------+
                              //|                                   Alligator 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()
                                {
                              //creating three arrays of Alligator components
                                 double jawsArray[];
                                 double teethArray[];
                                 double lipsArray[];
                              //Sorting data
                                 ArraySetAsSeries(jawsArray,true);
                                 ArraySetAsSeries(teethArray,true);
                                 ArraySetAsSeries(lipsArray,true);
                              //define Alligator
                                 int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                              //define data and store result
                                 CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                 CopyBuffer(alligatorDef,1,0,13,teethArray);
                                 CopyBuffer(alligatorDef,2,0,13,lipsArray);
                              //get value of current data
                                 double jawsValue=NormalizeDouble(jawsArray[0],5);
                                 double teethValue=NormalizeDouble(teethArray[0],5);
                                 double lipsValue=NormalizeDouble(lipsArray[0],5);
                              //conditions of strategy
                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Differenze in questo codice.

                              Condizioni della strategia, in caso di rialzo:

                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

                              In caso di ribasso:

                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

                              Dopo aver compilato questo codice ed eseguito l'expert creato come abbiamo imparato, troveremo questo EA allegato al grafico come segue:

                              Alligator Trend Identifier allegato

                              Come possiamo vedere nel grafico precedente, l'EA è allegato al grafico nell'angolo in alto a destra e siamo pronti a ricevere i nostri segnali rialzisti o ribassisti basati su questa strategia. Di seguito sono riportati alcuni esempi di questi segnali:

                              In caso di rialzo:

                              Alligator Trend Identifier - segnale rialzista

                              Come si può vedere nel grafico precedente, abbiamo un commento come segnale nell'angolo in alto a destra con i seguenti valori:

                              • Rialzista
                              • Valore delle mascelle = n
                              • Valore dei denti = n
                              • Valore delle labbra = n 
                              Abbiamo tre linee che si muovono al di sotto dei prezzi. Abbiamo quindi un segnale rialzista.

                              In caso di ribasso:

                               Alligator Trend Identifier - segnale ribassista

                              Come possiamo vedere nel grafico precedente, abbiamo un commento come segnale di ribasso nell'angolo in alto a destra con i seguenti valori:

                              • Ribassista
                              • Valore delle mascelle = n
                              • Valore dei denti = n
                              • Valore delle labbra = n

                              Abbiamo tre linee che si muovono sopra i prezzi, quindi abbiamo un segnale ribassista.

                                Strategia due: Sistema di segnali alligator

                                  Il codice seguente serve a creare un sistema di trading basato su questa strategia:

                                  //+------------------------------------------------------------------+
                                  //|                                    Alligator Signals 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()
                                    {
                                  //creating three arrays of Alligator components
                                     double jawsArray[];
                                     double teethArray[];
                                     double lipsArray[];
                                  //Sorting data
                                     ArraySetAsSeries(jawsArray,true);
                                     ArraySetAsSeries(teethArray,true);
                                     ArraySetAsSeries(lipsArray,true);
                                  //define Alligator
                                     int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                  //define data and store result
                                     CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                     CopyBuffer(alligatorDef,1,0,13,teethArray);
                                     CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                  //get value of current data
                                     double jawsValue=NormalizeDouble(jawsArray[0],5);
                                     double teethValue=NormalizeDouble(teethArray[0],5);
                                     double lipsValue=NormalizeDouble(lipsArray[0],5);
                                  //conditions of strategy
                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

                                  Differenze in questo codice.

                                  Condizioni di questa strategia.

                                  In caso di segnale di acquisto:

                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

                                  In caso di segnale di vendita:

                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

                                  Dopo aver compilato questo codice e averlo eseguito nel terminale di trading, si può notare che è allegato al grafico come il seguente:

                                  Sistema di Segnali Alligator allegato

                                  Nell'angolo in alto a destra del grafico precedente vediamo che l'EA è allegato e siamo pronti a ricevere i nostri segnali di acquisto o di vendita basati su questa strategia, i seguenti sono esempi dai test.

                                  In caso di segnale di acquisto:

                                  Sistema di segnali Alligator - segnale d'acquisto

                                   

                                  Come si può vedere, il segnale desiderato ha i seguenti valori:

                                  • Buy
                                  • Valore delle mascelle = n
                                  • Valore dei denti = n
                                  • Valore delle labbra = n
                                  Abbiamo tre linee che si muovono al di sotto dei prezzi, quindi abbiamo un segnale di acquisto.

                                  In caso di segnale di vendita:

                                   Sistema di segnali Alligator - segnale di vendita

                                  Abbiamo il nostro segnale desiderato con i seguenti valori:

                                  • Sell
                                  • Valore delle mascelle = n
                                  • Valore dei denti = n
                                  • Valore delle labbra = n

                                  Abbiamo tre linee che si muovono al di sopra dei prezzi, quindi abbiamo un segnale di vendita.

                                    Strategia tre: Miglioramento del Sistema di Segnali dell'Alligator

                                      Quello che segue è il codice completo per creare un sistema di trading basato su questa strategia.

                                      //+------------------------------------------------------------------+
                                      //|                         Alligator Signals System Enhancement.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 three arrays of Alligator components
                                         double jawsArray[];
                                         double teethArray[];
                                         double lipsArray[];
                                         MqlRates pArray[];
                                      //Sorting data
                                         ArraySetAsSeries(jawsArray,true);
                                         ArraySetAsSeries(teethArray,true);
                                         ArraySetAsSeries(lipsArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                      //define Alligator
                                         int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                      //define data and store result
                                         CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                         CopyBuffer(alligatorDef,1,0,13,teethArray);
                                         CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                      //get value of current data
                                         double jawsValue=NormalizeDouble(jawsArray[0],5);
                                         double teethValue=NormalizeDouble(teethArray[0],5);
                                         double lipsValue=NormalizeDouble(lipsArray[0],5);
                                      //conditions of strategy
                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                        }
                                      //+------------------------------------------------------------------+

                                      Differenze in questo codice.

                                      Creare un ulteriore array per i prezzi utilizzando la funzione "MqlRates" per memorizzare le informazioni su prezzi, volumi e spread.

                                      MqlRates pArray[];

                                      Ottenere i dati storici di MqlRates utilizzando "CopyRates". I suoi parametri:

                                      • symbol_name: per determinare il nome del simbolo, utilizzeremo (_Symbol).
                                      • timeframe: per determinare il periodo, utilizzeremo (_period).
                                      • 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, useremo (pArray).
                                      int Data=CopyRates(_Symbol,_Period,0,1,pArray);

                                      Condizioni della strategia.

                                      In caso di segnale di acquisto:

                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

                                      In caso di segnale di vendita:

                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

                                      Dopo aver compilato questo codice ed eseguito l'EA, lo troveremo allegato al grafico come il seguente per ottenere i nostri segnali di acquisto e vendita.

                                       Miglioramento Sistema di Segnali Alligator allegato

                                      Abbiamo allegato l'EA nell'angolo in alto a destra e possiamo ricevere i segnali desiderati, i seguenti sono esempi di test.

                                      In caso di segnale di acquisto:

                                      Miglioramento Sistema di Segnali Alligator - segnale d'acquisto

                                      Abbiamo un commento nell'angolo in alto a sinistra con i seguenti valori:

                                      • Buy
                                      • Valore delle mascelle = n
                                      • Valore dei denti = n
                                      • Prezzo di chiusura = n
                                      • Valore delle labbra = n 
                                      Poiché le tre linee si muovono al di sopra dei prezzi, possiamo constatare che il prezzo di chiusura ha chiuso al di sopra della linea dei denti dell’Alligator.

                                      In caso di segnale di vendita:

                                       Miglioramento Sistema di Segnali Alligator - segnale di vendita

                                      Abbiamo un commento come segnale nell'angolo in alto a sinistra:

                                      • Sell
                                      • Valore delle mascelle = n
                                      • Valore dei denti = n
                                      • Prezzo di chiusura = n
                                      • Valore delle labbra = n

                                      Poiché le tre linee si muovono al di sotto dei prezzi, possiamo constatare che il prezzo di chiusura ha chiuso al di sotto della linea dei denti di alligatore.

                                      Conclusioni

                                      In questo articolo abbiamo appreso in dettaglio l'indicatore tecnico Alligator, che può essere utilizzato per confermare il trend oltre che per generare segnali di acquisto e vendita. Abbiamo imparato come calcolarlo manualmente e come utilizzarlo in base alle semplici strategie menzionate:

                                      • Alligator Trend Identifier: Per generare segnali rialzisti o ribassisti in base alla posizione delle tre linee dell'Alligator (Labbra, Denti e Mascelle).
                                      • Sistema di Segnali dell'Alligator: Per generare segnali di acquisto o vendita con il metodo classico del crossover basato sull'incrocio tra le tre linee dell'indicatore.
                                      • Miglioramento del Sistema di Segnali dell'Alligator: Per generare segnali di acquisto o di vendita con un altro metodo per ottenere questi segnali prima basati sulla posizione delle tre linee degli indicatori e l'incrocio tra il prezzo di chiusura e i denti. 

                                      Per ogni strategia menzionata abbiamo progettato uno schema passo-passo che ci aiutasse a organizzare le nostre idee per creare un sistema di trading in modo fluido, semplice ed efficace. Abbiamo anche creato un sistema di trading per ogni strategia menzionata da utilizzare nel terminale di trading MetaTrader 5 e generare segnali automaticamente come da noi progettato e codificato. Devo confermare ancora una volta che dovete testare ogni strategia menzionata prima di utilizzarla sul vostro conto reale per assicurarvi che sia utile e redditizia per voi, in quanto non c'è nulla che sia adatto a tutti noi, inoltre l'obiettivo principale qui è quello di condividere la conoscenza e lo scopo principale di questo articolo è solo l'educazione.

                                      Spero che abbiate provato ad applicare ciò che avete imparato da soli, come vi ho consigliato di migliorare le vostre capacità di codifica e di trarre un beneficio completo dalla lettura di questo articolo e spero che lo abbiate trovato utile per il vostro trading e che abbiate ottenuto utili approfondimenti sull'argomento di questo articolo o su qualsiasi altro argomento correlato. Se volete leggere altri articoli simili, potete leggere i miei articoli precedenti di questa serie, in cui abbiamo condiviso gli indicatori tecnici più popolari come stocastico, RSI, Bande di Bollinger, Medie Mobili, Envelopes, MACD, ADX, ecc. e come possiamo creare un sistema di trading basato su di essi.

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

                                      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.
                                      Impara come progettare un sistema di trading tramite Accelerator Oscillator Impara come progettare un sistema di trading tramite Accelerator Oscillator
                                      Un nuovo articolo della nostra serie su come creare semplici sistemi di trading tramite gli indicatori tecnici più popolari. Ne impareremo uno nuovo, che è l'indicatore Accelerator Oscillator, e impareremo a progettare un sistema di trading che lo utilizzi.
                                      Sviluppare un Expert Advisor di trading da zero (Parte 25): Fornire robustezza al sistema (II) Sviluppare un Expert Advisor di trading da zero (Parte 25): Fornire robustezza al sistema (II)
                                      In questo articolo, faremo il passo finale verso le prestazioni dell'EA. Preparatevi quindi a una lunga lettura. Per rendere il nostro Expert Advisor affidabile, per prima cosa rimuoveremo dal codice tutto ciò che non fa parte del sistema di trading.
                                      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.