大佬教程收集整理的这篇文章主要介绍了❤️ 炒 股 实 战丨原 地 起 飞 ❤️,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
郑重声明:
ἴ5; 作者主页:不吃西红柿
ἴ5; 简介:CSDN博客专家🏆、信息技术智库公号作者ɰc;简历模板、PPT模板、技术交流、面试套路尽管【关注】私聊我。
ἴ5; 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
本文主要介绍三部分:数据采集c;数据预处理c;利用SVM算法进行建模。
作为一个新手c;你需要以下3个步骤: 1、用户注册 > 2、获取token > 3、调取数据
数据内容:包含股票、基金、期货、债券、外汇、行业大数据c;同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台c;为各类金融投资和研究人员提供适用的数据和工具。
我们进行本地化计算c;首先要做的c;就是将所需的基础数据采集到本地数据库里c;本篇的示例源码采用的数据库是@H_754_3@mySQL5.5c;数据源是xxx pro接口。
我们现在要取一批特定股票的日线行情c;部分代码如下:
# 设置xxxxx pro的token并获取连接
# 公众号:信息技术智库
ts.set_token('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
pro = ts.pro_api()
# 设定获取日线行情的初始日期和终止日期c;其中终止日期设定为昨天。
start_dt = '20100101'
time_temp = datetiR_698_11845@e.datetiR_698_11845@e.now() - datetiR_698_11845@e.timedelta(days=1)
end_dt = time_temp.strftime('%Y%m%d')
# 建立数据库连接,剔除已入库的部分
db = pymysql.connect(host='127.0.0.1', user='Root', passwd='admin', db='stock', charset='utf8')
cursor = db.cursor()
# 设定需要获取数据的股票池
stock_pool = ['603912.SH','300666.SZ','300618.SZ','002049.SZ','300672.SZ']
@R_718_10586@l = len(stock_pool)
# 循环获取单个股票的日线行情
for i in range(len(stock_pool)):
try:
df = pro.daily(ts_code=stock_pool[i], start_date=start_dt, END_DATE=end_dt)
# 打印进度
print('Seq: ' + str(i+1) + ' of ' + str(@R_718_10586@l) + ' Code: ' + str(stock_pool[i]))
上述代码的注释部分已将每行代码的功能解释清楚了c;实际上数据采集的程序主要设置三个参数:获取行情的初始日期c;终止日期c;以及股票代码池。
当我们获取数据后c;就要往本地数据库进行写入(存储)操作了c;本篇代码用的是sql语言c;需提前在数据库内建好相应的表c;表配置和表结构如下:
库名:stock 表名:stock_all
其中 state_dt 和 stock_code 是主键和索引。state_dt 的格式是 ‘YYYY-mm-dd’(例:'2018-06-11')。这样的日期格式便于查询c;且在MySQL内部能够进行大小比较。
无论是量化策略还是单纯的机器学习项目c;数据预处理都是非常重要的一环。以机器学习的视角来看c;数据预处理主要包括数据清洗c;排序c;缺失值或异常值处理c;统计量分析c;相关性分析c;主成分分析(PCA)c;归一化等。本篇所要介绍的数据预处理比较简单c;只是将存在本地数据库的日线行情数据整合成一份训练集数据c;以用于后续的机器学习建模和训练。
在介绍具体的示例代码之前c;我们需要先思考一个问题c;应用有监督学习的算法对个股进行建模c;我们的输入数据有哪些c;我们期望得到的输出数据又是什么?
这个问题的答案因人而异c;因策略而异。这个问题本身是将市场问题转化为数学问题的一个过程。依赖的是量化宽客自己的知识体系和对市场的理解。
回到正题c;本篇示例我们将以最简单的数据进行分析c;我们输入端的数据是个股每日基础行情c;输出端数据是股价相较前一交易日的涨跌状态。@R_251_10944@就是c;我们向模型输入今天的基础行情c;让模型预测明天股价是涨还是跌。
在代码实现方式上c;我们采用面向对象的思想c;将整个数据预处理过程和结果c;封装成一个类c;每次创建一个类实例c;就得到了特定条件下的一份训练集。示例代码如下:
class data_collect(object):
def __init__(self, in_code,start_dt,end_dt):
ans = self.collectDATA(in_code,start_dt,end_dt)
def collectDATA(self,in_code,start_dt,end_dt):
# 建立数据库连接c;获取日线基础行情(开盘价c;收盘价c;最高价c;最低价c;成交量c;成交额)
db = pymysql.connect(host='127.0.0.1', user='Root', passwd='admin', db='stock', charset='utf8')
cursor = db.cursor()
sql_done_set = "seleCT * FROM stock_all a where stock_code = '%s' and state_dt >= '%s' and state_dt <= '%s' order by state_dt asc" % (in_code, start_dt, end_dt)
cursor.execute(sql_done_set)
done_set = cursor.fetchall()
if len(done_set) == 0:
raise Exception
self.date_seq = []
self.open_list = []
self.close_list = []
self.high_list = []
self.low_list = []
self.vol_list = []
self.amount_list = []
for i in range(len(done_set)):
self.date_seq.append(done_set[i][0])
self.open_list.append(float(done_set[i][2]))
self.close_list.append(float(done_set[i][3]))
self.high_list.append(float(done_set[i][4]))
self.low_list.append(float(done_set[i][5]))
self.vol_list.append(float(done_set[i][6]))
self.amount_list.append(float(done_set[i][7]))
cursor.close()
db.close()
# 将日线行情整合为训练集(其中self.Train是输入集c;self.target是输出集c;self.test_case是end_dt那天的单条测试输入)
self.data_Train = []
self.data_target = []
最终这个类实例化后是要整合出三个数据:
机器学习中有诸多有监督学习算法c;SVM是比较常见的一种c;本例采用SVM算法进行建模。关于SVM的理论原理本篇不做详述c;以下仅从实践角度进行建模介绍。
先贴一段建模、训练并进行预测的代码大家感受一下:)
@H_176_83@model = svm.SVC() # 建模
model.fit(Train, target) # 训练
ans2 = model.preDict(test_casE) # 预测
三行代码c;让人想起了把大象装冰箱分几步的冷笑话……
不过这侧面也说明Python在数据挖掘方面的强大之处:简单c;方便c;好用。
本例用的机器学习框架是scikit-learn。是个非常强大的算法库c;熟悉算法原理的朋友可以查阅官方API文档c;可修改模型参数c;进一步调优模型;亦可尝试其他算法比如决策树c;逻辑回归c;朴素贝叶斯等。
热门专栏推荐:
🥇 大数据集锦专栏:大数据-硬核学习资料 & 面试真题集锦 🥈 数据仓库专栏:数仓发展史、建设方法论、实战经验、面试真题 🥉 Python专栏:Python相关黑科技:爬虫、算法、小工具
(优质好文持续更新中……)✍
以上是大佬教程为你收集整理的❤️ 炒 股 实 战丨原 地 起 飞 ❤️全部内容,希望文章能够帮你解决❤️ 炒 股 实 战丨原 地 起 飞 ❤️所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。