指标公式语法全解析:从入门到精通的量化交易指南

在股票投资领域,技术指标是辅助决策的重要工具。无论是经典的均线系统,还是复杂的自定义选股策略,都离不开指标公式语法的支持。本页面旨在为股民、量化爱好者提供一份详尽的指标公式语法指南,涵盖通达信、同花顺、大智慧等主流交易软件的通用逻辑与特有函数。我们将深入探讨变量定义、逻辑判断、数据处理等核心概念,帮助您构建属于自己的交易模型。

为什么学习指标公式语法至关重要?

大多数散户投资者依赖默认的MACD或KDJ指标,但这些指标具有滞后性。掌握指标公式语法后,您可以:

  • ① 优化现有指标,减少假信号。
  • ② 结合多因子(如成交量、涨跌幅、均线)创建独特的选股策略。
  • ③ 实现自动化预警,捕捉盘中瞬间机会。
  • ④ 回测历史数据,验证策略的有效性。

指标公式语法基础架构

所有的指标公式都遵循一定的逻辑结构。虽然不同软件的语法细节略有差异,但核心逻辑是相通的。通常包括:参数设置、变量定义、计算逻辑和输出信号。

1. 变量与赋值

在指标公式语法中,使用 := 定义中间变量(不输出),使用 : 定义输出变量(直接在图上显示)。


{示例:定义简单移动平均线}
MA5 := MA(CLOSE, 5);  { 定义5日均线,不显示}
MA10 := MA(CLOSE, 10); { 定义10日均线,不显示}
MA5:MA5;              { 输出MA5到图表}
MA10:MA10;            { 输出MA10到图表}
            

注意:变量名必须以字母开头,不能包含特殊字符(除下划线外),且不能与系统保留字冲突。

2. 数据类型

  • 数值型 (Number): 如价格、成交量、计算结果。例如:100.5, CLOSE, VOLUME。
  • 布尔型 (Boolean): 结果为真(1)或假(0)。例如:CLOSE > OPEN。
  • 字符串 (String): 用于文本输出,如DRAWTEXT中的提示信息。

3. 逻辑运算符

在构建选股公式时,逻辑运算符是核心。常见的运算符包括:

运算符 含义 示例 说明
&& 与 (AND) REF(C,1)>O AND C>O 昨日收大于开,且今日收大于开
|| 或 (OR) V>MA(V,5) || C>MA(C,20) 放量 OR 站上20日线
! 非 (NOT) !CROSS(MA5, MA10) 非死叉状态
> 大于 C > H 收盘价大于最高价(通常不可能)
<= 小于等于 V <= VOL(1) 今日成交量小于等于昨日

核心函数解析

掌握指标公式语法的关键在于熟练运用内置函数。以下列出最常用且最具实用价值的函数类别。

价格函数

  • CLOSE / C: 收盘价。最基础的变量。
  • OPEN / O: 开盘价。
  • HIGH / H: 最高价。
  • LOW / L: 最低价。
  • AMOUNT: 成交额。
  • VOL / V: 成交量(手)。
  • REF(X, N): 引用N日前的数据。例如 REF(C, 1) 表示昨收。

{计算昨日涨幅}
YESTERDAY_CHANGE := (C - REF(C,1)) / REF(C,1)  100;
                

量能函数

  • VOL: 当日成交量。
  • VOLMA(V, N): 成交量的N日移动平均。
  • AMOUNT: 当日成交额(元)。
  • TURN: 换手率。

量能分析是指标公式语法中的重要分支,通常结合价格趋势使用。例如,量价齐升是强势信号,而量价背离则可能预示反转。

逻辑与统计函数

  • CROSS(A, B): 当A从下向上穿过B时,返回1,否则返回0。常用于金叉判断。
  • IF(COND, A, B): 条件判断。如果COND为真,返回A,否则返回B。
  • HIGH() / LOW(): 统计区间内最高/最低价。
  • COUNT(COND, N): 统计N日内满足COND条件的天数。
  • BARSLAST(COND): 上一次COND条件成立到当前的周期数。

{近5日内有3天满足收盘价大于5日线}
COND := C > MA(C,5);
COUNT_COND := COUNT(COND, 5) >= 3;
                

绘图函数

  • DRAWTEXT(COND, PRICE, TEXT): 在满足COND的位置PRICE处绘制文本TEXT。
  • DRAWICON(COND, PRICE, TYPE): 绘制图标。
  • STICKLINE(COND, PRICE1, PRICE2, WIDTH, EMPTY): 绘制柱状线。
  • COLORRED, COLORYELLOW: 颜色常量。

{金叉时画文字}
DRAWTEXT(CROSS(MA(C,5), MA(C,10)), L, '★金叉'), COLORRED;
                

经典指标公式语法实战案例

理论结合实践是掌握指标公式语法的最佳途径。以下提供三个不同复杂度的实战案例,涵盖趋势跟踪、短线选股和风险控制。

案例一:双均线趋势跟踪策略

策略逻辑

利用短期均线和长期均线的交叉来判断买卖点。这是最经典的趋势策略,适用于中长线投资者。

通达信源码:


