编写股票技术指标

90次阅读
没有评论

编写股票技术指标是一项结合数学计算与市场逻辑的工作。无论是想在通达信、大智慧、文华财经等软件中编写自定义指标,还是希望用Python/Excel实现量化回测,其核心逻辑都是相通的。

下面我将为你系统讲解技术指标的编写方法、步骤、常用函数及注意事项,并提供几个经典指标的源码示例。

一、技术指标编写的基本原理

技术指标的本质是通过特定数学公式,对价格(开高低收)​​ 和成交量等原始数据进行处理,提炼出能够辅助判断市场趋势、买卖点的信号。

  • 数据源​:最常见的是收盘价(CLOSE)​,此外还有开盘价(OPEN)、最高价(HIGH)、最低价(LOW)、成交量(VOL)等。
  • 计算周期​:计算指标所采用的时间窗口长度,例如MA5就是取最近5个交易日的收盘价进行计算。
  • 输出方式​:将计算结果以曲线(LINE)​柱状线(STICK)​颜色变化数字提示等方式在图表上直观显示出来。

二、编写指标的一般步骤

编写一个指标通常遵循以下流程,从明确目标到最终测试优化:

编写股票技术指标

三、通用函数与语法(以通达信/大智慧为例)

不同平台的函数名称可能略有差异,但逻辑相似。以下是一些最常用的函数:

函数类型 函数示例 说明
数据引用 CLOSEOPEN 引用收盘价、开盘价
HIGHLOW 引用最高价、最低价
VOL 引用成交量
REF(X, N) 引用N周期前的X值,例如REF(CLOSE, 1)表示昨日收盘价
数学计算 MA(X, N) 计算X的N周期简单移动平均,例如MA(CLOSE, 5)表示5日均线
EMA(X, N) 计算X的N周期指数移动平均(更重视近期数据)
SMA(X, N, M) 计算X的N周期移动平均,M为权重
HHV(X, N) 求N周期内X的最高值
LLV(X, N) 求N周期内X的最低值
SUM(X, N) 求X的N周期总和
逻辑判断 CROSS(A, B) 判断A是否上穿B(金叉),例如CROSS(MA5, MA10)
IF(COND, A, B) 条件判断函数,如果条件COND成立,返回A,否则返回B
图形绘制 DRAWICON 在满足条件的位置绘制图标(如箭头)
DRAWTEXT 在满足条件的位置显示文字
STICKLINE 绘制柱状线
PLOYLINE 绘制折线

四、经典指标源码示例

1. 移动平均线 (MA)

MA5:MA(CLOSE,5);   {绘制5日均线}
MA10:MA(CLOSE,10); {绘制10日均线}
MA20:MA(CLOSE,20); {绘制20日均线}

2. 指数平滑异同移动平均线 (MACD)

DIF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2, COLORSTICK; {绘制MACD柱状线}

3. 相对强弱指标 (RSI)

LC := REF(CLOSE,1);         {昨日收盘价}
RSI1:SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100; {计算6日RSI}

4. 自定义买卖点指标示例

{策略逻辑:5日线上穿10日线,且成交量放大超过5日均量线的1.5倍时,标记买入信号}
MA5 := MA(CLOSE, 5);
MA10 := MA(CLOSE, 10);
VOL_MA5 := MA(VOL, 5);

BuyCondition := CROSS(MA5, MA10) AND VOL > VOL_MA5 * 1.5;
DRAWICON(BuyCondition, LOW, 1); {在最低价位置绘制1号买入图标}

五、注意事项与高级技巧

  1. 避免未来函数​:确保指标公式中不使用未来函数(如ZIGPEAK等),这类函数引用未来数据,会导致回测表现完美但实战无效,俗称“漂移”。
  2. 优化参数​:指标的周期参数(如N值)不是一成不变的。可以通过回测找到最适合当前品种和市场的参数。
  3. 组合使用​:单个指标总有局限性,将不同类型(趋势、摆动、能量)的指标组合使用,可以有效过滤假信号,提高胜率。例如,均线金叉时,如果RSI也从超卖区回升,信号更可靠。
  4. 理解市场逻辑​:最好的指标往往蕴含深刻的市场理解。在编写前,想清楚你要捕捉的是哪种市场现象(趋势、超买超卖、动能、波动率等)。

提示​:以上代码示例主要适用于通达信、大智慧等国内主流股票软件。如果在Python中编写,通常会使用pandasnumpy等库进行数据处理和计算。

编写指标是一个从模仿到创新的过程。建议先从理解和修改经典指标开始,逐步加入自己的思路,最终形成独有的交易系统。

正文完
 0
评论(没有评论)