Каждый экспертописатель, независимо от уровня своей подготовки, ежедневно сталкивается с одними и теми же торговыми задачами и алгоритмическими проблемами, которые так или иначе приходится решать для организации надежного торгового процесса. Данная статья описывает возможности торгового движка CStrategy, способного взять на себя решение этих задач и предоставить пользователю удобные механизмы для описания своей торговой идеи.
我决定在 EA 中使用该类作为 (StrategyGUID, Strategy) 形式的策略容器,其中 StrategyGUID 是 ulong 类型的标识符;Strategy 是在 CObject 继承类基础上创建的策略。
因此,我声明了必要的变量,包括 CDictionary StrategyBook - 活动策略书;我创建了必要的策略 Strategy01 和 Strategy02,在 EA的 OnInit() 函数 中启动了各种参数,包括为它们分配唯一的 GUID。在OnInit()函数的最后,我决定通过调用代码将策略保存在StrategyBook中。
StrategyBook.AddObject(Strategy01.strGUID,Strategy01);
StrategyBook.AddObject(Strategy02.strGUID,Strategy02);
然后,我在两行中都收到了 "StrategyXX - parameter conversion not allowed(StrategyXX - 参数转换不允许)"的错误信息。
根据我使用 C# 的经验,所有操作都是正确的。但在 MQL5 中,我却遇到了这个错误。
这与什么有关?
我决定在 EA 中使用该类作为 (StrategyGUID, Strategy) 形式的策略容器,其中 StrategyGUID 是 ulong 类型的标识符;Strategy 是在 CObject 继承类基础上创建的策略。
因此,我声明了必要的变量,包括 CDictionary StrategyBook - 活动策略书;我创建了必要的策略 Strategy01 和 Strategy02,在 EA的 OnInit() 函数 中启动了各种参数,包括为它们分配唯一的 GUID。在OnInit()函数的最后,我决定通过调用代码将策略保存在StrategyBook中。
StrategyBook.AddObject(Strategy01.strGUID,Strategy01);
StrategyBook.AddObject(Strategy02.strGUID,Strategy02);
然后,我在两行中都收到了 "StrategyXX - parameter conversion not allowed(StrategyXX - 参数转换不允许)"的错误信息。
根据我使用 C# 的经验,所有操作都是正确的。但在 MQL5 中,我却遇到了这个错误。
这与什么有关?
可能有几个原因。最有可能的是类型不兼容或指针工作不正确。此外,我们还不能排除使用模板方法的特殊性(它们也有自己的细微差别)。
一般来说,最好使用现成的交易引擎,这样可以节省大量时间和精力:https://www.mql5.com/zh/articles/2166。
是的,我最终决定这么做。
新文章MQL5 Cookbook:为快速数据访问实现关联数组或字典》一文已发布:
作者: Vasiliy Sokolov瓦西里-索科洛夫
感谢所有的努力,但我似乎无法让任何代码示例正常工作。
似乎Dictionary dict; 应该是CDictionary dict;
一个简单的工作示例如何?
关于新的 MT4(Build 1080,2017 年 5 月 12 日),在编译时出现这些错误并阻止执行:
m_array' - 不允许包含对象的结构 Dictionary.mqh 303 25
您好、
正如之前另一个人所说,没有可编译的示例。
只有一个带有俄语注释的文件。
我很高兴能成功使用瓦西里的资料库。真是帮了大忙!
我记得我也遇到过一些编译器错误,并且可以解决它们。不过,我也说不清是哪些错误以及我做了什么。
由于我对 MQL5 代码的格式非常恼火,而且我总是将所有内容重新格式化为现代 C++ 格式(正确缩进、避免不必要的括号、没有杂乱的注释等),所以我无法说明代码中真正的变化是什么。我只记得改动很小。
如果你想使用正确格式的库,这里就是:
(请注意,我使用的是制表符,所以这里的格式看起来很乱,但在 MetaEditor 中却没有!)。
我想我发现了一个错误,即在删除一个元素并试图找到最后一个元素时:
CDictionary.mqh 中会出现错误:
Dictionary.mqh 中的无效指针 访问 (463,9)
有人能确认这一点吗?有任何修复方法吗?