[MT4指标]新指标源码,高手改一下
指标最重要的几个概念:
1、主图显示/独立窗口
2、索引线(Index)
3、缓冲区(buffer)
4、K线柱子(bar)--下一篇文章介绍
我们下面详细介绍这些重要的概念:
1、主图显示/独立窗口
有些指标在主图显示,例如MA均线;有些指标在独立窗口显示,例如成交量和MACD;这些是通过指标的属性来控制的:
●
#property indicator_chart_window 主图窗口显示 ●
#property indicator_separate_window 独立窗口显示 2、索引线(Index) 索引线最终就是反映到指标图上的图形,例如线条、柱状图、符号(箭头等)、无图形等。而索引线和缓冲区是一一绑定的,缓冲区的最大值为8个,因此索引最多为8个。索引按照[0, N]的顺序依次排列。 索引对应的概念包括: ●
风格:通过SetIndexStyle函数来设置,例如SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);表示将索引0设置为实现的柱状图,例如ExplosionSA指标中的红色柱子;(请参考SetIndexStyle函数来详细了解) ●
颜色:通过指标属性来设置,例如#property indicator_color1 Red表示将索引1的颜色设置为红色 3、缓冲区(buffer) 每个缓冲区对应的其实就是一个double类型的数组,其被绑定到索引线上,和索引线的风格(Style)同时来决定其外观,举例说明: +-----------------------------------------------------------------------+ |风格Style | 缓冲区取值的影响 | |DRAW_HISTOGRAM | 数组的值决定了柱子的高低 | |DRAW_ARROW | 数组赋值大于0决定了箭头出现,为空或为0则箭头不出现 | +-----------------------------------------------------------------------+ 下面以Explosion指标来说明: 此指标使用了5个Index: Index0:图中的红色柱子,表示多头能量 Index1:图中的绿色柱子,表示空头能量 Index3:布林张口的爆发力 Index4:条件阀值,用于剔除盘整行情中的伪信号 Index5:交易信号:多单开仓、空单开仓、多单平仓、空单平仓 此指标的简单原理是红色柱子(Index0)穿透黄线(Index3)做多、回落到黄线下方多单平仓;同理绿色柱子(Index2)穿透黄线做空,回落黄线下方空单平仓。如果黄色线在条件阀值(Index4)下方则不给出信号。 //+------------------------------------------------------------------+ //| ExplosionSA_Linyi.mq4 | //| Copyright?2008, 笨蛋学经济 | //| [email protected]
| //+------------------------------------------------------------------+ #property copyright "Copyright?2008, 笨蛋学经济" #property link "[email protected]
" //---- #property indicator_separate_window //独立窗口显示 #property indicator_buffers 5 //5个缓冲区 #property indicator_color1 Red //设置索引线颜色 #property indicator_color2 Green #property indicator_color3 Gold #property indicator_color4 Aqua #property indicator_minimum 0.0 //指标窗口底部为0,即Y轴从0开始 //作用:MACD指标窗口中间为0,上下为正负数 #property indicator_width1 2 //设置索引线宽度 #property indicator_width2 2 #property indicator_width3 1 #property indicator_width4 1 //---- 设置指标参数代码这里忽略。。。。。 //---- double ind_buffer1; //对应Trend1,为多方的能量数值 double ind_buffer2; //对应Trend2,为空方的能量数值 double ind_buffer3; //当前柱子和前一个柱子的布林张口爆发力 double ind_buffer4; //条件阀值 double ind_buffer5; //交易信号:1-多单;2-空单;3-多单平仓;4-空单平仓 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() //初始化函数,指标加载后仅执行一次 { SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID); //设置索引线的风格 SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID); SetIndexStyle(2, DRAW_LINE, STYLE_SOLID); SetIndexStyle(3, DRAW_LINE); SetIndexStyle(4, DRAW_NONE); //---- SetIndexBuffer(0, ind_buffer1); //依次绑定缓冲区数组到索引线上 SetIndexBuffer(1, ind_buffer2); SetIndexBuffer(2, ind_buffer3); SetIndexBuffer(3, ind_buffer4); SetIndexBuffer(4, ind_buffer5); //---- IndicatorShortName("Explosion-xxxxxx"); //在窗口左上角显示指标名称,最长64个字符, return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() //汇价每跳动一次就执行一次 { 这里撰写指标代码,通过给缓冲区数据循环赋值,从而达到控制Index显示,来完成设计的指标功能。 }
#property indicator_chart_window 主图窗口显示 ●
#property indicator_separate_window 独立窗口显示 2、索引线(Index) 索引线最终就是反映到指标图上的图形,例如线条、柱状图、符号(箭头等)、无图形等。而索引线和缓冲区是一一绑定的,缓冲区的最大值为8个,因此索引最多为8个。索引按照[0, N]的顺序依次排列。 索引对应的概念包括: ●
风格:通过SetIndexStyle函数来设置,例如SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);表示将索引0设置为实现的柱状图,例如ExplosionSA指标中的红色柱子;(请参考SetIndexStyle函数来详细了解) ●
颜色:通过指标属性来设置,例如#property indicator_color1 Red表示将索引1的颜色设置为红色 3、缓冲区(buffer) 每个缓冲区对应的其实就是一个double类型的数组,其被绑定到索引线上,和索引线的风格(Style)同时来决定其外观,举例说明: +-----------------------------------------------------------------------+ |风格Style | 缓冲区取值的影响 | |DRAW_HISTOGRAM | 数组的值决定了柱子的高低 | |DRAW_ARROW | 数组赋值大于0决定了箭头出现,为空或为0则箭头不出现 | +-----------------------------------------------------------------------+ 下面以Explosion指标来说明: 此指标使用了5个Index: Index0:图中的红色柱子,表示多头能量 Index1:图中的绿色柱子,表示空头能量 Index3:布林张口的爆发力 Index4:条件阀值,用于剔除盘整行情中的伪信号 Index5:交易信号:多单开仓、空单开仓、多单平仓、空单平仓 此指标的简单原理是红色柱子(Index0)穿透黄线(Index3)做多、回落到黄线下方多单平仓;同理绿色柱子(Index2)穿透黄线做空,回落黄线下方空单平仓。如果黄色线在条件阀值(Index4)下方则不给出信号。 //+------------------------------------------------------------------+ //| ExplosionSA_Linyi.mq4 | //| Copyright?2008, 笨蛋学经济 | //| [email protected]
| //+------------------------------------------------------------------+ #property copyright "Copyright?2008, 笨蛋学经济" #property link "[email protected]
" //---- #property indicator_separate_window //独立窗口显示 #property indicator_buffers 5 //5个缓冲区 #property indicator_color1 Red //设置索引线颜色 #property indicator_color2 Green #property indicator_color3 Gold #property indicator_color4 Aqua #property indicator_minimum 0.0 //指标窗口底部为0,即Y轴从0开始 //作用:MACD指标窗口中间为0,上下为正负数 #property indicator_width1 2 //设置索引线宽度 #property indicator_width2 2 #property indicator_width3 1 #property indicator_width4 1 //---- 设置指标参数代码这里忽略。。。。。 //---- double ind_buffer1; //对应Trend1,为多方的能量数值 double ind_buffer2; //对应Trend2,为空方的能量数值 double ind_buffer3; //当前柱子和前一个柱子的布林张口爆发力 double ind_buffer4; //条件阀值 double ind_buffer5; //交易信号:1-多单;2-空单;3-多单平仓;4-空单平仓 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() //初始化函数,指标加载后仅执行一次 { SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID); //设置索引线的风格 SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID); SetIndexStyle(2, DRAW_LINE, STYLE_SOLID); SetIndexStyle(3, DRAW_LINE); SetIndexStyle(4, DRAW_NONE); //---- SetIndexBuffer(0, ind_buffer1); //依次绑定缓冲区数组到索引线上 SetIndexBuffer(1, ind_buffer2); SetIndexBuffer(2, ind_buffer3); SetIndexBuffer(3, ind_buffer4); SetIndexBuffer(4, ind_buffer5); //---- IndicatorShortName("Explosion-xxxxxx"); //在窗口左上角显示指标名称,最长64个字符, return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() //汇价每跳动一次就执行一次 { 这里撰写指标代码,通过给缓冲区数据循环赋值,从而达到控制Index显示,来完成设计的指标功能。 }