我写指标是遇到一下问题

 

下列代码为什么在新版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);

}

 
iludmling:

下列代码为什么在新版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);

}


是编译不能通过还是指标不显示?

 
Nianfu Li:
编译是通过了,但是却不能加载到窗口上,在MT4平台上显示array out of range in 
 
iludmling:
编译是通过了,但是却不能加载到窗口上,在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函数的原型是什么,是不是传错参数类型了?



 

 
Jian Chen:

"array out of range" 应该是在i=Bars-1的时候,"Label3Buffer[i]=Label3Buffer[i+1];"会出现非法访问吧。

后面的那个参数类型转换错误,要看你hello函数的原型是什么,是不是传错参数类型了?



 

hell\o函数的数据类型是一样的,都是 double
 
iludmling:
hell\o函数的数据类型是一样的,都是 double
那还是看一下 xdzb.mq4 文件的第112行是什么内容吧,也许是别的代码?
 

 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);

}
 
Jian Chen:
那还是看一下 xdzb.mq4 文件的第112行是什么内容吧,也许是别的代码?
就是这行代码double assd=hello(Label1Buffer[0],Label2Buffer[0],12,12,14);
 
Ziheng Zhuang:

原来这样啊