趋势交易指标
趋势就是市场运动的方向,在通常的情况下,市场不会朝某一个方向直来直去,市场运动的特征表现为震荡前行,酷似一系列前赴后继的波浪,具有明显的峰和谷。所谓趋势就是这些波峰和波谷依次上升或下降的方向。股价在上涨或下跌时通常会形成趋势,如果能抓住这些趋势,会带来不错的收益。
定义两个名词:
1.最近的波谷:股价低于之前和之后 M 天的股价。
2.波谷前的波峰:最近的波谷之前股价高于之前和之后 M 天的股价。
买入信号为:
1.最近的波谷低于最近 N 天股价的 5 分位(5分位是指将数据从小到大排序,然后五等分,取第1个分界值);
2.当天的股价高于波谷前的波峰;
同时满足上述两个条件,则发出买入信号,如下图:
卖出信号:股价低于最近的波谷。
我们来编写趋势交易指标,当最近的波谷低于最近 M 天股价的 5 分位并且当天的股价高于波谷前的波峰时,指标返回1;当股价低于最近的波谷时指标返回-1,其余返回0。
指标参数:
y |
指标返回列。1 买入信号,-1 卖出信号 |
n |
数字,买入策略中的时间周期,如 252 |
m |
数字,计算波谷的时间周期,如 3 |
k |
数字,买入策略中股价的分位数,缺省 k=5 |
函数代码:
A |
B |
|
1 |
func VPTR(A, $y, n, m, k=5) |
=A.run( if( #>n, ( cp=收盘[-n+1:0], mc=cp.median(:k)(1), vp=cp.pselect@z(#<=n-m && ~<~[-m:-1].min()&& ~<~[1:m].min() ) , pp=cp.pselect@z(#<=vp && ~>~[-m:-1].max()&& ~>~[1:m].max() ), vc=cp(vp), pc=cp(pp), ${y}=if( vc<mc && 收盘>pc:1, 收盘<vc:-1; 0 ) ))) |
调用脚本计算浦发银行 2024 年的趋势交易指标。n 取 253,m 取 3。
A |
B |
|
… |
… |
… |
5 |
=call@f("indicator.splx") |
登记脚本中的函数 |
6 |
… |
计算出源数据 |
7 |
=A6.derive(:VPTR) |
增加要返回的指标字段 |
8 |
=VPTR(A7, VPTR, 252, 3) |
调用函数计算指标 |
运行效果:
指标应用案例:第 12 章 趋势交易策略 - 乾学院