❤️ 炒 股 实 战丨原 地 起 飞 ❤️

郑重声明: 

1、个人版可以免费获取交易数据进行分析,企业级大规模调用数据需要购买积分(大家玩玩即可)

2、为避免广告代言,本文将不会出现任何logo、链接和包,需要玩的主页私聊我!

🍅 作者主页:不吃西红柿

🍅 简介:CSDN博客专家🏆、信息技术智库公号作者✌简历模板、PPT模板、技术交流、面试套路尽管【关注】私聊我。

🍅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

本文主要介绍三部分数据采集,数据预处理,利用SVM算法进行建模

作为一个新手,你需要以下3个步骤: 1、用户注册 > 2、获取token > 3、调取数据

数据内容:包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。

>> 1、数据采集 <<

我们进行本地化计算,首先要做的,就是将所需的基础数据采集到本地数据库里,本篇的示例源码采用的数据库是MySQL5.5,数据源是xxx pro接口。

我们现在要取一批特定股票的日线行情,部分代码如下:

# 设置xxxxx pro的token并获取连接
# 公众号:信息技术智库
ts.set_token('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
pro = ts.pro_api()
# 设定获取日线行情的初始日期和终止日期,其中终止日期设定为昨天。
start_dt = '20100101'
time_temp = datetime.datetime.now() - datetime.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']
total = 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(total) + '   Code: ' + str(stock_pool[i]))

上述代码的注释部分已将每行代码的功能解释清楚了,实际上数据采集的程序主要设置三个参数:获取行情的初始日期,终止日期,以及股票代码池

当我们获取数据后,就要往本地数据库进行写入(存储)操作了,本篇代码用的是SQL语言,需提前在数据库内建好相应的表,表配置和表结构如下:

库名:stock       表名:stock_all

其中 state_dt 和 stock_code 是主键和索引。state_dt 的格式是 ‘yyyy-mm-dd’(例:'2018-06-11')。这样的日期格式便于查询,且在MySQL内部能够进行大小比较。
 

>> 2、数据预处理 <<

无论是量化策略还是单纯的机器学习项目,数据预处理都是非常重要的一环。以机器学习的视角来看,数据预处理主要包括数据清洗,排序,缺失值或异常值处理,统计量分析,相关性分析,主成分分析(PCA),归一化等。本篇所要介绍的数据预处理比较简单,只是将存在本地数据库的日线行情数据整合成一份训练集数据,以用于后续的机器学习建模和训练

在介绍具体的示例代码之前,我们需要先思考一个问题,应用有监督学习的算法对个股进行建模,我们的输入数据有哪些,我们期望得到的输出数据又是什么?

这个问题的答案因人而异,因策略而异。这个问题本身是将市场问题转化为数学问题的一个过程。依赖的是量化宽客自己的知识体系和对市场的理解。

回到正题,本篇示例我们将以最简单的数据进行分析,我们输入端的数据是个股每日基础行情,输出端数据是股价相较前一交易日的涨跌状态。简单点说就是,我们向模型输入今天的基础行情,让模型预测明天股价是涨还是跌。

在代码实现方式上,我们采用面向对象的思想,将整个数据预处理过程和结果,封装成一个类,每次创建一个类实例,就得到了特定条件下的一份训练集。示例代码如下:

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):# 建立数据库连接,获取日线基础行情(开盘价,收盘价,最高价,最低价,成交量,成交额)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 Exceptionself.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是输入集,self.target是输出集,self.test_case是end_dt那天的单条测试输入)self.data_train = []self.data_target = []

最终这个类实例化后是要整合出三个数据:

  • 1. self.train :训练集中的输入端数据,本例中是每日基础行情。
  • 2. self.target :训练集中的输出数据,本例中相较于前一天股价的涨跌,涨为1,不涨为0。并且在排序上,每条 t 交易日的self.train里的数据对应的是 t+1 天股价的涨跌状态。
  • 3. self.test_case :在 t 末交易日的基础行情数据,作为输入端,用于模型训练完成后,对第二天的涨跌进行预测。

>> 3、SVM建模 <<

机器学习中有诸多有监督学习算法,SVM是比较常见的一种,本例采用SVM算法进行建模。关于SVM的理论原理本篇不做详述,以下仅从实践角度进行建模介绍。

先贴一段建模、训练并进行预测的代码大家感受一下:)

model = svm.SVC()               # 建模
model.fit(train, target)        # 训练
ans2 = model.predict(test_case) # 预测

三行代码,让人想起了把大象装冰箱分几步的冷笑话……

不过这侧面也说明Python在数据挖掘方面的强大之处:简单,方便,好用。

本例用的机器学习框架是scikit-learn。是个非常强大的算法库,熟悉算法原理的朋友可以查阅官方API文档,可修改模型参数,进一步调优模型;亦可尝试其他算法比如决策树,逻辑回归,朴素贝叶斯等。


热门专栏推荐:

🥇 大数据集锦专栏:大数据-硬核学习资料 & 面试真题集锦 
🥈 数据仓库专栏:数仓发展史、建设方法论、实战经验、面试真题 
🥉 Python专栏:Python相关黑科技:爬虫、算法、小工具 

(优质好文持续更新中……)✍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能研究的新前线:生成式对抗网络

林懿伦, 戴星原, 李力, 王晓, 王飞跃来源&#xff1a;科学网 摘要&#xff1a;生成式对抗网络&#xff08;Generative adversarial networks, GAN&#xff09;是当前人工智能学界最为重要的研究热点之一。其突出的生成能力不仅可用于生成各类图像和自然语言数据&#xff0c;还启…

WP7开发小技巧之快捷键

开发 Windows Phone 7 应用程式&#xff0c;开启用键盘输入的密技 1. 启用键盘输入 在模拟器里调试程序时&#xff0c;默认情况下是不能用电脑的键盘输入&#xff0c;但是调试如果能用PC键盘肯定能提高不少速度。其实微软已经为我们程序员做了这方面的工作&#xff0c;可以按如…

1.MySQL数据库的介绍

1.MySQL数据库的介绍 什么是数据库 数据库(Database)就是按照数据结构来组织&#xff0c;存储和管理数据的仓库 专业的数据库是专门对数据进行创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索等操作的软件&#xff0c;比起我们自己用文件读写的方式对象数据进行管理更…

中国自动化学会平行智能专业委员会成立

摘要&#xff1a;2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。中国科学院院士吴宏鑫教…

蚂蚁的天堂

当今各个社区都轰轰烈烈的展开灭蚁运动时&#xff0c;我却任由蚂蚁在窗台的花盆里做窝&#xff0c;看着它们辛勤的在高大植物的根茎上劳作&#xff0c;时不时的还帮我灭掉了植物上害虫的幼卵&#xff0c;我就很高兴有这么一群邻居&#xff0c;时不时的还送写肉碎过来&#xff0…

2008-2018,5个版本互联网大脑模型的演进与对比

2018年8月&#xff0c;我们绘制的第五个版本的互联网大脑模型图&#xff0c;新的版本相当于为互联网找到了左右大脑的机制-机器智能左大脑和群体智能右大脑。第五版的绘制距离2008年第一个版本正好10年。互联网大脑模型主要是针对1969年以来互联网的网状模型&#xff0c;在21世…

2.安装MySQL

2.安装MySQL Mac系统中安装MySQL 使⽤用Mac中的Homebrew进⾏行行mysql的安装 1.下载安装mysql brew install mysql5.7 如果看到以下界⾯面则表示已经下载安装成功 2.启动mysql mysql.server start 3.关闭mysql mysql.server stop 4.登录mysql mysql -u root -p Windows安…

正则判断字符串是否为数字

var re /^(-?\d)(\.\d)?$/; //判断字符串是否为数字 var re/^[A-Za-z0-9]$/; //字母和数字组合转载于:https://www.cnblogs.com/peterdys/archive/2012/10/19/2731502.html

3.认识和操作一下mysql的基本命令

3.认识和操作一下mysql的基本命令 登录mysql,在终端输入以下命令&#xff0c;进行登录 mysql -u root -pMacBook-Pro:~ yc$ mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.7.28…

