無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

XMLパーサー - MetaTrader 5のためのライブラリ

ビュー:
975
評価:
(31)
パブリッシュ済み:
2016.06.03 13:40
アップデート済み:
2016.11.22 07:34
\MQL5\Include\XML\ \MQL5\Scripts\
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

XMLドキュメントをパースするのに使用されるライブラリです。MQL5のみで書かれており、外部ライブラリは使用されません。

ライブラリを使用するには、それを含むだけです。

#include <Xml\XmlBase.mqh>

例:

#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")
        {
           /* .... */
        }
      }
    }
  }
}

注意事項:

  • ライブラリはMQL5のコンストラクタでのパラメータ指定が不可能な時に書かれました。
  • XML標準の基本機能のみがサポートされています。
  • エラー、提案やバグ修正についてお知らせください。

主要コンポーネントは下記の通りです。

CXmlDocument クラスは、ファイル/文字列からXML文書をダウンロードしてファイルに保存するためのメソッドを提供します。

CreateXはXML文書を解析してDOMモデルの階層を作成し、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 クラスは、XML文書の基本インタフェースです。これは、属性やコンテンツ、要素へのアクセスを提供します。

class CXmlElement 
{
  private:
    string         FName;
    CXmlAttribute* FAttributes[];
    CXmlElement   *FElements[];
    string         FText;
    CXmlElement*   FParent;
  public:  
    //--- コンストラクタのメソッド
    void  CXmlElement ();
    void ~CXmlElement ();
    void Init (const string aName, const CXmlElement* aParent=NULL, const string aText="");
    void CopyTo (CXmlElement &aDst);
    virtual void Clear ();
    
    //--- 主要サービスメソッド
    string GetName () const;
    void SetName (const string aName);
    string GetText () const;
    void SetText (const string aText);
    CXmlElement* GetParent () const;
    void SetParent (CXmlElement* aParent);
    
    //--- 属性サービスメソッド
    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 ();
  
    //--- チャイルドサービスメソッド
    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 は属性を操作するための簡単なクラスです。

class CXmlAttribute 
{
  private:
    string FName;
    string FValue;
 public:
    //--- コンストラクタのメソッド
    void CXmlAttribute ();
    void ~CXmlAttribute ();

    void Init (const string aName, const string aValue);
    virtual void Clear ();
    virtual CXmlAttribute* Clone ();
    
    //--- サービスメソッド
    string GetName () const;
    void SetName (const string aName);
    string GetValue () const;
    void SetValue (const string aValue);    
};

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/712

DinapoliTargets_Full DinapoliTargets_Full

DinapoliTargets_Full指標ーのこのバージョンは任意のバーで描画できるので、各バーで指標のレベルと相対した市場行動の全体像を見るために便利です。指標を使用するための最良の方法は、オフラインで作業しながら、戦略を分析することです。

DinapoliTargets DinapoliTargets

この指標は将来の価格レベルのグリッドを描画します。

偏フラクタル効率 偏フラクタル効率

偏フラクタル効率は、現在の市場価格効率を表示するテクニカル指標です。

AsymmetricStochNR AsymmetricStochNR

ストキャスティクスの改善版