Rejoignez notre page de fans
- Vues:
- 88
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Bibliothèque pour l'analyse des documents XML. Implémentation en MQL5 sans utiliser de bibliothèques tierces.
Pour connecter la bibliothèque à vos projets, il suffit d'ajouter une commande du préprocesseur
#include <Xml\XmlBase.mqh>Exemple d'utilisation :
#include <Xml\XmlBase.mqh> CXmlDocument doc; void OnStart() { string file = "File.xml"; string err; if (doc.CreateFromFile(file,err)) { CXmlElement * xmlItem = doc.FDocumentElement.GetChild(0); for (int i=0; i<xmlItem.GetChildCount(); i++) if (xmlItem.GetChild(i).GetName() == "LAYER") { CXmlElement* layer = xmlItem.GetChild(i); for (int j=0; j<layer.GetChildCount(); ++j) { if (layer.GetChild(j).GetName() == "NEURON") { /* .... */ } } } } }
Notes :
- La bibliothèque a été créée à l'époque lointaine où les constructeurs de classes ne pouvaient pas accepter de paramètres ;
- Seules les fonctionnalités de base du standard Xml sont implémentées ;
- Commentaires, corrections, ajouts, extensions sont les bienvenus.
Principaux composants :
Classe CXmlDocument - permet de charger des documents à partir d'un fichier ou d'une chaîne et de sauvegarder les modifications apportées au fichier.
Les fonctions CreateX analysent les documents et créent un modèle DOM hiérarchique, auquel on peut accéder via FDocumentElement.
class CXmlDocument { private: void DoElementTrimText(CXmlElement &aXmlItem) ; public: CXmlElement FDocumentElement; void CXmlDocument (); void ~CXmlDocument (); void Clear(); void CopyTo (CXmlDocument &xmlDoc); bool CreateFromText (const string& xml, string& err); bool CreateFromFile (const string filename, string& err); bool SaveToFile (const string filename); string GetXml(); };
La classe CXmlElement est l'interface principale de tout document Xml. Elle permet d'accéder aux éléments, à leurs attributs et à leur contenu
class CXmlElement { private: string FName; CXmlAttribute* FAttributes[]; CXmlElement *FElements[]; string FText; CXmlElement* FParent; public: //--- méthodes du constructeur void CXmlElement (); void ~CXmlElement (); void Init (const string aName, const CXmlElement* aParent=NULL, const string aText=""); void CopyTo (CXmlElement &aDst); virtual void Clear (); //--- principales méthodes de service string GetName () const; void SetName (const string aName); string GetText () const; void SetText (const string aText); CXmlElement* GetParent () const; void SetParent (CXmlElement* aParent); //--- méthodes de service d'attributs int GetAttributeCount () const; int GetAttributeIndex (CXmlAttribute* aAttr) const; CXmlAttribute* GetAttribute (const string aName) const; CXmlAttribute* GetAttribute (int aPos) const; string GetAttributeValue (const string aName) const; CXmlAttribute* AttributeInsertAt (CXmlAttribute* aAttr, int aPos); CXmlAttribute* AttributeAdd (CXmlAttribute* aAttr); CXmlAttribute* AttributeInsertAfter (CXmlAttribute* aAfter, CXmlAttribute* aAttr); CXmlAttribute* AttributeInsertBefore (CXmlAttribute* aBefore, CXmlAttribute* aAttr); CXmlAttribute* AttributeRemove (CXmlAttribute* aAttr); CXmlAttribute* AttributeRemove (int aPos); void AttributeDelete (CXmlAttribute* aAttr); void AttributeDelete (int aPos); void AttributeDeleteAll (); //--- méthodes de service pour les enfants int GetChildCount() const; int GetChildIndex (CXmlElement* aElement) const; CXmlElement* GetChild (const string aName) const; CXmlElement* GetChild (int aPos) const; string GetChildText (const string aName) const; CXmlElement* ChildInsertAt (CXmlElement* aElement, int aPos); CXmlElement* ChildAdd (CXmlElement* aElement); CXmlElement* ChildInsertAfter (CXmlElement* aAfter, CXmlElement* aElement); CXmlElement* ChildInsertBefore (CXmlElement* aBefore, CXmlElement* aElement); CXmlElement* ChildRemove (CXmlElement* aElement); CXmlElement* ChildRemove (int aPos); void ChildDelete (CXmlElement* aElement); void ChildDelete (int aPos); void ChildDeleteAll (); string GetXml(int aLevel); };
La classe CXmlAttribute - une classe simple pour travailler avec les attributs
class CXmlAttribute { private: string FName; string FValue; public: //--- méthodes du constructeur void CXmlAttribute (); void ~CXmlAttribute (); void Init (const string aName, const string aValue); virtual void Clear (); virtual CXmlAttribute* Clone (); //--- méthodes de service string GetName () const; void SetName (const string aName); string GetValue () const; void SetValue (const string aValue); };
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/712
Indicateur de prix / volume
L'une des puces les plus simples pour l'apprentissage automatique
RSI Alert - Multi Timeframe Overbought/Oversold Detector
Un indicateur RSI simple mais efficace qui surveille les conditions de surachat et de survente sur n'importe quel symbole et horizon temporel. Il envoie des alertes instantanées via des notifications pop-up et mobiles lorsque l'IFR franchit les seuils que vous avez définis.
RSI_AC_Stochastic_Signal
Indicateur montrant la direction de la tendance (RSI) et les signaux de trading (Stochastique + Accélérateur).
ZigZag_INT
Version optimisée de l'indicateur ZigZag en termes de vitesse de calcul.