SPL 量化系列实践:认识 K 线

单根 K 线

放量大阳线

大阳线是收盘价远高于开盘价所形成的 K 线。当交易量放大配合大阳线时,说明个股当天走势强劲。

其 K 线图与分时图的关系如下图:

..

涨停一字线

严格来讲,涨停一字线的开盘价、收盘价、最高价、最低价均为一个价,即涨停价,但实际交易中,涨停可能会短暂的小幅放开,最终形成略带下影线的一字线,我们把它也看作是涨停一字线。

成交量处于异常情况,要么极小,要么极大。

..

十字线

开盘价与收盘价相同,但上下振荡幅度较大,使得上下影线均较长且上下影线长度大致相当。

它的分时图与日 K 线的关系如下图:

..

作为见顶信号时,成交量常常放大;作为见底信号时,成交量常常缩小;作为中继信号时,成交量一般和平时相当或略变小。

按上下影线的长度,可将十字线分作两类:

..

倒锤头

开盘价与收盘价接近,但个股冲高回落,收盘价远低于最高价,从而形成长长的上影线,整个图形看起来就像是一个倒立的手锤,因此本书统一称其为倒锤头线。它的分时图与日 K 线图的关系如下图:

..

倒锤头线不带下影线或下影线极短,实体部分可以是阴线,也可以是阳线;上影线的长度一般在实体部分两倍以上。

在高位放量拉出倒锤头线,表明放量滞涨,见顶的信号更强。在低位出现倒锤头线,缩量的情况下见底信号更强。在盘整或者上升的过程中出现倒锤头线,成交量和平时相比略放大时信号更强。

K 线组合

钳子顶

由两根或两根以上的 K 线组成,由一阳一阴两根 K 线最为标准。

组成的 K 线最高价均在同一水平,达到的最高价在同一水平,看起来就像是用钳子剪断若干根钢丝般整齐,所以称为钳子顶。

..

一般来说,成交量越大,钳子顶作为看空信号越准确

多方炮

由 3 根 K 线组成,两根较长的阳线中间夹着一根较短的阴线,样子有点像准备开火的大炮。

..

第三根阳线的成交量比较重要,最好是放量大阳线,阴线部分放量的情况会使多方炮准确度下降。

早晨之星

一般由 3 根 K 线组成,先出现一根大阴线或中阴线,第二天低开出现小阴线、小阳线、十字线或螺旋桨,第三天出现大阳线或中阳线。第二天是十字线的情况,我们称为早晨十字星。

..

成交量方面,中间的小 K 线应当缩量,最后一根阳线处放量为宜。

SPL 代码:


A

B

1

=file("daily/002451.csv").import@tc()


2

=A1.select(trade_date>20231201&&trade_date<=20240506)


3

=A2.derive(if(#>1, close/ pre_close *factor[-1], close/pre_close):factor)


4

=hfq_fst=A3(1),A3.new(ts_code,trade_date,(fcls=factor/hfq_fst.factor*hfq_fst.close,c=fcls/close,round(c*open,2)): hfq_open,round(c*high,2): hfq_high,round(c*low,2): hfq_low,round(fcls,2): hfq_close,vol,amount)

/后复权

5

=A4.pselect@a(#!=1&&hfq_close/hfq_open-1>=0.05&&vol>vol[-1])

/放量大阳线

6

=A4.pselect@a(abs(hfq_close/hfq_close[-1]-1.1)<0.01&&hfq_open==hfq_close&&hfq_open==hfq_high&&hfq_low>=hfq_close[-1]*1.08)

/涨停一字线

7

=A4.pselect@a(abs(hfq_close/hfq_open-1)<0.001&&abs((hfq_high-hfq_open)/(hfq_open-hfq_low)-1)<0.3)

/十字线

8

=A4.pselect@a((ham=abs(hfq_close/hfq_open-1),ham<0.02&&ham>0&&abs((hfq_high-max(hfq_close,hfq_open))/abs(hfq_close-hfq_open))>2&&abs(min(hfq_close,hfq_open)/hfq_low-1)<0.002))

/倒锤头

9

=A4.pselect@a(abs(hfq_high/hfq_high[-1]-1)<0.001&&hfq_close<hfq_open&&hfq_close[-1]>hfq_open[-1])

/钳子顶

10

=A4.pselect@a(hfq_open[-1]>hfq_close[-1]&&hfq_open[-1]<=hfq_close&&hfq_open[-1]<=hfq_close[-2]&&hfq_close[-1]>=hfq_open&&hfq_close[-1]>=hfq_open[-2]&&vol[-1]<vol[-2]&&vol>vol[-2])

/多方炮

11

=A4.pselect@a(hfq_open[-2]/hfq_close[-2]-1>=0.03&&hfq_close/hfq_open-1>=0.03&&abs(hfq_close[-1]/hfq_open[-1]-1)<0.03&&hfq_high[-1]<(hfq_close-hfq_open)*0.25+hfq_open&&hfq_high[-1]<(hfq_open-hfq_close)*0.25+hfq_close&&vol[-1]<vol[-2]&&vol>vol[-2])

/早晨之星

A5~A11 分别找到 K 线组合成形的索引,早晨之星,代码只实现了三根 K 线的情况,有了 3 根 K 线的例子,4 根 K 线也不难实现。

SPL 精心设计的相邻引用符号 [] 对于寻找 K 线组合来说再方便不过了,代码写着简单,看着也清楚,相较而言,Python 用 shift 偏移索引来获取相邻数据略显笨拙。

下面是找到的 K 线组合:

放量大阳线:

..

上半部分是 K 线图,下半部分是成交量柱状图,虚线部分是找到的 K 线组合。

涨停一字线

..

十字线

..

倒锤头

..

钳子顶

..

多方炮

..

早晨之星

..

找到的这些图形都符合我们的描述,但是它不一定都符合股票趋势的预期,比如多方炮通常意味着股票上涨,可是本例中的多方炮后续并没有形成上涨趋势,这说明这些 K 线组合的含义并不一定准确,感兴的读者还可以增加一些其他限制条件,比如多方炮的阳线上影线不能过长等等。在使用某个信号之前可以用 SPL 先统计下历史数据中这些信号的准确率。