赞
踩
记录学习过程中的代码和一些坑
书中的datareader,由于接口或网络原因,已无法正常获取股票数据,这里找到akshare代替,并且使用mplfinance绘制了蜡烛图。
代码如下:
# 下载股票数据 import akshare as ak import pandas as pd import mplfinance as mpf # A 股日频率数据-东方财富 stock_zh_a_hist ''' '日期': 'Date', '开盘': 'Open', '最高': 'High', '最低': 'Low', '收盘': 'Close', '成交量': 'Volume', '成交额': '振幅': '涨跌幅': '涨跌额': '换手率': ''' stock = ak.stock_zh_a_hist(symbol="002236", period="daily", start_date="20170301", end_date="20221231", adjust="hfq") stock = pd.DataFrame(stock, columns=['日期', '开盘', '最高', '最低', '收盘', '成交量']) stock.rename(columns={ '日期': 'Date', '开盘': 'Open', '最高': 'High', '最低': 'Low', '收盘': 'Close', '成交量': 'Volume' }, inplace=True) stock.index = pd.DatetimeIndex(stock['Date']) print(stock.tail(5)) # 绘制蜡烛图 # type='candle', type='line', type='renko', or type='pnf' mpf.plot(stock.tail(30), type="candle", volume=True) # 相比前一个交易日收益计算 stock['diff'] = stock['Close'].diff() print(stock.head(5))
获取的数据:
做了diff分析的数据:
绘制的蜡烛图:
当日股价下跌,我们就在下一个交易日开盘前挂单买入;反之,当日股价上涨,我们就在下一个交易日开盘前挂单卖出。
创建一个新的字段——Signal(交易信号),如果diff字段大于0,则Signal标记为1;如果diff字段小于或等于0,则Signal标记为0。
在上面获取到数据的基础上做如下操作:
'''
简单数据处理
- 相比前一个交易日收益计算
'''
stock['diff'] = stock['close'].diff()
print('----计算涨跌diff数据------')
print(stock.head(5))
stock['signal'] = np.where(stock['diff'] > 0, 1, 0)
print('----计算买入卖出信号后的数据------')
print(stock.head(5))
将上面买入卖出的数据生成可视化图表,这里需要用到两个苦:numpy
和matplotlib
。
代码如下:
''' import matplotlib.pyplot as plt import numpy as np 简单交易策略 ·当日股价下跌,下一个交易日买入 ·当日股价上涨,下一个交易日卖出 创建交易信号字段:Signal, diff > 0 Signal=1 卖出,否则Signal=0 ''' # matplotlib 绘图 plt.figure(figsize=(10, 5)) stock['close'].plot(linewidth=2, color='k', grid=True) # 卖出标志 x轴日期,y轴数值 # matplotlib.pyplot.scatter(x, y, marker, size, color) plt.scatter(stock['close'].loc[stock.signal == 1].index, stock['close'][stock.signal == 1], marker='v', s=80, c='g') # 买入标志 plt.scatter(stock['close'].loc[stock.signal == 0].index, stock['close'][stock.signal == 0], marker='^', s=80, c='r') plt.show()
该章主要讲述python量化获取股票数据并进行简单处理,同时介绍了常用的工具和库:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。