金融量化交易,是时下最时髦的词。相对于人工股票,量化交易通过采集数据,定制交易策略,程序化执行,可以避免人工盯盘的辛劳,更能轻松解决人性中的很多牵绊对交易的影响,也是新一代股民的革命武器。很多人也因学习量化交易,学习了Python编程,学习了pandas数据分析,甚至学习了各种指标分析。
说到量化交易,不可避免的首先就是行情数据源的获取。虽然市面上各种量化平台众多,但大多聚焦于回测用的历史数据,实时行情数据要么需要付费,或者就需要在特定券商开户(一般有大资金量的要求)。那作为初入股市或者资金量不大的Python股民,就没有办法了吗?怎么会!这难不倒爱钻研的IT人。下面就说说几种常见的获取数据源是方式。
注:以下平台均基于Python,建议安装Anaconda,一次性解决Python及数据分析常用pandas,numpy等包,省去很多麻烦,这对初学者很重要。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包(数据分析用到的pandas)及其依赖项,下载地址https://www.anaconda.com/download/。
以下几种方法都可以实现对股票行情数据的提取,返回pandas数据格式,方便进行数据分析和加工。
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。Pro版做了更大的改进。数据内容将扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。
方式1:pip install tushare --upgrade
使用国内源安装:
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --upgrade
https://github.com/waditu/tushare
Tushare :http://tushare.org/
Tushare Pro:https://tushare.pro/
AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。
AKShare 的特点是获取的是相对权威的财经数据网站公布的原始数据,通过利用原始数据进行各数据源之间的交叉验证,进而再加工,从而得出科学的结论。
AKShare 后续会基于学术论文和研究报告来添加更多数据接口和衍生指标,并提供相应的计算代码,敬请关注。
pip install akshare --upgrade
使用国内源安装:
pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --upgrade
https://github.com/akfamily/akshare
证券宝www.baostock.com是一个免费、开源的证券数据平台(无需注册)。
提供大量准确、完整的证券历史行情数据、上市公司财务数据等。 通过python API获取证券数据信息,满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。
方式1:pip install baostock --upgrade
使用国内源安装:
pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --upgrade
Ashare ( 开源 极简 A股实时行情数据API),项目库就一个文件Ashare.py,不用安装设置,可自由裁剪,随用随走 from Ashare import * 即可。
双内核封装,新浪财经,腾讯股票的实时行情数据,包括任意历史日线,周线,月线,分钟线,小时线等,已经稳定运行数年。双内核一主一备,自动热备,自动切换,Ashare即使用来做量化实盘行情源也可以满足。
从Github下载Ashare.py文件,复制到自己的项目目录下即可。
https://github.com/mpquant/Ashare
https://github.com/mpquant/Ashare
Pytdx一款纯Python语言开发的类似TradeX的行情数据接口的实现,虽然目前已不再维护,但其仍可以使用。
pip install pytdx --upgrade
https://github.com/rainx/pytdx(已不再维护)
https://rainx.gitbooks.io/pytdx/content/
因测试代码需要使用以上包,请提前使用pip语句进行安装;Ashare需要下载Ashare.py,并将其和测试代码放在同一目录。
另外,为了方便数据展示,需要调用prettytable包,请测试前提前安装,以免报错。安装语句如下:
pip install -U prettytable
(以提取300750代码,20210101~20220715,共371跟K线日线历史行情为例。耗时数据为单次结果,因涉及网速、数据列内容不一致,表格处理等,不具有统计意义,仅作参考,使用前请自行测试。)
import time
# ===============表格美化输出===============
def df_table(df,index):
import prettytable as pt
#利用prettytable对输出结果进行美化,index为索引列名:df_table(df,'market')
tb = pt.PrettyTable()
df = df.reset_index(drop = True)
tb.add_column(index,df.index)
for col in df.columns.values:#df.columns.values的意思是获取列的名称
tb.add_column(col, df[col])
print(tb)
# 测试计时开始,测试哪个就把if 后面的0改为1即可,其它改成0。
time1 = time.time()
print('开始提取数据')
if 0:
# 1.Tushare
import tushare as ts
pro = ts.pro_api('6a0899533f8a5996f738183dbdf63c0afb3fcc931f08e1233575a339')#token,请注册后替换为自己的token。
df = pro.daily(ts_code='300750.SZ', start_date='20210101', end_date='20220715')
print('Tushare行情获取\n',df)
# 单次提取股票数据耗时: 1.0941672325134277 秒
if 0:
# 2.AKshare
import akshare as ak
df = ak.stock_zh_a_hist(symbol="300750", period="daily", start_date="20210101", end_date='20220715', adjust="qfq")
print('AKshare行情获取\n',df)
# 单次提取股票数据耗时: 2.899998426437378 秒
if 0:
# baostock
import baostock as bs
import pandas as pd
lg = bs.login()
rs = bs.query_history_k_data_plus("sz.300750",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2021-01-01', end_date='2022-07-15',
frequency="d", adjustflag="3")
data_list = []
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
df = pd.DataFrame(data_list, columns=rs.fields)
bs.logout()
print('baostock行情获取\n',df)
# 单次提取股票数据耗时: 0.9699969291687012 秒
if 0:
# 4.Ashare
from Ashare import *
df=get_price('sz300750',frequency='1d',count=371) #默认获取今天往前5天的日线实时行情,count=371,表示获取371根K线。
print('Ashare行情获取\n',df)
# 单次提取股票数据耗时: 0.9399988651275635 秒
if 1:
# 5.Pytdx
from pytdx.hq import TdxHq_API
api = TdxHq_API()
# 数据获取接口一般返回list结构,如果需要转化为pandas Dataframe接口,可以使用 api.to_df 进行转化
with api.connect('119.147.212.81', 7709):
df = api.to_df(api.get_security_bars(9, 0, '300750', 0, 371))
print('pytdx行情获取\n',df)
# 单次提取股票数据耗时: 0.9504680633544922 秒
if __name__ == "__main__":
df_table(df,'行情')
time2 = time.time()
print("单次提取股票数据耗时:",time2-time1,'秒')
文章浏览阅读1.1k次。【代码】获取当天时间并且获取当天时间的前三十天。_js如何计算当前日期的前15天日期
文章浏览阅读563次,点赞5次,收藏7次。"Another Redis Desktop Manager"(又称 "RedisDesktopManager" 或 "RDM")是一个流行的开源工具,用于管理和监控 Redis 数据库。安装完成后,你可以使用 RDM 连接到你的 Redis 数据库,并进行诸如浏览键值、执行命令、监控性能等操作。这样可以大大简化对 Redis 数据库的管理和操作。Another Redis Desktop Manager是1.5.2版本安装,安装完成之后,如果提示需要升级是可以升级的不会有什么影响的。_redis可视化监控工具
文章浏览阅读4.1k次,点赞2次,收藏15次。f2fs_mount_f2fs挂载
文章浏览阅读930次。seata_could not register branch into global session
文章浏览阅读1.1k次,点赞21次,收藏20次。https://blog.csdn.net/weixin_63131036/article/details/133914372(本地yum)3.创建日志文件 如果主库有三个了(那就要创建四个)配置yum源:(配置网络源和本地源都可以)这个是配置目录,如果有的话就不用创建啦。这个是配置目录,如果有的话就不用创建啦。dataguard数据同步测试。检查dataguard日志。备库的数据库环境装好了。这样主库就搭建成功了。_oracle19 ha搭建
文章浏览阅读70次。1.blur()当元素失去焦点时发生 blur 事件。blur() 函数触发 blur 事件,或者如果设置了function参数,该函数也可规定当发生 blur 事件时执行的代码。2.change()当元素的值发生改变时,会发生 change 事件。该事件仅适用于文本域(text field),以及 textarea 和 select 元素。change()..._列举几种jquery中常用的事件方法
文章浏览阅读80次。今天学长向大家分享一个毕业设计项目毕业设计 基于深度学习的驾驶行为检测(玩手机)毕业设计 深度学习的驾驶行为检测(玩手机)YOLO系列是基于深度学习的回归方法。该系列陆续诞生出YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5。YOLOv5算法,它是一种单阶段目标检测的算法,该算法可以根据落地要求灵活地通过chaneel和layer的控制因子来配置和调节模型,所以在比赛和落地中应用比较多。同时它有YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s四种模型。_玩手机数据集
文章浏览阅读828次。SQLSERVER导入excel表格时,表中数据超过65536行时,可将表格转为CSV文件,导入时在高级选项中将字段属性DataType改为文本流[DA_TXT]_oracleexcel导入可以超过6万
文章浏览阅读275次。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,web服务器等。一、ftp服务器 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件和访问服务的计算机,它们依照提供服务。FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。般来说..._谈一谈服务器如何识别同一客户端的各种不同的命令
文章浏览阅读2.2k次。WOX功能简介及有价值功能:everything,网页搜索,打开书签,计算器,翻译使用简介:http://doc.wox.one/zh/添加插件:http://www.wox.one/plugin插件添加打开书签wpm install Browser Bookmarks有道翻译wpm install 有道翻译网页搜索高效Google g https://www..._woxwfn
文章浏览阅读1.5w次,点赞4次,收藏22次。前言:去年下半年为了做了个web服务,使用了基于python3.5+的一个异步框架 sanic。其中需要一个异步的mysql引擎,我们常见的也就是 aiomysql,为了便于开发,我找了一个基于 aiomysql 的简单封装的异步引擎SanicDB,事先说明这个不是orm, 然后到今年因为业务越来越多,使用 SanicDB 感觉也是很不方便,还导致代码不够清晰,然后我又发现了一个新的,真..._python tortoise
文章浏览阅读111次。//前言:仿weixin实现一个即时通讯的案例,支持版本7.0以上"准备工作 创建项目时使用git"/*显示隐藏文件,看到git的文件夹defaults write com.apple.finder AppleShowAllFiles Yes && killall Finderdefaults write com.apple.finder AppleSh..._h:|-0-[view]-0-| ios