{参数设置:N1=5, N2=20}
MA_SHORT := MA(CLOSE, N1);
MA_LONG := MA(CLOSE, N2);
{买入信号:金叉}
BUY_SIGNAL := CROSS(MA_SHORT, MA_LONG);
{卖出信号:死叉}
SELL_SIGNAL := CROSS(MA_LONG, MA_SHORT);
{输出}
MA_SHORT:MA_SHORT,COLORWHITE;
MA_LONG:MA_LONG,COLORYELLOW;
DRAWICON(BUY_SIGNAL, LOW0.98, 1); {1为买入图标}
DRAWICON(SELL_SIGNAL, HIGH1.02, 2); {2为卖出图标}
                    

解析: 此公式定义了N1和N2两个参数,用户可自行调整。CROSS函数捕捉了均线的交叉瞬间,DRAWICON在K线图下方和上方绘制图标,直观提示交易信号。

案例二:放量突破选股公式

策略逻辑

寻找成交量突然放大且价格突破关键均线的股票,通常意味着主力资金介入。

同花顺/通达信通用逻辑:


{定义放量:今日成交量大于5日均量的2倍}
VOL_RATIO := VOL / MA(VOL, 5);
IS_VOL_UP := VOL_RATIO > 2;
{定义突破:收盘价突破20日均线}
IS_BREAKOUT := CLOSE > MA(CLOSE, 20);
{定义涨幅:今日涨幅大于3%}
IS_UP := (CLOSE - REF(CLOSE,1)) / REF(CLOSE,1)  100 > 3;
{综合选股条件}
XG: IS_VOL_UP AND IS_BREAKOUT AND IS_UP;
                    

解析: 此公式用于选股器。XG作为最终输出,返回1表示满足条件,返回0表示不满足。通过组合量能、价格和涨跌幅三个维度,提高了信号的可靠性。

案例三:自定义RSI强弱指标

策略逻辑

虽然软件自带RSI,但自定义参数或算法可以更贴合特定股票的特性。

源码示例:


{计算涨跌幅}
LC := REF(CLOSE,1);
RSI1 := SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)100;
RSI2 := SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)100;
RSI3 := SMA(MAX(CLOSE-LC,0),24,1)/SMA(ABS(CLOSE-LC),24,1)100;
{输出}
RSI1:RSI1,COLORRED;
RSI2:RSI2,COLORYELLOW;
RSI3:RSI3,COLORGREEN;
{超买超卖区域标记}
DRAWBAND(RSI1,RGB(255,0,0),RSI2,RGB(0,255,0));
                    

解析: 使用SMA函数进行平滑处理,模拟经典RSI算法。DRAWBAND函数为不同RSI线添加背景颜色带,增强视觉对比度,便于快速识别强弱区域。

常见编译错误与排错指南

在学习指标公式语法的过程中,遇到编译错误是常态。以下是高频错误及其解决方案:

错误1:语句有误 / 函数未定义

原因: 拼写错误、使用了当前软件版本不支持的函数、或函数括号不匹配。

解决: 检查函数名拼写,确保左右括号数量一致。查阅官方帮助文档确认函数是否存在。

错误2:未定义的变量

原因: 在赋值前使用了变量,或变量名大小写不一致(部分软件区分大小写)。

解决: 确保变量先定义后使用。统一变量命名风格。

错误3:数据类型不匹配

原因: 将数值型变量与字符串进行比较,或在数值计算中使用了文本。

解决: 检查运算逻辑,确保参与运算的变量类型一致。

错误4:除零错误

原因: 分母为零,例如在计算涨跌幅时,昨日收盘价为0(极少见,但在停牌复牌或数据缺失时可能发生)。

解决: 使用IF函数判断分母是否为零,或确保数据源完整。

常见问题解答 (FAQ)

Q: 不同股票软件的指标公式语法通用吗?

A: 大部分基础语法(如变量定义、基本函数)是通用的,但高级函数和绘图命令各有特色。例如,通达信的 DRAWICON 在同花顺中可能需要使用 ICON 或特定函数。建议在迁移公式时,对照目标软件的函数手册进行微调。

Q: 如何调试我的公式?

A: 使用“测试公式”功能是第一步。如果测试通过但图形不对,建议将中间变量逐一输出(临时改为 : 赋值),观察数值变化,从而定位逻辑错误点。也可以打印关键变量的值,辅助分析。

Q: 能不能编写自动交易的公式?

A: 大多数国内个人版股票软件(如通达信、同花顺个人版)不支持自动下单交易,仅支持预警。预警功能可以监控条件成立并弹出提示或发送短信,但手动执行仍需人工介入。量化交易平台(如JoinQuant、RiceQuant)则支持Python等语言的自动交易,但语法与通达信公式不同。

Q: 为什么我的公式在历史数据上有效,实盘却失效?

A: 这可能涉及“未来函数”的使用。某些函数(如 ZIG 函数)会引用未来数据,导致信号漂移。实盘中,信号可能会消失或改变。务必避免在策略中使用未来函数,除非你明确知道其后果。

Q: 如何学习更高级的指标公式语法?

A: 建议从官方帮助文档入手,理解每个函数的定义和用法。其次,阅读开源的公式源码,分析高手的逻辑。最后,多动手实践,从简单的策略开始,逐步增加复杂度。加入相关的技术社区,与他人交流心得也是快速提升的途径。

✨ 更多精彩
研
墨卷研习录
墨卷研习录
CopyRight@educfa.com.cn