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

 
Artyom Trishkin:

在循环中,当n==0时,打印出第n条的时间--你会立即明白循环的起点是什么。

它似乎能正确显示一切。


 
void OnTick()
  {
   if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]==EMPTY_VALUE)
                  Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n));
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)
               {
                  Last_Arrow_Buy_volume = iOpen(_Symbol,_Period,n);
                  Last_Arrow_Buy_time   = iTime(_Symbol,0,n);
                  Last_Arrow_Buy_index  = n;
                  Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index,", Last_Arrow_Buy_time = ",Last_Arrow_Buy_time);
                  break;
               }   
            }
         
   if (CopyBuffer(CrossAD, 2, 0, period_find, Buf_Arrow_Sell) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Sell[n]==EMPTY_VALUE)
                  Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n));
               if(Buf_Arrow_Sell[n]!=EMPTY_VALUE)
               {
                  Last_Arrow_Sell_volume = iOpen(_Symbol,_Period,n);
                  Last_Arrow_Sell_time   = iTime(_Symbol,0,n);
                  Last_Arrow_Sell_index  = n;
                  Print("Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume,", Last_Arrow_Sell_index = ",Last_Arrow_Sell_index,", Last_Arrow_Sell_time = ",Last_Arrow_Sell_time);
                  break;
               }
            }
      
Comment("-------------------------", 
         "\n Last_Arrow_Buy_volume     = ",Last_Arrow_Buy_volume,
         "\n Last_Arrow_Buy_index        = ",Last_Arrow_Buy_index,
         "\n Last_Arrow_Buy_time         = ",Last_Arrow_Buy_time,
         "\n ---------------------- ",
         "\n Last_Arrow_Sell_volume     = ",Last_Arrow_Sell_volume,
         "\n Last_Arrow_Sell_index        = ",Last_Arrow_Sell_index,
         "\n Last_Arrow_Sell_time         = ",Last_Arrow_Sell_time
         ); 
  }
 

从当前的蜡烛开始检查,一旦发现非空值就结束。

 
Sergey Voytsekhovsky:
if(n==0)
   Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n));
 
Sergey Voytsekhovsky:

从当前的蜡烛开始检查,一旦发现非空值就结束。

那是什么问题呢?

 
Artyom Trishkin:

那是什么问题呢?

 
Sergey Voytsekhovsky:
它是什么?
 

通过扫描,一切都很好,它看起来需要去的地方和需要去的时间。

但图表上已经有了一个新的箭头,但在评论中,在印刷品中还看不到它。


 
Artyom Trishkin:
那里有什么?

它以蓝色突出显示,根据你的选项(n==0)和我的选项(紧随你之后),它都是在新的蜡烛开始时进行投票。我想这是正确的。

但是已经有一个向下的箭头 在三个烛台后面,而烛台的指数与最外层的箭头12和57在打印和评论上。

 
Sergey Voytsekhovsky:

通过扫描,一切都很好,它看起来需要去的地方和需要去的时间。

但图上已经有了一个新的箭头,但在评论中,在印刷品中还看不到它。


这支新箭在什么时候,在什么时候开始循环?

你必须处理好你自己的代码。要么你打印所有的值并了解它们来自哪里,要么你放一个断点 并进入调试器,看到每一步的所有值。但我认为你还不需要调试器...

原因: