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

 
Artyom Trishkin:

所以要通过第一个循环索引正确读取iCustom()。

另一个问题是,你需要从当前栏到左边的数据。这就是为什么我说--从零读到找到的那个,但不超过 rates_total-1。

当限制>1时,只读

其他时间没有新的数据,你需要的条形图的索引也不会改变。

它没有,但评注中最近的箭头的条数是正确的

//+------------------------------------------------------------------+
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<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--) 
     {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

他不想这样做。

你读过我写的东西吗?

另一个问题是,你想从当前的条形图中获得数据,而不是从左边。这就是为什么我说--从零读到找到的那个,但不超过 rates_total-1。

仅在极限值>1时读取

 
Artyom Trishkin:

你读过我写的东西吗?

另一个问题是,你需要从当前条形图到左边的数据。这就是为什么我说--从零读到找到的那一个,但不超过 rates_total-1。

仅在极限值>1时读取

我不是这样做的吗?
如果(limit>1)
{
limit=rates_total-1。

 
mila.com:

这不正是我所做的吗?
如果(limit>1)
{
limit=rates_total-1。

这就是你接下来所做的。

for(int i=limit; i>=0; i--) 

我在说什么呢?

 
Artyom Trishkin:

你接下来所做的是这样的。

我在说什么?

在极限值>1时读取

for(int i=limit; i>1; i--) 

我不知道怎么做才对?

 
mila.com:

在极限值>1时读取

我不知道怎么做才对?

这就是为什么我说--从零读到找到的那一个,但不超过 rates_total-1。
 
Artyom Trishkin:
这就是为什么我说从零开始读,找到正确的,但不超过 rates_total-1。

我告诉你,我不知道该怎么做。请给我看看)。

 
mila.com:

我告诉过你,我不知道该怎么做。请给我看看)。

if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
      // тут поиск до нужного вам бара. Нашли - запомнили бар или поставили точку куда нужно и break;
     }
  }

这个周期只去你想要的酒吧(如果找到的话),否则整个故事就会到极限。

 
Artyom Trishkin:

这个周期将只到你想要的酒吧(如果找到的话),或者对整个故事来说,到了极限。

我,相当糟糕,什么都没有显示。

//+------------------------------------------------------------------+
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<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
  if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

我真的很糟糕,它没有显示任何东西。

我还是不明白:你想找到并展示什么?只是在文字上--没有代码。

你在这里写。

你好,请帮助我。

我希望在任何时候都能知道指标箭头所在的条形图的编号。

在这个例子中,我试图在箭头位于第十根柱子上的情况下填充缓冲区。

因此,问题马上就来了:你为什么要在第十条上寻找它?而在一般情况下,你想在哪个酒吧?哪支箭呢?最后一个?还是最后两个--上层和下层?或者通过从右到左的数字知道所需箭头的条数?

这一点并不清楚。

并附上整个指标,而不是OnCalculate()。

原因: