新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1936

 
我搞不清楚哪里出了问题。指示器中有一个while循环,但它似乎工作正常。起初在测试过程中一切正常,但在同一个地方,程序挂起,终端也是如此,我不得不从终端删除源代码。在其他货币上,它也会挂起。我在程序周围都加了注释,最后在返回前达到了Comment(rate_total+"/n "+prev_calculated);并停止。而评论显示我们得到了3247和3247这样的数字,这意味着工作的条件(rate_total>prev_calculated)没有得到满足,程序必须不做任何事情。为什么会悬挂?
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total>prev_calculated)
     { 
         Comment("0");
          if(Count==0)
             total = rates_total-4;
          else
             total = rates_total - prev_calculated+2;

          if(total>10000)
             total=10000;

          for(int i=total; i>2; i--)
            {
            }
       
          while(begin<size-2)
            {
            }
      Count++;
     }  
     Comment(rates_total+"\n"+prev_calculated);          //виснет здесь(коммент 3247 и 3247)
   return(rates_total);
  }
 
Aleksandr Kononov Comment(rate_total+"/n "+prev_calculated);并停止。而评论显示我们得到了3247和3247这样的数字,这意味着工作的条件(rate_total>prev_calculated)没有得到满足,程序必须不做任何事情。为什么会悬挂?

仔细阅读文件

如果表达式为真,运算符将被执行,直到表达式变为假
循环条件中的变量是什么?而如果初始条件为真,什么时候变成假才能退出循环?
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
 
Alexey Viktorov #:

仔细阅读文件

循环条件中的这些变量是什么?而如果初始条件为真,什么时候变成假才能退出循环?

循环只是为了理解它们是什么。如果你写了它们,你会在那里得到大量的代码。问题是为什么工作在返回之前就停止了,尽管在这个勾上甚至什么都没有发生。在评论率中,总数等于以前的计算值,所以我们什么都不做。

 
如果有的话,该指标可以工作,但在某些条件下会挂起。
 
会不会是某种延迟的错误?程序到达终点后就挂起,这可能吗?
 
问题毕竟是在循环中。评论》 已经晚了。打印是循环中的最后一个
 
你能告诉我如何在mql4的其他对象中找到一个箭头吗?我需要删除所有的箭头,并留下这一行
 
Aleksandr Kononov #:
你能告诉我如何在mql4的其他对象中找到一个箭头吗?移除所有的箭头,留下线条

那么,请阅读文件

int  ObjectsDeleteAll(
   int    sub_window=EMPTY,   // индекс окна
   int    object_type=EMPTY   // тип объекта для удаления
   );
ObjectsDeleteAll - Графические объекты - Справочник MQL4
ObjectsDeleteAll - Графические объекты - Справочник MQL4
  • docs.mql4.com
ObjectsDeleteAll - Графические объекты - Справочник MQL4
 
谢谢你!
 
了解mql4的好时机。有一个函数可以关闭系列中最远的亏损订单的百分比部分,由于任何方向的获利头寸。我们需要帮助来改进这个功能!也就是说,我们需要部分关闭系列中的所有剩余订单(由于任何方向的盈利头寸),而不是第一个订单。提前感谢!
附加的文件:
KJH.mq4  8 kb
原因: