海龟交易法则是一种趋势跟踪的交易策略,在市场上非常受欢迎。它的本质是在长期趋势中,跟随市场的风向进行交易,加仓时机是关键。使用tushare可以非常方便的实现海龟交易法则。本文将介绍如何使用tushare实现海龟交易法则。
一、数据准备
首先我们需要准备数据。使用tushare,我们可以非常方便的获取交易日历,股票数据等。我们需要准备的数据有股票历史数据,真实波动幅度ATR(Average True Range)以及资金规模N(通常取20)。
获取历史数据:
import tushare as ts
# 获取股票历史数据
data = ts.get_k_data('600036', start='201-01-01', end='2022-01-01')
# 查看数据样例
print(data.head())
获取ATR和N(以20日为例)的值:
import talib
# 计算ATR
atr = talib.ATR(data['high'], data['low'], data['close'], timeperiod=14)
# 计算N值
n = 20
data['N'] = atr * n
# 查看数据样例
print(data.head())
二、交易逻辑实现
有了数据之后,我们可以开始实现交易逻辑了。海龟交易法则的交易逻辑非常简单:
- 根据20日N值计算出每个交易日的买入价格(以当日收盘价加上n倍N值为准)和卖出价格(以当日收盘价减去n倍N值为准)。
- 如果股票价格突破买入价格,则进行买入操作,并把买入价格记录在买入清单里;如果股票价格跌破卖出价格,则进行卖出操作,并把卖出价格记录在卖出清单里。
- 如果当前已有持仓,则每个交易日都计算一次股票价格是否跌破止损价格(以最后一个买入价格减去2倍N值为准),如果跌破了,则进行卖出操作。
根据上述交易逻辑,我们可以实现以下代码:
# 初始化
buy_list = []
sell_list = []
position = False
last_buy_price =
# 遍历数据进行交易
for i in range(len(data)):
high = data.loc[i, 'high']
close = data.loc[i, 'close']
N = data.loc[i, 'N']
buy_price = close + N
sell_price = close - N
# 如果没有持仓
if not position: