文章 "开发多币种 EA 交易(第 2 部分):过渡到交易策略的虚拟仓位" - 页 2 123456 新评论 fxsaber 2024.02.07 16:42 #11 Yuriy Bykov #:我还没有考虑过这个方案,但我会记住这也是可能的。不过,如果我设法从市场上找到了一套现成的智能交易系统,我该如何将它们结合起来使用呢?我是否只需使用选定的 MM 参数运行整套程序? 是的。 fxsaber 2024.02.07 16:45 #12 Yuriy Bykov #: 我已经习惯了 MT5 的交易功能。 我很擅长这些功能,但因为这个原因我放弃了。 关于交易、自动交易系统和测试交易策略的论坛 讨论文章 "开发多货币智能交易系统(第 2 部分):转向虚拟头寸交易策略" fxsaber, 2024.02.07 01:03 pm 谨慎选择用于虚拟交易的交易 API。从可用的 API 中进行选择。优先选择 API 是合乎逻辑的,因为在这种 API 上可以尽可能方便地对 TS 进行编程。 我不太理解所有交易平台发明自己的自行车--交易 API 的普遍做法。让它 "开箱即用 "OOP实体,等等。从这个意义上说,MQ 走了一条好路--所有的 API 都没有 OOP。 Discussing the article: "Developing Yuriy Bykov 2024.02.07 16:46 #13 fxsaber #:对于真实交易来说,这个概念本身就很好。但在同步器中,您必须保留虚拟交易的历史记录。很多事情。可以说,这是一条严肃的道路。 我不明白为什么在真实交易中要保留虚拟交易历史。也许我们对 "虚拟性 "的理解略有不同。我还没有遇到过需要保留历史记录的情况,因为我总是将虚拟仓位与真实仓位同步,而且暂时还不能关闭同步(还不能吗?) Daniil Shchukin 2024.02.07 16:46 #14 从哪里可以获得 EA 文件进行测试? Yuriy Bykov 2024.02.07 16:51 #15 fxsaber #:在结构上,虚拟化将与 TC 分离。 也就是说,TS 使用普通的交易函数,如 OrderSend(),而我们使用我们的库来覆盖这些函数,从而使用虚拟仓位? Yuriy Bykov 2024.02.07 17:04 #16 fxsaber #:为虚拟交易谨慎选择交易 API。从可用的 API 中进行选择。理应优先选择易于为 TS 编程的 API。 事实上,自 2021 年底以来,我已经将我的 API 用于我的 TS 虚拟交易。当然,我已经习惯于使用它来实现我所需要的一切,只使用了仓位和挂单的两个常用方法--Open() 和 Close()。 再次抱歉,我没有及时找到您的虚拟 库 ) Yuriy Bykov 2024.02.07 17:05 #17 summertop #: 从哪里可以获得 EA 文件进行测试? 文章末尾有一个附件列表 fxsaber 2024.02.07 18:42 #18 Yuriy Bykov #:在这里,我不明白为什么要在真实交易中保留虚拟交易历史。也许我们对 "虚拟性 "概念的理解略有不同。我只是没有遇到过需要保留历史记录的情况,因为我总是将虚拟仓位与真实仓位同步,而且暂时还没有关闭同步的可能性(还没有?) 举例说明。 用一个仓位及其取出同步虚拟仓位和实际仓位。 刻度线到达收线点:在虚拟位置触发,在实际位置 - 收线点重新锁定(限制器)。 由于虚拟市场中没有头寸,因此不可能用市价订单关闭真实头寸(例如,翻转、市价订单上的巨大滑点)。 价格没有再次触及 Takei,而是向相反的方向移动。这样看来,在虚拟账户的平仓历史中保留一个 take take 是可能的。但价格可能永远不会触及。那么我们应该在什么水平上同步呢? 于是出现了一种始终进行交易的虚拟终端--它有一个信号内核。只有在真实市场上平仓时才需要它。 总的来说,这是一个大课题。我有三个与真实市场同步的虚拟内核: 有时间限制的交易内核--不与实盘同步。 BestInterval 被推送到第一个虚拟内核。- 它与实盘同步开仓。 无时间限制的交易内核(始终处于交易中) - 与实物同步平仓。 fxsaber 2024.02.07 18:45 #19 Yuriy Bykov #:也就是说,TS 使用正常的交易函数(如 OrderSend()),而我们使用我们的库来覆盖这些函数,从而使用虚拟仓位? 是的,这一原则不需要重写 TS 中的任何内容,因为 TS 不知道自己在哪里交易。它的代码不会因为可以在不同的虚拟或真实环境中交易而被更改。 fxsaber 2024.02.07 18:56 #20 fxsaber #:输入就是一个很好的例子。每个输入参数都要写五六遍。 我对输入进行了重构。示例中的一些代码片段。 //+------------------------------------------------------------------+ //| 专家初始化函数| //+------------------------------------------------------------------+ int OnInit() { expert = new CAdvisor(new CVolumeReceiver(magic_)); // 添加一个策略实例 expert.Add(new CSimpleVolumesStrategy( symbol_, inStrategyInput + inSimpleVolumesStrategyInput)); return(INIT_SUCCEEDED); } InputBase.fixedLot = NormalizeDouble(0.01 / 0.16 * depoPart_, 2); const double Array0[] = {13, 0.3, 1.0, 0, 10500, 465, 1000, 3}; strategies[0] = new CSimpleVolumesStrategy("EURGBP", InputBase + Input[Array0]); //+------------------------------------------------------------------+ //| 构造函数| //+------------------------------------------------------------------+ CSimpleVolumesStrategy::CSimpleVolumesStrategy( string p_symbol, const string sInputs ) : CStrategy(p_symbol, sInputs) { this.Input = sInputs; ArrayResize(m_orders, this.Input.maxCountOfOrders); // 加载指标以获取刻度线量 iVolumesHandle = iVolumes(m_symbol, this.InputStrategy.timeframe, VOLUME_TICK); // 设置刻度卷数组接收器的大小和所需的寻址方式 ArrayResize(volumes, this.Input.signalPeriod); ArraySetAsSeries(volumes, true); } 附加的文件: Refactoring_Input.zip 28 kb 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我还没有考虑过这个方案,但我会记住这也是可能的。不过,如果我设法从市场上找到了一套现成的智能交易系统,我该如何将它们结合起来使用呢?我是否只需使用选定的 MM 参数运行整套程序?
是的。
Yuriy Bykov #:
我已经习惯了 MT5 的交易功能。
关于交易、自动交易系统和测试交易策略的论坛
讨论文章 "开发多货币智能交易系统(第 2 部分):转向虚拟头寸交易策略"
fxsaber, 2024.02.07 01:03 pm
谨慎选择用于虚拟交易的交易 API。从可用的 API 中进行选择。优先选择 API 是合乎逻辑的,因为在这种 API 上可以尽可能方便地对 TS 进行编程。 我不太理解所有交易平台发明自己的自行车--交易 API 的普遍做法。让它 "开箱即用 "OOP实体,等等。从这个意义上说,MQ 走了一条好路--所有的 API 都没有 OOP。
对于真实交易来说,这个概念本身就很好。但在同步器中,您必须保留虚拟交易的历史记录。很多事情。可以说,这是一条严肃的道路。
我不明白为什么在真实交易中要保留虚拟交易历史。也许我们对 "虚拟性 "的理解略有不同。我还没有遇到过需要保留历史记录的情况,因为我总是将虚拟仓位与真实仓位同步,而且暂时还不能关闭同步(还不能吗?)
在结构上,虚拟化将与 TC 分离。
也就是说,TS 使用普通的交易函数,如 OrderSend(),而我们使用我们的库来覆盖这些函数,从而使用虚拟仓位?
为虚拟交易谨慎选择交易 API。从可用的 API 中进行选择。理应优先选择易于为 TS 编程的 API。
事实上,自 2021 年底以来,我已经将我的 API 用于我的 TS 虚拟交易。当然,我已经习惯于使用它来实现我所需要的一切,只使用了仓位和挂单的两个常用方法--Open() 和 Close()。
再次抱歉,我没有及时找到您的虚拟 库 )
从哪里可以获得 EA 文件进行测试?
文章末尾有一个附件列表
在这里,我不明白为什么要在真实交易中保留虚拟交易历史。也许我们对 "虚拟性 "概念的理解略有不同。我只是没有遇到过需要保留历史记录的情况,因为我总是将虚拟仓位与真实仓位同步,而且暂时还没有关闭同步的可能性(还没有?)
举例说明。
由于虚拟市场中没有头寸,因此不可能用市价订单关闭真实头寸(例如,翻转、市价订单上的巨大滑点)。
价格没有再次触及 Takei,而是向相反的方向移动。这样看来,在虚拟账户的平仓历史中保留一个 take take 是可能的。但价格可能永远不会触及。那么我们应该在什么水平上同步呢?
于是出现了一种始终进行交易的虚拟终端--它有一个信号内核。只有在真实市场上平仓时才需要它。
总的来说,这是一个大课题。我有三个与真实市场同步的虚拟内核:
也就是说,TS 使用正常的交易函数(如 OrderSend()),而我们使用我们的库来覆盖这些函数,从而使用虚拟仓位?
是的,这一原则不需要重写 TS 中的任何内容,因为 TS 不知道自己在哪里交易。它的代码不会因为可以在不同的虚拟或真实环境中交易而被更改。
输入就是一个很好的例子。每个输入参数都要写五六遍。
我对输入进行了重构。示例中的一些代码片段。