下列代码为什么在新版MT4编译器中的编写是错误的,而旧版的则是对的?就是这句 Label3Buffer[i]=Label3Buffer[i+1];是有问题的,这是为什么?改怎么处理?
int start()
{
for (int i=0;i<Bars;i++)
{
Label1Buffer[i]=iMA(Symbol(),PERIOD_CURRENT,junx1,0,MODE_EMA,PRICE_CLOSE,i);
Label3Buffer[i]=Label3Buffer[i+1];
}
return(0);
}
是编译不能通过还是指标不显示?
编译是通过了,但是却不能加载到窗口上,在MT4平台上显示array out of range in
上面的问题没有解决,我有遇到新问题
下面的代码 也是不能编译成功的,编译结果显示 'Label1Buffer' - parameter conversion not allowed xdzb.mq4 112 19,如果知道麻烦教教我,我的QQ1837462229
int start()
{
Label1Buffer[0]=15;
Label2Buffer[0]=18;
double assd=hello(Label1Buffer[0],Label2Buffer[0],12,12,14);
return(0);
}
"array out of range" 应该是在i=Bars-1的时候,"Label3Buffer[i]=Label3Buffer[i+1];"会出现非法访问吧。
后面的那个参数类型转换错误,要看你hello函数的原型是什么,是不是传错参数类型了?
"array out of range" 应该是在i=Bars-1的时候,"Label3Buffer[i]=Label3Buffer[i+1];"会出现非法访问吧。
后面的那个参数类型转换错误,要看你hello函数的原型是什么,是不是传错参数类型了?
hell\o函数的数据类型是一样的,都是 double
int start() { for (int i=0;i<Bars-1;i++) //注意这里是Bars-1 { Label1Buffer[i]=iMA(Symbol(),PERIOD_CURRENT,junx1,0,MODE_EMA,PRICE_CLOSE,i); Label3Buffer[i]=Label3Buffer[i+1]; //注意这里i+1越界 } return(0); }
那还是看一下 xdzb.mq4 文件的第112行是什么内容吧,也许是别的代码?
下列代码为什么在新版MT4编译器中的编写是错误的,而旧版的则是对的?就是这句 Label3Buffer[i]=Label3Buffer[i+1];是有问题的,这是为什么?改怎么处理?
int start()
{
for (int i=0;i<Bars;i++)
{
Label1Buffer[i]=iMA(Symbol(),PERIOD_CURRENT,junx1,0,MODE_EMA,PRICE_CLOSE,i);
Label3Buffer[i]=Label3Buffer[i+1];
}
return(0);
}