C++ 阵列超出范围MQL5循环

C++ 阵列超出范围MQL5循环,c++,arrays,loops,mql,mql5,C++,Arrays,Loops,Mql,Mql5,我试图通过一系列收盘价来获得每项资产的回报率。我写的代码是: ' 无效返回(MqlRates&rt[],整数大小) { double-rtacao[]; ArraySetAsSeries(rtacao,真实); ArrayResize(rtacao,(a_尺寸-1)); 对于(int i=1;i数组从0开始计数。这意味着数组的最后一个索引是(array_size-1)。根据这一点,您应该使用“i

我试图通过一系列收盘价来获得每项资产的回报率。我写的代码是:

'

无效返回(MqlRates&rt[],整数大小)

{

double-rtacao[];
ArraySetAsSeries(rtacao,真实);
ArrayResize(rtacao,(a_尺寸-1));

对于(int i=1;i数组从0开始计数。这意味着数组的最后一个索引是(array_size-1)。根据这一点,您应该使用“i double rtacao[]; ArraySetAsSeries(rtacao, true); ArrayResize(rtacao,(a_size-1)); for(int i=1;i<=a_size;i++) { rtacao[i]=MathLog(rt[i].close/rt[i-1].close); } return;
 int nacoes=144; 
 string acao[];

 count_instr("ativos.txt",nacoes);
 ArrayResize(acao,nacoes);
 load_instr("ativos.txt",nacoes,acao,100);

 MqlRates rates[];
 ArraySetAsSeries(rates,true);
 ArrayResize (rates,100);


 for (int i=0;i<nacoes;i++)
  {

     SymbolSelect(acao[i],true);
     if(CopyRates(acao[i],APeriod,0,100,rates)!=100)
     {
        Print("CopyRates of ",acao[i]," failed, no history");
        //Erase(acao, i);
        //nacoes=nacoes-1;
     } else
     {
        Returns(rates, 100);
     }
  }     
for(int i=0;i<a_size;i++)
{
  rtacao[i]=MathLog(rt[i].close/rt[i-1].close); 
}
for(int i=0;i<a_size;i++)
{
  if(i==0)
     // something that happens when i is 0
  else
     rtacao[i]=MathLog(rt[i].close/rt[i-1].close); 
}
// something that happens when i is 0
for(int i=1;i<a_size;i++)
{
  rtacao[i]=MathLog(rt[i].close/rt[i-1].close); 
}