Je vous remercie. Très instructif.
J'essaie de comprendre la signification de ce code dans cet article, pourquoi nous avons un * près du CINDICATOBUFFER et utilisons ensuite at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG") ;
((CIndicatorBuffer*)At(1)).Name("HIGH") ;
((CIndicatorBuffer*)At(2)).Name("LOW") ;
J'apprécierais une explication détaillée
merci
J'essaie de comprendre la signification de ce code dans cet article pourquoi nous avons un * près du CINDICATOBUFFER et utilisons ensuite at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG") ;
((CIndicatorBuffer*)At(1)).Name("HIGH") ;
((CIndicatorBuffer*)At(2)).Name("LOW") ;
J'apprécierais une explication détaillée
merci
chaîne de caractères
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep) ;
Je ne trouve pas le chemin vers l'indicateur.
Les indicateurs que j'essaie d'appeler se trouvent dans le dossier standard.
Le Zigzag standard se trouve dans le dossier Examples - vous devez ajouter le nom du dossier au chemin d'accès.

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) cannot load custom indicator 'Examples\ZigZag'[4302]
Qui va regarder le code d'erreur?
ERR_MARKET_NOT_SELECTED | 4302 | Symbole non sélectionné dans MarketWatch |
Qui va regarder le code d'erreur?
ERR_MARKET_NOT_SELECTED | 4302 | Symbole non sélectionné dans MarketWatch |
Je mets NULL - ça marche, je mets "EURUSD" - ça ne marche pas !!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- vérifier l'historique if(!SetSymbolPeriod(symbol,period)) return(false); //--- créer //m_handle=iCustom(symbol,period, "Examples\\ZigZag",depth,deviation_create,backstep) ; //m_handle=iCustom("EURUSD",period, "Examples\\NZigZag",depth,deviation_create,backstep) ; - ne fonctionne PAS m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- vérifier le résultat if(m_handle==INVALID_HANDLE) return(false); //--- l'indicateur a été créé avec succès if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- erreur d'initialisation IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|| Créer l'indicateur "Zig Zag".| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- vérifier l'historique if(!SetSymbolPeriod(symbol,period)) return(false); //--- créer m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- vérifier le résultat if(m_handle==INVALID_HANDLE) return(false); //--- l'indicateur a été créé avec succès if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- erreur d'initialisation IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- ligne d'état de rendu m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- enregistrer les paramètres m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- créer des tampons ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- erreur return(false); }
Aidez-moi à comprendre comment la direction d'indexation du tableau de tampons d'indicateurs est définie ici, c'est-à-dire de la même manière que ArraySetAsSeries. La direction par défaut est de présent à passé, mais j'ai besoin de le faire de passé à présent. Depuis hier, je me débats avec cette question ! A l'aide !
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Extension de la bibliothèque standard MQL5 et réutilisation du code a été publié :
La bibliothèque standard MQL5 vous facilite la vie en tant que développeur. Néanmoins, il ne met pas en œuvre tous les besoins de tous les développeurs du monde, donc si vous sentez que vous avez besoin de plus de choses personnalisées, vous pouvez aller plus loin et étendre. Cet article vous guide tout au long de l’intégration de l’indicateur technique Zig-Zag de MetaQuotes dans la bibliothèque standard. Nous nous inspirons de la philosophie de conception de MetaQuotes pour atteindre notre objectif.
La bibliothèque standard MQL5 est un framework orienté objet composé d’un ensemble de classes prêtes à l’emploi qui vous facilite la vie en tant que développeur. Néanmoins, il ne met pas en œuvre tous les besoins de tous les développeurs du monde entier, donc si vous sentez que vous avez besoin de plus de choses personnalisées, vous pouvez aller plus loin et vous développer. Cet article vous explique l’intégration de l’indicateur technique Zig-Zag de MetaQuotes dans la bibliothèque standard. Nous nous inspirerons de la philosophie de conception de MetaQuotes afin d’atteindre notre objectif.
En un mot, l'API MQL5 est destinée à vous faire bénéficier de la réutilisation du code, de la fiabilité, de la flexibilité et de la facilité de maintenance. C’est ce que dit la théorie, mais au-delà de tout cela, si vous avez l'intention de continuer à progresser dans MQL5 et de développer des choses plus sophistiquées, telles que des Experts Advisors multi-devises, vous devez d'abord être capable de coder à la manière de la bibliothèque standard afin que vos applications soient garanties d'une vie réussie.
Plus vos EA et indicateurs deviennent complexes, plus il est nécessaire de maîtriser les concepts impliqués dans le développement d'un cadre. A titre d'exemple concret, c'est mon besoin personnel de développer un EA complexe multi-devises qui me dicte la nécessité de renforcer la base de mon projet à partir de zéro.
Figure 1. Les polyèdres réguliers sont des objets parfaits. Ils décrivent bien l’approche de la création d’applications sur des concepts solides
Auteur : Jordi Bassaganas