关于OnTradeTransaction函数的问题 - 页 4 1234567 新评论 Sergey Chalyshev 2015.02.05 23:38 #31 Mikalas:这是因为交易所没有厨房(只有佣金),而FOREX有数百万的MMM追随者。可能有100美元,但每个人都有!巨大的金钱,有什么好计较的!:)我不明白MetaQuotes )对于外汇交易套件,有一个伟大的MT4终端。 许多外汇套件从不提供通过MT5的访问,他们不需要它,因为他妈的。这么多年来,难道不可能在交易所附近做一个终端吗?如果他们有一个好的终端,他们将有很多客户想提供MT5服务。 Mikhail Filimonov 2015.02.05 23:46 #32 Serj_Che:我不明白MetaQuotes )对于外汇交易套件,有一个伟大的MT4终端。 许多外汇套件从不提供通过MT5的访问,他们不需要它,因为他妈的。这么多年来,难道不可能在交易所附近做一个终端吗?如果我们有一个好的终端,会有很多客户想提供MT5服务。这不是关于MQ,而是关于经纪人。经纪人从客户的交易中获益 - 更多的交易 - 更多的佣金。机器人只会做 "正确的交易",而通过 "手工 "下单,人们会很机器人只会做 "正确 "的交易,而通过下达手单,人们经常会犯错误(我自己也犯过很多次这样的错误)。你被抓住了,你发誓,你以亏损关闭订单,你想把它找回来,你又把它设错了,等等。而经纪人和交易所则得到了佣金 :) 因此,对于交易所,特别是对于经纪人来说,QUIK是祖国。 Vasiliy Sokolov 2015.02.06 07:01 #33 Mikalas:瓦西里,会有答案吗?我不这么认为。我赢了吗? 我今晚会给你一个答案。我现在做不到。 Alexey Viktorov 2015.02.06 10:20 #34 C-4:不要把事情复杂化。在FORTS上交易不一定要使用异步法。首先,请看这篇文章 的第三章:"异步操作的基础知识"。这不多,非常基本,但足以开始学习。那里描述的代码是100%异步的,然而这并不妨碍它在同步模式下工作,而不会得到各种OnTradeTransaction和其他事件。解决方案必须以你的任务为基础。在MetaTrader 5中,你在任何时候都只有一个活动头寸,这就是你需要监控的。没有必要查看订单历史。如果你仍然需要订单历史,你应该澄清你的目标。不,瓦西里,你还没有完全理解我的目的。我不打算在FORTS上写任何东西或交易,我刚刚开始学习mql5。我早些时候开始阅读这篇文章。但我看了不超过2页就放弃了。我想我不需要,我自己是个NT。但清楚地解释OrderSend和OrderSendAsync的区别是很有用的。这几乎是我所期望的。如果我们跳过异步订单提交,使用OnTradeTransaction来跟踪账户中发生的事情,这难道不会提高EA的性能吗?在每次打勾时进行检查是一回事,而只有在账户中出现一些变化时才进行检查又是另一回事。我错了吗?待定订单已被激活,我们有相关信息。一个位置被关闭,我们可以分析其关闭的结果。从开仓到平仓的这段时间里,只有几次检查。而与此相反,每一次打勾都有检查...这里还有一个问题:要确定一个头寸的利润,有PositionGetDouble(POSITION_PROFIT) 函数,但要确定一个平仓的利润,只有 OrderCalcProfit()有一堆的参数,必须先从这个交易中获得。或者是我对mql5太陌生了,以至于我找不到合适的解决方案?如果你不介意的话... Mikhail Filimonov 2015.02.07 01:25 #35 AlexeyVik:不,瓦西里,你误解了我的目标。我还不打算在FORTS上写东西或交易,我刚刚开始学习mql5。我早些时候开始阅读这篇文章。但我看了不超过2页就放弃了。我想我不需要,我自己是个NT。但清楚地解释OrderSend和OrderSendAsync的区别是很有用的。这几乎是我所期望的。如果我们摒弃异步订单提交,仍然使用OnTradeTransaction来跟踪账户中发生的事情,难道不会提高EA的性能吗?在每次打勾时进行检查是一回事,而只有在账户有一些变化时才检查是另一回事。我错了吗?待定订单已被激活,我们有相关信息。一个位置被关闭,我们可以分析其关闭的结果。从开仓到平仓的这段时间里,只有少数检查。而与此相反,每一次打勾都有检查...这里还有一个问题:要确定一个头寸的利润,有PositionGetDouble(POSITION_PROFIT) 函数,但要确定一个平仓的利润,只有 OrderCalcProfit()有一堆的参数,必须先从这个交易中获得。或者是我对mql5太陌生了,以至于我找不到合适的解决方案?如果不是太麻烦的话...OrderCalcProfit不会有帮助。你必须计算所有订单的平均价格(进)和所有订单的平均价格(出)。则可以计算出平仓的 利润。我们将不得不翻阅历史。 Alexey Viktorov 2015.02.07 08:01 #36 Mikalas:OrderCalcProfit不会有帮助。你需要计算所有订单的平均价格(进)和所有订单的平均价格(出)。然后我们可以计算出平仓的 利润。我们将不得不调查历史。原则上,我理解它(尽管我还不明白如何去做),但在这种情况下,只有最后关闭的位置对我来说是重要的。显然,这更适合于该职位被填补时的情况。但我的任务是不同的。我决定用martin重写我的mql5猫头鹰。它在市场上不断地进行交易,并在最后一个位置打开下一个交易...哎呀...这就是在论坛上交流的作用。毕竟,如果该头寸只能在挂单激活时反转,或在获利时平仓,我就不关心盈亏的大小。好吧,如果最后一个膝盖会给出一个减分,那么你就不需要什么了...只要知道平仓的类型就够了......这可以写入OnTradeTransaction处理程序中的全局变量,交易类型为TRADE_TRANSACTION_DEAL_ADD,交易类型为 TRADE_TRANSACTION_HISTORY_ADD,或者只要 PositionsTotal为零,就把系列的下一个第一订单放进去......我为自己写下了这句话,以免忘记它:))) Denis Kirichenko 2015.02.07 11:11 #37 papaklass:...也就是说,你的算法的逻辑应该是基于交易环境的变化,而不是基于 任何函数或事件的处理。3 检查交易环境的频率(在tick上,在bar上,在定时器上,等等)必须与你的TS的逻辑相对应。也就是说,应该如何快速处理交易环境的变化?如果你的TS的逻辑要求尽快处理变化,那么你就不能避免在每次打勾时检查它......。如果 你的EA是多币种的呢? Alexey Viktorov 2015.02.07 11:12 #38 papaklass:1.OrderSendAsync()函数 用于需要一次性发送多个订单的情况下,这是一种批量发送。在批量发送的情况下,如果你等待服务器对每个订单作出反应(使用OrderSend()函数),那么在发送整个批次的过程中会有一个明显的总时间滞后。在这个时间滞后期间,市场可能会发生重大变化!为了避免这种时间滞后,我们引入了OrderSendAsync()函数。你应该清楚地了解这一点。 如果你不需要发送批量订单,那么使用OrderSendAsync()函数就没有意义。确定一个订单、指令等是否被触发的最可靠方法是监控你的交易环境。- 是跟踪你的交易环境,而不是任何功能或事件的触发。一个功能或事件可以发挥作用,但这不一定能改变你的交易环境。 为什么?因为错误可能只是发生在函数的执行过程中。 因此,你的算法的逻辑必须基于变量的变化,而不是基于任何函数或事件的处理。3. 检查交易环境的频率(在tick上,在bar上,通过计时器,等等)必须符合你的TS的逻辑。也就是说,需要多快地处理交易环境的变化? 如果你的TS的逻辑要求尽快处理一个变化,那么你就不能避免在每一次打勾时检查它。 亚历山大,感谢你的反馈。我理解它只是为了理解我到目前为止不需要它。目前,OrderSend功能对我来说已经足够了。2.是的,我同意最准确的状态只能通过监测整个环境的每一个刻度来确定。但有这样一个事件处理程序来忽略它...嗯,我只是在做实验。我完全理解你想帮助我使它在某种程度上更可靠的愿望,但我的目标是不同的。我并不急于需要这个专家顾问,我也不是为了订货而写。3.也许在EA的最终版本中,我将回到对每个tick进行测试,但现在...问题是,如果文档警告我们不要这样做,我们是否可以相信OnTradeTransaction事件处理程序? 另外,交易在从服务器到终端的传递过程中可能会丢失。而在哪些情况下,最好不要相信,在哪些情况下,你需要用一些东西来支持它。我非常感谢大家,瓦西里、迈克尔和你亚历山大。如果你能分享更多的想法,我将非常高兴并再次感谢你。 Alexey Viktorov 2015.02.07 12:50 #39 papaklass:这正是瓦西里和我本人都回答过的问题。想一想,如果OnTradeTransaction()函数 的工作必须全部检查,那么立即检查交易环境可能比在OnTradeTransaction()处理后检查更好。然而,这是一个品味的问题。而在下一个主题中,Renat承诺将与该功能一起工作,也许在下一个版本中,我们会得到这个功能的改进。但是,我们仍然专注于异步下单。在这种情况下,我们没有理由在数百个订单中失去一个。而米哈伊尔却说,在六个月里,面对数量惊人的订单,他没有损失过一笔交易。而如果使用OrderSend()函数下单,损失交易的概率是多少?而如果改进即将到来,这又是一个值得关注的理由。还是我又错了? Denis Kirichenko 2015.02.07 13:32 #40 denkir: А если советник мультивалютный?纸杯。我不清楚你想让我说什么。 反对事件模型 的论点... 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是因为交易所没有厨房(只有佣金),而FOREX有数百万的MMM追随者。
可能有100美元,但每个人都有!巨大的金钱,有什么好计较的!:)
我不明白MetaQuotes )
对于外汇交易套件,有一个伟大的MT4终端。
许多外汇套件从不提供通过MT5的访问,他们不需要它,因为他妈的。
这么多年来,难道不可能在交易所附近做一个终端吗?
如果他们有一个好的终端,他们将有很多客户想提供MT5服务。
我不明白MetaQuotes )
对于外汇交易套件,有一个伟大的MT4终端。
许多外汇套件从不提供通过MT5的访问,他们不需要它,因为他妈的。
这么多年来,难道不可能在交易所附近做一个终端吗?
如果我们有一个好的终端,会有很多客户想提供MT5服务。
这不是关于MQ,而是关于经纪人。
经纪人从客户的交易中获益 - 更多的交易 - 更多的佣金。
机器人只会做 "正确的交易",而通过 "手工 "下单,人们会很
机器人只会做 "正确 "的交易,而通过下达手单,人们经常会犯错误(我自己也犯过很多次这样的错误)。
你被抓住了,你发誓,你以亏损关闭订单,你想把它找回来,你又把它设错了,等等。
而经纪人和交易所则得到了佣金 :)
因此,对于交易所,特别是对于经纪人来说,QUIK是祖国。
瓦西里,会有答案吗?
我不这么认为。
我赢了吗?
不要把事情复杂化。在FORTS上交易不一定要使用异步法。首先,请看这篇文章 的第三章:"异步操作的基础知识"。这不多,非常基本,但足以开始学习。那里描述的代码是100%异步的,然而这并不妨碍它在同步模式下工作,而不会得到各种OnTradeTransaction和其他事件。
解决方案必须以你的任务为基础。在MetaTrader 5中,你在任何时候都只有一个活动头寸,这就是你需要监控的。没有必要查看订单历史。如果你仍然需要订单历史,你应该澄清你的目标。
不,瓦西里,你还没有完全理解我的目的。我不打算在FORTS上写任何东西或交易,我刚刚开始学习mql5。我早些时候开始阅读这篇文章。但我看了不超过2页就放弃了。我想我不需要,我自己是个NT。但清楚地解释OrderSend和OrderSendAsync的区别是很有用的。这几乎是我所期望的。
如果我们跳过异步订单提交,使用OnTradeTransaction来跟踪账户中发生的事情,这难道不会提高EA的性能吗?
在每次打勾时进行检查是一回事,而只有在账户中出现一些变化时才进行检查又是另一回事。我错了吗?待定订单已被激活,我们有相关信息。一个位置被关闭,我们可以分析其关闭的结果。从开仓到平仓的这段时间里,只有几次检查。而与此相反,每一次打勾都有检查...
这里还有一个问题:要确定一个头寸的利润,有PositionGetDouble(POSITION_PROFIT) 函数,但要确定一个平仓的利润,只有 OrderCalcProfit()有一堆的参数,必须先从这个交易中获得。或者是我对mql5太陌生了,以至于我找不到合适的解决方案?
如果你不介意的话...
不,瓦西里,你误解了我的目标。我还不打算在FORTS上写东西或交易,我刚刚开始学习mql5。我早些时候开始阅读这篇文章。但我看了不超过2页就放弃了。我想我不需要,我自己是个NT。但清楚地解释OrderSend和OrderSendAsync的区别是很有用的。这几乎是我所期望的。
如果我们摒弃异步订单提交,仍然使用OnTradeTransaction来跟踪账户中发生的事情,难道不会提高EA的性能吗?
在每次打勾时进行检查是一回事,而只有在账户有一些变化时才检查是另一回事。我错了吗?待定订单已被激活,我们有相关信息。一个位置被关闭,我们可以分析其关闭的结果。从开仓到平仓的这段时间里,只有少数检查。而与此相反,每一次打勾都有检查...
这里还有一个问题:要确定一个头寸的利润,有PositionGetDouble(POSITION_PROFIT) 函数,但要确定一个平仓的利润,只有 OrderCalcProfit()有一堆的参数,必须先从这个交易中获得。或者是我对mql5太陌生了,以至于我找不到合适的解决方案?
如果不是太麻烦的话...
OrderCalcProfit不会有帮助。
你必须计算所有订单的平均价格(进)和所有订单的平均价格(出)。
则可以计算出平仓的 利润。
我们将不得不翻阅历史。
OrderCalcProfit不会有帮助。
你需要计算所有订单的平均价格(进)和所有订单的平均价格(出)。
然后我们可以计算出平仓的 利润。
我们将不得不调查历史。
原则上,我理解它(尽管我还不明白如何去做),但在这种情况下,只有最后关闭的位置对我来说是重要的。显然,这更适合于该职位被填补时的情况。但我的任务是不同的。
我决定用martin重写我的mql5猫头鹰。它在市场上不断地进行交易,并在最后一个位置打开下一个交易...
哎呀...这就是在论坛上交流的作用。毕竟,如果该头寸只能在挂单激活时反转,或在获利时平仓,我就不关心盈亏的大小。好吧,如果最后一个膝盖会给出一个减分,那么你就不需要什么了...只要知道平仓的类型就够了......这可以写入OnTradeTransaction处理程序中的全局变量,交易类型为TRADE_TRANSACTION_DEAL_ADD,交易类型为 TRADE_TRANSACTION_HISTORY_ADD,或者只要 PositionsTotal为零,就把系列的下一个第一订单放进去......我为自己写下了这句话,以免忘记它:)))
...也就是说,你的算法的逻辑应该是基于交易环境的变化,而不是基于 任何函数或事件的处理。
3 检查交易环境的频率(在tick上,在bar上,在定时器上,等等)必须与你的TS的逻辑相对应。也就是说,应该如何快速处理交易环境的变化?如果你的TS的逻辑要求尽快处理变化,那么你就不能避免在每次打勾时检查它......。
1.OrderSendAsync()函数 用于需要一次性发送多个订单的情况下,这是一种批量发送。在批量发送的情况下,如果你等待服务器对每个订单作出反应(使用OrderSend()函数),那么在发送整个批次的过程中会有一个明显的总时间滞后。在这个时间滞后期间,市场可能会发生重大变化!为了避免这种时间滞后,我们引入了OrderSendAsync()函数。你应该清楚地了解这一点。
如果你不需要发送批量订单,那么使用OrderSendAsync()函数就没有意义。
确定一个订单、指令等是否被触发的最可靠方法是监控你的交易环境。- 是跟踪你的交易环境,而不是任何功能或事件的触发。一个功能或事件可以发挥作用,但这不一定能改变你的交易环境。 为什么?因为错误可能只是发生在函数的执行过程中。
因此,你的算法的逻辑必须基于变量的变化,而不是基于任何函数或事件的处理。
3. 检查交易环境的频率(在tick上,在bar上,通过计时器,等等)必须符合你的TS的逻辑。也就是说,需要多快地处理交易环境的变化? 如果你的TS的逻辑要求尽快处理一个变化,那么你就不能避免在每一次打勾时检查它。
亚历山大,感谢你的反馈。
我理解它只是为了理解我到目前为止不需要它。目前,OrderSend功能对我来说已经足够了。
2.是的,我同意最准确的状态只能通过监测整个环境的每一个刻度来确定。但有这样一个事件处理程序来忽略它...嗯,我只是在做实验。我完全理解你想帮助我使它在某种程度上更可靠的愿望,但我的目标是不同的。我并不急于需要这个专家顾问,我也不是为了订货而写。
3.也许在EA的最终版本中,我将回到对每个tick进行测试,但现在...
问题是,如果文档警告我们不要这样做,我们是否可以相信OnTradeTransaction事件处理程序?
另外,交易在从服务器到终端的传递过程中可能会丢失。
而在哪些情况下,最好不要相信,在哪些情况下,你需要用一些东西来支持它。
我非常感谢大家,瓦西里、迈克尔和你亚历山大。如果你能分享更多的想法,我将非常高兴并再次感谢你。
这正是瓦西里和我本人都回答过的问题。
想一想,如果OnTradeTransaction()函数 的工作必须全部检查,那么立即检查交易环境可能比在OnTradeTransaction()处理后检查更好。然而,这是一个品味的问题。
而在下一个主题中,Renat承诺将与该功能一起工作,也许在下一个版本中,我们会得到这个功能的改进。
但是,我们仍然专注于异步下单。在这种情况下,我们没有理由在数百个订单中失去一个。而米哈伊尔却说,在六个月里,面对数量惊人的订单,他没有损失过一笔交易。而如果使用OrderSend()函数下单,损失交易的概率是多少?
而如果改进即将到来,这又是一个值得关注的理由。还是我又错了?
А если советник мультивалютный?
纸杯。
我不清楚你想让我说什么。