Unisciti alla nostra fan page
- Visualizzazioni:
- 45
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Libreria per il parsing di documenti XML. Implementazione in MQL5 senza utilizzare librerie di terze parti.
Per collegare la libreria ai propri progetti, è sufficiente aggiungere un comando del preprocessore
#include <Xml\XmlBase.mqh>Esempio di utilizzo:
#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") { /* .... */ } } } } }
Note:
- La libreria è stata creata in quei tempi lontani in cui i costruttori di classi non potevano accettare parametri;
- Sono implementate solo le funzionalità di base dello standard Xml;
- Commenti, correzioni, aggiunte, estensioni sono benvenuti.
Componenti principali:
Classe CXmlDocument - consente di caricare i documenti da un file/stringa e di salvare le modifiche al file.
Le funzioni CreateX analizzano i documenti e creano un modello DOM gerarchico, a cui si può accedere tramite 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 è l'interfaccia principale di qualsiasi documento Xml. Fornisce l'accesso agli elementi, ai loro attributi e al loro contenuto.
class CXmlElement { private: string FName; CXmlAttribute* FAttributes[]; CXmlElement *FElements[]; string FText; CXmlElement* FParent; public: //--- metodi del costruttore void CXmlElement (); void ~CXmlElement (); void Init (const string aName, const CXmlElement* aParent=NULL, const string aText=""); void CopyTo (CXmlElement &aDst); virtual void Clear (); //--- metodi principali del servizio string GetName () const; void SetName (const string aName); string GetText () const; void SetText (const string aText); CXmlElement* GetParent () const; void SetParent (CXmlElement* aParent); //--- metodi di servizio degli attributi 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 (); //--- metodi del servizio figlio 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); };
Classe CXmlAttribute : una classe semplice per lavorare con gli attributi.
class CXmlAttribute { private: string FName; string FValue; public: //--- metodi del costruttore void CXmlAttribute (); void ~CXmlAttribute (); void Init (const string aName, const string aValue); virtual void Clear (); virtual CXmlAttribute* Clone (); //--- metodi di servizio string GetName () const; void SetName (const string aName); string GetValue () const; void SetValue (const string aValue); };
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/712
Indicatore prezzo/volume
Uno dei chip più semplici per l'apprendimento automatico
RSI Alert - Multi Timeframe Overbought/Oversold Detector
Un indicatore RSI semplice ma efficace che monitora le condizioni di ipercomprato e ipervenduto su qualsiasi simbolo e timeframe. Invia avvisi istantanei tramite notifiche pop-up e mobile quando l'RSI supera le soglie definite.
RSI_AC_Segnale_tocastico
Indicatore che mostra la direzione del trend (RSI) e i segnali di trading (Stocastico + Acceleratore).
ZigZag_INT
Versione ottimizzata dell'indicatore ZigZag in termini di velocità di calcolo.