资源加载中... loading...

量化交易中一般模型编写示例

Author: 雨幕(youquant), Created: 2019-07-13 10:21:42, Updated: 2023-12-12 21:37:50

img

一些基础的策略模型需要在每根K线走完的时候按照出现的信号方向下单, 我们把这种模型叫做收盘价模型。本文将介绍一些常见的模型写法, 读者可以根据实际交易时的需求, 进行取舍和延申。

运行这些模型实现了更丰富的量化策略, 例如头寸管理, 指令价交易等。

条件描述

  • 阶段涨幅:N日收盘价的差值的百分比。
(CLOSE-REF(CLOSE,N))/REF(CLOSE,N)*100
  • 再创新高:所谓再创新高就是指今日最高价是N日以来的最高价
HIGH=HHV(HIGH,N)

该函数在当日最高价创N日新高时为1,否者为0。
  • 放量上攻:指价格上扬,成交量剧增
价格上扬可以描述为:CLOSE/REF(CLOSE,5)>1.2;表示5日上涨20%
成交量剧增可描述为:VOL>MA(VOL,5)*3;表示成交量超过5日均量的3倍
所以公式可写成为:CLOSE/REF(CLOSE,5)>1.2 AND VOL>MA(VOL,5)*3
  • 窄幅整理:就是指近一段时期价格维持在一定幅度之内
(HHV(CLOSE,20)-LLV(CLOSE,20))/CLOSE<0.08;
HHV(CLOSE,20)-LLV(CLOSE,20)表示20日收盘价振幅,即20日内价格振幅在8%以
内波动。
  • 均线多头排列:移动平均线(MA)是将一段时间的股票价格用数理统计的方法加以平均,再将这些平均价标于图上并用线连接起来即可。它可以用来观察股价的趋势。均线多头排列可以看做是上升趋势行情的表现。
5日、10日、60日均线分别表示为:
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA60:=MA(CLOSE,60);
均线多头排列可写成:MA10>MA5&&MA60>MA10(注意不要写成连等形式)
  • 前期高点及其位置
前期高点价格可以写成:HHV(HIGH,20)表示20日最高价
前期高点位置:HHVBARS(HIGH,20)表示20日内最高价到现在的周期数,若HHVBARS(HIGH,1)等于6,则表示前期高点出现在6日前。

60天前到40天前之间的最高价:是用HHV函数只能得到当天以及前若干天的最高价,若对本问题进行分析可以得到, 它实际上就是一个20天最高价,只不过是计算40天前的20日最高价,所以公式可以写成为:REF(HHV(HIGH,20),40)
  • 动态平均:指数平滑移动平均是一种常用的平均线求法,其宗旨是将当日数据乘以权值a与上一天平均数乘以权值b相加,这两个权值相加等于1,因而指定权值a就可以确定计算方法。
如:

EMA(X,N)权值a=2/(N+1);
SMA(X,N, M)权值a=M/N;
而对于DMA动态平均,其权值a不是一个常数,例如可用成交量作为权重计算均线:SMA(CLOSE,VOL)
  • 点到面转化:有时我从需要过去发生的事件。例如最近20日内是否发生涨停等,由于涨停仅在当天可计算出来因此需要用点到面转换将该影响延续成一段时间:
TTTT:=CLOSE/REF(CLOSE, 1)>1.099表示涨幅大于10%
COUNT(TTTT,20)>0,该函数统计20日内涨停的天数, 若发生涨停则会对将来30天产生影响。
COUNT、SUM、HHV、LLV等函数均有点到面转化的作用。

以上分别显示TTTT、HHV(TTTT,20)、COUNT(TTTT,20) 两条曲线的相对位置关系, 每当发生涨停时TTTT就为1, 否则就为0;HHV(TTTT,20)只要20天以内发生过涨停就为1,否则为0,它利用了发生情况时数值最大这一特点将求最大值转化为求指定值;而COUNT(TTTT,20)则表示了20天之内发生过多少次指定事件,应该说对于本问题这个函数用的最适合。
  • 面到点转换:有时我们需要反过来做点到面转换,例如当RSI高于80表示股价处于超买阶段,应该卖出。但由于超过80是一个阶段,如果这个阶段中每天都发出卖出信号就不是太好了,需要一个将连续区间转化为一个信号的函数,即面到点的转换。
CROSS(RSI,80),表示RSI向上穿越80,由于对于一个阶段来说穿越只会发生一次,仅而完成了面到点的转换。
  • 线性回归:是统计学中最常用的方法之一, 它用一条直线来近似描述一条曲线。
直线可用起点和斜率来表示,因此可以更为简便的描述当前股价的趋势。线性回归函数有两个: FORCAST和SLOPE,分别表示20起点和斜率。FORCAST的作用不均线类似,有对未来趋势的预测作用,指标较均线更为灵敏;SLPOE表示该线性回归的斜率,即事件每增加1天价格的发动情况,它可以表示一段时间内的平均价格发化率,可以用它来描述近期价格的涨跌趋势及强度。

例如:SLOPE(CLOSE,10)/REF(CLOSE,10)>0.05则表示近期有每日平均5%的升幅趋势。

关于K线形态描述

K线图又称阴阳线,最初是日本米商用来表示米价涨跌状况的工具,后来引入股市,并逐渐风行于东南亚地区。K线图以其直观、立体感强的特点而深受投资者欢迎,实践证明,精研K线图可以较准确地预测后市走向,也可以较明确的刞断多空双方的力量对比,仅而为投资决策提供重要的参考。

