Backtrader 量化回测实践(2)—— 16个主要K线形态定义(下)
K线图形中的趋势线和价格走势能够反映市场的整体趋势,比如是否处于上涨或下跌趋势中。
用Backtrader做策略的时候,需要考虑K线形态,作为分析依据。K线的常用形态搜集整理如下:
1、光头光脚大阳线(极端强势);
2、光头光脚大阴线(极端弱势);
3、光头阳线(高价位强势线,先跌后涨型);
4、光头阴线(低价位弱势线,下跌抵抗型);
5、光脚阳线(高价位强势线,上升阻力型);
6、光脚阴线(低价位弱势线,先涨后跌型);
7、大阳线(较为强烈的买势信号,反转试探型);
8、大阴线(较为强烈的卖势信号,弹升试探型);
9、十字线(阳线,阴线);
10、T字线(阳线,阴线);
11、倒T字线(阳线,阴线);
12、一字线(阳线涨停,阴线跌停)。
以上一共16个,应该是常见的K线主要形态。
在策略中需要通过程序定义K线的形态,根据网上的介绍和定义,用dataframe分析。
取一个股票的数据导入到dataframe中,通过定义找到相应的形态并mplfinance绘图展示。
9.一字涨停
(1)代码
#9、一字涨停
# 开盘价等于最高价,收盘价等于开盘价,开盘价等于昨天的收盘价上涨10%
# 开盘价、收盘价、最高价、最低价都相等
signal = []
limit_up = 9.98 # 10%涨幅,如果是科创板、创业板、ST可调
for t_date in df.index :
# 第一天的数据不执行
if t_date > df.index[0] :
if df.loc[t_date,'pct_chg'] >= limit_up and df.loc[t_date,'open'] == df.loc[t_date,'low'] \
and df.loc[t_date,'open'] == df.loc[t_date,'close'] and df.loc[t_date,'open'] == df.loc[t_date,'high'] :
signal.append(t_date)
mpfplot(signal,df)
(2)图示
(3)数据
open high low close
trade_date
2009-07-03 19.89 20.15 19.60 19.86
2009-07-06 20.01 20.78 19.88 20.70
2009-07-07 20.59 21.74 20.47 21.14
2009-07-08 20.90 21.23 20.60 20.63
2009-07-13 22.69 22.69 22.69 22.69
2009-07-14 24.96 24.96 23.28 23.63
2009-07-15 23.91 24.17 23.04 23.57
2009-07-16 23.70 24.57 23.28 24.14
2009-07-17 23.98 24.40 23.68 23.90
2009-07-20 23.91 24.22 23.62 23.95
2009-07-21 24.01 24.98 23.81 23.99
2009-07-22 24.01 24.18 23.74 24.07
2009-07-23 24.08 24.33 23.78 23.94
10.一字跌停
(1)代码
#10、一字跌停
# 开盘价等于最高价,收盘价等于开盘价,开盘价等于昨天的收盘价下跌10%
# 开盘价、收盘价、最高价、最低价都相等
signal = []
limit_down = -9.98 # 10%跌幅,如果是科创板、创业板、ST可调
for t_date in df.index :
# 第一天的数据不执行
if t_date > df.index[0] :
if df.loc[t_date,'pct_chg'] < limit_down and df.loc[t_date,'open'] == df.loc[t_date,'low'] \
and df.loc[t_date,'open'] == df.loc[t_date,'close'] and df.loc[t_date,'open'] == df.loc[t_date,'high']:
signal.append(t_date)
# 保存前一天的收盘价做参考
df_yesterday = df.loc[t_date,'close']
mpfplot(signal,df)
(2)图示
说明:2月3日之前是春节,所以第一个就是信号数据。
(3)数据
open high low close
trade_date
2020-02-03 113.54 113.54 113