1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python:海龟交易法则 画唐奇安通道

python:海龟交易法则 画唐奇安通道

时间:2023-03-22 02:35:08

相关推荐

python:海龟交易法则 画唐奇安通道

回忆一下海龟交易法则的策略:

入场条件:当收盘价突破20日价格高点时,买入一单元股票;

加仓条件:当价格大于上一次买入价格的0.5个ATR(平均波幅),买入一单元股票,加仓次数不超过3次;

止损条件:当价格小于上一次买入价格的2个ATR时清仓;

离场条件:当价格跌破10日价格低点时清仓。

这里的20日价格高点和10日价格低点构成唐奇安通道,所以海龟交易法则也可以理解成通道突破的趋势跟踪。

stock_dc.py

# coding: utf-8import os, sys#import numpy as npimport matplotlib.pyplot as pltimport pandas as pdimport tushare as tsif len(sys.argv) ==2:code = sys.argv[1]else:print('usage: python stock_dc.py stockcode ')sys.exit(1)if len(code) !=6:print('stock code length: 6')sys.exit(2)# help(ts.get_k_data) 了解参数df = ts.get_k_data(code, start='-01-01')#print(df.head())# 10日移动均线df['ma10'] = df['close'].rolling(window=10).mean()# 唐奇安通道(Donchian Channel)取过去20日的最高价,10日的最低价df['up20'] = df['high'].shift(1).rolling(window=20).max()df['down'] = df['low'].shift(1).rolling(window=10).min()#print(df.head())# 取样 以后的数据d2 = df[ df.date >'-01-01']print(d2.tail())d2.index = pd.to_datetime(d2.date)# 画股价走势图d2[['close','ma10','up20','down']].plot(grid=True, title=code)plt.legend(loc='best', shadow=True)plt.show()

kline_dc.py

# coding: utf-8import os, sysimport datetimeimport matplotlib.pyplot as pltfrom matplotlib.pylab import date2num#import matplotlib.finance as mpfimport mpl_finance as mpfimport pandas as pdimport tushare as tsimport talibif len(sys.argv) ==2:code = sys.argv[1]else:print('usage: python kline_dc.py stockcode ')sys.exit(1)if len(code) !=6:print('stock code length: 6')sys.exit(2)# help(ts.get_k_data) 了解参数df = ts.get_k_data(code, start='-01-01')if len(df) <30:print(" len(df) <30 ")sys.exit(2)# 10日移动均线df['ma10'] = df['close'].rolling(window=10).mean()# 唐奇安通道(Donchian Channel)取过去20日的最高价,10日的最低价df['up20'] = df['high'].shift(1).rolling(window=20).max()df['down'] = df['low'].shift(1).rolling(window=10).min()df = df[ df['date'] >'-01-01']print(df.tail())# 对tushare获取到的数据转换成 candlestick_ohlc()方法可读取的格式alist = []tlist = []for idx,row in df.iterrows():date,open,close,high,low,volume = row[0:6]# 将日期转换为数字date1 = datetime.datetime.strptime(date,'%Y-%m-%d')t = date2num(date1)data = (t, open,high,low,close)alist.append(data)tlist.append(t)# 加这个两句 可以显示中文plt.rcParams['font.sans-serif'] = [u'SimHei'] plt.rcParams['axes.unicode_minus'] = False# 创建子图fig, ax = plt.subplots()fig.subplots_adjust(bottom=0.2)# 设置X轴刻度为日期时间ax.xaxis_date()# 对数坐标y轴#ax.set_yscale('log') ax.autoscale_view()#plt.axes(yscale='log')#plt.setp(plt.gca().get_xticklabels(), rotation=45)plt.xticks(rotation=45) plt.yticks()plt.title("股票 {0}:K线图".format(code))plt.xlabel("date")plt.ylabel("price")#mpf.candlestick_ohlc(ax,alist,colorup='green',colordown='red')mpf.candlestick_ohlc(ax,alist,colorup='red',colordown='green')# 画 10日均线, 唐奇安通道plt.plot(tlist, df['ma10'].values, 'orange', label='ma10')plt.plot(tlist, df['up20'].values, 'maroon', label='up20')plt.plot(tlist, df['down'].values, 'gray', label='down')plt.legend(loc='best', shadow=True)plt.grid()plt.show()

运行 python kline_dc.py 600566

参考:【手把手教你】用backtrader量化回测海龟交易策略_Python金融量化的博客-CSDN博客

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。