初学者的问题 MQL5 MT5 MetaTrader 5 - 页 794

 
007yurik:

朋友们,帮助一个傻瓜。该想法如下。当 "Ind "变量达到设定水平时,转为等待 "值 "改变方向,同时等待 "Ind "不再调和。


   if(Ind[0]<=-0.7)
     {
      while(Value[3]>Value[2]<Value[1])
        {
         if(CopyBuffer(InpInd2_Handle,1,SignalBar,3,Value)<=0)
           {
            Recount=true;
            return;
           }
        }
      if(BuyPosOpen) BUY_Open=true;
     }


什么是正确的方法?

   if(Ind[0]<=-0.7)
     {

换成

   bool pravda=false;

   if(pravda || Ind[0]<=-0.7)
     {
      pravda=true;
 
007yurik:

...


pivomoe:

...


请正确插入代码:在论坛上正确插入代码

 
007yurik:

朋友们,帮助一个傻瓜。该想法如下。当 "Ind "变量达到设定水平时,我们转而等待 "Value "改变方向,在等待过程中不再检查 "Ind"。

正确的方法是什么?

我认为这里有一个错误。

while(Value[3]>Value[2]<Value[1])

它必须是。

while(Value[3]>Value[2] §§ Value[2]<Value[1])
 
Ivan Ivanov:

我认为这里有一个错误。

它必须是。

键盘上的段落符号在哪里?我以为它已被禁用...

while(Value[3]>Value[2] §§  Value[2]<Value[1])
 
Ivan Ivanov:

我认为这里有一个错误。

应该是这样。

一般来说,情况并非如此,你可以通过
while(Value[2]<Value[1])
 
pivomoe:

换成

如果我做得正确(这很值得怀疑),它就会挂起,显然它不会从循环中出来。
 bool pravda=false;

   if(pravda || Ind[0]<=-0.7)
   pravda=true;
   
   {   
      
      while(Value[2]<Value[1])
         {
         if(CopyBuffer(InpInd2_Handle,1,SignalBar,3,Value)<=0) {Recount=true; return;}                 
          }
          
         if(BuyPosOpen) BUY_Open=true;     
                                                  
         if(SellPosClose) SELL_Close=true;
         UpSignalTime=datetime(SeriesInfoInteger(Symbol(),InpInd_Timeframe,SERIES_LASTBAR_DATE))+TimeShiftSec;
         }
 
007yurik:
如果我做得对(这很值得怀疑),它就会挂起,显然它不会从循环中出来。
 if(pravda || Ind[0]<=-0.7)
 {
   pravda=true;         
 
pivomoe:
试了一下,同样的情况,当Ind超过水平时,它就挂了。
 
1
007yurik:
试了一下,同样的情况,当Ind超过水平时,它就挂了。

1.使bool pravda成为全局性的。(https://www.mql5.com/ru/docs/basis/variables/global)

2.用if代替while。

3.当if(来自步骤2)起作用时,返回pravda=false。

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
007yurik:

朋友们,帮助一个傻瓜。该想法如下。当 "Ind "变量达到一个给定的水平时,我们改成等待 "Value "改变方向,同时等待 "Ind "不再被检查。




什么是正确的方法?

你确定指标是在while循环中重新计算的吗?
原因: