Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 1182
- Ranking:
- Publicado:
- 2014.01.14 13:58
- Actualizado:
- 2016.11.22 07:33
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Una librería para analizar documentos XML. Escrita totalmente en MQL5, no utiliza ninguna librería externa.
Para utilizar la librería, simplemente inclúyala:
#include <Xml\XmlBase.mqh>
Ejemplo:
#include <Xml\XmlBase.mqh> CXmlDocument doc; void OnStart() { string file = "File.xml"; string err; if (doc.CreateFromText(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") { /* .... */ } } } } }
Notas:
- La librería fue escrita cuando los contructores en MQL5 no necesitaban parámetros;
- Solamente están soportadas las funciones básicas del estándar Xml;
- Por favor, avísenme sobre errores, sugerencias y correcciones.
Componentes principales:
CXmlDocument esta clase contiene los métodos principales para descargar los documentos XML desde un archivo o variable de cadena y guardarlos en un archivo.
Las funciones CreateX analizan los documentos XML y crean la jerarquía de modelo del DOM, el trabajo sobre las mismas puede ser realizado mediante 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(); }
CXmlElement clase que ofrece una interfaz básica para cualquier documento XML. Ofrece acceso a elementos, atributos y contenido
class CXmlElement { private: string FName; CXmlAttribute* FAttributes[]; CXmlElement *FElements[]; string FText; CXmlElement* FParent; public: //--- métodos constructores void CXmlElement (); void ~CXmlElement (); void Init (const string aName, const CXmlElement* aParent=NULL, const string aText=""); void CopyTo (CXmlElement &aDst); virtual void Clear (); //--- métodos principales de servicio string GetName () const; void SetName (const string aName); string GetText () const; void SetText (const string aText); CXmlElement* GetParent () const; void SetParent (CXmlElement* aParent); //--- métodos de servicio para atibutos 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étodos de servicio para hijos 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); };
CXmlAttribute clase sencilla para trabajar con atributos
class CXmlAttribute { private: string FName; string FValue; public: //--- métodos constructores void CXmlAttribute (); void ~CXmlAttribute (); void Init (const string aName, const string aValue); virtual void Clear (); virtual CXmlAttribute* Clone (); //--- métodos de servicio string GetName () const; void SetName (const string aName); string GetValue () const; void SetValue (const string aValue); };
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/712
![Three-Pole Super Smoother Filter](https://c.mql5.com/i/code/indicator.png)
Three-Pole Super Smoother Filter del libro de John Ehlers "Análisis Cibernético para Acciones y Futuros: Tecnología Cutting-Edge DSP para mejorar su Trading" se utiliza en este indicador para el cálculo del MA.
![JFatlSpeed HTF](https://c.mql5.com/i/code/indicator.png)
Este indicador muestra la dirección de la aceleración del precio JFatlSpeed de un marco temporal más grande en otro más pequeño.
![Candles Smoothed HTF](https://c.mql5.com/i/code/indicator.png)
Este indicador muestra las velas promediadas de un marco temporal más grande en otro más pequeño.
![Magnified Market Price](https://c.mql5.com/i/code/indicator.png)
El indicador muestra el precio actual en una de las esquinas del gráfico.