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

Impara come progettare un sistema di trading tramite DeMarker

MetaTrader 5Trading | 28 settembre 2023, 16:06
378 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Questo nuovo articolo della nostra serie spiega come progettare sistemi di trading basati sugli indicatori tecnici più popolari. Impareremo nel dettaglio un nuovo strumento tecnico o indicatore che può essere utilizzato a nostro favore nel trading. Questo indicatore è l'indicatore DeMarker, lo tratteremo attraverso i seguenti argomenti:

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

Utilizzeremo il terminale di trading MetaTrader 5 e MQL5 integrato nel terminale per scrivere il codice del sistema di trading e testarlo. Se non sai come scaricare e utilizzare MetaTrader 5, puoi leggere l'argomento Scrivere codice MQL5 in MetaEditor da un articolo precedente per saperne di più.

Ti consiglio di applicare da solo ciò che impari in questo articolo se vuoi sviluppare le tue capacità di trading e programmazione e ottenere il massimo beneficio perché la pratica è un fattore molto importante in ogni fase di apprendimento. Mi piace menzionare e confermare che l'obiettivo principale delle strategie citate è apprendere il concetto principale alla base dell'indicatore. Quindi, l'obiettivo principale è solo educativo e devi testare qualsiasi strategia prima di utilizzarla in un conto reale per assicurarti che sia redditizia o adatta al tuo trading.

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 DeMarker

Se vogliamo identificare e conoscere più in dettaglio l'indicatore DeMarker, dovremo sapere cos'è, cosa misura, come possiamo calcolarlo e come possiamo leggerlo per usarlo in nostro favore. L'indicatore DeMarker è uno strumento tecnico oscillatore ed è stato creato dall'analista tecnico Thomas DeMark. È chiaro che il nome di questo indicatore deriva dal suo creatore ed è anche noto come indicatore "DeM". Questo indicatore tecnico misura la domanda dello strumento e valuta la direzionalità del mercato confrontando i prezzi massimo e minimo attuali con i prezzi precedenti.

E’ possibile calcolare manualmente questo indicatore, seguendo i seguenti passaggi:

DMark (i) = SMA (DeMax, N) / (SMA (DeMax, N) + SMA (DeMin, N))

Dove:

  • DMark (i) = il valore DeMark corrente.
  • SMA = media mobile semplice
  • DeMax = il valore massimo di DeMark
  • N = il periodo utilizzato
  • DeMin = il valore minimo di DeMark


Il DeMax può essere calcolato tramite:

DeMax (i) = MASSIMO (i) - MASSIMO (i - 1)

Altrimenti:

DeMax (i) = 0


Il DeMin può essere calcolato tramite:

DeMin (i) = MINIMO (i - 1) - MINIMO (i)

Altrimenti:

DeMin (i) = 0

Dopo aver calcolato l'indicatore, possiamo scoprire che produce una linea oscillante compresa tra 0 e 1 per misurare la domanda dello strumento, come abbiamo accennato. Al giorno d'oggi non abbiamo bisogno di calcolarlo manualmente perché è integrato nella piattaforma di trading MetaTrader 5 e tutto ciò che dobbiamo fare è sceglierlo tra gli indicatori disponibili per inserirlo sul grafico e leggerlo.

Ecco come possiamo inserire questo indicatore tecnico DeMarker in MetaTrader 5:

Aprendo il terminale di trading MetaTrader 5, premeremo Inserisci --> Indicatori --> Oscillatori --> DeMarker

Inserimento DeM

Successivamente, vedremo la finestra dei parametri di questo indicatore come la seguente:

Param DeM

1 - per determinare il periodo.

2 - per impostare il colore della linea dell'indicatore.

3 - per impostare lo stile della linea dell'indicatore.

4 - per impostare lo spessore della linea dell'indicatore.

Dopo aver impostato i parametri precedenti e premuto "OK", vedremo l'indicatore inserito sul grafico come il seguente:

DeM allegato

