OrderSend()问题 - 页 2 123456789 新评论 [删除] 2012.01.10 16:29 #11 Yedelkin: 我一定是错过了这样一个话题。我在哪里可以看到KimV的订单检查功能? 这是为4人准备的,但你可以去看看,可能会派上用场。你可以在他的网站上查看:"免费图书馆 "下,订购放置图书馆。 Sergey Gritsay 2012.01.10 18:30 #12 -Alexey-: 这是第四版的,但你可以看一下,可能会有帮助。你可以在他的网站上翻阅,在 "免费图书馆 "部分,即用于下订单的图书馆。从四人中选一个是不行的。我使用位置选择 选择一个开放的位置进行进一步操作。如果函数成功完成,返回true。如果函数失败,返回false。要获得有关错误的信息,请调用GetLastError() 函数。 boolPositionSelect( 字符串//工具名称 ); 参数 标志 [in] 金融工具的名称。 返回的值 bool类型的值。 注意事项 对于每个符号,在任何时候都只能建立一个头寸,这是一个或几个交易 的结果。在客户终端的 "工具箱 "面板的 "交易 "选项卡中也显示的头寸和活跃的挂单 不应该被混淆。 PositionSelect()函数将有关位置的数据复制到程序环境中,随后调用PositionGetDouble()、PositionGetInteger() 和PositionGetString() 返回先前复制的数据。这意味着该位置本身可能已经不存在了(或者它可能已经在数量、方向等方面发生了变化),但这个位置的数据仍然可以被检索出来。为了保证获得新鲜的位置数据,建议在申请之前立即调用PositionSelect()函数。 FORTS 请帮助 EA 交易中采用OnTrade() 函数处理交易事件 在单一工具上使用不同的 EA 交易进行交易时 ORDER_MAGIC Yedelkin 2012.01.11 05:17 #13 sergey1294: 从一个四胞胎中选出的人将不会工作。我使用PositionSelect 来定义位置 当使用PositionSelect()函数时,它"......如果函数失败则返回false",这是令人震惊的。也就是说,如果 PositionSelect()函数失败 就会返回false,而不仅仅是没有头寸。 换句话说,不能排除这样的情况:OrderSend()函数返回true,PositionSelect()函数返回false,而头寸仍然打开。 Yedelkin 2012.01.11 13:22 #14 papaklass: 你在分析这些情况时,是在一个虱子的前夜还是在不同的虱子上? 好的,我将从以下方面着手。 一个"√"是指一个工具的价格变化。这种变化的频率是不可预测的:从每秒钟几个到每小时几个。相应地,OrderSend()和PositionSelect() 函数必须不依赖于ticks的活动。既然如此,我认为我们应该检查,以避免重复的订单(并分析相应的情况),而不涉及蜱虫的行为(频率)。 所以我觉得很难准确回答这个问题 :/。 Yedelkin 2012.01.11 17:48 #15 papaklass: 我提出问题时不是这个意思。OnTick()事件处理程序在下一个tick到达时被触发。正因为如此,我重新表述了我的问题。 你是在一次OnTick()调用中分析这些情况,还是在不同的调用中分析? 如果在一个新的tick(用户事件)到来后,有必要向服务器发送一个交易请求,那么这个请求的成功执行的检查是在到达的tick(事件)的 "处理中 "进行的。也就是说,根据你的术语,"在一次调用OnTick()时"。[而且不管在这一处理过程中,有多少ticks(事件)到达(必须到达)]。 Mykola Demko 2012.01.11 18:56 #16 papaklass: 好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()? 我想建议你不要在一个tick(触发OnTick())内做这些查询,而是在两个tick上做。 - 在第一次打勾时 即:如果请求响应成功,你将开仓的标志设置为buy=true,并中断OnTick()的执行,直到下一个tick(触发OnTick())操作者返回。 - 在第二个刻度线 - PositionSelect()。 在这种情况下,你不会有重复的职位空缺。 不保证在下一个tick时已经开仓。 衡量手动设置订单时开仓的时间。我建议你把订单执行控制转移到OnTrade(),这个事件只作为服务器对交易操作 的响应而产生。虽然我不是很清楚为什么每个订单有4个OnTrade()事件? Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5 Yedelkin 2012.01.11 19:05 #17 papaklass: 好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()? 根据你的术语,事实证明我的OrderSend()和PositionSelect()函数是在 "一个刻度内 "执行的。 纸杯。 ...我想建议这些查询不是在一个tick(触发OnTick())内执行,而是在两个tick内执行。 - 在第一次打勾时 即:如果请求回复成功,你就在buy=true中设置开仓标志,并中断OnTick()的执行,直到下一个tick(触发OnTick())运算符返回。 - 在第二个刻度线 - PositionSelect()。 在这个变体中,你将不会有重复的开仓。 我之前写过,函数OrderSend()和PositionSelect() 的执行与点子的出现/不出现没有关系。而且我简要地解释了原因。因此,检查 "在第二个刻度线 - PositionSelect() "不应该使我们在所有可能的情况下避免订单的翻倍。 Yedelkin 2012.01.11 19:08 #18 Urain: 虽然我不是很清楚为什么每个订单有4个OnTrade()事件? 过去有一篇关于OnTrade()的文章。 Urain。 不能保证在下一个交易日已经开仓... 这大致是我的意思。 awkozlov 2012.01.11 20:49 #19 papaklass: 好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()? 我想建议你不要在一个tick(触发OnTick())内进行这些查询,而是在两个tick上进行。 - 在第一次打勾时 即:如果请求响应成功,你将开仓的标志设置为buy=true,并中断OnTick()的执行,直到下一个tick(触发OnTick())操作者返回。 - 在第二个刻度线 - PositionSelect()。 在这种情况下,你不会有重复的职位空缺。 不--不是在打勾。在第一秒钟内。这里有一个简化的说法。 所以 - 如果没有暂停,它将连续打开2个订单。但我把它设定为3秒--而且我不后悔))))。不过,这仍然是秩序的开端。void OnTimer() { while(true) { zOrderSend (_Symbol,0.1,ORDER_TYPE_BUY); Sleep (1); if (PositionSelect(_Symbol)==true) {break;} } } Andrey Khatimlianskii 2012.01.12 04:03 #20 在MT5中计算订单是一门完整的科学:使用OnTrade()函数处理专家顾问中的交易事件没有暂停会使你免于重新开盘,总会发生这样的情况,即订单的执行时间会延长1秒。ps:还有,别忘了魔法。 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我一定是错过了这样一个话题。我在哪里可以看到KimV的订单检查功能?
这是第四版的,但你可以看一下,可能会有帮助。你可以在他的网站上翻阅,在 "免费图书馆 "部分,即用于下订单的图书馆。
从四人中选一个是不行的。我使用
位置选择
选择一个开放的位置进行进一步操作。如果函数成功完成,返回true。如果函数失败,返回false。要获得有关错误的信息,请调用GetLastError() 函数。
boolPositionSelect(
字符串//工具名称
);
参数
标志
[in] 金融工具的名称。
返回的值
bool类型的值。
注意事项
对于每个符号,在任何时候都只能建立一个头寸,这是一个或几个交易 的结果。在客户终端的 "工具箱 "面板的 "交易 "选项卡中也显示的头寸和活跃的挂单 不应该被混淆。
PositionSelect()函数将有关位置的数据复制到程序环境中,随后调用PositionGetDouble()、PositionGetInteger() 和PositionGetString() 返回先前复制的数据。这意味着该位置本身可能已经不存在了(或者它可能已经在数量、方向等方面发生了变化),但这个位置的数据仍然可以被检索出来。为了保证获得新鲜的位置数据,建议在申请之前立即调用PositionSelect()函数。
从一个四胞胎中选出的人将不会工作。我使用PositionSelect 来定义位置
你在分析这些情况时,是在一个虱子的前夜还是在不同的虱子上?
好的,我将从以下方面着手。
一个"√"是指一个工具的价格变化。这种变化的频率是不可预测的:从每秒钟几个到每小时几个。相应地,OrderSend()和PositionSelect() 函数必须不依赖于ticks的活动。既然如此,我认为我们应该检查,以避免重复的订单(并分析相应的情况),而不涉及蜱虫的行为(频率)。
所以我觉得很难准确回答这个问题 :/。
我提出问题时不是这个意思。OnTick()事件处理程序在下一个tick到达时被触发。正因为如此,我重新表述了我的问题。
你是在一次OnTick()调用中分析这些情况,还是在不同的调用中分析?
好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()?
我想建议你不要在一个tick(触发OnTick())内做这些查询,而是在两个tick上做。
- 在第一次打勾时
即:如果请求响应成功,你将开仓的标志设置为buy=true,并中断OnTick()的执行,直到下一个tick(触发OnTick())操作者返回。
- 在第二个刻度线 - PositionSelect()。
在这种情况下,你不会有重复的职位空缺。
不保证在下一个tick时已经开仓。 衡量手动设置订单时开仓的时间。
我建议你把订单执行控制转移到OnTrade(),这个事件只作为服务器对交易操作 的响应而产生。
虽然我不是很清楚为什么每个订单有4个OnTrade()事件?
好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()?
根据你的术语,事实证明我的OrderSend()和PositionSelect()函数是在 "一个刻度内 "执行的。
...我想建议这些查询不是在一个tick(触发OnTick())内执行,而是在两个tick内执行。
- 在第一次打勾时
即:如果请求回复成功,你就在buy=true中设置开仓标志,并中断OnTick()的执行,直到下一个tick(触发OnTick())运算符返回。
- 在第二个刻度线 - PositionSelect()。
在这个变体中,你将不会有重复的开仓。
我之前写过,函数OrderSend()和PositionSelect() 的执行与点子的出现/不出现没有关系。而且我简要地解释了原因。因此,检查 "在第二个刻度线 - PositionSelect() "不应该使我们在所有可能的情况下避免订单的翻倍。
虽然我不是很清楚为什么每个订单有4个OnTrade()事件?
过去有一篇关于OnTrade()的文章。
不能保证在下一个交易日已经开仓...
好吧,我还是无法得到答案,你是否在一个刻度上执行OrderSend()和PositionSelect()?
我想建议你不要在一个tick(触发OnTick())内进行这些查询,而是在两个tick上进行。
- 在第一次打勾时
即:如果请求响应成功,你将开仓的标志设置为buy=true,并中断OnTick()的执行,直到下一个tick(触发OnTick())操作者返回。
- 在第二个刻度线 - PositionSelect()。
在这种情况下,你不会有重复的职位空缺。
不--不是在打勾。在第一秒钟内。
这里有一个简化的说法。
所以 - 如果没有暂停,它将连续打开2个订单。但我把它设定为3秒--而且我不后悔))))。不过,这仍然是秩序的开端。
在MT5中计算订单是一门完整的科学:使用OnTrade()函数处理专家顾问中的交易事件
没有暂停会使你免于重新开盘,总会发生这样的情况,即订单的执行时间会延长1秒。
ps:还有,别忘了魔法。