CNNIC互联网报告:中国网民超8亿 前沿科技进展显著

来源&#xff1a;新浪摘要&#xff1a;8月20日下午消息&#xff0c;中国互联网络信息中心(CNNIC)在京发布第42次《中国互联网络发展状况统计报告》。根据报告&#xff0c;截至2018年6月30日&#xff0c;我国网民规模达8.02亿&#xff0c;普及率为57.7%;手机网民规模达7.88亿&am…

以前看过一个压缩过的.exe,运行会播放长达半小时的动画,却只有60KB,个人认为其中的原理...

以前看过一个压缩过的.exe&#xff0c;运行会播放长达半小时的动画&#xff0c;而不重复&#xff0c;文件大小却只有60KB&#xff0c;个人认为其中的原理 1.主原理&#xff1a;该动画必是根据规则&#xff08;即公式&#xff09;生成的 2.启动时&#xff0c;根据公式&#xff0…

4.MySQL基础操作

4.MySQL基础操作 使用方法: 方式一: 通过在命令行敲命令来操作 ( 有助于命令的掌握)方式二: 通过图型界面工具,如 Navicat 等(在熟练掌握后再使用)方式三:通过编程语言(python,php,java,go...)执行mysql命令 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个…

OE模块常用表结构

so_headers_all&#xff1b;so_lines_all&#xff1b; 表名:ONT.OE_order_headers_all 说明:订单头 HEADER_ID NUMBER 订单头标识码 ORG_ID NUMBER OU ID ORDER_TYPE_ID NUMBER 订单类型ID ORDER_NUMBER NUMBER 订单编号 ORDERED_DATE DATE 定购日期 REQUEST_DATE DATE 客户要求…

19个人工智能(AI)热门应用领域,你知道多少?

来源&#xff1a;网络大数据摘要&#xff1a;自然语言生成是人工智能的分支&#xff0c;研究如何将数据转化为文本&#xff0c;用于客户服务、报告生成以及市场概述。01自然语言生成(Natural Language Generation)自然语言生成是人工智能的分支&#xff0c;研究如何将数据转化为…

滴滴重磅发布:KDD2018大会187页人工智能+交通教程

来源&#xff1a;专知摘要&#xff1a;随着深度学习技术的提升&#xff0c;智能交通领域吸引了越来越多研究人员的关注&#xff0c;今天为大家带来滴滴在KDD大会上的最新教程&#xff0c;为大家呈现智能交通领域的最新进展。摘要随着网上约车与自动驾驶技术的快速发展&#xff…

5.一文搞懂MySQL的数据类型

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌简历模板、PPT模板、技术资料尽管【关注】私聊我。 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 历史文章目录&#…

用busybox制作并配置根文件系统

http://blog.chinaunix.net/uid-26758020-id-3208951.html一、根文件系统和busybox1&#xff09; 在&#xff5e;目录下&#xff0c;创建一个rootfs目录&#xff0c;将其制作为nfs&#xff0c;目录结构如下&#xff08;写一个脚本script.sh&#xff09;&#xff1a;mkdir bin d…

中国机器人产业发展报告(2018)正式发布!

来源&#xff1a;机器人创新生态摘要&#xff1a;2018年8月16日&#xff0c;《中国机器人产业发展报告&#xff08;2018&#xff09;》于2018世界机器人大会主论坛上正式发布&#xff0c;该报告为工信部2016-2018年专项《建立我国机器人团体标准体系与产业信息资源库》的阶段性…

❤️ 给你的Linux把把脉(内存、磁盘、CPU、网络)❤️

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 今日重点&#xff1a; ① 学会查看linux各种状态&#xff0c;包括&a…

团结就是力量,TeamCola浅谈创业团队腾云驾雾的归国征程

记得网上曾流传过这样一句话&#xff1a;“不怕神一样的对手&#xff0c;就怕猪一样的队友”&#xff0c;相信看过的人都会心一笑&#xff0c;明白与优秀的搭档默契地合作有多重要。“你需要信任你伙伴的能力和责任心&#xff0c;而信任的基础则是开放和透明——在一个扁平而高…