下面使用简化版的海龟交易法则进行历史回测,即不考虑仓位管理和动态止损/止盈条件,以唐奇安通道突破作为买入卖出信号。
交易规则为:
(1)当今天的收盘价,大于过去20个交易日中的最高价时,以收盘价买入;
(2)买入后,当收盘价小于过去10个交易日中的最低价时,以收盘价卖出。
def my_strategy(data):
x1=data.close>data.up
x2=data.close.shift(1)
x=x1&x2
y1=data.close
y2=data.close.shift(1)>data.down.shift(1)
y=y1&y2
data.loc[x,'signal']='buy'
data.loc[y,'signal']='sell'
buy_date=(data[data.signal=='buy'].index).strftime('%Y%m%d')
sell_date=(data[data.signal=='sell'].index).strftime('%Y%m%d')
buy_close=data[data.signal=='buy'].close.round(2).tolist()
sell_close=data[data.signal=='sell'].close.round(2).tolist()
return (buy_date,buy_close,sell_date,sell_close)
#对K线图和唐奇安通道进行可视化
from pyecharts import *
grid = Grid()
attr=[str(t) for t in hs.index.strftime('%Y%m%d')]
v1=np.array(hs.loc[:,['open','close','low','high']])
v2=np.array(hs.up)
v3=np.a