用Python量化海龟交易法则!

1

引言

对于纯多头或空头的方向性策略而言, 只有当证券价格是均值回归或趋势的,交易策略才能盈利 。否则,如果价格是随机游走的,交易将无利可图(法玛有效市场假说)。换句话说,目前各种纷繁复杂的所谓量化策略大都可以归结为均值回归或趋势追踪策略。 趋势追踪策略 认为价格会沿着一定的趋势继续走,也常称为“惯性”或“动量”策略,很多技术指标就是基于动量的思想来设定的。今天为大家介绍著名的趋势交易策略——“ 海龟交易法则 ”,着重介绍如何使用Python对海龟的交易规则进行量化回测,尤其是对Pandas的综合运用。关于海龟原理的详细介绍和相关轶事感兴趣的可阅读原书和网上相关资料,在微信公众号后台回复“ 海龟交易 ”可下载《海龟交易法则》高清中文PDF。

2

海龟交易法则简介

Python资源共享群:626017123

海龟交易法则可以认为是一个完整的交易系统,具备一个完整的交易系统所应该有的所有成分,包括市场、入市、头寸规模、止损/止盈、退出、买卖策略等:
策略:如何买卖?
趋势追踪——唐奇安通道 
海龟交易法则利用唐奇安通道的突破点作为买卖信号指导交易,简单而言唐奇安通道是由一条上轨线、中线和下线组成,上轨线由N1日内最高价构成,下轨线由N2日内最低价计算,当价格冲破上轨是可能的买入信号,反之,冲破下轨时是可能的卖出信号。  
海龟交易系统本质上是一个趋势跟随的系统,但是最值得学习的是资金管理尤其是分批建仓及动态止损的部分。书中提到了N值仓位管理法,其中N值与技术指标平均真实波幅 ATR计算类似。ATR是真实波幅TR的20日平均值,而TR是当前交易日最高价和最低价之差 、前一交易日收盘价与当前交易日最高价之差、前一交易日收盘价与当前交易日最低价之差三者中的最大值,用公式表示为:
TR=Max(High−Low,abs(High−PreClose),abs(PreClose−Low)),技术指标库TA-Lib提供了直接计算ATR的函数。
 
原始的海龟交易采用唐奇安通道来追踪趋势,在趋势比较明显的行情表现不错,但是在震荡的行情中效果不佳,当然这是所有趋势型策略的通病。下面着重使用Python对唐奇安通道进行可视化,并利用简化版的海龟交易法则进行简单的历史回测。

2

3

海龟交易规则Python实现

#先引入后面可能用到的包(package)
import pandas as pd  
import numpy as np
import talib as ta
from datetime import datetime,timedelta
import matplotlib.pyplot as plt
%matplotlib inline   
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#使用tushare获取交易数据
#设置token
import tushare as ts 
#注意token更换为你在tushare网站上获取的
token='输入你的token'
pro=ts.pro_api(token)
index={'上证综指': '000001.SH',
        '深证成指': '399001.SZ',
        '沪深300': '000300.SH',
        '创业板指': '399006.SZ',
        '上证50': '000016.SH',
        '中证500': '000905.SH',
        '中小板指': '399005.SZ',
        '上证180': '000010
  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
海龟交易法则是一种经典的交易策略,它主要基于趋势跟随的原则,使用一组简单的技术指标来确定买入和卖出的时机。下面是使用Python实现海龟交易法则的基本步骤: 1. 导入必要的库 ```python import pandas as pd import numpy as np import talib import matplotlib.pyplot as plt ``` 2. 获取数据 ```python df = pd.read_csv('data.csv', index_col='date', parse_dates=True) ``` 3. 计算指标 ```python df['high_price_20'] = df['high'].rolling(window=20).max() df['low_price_20'] = df['low'].rolling(window=20).min() df['atr_20'] = talib.ATR(df['high'], df['low'], df['close'], timeperiod=20) df['buy_price'] = df['high_price_20'] + 0.5 * df['atr_20'] df['sell_price'] = df['low_price_20'] - 0.5 * df['atr_20'] ``` 4. 定义交易信号 ```python df['buy_signal'] = np.where(df['close'] > df['buy_price'], 1, 0) df['sell_signal'] = np.where(df['close'] < df['sell_price'], -1, 0) df['signal'] = df['buy_signal'] + df['sell_signal'] ``` 5. 计算持仓 ```python df['position'] = df['signal'].cumsum() ``` 6. 计算收益 ```python df['returns'] = np.log(df['close'] / df['close'].shift(1)) df['strategy_returns'] = df['position'].shift(1) * df['returns'] ``` 7. 可视化结果 ```python df[['close', 'position']].plot(subplots=True, figsize=(10, 6)) plt.show() ``` 这样就可以使用Python实现海龟交易法则,对股票进行交易了。需要注意的是,这只是一个基本的实现方式,实际应用中可能需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值