如何检查一个订单是否被选中 - 页 9 12345678910111213141516...20 新评论 PapaYozh 2013.02.22 05:30 #81 Vinin: 我没有特别问任何人。 但你对它的看法一定是正确的。 我不能说你是傻瓜,但你是聋子,这是肯定的。 你没有听到别人的声音。我不是在说我的言论,而是在说你所得到的建议。 你写过可互操作的程序吗? Ant_TL 所要求的是 "互操作性",但它不能在MQL中实现。 Victor Nikolaev 2013.02.22 05:32 #82 PapaYozh: 你有没有写过一个可互操作的程序? Ant_TL 所问的是 "互操作性",但这在MQL中是不可行的。 这并不难实现。而在原则上有一个解决方案。懒得再看下去了 Victor Nikolaev 2013.02.22 05:36 #83 这样的解决方案对封闭的职位 可能是可行的,因为这些职位 将不再改变。但对于公开的职位,不值得去做 PapaYozh 2013.02.22 05:36 #84 Vinin: 这并不难实现。而且有一个解决方案。懒得再看下去了 你将无法用命令执行操作,并确保环境不受影响。 关于GetLastError()已经说过了,你将无法恢复应该由函数GetLastError() 返回的代码。 Victor Nikolaev 2013.02.22 05:40 #85 PapaYozh:你将无法用命令执行操作,并确保环境不受影响。关于GetLastError()已经说过了,你将无法恢复GetLastError()函数应该返回的代码。 如果你想,你可以,它只是有自己的函数(我是说GetLastError())。 Ilya Malev 2013.02.22 05:44 #86 这可能是一个解决方案 - OrderSelect() - MySelect() 封装器,用于按索引搜索订单的函数中 int last_select=0; // 把它放在init和start之前的某个地方。// ...... 程序代码bool MySelect(int i,int mode=MODE_TRADES){ //订单选择--如果订单被选中并属于EA,则返回True,否则返回False if(OrderSelect(i,SELECT_BY_POS,mode)){ last_select=OrderTicket(;) 如果(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) return(true); else return(false);} return(false);}bool TickSelect(int tick){ // 直接按tick进行排序选择 if(OrderSelect(tick,SELECT_BY_TICKET)) last_select=tick; else return(false); return(true);}void SomeFunc(){ // 一个可以破坏订单选择的函数模板,从而破坏程序逻辑,如果当前的订单选择没有得到照顾 int tick=last_select; // ...执行所需动作 if(tick>0) TickSelect(tick);} How to check if 100点 [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. Mislaid 2013.02.22 05:59 #87 Ant_TL:它不能,除非你自己在程序中改变这个状态。 假设订单状态 已经从MODE_TRADES变为MODE_HISTORY。而你的专家顾问并没有对该订单做任何处理。是相同的顺序还是不同的? Ilya Malev 2013.02.22 06:03 #88 Mislaid: 假设订单状态从MODE_TRADES变为MODE_HISTORY。而你的EA并没有对该订单做任何处理。是相同的顺序还是不同的? 这是同一种秩序 Artyom Trishkin 2013.02.22 06:33 #89 我看不出有什么问题。而且有很多大惊小怪的事情发生...你需要在一个主函数A()中选择一个订单,并在另一个由主函数A()调用的函数B()中处理在函数A()中选择的订单。而我们应该在函数B()中确定知道订单是否仍然被选中...所以把在函数A()中选择的订单的票据 传给函数B()。在函数B()中,你可以检查从哪个列表中选择订单,然后决定去哪里和返回到函数A()。 Artyom Trishkin 2013.02.22 06:53 #90 Ant_TL:这可能是一个解决方案 - OrderSelect() - MySelect() 封装器,用于按索引搜索订单的函数中 int last_select=0; // 把它放在init和start之前的某个地方。// ...... 程序代码bool MySelect(int i,int mode=MODE_TRADES){ //选择我们需要的订单--如果订单已经被选中并且属于智能顾问,则返回True;否则,返回False。 如果(OrderSelect(i,SELECT_BY_POS,mode)){ last_select=OrderTicket()。 如果(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) return(true)。 否则 return(false)。} return(false)。}bool TickSelect(int tick){ // 直接按tick进行选择。 如果(OrderSelect(tick,SELECT_BY_TICKET)) last_select=tick。 否则 return(false)。 return(true)。}void SomeFunc(){ // 一个可以破坏订单选择的函数模板,从而破坏程序逻辑,如果当前的订单选择没有得到照顾的话。 int tick=last_select;// ...执行所需的行动 如果(tick>0) TickSelect(tick)。} 让我们想象一下,在终端重新启动后,last_select变量会发生什么变化(坏人关了灯)? 12345678910111213141516...20 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我没有特别问任何人。
但你对它的看法一定是正确的。
我不能说你是傻瓜,但你是聋子,这是肯定的。
你没有听到别人的声音。我不是在说我的言论,而是在说你所得到的建议。
你写过可互操作的程序吗?
Ant_TL 所要求的是 "互操作性",但它不能在MQL中实现。
你有没有写过一个可互操作的程序?
Ant_TL 所问的是 "互操作性",但这在MQL中是不可行的。
这并不难实现。而在原则上有一个解决方案。懒得再看下去了
这并不难实现。而且有一个解决方案。懒得再看下去了
你将无法用命令执行操作,并确保环境不受影响。
关于GetLastError()已经说过了,你将无法恢复应该由函数GetLastError() 返回的代码。
你将无法用命令执行操作,并确保环境不受影响。
关于GetLastError()已经说过了,你将无法恢复GetLastError()函数应该返回的代码。
如果你想,你可以,它只是有自己的函数(我是说GetLastError())。
这可能是一个解决方案 - OrderSelect() - MySelect() 封装器,用于按索引搜索订单的函数中
int last_select=0; // 把它放在init和start之前的某个地方。
// ...... 程序代码
bool MySelect(int i,int mode=MODE_TRADES){ //订单选择--如果订单被选中并属于EA,则返回True,否则返回False
if(OrderSelect(i,SELECT_BY_POS,mode)){
last_select=OrderTicket(;)
如果(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
return(true);
else
return(false);
}
return(false);
}
bool TickSelect(int tick){ // 直接按tick进行排序选择
if(OrderSelect(tick,SELECT_BY_TICKET))
last_select=tick;
else
return(false);
return(true);
}
void SomeFunc(){ // 一个可以破坏订单选择的函数模板,从而破坏程序逻辑,如果当前的订单选择没有得到照顾
int tick=last_select;
// ...执行所需动作
if(tick>0)
TickSelect(tick);
}
它不能,除非你自己在程序中改变这个状态。
假设订单状态 已经从MODE_TRADES变为MODE_HISTORY。而你的专家顾问并没有对该订单做任何处理。是相同的顺序还是不同的?
假设订单状态从MODE_TRADES变为MODE_HISTORY。而你的EA并没有对该订单做任何处理。是相同的顺序还是不同的?
这是同一种秩序
这可能是一个解决方案 - OrderSelect() - MySelect() 封装器,用于按索引搜索订单的函数中
int last_select=0; // 把它放在init和start之前的某个地方。
// ...... 程序代码
bool MySelect(int i,int mode=MODE_TRADES){ //选择我们需要的订单--如果订单已经被选中并且属于智能顾问,则返回True;否则,返回False。
如果(OrderSelect(i,SELECT_BY_POS,mode)){
last_select=OrderTicket()。
如果(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
return(true)。
否则
return(false)。
}
return(false)。
}
bool TickSelect(int tick){ // 直接按tick进行选择。
如果(OrderSelect(tick,SELECT_BY_TICKET))
last_select=tick。
否则
return(false)。
return(true)。
}
void SomeFunc(){ // 一个可以破坏订单选择的函数模板,从而破坏程序逻辑,如果当前的订单选择没有得到照顾的话。
int tick=last_select;
// ...执行所需的行动
如果(tick>0)
TickSelect(tick)。
}