[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 275

 
alsu:

我没有看到你的int i字符串和索引初始化。请在工作室里。

ZZY我的立陶宛语说得不好,代码中的注释让我有点不适应)))

我的数组里有零。阵列正在正常增加。它在印刷品中是可见的。

2013.04.08 23:18:37 2013.04.04 20:00 欧元兑美元,M15:阵列大小 19

但它在数组中写的是零

2013.04.08 23:18:37 2013.04.04 20:00 测试欧元兑美元,M15: avgPriceC[8]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 测试欧元兑美元,M15: avgPriceC[7]=0.00000000
04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[6]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[5]=0。00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[4]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[3]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[2]=0.00000000
2013.04.08 23:18:37 2013。04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[1]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[0]=0.00000000
所有值为0的元素

avgPriceC[i] = Close[1];

但不知道怎么做。可能是其他方面的原因。我甚至重新安装了我的MetaTrader。这并没有帮助。

我想通过主要数据得到无限的数组,但没有指定结束。

//greitas MA
extern int     MA_Period1     =  8;
extern int     plius1         =  100;
extern int     MA_Shift1      =  0;
extern int     MA_Method1     =  0;                                                 
//Letas MA
extern int     MA_Period2     =  13;
extern int     plius2         =  100;
extern int     MA_Shift2      =  0;
extern int     MA_Method2     =  3;                                                 
//Fleto pradzia
//fleto ipradzios eskojimas pagal indikatoriu arba laika
extern bool  start       =  true;    // true ->pagal indikatoriu, false->pagal laika
// pagal indikatoriu fleto pradzios pradesim ieskoti nuo sio laiko
extern int     startHourFlatMA        =  16;    
extern int     startMinFlatMA        =  00;
extern string  startstartFlatMA       = "16:00";
extern string  endstartFlatMA       = "00:00";
//suradus pagal indikatoriu dar lauksim kol uzsidarys BarEnd zvake
extern bool    zvakes_pabaiga = true;//ar lauksim kol uzsidarys M240 zvake, ar priimsim kad fletas prasidejo nuo susikirtimo
extern int     BarEnd         =  240;
datetime       LastTime;
//datetime       startTime;
// pagal laika fleto pradzios pradesim ieskoti nuo sio laiko
extern int     startHourFlat        =  0;   //
extern int     startMinFlat         =  0;    //

//fleto pabaiga
//Fleto pabaiga jei indikatorius duoda signala siame laiko tarpe
//Laiko tarpo pradzia
extern int     startHourEnd        =  4;    
extern int     startMinEnd         =  45;
//laiko tarpo pabaiga arba fleto pabaiga
extern int     endHourEnd        =  7;    
extern int     endMinEnd         =  30;

//Ar naudosom Volumes filtra
extern bool volFiltr = true;            //true -> naudosim,   false -> nanaudosim

//skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo
extern int   gep = 300;  



//Naktinio-fletinio pipsavimo ijungimas
bool nightFlat = false; //true -> ijungtas,   false -> neijungtas



bool           susikirtimas = false;      
bool           flat; 
//masyvai
double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[];
double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; 
int i = -1; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int j = -1; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int n = -1;                          // kintamasis naujo masyvo indeksacijai
int iH, iL ,iO, iC, iT;
double C[], T[], y[];
double max;                               //max skirtumas tarp LR median ir Close
//*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*--*-*--*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-* 

