赞
踩
前面9篇博文对量化交易的各种图形绘制以及计算公式已经讲解的比较清楚了。这里,我们再来玩一个有意思的量化交易,就是用机器学习中的算法预测股票下一日的涨跌,相信本篇是大家最期待的,那么不妨往下看。
随机森林(Random Forest)是一种经典的Bagging模型,Bagging算法类似与投票,它是一个弱学习器决策树,每个弱学习器(可以看作每个人,在股票预测中,可以看成训练模型的每个分组)都有一票,最终我们会根据“少数服从多数的原则”产生最后的预测结果。
比如原始的数据集:歌尔股份,有一年的涨跌情况,我们使用随机森林算法进行预测,它会首先将这所有的数据分成样本1,2,3,4等等进行训练,然后你导入某一天的股票数据详情,那么每个样本会根据你导入的数据进行预测涨跌,最终哪个预测结果多,就是哪个。
这里,我们需要获取股票的历史涨跌情况进行训练。所以,我们首先要做的就是获取股票的数据,这里我们获取牧原股份2019至今的数据作为基本数据,具体代码如下:
import akshare as ak
df=ak.stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sz002714", start_date="20190101", end_date="20210130", adjust="qfq")
df.to_excel("牧原股份.xlsx")
这里我们获取的股票数据,只有成交量,开盘价,收盘价,最低价,最高价,这样的训练数据显然不是很完善,毕竟股票涨跌还有许多的其他因素,这里我们需要把这些因素全部计算出来,当作训练集。
比如,我们需要计算股票当前的波动幅度,昨日收盘价,5,10日均线,股票相对强弱指标RSI值,动量指标MOM值等,计算方法具体如下:
df["close-open"] = (df["close"] - df["open"]) / df["open"] # 当日开盘价与收盘价的波动幅度
df["high-low"] = (df["high"] - df["low"]) / df["low"] # 当日最高价与最低价的波动幅度
df["pre_close"] = df["close"].shift(1) # 昨日收盘价
df["price_change"] = df["close"] - df["pre_close"] # 当天股价的变化
df["p_change"] = (df["close"] - df["pre_close"]) / df["pre_close"] * 100 # 当天股价的涨跌幅百分比
df["MA5"] = df["close"].sort_index().rolling(5).mean() # 获取5日均线
df["MA10"] = df
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。