伟大而可怕的MT4永远(或如何制定过渡策略) - 页 25 1...1819202122232425262728293031 新评论 fxsaber 2021.05.11 16:57 #241 Igor Makanu:在PM已经放弃了服务器 这个服务器(或者说经纪人的软件)有垃圾邮件保护。他们计划在下周之前进行更新,然后减速的情况就会消失。 Andrey Khatimlianskii 2021.05.11 19:42 #242 fxsaber:我们必须看一下这个服务器。不妨看看这里建议的拐杖,对谁来说,这似乎很重要。我讨厌在一段时间后再来讨论这个话题。如果有的话,最好能指出错误。 目前还没有MT4风格的选项? 只要运行脚本在不同的服务器上开100个仓位? fxsaber 2021.05.11 20:29 #243 Andrey Khatimlianskii:还没有MT4风格的选项? 还没有开始。最有可能的是,用户不会改变代码中的任何内容。额外的功能将通过一个宏来激活。 只要运行脚本在不同的服务器上开100个仓位? 是的,在不同的服务器上,但只是一个不同的脚本。如果在运行的一分钟内没有发生翻倍,那么它就成功通过了检查。否则--失败。 Библиотеки: TradesID 2021.03.29www.mql5.com Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TradesID fxsaber 2021.05.12 19:59 #244 fxsaber:还没有开始。最有可能的是,用户不会改变代码中的任何内容。额外的功能将通过一个宏来激活。 明白了。 Библиотеки: MT4Orders 2021.02.09www.mql5.com MT4Orders: Автор: fxsaber... fxsaber 2021.05.13 07:18 #245 它是。 关于交易、自动交易系统和交易策略测试的论坛 伟大而可怕的MT4永远(或如何建立一个聪明的迁移策略) fxsaber, 2021.05.11 09:05 无需等待职位--立即有结果。 #include <fxsaber\TradesID\ByPass.mqh> #include <MT4Orders.mqh> #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { BYPASS ByPass; MT4ORDERS::OrderSend_MaxPause = 0; // Запрет на ожидание позиции после OrderSend while (OrdersTotal() < 30) if (ByPass.Is()) ByPass += OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, 0); Print(OrdersTotal()); } 它确实如此。 #define MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в мкс.) на ожидание синхронизации торгового окружения #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { MT4ORDERS::OrderSend_MaxPause = 0; // Запрет на ожидание позиции после OrderSend while (OrdersTotal() < 30) OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, 0); Print(OrdersTotal()); } 现在与MT4变体没有区别,包括可靠性。 任何在MT5中很难写的例子都变得很容易实现,因为它们应该是这样。 mktr8591 2021.05.13 13:57 #246 关于交易、自动交易系统和交易策略测试的论坛 伟大而可怕的MT4永远(或如何建立你的迁移策略) Igor Makanu, 2021.05.10 10:28 它似乎是有效的。 #include <Trade\Trade.mqh> void OnStart() { CTrade Trade; while(PositionsTotal() < 10) { if(OrdersTotal() > 0) continue; if(!Trade.Buy(0.01)) continue; if(OrdersTotal() == 0 && PositionsTotal() >= 10) return; } } 但非常缓慢,而且解决方案也很一般。 如果在开出第10个仓位的订单后,在下一次迭代中,会发生什么? while(PositionsTotal() < 10) PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。 在这种情况下,是否会有另一个Trade.Buy()? 理论上,它可能连续发生几次? 还是我错过了什么? Fast235 2021.05.13 15:11 #247 mktr8591: 如果在打开第10个仓位的订单后,在下一次迭代中,会发生什么? PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。在这种情况下,是否会有另一个Trade.Buy()?理论上,它可能连续发生几次?还是我错过了什么?这是他的高频利益,其他的有足够的时间,再来一次也没有问题。 我确信这就是MT4的构建方式,拭目以待吧 fxsaber 2021.05.13 19:37 #248 mktr8591: 如果在打开第10个仓位的订单后,在下一次迭代中,会发生什么? PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。在这种情况下,还会有一个Trade.Buy()吗? 当然,这将是。代码中的推理是完全一样的。 理论上,它可能会重复几个连续的迭代? 如果买入为真,那么下一次迭代中OrdersTotal() == 0的概率几乎为零。也就是说,开设12个职位在实践中是不可能的。 这是一个非常原始的案例。一个复式分录通常看起来像这样。 限价订单总数=1,头寸总数=0。 限制器被执行。订单总数=0,职位总数=0。 职位已经开放。订单总数=0,职位总数=1。 在第二步,专家顾问看到没有任何东西,并设置了一个限制。因此,我们有两个空缺职位。 第二点是MT5的超调。而现在,这根拐杖绕过了它。 mktr8591 2021.05.14 12:16 #249 谢谢你。关于这一点。fxsaber: 翻倍并不是MT5的困难,而是一个架构上的错误,当Total()函数显示假阳性时。 你可以说这是一个错误,或者你可以用不同的方式来表述它 :-)PositionsTotal()不是 未结头寸的数量,而是未结头寸表的大小。仓位表--实际上是一个缓存,就像交易历史的 缓存一样,只是它不是按要求更新,而是自动更新,但不是即时的,有一点延迟。正因为如此,它可能不包含已经打开的头寸,或包含已经关闭的头寸。与OrdersTotal()的情况相同。如果我们以这种方式解释帮助,就会减少问题、抱怨和误解。而在 "MetaTrader 5中的订单、头寸和交易 "一文中,你可以注意这一点(现在是模棱两可--"PositionsTotal()函数的结果不取决于头寸缓存是否已满--它总是返回基础终端中所有符号的实际开仓数量")。 P.S. 但是,一个合理的问题出现了--为什么不做一个系统功能/标志来确定实时订单、头寸、交易和已执行订单表的同步状态,这样就不会造成拐杖? fxsaber 2021.05.14 18:06 #250 mktr8591:P.S.但是,一个合理的问题出现了--为什么不做一个系统fi/flag来确定 实时订单、头寸、交易和已执行订单表的同步状态,这样就不会产生拐杖? 最有可能的是,里面没有这样的旗帜。 1...1819202122232425262728293031 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在PM已经放弃了服务器
这个服务器(或者说经纪人的软件)有垃圾邮件保护。他们计划在下周之前进行更新,然后减速的情况就会消失。
我们必须看一下这个服务器。不妨看看这里建议的拐杖,对谁来说,这似乎很重要。
我讨厌在一段时间后再来讨论这个话题。如果有的话,最好能指出错误。
目前还没有MT4风格的选项?
只要运行脚本在不同的服务器上开100个仓位?
还没有MT4风格的选项?
还没有开始。最有可能的是,用户不会改变代码中的任何内容。额外的功能将通过一个宏来激活。
只要运行脚本在不同的服务器上开100个仓位?
是的,在不同的服务器上,但只是一个不同的脚本。如果在运行的一分钟内没有发生翻倍,那么它就成功通过了检查。否则--失败。
还没有开始。最有可能的是,用户不会改变代码中的任何内容。额外的功能将通过一个宏来激活。
明白了。
它是。
关于交易、自动交易系统和交易策略测试的论坛
伟大而可怕的MT4永远(或如何建立一个聪明的迁移策略)
fxsaber, 2021.05.11 09:05
无需等待职位--立即有结果。
它确实如此。
现在与MT4变体没有区别,包括可靠性。
任何在MT5中很难写的例子都变得很容易实现,因为它们应该是这样。
关于交易、自动交易系统和交易策略测试的论坛
伟大而可怕的MT4永远(或如何建立你的迁移策略)
Igor Makanu, 2021.05.10 10:28
它似乎是有效的。
但非常缓慢,而且解决方案也很一般。
如果在开出第10个仓位的订单后,在下一次迭代中,会发生什么?
PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。
在这种情况下,是否会有另一个Trade.Buy()?
理论上,它可能连续发生几次?
还是我错过了什么?
如果在打开第10个仓位的订单后,在下一次迭代中,会发生什么?
PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。
在这种情况下,是否会有另一个Trade.Buy()?
理论上,它可能连续发生几次?
还是我错过了什么?
这是他的高频利益,其他的有足够的时间,再来一次也没有问题。
我确信这就是MT4的构建方式,拭目以待吧如果在打开第10个仓位的订单后,在下一次迭代中,会发生什么?
PositionTotal还没有来得及更新(=9),而订单已经成功进入历史,OrdersTotal()==0。
在这种情况下,还会有一个Trade.Buy()吗?
当然,这将是。代码中的推理是完全一样的。
理论上,它可能会重复几个连续的迭代?
如果买入为真,那么下一次迭代中OrdersTotal() == 0的概率几乎为零。也就是说,开设12个职位在实践中是不可能的。
这是一个非常原始的案例。一个复式分录通常看起来像这样。
在第二步,专家顾问看到没有任何东西,并设置了一个限制。因此,我们有两个空缺职位。
第二点是MT5的超调。而现在,这根拐杖绕过了它。
谢谢你。
关于这一点。
fxsaber:
翻倍并不是MT5的困难,而是一个架构上的错误,当Total()函数显示假阳性时。你可以说这是一个错误,或者你可以用不同的方式来表述它 :-)
PositionsTotal()不是 未结头寸的数量,而是未结头寸表的大小。仓位表--实际上是一个缓存,就像交易历史的 缓存一样,只是它不是按要求更新,而是自动更新,但不是即时的,有一点延迟。正因为如此,它可能不包含已经打开的头寸,或包含已经关闭的头寸。
与OrdersTotal()的情况相同。
如果我们以这种方式解释帮助,就会减少问题、抱怨和误解。
而在 "MetaTrader 5中的订单、头寸和交易 "一文中,你可以注意这一点(现在是模棱两可--"PositionsTotal()函数的结果不取决于头寸缓存是否已满--它总是返回基础终端中所有符号的实际开仓数量")。
P.S. 但是,一个合理的问题出现了--为什么不做一个系统功能/标志来确定实时订单、头寸、交易和已执行订单表的同步状态,这样就不会造成拐杖?P.S.但是,一个合理的问题出现了--为什么不做一个系统fi/flag来确定 实时订单、头寸、交易和已执行订单表的同步状态,这样就不会产生拐杖?
最有可能的是,里面没有这样的旗帜。