趋势交易指标

趋势就是市场运动的方向,在通常的情况下,市场不会朝某一个方向直来直去,市场运动的特征表现为震荡前行,酷似一系列前赴后继的波浪,具有明显的峰和谷。所谓趋势就是这些波峰和波谷依次上升或下降的方向。股价在上涨或下跌时通常会形成趋势,如果能抓住这些趋势,会带来不错的收益。

定义两个名词:

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 章 趋势交易策略 - 乾学院