Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

XML parser - librería para MetaTrader 5

Visualizaciones:
1154
Ranking:
(31)
Publicado:
2014.01.14 13:58
Actualizado:
2016.11.22 07:33
\MQL5\Include\XML\
xmlbase.mqh (0.56 KB) ver
xmlattribute.mqh (3.95 KB) ver
xmldocument.mqh (11.89 KB) ver
xmlelement.mqh (18.89 KB) ver
\MQL5\Scripts\
xml_test.mq5 (1.39 KB) ver
¿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 Three-Pole Super Smoother Filter

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 JFatlSpeed HTF

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 Candles Smoothed HTF

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

Magnified Market Price Magnified Market Price

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