| / | 论坛 |
|
rsdy18418081
2009.04.25 18:12
请教这个自己编写的超前指标为什么不显示啊?只要求显示经过计算的那根均线。 是哪里的语句错了吗? 研究了整夜都没发现错误之处,郁闷了!! 请各位高手帮忙解决! 多谢!!! #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Blue //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ extern double FastEMA=8.3896; extern double SlowEMA=17.5185; extern double SignalEMA=9.0503; double ind_buffer1[]; double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; int init() { SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2); SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexShift(0,1); SetIndexStyle(0,DRAW_LINE); SetIndexDrawBegin(0,20); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("MA"); SetIndexLabel(0,"MA"); //---- indicator short name //---- indicator buffers mapping return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int limit; if(counted_bars<0) return(-1); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for (int i=0;i<limit;i++) { ind_buffer2[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i); ind_buffer3[i]=iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); ind_buffer4[i]=ind_buffer2[i]-ind_buffer3[i]; //---- signal line counted in the 2-nd buffer ind_buffer5[i]=iMAOnArray(ind_buffer4,0,SignalEMA,0,MODE_EMA,i); ind_buffer1[i]=9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i]; } //---- done return(0); //---- //---- } //+------------------------------------------------------------------+ |
|
EA取得成功很简单 – 一个完善的金钱管理策略成功地预测进入和出入点。如果第一个是交易者经验和计算的结果,第二个则是智能交易长期在模拟账户测试的结果。试图创建智能交易没有这两点的考虑注定会失败的。 即使 EA 给出的预测有 70%,没有一个可以深思熟虑的金钱管理尽本分,想必也是徒劳。 |
|
DxdCn
2009.04.25 20:20
5 啊 5 !!!!! #property indicator_buffers 5 #property indicator_color3 Blue #property indicator_color4 Blue #property indicator_color5 Blue |
|
DxdCn
2009.04.25 20:24
9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i]; 结果可能不在坐标范围,如何显示。 Print (ind_buffer1[i]);调试
|
|
rsdy18418081
2009.04.26 14:36
DxdCn 写道 >>
9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i]; 结果可能不在坐标范围,如何显示。 Print (ind_buffer1[i]);调试 2009.04.26 18:09:31 MACD预测器 EURUSD,M5: macd1=15461882259.7255,macd2=1.3251,macd3=1.3251,macd4=-0.0001,macd5=1717986917.6 以上是我把所有的5个数组都显示出来了,可以看到是ind_buffer5 有问题的。 ind_buffer5[i]=iMAOnArray(ind_buffer4,0,SignalEMA,0,MODE_EMA,i); 2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2901,macd2=1.2901,macd3=1.2901,macd4=0,macd5=2147483647 为什么macd5始终是=2147483647,而macd1的数值19327352824.2909在小数点后边的值应该是正确的,但是前边的1却始终是这么大的数字。 看来问题还是出在了macd5(ind_buffer5)。是我的计算的公式有问题吗?我看了MACD的公式代码, for(int i=0; i<limit; i++) ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); //---- signal line counted in the 2-nd buffer for(i=0; i<limit; i++) ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i); 我只是多增加了个数组而已。怎么结果就这么大的差别? 另外发现一个奇怪的问题!!当我把#property indicator_buffers 5 中的5改为1再编译后,原来主图中不显示的指标却显示出来了。只是显示了3条线,数值也都是正确的: 2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2905,macd2=1.2904,macd3=1.2902,macd4=0.0002,macd5=0.0002 2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2927,macd2=1.2892,macd3=1.2896,macd4=-0.0004,macd5=2147483647 不再显示了。 请问这个作何解释呢? 麻烦您了,版主!! |
|
DxdCn
2009.04.26 16:35
try: IndicatorBuffers(5);
........................... limit=Bars-counted_bars;
ind_buffer3[i]=iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); } limit=Bars-counted_bars;
////////////////// iMAOnArray有时候有古怪的 |
|
rsdy18418081
2009.04.26 19:50
DxdCn 写道 >>
try: IndicatorBuffers(5);
........................... limit=Bars-counted_bars; ind_buffer3[i]=iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); } limit=Bars-counted_bars;
////////////////// iMAOnArray有时候有古怪的 多谢版主的热心帮助!!! 依照版主的方式,问题被解决了!!O(∩_∩)O~ |
|
DxdCn
2009.04.27 10:47
声明: 我不是版主,只是帮你的一个普通中国人!!!
|
|
keyila
2009.05.30 07:32
好! 顶! |
|
keyila
2009.05.30 07:33
不过最好不好写超前指标!意义不大!
|