真心求助公式代码错误在哪? - 页 2

 
DxdCn老师 你好!可能是我没说清楚。我用start()函数调用时,用print看不到#property indicator_chart_window int init() { return(0); } int deinit() { return(0); } int start() { double buffer1; double buffer2; buffer1=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,0); buffer2=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,0); if(LineCrossedLine(buffer1,buffer2)==true) {Print("穿过"); Alert("穿穿"); } bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2) //均线ExtBuffer1上穿均线ExtBuffer2(这个上穿是确定性的穿过) { double ma1=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,0); double ma2=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,0); double ma3=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,1); double ma4=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,1); if(ma3=ma2) return(true); else return(false); }
 
DxdCn老师 你好!可能是我没说清楚。我用start()函数调用时,用print看不到#property indicator_chart_window /int init() { return(0); } /int deinit() { return(0); } /int start() { double buffer1; double buffer2; buffer1=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,0); buffer2=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,0); if(LineCrossedLine(buffer1,buffer2)==true) {Print("穿过"); Alert("穿穿"); } bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2) //均线ExtBuffer1上穿均线ExtBuffer2(这个上穿是确定性的穿过) { double ma1=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,0); double ma2=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,0); double ma3=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,1); double ma4=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,1); IF(MA3小于MA4 && MA1大于等于MA2) return(true); else return(false); } 不知道错在哪。
 
用大于等于,我想应该包括叉点了。我用过把SMA,0)换成SMA,1),把SMA,1)换成SMA,2)也看不到print。
 
不能调用,我不知道错在哪。
 
还是不能调用
 
DxdCn老师如果你不介意的话,我的邮箱是uosd321@sina.cn再次谢谢!
 
DxdCn老师,你什么时候在?能帮我看看,问题在那?
 
#property indicator_chart_window int init() { return(0); } int deinit() { return(0); } int start() { double buffer1; double buffer2; buffer1=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,0); buffer2=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,0); if(LineCrossedLine(buffer1,buffer2)==true) {Print("穿过"); Alert("穿穿"); } bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2) //均线ExtBuffer1上穿均线ExtBuffer2(这个上穿是确定性的穿过) { double ma1=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,0); double ma2=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,0); double ma3=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,1); double ma4=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,1); IF(MA3小于MA4 && MA1大于等于MA2) return(true); else return(false); } 
#
 
#property indicator_chart_window 
int init() { return(0); } 

int deinit() { return(0); } 
int start() 
{ double buffer1; double buffer2; 
buffer1=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,0); 
buffer2=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,0); 
if(LineCrossedLine(buffer1,buffer2)==true) 
{Print("穿过"); Alert("穿穿"); } 
bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2) //均线ExtBuffer1上穿均线ExtBuffer2(这个上穿是确定性的穿过) 
{ double ma1=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,0); 
double ma2=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,0); 
double ma3=iMAOnArray(ExtBuffer1,0,0,0,MODE_SMA,1); 
double ma4=iMAOnArray(ExtBuffer2,0,0,0,MODE_SMA,1); 
IF(MA3小于MA4 && MA1大于等于MA2) 
return(true); 
else return(false); 
} 
# 你的代码很奇怪???!!! 1 你在写指标吗? 指标的数组不是这样写的,应该是使用全程变量。并在初始化中指明是指标用数组(指标数组和通用数组不等同的),请参考帮助和例子 2 不能调用 ? 你是指从EA调用指标吗? 因为你每提供EA文件,不知道你是如何调用的, EA调用指标是通过iCustome函数进行,跟这些代码的start返回什么毫无关系。 从你前面的帖子看,你似乎是要变个指标,再在EA中调用, 但你仅提供了一个错误的指标文件 (我是从 这#property indicator_chart_window 估计这是指标文件的)。 更不知道你如何调用。 所以总的来说你完全缺乏MT的基本知识,请先把MT自己带的指标例子,EA例子弄清楚在说吧,否则没人知道你要干什么。 就象说我不懂计算机,这样的话跟每说一样,让人根本不知道是什么意思(顶多猜出来是不会按开关接电源、不会用软件,不会编程.....) 我猜:你不是不知道交叉是什么,你似乎是不知道指标是什么EA是什么,EA如何调用指标.....
 
bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2)是一个函数,一条均线上穿另一条均线的函数。我在int start() 里给出这两个均线。if(LineCrossedLine(buffer1,buffer2)==true)如果发生了上穿,就显示出来。这两个均线应该即可以是标准的均线,也可以是水平线。我希望先在#property indicator_chart_window 指标窗口里显示我的结果。我的思想是股价永远是在均线中穿行的,如果两条均线的上下穿行能确定股价的方向,那么上穿买入下穿卖出的ea不就写出来了。
原因: