[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 485 1...478479480481482483484485486487488489490491492...537 新评论 Andrey F. Zelinsky 2011.07.03 18:52 #4841 FOReignEXchange: 我不明白?我只是在帮助中寻找,那里的OrderSelect()使用一个条件。而没有真正的我还没有在任何地方看到它。 if是一个条件语句。而且括号里应该有一个条件。这对我来说似乎更符合逻辑。虽然可能没有什么区别。 规格。 bool OrderSelect( int index, int select, int pool=MODE_TRADES) 返回真或假 见https://docs.mql4.com/ru/basis/operators/if。 如果表达式为真,则运算符1被执行,控制权交给运算符2之后的运算符(即运算符2不被执行)。如果表达式为假,则执行operator2。 如果(表达式)operator1 else operator2 if 运算符的else 部分可以省略。因此,省略了else 部分的嵌套if 语句可能会引起歧义。在这种情况下,else 被链接到同一块中最近的、没有else 部分的前面的if 语句。 也就是说,比较OrderSelect()==true是 没有必要的--只需使用OrderSelect()或!OrderSelect( )代替OrderSelect()==false。 Денис 2011.07.03 18:57 #4842 我不是这个意思。 只是,当我选择一个订单时,我总是把它写满。 if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)==true) 我从未见过没有真实的。 abolk: то есть сравнение OrderSelect()==true делать не обязательно - достаточно просто использовать OrderSelect() или !OrderSelect() вместо OrderSelect()==false 我知道了。 --- 2011.07.03 19:01 #4843 FOReignEXchange: 我从来没有见过一个不真实的。 你看错了人的代码。 Andrey F. Zelinsky 2011.07.03 19:02 #4844 FOReignEXchange: 我不是这个意思。 只是,当我选择一个订单时,我总是把它写满。 我从未见过没有真实的。 我知道了。 两个完全平等的条目--一个条目不比另一个差,也不比另一个好--每个人都按自己的意愿,按自己的理解,按自己的习惯来做。 Andrey F. Zelinsky 2011.07.03 19:05 #4845 sergeev: 你看错了人的代码。 顺便说一句,我必须把它交给FOReignEXchange。 我打开"Moving Average.mq4",看到了它。 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; Anatoli Kazharski 2011.07.03 19:11 #4846 abolk: Print()可以直接在你定义的函数中输出变量global_trailing_SP的值。 你从哪里读取这个变量的值? 哇哦!))如果我从提出的函数中打印()global_trailing_SP 变量的值,我在日志中看到一个完全出乎意料的值(用黄色标出)。而在这个功能之外的之前,它的打印是正确的(与红点相反)。 global_trailing_SP 是一个全局变量。它被声明在Start() 函数之外。 double global_trailing_SP = 0.0; 在尾随止损功能成功改变主仓位的价值后,主仓位的止损值在一个单独的循环中被分配给global_trailing_SP 变量。 for(count = OrdersTotal()-1; count >= 0; count--) { OrderSelect(count,SELECT_BY_POS,MODE_TRADES); if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP) { global_trailing_SP = NormalizeDouble(OrderStopLoss(),dgt); Print("global_trailing_SP: ",DoubleToStr(global_trailing_SP,5)); } } 这就是上面红点所表示的数值。然后这个值被传递给函数,在那里进行各种顺序的修改。但结果是,日志显示了一个我没想到的数值,而止损的数值当然没有修改。 如何解决这个问题?事实证明,并不是所有的事情都像第一眼看到的那样合乎逻辑))) Денис 2011.07.03 19:11 #4847 在SELLSTOP所在的地方这样做不是更好吗? if((global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)) { OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink); Print("Условие ModifyOrder исполнилось: global_trailing_SP: ",global_trailing_SP,", Stop Loss: ",OrderStopLoss()); } else Print("Условие не выполняется!"); 这样一来,一切都与SELL中的完全一样。 Anatoli Kazharski 2011.07.03 19:14 #4848 FOReignEXchange: 在这里做不是更好吗,SELLSTOP就在这里? 因此,一切都与SELL中的完全一样。 这似乎不是本案中的问题。在上面阅读更多内容。 Andrey F. Zelinsky 2011.07.03 19:21 #4849 tol64: 哇哦!))如果我从提出的函数中打印()global_trailing_SP 变量的值,我在日志中看到一个绝对意外的值(用黄色突出显示)。而在这个功能之外的之前,它的打印是正确的(与红点相反)。 global_trailing_SP 是一个全局变量。它是在Start() 函数之外声明的。 在尾随止损功能成功改变主仓位的价值后,在一个单独的循环中,global_trailing_SP 变量被分配为主仓位的止损值。 这就是上面红点所示的数值。 然后这个值被传递给函数,在那里进行各种顺序的修改。但结果是,日志显示了一个我没有想到的数值,止损的数值当然也没有修改。如何解决这个问题?事实证明,并不是所有的事情都像第一眼看到的那样合乎逻辑))) 显示你如何读取global_trailing_SP 变量 Денис 2011.07.03 19:27 #4850 所以我不明白。在修改主要订单时,该待处理订单 是否存在? 如果它存在,那么主订单的修改和挂单的修改就在同一个块中。如果主订单被修改,待处理的订单也应该这样做,如果这是你的想法。 另一件事是,我们的想法并不可行。这意味着条件中的一个错误。试着用与修改主要订单的条件相同的方式来做一切事情,正如我在上面显示的那样。在我看来,错误是在逻辑上。我并不感到惊讶。一切都非常复杂。你应该把它变得更简单。 1...478479480481482483484485486487488489490491492...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我不明白?我只是在帮助中寻找,那里的OrderSelect()使用一个条件。而没有真正的我还没有在任何地方看到它。
if是一个条件语句。而且括号里应该有一个条件。这对我来说似乎更符合逻辑。虽然可能没有什么区别。
规格。
返回真或假
见https://docs.mql4.com/ru/basis/operators/if。
如果表达式为真,则运算符1被执行,控制权交给运算符2之后的运算符(即运算符2不被执行)。如果表达式为假,则执行operator2。
if 运算符的else 部分可以省略。因此,省略了else 部分的嵌套if 语句可能会引起歧义。在这种情况下,else 被链接到同一块中最近的、没有else 部分的前面的if 语句。
也就是说,比较OrderSelect()==true是 没有必要的--只需使用OrderSelect()或!OrderSelect( )代替OrderSelect()==false。
我不是这个意思。
只是,当我选择一个订单时,我总是把它写满。
我从未见过没有真实的。
我知道了。
我从来没有见过一个不真实的。
你看错了人的代码。
我不是这个意思。
只是,当我选择一个订单时,我总是把它写满。
我从未见过没有真实的。
我知道了。
两个完全平等的条目--一个条目不比另一个差,也不比另一个好--每个人都按自己的意愿,按自己的理解,按自己的习惯来做。
你看错了人的代码。
顺便说一句,我必须把它交给FOReignEXchange。
我打开"Moving Average.mq4",看到了它。
Print()可以直接在你定义的函数中输出变量global_trailing_SP的值。
你从哪里读取这个变量的值?
哇哦!))如果我从提出的函数中打印()global_trailing_SP 变量的值,我在日志中看到一个完全出乎意料的值(用黄色标出)。而在这个功能之外的之前,它的打印是正确的(与红点相反)。
global_trailing_SP 是一个全局变量。它被声明在Start() 函数之外。
在尾随止损功能成功改变主仓位的价值后,主仓位的止损值在一个单独的循环中被分配给global_trailing_SP 变量。
这就是上面红点所表示的数值。然后这个值被传递给函数,在那里进行各种顺序的修改。但结果是,日志显示了一个我没想到的数值,而止损的数值当然没有修改。 如何解决这个问题?事实证明,并不是所有的事情都像第一眼看到的那样合乎逻辑)))
在SELLSTOP所在的地方这样做不是更好吗?
这样一来,一切都与SELL中的完全一样。
在这里做不是更好吗,SELLSTOP就在这里?
因此,一切都与SELL中的完全一样。
这似乎不是本案中的问题。在上面阅读更多内容。
哇哦!))如果我从提出的函数中打印()global_trailing_SP 变量的值,我在日志中看到一个绝对意外的值(用黄色突出显示)。而在这个功能之外的之前,它的打印是正确的(与红点相反)。
global_trailing_SP 是一个全局变量。它是在Start() 函数之外声明的。
在尾随止损功能成功改变主仓位的价值后,在一个单独的循环中,global_trailing_SP 变量被分配为主仓位的止损值。
这就是上面红点所示的数值。然后这个值被传递给函数,在那里进行各种顺序的修改。但结果是,日志显示了一个我没有想到的数值,止损的数值当然也没有修改。如何解决这个问题?事实证明,并不是所有的事情都像第一眼看到的那样合乎逻辑)))
显示你如何读取global_trailing_SP 变量
所以我不明白。在修改主要订单时,该待处理订单 是否存在?
如果它存在,那么主订单的修改和挂单的修改就在同一个块中。如果主订单被修改,待处理的订单也应该这样做,如果这是你的想法。
另一件事是,我们的想法并不可行。这意味着条件中的一个错误。试着用与修改主要订单的条件相同的方式来做一切事情,正如我在上面显示的那样。在我看来,错误是在逻辑上。我并不感到惊讶。一切都非常复杂。你应该把它变得更简单。