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绘图展示。
如果有错误,不妥之处欢迎留言,改进完善。
0.绘图
# signal是符合形态的日期列表,df是全量股票数据
# 只展示两个符合条件的图示
def mpfplot(signal,df) :
counter = 0
show_num = 2
for i in signal:
if counter < show_num : # 以信号日期为中心前后10天的数据
begin_date = i + datetime.timedelta(days=-10)
end_date = i + datetime.timedelta(days=10)
# 按时间段绘图
df_candle = df.loc[(df.index>=begin_date.strftime("%Y-%m-%d")) & (df.index<=end_date.strftime("%Y-%m-%d"))]
mpf.plot(df_candle , type='candle', title='Signal date: ' +i.strftime("%Y-%m-%d") ,figsize=(6,2))
mpf.show()
counter += 1
counter = 0
for i in signal:
if counter < show_num :
begin_date = i + datetime.timedelta(days=-10)
end_date = i + datetime.timedelta(days=10)
df_candle = df.loc[(df.index>=begin_date.strftime("%Y-%m-%d")) & (df.index<=end_date.strftime("%Y-%m-%d"))]
# 按时间段数据
print(df_candle[['open','high','low','close']])
counter += 1
1. 光头光脚大阳线
(1)代码
#1、光头光脚大阳线(极端强势)
# 开盘就是最低价,收盘就是最高价,收盘价大于开盘价
signal = []
for t_date in df.index :
if df.loc[t_date,'open']==df.loc[t_date,'low'] and df.loc[t_date,'close']==df.loc[t_date,'high'] and df.loc[t_date,'close']>df.loc[t_date,'open']:
signal.append(t_date)
signal = []
for t_date in df.index :
if df.loc[t_date,'open']==df.loc[t_date,'low'] and df.loc[t_date,'close']==df.loc[t_date,'high'] and df.loc[t_date,'close']>df.loc[t_date,'open']:
signal.append(t_date)
mpfplot(signal,df)
(2)图示
(3)数据
open high low close
trade_date
2001-06-15 38.52 39.10 38.45 38.54
2001-06-18 38.50 38.88 37.60 37.66
2001-06-19 37.66 37.99 37.43 37.72
2001-06-20 37.72 37.90 37.11 37.19
2001-06-21 37.19 37.79 37.19 37.56
2001-06-22 36.80 38.20 36.80 38.00
2001-06-25 38.03 38.68 38.03 38.68
2001-06-26 38.78 38.84 38.50 38.80
2001-06-27 38.80 39.61 38.60 39.60
2001-06-28 39.60 39.95 38.65 39.29
2001-06-29 39.40 39.98 39.01 39.24
2001-07-02 39.10 39.15 38.37 38.52
2001-07-03 38.50 38.85 38.40 38.71
2001-07-04 38.71 38.90 38.56 38.71
200