贸易交易时 - 页 2 123456789 新评论 Vasiliy Sokolov 2015.10.20 10:45 #11 Игорь Герасько:一方面,是的。另一方面:如果请求已经被发送到服务器,但操作还没有被执行,怎么办?如果我们只有一个订单和头寸的清单(以及账户历史),我们怎么能知道我们在哪里?在MT4中没有这样的问题,因为那里所有的交易操作都是同步的。但结果是我们得到了更慢的性能。异步操作比同步操作快的事实是一个神话,它来自对事情的无知。异步操作有一个完整的进行交易行为的周期,分为几个部分,而同步操作只有一个周期。异步操作也需要服务器的响应,在交换上的执行是相同的,也就是说,异步和同步操作所需的总时间几乎相同。异步订单的优点是可以同时发送,即有可能在几乎同一时间发送两个或多个订单。这就是使其有可能实现高速运行的原因(总的来说)。不是每个专家顾问都需要异步发送模式。首先,对于各种需要同时买入两个或更多工具的套利交易者,或HFT算法,都需要它。例如,HFT机器人可能会发送一个入市 订单,在3-4毫秒内,它可能会发送相反的订单,在这种情况下,等待服务器对第一个订单的回复时间太长,所以它需要异步发送模式--无需等待结果。在绝大多数的EA中,这样的速度是没有必要的。 Mikhail Filimonov 2015.10.20 14:42 #12 Vasiliy Sokolov: 你也不知道怎么做。你已经写了几十页关于OnTradeTransaction的文章,但还没有理解一件事:OnTradeTransaction是一个解决特定任务的服务功能,你不能像你那样在交易中使用它。然后聪明的人读了你的文章,创造了类似的主题:"为什么OnTradeTransaction没有保证?" - 因为专家顾问不应该像你那样通过OnTradeTransaction创造其交易环境,而只依靠系统中的内容,特别是订单 和交易历史。而这正是奥斯塔普出错的地方....如果你对我有私人恩怨,没有必要把它带到讨论中来你 "非常擅长 "的技术问题的...是你用你的逼迫性的戏剧性来误导人们! Vasiliy Sokolov 2015.10.20 15:09 #13 Михаил:而这正是奥斯塔普得到它的地方....如果你对我有私人恩怨,没有必要把它带到讨论中来你 "非常擅长 "的技术问题的...你只是在用你的断言理论误导人们! 米沙,嘿!你的一级方程式之旅如何?索契的天气如何? Mikhail Filimonov 2015.10.20 15:23 #14 Vasiliy Sokolov: 米沙,你好!你的一级方程式之旅如何?索契的天气如何?你好!很好!在海里游泳(水温是24度)。 Vasiliy Sokolov 2015.10.20 15:41 #15 Михаил: 你好!很好!在海里游泳(水温是24度)。酷,那是非常温暖的水!说实在的--我对你没有任何抱怨。如果你想就事论事--欢迎。此外,我没有意愿去教导任何人。每个人都有自己的方形轮子的自行车。 Ihor Herasko 2015.10.20 15:49 #16 Vasiliy Sokolov:如果发送订单和下一个入市信号之间的时间超过了订单执行 时间,就不需要做任何事情。这里的逻辑很简单:我们发送一个异步订单,离开线程并忘记它。我们等待下一个时刻来检查信号。如果在那一刻,交易环境没有改变--专家顾问会寻找再次入市的信号,并重复入市的命令。相反,如果一切顺利,订单被执行,专家顾问在分析环境后会意识到它有一个仓位,不会再开新仓。即,在这种方法中,专家顾问的条件被保证与市场环境一致。在高频交易中,情况更为复杂,新的信号可能在与执行订单相当的时间后出现(6-100毫秒)。在这种情况下,你不能不锁定。专家顾问应该记住最后一次发送订单的时间。如果在OnTransaction中发生错误,锁定会被重置,专家顾问可以再次执行交易。应该指出的是,许多人喜欢祈祷的OnTradeTransacton在HFT没有帮助。一个新的进入信号可以比OnTradeTransaction中关于成功执行交易的响应更快地到达。无论你是否使用OnTradeTransacton,封锁是必要的。你可能会问,我们如何才能控制OnTradeTransaction中产生的错误?你可以用一个反问来回答: 当错误发生时,你将如何即时改变专家顾问的交易逻辑?- 你不能。如果你在之前没有做适当的检查(钱的存在、数量等),就会出现错误。但是一旦发生,你将无法纠正它。因此,在OnTradeTransaction中,你能做的最好的事情是将这个错误打印到日志中(以便以后纠正专家顾问的逻辑),并删除锁,如果它被使用。为此,除此之外,必须使用OnTradeTransaction。现在米卡拉斯的各种信徒会跑进来,开始向我扔西红柿--让他们来吧。但我一直重复,只有基于终端的交易环境,才能组织起可靠的交易逻辑。其他一切--都不起作用。我不太明白信号之间的时间有什么关系?每个交易信号都有其注册时间。一旦信号被注册(出现),就有必要进行交易操作。因此,专家顾问向服务器发送交易指令并进一步工作。该订单还没有被服务器执行。一个新的虱子来了。专家顾问重新分析其状态,发现有一个开仓信号,但在工作订单中没有相应的位置(或订单)。 我的问题是:如果不使用OnTrade或OnTradeTransaction的数据,专家顾问如何确定没有头寸的原因?可能有几个原因。1.开盘请求已被发送到服务器,但服务器尚未给出订单执行结果的答案。我们必须等待答案。2.请求还没有被发送到服务器。订单需要发出去。3.请求已经发出,服务器回复说订单无法执行。必须对错误信息进行处理,并决定下一步该怎么做。4.请求已经发出,但服务器在很长一段时间内没有回应(超时)(每个人都自己设定这个时间,我的是1分钟)。如果不使用OnTrade或OnTradeTransaction,我看不到任何解决方案。但你声称有一个。请解释哪一个。因为在MQL4/5中谈论线程锁是很奇怪的--没有两个或多个线程,只有一个线程。此外,你用 "如果一切顺利,订单被执行 "这样的表达方式进行操作,但你没有解释它是如何确定的。而这正是我的问题的实质。 Vasiliy Sokolov 2015.10.20 16:01 #17 Игорь Герасько:不太清楚信号发生的间隔时间与此有什么关系?每个交易信号都有自己的注册时间。一旦信号被注册(发生),就有必要进行交易操作。因此,专家顾问向服务器发送交易指令并进一步工作。该订单还没有被服务器执行。一个新的虱子来了。专家顾问重新分析其状态,发现有一个开仓信号,但在工作订单中没有相应的位置(或订单)。 我的问题是:如果不使用OnTrade或OnTradeTransaction的数据,专家顾问如何确定没有头寸的原因?可能有几个原因。1.开盘请求已被发送到服务器,但服务器尚未给出订单执行结果的答案。我们必须等待答案。2.请求还没有被发送到服务器。订单需要发出去。3.请求已经发出,服务器回复说订单无法执行。必须对错误信息进行处理,并决定下一步该怎么做。4.请求已经发出,但服务器在很长一段时间内没有回应(每个人都自己设置这个时间,我的是1分钟)(超时)。如果不使用OnTrade或OnTradeTransaction,我看不到任何解决方案。但你声称有一个。请解释哪一个。因为在MQL4/5中谈论线程锁是很奇怪的--没有两个或多个线程,只有一个线程。此外,你用 "如果一切顺利,订单被执行 "这样的表达方式进行操作,但你没有解释它是如何确定的。而这正是我的问题的实质。我指的不是屏蔽线程,而是屏蔽交易指令 的发送。一个双重问题:假设专家顾问已经确定了一个交易订单无法执行的原因(市场关闭,没有钱,等等),接下来怎么办?专家顾问将如何改善这种情况?是给账户加钱还是开市?知道最后一个订单发送错误的原因,对专家顾问的进一步交易有什么帮助? Ihor Herasko 2015.10.20 17:03 #18 Vasiliy Sokolov:所指的不是阻断流量,而是阻断交易指令 的发送。问题来了:如果服务器返回一个订单执行错误,我们如何才能发现它,以解除对发送第二个订单的能力的限制?同样,如果不使用OnTrade和OnTradeTransaction。另一个问题:假设专家顾问已经确定了订单无法执行的原因(市场关闭,没有钱,等等),接下来怎么办?专家顾问将如何改善这种情况?是给账户加钱还是开市?知道最后一个订单错误的原因将如何帮助专家顾问进一步交易?这将有很大的帮助。我们将离开缺乏资金的情况,因为专家顾问应该在发送交易指令之前确定这一点,并以信息(或其他方式)通知交易者。因此,交易指令根本就没有被发送。错误信息可以告诉我们,我们是否应该继续尝试发送订单。例如,如果市场关闭,就没有必要立即重新发送请求。你应该停止交易一段时间(由专家顾问的开发人员决定),然后才发送新的请求(如果交易信号仍然有效)。如果发生了重新投票,你可以立即发送一个新的请求。如果在设置止损时有错误(在发送订单的过程中,止损水平或冻结水平发生了变化),则根据新的数据对止损进行修正,并立即发送新的请求。因此,对交易错误(一般来说--任何错误)的了解和正确处理是任何 "正常 "程序运行的前提条件。 Vasiliy Sokolov 2015.10.20 17:34 #19 Игорь Герасько:问题是:如果服务器返回一个订单执行错误,我如何知道它,以便解除对重新发送订单的能力?同样,如果不使用OnTrade和OnTradeTransaction。非常有帮助。我们将离开缺乏资金的情况,因为专家顾问应该在发送交易指令前检测到这一点,并以信息(或其他方式)通知交易者。因此,交易指令根本就没有被发送。错误信息可以告诉我们,我们是否应该继续尝试发送订单。例如,如果市场关闭,就没有必要立即重新发送请求。你应该停止交易一段时间(由专家顾问的开发人员决定),然后才发送新的请求(如果交易信号仍然有效)。如果发生了重新投票,你可以立即发送一个新的请求。如果在设置止损时有错误(在发送订单的过程中,止损水平或冻结水平发生了变化),则根据新的数据对止损进行修正,并立即发送新的请求。因此,对交易错误(一般来说--任何错误)的了解和正确处理是任何 "正常 "程序运行的必要条件。如果市场已经关闭,我们必须在发送订单之前检查这一点。在其他情况下,应该重新发送交易指令。因此,所有的错误都可以分为两类。错误,这些错误的发生在订单发送前就可以预测到。在发送订单时无法预测的错误,例如重新报价。如果专家顾问收到第二种类型的错误,它的行动应该总是相同的,不取决于错误类型:也就是说,它应该重复其交易订单,希望这次能被执行。在发送交易订单之前,专家顾问应该控制第一类错误。因此,专家顾问没有必要根据OnTradeTransaction中返回的错误类型来纠正其行为。然而,你可以通知用户在OnTradeTransaction中出现的错误,并在执行新的交易操作 时重置锁,如果之前的交易最终出现了第二种类型的错误。在这种情况下,如果OnTradeTransaction由于某种原因没有发生,锁仍然应该被超时重置。因此,OnTradeTransaction来不来并不重要,只是有了OnTradeTransaction,重复的订单将以最快的速度被执行。 s.w. FreezeLevel也应在订单发送前进行分析。 Andrey Dik 2016.12.02 22:05 #20 我如何在OnTradeTransaction()中知道SL/TP已经被触发了? 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一方面,是的。另一方面:如果请求已经被发送到服务器,但操作还没有被执行,怎么办?如果我们只有一个订单和头寸的清单(以及账户历史),我们怎么能知道我们在哪里?
在MT4中没有这样的问题,因为那里所有的交易操作都是同步的。但结果是我们得到了更慢的性能。
异步操作比同步操作快的事实是一个神话,它来自对事情的无知。异步操作有一个完整的进行交易行为的周期,分为几个部分,而同步操作只有一个周期。异步操作也需要服务器的响应,在交换上的执行是相同的,也就是说,异步和同步操作所需的总时间几乎相同。异步订单的优点是可以同时发送,即有可能在几乎同一时间发送两个或多个订单。这就是使其有可能实现高速运行的原因(总的来说)。不是每个专家顾问都需要异步发送模式。首先,对于各种需要同时买入两个或更多工具的套利交易者,或HFT算法,都需要它。例如,HFT机器人可能会发送一个入市 订单,在3-4毫秒内,它可能会发送相反的订单,在这种情况下,等待服务器对第一个订单的回复时间太长,所以它需要异步发送模式--无需等待结果。在绝大多数的EA中,这样的速度是没有必要的。
你也不知道怎么做。你已经写了几十页关于OnTradeTransaction的文章,但还没有理解一件事:OnTradeTransaction是一个解决特定任务的服务功能,你不能像你那样在交易中使用它。然后聪明的人读了你的文章,创造了类似的主题:"为什么OnTradeTransaction没有保证?" - 因为专家顾问不应该像你那样通过OnTradeTransaction创造其交易环境,而只依靠系统中的内容,特别是订单 和交易历史。
而这正是奥斯塔普出错的地方....
如果你对我有私人恩怨,没有必要把它带到讨论中来
你 "非常擅长 "的技术问题的...
是你用你的逼迫性的戏剧性来误导人们!
而这正是奥斯塔普得到它的地方....
如果你对我有私人恩怨,没有必要把它带到讨论中来
你 "非常擅长 "的技术问题的...
你只是在用你的断言理论误导人们!
米沙,你好!你的一级方程式之旅如何?索契的天气如何?
你好!
很好!在海里游泳(水温是24度)。
你好!
很好!在海里游泳(水温是24度)。
酷,那是非常温暖的水!
说实在的--我对你没有任何抱怨。如果你想就事论事--欢迎。此外,我没有意愿去教导任何人。每个人都有自己的方形轮子的自行车。
如果发送订单和下一个入市信号之间的时间超过了订单执行 时间,就不需要做任何事情。这里的逻辑很简单:我们发送一个异步订单,离开线程并忘记它。我们等待下一个时刻来检查信号。如果在那一刻,交易环境没有改变--专家顾问会寻找再次入市的信号,并重复入市的命令。相反,如果一切顺利,订单被执行,专家顾问在分析环境后会意识到它有一个仓位,不会再开新仓。即,在这种方法中,专家顾问的条件被保证与市场环境一致。
在高频交易中,情况更为复杂,新的信号可能在与执行订单相当的时间后出现(6-100毫秒)。在这种情况下,你不能不锁定。专家顾问应该记住最后一次发送订单的时间。如果在OnTransaction中发生错误,锁定会被重置,专家顾问可以再次执行交易。
应该指出的是,许多人喜欢祈祷的OnTradeTransacton在HFT没有帮助。一个新的进入信号可以比OnTradeTransaction中关于成功执行交易的响应更快地到达。无论你是否使用OnTradeTransacton,封锁是必要的。
你可能会问,我们如何才能控制OnTradeTransaction中产生的错误?你可以用一个反问来回答: 当错误发生时,你将如何即时改变专家顾问的交易逻辑?- 你不能。如果你在之前没有做适当的检查(钱的存在、数量等),就会出现错误。但是一旦发生,你将无法纠正它。因此,在OnTradeTransaction中,你能做的最好的事情是将这个错误打印到日志中(以便以后纠正专家顾问的逻辑),并删除锁,如果它被使用。为此,除此之外,必须使用OnTradeTransaction。
现在米卡拉斯的各种信徒会跑进来,开始向我扔西红柿--让他们来吧。但我一直重复,只有基于终端的交易环境,才能组织起可靠的交易逻辑。其他一切--都不起作用。
我不太明白信号之间的时间有什么关系?每个交易信号都有其注册时间。一旦信号被注册(出现),就有必要进行交易操作。因此,专家顾问向服务器发送交易指令并进一步工作。该订单还没有被服务器执行。一个新的虱子来了。专家顾问重新分析其状态,发现有一个开仓信号,但在工作订单中没有相应的位置(或订单)。
我的问题是:如果不使用OnTrade或OnTradeTransaction的数据,专家顾问如何确定没有头寸的原因?可能有几个原因。
1.开盘请求已被发送到服务器,但服务器尚未给出订单执行结果的答案。我们必须等待答案。
2.请求还没有被发送到服务器。订单需要发出去。
3.请求已经发出,服务器回复说订单无法执行。必须对错误信息进行处理,并决定下一步该怎么做。
4.请求已经发出,但服务器在很长一段时间内没有回应(超时)(每个人都自己设定这个时间,我的是1分钟)。
如果不使用OnTrade或OnTradeTransaction,我看不到任何解决方案。但你声称有一个。请解释哪一个。因为在MQL4/5中谈论线程锁是很奇怪的--没有两个或多个线程,只有一个线程。此外,你用 "如果一切顺利,订单被执行 "这样的表达方式进行操作,但你没有解释它是如何确定的。而这正是我的问题的实质。
不太清楚信号发生的间隔时间与此有什么关系?每个交易信号都有自己的注册时间。一旦信号被注册(发生),就有必要进行交易操作。因此,专家顾问向服务器发送交易指令并进一步工作。该订单还没有被服务器执行。一个新的虱子来了。专家顾问重新分析其状态,发现有一个开仓信号,但在工作订单中没有相应的位置(或订单)。
我的问题是:如果不使用OnTrade或OnTradeTransaction的数据,专家顾问如何确定没有头寸的原因?可能有几个原因。
1.开盘请求已被发送到服务器,但服务器尚未给出订单执行结果的答案。我们必须等待答案。
2.请求还没有被发送到服务器。订单需要发出去。
3.请求已经发出,服务器回复说订单无法执行。必须对错误信息进行处理,并决定下一步该怎么做。
4.请求已经发出,但服务器在很长一段时间内没有回应(每个人都自己设置这个时间,我的是1分钟)(超时)。
如果不使用OnTrade或OnTradeTransaction,我看不到任何解决方案。但你声称有一个。请解释哪一个。因为在MQL4/5中谈论线程锁是很奇怪的--没有两个或多个线程,只有一个线程。此外,你用 "如果一切顺利,订单被执行 "这样的表达方式进行操作,但你没有解释它是如何确定的。而这正是我的问题的实质。
我指的不是屏蔽线程,而是屏蔽交易指令 的发送。
一个双重问题:假设专家顾问已经确定了一个交易订单无法执行的原因(市场关闭,没有钱,等等),接下来怎么办?专家顾问将如何改善这种情况?是给账户加钱还是开市?知道最后一个订单发送错误的原因,对专家顾问的进一步交易有什么帮助?
所指的不是阻断流量,而是阻断交易指令 的发送。
问题来了:如果服务器返回一个订单执行错误,我们如何才能发现它,以解除对发送第二个订单的能力的限制?同样,如果不使用OnTrade和OnTradeTransaction。
另一个问题:假设专家顾问已经确定了订单无法执行的原因(市场关闭,没有钱,等等),接下来怎么办?专家顾问将如何改善这种情况?是给账户加钱还是开市?知道最后一个订单错误的原因将如何帮助专家顾问进一步交易?
这将有很大的帮助。我们将离开缺乏资金的情况,因为专家顾问应该在发送交易指令之前确定这一点,并以信息(或其他方式)通知交易者。因此,交易指令根本就没有被发送。
错误信息可以告诉我们,我们是否应该继续尝试发送订单。例如,如果市场关闭,就没有必要立即重新发送请求。你应该停止交易一段时间(由专家顾问的开发人员决定),然后才发送新的请求(如果交易信号仍然有效)。如果发生了重新投票,你可以立即发送一个新的请求。如果在设置止损时有错误(在发送订单的过程中,止损水平或冻结水平发生了变化),则根据新的数据对止损进行修正,并立即发送新的请求。
因此,对交易错误(一般来说--任何错误)的了解和正确处理是任何 "正常 "程序运行的前提条件。
问题是:如果服务器返回一个订单执行错误,我如何知道它,以便解除对重新发送订单的能力?同样,如果不使用OnTrade和OnTradeTransaction。
非常有帮助。我们将离开缺乏资金的情况,因为专家顾问应该在发送交易指令前检测到这一点,并以信息(或其他方式)通知交易者。因此,交易指令根本就没有被发送。
错误信息可以告诉我们,我们是否应该继续尝试发送订单。例如,如果市场关闭,就没有必要立即重新发送请求。你应该停止交易一段时间(由专家顾问的开发人员决定),然后才发送新的请求(如果交易信号仍然有效)。如果发生了重新投票,你可以立即发送一个新的请求。如果在设置止损时有错误(在发送订单的过程中,止损水平或冻结水平发生了变化),则根据新的数据对止损进行修正,并立即发送新的请求。
因此,对交易错误(一般来说--任何错误)的了解和正确处理是任何 "正常 "程序运行的必要条件。
如果市场已经关闭,我们必须在发送订单之前检查这一点。
在其他情况下,应该重新发送交易指令。因此,所有的错误都可以分为两类。
如果专家顾问收到第二种类型的错误,它的行动应该总是相同的,不取决于错误类型:也就是说,它应该重复其交易订单,希望这次能被执行。在发送交易订单之前,专家顾问应该控制第一类错误。因此,专家顾问没有必要根据OnTradeTransaction中返回的错误类型来纠正其行为。然而,你可以通知用户在OnTradeTransaction中出现的错误,并在执行新的交易操作 时重置锁,如果之前的交易最终出现了第二种类型的错误。在这种情况下,如果OnTradeTransaction由于某种原因没有发生,锁仍然应该被超时重置。因此,OnTradeTransaction来不来并不重要,只是有了OnTradeTransaction,重复的订单将以最快的速度被执行。
s.w. FreezeLevel也应在订单发送前进行分析。