Come vediamo, nella parte inferiore del grafico precedente, abbiamo l'indicatore allegato e abbiamo una linea oscillante tra 0 e 1. Possiamo leggere questo indicatore determinando la posizione della linea nell'area menzionata. Se l'indicatore si avvicina a 0,70 significa che abbiamo una situazione di ipercomprato ma se l'indicatore si avvicina a 0,30 significa che abbiamo una situazione di ipervenduto.

Strategia DeMarker

Ora dobbiamo imparare come utilizzare l'indicatore DeMarker in base al concetto principale che ne è dietro. Quindi, impareremo come usarlo attraverso tre semplici strategie.

    Strategia uno: Forza del DeMarker

      Sulla base di questa strategia, dobbiamo ottenere segnali di DeMarker forte o debole osservando il valore DeMarker e la media degli ultimi 5 periodi dell'indicatore. Se il valore attuale dell'indicatore DeMarker è maggiore degli ultimi 5 periodi di DeMarker, questo sarà un segnale di forza. Nell’altro caso, se il valore attuale dell’indicatore è inferiore agli ultimi 5 periodi di DeMarker, questo sarà un segnale di debolezza.

      Semplicemente,

      Valore DeMarker >= AVG 5 periodi di DeMarker --> DeMarker forte

      Valore DeMarker <= AVG 5 periodi di DeMarker--> DeMarker debole

        Strategia due: DeMarker, OB e OS

          Sulla base di questa strategia, dobbiamo ricevere segnali quando l'indicatore raggiunge le zone di ipercomprato e ipervenduto. Se il valore attuale di DeMarker è maggiore o uguale al livello di 0,70, questo sarà un segnale di avvicinamento ad una zona di ipercomprato. Se il valore attuale di DeMarker è inferiore al livello 0,30, questo sarà un segnale di avvicinamento a una zona di ipervenduto.

          Semplicemente,

          Valore DeMarker >= 0,70 --> Ipercomprato

          Valore DeMarker <= 0,30 --> Ipervenduto

            Strategia tre: Divergenza DeMarker:

              Sulla base di questa strategia, dobbiamo ottenere segnali di divergenza rialzista o ribassista che diano un'idea sulla probabilità che il movimento attuale cambi. Dobbiamo ottenere questi segnali osservando quattro valori: il massimo attuale, il massimo precedente, il DeMarker corrente e il DeMarker precedente. È bene ricordare che si tratta di una semplice situazione di divergenza, ma quella più efficace si ha quando si confrontano e si osservano i massimi e i minimi dei prezzi con i massimi e i minimi dell'indicatore. In questa semplice situazione, dobbiamo ottenere un segnale di divergenza ribassista, se il massimo attuale è maggiore del massimo precedente e allo stesso tempo l'attuale DeMarker è inferiore al precedente valore DeMarker. Nell’altro caso, se il minimo attuale è inferiore al minimo precedente e allo stesso tempo il valore attuale di DeMarker è maggiore di quello precedente, questo sarà un segnale di divergenza rialzista.

              Semplicemente,

              Massimo attuale > massimo precedente e DeMarker attuale < del precedente --> divergenza ribassista

              Minimo attuale < minimo precedente e DeMarker attuale > precedente --> divergenza rialzista

              Schema della strategia DeMarker

              Dopo aver imparato come utilizzare l'indicatore DeMarker attraverso semplici strategie. In questo argomento, creeremo un semplice schema per ciascuna strategia in modo da aiutarci a creare un sistema di trading senza intoppi.

                Strategia uno: Forza del DeMarker

                  Secondo questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per controllare automaticamente due valori dopo averli creati o definiti. Questi valori sono il DeMarker attuale e la media degli ultimi cinque valori DeMarker. Se il valore corrente è maggiore della media, abbiamo bisogno che il sistema di trading restituisca i seguenti valori come commento sul grafico:

                  • DeMarker è forte
                  • Valore DeMarker corrente
                  • Valore AVG 5 periodi DeMarker

                  Nell'altro scenario, se il valore corrente è inferiore alla media, abbiamo bisogno che il sistema di trading restituisca i seguenti valori in base a questa condizione:

                  • DeMarker è debole
                  • Valore DeMarker corrente
                  • Valore AVG 5 periodi DeMarker
                  Quello che segue è lo schema di questa strategia per crearne il sistema di trading.

                  Schema forza DeMarker

                    Strategia due: DeMarker, OB - OS

                      Secondo questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare i nostri segnali in base a condizioni specifiche. Abbiamo bisogno che il sistema di trading controlli continuamente tre valori che sono l'attuale valore DeMarker, il livello 0,70 e il livello 0,30 sull'indicatore. Se l'attuale valore DeMarker è maggiore o uguale al livello 0,70, abbiamo bisogno che il sistema di trading restituisca i seguenti valori come commento sul grafico:

                      • Ipercomprato
                      • Valore DeMarker

                      Nell'altro scenario, se l'attuale valore DeMarker è inferiore o uguale al livello 0,30, abbiamo bisogno che il sistema di trading restituisca i seguenti valori sul grafico:

                      • Ipervenduto
                      • Valore DeMarker
                      Schema OB-OS DeMarker
                        Strategia tre: Divergenza del DeMarker

                          Secondo questa strategia, dobbiamo creare un sistema di trading che possa essere utilizzato per generare segnali di divergenza rialzista o ribassista controllando continuamente quattro valori. Se il massimo attuale è maggiore del massimo precedente e allo stesso tempo, il valore DeMarker corrente è inferiore al valore DeMarker precedente, abbiamo bisogno che il sistema di trading restituisca i seguenti valori come commento sul grafico:

                          • Divergenza ribassista
                          • Il valore del massimo attuale
                          • Il valore del massimo precedente
                          • Valore DeMarker corrente
                          • Valore DeMarker precedente

                          Nell'altro scenario, se il minimo attuale è inferiore al minimo precedente e allo stesso tempo il valore DeMarker corrente è maggiore del valore DeMarker precedente, abbiamo bisogno che il sistema restituisca i seguenti valori sul grafico:

                          • Divergenza rialzista
                          • Il valore del minimo attuale
                          • Il valore del minimo precedente
                          • Valore DeMarker corrente
                          • Valore DeMarker precedente

                          Schema divergenza

                          Sistema di trading DeMarker

                          In questa parte, creeremo un sistema di trading per ciascuna strategia menzionata da eseguire in MetaTrader 5 per generare segnali in automatico. Per prima cosa creeremo un semplice sistema di trading da utilizzare come base per tutte le strategie menzionate. Questo sistema genererà il valore corrente dell'indicatore DeMarker come commento sul grafico e quanto segue spiega come creare questo sistema tramite le seguenti righe di codice:

                          Primo passo:

                          Creare un array deMarkerArray utilizzando la funzione "double" che restituisce con i decimali.

                          double deMarkerArray[];

                          Secondo passaggio:

                          Utilizzare la funzione "ArraySetAsSeries" per impostare il flag AS_SERIES su deMarkerArray, che restituisce un valore booleano true o false.

                          ArraySetAsSeries(deMarkerArray,true);

                          Terzo passaggio:

                          Definire l'indicatore utilizzando la funzione "iDeMarker" che restituisce l'handle dell'indicatore DeMarker. I suoi parametri sono:

                          • symbol: per determinare il simbolo, utilizzeremo (_Symbol) da applicare sul simbolo corrente.
                          • period: per determinare il periodo o il time frame, utilizzeremo (_period) da applicare al time frame corrente.
                          • ma_period: per determinare il periodo di media, utilizzeremo (14).
                          int deMarkerDef = iDeMarker(_Symbol,_Period,14);

                          Quarto passaggio:

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

                          • indicator_handle: utilizzeremo (deMarkerDef) l'handle predefinito dell’indicatore.
                          • buffer_num: per determinare il numero del buffer dell'indicatore, utilizzeremo (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, utilizzeremo (deMarkerArray).
                          CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);

                          Quinto passaggio:

                          Definizione del valore corrente di deMarker utilizzando la funzione "NormalizeDouble" per restituire un valore di tipo double. I suoi parametri sono:

                          • value: per determinare il numero normalizzato.
                          • digits: per determinare il numero di cifre dopo la virgola.
                          double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);

                          Passaggio sei:

                          Utilizzo della funzione "Comment" per restituire il valore dell'attuale indicatore DeMarker come commento sul grafico.

                          Comment("DeMarker Value is ",deMarkerVal);

                          Se desideri il codice completo di questo sistema di trading, puoi vederlo di seguito.

                          //+------------------------------------------------------------------+
                          //|                                       Simple DeMarker 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()
                            void OnTick()
                            {
                             double deMarkerArray[];
                          
                             ArraySetAsSeries(deMarkerArray,true);
                          
                             int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                          
                             CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                          
                             double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                          
                             Comment("DeMarker Value is ",deMarkerVal);
                          
                            }
                          //+------------------------------------------------------------------+
                          

                          Dopo aver compilato questo codice, troveremo l'expert nel navigatore come al seguente:

                          Nav

                          Trascinando e rilasciando l'expert sul grafico, troveremo la finestra dello stesso simile alla seguente:

                           Finestra DeMarker Semplice

                          Dopo aver premuto "OK", vedremo che l'expert è allegato al grafico come segue:

                          DeMarker semplice allegato

                          Come possiamo vedere sul grafico nell'angolo in alto a destra che il Sistema DeMarker semplice è allegato al grafico, siamo pronti ora ad ottenere i segnali desiderati secondo questa strategia. I passaggi precedenti saranno gli stessi per compilare tutti i codici della strategia menzionata per eseguirli in MetaTrader 5.

                          Quanto segue riguarda i segnali generati dai test secondo questo semplice sistema di trading:

                          Come possiamo notare nel grafico, nell'angolo in alto a sinistra, possiamo vedere il valore attuale dell'indicatore DeMarker.

                            Strategia uno - Forza del DeMarker:

                              Di seguito è riportato il codice completo per creare un sistema di trading basato su questa strategia.

                              //+------------------------------------------------------------------+
                              //|                                            DeMarker 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 deMarkerArray[];
                              
                                 ArraySetAsSeries(deMarkerArray,true);
                              
                                 int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                              
                                 CopyBuffer(deMarkerDef,0,0,6,deMarkerArray);
                              
                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);
                              
                                 double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;
                              
                              
                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                              
                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Differenze in questo codice:

                              Definizione degli ultimi cinque valori deMarker utilizzando la funzione "NormalizeDouble" dopo aver definito il valore deMarker corrente utilizzando la stessa funzione.

                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);

                              Calcolo di deMarkerAvgVal in base agli ultimi cinque valori deMarker utilizzando la funzione "double" per creare una variabile deMarkerAvgVal che è uguale alla somma degli ultimi cinque valori calcolati, quindi dividerli per 5 per ottenere il valore medio.

                              double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;

                              Stabilire le condizioni della strategia

                              confrontando il deMarker corrente con il valore deMarkerAvg. Nel caso di un segnale forte di deMarker, dobbiamo vedere che il valore corrente di deMarker è maggiore del valore di deMarkerAvg. Utilizzeremo la funzione "If" e la sua sintassi:

                              if(espressione) --> operatore

                              Nel caso in cui sia forte, quando deMarkerVal è maggiore di deMarkerAvgVal che è l'espressione nella sintassi, abbiamo bisogno che il sistema di trading restituisca un segnale di forza come commento sul grafico, che è l’operatore.

                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              In caso di debolezza del deMarker, dobbiamo vedere che il valore corrente di deMarker è inferiore al valore Avg di deMarker che è l'espressione, quindi il suo operatore deve restituire il commento sul grafico con la debolezza e altri valori, ciascun valore in una riga separata .

                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              Dopo aver compilato questo codice ed averlo eseguito dal navigatore come abbiamo imparato, possiamo vedere che l'expert di questa strategia è allegato come il seguente:

                              Forza allegata

                              Come possiamo vedere nell'angolo in alto a destra, abbiamo l'expert di questa strategia allegato al grafico e siamo pronti a ricevere segnali uguali ai seguenti esempi dai test.

                              In caso di segnale forte:

                              Forza - segnale forte

                              Come possiamo vedere nel grafico nell'angolo in alto a sinistra, questo sistema di trading ha generato un segnale basato su questa strategia di trading ed è uguale al seguente:

                              • DeMarker è forte --> perché abbiamo il valore corrente di DeMarker superiore alla media degli ultimi cinque valori dell'indicatore DeMarker.
                              • Valore DeMarker corrente.
                              • Valore AVG DeMarker. 

                              In caso di segnale di debolezza:

                              Forza - Segnale debole

                              Come possiamo vedere nel grafico nell'angolo in alto a sinistra, abbiamo un segnale simile al seguente:

                              • DeMarker è debole --> perché abbiamo il valore corrente di DeMarker inferiore agli ultimi cinque valori medi dell'indicatore DeMarker.
                              • Valore DeMarker corrente.
                              • Valore AVG DeMarker. 
                                Strategia due: DeMarker, OB-OS

                                  Quello che segue è il codice completo di questa strategia:

                                  //+------------------------------------------------------------------+
                                  //|                                       Simple DeMarker 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()
                                  void OnTick()
                                    {
                                     double deMarkerArray[];
                                  
                                     ArraySetAsSeries(deMarkerArray,true);
                                  
                                     int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                  
                                     CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                                  
                                     double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                                  
                                  
                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Differenze in questo codice:

                                  Condizioni del presente codice.

                                  Nel caso di un segnale di ipervenduto, quando il valore corrente è inferiore o uguale a 0,30 che è l'espressione nella funzione "if", sarà un segnale di ipervenduto che è l'operatore di cui abbiamo bisogno per vederlo come commento il grafico.

                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  Nel caso di un segnale di ipercomprato che è l'operatore, questa situazione accadrà quando il valore corrente di deMarker è maggiore o uguale a 0,70 che è l'espressione.

                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  In caso di assenza di segnale o bilanciamento (espressione), verrà segnalato quando il valore corrente del deMarker è compreso tra 0,30 e 0,70 (operatore).

                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }

                                  Dopo aver compilato questo codice ed eseguito questo expert, lo troveremo allegato al grafico uguale al seguente:

                                  OB-OS allegato

                                  Ora siamo pronti a ricevere segnali basati su questa strategia e quelli che seguono sono esempi tratti dai test.

                                  In caso di ipercomprato:

                                  Segnale DeM, OB - OS - OB

                                  Come possiamo vedere nel grafico precedente nell'angolo in alto a sinistra, il segnale generato è lo stesso del seguente:

                                  • Ipercomprato
                                  • Valore corrente del DeMarker

                                  In caso di ipervenduto:

                                  Segnale DeM, OB - OS - OS

                                  Come possiamo vedere, il segnale generato è il seguente:

                                  • Ipervenduto
                                  • Valore corrente del DeMarker

                                  In caso di assenza di segnale o di equilibrio:

                                  DeM, OB - OS - nessun segnale

                                  Come possiamo vedere, abbiamo ottenuto un segnale generato del valore corrente di DeMarker.

                                    Strategia tre: Divergenza del DeMarker

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

                                      //+------------------------------------------------------------------+
                                      //|                                          DeMarker Divergence.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 deMarkerArray[];
                                         MqlRates pArray[];
                                      
                                      
                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);
                                      
                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);
                                      
                                         CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);
                                      
                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);
                                      
                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                      
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Differenze in questo codice.

                                      Creazione di due array, uno per deMarkerArray utilizzando la funzione "double", l'altro per pArray (prezzi) utilizzando la funzione "MqlRates" per memorizzare informazioni su prezzo, volume e spread.

                                         double deMarkerArray[];
                                         MqlRates pArray[];

                                      Impostazione del flag AS_SERIES per questi due array creati.

                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);

                                      Definizione di deMarketDef, pData

                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);

                                      Riempimento di deMarkerArray

                                      CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);

                                      Definizione di deMarkerVal, deMarkerPrevVal, attuale massimo, attuale minimo, massimo precedente e minimo precedente

                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);

                                      Condizioni della strategia.

                                      In caso di divergenza ribassista:

                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      In caso di divergenza rialzista:

                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      Dopo aver compilato anche questo codice, possiamo trovarlo nel navigatore per eseguirlo. Quindi lo troveremo allegato allo schema come al seguente:

                                      Divergenza allegata

                                      Come possiamo vedere nell'angolo in alto a sinistra del grafico precedente, abbiamo l'expert allegato e ora possiamo ricevere segnali da questo expert in base a questa strategia di trading uguale alla seguente.

                                       In caso di divergenza rialzista:

                                       Segnale di divergenza rialzista

                                      Come possiamo vedere nell'angolo in alto a sinistra del grafico precedente, abbiamo il seguente segnale generato:

                                      • Divergenza rialzista
                                      • Il valore del minimo attuale
                                      • Il valore del minimo precedente
                                      • Valore DeMarker corrente
                                      • Valore DeMarker precedente

                                      In caso di divergenza ribassista:

                                       Segnale di divergenza ribassista

                                      Come possiamo vedere nell'angolo in alto a sinistra del grafico precedente, abbiamo il seguente segnale generato:

                                      • Divergenza ribassista
                                      • Il valore del massimo attuale
                                      • Il valore del massimo precedente
                                      • Valore DeMarker corrente
                                      • Valore DeMarker precedente

                                      Conclusioni

                                      Secondo quello che hai appreso in questo articolo, si suppone che tu abbia già identificato in dettaglio questo indicatore tecnico DeMarker perché abbiamo imparato cos'è, cosa misura, come possiamo calcolarlo e come possiamo leggerlo e utilizzarlo attraverso semplici strategie basato sul concetto principale dietro di esso. Queste semplici strategie erano:

                                      • Forza DeMarker: per ricevere segnali di forza o debolezza in base alla posizione del DeMarker corrente e alla media degli ultimi 5 periodi del valore DeMarker.
                                      • DeMarker, OB - OS: per ricevere segnali di ipercomprato o ipervenduto in base alla posizione del valore DeMarker corrente nella sua scala da 0 a 1.
                                      • Divergenza DeMarker: per ricevere segnali di divergenza rialzista o ribassista in base alla posizione del DeMarker attuale, del DeMarker precedente, del massimo attuale e del massimo precedente.

                                      In aggiunta a ciò, abbiamo progettato uno schema passo passo per ciascuna strategia menzionata per aiutarci a creare un sistema di trading senza intoppi. Quindi, abbiamo appreso l'argomento più interessante perché abbiamo creato un sistema di trading basato su ciò che abbiamo progettato negli schemi delle strategie menzionate per ricevere segnali automaticamente tramite MetaTrader 5.

                                      Confermo ancora una volta che devi testare qualsiasi strategia prima di utilizzarla per assicurarti che sia adatta al tuo trading perché non esiste qualcosa di adatto a tutte le persone. Spero che questo articolo ti sia utile e che tu abbia ottenuto spunti utili sull'argomento dell'articolo o su eventuali argomenti correlati. Se desideri leggere di più su articoli simili, puoi leggere i miei articoli precedenti in questa serie per principianti sugli indicatori tecnici e su come possiamo creare un semplice sistema di trading basato su di essi.

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

                                      Algoritmi di ottimizzazione della popolazione: Ricerca del Banco di Pesci (FSS) Algoritmi di ottimizzazione della popolazione: Ricerca del Banco di Pesci (FSS)
                                      La Ricerca del Banco di Pesci (FSS) è un nuovo algoritmo di ottimizzazione ispirato al comportamento dei pesci in un banco, la maggior parte dei quali (fino all'80%) nuota in una comunità organizzata di affini. È stato dimostrato che le aggregazioni dei pesci svolgono un ruolo importante nell'efficienza del foraggiamento e nella protezione dai predatori.
                                      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.
                                      Impara come progettare un sistema di trading tramite Relative Vigor Index Impara come progettare un sistema di trading tramite Relative Vigor Index
                                      Un nuovo articolo della nostra serie su come progettare un sistema di trading tramite gli indicatori tecnici più popolari. In questo articolo scopriremo come farlo grazie all'indicatore Relative Vigor Index.
                                      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.