5 啊 5 !!!!!
#property indicator_buffers 5
#property indicator_color1 Blue
#property indicator_color2 Blue
#property indicator_color3 Blue
#property indicator_color4 Blue
#property indicator_color5 Blue
9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i];
结果可能不在坐标范围,如何显示。
Print (ind_buffer1[i]);调试
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);
这样才导致了ind_buffer1的数值有问题。但是我不知道为什么这个ind_buffer5是ind_buffer4的平均数组而已,怎么会有这么大的值呢?
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2901,macd2=1.2901,macd3=1.2901,macd4=0,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2894,macd2=1.2903,macd3=1.2902,macd4=0.0001,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2896,macd2=1.2903,macd3=1.2902,macd4=0.0001,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.29,macd2=1.2902,macd3=1.2902,macd4=0,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2911,macd2=1.2899,macd3=1.29,macd4=-0.0001,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2916,macd2=1.2896,macd3=1.2899,macd4=-0.0002,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2927,macd2=1.2892,macd3=1.2896,macd4=-0.0004,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2932,macd2=1.2889,macd3=1.2894,macd4=-0.0005,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2925,macd2=1.2889,macd3=1.2894,macd4=-0.0004,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2914,macd2=1.2892,macd3=1.2895,macd4=-0.0003,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2909,macd2=1.2893,macd3=1.2895,macd4=-0.0002,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:22:11 MACD预测器 EURUSD,M5: macd1=1.2914,macd2=1.2901,macd3=1.2901,macd4=-0,macd5=0.0001
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2915,macd2=1.2899,macd3=1.29,macd4=-0.0001,macd5=0.0001
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2917,macd2=1.2896,macd3=1.2898,macd4=-0.0002,macd5=0
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2916,macd2=1.2894,macd3=1.2897,macd4=-0.0003,macd5=-0
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.291,macd2=1.2893,macd3=1.2896,macd4=-0.0003,macd5=-0.0001
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2906,macd2=1.2892,macd3=1.2895,macd4=-0.0003,macd5=-0.0002
2009.04.26 18:22:11 MACD预测器 EURUSD,M5: macd1=1.2902,macd2=1.2891,macd3=1.2894,macd4=-0.0004,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
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2932,macd2=1.2889,macd3=1.2894,macd4=-0.0005,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2925,macd2=1.2889,macd3=1.2894,macd4=-0.0004,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2914,macd2=1.2892,macd3=1.2895,macd4=-0.0003,macd5=2147483647
2009.04.26 18:23:04 MACD预测器 EURUSD,M5: macd1=19327352824.2909,macd2=1.2893,macd3=1.2895,macd4=-0.0002,macd5=2147483647
不再显示了。
请问这个作何解释呢?
麻烦您了,版主!!
try:
IndicatorBuffers(5);
SetIndexBuffer(0,ind_buffer1);
...........................
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
}
for (int i=0;i<Bars;i++)
{
ind_buffer5[i]=iMAOnArray(ind_buffer4,0,SignalEMA,0,MODE_EMA,i);
}
limit=Bars-counted_bars;
for (int i=0;i<limit;i++)
{
ind_buffer1[i]=9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i];
}
//////////////////
iMAOnArray有时候有古怪的
try:
IndicatorBuffers(5);
SetIndexBuffer(0,ind_buffer1);
...........................
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
}
for (int i=0;i<Bars;i++)
{
ind_buffer5[i]=iMAOnArray(ind_buffer4,0,SignalEMA,0,MODE_EMA,i);
}
limit=Bars-counted_bars;
for (int i=0;i<limit;i++)
{
ind_buffer1[i]=9*ind_buffer5[i]-7*ind_buffer2[i]+8*ind_buffer3[i];
}
//////////////////
iMAOnArray有时候有古怪的
多谢版主的热心帮助!!!
依照版主的方式,问题被解决了!!O(∩_∩)O~
请教这个自己编写的超前指标为什么不显示啊?只要求显示经过计算的那根均线。
是哪里的语句错了吗?
研究了整夜都没发现错误之处,郁闷了!!
请各位高手帮忙解决!
多谢!!!