stickline 函数怎么用?参数含义、画图示例与画不出来的原因
写股票技术指标公式时,想把某一段信号用竖线标出来(例如放量、跌停、涨停开板),最合适的函数是 STICKLINE。它是国内行情软件(通达信、同花顺、大智慧)公式系统里的画线函数,但参数顺序与含义常被记错,导致“线画不出来”或“方向反了”。

一、函数原型与参数
通达信中的标准写法:
STICKLINE(COND, PRICE1, PRICE2, WIDTH, EMPTY);
- COND:条件(逻辑表达式)。为真时才在对应 K 线上画一根竖线;
- PRICE1 / PRICE2:竖线的两端价格。谁大谁小决定线的方向与颜色语义(在部分软件中,PRICE1>PRICE2 与反之会用不同填充方向);
- WIDTH:线的宽度(像素/相对单位),常用 1~4;写 0 时最细;
- EMPTY:是否空心。0 = 实心填充,1 = 空心(只描边)。这是很多人以为“参数没用”的一项,实际它决定能否画出空心柱。
示例:在成交量放大 3 倍的那根 K 线上,从最低价画到最高价的红色实心竖线:
VOLUP := VOL > MA(VOL,5)*3; STICKLINE(VOLUP, HIGH, LOW, 2, 0);
二、常见搭配与实用写法
1. 标记涨停/跌停
ZT := C >= ZTPRICE(REF(C,1),0.1) AND C = H;
DT := C <= DTPRICE(REF(C,1),0.1);
STICKLINE(ZT, H, L, 1, 1); { 空心柱标记涨停 }
STICKLINE(DT, H, L, 1, 0);
注意:涨停判定要同时要求 C=H 才算“封死”,否则盘中触板又回落会被误标。ZTPRICE/DTPRICE 是新版函数,可正确处理 10%/20%(创业板、科创板)与 ST 5% 的差别;老公式手写 REF(C,1)*1.1 时记得用 ROUND(...,2),否则价格精度会让判定失效。
2. 在主图叠加实体柱(自定义 K 线)
STICKLINE(C>=O, O, C, 3, 0); { 阳线实心 }
STICKLINE(C<O, O, C, 3, 1); { 阴线空心 }
这就是软件默认红阳阴青画法的原理——用两根 STICKLINE 拼出蜡烛图,再用 DRAWLINE 或 STICKLINE(..., H, MAX(O,C)) 补上影线。
3. 配合 COLOR 指定颜色
STICKLINE(COND, P1, P2, 2, 0), COLORRED; STICKLINE(COND, P1, P2, 2, 0), COLORYELLOW;
颜色修饰符要写在语句末尾、用逗号隔开,写成 STICKLINE(...,COLORRED) 会报语法错误。
三、和其它画线函数的区别
STICKLINE:竖线(价格轴方向),宽度可控,可空心;用于标记某根 K 线的区间;POLYLINE:折线,随条件值连线;DRAWLINE(EX, P1, EX, P2):在两个条件点之间画斜线,常用于画趋势线;DRAWICON(COND, PRICE, TYPE):画图标(笑脸、箭头、数字 0~9),TYPE 用数字编码;DRAWTEXT(COND, PRICE, '文字'):标注文字;VERTLINE:从某条件点向上下画竖穿整图的时间线,用来标记事件日期;PARTLINE / STICK:分段线、柱线(柱线用于成交量副图,与 STICKLINE 不同)。
易混点:STICK(画柱线,值来自一条数据线,常用于副图)与 STICKLINE(每根 K 线画一段指定价格区间的竖线)完全不同,写副图指标时用错就会看不到图形。
四、画不出来的六个原因
- 主图/副图位置不对:STICKLINE 的价格参数与当前图纵轴量纲要匹配。在副图(如 MACD 副图)里用
HIGH/LOW会画在看不见的位置,因为副图纵轴是指标值不是价格。应改用0与指标值做两端; - 条件恒假:先用
COND单独画成线(PLOTCOND: COND;)或DRAWTEXT验证条件有没有成立; - 用了未来函数:
BARSLAST、BACKSET、ZIG会使信号在历史位置反复变动,看起来“线消失了”; - WIDTH 为 0 且 EMPTY=1:宽度 0 的空心线等于没有像素,图形不可见;
- 叠加顺序被覆盖:后画的实色线可能盖住前面的,调整语句顺序或用不同颜色;
- 公式类型错:主图叠加公式要在公式属性里勾“主图”,否则线画到看不见的副图坐标里。
五、性能与调试建议
条件里避免大量嵌套 IF 与逐根计算的函数(如 FOR 循环),全市场扫描时公式复杂度直接决定选股速度。调试技巧:
{ 逐步验证:把中间变量都输出成线 }
A1 := MA(C,5);
A2 := VOL > MA(VOL,5)*3;
DISP_A1: A1;
DISP_A2: A2*100; { 把布尔值放大方便看 }
STICKLINE(A2 AND C>A1, H, L, 2, 0), COLORRED;
另外要留意:通达信的布尔值在算术中为 0/1,AND 是逻辑与、不能写成 &;不等于用 <>。
六、常见问题 FAQ
问:STICKLINE 能画横线吗?
答:不能。它是竖线。要画水平参考线用 DRAWKLINE 或直接 PRICE: value; 输出一条常量线。
问:为什么同花顺里写法不同?
答:同花顺的画线函数命名与参数接近但存在差异(部分函数需 DRAW 前缀、颜色写法为 COLOR...),且不同软件对 EMPTY 的取值解释不完全一致,跨软件移植公式必须逐句验证。
问:能不能只画最近 N 根?
答:给条件加上时间限制,如 AND CURBBAR 类变量不可用,通常写 BARPOS >= COUNT(FROMOPEN) 或直接 DATE >= 特定日期。更简单的办法是设置显示区间。
提醒一句:指标公式只用于图形标记与分析辅助,不构成任何投资建议,历史信号也不预示未来表现。
生产内容,同时打通搜索引擎(SEO)与AI搜索引擎(GEO)流量入口的软件! 点击进入365建站器 »
