如何检查一个订单是否被选中 - 页 19 1...121314151617181920 新评论 Рустам 2013.02.23 16:23 #181 原则上是的,但 "指针 "必须有自己的指针。 想想我对函数的建议,在我看来这是一个普遍的解决方案。当然,有一个关于这种代码的速度问题,但这似乎是第三个问题。 Ilya Malev 2013.02.23 16:24 #182 FAQ: 原则上是的,但 "指针 "将必须有自己的指针。想想我的建议与函数,在我看来这是一个普遍的解决方案。当然,有一个关于这种代码的速度问题,但这似乎是第三个问题。谢谢你,我总是很高兴能有一个建设性的对话。 Alexander 2013.02.23 16:27 #183 Ant_TL:因此,如果程序中的函数A在循环中选择了某个顺序,然后从库中调用辅助函数B,即使B在这个过程中选择了另一个顺序,函数A中的顺序选择也不应该受到返回的影响。 如果你把函数的值放到一个变量中,那么是的。如果不是,那么这个函数是全局的,可以在第一次调用时改变。 Рустам 2013.02.23 16:31 #184 Ant_TL:谢谢你,总是很高兴能有一个建设性的对话。 不客气,只是不要轻易下结论。 Ilya Malev 2013.02.23 16:32 #185 Roger: 如果你把函数的值存储在一个变量中,是的。如果不是,该函数是全局的,在第一次调用时可能会发生变化。 我有点糊涂了。我指的是以下情况:我们从主程序模块的函数A()中调用库函数B(),例如,它只是选择列表中的第一个订单(假设有一个先验的订单)。空白B(){OrderSelect(0,SELECT_BY_POS)。}当这个函数被调用后,控制权从库中返回到主模块,如果我们调用OrderTicket()或其中任何其他期望订单被预选的函数,我们会得到完全相同的4105错误。但是,如果在主模块中调用函数 B之前,已经选择了其他订单,那么无论库中是否有新的 "选择",它都将继续被选择,因为按照我的理解,当前选择的订单只在模块中是唯一的。但如果我们从主模块的函数A中调用同一个函数B,那么在调用B之前在函数A中选择的顺序将变为顺序0(也就是说,从函数B返回后当前选择的顺序将是顺序0,不管调用B之前当前选择的顺序是什么)。因此,如果我们自己调用一个使用OrderSelect的函数,我们应该确保当我们从这个函数返回时,我们在调用这个函数之前已经选择的订单,这样我们就可以在以后使用它。如果你不确保这一点,会导致你的代码中出现难以发现的逻辑错误。 keekkenen 2013.02.23 16:37 #186 Ant_TL:具体来说,"指针"--当前订单选择的状态--在模块内是全局性的,也就是说,这个指针对库来说是一样的,对程序模块来说是不同的。这意味着,如果程序中的函数A在循环中选择了一些顺序,然后调用库中的辅助函数B,那么即使在其运行过程中B选择了另一个顺序,在返回时也不应该改变函数A的顺序选择。但如果两个函数都在一个模块内,那么当从B函数返回时,我们需要记住并恢复当前的顺序选择,无论是在A函数本身调用B之前和之后,还是在B函数开始和结束工作时,都要记住,这样A函数工作的逻辑在这一点上就不会被违反。你的观点很明确...我认为这与流行的专家顾问的结构有相似之处,当票据号码被存储在变量中并在以后使用时(在下一个刻度上,比如如果一个副票被打开,等等)...如果你想获得最后开出的订单的票据,只需使用这个订单的属性,OrderSelect(),一切都会好起来。这意味着在任何时候,专家顾问必须 "理解 "交易策略处于什么状态,并根据这一状态采取行动,无论电力和终端中其他工作的专家顾问发生什么。Ant_TL: 在这个函数被调用后,当控制权从库中返回到主模块时,如果我们调用OrderTicket()函数或其中任何其他为预选订单而设计的函数,我们将得到完全相同的4105错误。但是,如果在主模块中调用函数B之前,已经选择了其他的订单,那么无论库中新的 "选择 "是什么,它都将保持被选择,因为当前选择的订单,据我所知,只在模块中是唯一的。它已被证明是这样工作的,或者你认为它是这样工作的?对我来说,模块和库是不分的......一旦编译,代码就会作为一个单一的结构工作......凡是调用OrderSelect() 的地方,都会返回最后选择的订单的同一个OrderTicket()。我认为它应该是这样工作的... Ilya Malev 2013.02.23 16:48 #187 keekkenen:它被证明是有效的,或者你认为它是有效的?对我来说,不存在模块和库的划分......编译后的代码作为一个单一的结构工作......无论在哪里调用OrderSelect(),最后选择的订单的同一个OrderTicket()将被返回。我认为它应该是这样工作的...经检查,在库中选择的顺序不是在主模块中返回时的选择顺序。因此,在逻辑上被选中的订单应该是主模块中最后被选中的订单,尽管我还没有检查。我为自己解决了这个问题,在include库文件mqh中为库函数创建了类似于以下的包装器。bool GetOrder(int a=0){ return(OrderSelect(_GetOrder(a), SELECT_BY_TICKET));}顺便说一下,你也不能向库函数传递默认参数。这里_GetOrder(int a)是库函数本身,它找到并返回一些顺序。该函数 在库中被调用 时有一个明确的参数 "a",在封装函数中默认为0,另外封装函数中返回的票据在主程序模块中被重新选择,因为它在库函数中的选择不会到达 "收件人 "那里。 Alexander 2013.02.23 22:51 #188 我也这么认为,无论从哪里调用这个函数,它都会给出一组特定顺序的选定参数,在下次调用这个函数之前,软件不会改变它们,无论从哪里调用。否则你为什么要把这个函数包在一个额外的、完全不必要的函数中?PYSYS。提示 - 创建一个静态整数变量,打开后传递订单的值,它不会改变,直到你想要它改变,并将准确地执行你计划的内容。 TarasBY 2013.02.24 11:39 #189 Ant_TL: 检查了返回主模块时,在库中选择的顺序不是所选的顺序。因此,从逻辑上讲,返回时选择的订单应该是主模块中最后选择的订单,尽管我还没有检查过这个。 这句话需要澄清:如果我们谈论的只是一个已编译的模块(库)(*.mg4-libraries from libraries folder),这句话是正确的。对于作为主编译文件(*.mgh-library)一部分的模块,这个说法是不正确的。 Ilya Malev 2013.02.24 11:53 #190 TarasBY: 这句话需要澄清:如果我们谈论的是仅被编译的模块(库)(*.mg4-libraries from libraries folder),这句话是真的。对于作为主编译文件(*.mgh-library)一部分的模块,这个说法是不正确的。MQH不是一个单独的模块,而是主模块中的一个插入物,位于不同的文件中。所以我们当然是在谈论一个独立的.ex4库 1...121314151617181920 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
原则上是的,但 "指针 "将必须有自己的指针。想想我的建议与函数,在我看来这是一个普遍的解决方案。当然,有一个关于这种代码的速度问题,但这似乎是第三个问题。
谢谢你,我总是很高兴能有一个建设性的对话。
因此,如果程序中的函数A在循环中选择了某个顺序,然后从库中调用辅助函数B,即使B在这个过程中选择了另一个顺序,函数A中的顺序选择也不应该受到返回的影响。
谢谢你,总是很高兴能有一个建设性的对话。
不客气,只是不要轻易下结论。
如果你把函数的值存储在一个变量中,是的。如果不是,该函数是全局的,在第一次调用时可能会发生变化。
我有点糊涂了。我指的是以下情况:我们从主程序模块的函数A()中调用库函数B(),例如,它只是选择列表中的第一个订单(假设有一个先验的订单)。
空白B(){
OrderSelect(0,SELECT_BY_POS)。
}
当这个函数被调用后,控制权从库中返回到主模块,如果我们调用OrderTicket()或其中任何其他期望订单被预选的函数,我们会得到完全相同的4105错误。但是,如果在主模块中调用函数 B之前,已经选择了其他订单,那么无论库中是否有新的 "选择",它都将继续被选择,因为按照我的理解,当前选择的订单只在模块中是唯一的。
但如果我们从主模块的函数A中调用同一个函数B,那么在调用B之前在函数A中选择的顺序将变为顺序0(也就是说,从函数B返回后当前选择的顺序将是顺序0,不管调用B之前当前选择的顺序是什么)。
因此,如果我们自己调用一个使用OrderSelect的函数,我们应该确保当我们从这个函数返回时,我们在调用这个函数之前已经选择的订单,这样我们就可以在以后使用它。如果你不确保这一点,会导致你的代码中出现难以发现的逻辑错误。
具体来说,"指针"--当前订单选择的状态--在模块内是全局性的,也就是说,这个指针对库来说是一样的,对程序模块来说是不同的。这意味着,如果程序中的函数A在循环中选择了一些顺序,然后调用库中的辅助函数B,那么即使在其运行过程中B选择了另一个顺序,在返回时也不应该改变函数A的顺序选择。但如果两个函数都在一个模块内,那么当从B函数返回时,我们需要记住并恢复当前的顺序选择,无论是在A函数本身调用B之前和之后,还是在B函数开始和结束工作时,都要记住,这样A函数工作的逻辑在这一点上就不会被违反。
你的观点很明确...
我认为这与流行的专家顾问的结构有相似之处,当票据号码被存储在变量中并在以后使用时(在下一个刻度上,比如如果一个副票被打开,等等)...
如果你想获得最后开出的订单的票据,只需使用这个订单的属性,OrderSelect(),一切都会好起来。这意味着在任何时候,专家顾问必须 "理解 "交易策略处于什么状态,并根据这一状态采取行动,无论电力和终端中其他工作的专家顾问发生什么。
在这个函数被调用后,当控制权从库中返回到主模块时,如果我们调用OrderTicket()函数或其中任何其他为预选订单而设计的函数,我们将得到完全相同的4105错误。但是,如果在主模块中调用函数B之前,已经选择了其他的订单,那么无论库中新的 "选择 "是什么,它都将保持被选择,因为当前选择的订单,据我所知,只在模块中是唯一的。
它已被证明是这样工作的,或者你认为它是这样工作的?
对我来说,模块和库是不分的......一旦编译,代码就会作为一个单一的结构工作......
凡是调用OrderSelect() 的地方,都会返回最后选择的订单的同一个OrderTicket()。
我认为它应该是这样工作的...
它被证明是有效的,或者你认为它是有效的?
对我来说,不存在模块和库的划分......编译后的代码作为一个单一的结构工作......
无论在哪里调用OrderSelect(),最后选择的订单的同一个OrderTicket()将被返回。
我认为它应该是这样工作的...
经检查,在库中选择的顺序不是在主模块中返回时的选择顺序。因此,在逻辑上被选中的订单应该是主模块中最后被选中的订单,尽管我还没有检查。
我为自己解决了这个问题,在include库文件mqh中为库函数创建了类似于以下的包装器。
bool GetOrder(int a=0){
return(OrderSelect(_GetOrder(a), SELECT_BY_TICKET));
}
顺便说一下,你也不能向库函数传递默认参数。
这里_GetOrder(int a)是库函数本身,它找到并返回一些顺序。该函数 在库中被调用 时有一个明确的参数 "a",在封装函数中默认为0,另外封装函数中返回的票据在主程序模块中被重新选择,因为它在库函数中的选择不会到达 "收件人 "那里。
我也这么认为,无论从哪里调用这个函数,它都会给出一组特定顺序的选定参数,在下次调用这个函数之前,软件不会改变它们,无论从哪里调用。
否则你为什么要把这个函数包在一个额外的、完全不必要的函数中?
PYSYS。提示 - 创建一个静态整数变量,打开后传递订单的值,它不会改变,直到你想要它改变,并将准确地执行你计划的内容。
检查了返回主模块时,在库中选择的顺序不是所选的顺序。因此,从逻辑上讲,返回时选择的订单应该是主模块中最后选择的订单,尽管我还没有检查过这个。
这句话需要澄清:如果我们谈论的是仅被编译的模块(库)(*.mg4-libraries from libraries folder),这句话是真的。对于作为主编译文件(*.mgh-library)一部分的模块,这个说法是不正确的。
MQH不是一个单独的模块,而是主模块中的一个插入物,位于不同的文件中。所以我们当然是在谈论一个独立的.ex4库