量化交易策略思想与原码-机器学习在股市简单应用

上传人:第*** 文档编号:57981090 上传时间:2018-10-25 格式:PDF 页数:12 大小:339.75KB
返回 下载 相关 举报
量化交易策略思想与原码-机器学习在股市简单应用_第1页
第1页 / 共12页
量化交易策略思想与原码-机器学习在股市简单应用_第2页
第2页 / 共12页
量化交易策略思想与原码-机器学习在股市简单应用_第3页
第3页 / 共12页
量化交易策略思想与原码-机器学习在股市简单应用_第4页
第4页 / 共12页
量化交易策略思想与原码-机器学习在股市简单应用_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《量化交易策略思想与原码-机器学习在股市简单应用》由会员分享,可在线阅读,更多相关《量化交易策略思想与原码-机器学习在股市简单应用(12页珍藏版)》请在金锄头文库上搜索。

1、机器学习机器学习在股市的在股市的简单简单应用应用 导语:导语: 在我们的数学课堂中,我们给大家简单介绍了几种机器学习方法的算法原理(SVM,朴素贝叶斯,随机森林等等),在每篇文章的最后,我们都放了一个非常小的例子来帮助大家使用这些算法。 这一篇就给大家展示一个更贴近实际的例子, 来帮助大家更好的使用这些算法。 本文中, 为了降低提取的特征中的噪声, 我们将常见技术分析指标进行离散化, 作为特征值,如 RSI,MACD,等等。然后应用 SVM,朴素贝叶斯和随机森林算法来预测下一个交易日的涨跌情况。 为了和实际应用场景更接近, 我们每天都会向训练数据中添加今天的数据, 因为训练数据集发生了改变,我

2、们每天都会训练一个新的模型。下面我们正式开工。 本文由 JoinQuant 量化课堂推出 。难度标签为进阶上,理解深度标签:level-0 作者:yongpeng.r 编辑:宏观经济算命师 阅读前需要了解: 文中涉及到 SVM,随机森林,朴素贝叶斯算法,可以参照量化课堂中的 支持向量机入门,随机森林入门,朴素贝叶斯入门。 训练预测代码介绍 本文是之前的支持向量机,随机森林,朴素贝叶斯等机器学习算法的应用篇,具体的代码可 以参照文中后面的研究模块, 下面先将一些重要的代码拿出来说说, 以方便大家理解代码的 逻辑。 特征计算特征计算 我们先通过 get_price 方法得到该支股票的前 35 个交

3、易日的开高低收和交易量数据,然后利用talib包提供的特征计算API计算相应的特征。 在这次实验中, 我们选取了SMA, WMA,批注批注 M1: 到时候加上链接,发的时候不用 MOM,STCK,STCD,MACD,RSI,WILLR,CCI,MFI,OBV,ROC,CMO 等技术指标作为训练模型的特征。计算 SMA 指标的代码如下: trading_days = get_all_trade_days() start_day = trading_daysindex - 35 end_day = trading_daysindex stock_data = get_price(test_stoc

4、k, start_date=start_day, end_date=end_day, frequency=daily, fields=close,high,low,volume) close_prices = stock_dataclose.values sma_data = talib.SMA(close_prices)-1 分类分类标签确定标签确定 如果下一个交易日的收盘价比当前交易日的收盘价高,label 的值为 True,否则为 False。相关代码如下: start_day = trading_daysindex end_day = trading_daysindex + 1 sto

5、ck_data = get_price(test_stock, start_date=start_day, end_date=end_day, frequency=daily, fields=close,high,low,volume) close_prices = stock_dataclose.values label = False if close_prices-1 close_prices-2: label = True 特征特征离散化离散化 通过 talib 库计算出来的特征都是连续值,由于股市中的噪声非常多,如果直接将连续值特征放到机器学习算法中训练,得到的结果很可能过拟合的(回

6、测结果好,实盘结果差)。为了避免过拟合,本文中结合各个特征的含义,将连续值特征离散化为二值特征。比如对于SMA 特征,离散化的方法就是和当日收盘价相比较,若 SMA 小于当前收盘价,离散之后的特征值是 1, 若 SMA 大于等于收盘价, 离散之后的特征值是-1。 SMA 离散化的代码如下,x_all 是存放所有特征值的二维数组,x_all 中的第 1 列存放的就是 SMA 特征数据。 # SMA if x_allindex0 close_prices-2: label = True x_all.append(features) y_all.append(label) #连续数值离散化 #从后面

7、开始向前面遍历,第一行数据需要舍弃,range 只包含第一个元素,不包含第二个元素 for index in range(len(x_all)-1, 0, -1): # SMA if x_allindex0 0: x_allindex2 = 1 else: x_allindex2 = -1 # STCK if x_allindex3 x_allindex-13: x_allindex3 = 1 else: x_allindex3 = -1 # STCD if x_allindex4 x_allindex-14: x_allindex4 = 1 else: x_allindex4 = -1 #

8、MACD if x_allindex5 x_allindex-15: x_allindex5 = 1 else: x_allindex5 = -1 # RSI if x_allindex6 70: x_allindex6 = -1 elif x_allindex6 x_allindex-16: x_allindex6 = 1 else: x_allindex6 = -1 # WILLR if x_allindex7 x_allindex-17: x_allindex7 = 1 else: x_allindex7 = -1 # CCI if x_allindex8 200: x_allindex

9、8 = -1 elif x_allindex8 x_allindex-18: x_allindex8 = 1 else: x_allindex8 = -1 # MFI if x_allindex9 90: x_allindex9 = -1 elif x_allindex9 x_allindex-19: x_allindex9 = 1 else: x_allindex9 = -1 # OBV if x_allindex10 x_allindex-110: x_allindex10 = 1 else: x_allindex10 = -1 # ROC if x_allindex11 0: x_all

10、index11 = 1 else: x_allindex11 = -1 # CMO if x_allindex12 50: x_allindex12 = -1 elif x_allindex12 x_allindex-112: x_allindex12 = 1 else: x_allindex12 = -1 # 删除价格 x_allindex.pop(-1) # 去除第一行数据 x_all = x_all1: y_all = y_all1: # 训练数据是除去最后一个数据之后的全部数据 x_train = x_all:-1 y_train = y_all:-1 # 测试数据就是最后一个数据 x

11、_test = x_all-1 y_test = y_all-1 # 以下三行代码分别是利用 SVM,随机森林,朴素贝叶斯,调用其中的一句就好 clf = svm.SVC() # clf = RandomForestClassifier(n_estimators=50) # clf = GaussianNB() # 训练过程 clf.fit(x_train, y_train) # 预测过程 prediction = clf.predict(x_test) if prediction = y_test: print(True) result_list.append(1) else: print(False) result_list.append(-1) #将准确率曲线画出来 x = range(0, len(result_list) y = for i in range(0, len(result_list): y.append(1 + float(sum(result_list:i) / (i+1) / 2) line, = plt.plot(x, y) plt.show

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号