【发布时间】:2019-12-30 11:20:33
【问题描述】:
我正在尝试遍历一系列收盘价来获得每种资产的回报率。我写的代码是:
´´´
void Returns(MqlRates &rt[], int a_size)
{
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;
}
void OnStart()
{
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);
}
}
}
´´´
我收到以下错误消息:
2019.12.30 08:11:57.983 OnStart (IBOV,D1) 数组超出 'OnStart.mq5' (39,15) 中的范围
指的是数组——rtacao[]——在计算中的返回值。我看不到我在循环中做错了什么。有人可以帮我吗?
【问题讨论】: