1、MT4 编程实例:箭头符号(2008-07-05 21:37:14) 转载符号是一种断断续续的指标线。在指标线有值区域,指标线显示;在指标线无值区域,指标线隐藏。例如下图:当价格上穿、下穿均线时,均线上出现一个标记符号。 原理也很简单:在上图中,存在二条指标线,一条是均线,另一条是笑脸符号线。均线在任何位置都有值,所以均线是一条连续的曲线;当价格上、下穿均线时,符号线被赋予了均线值;而在其他位置上,符号线被赋了空值。所以只是在价格上、下穿均线的位置上,符号线才有值,才能出现笑脸符号。因为符号线只是个别位置有值,所以符号线仅在个别位置显现。符号也正好落在均线上,因为符号线值=均线值。如果符号线被
2、赋了别的值,例如(符号线=均线+10 点),那么符号水平坐标不变,垂直坐标将是均线上方的10 点位置。源码如下:/=#property indicator_chart_window#property indicator_buffers 1 #property indicator_color1 Yellowextern int 均线=10;double mk;double temp0,temp1;int init()IndicatorBuffers(1); SetIndexBuffer(0,mk);SetIndexStyle(0,DRAW_ARROW);SetIndexArrow(0,204);
3、IndicatorDigits(Digits);return(0);int start()int limit;int counted_bars=IndicatorCounted();if(counted_bars0) counted_bars-;limit=Bars-counted_bars-均线;for(int i=0; itemp0 return(0);/源码到此已结束=语句简要解释如下:=#property indicator_chart_window指标放在主图#property indicator_buffers 1 设置指标线数为 1 条#property indicator_co
4、lor1 Yellow设置第一条指标线颜色为黄色extern int 均线=10;设立一个自定义变量,允许外部值修改,整数形,变量名为“均线“,默认值 10double mk;设立一个自定义数组,双精度型double temp0,temp1;设立二个自定义变量,双精度型,变量名为 temp0、temp1int init()设立初始化函数 init。init 为系统规定函数名,函数内容自定义。该函数在指标被加载时仅运行一次 IndicatorBuffers(1);指标线数量为 1 条SetIndexBuffer(0,mk);第一条指标线的数组为 mkSetIndexStyle(0,DRAW_AR
5、ROW);第一条指标线的线型为箭头符号SetIndexArrow(0,204);第一条指标线的箭头符号为第 204 种符号,如果换一个编号,那出现的就是另一种符号。箭头符号的编码详见MT4 编程参考IndicatorDigits(Digits);设置指标线的小数位数Digits=当前汇率的小数位数,如日元叉盘 Digits=2,其他币对 Digits=4return(0);函数结束,返回零值int start()设立触发函数 start。start 为系统规定函数名,函数内容自定义。当数据变动时,start 函数被触发int limit;设立整数型自定义变量 limitint counted_
6、bars=IndicatorCounted();设立整数型自定义变量 counted_bars,并将 IndicatorCounted()的值赋给counted_barsIndicatorCounted()为缓存数量,即已经计算过值的烛柱数if(counted_bars0) counted_bars-;如果 counted_bars 大于零,则将 counted_bars 的值减掉 1这是为了配合下一句,以避免 limit 相差 1 而发生出错limit=Bars-counted_bars-均线;这是给 limit 赋值Bars 为图表中的柱数counted_bars 为已经赋值的柱数这样 limit 的结果就是未赋值的烛柱数再减去“均线”是因为图表最右边段均线无意义for(int i=0; itemp0 与上一句相似return(0);start 函数结束语句