Mql4 如何解决整数的“并非所有控制路径都返回值”错误

Mql4 如何解决整数的“并非所有控制路径都返回值”错误,mql4,algorithmic-trading,metatrader4,mt4,Mql4,Algorithmic Trading,Metatrader4,Mt4,我有一个错误,不是所有的控制路径都返回一个值。我以前见过它,并且能够为一个简单的bool返回值解析它。这有点不同,对我来说似乎是一个挑战,因为它有一个for循环,同时返回整数。请参阅下面我的代码: int ArrowedCandleIndex () { for (int i=0; i<NumBars; i++) { double dnArrow = iCustom(Symbol(),Period(),ARROWS_SIGNAL_NAME,ARR

我有一个错误,不是所有的控制路径都返回一个值。我以前见过它,并且能够为一个简单的bool返回值解析它。这有点不同,对我来说似乎是一个挑战,因为它有一个for循环,同时返回整数。请参阅下面我的代码:

int ArrowedCandleIndex  () {

      for (int i=0; i<NumBars; i++)
      {
         double dnArrow = iCustom(Symbol(),Period(),ARROWS_SIGNAL_NAME,ARROWS_SIGNAL_BUFFER_DN,i);
         double upArrow = iCustom(Symbol(),Period(),ARROWS_SIGNAL_NAME,ARROWS_SIGNAL_BUFFER_UP,i);

         if ((dnArrow!=EMPTY_VALUE) && (DoubleToStr(dnArrow,Digits()) != "0.00000"))  {

            currentArrowedCandleIndex = NumBars;

            return currentArrowedCandleIndex;
            }
         if ((upArrow!=EMPTY_VALUE) && (DoubleToStr(upArrow,Digits()) != "0.00000"))  {
            currentArrowedCandleIndex = NumBars;

            return currentArrowedCandleIndex;
            }
      }
  }
我如何解决这个问题

问:如何解决并非所有控制路径都返回值的问题


如果你一直到for循环的末尾都没有找到任何东西,会发生什么情况?@RaymondChen它应该返回-1如果它应该这样做,那么你应该这样做。
int ArrowedCandleIndex  () {

      for ( int i = 0; i <  NumBars; i++ )
      {
         ...    
         if (  (  EMPTY_VALUE != dnArrow )
            && ( "0.00000"    != DoubleToStr( dnArrow, Digits() ) )
               ) {
                 ...
                 return currentArrowedCandleIndex; // ------------ JIT/RET--(a)
         }

         if (  (  EMPTY_VALUE != upArrow )
            && ( "0.00000"    != DoubleToStr( upArrow, Digits() ) )
               ) {
                 ...
                 return currentArrowedCandleIndex; // ------------ JIT/RET--(b)
            }
      }
      return EMPTY_VALUE; // ------------------------------------- JIT/RET--(c)
  }