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

 
显示出来? 你这样是显示不出来的。 参考修改 https://www.mql5.com/zh/code/7438 你的代码中那样用数组是不对的,根本不可能显示出来。 https://www.mql5.com/en/articles/1497 http://blog.sina.com.cn/s/blog_59198bd9010005wl.html
 
DxdCn老师,不好意思。我的英语不好。你能不能告诉我对的是什么样子的,
 
int start() { double buffer1[]; double buffer2[]; for(int i=0;i
 
#property indicator_chart_window int init() { return(0); } int deinit() { return(0); } int start() { double buffer1[]; double buffer2[]; for(int i=0;i大于4;i++) { buffer1[i]=iMA(NULL,0,5,0,MODE_SMMA,PRICE_MEDIAN,i); buffer2[i]=iMA(NULL,0,8,0,MODE_SMMA,PRICE_MEDIAN,i); } if(LineCrossedLine(buffer1[i],buffer2[i])==true) {Print("穿过"); Alert("穿穿"); } return(0); } 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); } 可还是不行啊?没结果啊?
 
到你的留言中看吧.... 在本网页右上,你的名字后messages
 
英语不好? 如果你英语不好到连代码也看不愿看的话,那你怎么编程呢? https://www.mql5.com/zh/code/7438 是代码 http://blog.sina.com.cn/s/blog_59198bd9010005wl.html 是中文 和代码。 如果你根本不愿意看,那就不需要编程,吧自己的想法告诉别人,让别人去编程就是,干吗要自己编呢? 何况MT4的全部都已经翻译成中文了,若你自己不愿意理解学习,别人没办法的。MT4的中文资料(其实MT本身的帮助就有中文版)http://www.waihui.com/47/index.html 我已经说了, 指标数组要声明为全局变量,在init前声明,在init中需要 SetIndexStyle SetIndexBuffer等函数说明。 在start中计算赋值。 你的代码似乎表明你根本没明白什么是指标,价格数据有成千上万,并且随时间变化,你似乎根本不明白那些i是什么,跟时间什么关系,判断出的ture false 应该如何转在图上显示(要知道图上用的坐标是时间和价格,可不是true,false). 几乎所有人都是看例子、修改例子学习的, 你根本连现成的例子都不愿看,所以我不知道怎么给你说明白,只能说,你的问题根本不是公式问题, 你的问题就象 问 乘法怎么做? 可实际上是数字还不会写,加法都没做过, 这时候让人怎么说你的乘法结果是对是错呢? http://www.waihui.com/43/index.html 有很多指标,先看看别人指标怎么写的吧 https://www.mql5.com/zh/code/7438 其实就是你的指标,可你根本就不愿意看......
 
DxdCn老师,你说的是。我是初学者,你说的这几个问题,我真不知道。我是看了几个实例之后,发现没有自己想要的指标,才开始编程的,如果全编到start() 里面交叉是能出来的,但那样程序太多太乱,最后自己会弄不清哪跟哪,就是在用了bool LineCrossedLine(double ExtBuffer1,double ExtBuffer2)这个之后,就没有交叉了,我想问题应该是在这,这也就是我想让你给看看的的原因,谢谢你给我提供的这几个网址,我会好好看的。我从来就相信靠别人不如靠自己,这也就是我要自己编程的原因,哪怕编的再怎么不好,但那也是我自己的。不过我还是要谢谢你!
 
全编到start() 里面交叉是能出来的?? 那你就应该把修改前后的对比列出来。 你说的出来是指 print alert 不是在图上绘制标记吧 LineCrossedLine(double ExtBuffer1,double ExtBuffer2) 这样传递的参数是单个值,不是数组, 而iMAOnArray(ExtBuffer1中的extbuffer需要是数组,单个数怎么能当数组用? double buffer1[]; 这只是声明,根本没有分配空间,就不能给它元素赋值
 
你说的对是print 出来,我不是想画图,做标记。我想做的是ea ,就是有交叉给我一个信号,我进行买入,再交叉给我一个信号,我卖出。如果print 出不来,那就是说这个信号没有的,对吗?那就是说我在程序的传递中有问题。我要的是信号而不是标记,我用那个程序进行调用,不过是想找到错误所在,不是要绘图。
 
如果只是画图的话,用Moving Average这个程序就可以了,把里面的周期时间改到自己想要的就行啦,不用麻烦的自己编程。我做人不去靠别人,但有现成的程序,为什么不用呢?只要真正能解决自己的问题,向别人学习并不是坏事情啊。三人行必有我师,可学什么要看需要,天底下知识那么多,我一辈子也不可能学完,学有用的,并把它用出来,用好,难道不对吗? 就像现在,我编程只是没有我想要的ea,一旦有了,我可能就不再编程了,我又不是程序员,我有我的工作。老在那编程,按中国人的说法叫不务正业,不是吗? 对不起,我这人说话太直,可能不是你爱听的。我也为此得罪过不少人,但毛病老改不了。哈哈哈!我也真没诚心要改。人活着,开心就好。