- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章利用python数据分析处理进行炒股实战行情由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
作为一个新手,你需要以下3个步骤:
1、用户注册 > 2、获取token > 3、调取数据 。
包含股票、基金、期货、债券、外汇、行业大数据, 。
同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台, 。
为各类金融投资和研究人员提供适用的数据和工具.
我们进行本地化计算,首先要做的,就是将所需的基础数据采集到本地数据库里 。
本篇的示例源码采用的数据库是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语言,需提前在数据库内建好相应的表,表配置和表结构如下:
其中 state_dt 和 stock_code 是主键和索引。state_dt 的格式是 ‘yyyy-mm-dd"(例:"2018-06-11").
这样的日期格式便于查询,且在MySQL内部能够进行大小比较.
无论是量化策略还是单纯的机器学习项目,数据预处理都是非常重要的一环.
本篇所要介绍的数据预处理比较简单 。
只是将存在本地数据库的日线行情数据整合成一份训练集数据, 。
以用于后续的机器学习建模和训练.
在介绍具体的示例代码之前,我们需要先思考一个问题, 。
这个问题的答案因人而异,因策略而异.
这个问题本身是将市场问题转化为数学问题的一个过程.
依赖的是量化宽客自己的知识体系和对市场的理解.
回到正题,本篇示例我们将以最简单的数据进行分析, 。
我们输入端的数据是个股每日基础行情,输出端数据是股价相较前一交易日的涨跌状态.
简单点说就是,我们向模型输入今天的基础行情,让模型预测明天股价是涨还是跌.
在代码实现方式上, 。
示例代码如下:
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 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是输入集,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 末交易日的基础行情数据,作为输入端,用于模型训练完成后,对第二天的涨跌进行预测.
SVM是比较常见的一种,本例采用SVM算法进行建模.
关于SVM的理论原理本篇不做详述,以下仅从实践角度进行建模介绍.
先贴一段建模、训练并进行预测的代码大家感受一下:) 。
model = svm.SVC() # 建模model.fit(train, target) # 训练ans2 = model.predict(test_case) # 预测
三行代码,让人想起了把大象装冰箱分几步的冷笑话…… 。
不过这侧面也说明Python在数据挖掘方面的强大之处:简单,方便,好用.
本例用的机器学习框架是scikit-learn是个非常强大的算法库.
熟悉算法原理的朋友可以查阅官方API文档,可修改模型参数,进一步调优模型; 。
亦可尝试其他算法比如决策树,逻辑回归,朴素贝叶斯等.
以上就是利用python数据分析进行炒股实战行情的详细内容,更多关于python数据分析的资料请关注我其它相关文章! 。
原文链接:https://blog.csdn.net/weixin_39032019/article/details/119974784 。
最后此篇关于利用python数据分析处理进行炒股实战行情的文章就讲到这里了,如果你想了解更多关于利用python数据分析处理进行炒股实战行情的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!