int init ()
{
ArrayResize(chPriceH, 0);
ArrayResize(chPriceL, 0);
ArrayResize(chPriceO, 0);
ArrayResize(chPriceC, 0);
ArrayResize(chTime, 0);
ArrayResize(avgPriceH, 0); 
ArrayResize(avgPriceL, 0); 
ArrayResize(avgPriceO, 0); 
ArrayResize(avgPriceC, 0); 
ArrayResize (C, 0); 
ArrayResize (T, 0);
ArrayResize (y, 0);
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-**-*-*-*-*-*-*-*-*-*-
 int start()
 {
   double volMA11, volMA12, volMA21, volMA22;  
   double x[], y[]; 
   
   Print("******************STARTAS*****************************************");
   
   if(!TF_F_NewBar())return(0);
 
   volMA11 = iCustom(NULL, 15, "volumeMA",  2, 1);         
   volMA12 = iCustom(NULL, 15, "volumeMA",  2, 2);
   volMA21 = iCustom(NULL, 15, "volumeMA",  3, 1);
   volMA22 = iCustom(NULL, 15, "volumeMA",  3, 2);
    
   if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4)                             //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis
   {         
      if(TimeCurrent()>= StrToTime(startstartFlatMA) && TimeCurrent()<= StrToTime(endstartFlatMA)+24*60*60)
      {
         //Print("fleto starto ieskojimo laikas prasidejo  "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+
               //"  &&  "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60));
         bool laikas = true;
         Print("laikas = "+laikas);         
         if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0)
         {                                                                                   //jei buvo susikirtimas
            susikirtimas = true;           
         }
         if(susikirtimas == true) 
         {
            if(zvakes_pabaiga)
            {
               if(iTime(NULL, BarEnd, 1)!= LastTime)
               {            
                  LastTime = iTime(NULL, BarEnd, 1);
                  flat = true;           
                  LastTime = iTime(NULL, BarEnd, 1);
              }
              else return(0);            
           }
           else flat = true;
           if(flat == true)
           {
               i++; 
             //Zinodami indekso eiles numeri galim keisti masyvo ilgi
            
            ArrayResize(avgPriceH,i); 
            ArrayResize(avgPriceL,i);
            ArrayResize(avgPriceO,i); 
            ArrayResize(avgPriceC,i);        
           Print("ArraySize     "+ArraySize(avgPriceC));
            //jei fletas prasidejo renkam duomenis i masyva zvakiu HL ir OC skaiciavimui
            
            avgPriceH[i] = High[1];    
            avgPriceL[i] = Low[1];     
            avgPriceO[i] = Open[1];   
            avgPriceC[i] = Close[1];
         
            j++; 
            
            ArrayResize(chPriceC,i); 
            ArrayResize(chTime,i);    
           } 
         for(int a=0; a<=i; a++)Print("avgPriceC["+a+"]="+avgPriceC[a]);
         for(int b=0; b<=j; b++)Print("chPriceC["+b+"]="+chPriceC[b]);
         for(int c=0; c<=j; c++)Print("chTime["+c+"]="+chTime[c]);
        }        
     }
  }
    
  return(0);
}
 
gince:


在KIM的例子中还有


没有,没有全局声明,每个函数都有自己的y[]。


至于你的代码和零,让我用一个例子来解释。

如果int a[],n=5; ArrayResize(a,n), 那么最后一个数组元素 的索引是n-1,而不是n。你有。

               i++; 
            
            ArrayResize(avgPriceH,i); 
            ArrayResize(avgPriceL,i);
            ArrayResize(avgPriceO,i); 
            ArrayResize(avgPriceC,i);        
            
            avgPriceH[i] = High[1];    
            avgPriceL[i] = Low[1];     
            avgPriceO[i] = Open[1];   
            avgPriceC[i] = Close[1];

很明显,它在阵列的边界之外。因此,存在着零值。正确的方法是

            avgPriceH[i-1] = High[1];    
            avgPriceL[i-1] = Low[1];     
            avgPriceO[i-1] = Open[1];   
            avgPriceC[i-1] = Close[1];
 
tara:
完全不一样,但非常不同。读取全局和局部数据。
很抱歉我错过了。CMM有一个局部变量
 


塔拉和阿尔苏





非常感谢你。

 

下午好,我需要帮助解决这个问题:有一个数组Mas[10]。我需要找到每个单元格与每个单元格的乘积。我做了这样一个结构,其中运算符if(i==j)消除了单元格本身的积。问题是,我得到的是双重数学,即例如i=1和j=2的结果与i=2和j=1的结果相同。应该写什么附加条件来防止重复计算?

for(i=0; i<10; i++)
{
   for(j=0; j<10; j++)
   {
      if(i==j) continue;
      x = Mas[i]*Mas[j];
   }
}
 
for(i=0; i<10; i++)
{
   for(j=i+1; j<10; j++)
   {
      //if(i==j) continue;
      x = Mas[i]*Mas[j];
   }
}
 
Roger:
谢谢你。
 

大家好!

我不熟悉MQL4的编码。 我想尝试根据支撑位和阻力位写一个EA,但我不知道如何写代码,让程序寻找这些水平。我无法在代码库中搜索到它,我很笨拙,而且我的时间有限。

提前感谢!愿利润降临到你身上,愿麋鹿四处奔跑!)

 
Roger:
由于一些与写入数组的过程有关的原因,我们不得不把它变成二维的,也就是说,现在数组看起来像Mas[2][5]。现在,为了解决同样的问题,我们必须做四个循环,而不是两个for循环。在这种情况下,罗杰 建议的变体将不会起作用。当使用二维数组时,如何解决这个问题?
 
Ekburg:

大家好!

我不熟悉MQL4的编码。 我想尝试根据支撑位和阻力位写一个EA,但我不知道如何写代码,让程序寻找这些水平。我无法在代码库中搜索到它,我很笨拙,而且我的时间有限。

提前感谢!愿利润降临到你身上,愿麋鹿四处奔跑!)


看看CodeBaseDailyPivotPoints 中的指标!我想它会对你有所帮助的!好运!