伟大而可怕的MT4永远(或如何制定过渡策略) - 页 11 1...456789101112131415161718...31 新评论 Andrey Khatimlianskii 2021.04.29 22:00 #101 secret: 订单已经事先下好了。价格触动了它,但它后来被执行,价格更差。 不,如果限制的表现更糟糕,那么就去死的经纪人或处理它。 而如果停止,那也很好,因为它是。20-30毫秒是完全可以接受的,如果订单是在其他地方输出的,而不仅仅是由一个插件检查。 而那里有多少虱子--这根本不重要。 Andrey Khatimlianskii 2021.04.29 22:01 #102 Andrei Trukhanovich:如果佣金是以美元计算的,与美元数量有什么关系? 奇怪的是,账户的货币也受到影响。显然,这不是当前的汇率,而是一个固定汇率。加上四舍五入,如果地段小的话。 fxsaber 2021.05.03 10:48 #103 我不得不自己去寻找一些东西,一个非常容易复制的例子就这样诞生了,它显示了用订单工作是多么容易。 因此,让我们想象一下,我们运行一个以经典的OnTick模式运行的EA。由于OnTick可能发生在终端环境状态下的任何时间,所以看看EA可能看到的情况会很有趣。因此,专家顾问onTick可能遇到的状态被挑选出来如下。 #define TOSTRING(A) #A + " = " + (string)(A) + " " void OnTradeTransaction( const MqlTradeTransaction&, const MqlTradeRequest&, const MqlTradeResult& ) { static int i = 0; Print(i++); if (HistorySelect(0, INT_MAX)) Print(TOSTRING(PositionsTotal()) + TOSTRING(OrdersTotal()) + TOSTRING(HistoryDealsTotal()) + TOSTRING(HistoryOrdersTotal())); Print("----------------"); } 这段代码只是简单地打印出当前有多少头寸/订单,以及有多少已成交的交易/订单。 我们运行它,只是手动开仓和平仓。没有别的了。我有以下的打印结果(它可能会因运行而改变)。 // Открываем позицию руками. 0 PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 1 PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 2 PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 3 PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 4 PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 5 // Открывающий позицию ордер исчез полностью - нет среди живых и мертвых. PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 25 ---------------- 6 // Открылась позиция, но нет соответствующей ей сделки. PositionsTotal() = 1 OrdersTotal() = 0 HistoryDealsTotal() = 25 HistoryOrdersTotal() = 26 ---------------- 7 PositionsTotal() = 1 OrdersTotal() = 0 HistoryDealsTotal() = 26 HistoryOrdersTotal() = 26 ---------------- // Закрываем позицию руками. 8 // Позиция и закрывающий ее ордер. PositionsTotal() = 1 OrdersTotal() = 1 HistoryDealsTotal() = 26 HistoryOrdersTotal() = 26 ---------------- 9 PositionsTotal() = 1 OrdersTotal() = 1 HistoryDealsTotal() = 26 HistoryOrdersTotal() = 26 ---------------- 10 PositionsTotal() = 1 OrdersTotal() = 1 HistoryDealsTotal() = 26 HistoryOrdersTotal() = 26 ---------------- 11 PositionsTotal() = 1 OrdersTotal() = 1 HistoryDealsTotal() = 26 HistoryOrdersTotal() = 26 ---------------- 12 // Позиция закрыта, но закрывающий ее ордер продолжает висеть. PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 27 HistoryOrdersTotal() = 26 ---------------- 13 // Закрывающий позицию ордер полностью исчез - нет среди мертвых/живых. PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 27 HistoryOrdersTotal() = 26 ---------------- 14 PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 27 HistoryOrdersTotal() = 26 ---------------- 15 PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 27 HistoryOrdersTotal() = 27 ---------------- 因此,OnTick专家顾问可以遇到这16种情况中的任何一种,一些有趣的情况我在上面评论过。 我不是故意要捡一个例子的。刚刚运行了它并公布了结果。发射也可以给出其他有趣的变体。 我能够对结果进行评论,因为我清楚地知道我在做什么(我打开一个单一的位置,然后用手关闭它)。 对于不知道的专家顾问来说,感觉如何呢?让我们想象一下,有几个专家顾问在账户上并行工作。我认为,对上述情况的共生所产生的混乱进行分析的难易程度是显而易见的。 附上一个简明的代码,任何人都可以复制它。 Alexey Viktorov 2021.05.03 16:45 #104 fxsaber:我不得不自己去寻找一些东西,一个非常容易复制的例子就这样诞生了,它显示了用订单工作是多么容易。因此,让我们想象一下,我们运行一个以经典的OnTick模式运行的EA。由于OnTick可能发生在终端环境状态下的任何时间,所以看看EA可能看到的情况会很有趣。因此,专家顾问onTick可能遇到的状态被挑选出来如下。这段代码只是简单地打印出当前有多少头寸/订单,以及有多少已成交的交易/订单。我们运行它,只是手动开仓和平仓。没有别的了。我有以下的打印结果(它可能会因运行而改变)。因此,OnTick专家顾问可以遇到这16种情况中的任何一种,一些有趣的情况我在上面评论过。我不是故意要捡一个例子的。刚刚运行了它并公布了结果。发射也可以给出其他有趣的变体。我能够对结果进行评论,因为我清楚地知道我在做什么(我打开一个单一的位置,然后用手关闭它)。对于不知道的专家顾问来说,感觉如何呢?让我们想象一下,有几个专家顾问在账户上并行工作。我认为,对上述情况的共生所产生的混乱进行分析的难易程度是显而易见的。附上一个简明的代码,每个人都可以复制它。 关于交易、自动交易系统和策略测试的论坛 伟大而强大的永远的MT4(或如何创建一个聪明的迁移策略)。 fxsaber, 2021.04.28 21:43 不可能有任何讨论。对材料的了解程度太不同。 你必须了解OnTradeTransaction被调用多少次,以及你在什么时候能得到什么。 贸易_交易_订单_添加 增加一个新的公开订单。 贸易_交易_订单_更新 修改一个开放的订单。这些变化不仅包括客户终端或交易服务器端的明确变化,还包括下单状态的变化(例如从 ORDER_STATE_STARTED 到ORDER_STATE_PLACED 或从ORDER_STATE_PLACED 到ORDER_STATE_PARTIAL 等等)。 贸易_交易_订单_删除 将订单从未结订单列表中删除。一个订单可以因交易请求或因执行(填补)并转入历史而从未结订单列表中删除。 贸易_交易_交易_添加 在历史上增加一笔交易。这是作为订单执行的结果或作为账户平衡操作的结果进行的。 贸易_交易_交易_更新 在历史上改变了一个交易。当以前执行的交易在服务器上被改变时,就可能出现这种情况。例如,该交易在外部交易系统(交易所)中被改变,在那里被经纪人删除。 贸易_交易_交易_删除 从历史中删除该交易。可能会有这样的情况,以前执行的交易在服务器上被删除。例如,一个交易在外部交易系统(交易所)中被经纪人删除了。 贸易_交易_历史记录_添加 由于执行或取消,将订单添加到历史中。 贸易_交易_历史_更新 修改订单历史中的一个订单。这种类型是为了增加贸易服务器方面的功能。 贸易_交易_历史_删除 从订单历史中删除一个订单。这种类型是为了在贸易服务器方面进行功能扩展。 贸易_交易_位置 改变与交易执行无关的头寸。这种交易类型表明,交易服务器一方的头寸已被改变。仓位的成交量、开盘价、止损和止盈水平可能会被改变。有关变化的信息通过OnTradeTransaction处理程序传递给MqlTradeTransaction 结构。因交易而导致的头寸变化(增加、修改或取消)不会导致TRADE_TRANSACTION_POSITION交易的发生。 交易请求 一个通知,表明服务器已经处理了一个交易请求,并且已经收到了其结果。对于这种类型的交易,有必要只分析一个字段--MqlTradeTransaction 结构中的type(交易类型)。必须分析OnTradeTransaction 函数的第二和第三个参数(请求和结果)以获得额外的信息。 mql5语言的特点、微妙之处以及技巧 fxsaber 2021.05.03 16:51 #105 Alexey Viktorov:你必须弄清楚OnTradeTransaction被调用多少次,以及你在什么时候能得到什么。 我想我已经尽可能说得很清楚了。 关于交易、自动交易系统和交易策略测试的论坛 伟大而可怕的MT4永远(或如何建立迁移策略) fxsaber, 2021.05.03 12:48 因此,OnTick EA可能会遇到这16种情况中的任何一种,即我上面评论的有趣的情况。 Alexey Viktorov 2021.05.03 17:00 #106 fxsaber: 我想我已经尽可能说得很清楚了。 如果你在OnTradeTransaction 中处理这一切,那么OnTick()与它有什么关系? 获取调用OnTradeTransaction的原因,并相应处理此次调用中的内容。 fxsaber 2021.05.03 17:12 #107 Alexey Viktorov:如果你在OnTradeTransaction 中全部处理,那么OnTick()与它有什么关系? 获取调用OnTradeTransaction的原因,并相应处理此次调用的内容。 也许论坛中的某个成员会解释。它对我不起作用。 traveller00 2021.05.03 17:18 #108 Alexey Viktorov:如果你在OnTradeTransaction 中全部处理,那么OnTick()与它有什么关系? 获取调用OnTradeTransaction的原因,并相应地处理该调用中的内容。 在OnTick 中,绝对是所有这些奇怪的东西都到位 了。只是很难用 OnTick做一个容易复制的例子。OnTradeTransaction 被选为一个例子,但它并没有改变本质。 Alexey Viktorov 2021.05.03 17:27 #109 traveller00:OnTick绝对有所有这些奇怪的地方。只是很难用OnTick 做一个容易复制的例子。OnTradeTransaction 被选为一个例子,但它并没有改变 重点。 继续模仿堂吉诃德...... Andrey Khatimlianskii 2021.05.03 19:06 #110 fxsaber: нет среди живых и мертвых 如果能在MT4Orders层面上解决这个问题就更好了。 如今,不幸的是,顺序颠倒的情况时有发生。很可能是因为这个原因。 1...456789101112131415161718...31 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
订单已经事先下好了。价格触动了它,但它后来被执行,价格更差。
不,如果限制的表现更糟糕,那么就去死的经纪人或处理它。
而如果停止,那也很好,因为它是。20-30毫秒是完全可以接受的,如果订单是在其他地方输出的,而不仅仅是由一个插件检查。
而那里有多少虱子--这根本不重要。
如果佣金是以美元计算的,与美元数量有什么关系?
奇怪的是,账户的货币也受到影响。显然,这不是当前的汇率,而是一个固定汇率。加上四舍五入,如果地段小的话。
我不得不自己去寻找一些东西,一个非常容易复制的例子就这样诞生了,它显示了用订单工作是多么容易。
因此,让我们想象一下,我们运行一个以经典的OnTick模式运行的EA。由于OnTick可能发生在终端环境状态下的任何时间,所以看看EA可能看到的情况会很有趣。因此,专家顾问onTick可能遇到的状态被挑选出来如下。
这段代码只是简单地打印出当前有多少头寸/订单,以及有多少已成交的交易/订单。
我们运行它,只是手动开仓和平仓。没有别的了。我有以下的打印结果(它可能会因运行而改变)。
因此,OnTick专家顾问可以遇到这16种情况中的任何一种,一些有趣的情况我在上面评论过。
我不是故意要捡一个例子的。刚刚运行了它并公布了结果。发射也可以给出其他有趣的变体。
我能够对结果进行评论,因为我清楚地知道我在做什么(我打开一个单一的位置,然后用手关闭它)。
对于不知道的专家顾问来说,感觉如何呢?让我们想象一下,有几个专家顾问在账户上并行工作。我认为,对上述情况的共生所产生的混乱进行分析的难易程度是显而易见的。
附上一个简明的代码,任何人都可以复制它。
我不得不自己去寻找一些东西,一个非常容易复制的例子就这样诞生了,它显示了用订单工作是多么容易。
因此,让我们想象一下,我们运行一个以经典的OnTick模式运行的EA。由于OnTick可能发生在终端环境状态下的任何时间,所以看看EA可能看到的情况会很有趣。因此,专家顾问onTick可能遇到的状态被挑选出来如下。
这段代码只是简单地打印出当前有多少头寸/订单,以及有多少已成交的交易/订单。
我们运行它,只是手动开仓和平仓。没有别的了。我有以下的打印结果(它可能会因运行而改变)。
因此,OnTick专家顾问可以遇到这16种情况中的任何一种,一些有趣的情况我在上面评论过。
我不是故意要捡一个例子的。刚刚运行了它并公布了结果。发射也可以给出其他有趣的变体。
我能够对结果进行评论,因为我清楚地知道我在做什么(我打开一个单一的位置,然后用手关闭它)。
对于不知道的专家顾问来说,感觉如何呢?让我们想象一下,有几个专家顾问在账户上并行工作。我认为,对上述情况的共生所产生的混乱进行分析的难易程度是显而易见的。
附上一个简明的代码,每个人都可以复制它。
关于交易、自动交易系统和策略测试的论坛
伟大而强大的永远的MT4(或如何创建一个聪明的迁移策略)。
fxsaber, 2021.04.28 21:43
不可能有任何讨论。对材料的了解程度太不同。
你必须了解OnTradeTransaction被调用多少次,以及你在什么时候能得到什么。
贸易_交易_订单_添加
增加一个新的公开订单。
贸易_交易_订单_更新
修改一个开放的订单。这些变化不仅包括客户终端或交易服务器端的明确变化,还包括下单状态的变化(例如从 ORDER_STATE_STARTED 到ORDER_STATE_PLACED 或从ORDER_STATE_PLACED 到ORDER_STATE_PARTIAL 等等)。
贸易_交易_订单_删除
将订单从未结订单列表中删除。一个订单可以因交易请求或因执行(填补)并转入历史而从未结订单列表中删除。
贸易_交易_交易_添加
在历史上增加一笔交易。这是作为订单执行的结果或作为账户平衡操作的结果进行的。
贸易_交易_交易_更新
在历史上改变了一个交易。当以前执行的交易在服务器上被改变时,就可能出现这种情况。例如,该交易在外部交易系统(交易所)中被改变,在那里被经纪人删除。
贸易_交易_交易_删除
从历史中删除该交易。可能会有这样的情况,以前执行的交易在服务器上被删除。例如,一个交易在外部交易系统(交易所)中被经纪人删除了。
贸易_交易_历史记录_添加
由于执行或取消,将订单添加到历史中。
贸易_交易_历史_更新
修改订单历史中的一个订单。这种类型是为了增加贸易服务器方面的功能。
贸易_交易_历史_删除
从订单历史中删除一个订单。这种类型是为了在贸易服务器方面进行功能扩展。
贸易_交易_位置
改变与交易执行无关的头寸。这种交易类型表明,交易服务器一方的头寸已被改变。仓位的成交量、开盘价、止损和止盈水平可能会被改变。有关变化的信息通过OnTradeTransaction处理程序传递给MqlTradeTransaction 结构。因交易而导致的头寸变化(增加、修改或取消)不会导致TRADE_TRANSACTION_POSITION交易的发生。
交易请求
一个通知,表明服务器已经处理了一个交易请求,并且已经收到了其结果。对于这种类型的交易,有必要只分析一个字段--MqlTradeTransaction 结构中的type(交易类型)。必须分析OnTradeTransaction 函数的第二和第三个参数(请求和结果)以获得额外的信息。
你必须弄清楚OnTradeTransaction被调用多少次,以及你在什么时候能得到什么。
关于交易、自动交易系统和交易策略测试的论坛
伟大而可怕的MT4永远(或如何建立迁移策略)
fxsaber, 2021.05.03 12:48
因此,OnTick EA可能会遇到这16种情况中的任何一种,即我上面评论的有趣的情况。
我想我已经尽可能说得很清楚了。
如果你在OnTradeTransaction 中处理这一切,那么OnTick()与它有什么关系?
获取调用OnTradeTransaction的原因,并相应处理此次调用中的内容。如果你在OnTradeTransaction 中全部处理,那么OnTick()与它有什么关系?
获取调用OnTradeTransaction的原因,并相应处理此次调用的内容。也许论坛中的某个成员会解释。它对我不起作用。
如果你在OnTradeTransaction 中全部处理,那么OnTick()与它有什么关系?
获取调用OnTradeTransaction的原因,并相应地处理该调用中的内容。在OnTick 中,绝对是所有这些奇怪的东西都到位 了。只是很难用 OnTick做一个容易复制的例子。OnTradeTransaction 被选为一个例子,但它并没有改变本质。
OnTick绝对有所有这些奇怪的地方。只是很难用OnTick 做一个容易复制的例子。OnTradeTransaction 被选为一个例子,但它并没有改变 重点。
继续模仿堂吉诃德......
нет среди живых и мертвых
如果能在MT4Orders层面上解决这个问题就更好了。
如今,不幸的是,顺序颠倒的情况时有发生。很可能是因为这个原因。