English Русский 中文 Español Deutsch 日本語 Português Français Türkçe
preview
Come gestire le linee utilizzando MQL5

Come gestire le linee utilizzando MQL5

MetaTrader 5Trading | 2 settembre 2024, 08:59
36 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Tutti noi trader tracciamo molte linee durante il trading per aiutarci ad osservare alcuni livelli importanti e a prendere una decisione di trading adeguata in base ad esse. Quindi, queste linee sono molto importanti per noi trader e potremmo chiederci se esiste un metodo che possa essere utilizzato per tracciare queste linee o prendere una decisione adeguata sulla loro base in modo automatico, perché credo che ci aiuterebbe molto. La risposta è sì, abbiamo un metodo per farlo grazie a MQL5 (MetaQuotes Language 5).

Questo articolo è un esempio per imparare a gestire queste linee con MQL5, perché ci sono molti metodi per fare qualcosa di simile e questi metodi dipendono da ciò che si deve fare. Esistono molti tipi di linee, ma in questo articolo ne citeremo tre solo per la loro popolarità: le trend lines, e le linee di supporto e resistenza.

Le tratteremo attraverso i seguenti argomenti:

  1. Trend lines e MQL5
  2. Supporto e MQL5
  3. Resistenza e MQL5
  4. Conclusioni

In generale, ci sono molti metodi che possono essere utilizzati per trattare le linee con MQL5. Condivideremo qui un semplice metodo, che potrebbe essere necessario sviluppare per adattarlo alla vostra strategia. Condivideremo un metodo che individua i livelli dei prezzi, poi traccia un tipo di linea aggiornata.

Impareremo cosa sono le linee in dettaglio, identificandone i tipi, come si possono tracciare manualmente e come si possono utilizzare nel trading. Impariamo come utilizzare MQL5 per gestire le trend line e i livelli di supporto e di resistenza, per facilitare il nostro processo di trading e migliorare i nostri risultati grazie all'automazione. Per codificare i nostri programmi utilizzeremo il linguaggio MQL5 (MetaQuotes Language 5), integrato nel terminale di trading MetaTrader 5. Se non sapete come utilizzarlo, potete leggere l'argomento Scrivere codice MQL5 in MetaEditor da un articolo precedente per saperne di più.

Il mio consiglio qui è di provare a scrivere e applicare da soli ciò che leggete, poiché questo passo è molto importante per migliorare le vostre capacità di codifica e approfondirà la vostra comprensione, oltre a darvi maggiori informazioni sull'argomento di questo articolo e/o su qualsiasi altro argomento correlato che possa essere utile per sviluppare e migliorare i vostri risultati di 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.


Trend Lines e MQL5

Le linee sono strumenti tecnici che possono essere utilizzati nel trading per ottenere risultati più efficaci. Queste linee possono essere tracciate intorno a prezzi o livelli importanti che sono utilizzati come fattori scatenanti per prendere decisioni efficaci. Ci sono molti tipi di linee, in questo articolo ne citeremo tre delle più importanti: le trend line, i livelli di supporto e di resistenza.

Ora inizieremo a identificare e a trattare le Trend line. Le Trend line (linee di tendenza) sono linee che possono essere utilizzate per visualizzare i livelli di prezzo che sono utilizzati come livelli di respingimento al rialzo o al ribasso. Può essere tracciata al di sopra o al di sotto dei prezzi in base alla direzione del mercato. Possiamo quindi affermare che la Trend line può aiutarci ad individuare la direzione dell'andamento del mercato. Se si verifica un rimbalzo dei prezzi verso l'alto di tre punti come minimo sugli stessi livelli della linea tracciata, si tratterà di una trend line ascendente. Viceversa, se si verifica un rimbalzo al ribasso di tre punti come minimo sugli stessi livelli della linea tracciata, si tratterà di una trend line discendente. È importante ricordare che la trend line è solo uno strumento e che è possibile riconoscerla e disegnarla correttamente o meno.

