经过前面三篇文章的铺垫,实现了:
1.股票数据来源:tushare之“前复权”
2.从tushare获取股票数据以后,如何写入mysql:python dataframe类型转换后存入mysql
3.如何从mysql读取股票数据,还原成dataframe,进行后续数据处理:python mysql查询结果tuple类型,转换成dataframe类型
那么,这篇文章,就是终结篇,处理来自mysql的数据
1. 计算各种均线值:ma5,ma10,ma20,ma30,ma60
2.计算各种成交量均线值:ma5_vol,ma10_vol,ma20_vol,ma30vol
talib库
计算均值,用到talib库,下载方法参考《量化交易系统之python+mysql(一)》
import talib
#生成ma5,ma10,ma20,ma30,ma60
def DataProcess(self, list_code):
for code in list_code['ts_code']:
print("DataProcess.... code=", code)
#mysql数据转换成dataframe
df = self.Mysql2DataFrame(code)
all_vol = df['vol']
all_close = df['close']
all_trade_day = df['trade_day']
try:
#计算收盘价、成交量的平均值
close_all = all_close
ma5 = talib.SMA(close_all, timeperiod=5)
ma10 = talib.SMA(close_all, timeperiod=10)
ma20 = talib.SMA(close_all, timeperiod=20)
ma30 = talib.SMA(close_all, timeperiod=30)
ma60 = talib.SMA(close_all, timeperiod=60)
vol_all = all_vol
ma5_vol = talib.SMA(vol_all, timeperiod=5)
ma10_vol = talib.SMA(vol_all, timeperiod=10)
ma20_vol = talib.SMA(vol_all, timeperiod=20)
ma30_vol = talib.SMA(vol_all, timeperiod=30)
#写入mysql
len_record = len(all_trade_day)
for i in range(len_record):
self.db.update_kdata(code, all_trade_day[i],
ma5[i], ma10[i], ma20[i], ma30[i], ma60[i],
ma5_vol[i], ma10_vol[i], ma20_vol[i], ma30_vol[i])
#print(code," trade_day=",all_trade_day[i]," ma5=",ma5[i])
except Exception as e:
print('DataProcess error,e=', e, 'code=', code)
效果: