Rejoignez notre page de fans
- Vues:
- 68
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
La classe CIsNewBar est nécessaire au travail économique des experts qui effectuent leurs calculs au moment de l'arrivée d'une nouvelle barre.
En général, ce n'est pas une classe mais la fonction IsNewBar() qui est utilisée pour ce genre de choses. Mais cette fonction contient une variable statique, et c'est pour cette raison qu'il n'est pas possible d'utiliser plusieurs appels de cette fonction. Pour une utilisation multiple d'une telle fonction dans le code du conseiller expert, il est beaucoup plus pratique d'en faire un membre d'une classe, ce qui a été fait dans ce cas avec l'aide de la bibliothèque IsNewBar.mqh.
Le code de la bibliothèque elle-même doit être inclus dans le contenu du fichier au niveau global par la directive #include:
#include <IsNewBar.mqh> Ensuite, dans le bloc OnTick(), vous devez déclarer le nombre requis de variables de la classe IsNewBar :
static CIsNewBar NB1,NB2; Après cela, vous pouvez faire des appels aux fonctions IsNewBar()
bool IsNewBar(string symbol, // symbole monétaire ENUM_TIMEFRAMES timeframe) // période du graphique pour le calcul
dans le code de l'EA :
if(NB1.IsNewBar(Symbol(),PERIOD_D1)) // vérifier la présence d'une nouvelle barre { /* Voici le code du bloc de réception du signal commercial 1 */ }
Par exemple, voici une variante de code possible utilisant la classe CIsNewBar dans la fonction OnTick() :
//+------------------------------------------------------------------+ //| Fonction de tic-tac expert| //+------------------------------------------------------------------+ void OnTick() { //---- double iClose1[1],iClose2[1]; //---- déclaration des variables statiques static bool Recount1=true,Recount2=true; static CIsNewBar NB1,NB2; //+----------------------------------------------+ //| Détermination des signaux pour les transactions //+----------------------------------------------+ if(NB1.IsNewBar(Symbol(),PERIOD_D1) || Recount1) // vérifier la présence d'une nouvelle barre { Recount1=false; //---- copier les données nouvellement apparues dans les tableaux if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose1)<=0) {Recount1=true; return;} /* Voici le code du bloc de réception du signal commercial 1 */ } if(NB2.IsNewBar(Symbol(),PERIOD_H4) || Recount2) // vérifier la présence d'une nouvelle barre { Recount2=false; //---- copier les données nouvellement apparues dans les tableaux if(CopyClose(Symbol(),PERIOD_H4,1,1,iClose2)<=0) {Recount2=true; return;} /* Voici le code du bloc de réception du signal de négociation 2 */ }
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/768
Canal ATR
Canal basé sur les déviations de l'indicateur technique ATR (Average True Range) par rapport à la moyenne mobile.
Basic GridManager Library
Il s'agit d'une bibliothèque de base permettant de créer et de gérer des grilles.
Oscillateur de prévision
Oscillateur normalisé avec ligne de signal ajoutée et points de couleur pour effectuer des transactions.
A Code block to detect A "New Candle/Bar" using bars history (very effective way)
Si vous voulez exécuter vos blocs de code "seulement une fois par barre", il est important de vérifier si une nouvelle barre est arrivée ou non.