Unisciti alla nostra fan page
- Visualizzazioni:
- 41
- Valutazioni:
- Pubblicato:
-
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
Un canale basato sulle deviazioni dell'indicatore tecnico ATR (Average True Range) dalla media mobile.
Basic GridManager Library
Si tratta di una libreria di base per creare e gestire griglie.
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)
Se si desidera eseguire i blocchi di codice "solo una volta per barra", è importante verificare se è arrivata una nuova barra o meno.