Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
45
Valutazioni:
(32)
Pubblicato:
\MQL5\Include\XML\ \MQL5\Scripts\
Freelance MQL5 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 Indicatore prezzo/volume

Uno dei chip più semplici per l'apprendimento automatico

RSI Alert - Multi Timeframe Overbought/Oversold Detector 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 RSI_AC_Segnale_tocastico

Indicatore che mostra la direzione del trend (RSI) e i segnali di trading (Stocastico + Acceleratore).

ZigZag_INT ZigZag_INT

Versione ottimizzata dell'indicatore ZigZag in termini di velocità di calcolo.