请作者提供。在撰写 TC 时,您的方法非常方便。一切多余的东西都被隐藏起来,这不能不令人高兴。这样做的回报是什么?
如果我使用经典方法和您的方法编写脉冲-TC,您的方法在测试器中会慢多少?
毫无疑问,你们的代码会更美观、简洁、方便和通用。
你们是否已经支持多符号 TC(多符号 OnTick 在哪里)?
// 管理 CStrategy 类型策略的生成器 类
打错了。
在我看来,只定义 CStrategyList::OnChartEvent,然后只在本地OnChartEvent 中调用它的做法是短视的。
如果是我,我会创建一个具有虚拟 OnChartEvent 的基类。所有的 CStrategyList、CStrategy 和其他类(顺便说一下,由于某些原因,你不能从任何类继承指标)都将从基类派生。在本地 OnChartEvent 中,您应该循环调用所有已创建的虚拟 OnChartEvent。
我发现您正在使用开发人员编写的库。例如数组。它们是正常编写的吗?
您的源代码中随处可见
#include <Strategy\Message.mqh>
这假定我没有用于其他需要的 Strategy 文件夹。在允许的情况下,为什么不在 includnics 中使用倒逗号?为什么不把
#include <Sokolov\Strategy\Message.mqh>
在我看来,只定义 CStrategyList::OnChartEvent,然后只在本地 OnChartEvent 中调用它的做法是短视的。
如果是我,我会创建一个具有虚拟 OnChartEvent 的基类。所有的 CStrategyList、CStrategy 和其他类(顺便说一下,由于某些原因,你不能从任何类继承指标)都将从基类派生。在本地 OnChartEvent 中,我会在所有创建的虚拟 OnChartEvent 的循环中编写一个调用。
是的,这样可能更正确。现在,OnChartEvent 事件被专家们忽略了。我会在下一个版本中进行适当修改。
我发现您使用了开发人员编写的库。例如数组。它们写得好吗
非常好,而且非常优化。在多年的使用过程中,它们中的所有算法都得到了完善和微调。这就是我推荐它们的原因。
你在源代码中到处都是这样写的。
这是在假设我没有 Strategy 文件夹来满足其他需求。在允许的情况下,为什么不在 includnics 中使用倒逗号?为什么不把
位于 Strategy 文件夹内的源代码只是本地相互引用,也许我翻阅了一些东西,我不知道,但应该有本地引用。Expert Advisor 文件和 Expert Advisor mq5 模块本身全局引用引擎,这也是正确的,因为它是库的外部模块。
我查看了 EventChartPBarChanged.mqh。为什么在需要常量的地方忽略了常量?
请作者提供。在撰写 TC 时,您的方法非常方便。一切多余的东西都被隐藏起来,这不能不令人高兴。这样做的回报是什么?
如果我使用经典方法和您的方法编写脉冲-TC,您的方法在测试器中会慢多少?
毫无疑问,你们的代码会更美观、简洁、方便和通用。
你们是否已经支持多符号 TC(多符号 OnTick 在哪里)?
策略测试仪 的主要时间都花在基础架构上(滚动条、模拟交易环境等),花在智能交易代码上的时间要少得多。
另一方面,分析表明,CSTartegy 的主要资源密集型方法是 BuyInit、SellInit、BuySupport 和 SellSupport 方法,即 Expert Advisor 逻辑本身。所有其他绑定都以最佳方式成功编译到平面代码中,如果不使用,则直接剪切掉。这就是为什么高级 OOP 编程是合理的。
需要注意的是,如果智能交易系统或多或少比较复杂,有许多规则和繁重的基础结构,以最初的扁平化形式(没有函数和 OOP)进行编程将不可避免地导致程序员出错,因此这样的智能交易系统的性能甚至会比使用 OOP 时更低。汇编程序的时代已经过去。编译器早已在某些优化领域打败了人类。
。
位于 Strategy 文件夹内的源代码在本地相互引用,也许我翻阅了一些东西,我不知道,但应该有本地引用。Expert Advisor 文件和 Expert Advisor mq5 模块本身全局引用引擎,这也是正确的,因为它是库的外部模块。
已查看。查看 MoneyManagment.mqh。
来自 mq5 的全局引用 - 我完全理解这种需要。但您在解决方案中保留了 Include/Stategy 文件夹。而我使用这个文件夹是为了满足自己的需要。我不想在其中看到其他人的 mqh。如果您将所有基础架构移到 Include/Sokolov/Strategy、Include/Sokolov/Strategy、Include/Sokolov/Panel 等文件夹中,那将是合乎逻辑的。
新文章 通用智能交易系统:支持挂单和对冲(第五章)已发布:
本文是对CStrategy交易引擎的进一步描述。由于交易者的广泛需要,我们向交易引擎中添加了支持挂单的相关函数。同时,最新版的MetaTrader 5现在也支持了具有对冲选项的帐户。同样的功能也添加到了CStrategy中。本文给出了使用挂单进行交易和在账户中用CStrategy类进行对冲交易的详细算法描述。
更新功能后的策略测试结果和之前略有不同。在净额帐户上,EA将像传统的只能交易系统一样只操作一个头寸:
图. 5. 在经典净额账户上由一个多态EA管理的头寸。
本文的附件包含最新版的CImpulse策略,不同的帐户类型用不同的逻辑实现。
注意交易逻辑的所有版本都是正确的。然而,交易策略的具体操作方式取决于策略本身。CStrategy仅提供一个通用的接口,根据头寸的类型类操作它们。作者:Vasiliy Sokolov