Possiamo utilizzare la Trend line nel trading piazzando i nostri ordini in base al tipo di linea di tendenza. Se c'è una trend line al rialzo, possiamo aspettarci che il prezzo si muova verso il basso per testare questa linea di tendenza dall'alto per poi rimbalzare verso l'alto e quindi piazzare il nostro ordine di acquisto intorno a questa trend line. Viceversa, se c'è una trend line discendente, è possibile che il prezzo si muova verso l'alto per testare questa linea di tendenza dal basso per poi rimbalzare verso il basso e quindi piazzare il nostro ordine di vendita o short intorno a questa trend line discendente.

Quanto seguente è per la Trend line ascendente:

 Trend line al rialzo

Possiamo notare che nella figura precedente è chiaro che abbiamo un movimento verso l'alto e se proviamo a collegare gli ultimi tre minimi possiamo scoprire che si trovano sulla stessa linea in direzione del rialzo.

Di seguito è riportato un esempio di trend line ascendente del mercato:

Trend line al rialzo

Come possiamo vedere nel grafico precedente, abbiamo una trend line ascendente che ha toccato più volte e rimbalzato dopo aver trovato la forza dei compratori per dirigersi verso l'alto, il che conferma l'esistenza di un trend rialzista.

Quanto segue è per la trend line discendente:

Trend line discendente

Possiamo notare che nella figura precedente è chiaro che abbiamo un movimento al ribasso e se proviamo a collegare gli ultimi tre massimi possiamo scoprire che si trovano sulla stessa linea di movimento al ribasso.

Di seguito è riportato un esempio di trend line discendente del mercato:

Trend line discendente

Come possiamo vedere nel grafico precedente, abbiamo una trend line al ribasso che ha toccato più volte e ha rimbalzato dopo aver trovato la forza dei venditori per muoversi verso il basso, il che conferma l'esistenza di un trend ribassista.


    1. Sistema Trend Line Ascendente

      Dobbiamo creare un programma che possa essere utilizzato per creare automaticamente una trend line ascendente con MetaTrader 5 da poter essere vista sotto i prezzi per un potenziale movimento al rialzo. Il programma deve controllare i minimi di prezzo e la presenza di una trend line rialzista ad ogni tick. Quindi cancella la precedente trend line rialzista, creandone una blu aggiornata sotto i minimi del prezzo. 

      A tale scopo, è possibile seguire i passaggi indicati di seguito come uno dei metodi da poter utilizzare.

      La prima rilevazione di una candela avviene creando una variabile integer uguale al valore di tipo long restituito della proprietà corrispondente del grafico corrente, utilizzando la funzione "ChartGetInteger", i suoi parametri sono:

      • chart_id: per determinare il grafico e useremo (0) che rappresenta il grafico corrente.
      • prop_id: per determinare l'ID della proprietà del grafico e si può utilizzare uno dei valori (ENUM_CHART_PROPERTY_INTEGER). Utilizzeremo (CHART_FIRST_VISIBLE_BAR).
      • sub_window=0: per determinare il numero di sotto finestre del grafico. Utilizzeremo (0) che rappresenta la finestra principale del grafico.

      int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);

      Creare un array per i prezzi minimi delle candele con una variabile di tipo double per pLow.

      double pLow[];

      Ordinare l'array creato dai dati correnti utilizzando la funzione "ArraySetAsSeries" che restituisce un valore booleano che sarà true in caso di successo o false nell'altro caso.

      ArraySetAsSeries(pLow,true);

      Riempire l'array pLow creato con i dati utilizzando la funzione "CopyLow" per ottenere il prezzo più basso del simbolo corrente dell'ora attuale. I suoi parametri sono:

      • symbol_name: per determinare il simbolo, useremo (_Symbol) da applicare al simbolo corrente.
      • timeframe: per determinare il timeframe, utilizzeremo (_Period) da applicare al timeframe corrente.
      • start_pos: per determinare la posizione iniziale dell'elemento da copiare, useremo (0).
      • count: per determinare il numero di dati da copiare, utilizzeremo la variabile precedentemente creata (candles).
      • low_array[]: per determinare l'array di destinazione da copiare, useremo l'array (pLow).

      int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);

      Impostazione della condizione se copy_low è maggiore di 0

      if(copy_low>0)

      Nel corpo della condizione if, creiamo e calcoliamo il minimo della variabile candle creando una variabile integer "candleLow" che sia uguale al valore minimo dell'array utilizzando la funzione "ArrayMinimum" che restituisce l'elemento più piccolo nell'array. I suoi parametri sono:

      • array[]: per determinare l'array, utilizzeremo l'array (pLow).
      • start=0: per determinare l'indice con cui iniziare il controllo, utilizzeremo il valore (0).
      • count=WHOLE_ARRAY: per determinare il numero di elementi controllati, utilizzeremo (candles).
      int candleLow = ArrayMinimum(pLow,0,candles);

      Creare un array di prezzi "pArray" utilizzando la funzione "MqlRates" che memorizza informazioni su prezzi, volume e spread.

      MqlRates pArray[];

      Ordinamento dell'array dei prezzi "pArray" mediante la funzione "ArraySetAsSeries".

      ArraySetAsSeries(pArray,true);

      Copiare i dati dei prezzi nell'array dei prezzi dopo aver creato una variabile integer "Data" e quindi utilizzare "CopyRates" per ottenere i dati storici della struttura MqlRates. I suoi parametri sono:

      • symbol_name: per determinare il simbolo, utilizzeremo (_Symbol) da applicare al grafico corrente.
      • timeframe: per determinare il timeframe, utilizzeremo (_Period) da applicare al timeframe corrente.
      • start_pos: per determinare la posizione iniziale, utilizzeremo il valore (0).
      • count: per determinare il numero di dati da copiare, si utilizzerà la variabile creata (candles).
      • rates_array[]: per determinare l'array di destinazione da copiare, utilizzeremo il parametro ( pArray).
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

      Eliminazione di qualsiasi trend line creata in precedenza da aggiornare utilizzando la funzione "ObjectDelete" per rimuovere qualsiasi oggetto specificato da qualsiasi grafico specificato. I suoi parametri sono:

      • chart_id: per determinare l'identificativo del grafico, utilizzeremo (_Symbol) da applicare al simbolo corrente.
      • name: per specificare il nome dell'oggetto che vogliamo rimuovere, specificheremo ("UpwardTrendline") come nome.
      ObjectDelete(_Symbol,"UpwardTrendline");

      Creare una nuova trend line utilizzando il comando "ObjectCreate" per creare un oggetto trend line. I suoi parametri sono:

      • chart_id: per determinare il simbolo, utilizzeremo (_Symbol) da applicare al simbolo corrente.
      • name: per specificare il nome dell'oggetto, specificheremo ("UpwardTrendline") come nome.
      • type: per determinare il tipo di oggetto, utilizzeremo (OBJ_TREND) per creare una trend line.
      • nwin: per determinare l'indice della finestra, utilizzeremo il valore (0) per utilizzare la finestra principale del grafico.
      • time1: per determinare l'ora del primo punto di ancoraggio, utilizzeremo (pArray[candleLow].time).
      • price1: per determinare il prezzo del primo punto di ancoraggio, utilizzeremo (pArray[candleLow].low).
      • timeN: per determinare l'ora del punto di ancoraggio di N, utilizzeremo (pArray[0].time).
      • priceN: per determinare il prezzo del punto di ancoraggio di N, utilizzeremo (pArray[0].low).
      ObjectCreate(_Symbol,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,pArray[0].time,pArray[0].low);

      Determinazione del colore della trend line utilizzando la funzione "ObjectSetInteger" per impostare il valore come colore dell'oggetto. I suoi parametri sono:

      • chart_id: l'identificatore del grafico; useremo il valore (0) che indica il grafico corrente.
      • name: il nome dell'oggetto; utilizzeremo ("UpwardTrendline") che è il nome predefinito dell'oggetto.
      • prop_id: l'ID della proprietà dell'oggetto; useremo uno degli ENUM_OBJECT_PROPERTY_INTEGER che è (OBJPROP_COLOR).
      • prop_value: il valore della proprietà, utilizzeremo (Blue) come colore della trend line creata.
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);

      Anche per determinare lo stile della trend line si utilizza la funzione ObjectSetInteger, ma utilizzeremo un altro ENUM_OBJECT_PROPERTY_INTEGER che è (OBJPROP_STYLE) e prop_value sarà (STYLE_SOLID) come stile della trend line creata.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);

      Anche per determinare la larghezza della trend line si utilizza la funzione "ObjectSetInteger", ma utilizzeremo un altro ENUM_OBJECT_PROPERTY_INTEGER che è (OBJPROP_WIDTH) e prop_value sarà (3) come larghezza della trend line creata.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);

      Per determinare il raggio della trend line si utilizza sempre la funzione "ObjectSetInteger", ma utilizzeremo un altro ENUM_OBJECT_PROPERTY_INTEGER che è (OBJPROP_RAY_RIGHT) e il valore della proprietà sarà true.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);

      Di seguito è riportato il codice completo per creare questo sistema che crea automaticamente una trend line ascendente:

      //+------------------------------------------------------------------+
      //|                                       UpwardTrendline System.mq5 |
      //+------------------------------------------------------------------+
      void OnTick()
        {
         int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
         double pLow[];
         ArraySetAsSeries(pLow,true);
         int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow); 
         if(copy_low>0)
           {
            int candleLow = ArrayMinimum(pLow,0,candles);
            MqlRates pArray[];
            ArraySetAsSeries(pArray,true);
            int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
            ObjectDelete(0,"UpwardTrendline");
            ObjectCreate(0,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,
                         pArray[0].time,pArray[0].low);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);
           }
        }
      //+------------------------------------------------------------------+
      

      Dopo aver scritto questo codice, lo compileremo e non dovrà presentare errori.  Successivamente, nella finestra del navigatore troveremo l'Expert Advisor (EA) come di seguito indicato:

       Lines nav

      Trascinando e rilasciando l'EA sul grafico, troveremo la finestra dell'expert uguale alla seguente:

       Lines Win

      Dopo aver spuntato la voce "Consenti Algo Trading" e aver premuto "OK", l'EA sarà allegato al grafico e saremo pronti a vedere l'azione desiderata basata su questo EA, come nell'esempio seguente:

       Esempio di trend line ascendente

      Come possiamo vedere nel grafico precedente, l'EA è allegato al grafico, come ovvio nell'angolo in alto a destra, e la trend line ascendente blu è tracciata sotto i prezzi.


        2. Sistema Trend Line Discendente

          Dobbiamo creare un programma che possa essere utilizzato per creare automaticamente una trend line discendente con MetaTrader 5 da poter essere vista sopra i prezzi per un potenziale movimento al ribasso. Il programma deve controllare i massimi del prezzo e l'eventuale presenza di una trend line discendente ad ogni tick. Eliminare quindi la precedente trend line discendente e crearne una blu aggiornata sopra i massimi del prezzo. 

          Per farlo, possiamo seguire il codice completo riportato di seguito come uno dei metodi utilizzabili.

          //+------------------------------------------------------------------+
          //|                                     DownwardTrendline System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pHigh[];
             ArraySetAsSeries(pHigh,true);
             int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
             if(copy_high>0)
               {
                int candleHigh = ArrayMaximum(pHigh,0,candles);
                MqlRates pArray[];
                ArraySetAsSeries(pArray,true);
                int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
                ObjectDelete(0,"DnwardTrendline");
                ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,
                             pArray[0].time,pArray[0].high);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
               }
            }
          //+------------------------------------------------------------------+

          Differenze in questo codice:

          Creare un array dei prezzi massimi delle candele.

          double pHigh[];

          Ordinamento dell'array creato a partire dai dati correnti.

          ArraySetAsSeries(pHigh,true);

          Riempire l'array con i dati.

          int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);

          Creazione e calcolo del massimo della variabile (candles)

          int candleHigh = ArrayMaximum(pHigh,0,candles);

          Eliminazione di qualsiasi precedente trend line discendente

          ObjectDelete(_Symbol,"DnwardTrendline");

          Creazione di una nuova trend line discendente

          ObjectCreate(_Symbol,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);

          Determinare il colore della trend line discendente che sarà blu, utilizzando "OBJPROP_COLOR".

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);

          Determinare lo stile della trend line discendente come solida utilizzando "OBJPROP_STYLE" e STYLE_SOLID

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);

          Determinare la larghezza della trend line discendente con il valore 3 utilizzando "OBJPROP_WIDTH".

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);

          Determinazione del raggio della trend line discendente mediante l'utilizzo di "OBJPROP_RAY_RIGHT".

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);

          Dopo la compilazione senza alcun errore, troveremo l'expert nella finestra del navigatore, come abbiamo detto prima. Dopo aver allegato l'EA, saremo pronti ad ottenere l'azione richiesta in base a questo EA e potremo trovare la trend line discendente tracciata come di seguito:

          Esempio di trend line discendente

          Come possiamo vedere nel grafico nell’angolo in alto a destra abbiamo l'EA allegato e abbiamo la trend line discendente tracciata sopra i prezzi, poiché c'è una forza d'acquisto intorno a questo livello.


          Livelli di supporto e MQL5

          Il livello di supporto è un livello o una zona di prezzo che si trova al di sotto dei prezzi attuali e attorno al quale si può trovare un rimbalzo verso l'alto, perché attorno a questi livelli c'è una forza d'acquisto. Quindi, sono molto importanti perché possiamo attivarli come punti di acquisto. Esistono molte forme di livelli di supporto e una di queste è il livello di supporto orizzontale. Di seguito è come appare questo modulo:

           Support lvl

          Di seguito è riportato un esempio di livello di supporto del mercato:

          Support lvl 1

          Come possiamo vedere nel grafico precedente, abbiamo una linea di supporto verde sotto i prezzi che può essere utilizzata come livello di respinta al rialzo.

          Il programma deve controllare i minimi di prezzo e l'eventuale presenza di una qualsiasi linea di supporto ad ogni tick. Eliminare quindi la linea di supporto precedente e crearne una verde aggiornata sotto i minimi del prezzo. Possiamo tracciare e gestire questa linea di supporto con MQL5 come nel codice completo qui sotto:

          //+------------------------------------------------------------------+
          //|                                          Support Line System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pLow[];
             ArraySetAsSeries(pLow,true);
             CopyLow(_Symbol,_Period,0,candles,pLow);
             int candleLow = ArrayMinimum(pLow,0,candles);
             MqlRates pArray[];
             ArraySetAsSeries(pArray,true);
             int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
             ObjectDelete(_Symbol,"supportLine");
             ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low,pArray[0].time,pArray[0].low);
             ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);
             ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);
             ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);
             ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);
            }
          //+------------------------------------------------------------------+

          Differenza in questo codice:

          Eliminare le linee di supporto precedenti con il nome "supportLine".

          ObjectDelete(_Symbol,"supportLine");

          Creazione di una nuova linea di supporto utilizzando "OBJ_HLINE" come tipo dell'oggetto richiesto

          ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low);

          Determinazione del colore della linea di supporto mediante "OBJPROP_COLOR".

          ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);

          Determinazione dello stile della linea di supporto mediante OBJPROP_STYLE e STYLE_SOLID

          ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);

          Determinazione della larghezza della linea di supporto mediante "OBJPROP_WIDTH".

          ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);

          Determinazione del raggio della linea di supporto mediante "OBJPROP_RAY".

          ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);

          Dopo aver compilato questo codice senza alcun errore, possiamo allegarlo al grafico come abbiamo detto prima. Dopo di che, lo troveremo allegato al grafico e potremo individuare la sua azione, dato che la linea di supporto è tracciata come nell'esempio seguente:

          Support line

          Come possiamo vedere nel grafico precedente abbiamo l’EA Support System allegato, in quanto lo troviamo nell'angolo in alto a destra e abbiamo una linea di supporto sotto i prezzi.


          Livelli di resistenza e MQL5

          Il livello di resistenza è un livello o una zona di prezzo che si trova al di sopra dei prezzi attuali e attorno al quale si può trovare un rimbalzo verso il basso, perché attorno a questi livelli c'è una forza di vendita. Quindi, sono molto importanti, in quanto possiamo attivarli come punti di vendita. Esistono molte forme di questi livelli di resistenza e una di queste è il livello di resistenza orizzontale, di seguito ecco come appare:

           Livello di resistenza

          Di seguito è riportato un esempio di resistenza del mercato:

           Resistance lvl 1

          Come possiamo vedere nel grafico precedente, abbiamo una linea di resistenza rossa al di sopra dei prezzi che può essere utilizzata come livello di respingimento al ribasso in quanto esiste una forza d'acquisto intorno a questo livello. 

          Il programma deve controllare i massimi del prezzo e l'eventuale presenza di una qualsiasi linea di resistenza ad ogni tick. Eliminare quindi la precedente linea di resistenza e crearne una rossa aggiornata sopra i massimi del prezzo. Possiamo tracciare e gestire questa linea di resistenza con MQL5 come nel codice completo qui sotto:

          //+------------------------------------------------------------------+
          //|                                       Resistance Line System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pHigh[];
             ArraySetAsSeries(pHigh,true);
             CopyHigh(_Symbol,_Period,0,candles,pHigh);
             int candleHigh = ArrayMaximum(pHigh,0,candles);
             MqlRates pArray[];
             ArraySetAsSeries(pArray,true);
             int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
             ObjectDelete(_Symbol,"resistanceLine");
             ObjectCreate(_Symbol,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);
             ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
            }
          //+------------------------------------------------------------------+

          Differenza in questo codice:

          Eliminare qualsiasi linea di resistenza precedente con il nome "resistanceLine".

          ObjectDelete(_Symbol,"resistanceLine");

          Creare una nuova linea di resistenza utilizzando "OBJ_HLINE" come tipo di oggetto richiesto.

          ObjectCreate(_Symbol,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);

          Determinazione del colore della linea di resistenza tramite OBJPROP_COLOR

          ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);

          Determinazione dello stile della linea di resistenza mediante OBJPROP_STYLE e STYLE_SOLID

          ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);

          Determinazione della larghezza della linea di resistenza mediante OBJPROP_WIDTH

          ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);

          Determinazione del raggio della linea di resistenza mediante OBJPROP_RAY_RIGHT

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);

          Dopo aver compilato questo codice senza alcun errore, possiamo allegarlo al grafico come abbiamo detto prima. Dopo di che, troveremo che l'EA Resistance System è allegato al grafico e che la sua azione è uguale alla seguente:

          Linea di resistenza

          Come possiamo vedere nel grafico precedente abbiamo l’EA Resistance System allegato in quanto lo troviamo nell'angolo in alto a destra e abbiamo una linea di resistenza sotto i prezzi.


          Conclusioni

          Ora, si suppone che abbiate compreso in dettaglio tre delle linee importanti che possono essere utilizzate nel nostro trading. Le trend lines (trend line ascendenti e discendenti), le linee di supporto e di resistenza. Abbiamo imparato a conoscerle e ad utilizzarle. Abbiamo anche imparato come gestirle con MQL5 per tracciarle automaticamente, creando il nostro sistema per ognuno di loro. Potete anche sviluppare questo codice aggiungendo ordini di invio per eseguire trades basati su di esse, che dovete testare prima di utilizzarle sul vostro conto reale, per assicurarvi che siano profittevoli, dato che l'obiettivo principale di questo articolo è solo didattico.

          Spero che questo articolo vi sia stato utile e che abbiate imparato a usare questi strumenti a vostro favore, utilizzandoli come parte di un altro sistema avanzato o singolarmente. Mi auguro quindi che abbiate ottenuto utili approfondimenti sull'argomento di questo articolo o su qualsiasi altro argomento correlato per ottenere migliori risultati di trading e migliorarli con strumenti utili e profittevoli, oltre a sperare che abbiate provato a testare e scrivere da soli i codici menzionati per trarne beneficio e migliorare le vostre capacità di codifica.

          Se questo articolo vi è stato utile e volete leggere altri articoli su MQL5 e su come progettare un sistema di trading utilizzando gli indicatori tecnici più popolari, potete leggere i miei precedenti articoli per saperne di più e potete trovare articoli come progettare un sistema di trading basato sugli indicatori tecnici più popolari come la media mobile, l'RSI, il MACD, lo Stocastico, il Parabolic SAR, ecc.

          Se volete saperne di più anche su alcune delle basi di MQL5 e sul perché e sul come progettare il vostro sistema di trading algoritmico, potete leggere il mio precedente articolo a riguardo.

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

          Arriva il Nuovo MetaTrader 5 e MQL5 Arriva il Nuovo MetaTrader 5 e MQL5
          Questa è solo una panoramica di MetaTrader 5. Non posso descrivere tutte le nuove funzionalità del sistema per un periodo di tempo così breve: i test sono iniziati il 09.09.2009. Questa è una data simbolica e sono sicuro che sarà un numero fortunato. Sono passati alcuni giorni da quando ho ricevuto la versione beta del terminale MetaTrader 5 e MQL5. Non sono riuscito a provare tutte le sue funzionalità, ma sono già sorpreso.
          Modelli di regressione della libreria Scikit-learn e la loro esportazione in ONNX Modelli di regressione della libreria Scikit-learn e la loro esportazione in ONNX
          In questo articolo esploreremo l'applicazione dei modelli di regressione del pacchetto Scikit-learn, cercheremo di convertirli nel formato ONNX e utilizzeremo i modelli risultanti all’interno di programmi MQL5. Inoltre, confronteremo l'accuratezza dei modelli originali con le loro versioni ONNX sia per la precisione float che per la double. Inoltre, esamineremo la rappresentazione ONNX dei modelli di regressione, con l'obiettivo di fornire una migliore comprensione della loro struttura interna e dei principi operativi.
          Utilizza i canali MQL5.community e le chat di gruppo Utilizza i canali MQL5.community e le chat di gruppo
          Il sito web MQL5.com riunisce trader di tutto il mondo. Gli utenti pubblicano articoli, condividono codici gratuiti, vendono prodotti nel Market, offrono servizi da freelance e copiano segnali di trading. Puoi comunicare con loro sul Forum, nelle chat dei trader e nei canali MetaTrader.
          Modelli di classificazione nella libreria Scikit-Learn e la loro esportazione in ONNX Modelli di classificazione nella libreria Scikit-Learn e la loro esportazione in ONNX
          In questo articolo esploreremo l'applicazione di tutti i modelli di classificazione disponibili nella libreria Scikit-Learn per risolvere il compito di classificazione del set di dati Iris di Fisher. Cercheremo di convertire questi modelli in formato ONNX e di utilizzare i modelli risultanti nei programmi MQL5. Inoltre, confronteremo l'accuratezza dei modelli originali con le loro versioni ONNX sull'intero set di dati Iris.