静态数组 ? - 页 3

 

好的,我看到了一些东西。

 while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;    
     }

这个循环什么时候结束? 当i不>=0时,即-1

那么接下来的代码是.

     for(val1=High[i]; v1[i] == 0 ;i++)  // or v1[i] == EMPTY_VALUE
      {
      Print (v1[i]);
      }

所以i的起始值是-1......因此你的打印输出。v[-1]实际上=0,所以循环结束。

 
当我打印任何东西的时候,它似乎总是等于0

int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
   
     Print (v1[i+10]);
      

我已经把i改成了别的东西,还有while语句,甚至创建了一个完全不同的代码,所有这些似乎都=0,我不知道为什么。
但指标却在工作,而且缓冲区似乎能正确容纳v1[i]内的val1,但我却不能引用数组中的任何东西来打印它。

一切总是=0

我再继续读一些。






 
for(v1[i]=High[i]; v1[i] !=0; i++)
      {
      Print (v1[i]);
      }
      

This prints nothing so still having -1 issue I guess
但如果它以-1开始,那么它在循环一次后就会结束,因为i++会使它再次归零。

我不知道这个for语句会受到while语句的影响,因为它发生在while语句之外。

 
int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
      { 
      v1[i]=High[i];
      Print (v1[i]);
      }
      else          
      {
      v1[i]=v1[i+1];
      }

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
即使在循环内部和之前打印,仍然是0

似乎连最基本的工作都被我忽略了。甚至在文档或书中读到Bars时也没有提到-1这个主题,至少在Bars或预定义变量部分,我认为它应该是这样。
这让我很沮丧。在这个简单的问题上花了1.5周的时间,但我认为这是最简单的任务,可以帮助我朝着正确的方向前进。

多么令人沮丧的事情啊!大笑

我明天会再试一下。
 

你没有仔细阅读我的帖子 ......

Bars在任何时候都不等于-1 ......或者与我提到的-1有任何关系。

你在两个循环中使用i 变量 ...... 除非你在两个循环之间将其改为其他值,否则第二个循环的起始值将是第一个循环的结束值。

 
我很迷惑


我完全摆脱了我的for循环,并认为我将只是在循环内打印。
我试着重新初始化i=0或i !=0,但没有效果。甚至完全换了一个变量,如val3-iFractals.....a。
而a=0,没有条,然后从那里也往上数,打印还是等于0。

我不明白为什么在循环内打印也不能工作,就像上面发布的代码一样。

谢谢

 

也许你可以回答我一个问题 . .

为什么这么多没有编码经验的人似乎对添加打印 语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M?

你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你也不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值是什么范围?

 

我复制了你的代码,添加了一些打印语句并运行它......它正在打印......。

2011.09.18 14:42:24 Agent86 EURUSD,H1: v1[29]=1.4727

 
RaptorUK:

也许你可以回答我一个问题 . .

为什么这么多没有编码经验的人似乎对添加打印语句感到恐惧?为什么你想让自己的生活变得如此艰难 ......也许你喜欢S&M?

你有一个单一的Print语句 .你甚至不知道当时i 的值是多少,你不知道val1 的值是多少......你知道iFractals是如何工作的吗,我是说它是如何计算的,它给出的值的范围是什么?


我并不害怕添加打印 语句,我把它们放在每个变量后面,但不明白它在打印什么,为什么,因为它不是我期望看到的打印。你看到的那个单一的打印语句并不是我放在那里的唯一语句。如果我只试了一个单一的打印语句,我就不会发帖。经过2-3周的时间,我尝试了上百种方法,并阅读和重读了100多个帖子,以及字典、书、文档等,才发帖试图了解这个数组是如何工作的,以及如何打印元素和值 ,我每天工作2-3小时试图了解这个问题,但我没有多少进展,尽管我在试图弄清这个问题的时候学到了很多其他东西。我完全重写了代码,用for循环代替了while循环,并将数组限制为100个元素,以为这样可以简化一些;但仍然无法打印出数值。







我只是不明白。我以为iFractals给出的是一系列5根蜡烛中中间蜡烛的高/低值,前提是左边的2根蜡烛和右边的2根蜡烛比中间蜡烛高或低。标记或记录中间蜡烛的高点或低点。我不知道iFractals的实际计算方法,但我认为这并不重要,因为我正在打印它,如果>0,我认为这意味着真实,而且它被初始化为High[i]。我只是不明白这一点。








 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]=0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]=0


从这段代码来看,是的,除了val1之外,其他地方都有其他打印语句,在代码的任何地方尝试打印v1[i],结果都是=0

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL
            
  
          
   
    for(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
         
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
     
      i--;
       
     }
   
   for(i=50; i>=0; i--)
      {
      Print ("v1[", i, "]= ", v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+