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:
- 1277
- 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 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.

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.

Este indicador muestra las velas promediadas de un marco temporal más grande en otro más pequeño.

El indicador muestra el precio actual en una de las esquinas del gráfico.