今天看到有人问了一个有意思的问题,想把通达信的主图K线改变为美国线(也叫竹线),但是这个美国线需要实现没有开盘价,只有收盘价。每根K线收盘价的横线与下一个k线柱子之间有一点空隙分隔开。成交量也要和美国线柱子粗细差不多。(如下图) 虽然通达信可以设置主图为美国线,但是美国线包含开盘价和收盘价,没办法只显示收盘价。 解决这个问题,需要重新画线,主要使用通达信的画线函数。通达信的画线函数不多,也就那么几个能用的,画竖线和横线,涉及到两个函数STICKLINE、DRAWSL,之前已经讲过,这里简单介绍一下,不详细说了。 STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY); 当满足COND条件时,在PRICE1和PRICE2位置之间画柱线; WIDTH表示柱线的宽度,如果WIDTH为4,就是标准间距; EMPTY表示柱线是实心还是空心,如果EMPTY为0就是实心柱,为1就是实线空心柱。 DRAWSL(COND,PRICE,SLOPE,LEN,DIRECT); 当满足满足COND条件时,从PRICE位置起画斜线; SLOPE表示斜率,SLOPE为0的时候,就表示画水平线; LEN表示长度,当画的线为水平线时,长度为延伸的周期数; DIRECT表示延伸方向,画水平线时,DIRECT为0向右画线。
先简单写一个公式,看看效果如何: STICKLINE(O,H,L,0,0);DRAWSL(O,C,0,1,0);
使用DRAWSL函数,以收盘价画横线,横线太长了。DRAWSL画线最短就是1个周期,没办法进一步缩短。可以用与背景颜色相同的颜色——黑色,把多余的横线覆盖,解决问题横线太长的问题(如下图) STICKLINE函数画柱线,WIDTH表示柱线的宽度,4表示标准间距,柱线宽度为4时如下图 宽度大于4,柱线开始重叠(如下图,柱线宽度为5) 利用这个特性,如果柱线是黑色实心,就可以用来覆盖多余的横线。
只有收盘价的通达信美国线(竹线)指标公式: STICKLINE(O,H,L,3,1),COLORBLACK;{把图上原有K线涂黑覆盖}DRAWSL(O,C,0,1,0),COLORWHITE;{向右画长度为1个周期的白色横线}STICKLINE(O,REF(C,1),REF(C,1),6,0),COLORBLACK;{以前一根K线的收盘价为基准,画宽度为6的黑色实心柱线(实际是画的宽度为6的黑色横线),覆盖多余的白色横线}STICKLINE(O,H,L,0,0),COLORWHITE;{从最高价到最低价画宽度为0的白色柱线};
成交量柱线: STICKLINE(VOL,0,VOL,0,1);
公式写完,发现有个Bug没法解决,当收盘价和前一天相同时,收盘价会被覆盖,不能显示。 想了想没有特别好的解决方法,只能弃坑跑路了。 友情提醒:本文仅供学习交流,不构成任何投资建议。投资有风险,入市需谨慎! 关注公众号技术Pie,学习更多通达信指标公式编写知识。 |