1.基本原理
1.1 K线部位定义:
实体:某一根K线开盘价和收盘价之间部分;
上影线:某一根K线最高价到实体上端的部分;
下影线:某一根K线最低价到实体下端的部分;
1.2 锤子线定义
实体处于整个价格区间上端,实体颜色本身不影响;
下影线长度至少达到实体高度的2倍;
上影线很短;
1.3 策略原理
在下跌过程中,当某一日出现锤子线,意味着当天行情先继续下跌后出现大幅反弹,行情可能由此反转;
由此以观察期均线识别趋势下跌,以下跌趋势中出现锤子线作为开仓信号; 采用移动止损方式进行止损构建此策略;
1.4 止损条件
当天最低价 < max(均价-观察期内一定倍数的标准差,开仓价-开仓时标准差);
1.5 形态要点:
在出现锤头线(锤子线)之前,股价需经过一段时间的下跌后,处于下跌趋势中,此时出现此形态才具有参考意义;
锤头实体越小,下影线越长,止跌作用就越明显,参考价值越大;
2.策略实现
2.1 收集并计算所需数据
import pandas as pd
import numpy as np
import tushare as ts
code = '002398' # 股票代码
body_size = 0.03 # 表示锤子实体大小上限,基准为当日开盘价,实体不能太大,波动范围限制在3%;
head_size = 0.5 # 表示锤子上影线长度上限,基准为下影线长度,上影线要短一点,不能超过下影线的的一半;
tail_size = 2 # 表示下影线与实体大小比值,下影线要大于实体两倍;
length = 10 # 表示观察期时间长短;
stoplose_trigger = 1 # 表示当价格偏离均线满足几倍标准差时止损
data.sort_index(ascending=True, inplace=True)
data.head()
open | high | close | low | volume | amount | |
---|---|---|---|---|---|---|
date | ||||||
2012-01-04 | 6.64 | 6.80 | 6.40 | 6.39 | 283430.0 | 4564127.0 |
2012-01-05 | 6.38 | 6.40 | 5.76 | 5.76 | 820954.0 | 12005136.0 |
2012-01-06 | 5.71 | 5.83 | 5.70 | 5.43 | 972637.0 | 13330505.0 |
2012-01-09 | 5.69 | 5.97 | 5.94 | 5.57 | 536522.0 | 7710121.0 |
2012-01-10 | 5.94 | 6.27 | 6.21 | 5.94 | 1121594.0 | 17023694.0 |
data.reset_index(inplace=True) #把索引设置成为默认;为了后面交易策略逻辑循环更方便一些;
data.head()
date | open | high | close | low | volume | amount | |
---|---|---|---|---|---|---|---|
0 | 2012-01-04 | 6.64 | 6.80 | 6.40 | 6.39 | 283430.0 | 4564127.0 |
1 | 2012-01-05 | 6.38 | 6.40 | 5.76 | 5.76 | 820954.0 | 12005136.0 |
2 | 2012-01-06 | 5.71 | 5.83 | 5.70 | 5.43 | 972637.0 | 13330505.0 |
3 | 2012-01-09 | 5.69 | 5.97 | 5.94 | 5.57 | 536522.0 | 7710121.0 |
4 | 2012-01-10 | 5.94 | 6.27 | 6.21 | 5.94 | 1121594.0 | 17023694.0 |
data['pct_change'] = data['close'].pct_change()
data['ma'] = data['close'].rolling(length).mean()
data['std'] = data['close'].rolling(length).std()
del data['volume']
del data['amount'