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

 
Marat Sultanov:
那里有一节代码,我没有理解。你需要自己纠正它。


你能告诉我究竟....

 
Rafael Sahibgareev:


你能告诉我究竟....


下载代码 -Marat Sultano 在那里写了什么不清楚。
 

马拉特,感谢你对代码的帮助 ......

另一个问题,请告诉我如何正确安排以下代码部分的循环,......

//--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if(IsLossCandle)
            if(ASSHighBuf[i-1]>=max_size_candel)
               BufferLossCanle[i]=low[i-1];
                 {
                  if(IsTopShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]>0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
                        BufferTop[i]=low[i-1];
                  if(IsLowerShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]<0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
                        BufferLower[i]=high[i-1];
                 }
        }


//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Rafael Sahibgareev:

马拉特,感谢你对代码的帮助 ......

另一个问题,请告诉我如何正确安排以下代码片段的循环......

它是这样的。

//--- цикл расчета
   const int Limit = fmax(prev_calculated, 1);

   for(int i=Limit; i<rates_total; ++i)
   {
      //--- если предыдущая свеча имеет параметры больше MSC
      if(IsLossCandle)
      {
         if(ASSHighBuf[i-1]>=max_size_candel) BufferLossCanle[i]=low[i-1];

         if(IsTopShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]>0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
            {
               BufferTop[i]=low[i-1];
            }
         }

         if(IsLowerShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]<0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
            {
               BufferLower[i]=high[i-1];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return(rates_total);
}

我只是对你的代码的一个片段感到困惑。

if(ASSHighBuf[i-1]>=max_size_candel)
   BufferLossCanle[i]=low[i-1];
     {

为什么大括号要站在那里?是否有一个你没有实施的意图?(我指的是条件性的else 操作符)

 

马拉特,再次感谢你,22年前我在学校写了最后一段代码。

我坐在其他运营商的费用,在哪里把它作为一个断路器的未来四个运营商.....。

我想我可以自己处理........

Marat,如果不使用 "循环 "就能完成计算,请提供建议或给我指出链接 .....

 
Rafael Sahibgareev:

马拉特,再次感谢你,22年前我在学校写了最后一段代码。

我坐在其他运营商的费用,在哪里把它作为一个断路器的未来四个运营商.....。

我想我可以自己处理........

马拉特,请告知或指出链接,是否可以不使用 "循环 "来进行这种计算.....。

对不起,请问你的目的是什么,你想从讨论的这段代码中得到什么结果?一旦我理解了你的意图,我就会更容易帮助你 :)
 

关于周期的问题,问出了好奇心......这是否可能......

它本身是没有棘手的,第一个运算符 "if "如果工作禁止的话,不工作方向分类运算符.......。

此外,在未来,我计划改变代码,使其在零条上勾选工作。

这样,当价差超过....indicator时,这个相同的禁止分类器会出现在tick上,而不需要额外的聚类过滤器scalper....。

事实上,我的理解是,所有的模式都生活在ticks......。

 

你需要一个周期来穿过酒吧。如果你只需要最后1或2个小节的读数,你可以不使用循环,但如果你需要分析十几个小节,你最好使用循环,对吗?

如果你拒绝使用循环,你将注定自己成为中国的代码。)

 

拉斐尔,我建议你按照这个顺序阅读。

  1. 条件性的if-else语句
  2. 运营商为
  3. While 循环操作符
  4. 继续操作者继续
  5. 继续操作者休息

如果你被吸进去了,那就再深入点。

  1. 操作员
  2. 语言基础知识
我按照实践中的使用频率对它们进行了划分。没有什么复杂的东西,只是足以让人了解它的要点。


 

谢谢你的意见和建议,今天太晚了,明天我将研究帮助和文章....。

我只对包括option[0]在内的最后三个柱子感兴趣.....

以后我可能会需要更多的15-20......,我不能没有周期.....。

再次真诚地感谢您的帮助和支持.....