Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
40
Valutazioni:
(24)
Pubblicato:
\MQL5\Experts\ \MQL5\Include\
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

La classe CIsNewBar è necessaria per il lavoro economico degli esperti che effettuano i loro calcoli al momento dell'arrivo di una nuova barra.

Di solito, non viene utilizzata una classe, ma solo la funzione IsNewBar(). Tuttavia, tale funzione contiene una variabile statica e per questo motivo non è possibile utilizzare più chiamate di questa funzione. Per l'utilizzo multiplo di tale funzione nel codice dell'Expert Advisor, è molto più conveniente renderla membro di una classe, cosa che è stata fatta in questo caso con l'aiuto della libreria IsNewBar.mqh.

Il codice della libreria deve essere incluso nel contenuto del file a livello globale con la direttiva #include:

#include <IsNewBar.mqh>

Nel blocco OnTick() si deve quindi dichiarare il numero necessario di variabili della classe IsNewBar:

static CIsNewBar NB1,NB2;

Dopodiché è possibile effettuare le chiamate alle funzioni IsNewBar()

bool IsNewBar(string symbol,            // simbolo di valuta
              ENUM_TIMEFRAMES timeframe) // timeframe del grafico per il calcolo

nel codice dell'EA:

if(NB1.IsNewBar(Symbol(),PERIOD_D1)) // verifica la presenza di una nuova barra
     {
      /* Ecco il codice del blocco di ricezione del segnale commerciale 1 */
     }

Ad esempio, ecco una possibile variante di codice che utilizza la classe IsNewBar all'interno della funzione OnTick():

//+------------------------------------------------------------------+
//| Funzione tick dell'esperto|
//+------------------------------------------------------------------+
void OnTick()
  {
//----

   double iClose1[1],iClose2[1];
//---- dichiarazione di variabili statiche
   static bool Recount1=true,Recount2=true;
   static CIsNewBar NB1,NB2;

//+----------------------------------------------+
//| Determinazione dei segnali per i trade
//+----------------------------------------------+
   if(NB1.IsNewBar(Symbol(),PERIOD_D1) || Recount1) // verifica la presenza di una nuova barra
     {
      Recount1=false;
      
      //---- copiare i dati appena apparsi negli array
      if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose1)<=0) {Recount1=true; return;}
      
      /* Ecco il codice del blocco di ricezione del segnale commerciale 1 */
      
     }
     
   if(NB2.IsNewBar(Symbol(),PERIOD_H4) || Recount2) // verifica la presenza di una nuova barra
     {
      Recount2=false;
      
      //---- copiare i dati appena apparsi negli array
      if(CopyClose(Symbol(),PERIOD_H4,1,1,iClose2)<=0) {Recount2=true; return;}
      
      /* Ecco il codice del blocco di ricezione del segnale di trading 2 */
      
     }

Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/768

Canale ATR Canale ATR

Un canale basato sulle deviazioni dell'indicatore tecnico ATR (Average True Range) dalla media mobile.

Basic GridManager Library Basic GridManager Library

Si tratta di una libreria di base per creare e gestire griglie.

Oscillatore di previsione Oscillatore di previsione

Oscillatore normalizzato con l'aggiunta di una linea di segnale e di punti colorati per l'esecuzione di operazioni.

A Code block to detect A "New Candle/Bar" using bars history (very effective way) A Code block to detect A "New Candle/Bar" using bars history (very effective way)

Se si desidera eseguire i blocchi di codice "solo una volta per barra", è importante verificare se è arrivata una nuova barra o meno.