各位编程高手看谁能够帮我解决这个棘手的问题了?谢谢各位!
刚学MT4程序,就遇到一个棘手的问题,查了很多资料,均无解,只好求助与各位程序高手了!
当在主图中加入布林线指标时“价格类型”中没有 Previous Indicator's Data 参数可以设置;加入后修改时布林指标中的“价格类型”有 Previous Indicator's Data 参数可以设置。 但是,我在编程过程中在 iBands 函数中 applied_price 参数里找不到 Previous Indicator's Data 参数,那么我要想调用 Previous Indicator's Data 参数 iBands 应该怎么写?谢谢!
iBands(NULL,0,20,2,0,?
,MODE_LOWER,0)
[ 本帖最后由 长袖善舞 于 2008-4-15 22:20 编辑 ]
当在主图中加入布林线指标时“价格类型”中没有 Previous Indicator's Data 参数可以设置;加入后修改时布林指标中的“价格类型”有 Previous Indicator's Data 参数可以设置。 但是,我在编程过程中在 iBands 函数中 applied_price 参数里找不到 Previous Indicator's Data 参数,那么我要想调用 Previous Indicator's Data 参数 iBands 应该怎么写?谢谢!
iBands(NULL,0,20,2,0,?
,MODE_LOWER,0)
[ 本帖最后由 长袖善舞 于 2008-4-15 22:20 编辑 ]
发表于:2008-04-16 00:52只看该作者
2楼
BOLL指标是基于MA指标编写的,普通MA指标的applied_price
参数只有7个(0~6),没有Previous Indicator's Data这个参数(下图),所以BOLL指标也就没有这个参数。iBands的applied_price
参数最大只能为6,填7就无效。 除非你有支持Previous Indicator's Data参数的MA指标 [ 本帖最后由 秃鹫 于 2008-4-16 08:54 编辑 ]ma.gif
参数只有7个(0~6),没有Previous Indicator's Data这个参数(下图),所以BOLL指标也就没有这个参数。iBands的applied_price
参数最大只能为6,填7就无效。 除非你有支持Previous Indicator's Data参数的MA指标 [ 本帖最后由 秃鹫 于 2008-4-16 08:54 编辑 ]ma.gif
3楼
秃鹰老师,我的指标是由两根均线和布林线构成的,均线添加进主图后,在均线价格种类里可以看到 Previous Indicator's Data,所以在添加布林线时也可以修改成Previous Indicator's Data。但是在编写程序时要使用到 Previous Indicator's Data 该怎么办呢?
是在程序里也写两根均线,再写布林线然后在 iBands(NULL,0,20,2,0,?
,MODE_LOWER,0) “问号”位置改成“7”,这样对吗?
[ 本帖最后由 长袖善舞 于 2008-4-16 16:23 编辑 ]
是在程序里也写两根均线,再写布林线然后在 iBands(NULL,0,20,2,0,?
,MODE_LOWER,0) “问号”位置改成“7”,这样对吗?
[ 本帖最后由 长袖善舞 于 2008-4-16 16:23 编辑 ]
发表于:2008-04-16 08:21只看该作者
4楼
Previous Indicator's Data的意思好象是“前一个指标的数据”。
经过观察,如果BOLL选用Previous Indicator's Data参数后,布林通道就会以排在BOLL前面的那个指标数据为基础计算。例如,BOLL在加载MA之后加载,则如果BOLL选择Previous Indicator's Data参数后,布林通道会变得更加平滑,通道也会随着MA参数的改变而改变,就象BOLL与MA绑定了一样。
知道了原因也就有了解决办法,虽然我们不能直接使用Previous Indicator's Data参数,但MT4中有一个iBandsOnArray()函数,可以从数组中计算 Bollinger bands indicator的值。我们可以把前一个指标的值复制到数据中,再对这个数组求布林值,这样也就解决了问题。
[ 本帖最后由 秃鹫 于 2008-4-16 16:30 编辑 ]
5楼
秃鹰老师,看到您说可以解决问题我实在是太高兴了,但是我是初学,您上面讲到的我不知道自己能不能按照您的意思编写出来,我把我用到的指标导出成模板了,您帮我看看能否编的出。就是主图的黄线上穿布林线的下轨就显示一个向上的箭头,黄线从上下穿布林上轨就显示一个向下的箭头。布林线使用的是Previous Indicator's Data 价格类型,谢谢您了!
我把模板发上来,权限低不能在回帖发附件,我开了新帖在http://www.talkforex.com/viewthread.php?tid=133684&extra=page%3D1
韬客社区www.talkfx.co
发表于:2008-04-16 11:18只看该作者
6楼
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Yellow
#property indicator_color2 Turquoise
#property indicator_color3 Turquoise
#property indicator_color4 Turquoise
#property indicator_color5 Green
#property indicator_color6 Red
double MyBuffer1;
double MyBuffer2;
double MyBuffer3;
double MyBuffer4;
double MyBuffer5;
double MyBuffer6;
extern int MaPeriod=10;
extern int BandsPeriod=20;
extern int BandsShift=0;
extern double BandsDeviations=2.0;
int init()
{
SetIndexBuffer(0,MyBuffer1);
SetIndexBuffer(1,MyBuffer2);
SetIndexBuffer(2,MyBuffer3);
SetIndexBuffer(3,MyBuffer4);
SetIndexBuffer(4,MyBuffer5);
SetIndexBuffer(5,MyBuffer6);
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexStyle(3,DRAW_LINE);
SetIndexStyle(4,DRAW_ARROW);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(4,233);
SetIndexArrow(5,234);
IndicatorShortName("iBands("+BandsPeriod+","+BandsDeviations+","+MaPeriod+")");
return(0);
}
int start()
{
int limit,i;
int counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i=0; i=MyBuffer3
&& MyBuffer1[i+1]MyBuffer2[i+1])
MyBuffer6=MyBuffer1-10*Point;
}
return(0);
}
8楼
学习了,下午我试着写布林的上轨,写成
for(i=0;i
韬客社区www.talkfx.co