ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

量化研究--QMT怎么样下载全部ETF数据

量化研究--QMT怎么样下载全部ETF数据 风险提示本内容为量化技术及平台操作的纯知识分享不构成任何投资建议不推荐任何具体证券或交易时机。部分内容可能理解包含错误请自行核实。市场有风险投资需谨慎上次我们结束了怎么样下载全市场股票的数据量化研究--QMT下载全部的股票历史数据https://mp.weixin.qq.com/s?__bizMzI5NTE5NTExMwmid2247497003idx1snbc12fa15600082f49122d2dd64378effscene21#wechat_redirect今天我们详细的介绍一下怎么样把QMT的数据保存在本地研究比如做因子分析回测交易的模拟等需求第一步打开QMT点击策略编辑进入下载数据策略设置里面的参数设置下载文件保存的路径比如桌面比如桌面没有这个文件夹的话会自动建立路径设置对就可以读取板块的成分股就是qmt界面行情左边的板块名称全部板块名称都可以读取行情左边的全部板块读取的函数注意不要输入时间输入时间有问题读取不到realtime参数我输入有问题读取不到成分股不输入可以正常读取比如# coding:gbkdef init(C):passdef handlebar(C):print(C.get_stock_list_in_sector(上证50))3下载历史行情数据如果订阅实时读取的话数据下载会比较慢我们补充好数据一次性读取下载就可以点击界面的操作下面的数据管理下载选择自己需要的数据时间周期下载就可以支持多周期数据下载可以自己选择参数说明ContextInfo.get_market_data_ex(fields[],stock_code[],periodfollow,start_time,end_time,count-1,dividend_typefollow,fill_dataTrue,subscribeTrue)例子说明# coding:gbkimport pandas as pdimport numpy as npdef init(C):C.stock_list [0001.SZ,609.SH, 5100.SH]# 指定获取的标的C.start_time 20230901# 指定获取数据的开始时间C.end_time 20231101# 指定获取数据的结束时间def handlebar(C):# 获取多只股票多个字段一条数据data1 C.get_market_data_ex([],C.stock_list, period 1d,count 1)# 获取多只股票多个字段指定时间数据data2 C.get_market_data_ex([],C.stock_list, period 1d, start_time C.start_time, end_time C.end_time)# 获取多只股票多个字段指定时间15m数据data3 C.get_market_data_ex([],C.stock_list, period 15m, start_time C.start_time, end_time C.end_time)# 获取多只股票指定字段指定时间15m数据data4 C.get_market_data_ex([close,open],C.stock_list, period 15m, start_time C.start_time, end_time C.end_time)# 获取多只股票历史ticktick C.get_market_data_ex([],C.stock_list, period tick, start_time C.start_time, end_time C.end_time)# 获取期货5档盘口tickfuture_lv2_quote C.get_market_data_ex([],[rb25.SF,ec4.INE], period l2quote, count 1)print(data1)print(data2[01.SZ].tail())print(data3)print(data4[001.SZ])print(data4[0001.SZ].to_csv(your_path)) # 导出文件为csv格式路径填本机路径print(tick[0001.SZ])print(future_lv2_quote)最后一步选择模型交易把策略挂交易点击运行就会下载行情数据运行的结果可惜大qmt是单线程的不然多线程一分钟就下载好了下载的数据参考随便打开看看前提是需要把数据补充完整不懂的问我就可以加我备注入群可以加入量化研究群找我开户也可以专业的量化支持服务下载代码参考学习使用#coding:gbk 作者:小果 微信:xg_quant 全市场ETF数据下载器 功能读取全部沪深ETF板块成分股循环下载每只股票的历史日线数据保存为xlsx文件 import pandas as pd import os import datetime def init(c): c.account 55001947 download_all_a_stock_data(c) def download_all_a_stock_data(c): 下载全部A股历史日线数据 参数 c: ContextInfo 对象QMT回调传入 # 设置 save_path rC:\Users\lxg123456\Desktop\data # 创建文件夹 if not os.path.exists(save_path): os.makedirs(save_path) print(f已创建文件夹: {save_path}) # 1. 获取全部A股股票池 current_time int(datetime.datetime.now().timestamp() * 1000) print(正在获取全部ETF板块成分股...) stock_list c.get_stock_list_in_sector(沪深ETF) # 如果全部A股拿不到尝试沪深A股 if not stock_list or len(stock_list) 0: print(全部ETF板块未找到尝试沪深A股...) stock_list c.get_stock_list_in_sector(沪深ETF) # 过滤只保留正常A股6位数字.市场标识 stock_list [s for s in stock_list if s.count(.) 1 and s.split(.)[0].isdigit()] print(f共获取到 {len(stock_list)} 只A股\n) # 2. 循环下载每只股票 success 0 fail 0 for i, stock in enumerate(stock_list, 1): file_path os.path.join(save_path, f{stock}.xlsx) print(f[{i}/{len(stock_list)}] 下载 {stock} ..., end) try: # 获取历史日线数据 data c.get_market_data_ex( [], # 获取全部字段 [stock], # 股票代码 period1d, # 日线 start_time19900101, # 从1990年开始 end_time20500101, # 到足够远的时间 count-1, # 全部数据 dividend_typefront, # 前复权 fill_dataTrue, subscribeFalse ) if stock in data and data[stock] is not None: df data[stock] if not df.empty: df.to_excel(file_path) success 1 print(f 完成 ({len(df)}条)) else: fail 1 print( 数据为空) else: fail 1 print( 无数据) except Exception as e: fail 1 print(f 失败 - {e}) # 3. 打印结果 print(f\n{*50}) print(f下载完成) print(f总计: {len(stock_list)} 只股票) print(f成功: {success} 只) print(f失败: {fail} 只) print(f数据保存在: {save_path}) print(f{*50}) def handlebar(c): pass
返回列表