K线图的画法与分类:画K线图前应先准备一张坐标纸,按一定的比例表明股价(指数)的相应位置。它将市场每天(周、月)的开盘价、最高价、最低价和收市价画在统计图上以反映市场的波动情形。

K线图共有三部分组成:即上影线、下影线和实体三部分,上影线为最高价,下影线为最低价,实体由收盘价和开盘价构成。

当收盘价高于开盘价时,用阳线或红线来表示,当开盘价高于收盘价时,用阴险和黑线来表示。

它有十二种基本形态:A阳线、B阴线、C光头阳线、D带帽阳线、E带尾阳线、F光头阴线、G带尾阴线、H带帽阴线、I平盘线、J十字星、K丁字线、L倒丁字线,由这些的组合形成了所有的K线形态,由于组合的多样性和不确定性,从而也有了许多的不同理解、意见相左的K线分析。

大阳线

首先我们编制一个简单的单根K线的公式,一根K线由四个价格组成,开盘价、收盘价、最高价、最低价四个价格组成,所以对它的描述只需要能够做到清楚地描述这四个价位中的相关值即可。

观察其特点:

开盘即为最低 BB:=LOW=OPEN;
收盘即为最高 AA:=CLOSE=HIGH;
假设量化的结果是阳线长度上涨幅度大于7%
CC:CLOSE/OPEN>7%;
所以
BB:=LOW=OPEN;
AA:=CLOSE=HIGH;
CC:=CLOSE/OPEN>1.07;

综合判断条件
AA&&BB&&CC

穿头破脚

穿头破脚有两只K线组成,表示行情将要转向,穿头破脚第二支蜡烛烛身部分长于第一根蜡烛且蜡烛颜色相反;若是上升行情第二支蜡烛为阳线,若是下跌行情第二支蜡烛为阴线,并且包含了前一根。

量化:如果只是一般意义上的满足以上条件的K线组合,则信号的含义并不强,所以可以通过强化一些条件或者补充一些条件来加强信号的内涵。例如在本例中我从规定前一日的开收至少有4%的差值,如果是向上穿头破脚的类型,那么前一日的开盘价要高于收盘价的4个点以上。

前一日的K线形体描述:开盘价要高于收盘价的4个点以上
A1:=REF(CLOSE,1);
A2:=REF(OPEN,1);
AA:A2/A1>1.04;

今日的K线形体:
B1:=OPENB<A1;
B2:=CLOSE>A2;(高于昨天的开盘)

综合判断条件
AA AND B1 AND B2

最终的公式为:
A1:=REF(CLOSE,1);
A2:=REF(OPEN,1);
AA:=A2/A1>1.04;
B1:=OPEN<A1;22
B2:=CLOSE>A2;

综合判断条件
AA&&B1&&B2

如果是向下的穿头破脚,只需要改动几个数值的方向即可!

吊颈

吊颈不锤头形态相同,只是吊颈出现在上升行情中,表示将见顶回落。吊颈出现在上升行情中,有较长的脚部,蜡烛实体部分很少,并在顶部出现。同样可以有阳线实体的的吊颈和阴线实体之分,以下将以阴线实体的吊颈为例。

量化:开盘所得即为当天最高价;

AA:= OPEN=HIGH;
阴线实体的长度小,量化后我从选择不整个线体进行对比,满足条件其长度小于整个线体的1/3:
B1:=OPEN-CLOSE;
B2:=HIGH-LOW;
BB:=B1/B2<1/3;

另外对线型的绝对长度作出规定,选择整个线体的长度大于最高价的 5%,意义在于加强线体的
含义, 以免出现极小的,出现在弱市中的信号;
CC:= B2/HIGH>0.05;

公式组为:
AA:=OPEN=HIGH;
B1:=OPEN-CLOSE;
B2:=HIGH-LOW;
BB:=B1/B2<1/3;;
CC:=B2/HIGH>0.05;

综合判断条件
AA&&BB&&CC

低开大阳线

低开大阳线出现在拉升初期或者整理的末期的机率较高,当天的开盘明显低于昨天的K线,但是整个线体呈现为一根长阳,气势逢人!

量化:今日低开,小于上一周期的最低价,并且开盘时的跌幅达到了2个点以上:

A1:=REF(CLOSE,1);
A2:=REF(LOW,1);
A3:=OPEN<A2;
A4:=OPEN/A1<0.98;23

收盘长阳,收盘价高出开盘价至少 8 个点以上:
B1:=CLOSE/OPEN>1.08;

所以公式组为:
A1:=REF(CLOSE,1);
A2:=REF(LOW,1);
A3:=OPEN<A2;
A4:=OPEN/A1<0.98;
B1:=CLOSE/OPEN>1.08;

综合判断条件
A3&&A4&&B1

跳空缺口

就是两条K线的高低价出现不衎接的情况,有两条K线组成,是日后支撑和压力点的参考价位。当一个跳空缺口出现时,可以假设一个沿着原来跳空方向上的趋势的加速已经开始了。

量化:有两条K线组成,两跳K线间存在明显的间隔;跳空分为向上和向下两种情况,以下已向上跳空的例子:

本周期的最低价高于上一周期的最高价:
A1:=REF(HIGH,1);
A2:=LOW>A1;

跳空缺口越大,则信号越强烈!所以加入辅劣条件缺口的长度至少要求有两个点位:
B1:=LOW/A1>1.02;

所以公式组为:
A1:=REF(HIGH,1);
A2:=LOW>A1;
B1:=LOW/A1>1.02;

综合判断条件
A2&&B1

以上便是一些常见的K线模型的编写与应用,对于使用那些经典K线形态分析市场的读者,这些都是很好的模板,各位可以尝试进行套用和延展。


更多内容