真心求助公式代码错误在哪? - 页 2 12345 新评论 wgaga 2013.03.22 09:37 #11 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); } 测试者: 在 MetaTrader 4 示例: 使用 MetaTrader 4客户端初学者的常见错误 DxdCn老师,你在吗?还是不行啊! wgaga 2013.03.22 09:41 #12 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); } 不知道错在哪。 测试者: 在 MetaTrader 4 示例: 使用 MetaTrader 4客户端初学者的常见错误 DxdCn老师,你在吗?还是不行啊! wgaga 2013.03.22 09:52 #13 用大于等于,我想应该包括叉点了。我用过把SMA,0)换成SMA,1),把SMA,1)换成SMA,2)也看不到print。 wgaga 2013.03.23 08:48 #14 不能调用,我不知道错在哪。 wgaga 2013.03.25 01:42 #15 还是不能调用 wgaga 2013.03.25 08:48 #16 DxdCn老师如果你不介意的话,我的邮箱是uosd321@sina.cn再次谢谢! wgaga 2013.03.25 15:13 #17 DxdCn老师,你什么时候在?能帮我看看,问题在那? okwh 2013.03.26 07:20 #18 #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); } # okwh 2013.03.26 07:32 #19 #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如何调用指标..... wgaga 2013.03.26 08:53 #20 bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2)是一个函数,一条均线上穿另一条均线的函数。我在int start() 里给出这两个均线。if(LineCrossedLine(buffer1,buffer2)==true)如果发生了上穿,就显示出来。这两个均线应该即可以是标准的均线,也可以是水平线。我希望先在#property indicator_chart_window 指标窗口里显示我的结果。我的思想是股价永远是在均线中穿行的,如果两条均线的上下穿行能确定股价的方向,那么上穿买入下穿卖出的ea不就写出来了。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
#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); }#