- 显示:
- 2085
- 等级:
- 已发布:
- 2014.01.27 08:04
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
解析 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

多币种 "网格" 自带风险控制 (自动交易冠军杯 2011 年参赛版本, 以及升级版)。

这段脚本输出历史数据至 HST 格式, 它可用于 MetaTrader 4 客户端。文件可在 MetaTrader 4 中作为历史数据输入, 或您可以作为离线图表打开它。