当前位置: 首页 > article >正文

别再手动下载了!用Python+国信QMT自动拉取股票历史Tick数据(附完整代码与避坑点)

PythonQMT全自动获取股票Tick数据实战指南在量化交易领域获取高质量的Tick级数据是构建有效策略的基础。传统手动下载方式不仅效率低下还容易出错。本文将手把手教你如何用Python调用国信QMT的get_market_data_ex接口实现股票历史Tick数据的全自动获取与处理。1. 环境准备与QMT配置1.1 安装必要依赖确保你的Python环境已安装以下基础库pip install pandas numpy pytz注意QMT客户端通常自带Python环境建议使用其内置解释器以避免兼容性问题1.2 QMT权限配置登录QMT交易终端在系统设置中开启量化交易权限申请历史数据下载权限需券商审核不同券商权限开放程度可能不同建议提前联系客户经理确认2. 核心API详解与参数设置2.1 get_market_data_ex接口解析国信QMT提供的关键数据获取接口data C.get_market_data_ex( fields[open,high,low,close,volume,amount], stock_code[600000.SH], periodtick, start_time20240520093000, end_time20240520150000, count-1, dividend_typefollow, fill_dataTrue, subscribeFalse )关键参数说明参数名类型说明典型值periodstr数据周期tick(分笔)/1m(1分钟)start_timestr开始时间YYYYMMDDHHMMSSfill_databool是否填充缺失数据True/Falsecountint获取数据条数-1(全部)2.2 时间格式避坑指南常见错误直接使用datetime.now()生成的时间格式不兼容正确做法from datetime import datetime def format_qmt_time(dt): return dt.strftime(%Y%m%d%H%M%S) # 获取今天9:30-11:30的数据 start datetime.now().replace(hour9, minute30, second0) end datetime.now().replace(hour11, minute30, second0) formatted_start format_qmt_time(start) formatted_end format_qmt_time(end)3. 完整数据获取流程实现3.1 基础数据获取框架# encoding: utf-8 import pandas as pd from pytz import timezone def init(C): # 设置显示选项 pd.set_option(display.max_rows, 500) pd.set_option(display.max_columns, 10) pd.set_option(display.width, 1000) # 获取平安银行tick数据 stock_code 000001.SZ trade_date 20240520 tick_data get_history_ticks( C, stock_codestock_code, date_strtrade_date ) # 计算逐笔成交额变化 tick_data[delta_amount] tick_data[amount].diff() print(tick_data.head(10)) def get_history_ticks(C, stock_code, date_str): 获取单日全部tick数据 start_time f{date_str}093000 end_time f{date_str}150000 data C.get_market_data_ex( [price, volume, amount, bid, ask], [stock_code], periodtick, start_timestart_time, end_timeend_time, count-1, fill_dataFalse ) return data[stock_code]3.2 多日数据批量获取def batch_get_ticks(C, stock_code, start_date, end_date): 获取多日tick数据 date_range pd.date_range(start_date, end_date) all_data [] for date in date_range: if date.weekday() 5: # 跳过周末 continue date_str date.strftime(%Y%m%d) try: daily_data get_history_ticks(C, stock_code, date_str) daily_data[trade_date] date_str all_data.append(daily_data) except Exception as e: print(f获取{date_str}数据失败: {str(e)}) return pd.concat(all_data) if all_data else None4. 高级数据处理技巧4.1 Tick数据清洗与校验常见数据问题处理方案异常值过滤def filter_abnormal_ticks(df): # 价格异常 df df[(df[price] 0) (df[price] df[price].quantile(0.999))] # 成交量异常 df df[df[volume] df[volume].quantile(0.99)] return df时间连续性检查def check_time_gaps(df): df[datetime] pd.to_datetime(df.index) time_diff df[datetime].diff().dt.total_seconds() gaps time_diff[time_diff 5] # 超过5秒间隔 return gaps4.2 成交快照重构从逐笔数据重构盘口状态def reconstruct_orderbook(tick_df): book { ask1: None, ask_vol1: None, bid1: None, bid_vol1: None } snapshots [] for idx, row in tick_df.iterrows(): if not pd.isna(row[bid]): book[bid1] row[bid][0][0] book[bid_vol1] row[bid][0][1] if not pd.isna(row[ask]): book[ask1] row[ask][0][0] book[ask_vol1] row[ask][0][1] snapshot book.copy() snapshot[price] row[price] snapshot[volume] row[volume] snapshot[time] idx snapshots.append(snapshot) return pd.DataFrame(snapshots).set_index(time)5. 性能优化与实战建议5.1 数据获取加速技巧并行下载对多只股票使用线程池from concurrent.futures import ThreadPoolExecutor def parallel_download(C, stock_list, date_str): with ThreadPoolExecutor(max_workers5) as executor: futures { stock: executor.submit(get_history_ticks, C, stock, date_str) for stock in stock_list } return {k: v.result() for k, v in futures.items()}增量更新只获取最新数据def get_incremental_ticks(C, stock_code, last_time): now datetime.now(timezone(Asia/Shanghai)) start_time format_qmt_time(last_time) end_time format_qmt_time(now) return get_history_ticks(C, stock_code, start_time, end_time)5.2 数据存储方案对比存储方式优点缺点适用场景CSV简单直观读写慢小规模数据HDF5高速IO单文件限制中型数据集Parquet列式存储需要额外库大规模数据数据库易查询需要维护生产环境推荐方案# 使用PyArrow保存Parquet tick_data.to_parquet(ticks.parquet, enginepyarrow) # 带压缩版本 tick_data.to_parquet( ticks_compressed.parquet, enginepyarrow, compressionsnappy )在实际项目中这套自动化方案将数据获取时间从原来的小时级缩短到分钟级且完全避免了人工操作可能带来的错误。一个特别实用的技巧是建立数据校验机制在每天收盘后自动验证当日数据的完整性和准确性。

相关文章:

别再手动下载了!用Python+国信QMT自动拉取股票历史Tick数据(附完整代码与避坑点)

PythonQMT全自动获取股票Tick数据实战指南 在量化交易领域,获取高质量的Tick级数据是构建有效策略的基础。传统手动下载方式不仅效率低下,还容易出错。本文将手把手教你如何用Python调用国信QMT的get_market_data_ex接口,实现股票历史Tick数据…...

ChineseOCR文字方向检测:如何解决四种角度文字识别难题?

ChineseOCR文字方向检测:如何解决四种角度文字识别难题? 【免费下载链接】chineseocr yolo3ocr 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr 在日常的OCR识别任务中,我们常常会遇到一个令人头疼的问题:图片中…...

adb实战指南(二)- 解锁安卓设备调试权限与建立adb稳定连接

1. 开发者模式:安卓设备的隐藏入口 第一次拿到安卓测试机时,最让我头疼的就是找不到开发者选项的入口。不同品牌的手机就像在玩捉迷藏,把开发者模式藏得五花八门。记得有次调试华为设备,在设置里翻了半小时才找到版本号的位置。其…...

纹理打包的技术革命:Free Texture Packer如何重构游戏资源优化范式

纹理打包的技术革命:Free Texture Packer如何重构游戏资源优化范式 【免费下载链接】free-tex-packer Free texture packer 项目地址: https://gitcode.com/gh_mirrors/fr/free-tex-packer 当你的游戏加载时间从8秒降到2秒,当你的网页Draw Call数…...

【深度拆解】用马斯克五步工程法拆解 Hermes Agent 源码|84.9k stars 的 Agent OS 到底牛在哪?

系列:硬核源码拆解 #01 关键词:AI Agent, Hermes Agent, 第一性原理, 上下文压缩, 记忆系统, Agent 架构 适用读者:AI Agent 开发者、架构师、对 Agent 框架选型感兴趣的工程师 摘要 本文对 Nous Research 的 Hermes Agent(v0.9.…...

OpenTwins 架构深度解析与实战指南:构建可扩展数字孪生平台

OpenTwins 架构深度解析与实战指南:构建可扩展数字孪生平台 【免费下载链接】opentwins Innovative open-source platform that specializes in developing next-gen compositional digital twins 项目地址: https://gitcode.com/gh_mirrors/op/opentwins Op…...

JiYuTrainer:如何在被控制的电脑教室中重新获得操作自由

JiYuTrainer:如何在被控制的电脑教室中重新获得操作自由 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在电脑教室中遇到过这样的困扰:老师启动全…...

ESP32安全启动配置避坑指南:从生成密钥到烧录固件的完整流程

ESP32安全启动配置避坑指南:从生成密钥到烧录固件的完整流程 在嵌入式开发领域,设备安全越来越受到重视。ESP32作为一款广泛应用的物联网芯片,其安全启动功能为固件提供了重要的保护机制。但配置过程中稍有不慎,就可能让设备变成&…...

终极Nuke生存指南:150+免费插件让你三倍提升特效制作效率

终极Nuke生存指南:150免费插件让你三倍提升特效制作效率 【免费下载链接】NukeSurvivalToolkit_publicRelease public version of the nuke survival toolkit 项目地址: https://gitcode.com/gh_mirrors/nu/NukeSurvivalToolkit_publicRelease 还在为Nuke中复…...

保姆级教程:用海思ISP工具搞定CMOS传感器黑电平校正(BLC)

海思ISP黑电平校正实战指南:从环境搭建到效果验证 第一次接触海思平台的图像调试时,我被黑电平校正(BLC)这个看似简单却影响深远的概念难住了。记得当时在实验室熬到凌晨三点,反复调整参数却始终无法消除画面中的绿色偏…...

5分钟精通Windows倒计时神器:Hourglass让你的时间管理效率翻倍

5分钟精通Windows倒计时神器:Hourglass让你的时间管理效率翻倍 【免费下载链接】hourglass The simple countdown timer for Windows. 项目地址: https://gitcode.com/gh_mirrors/ho/hourglass 还在为会议超时、学习分心、任务拖延而烦恼吗?今天&…...

Python爬取懂车帝热门车型评论数据实战

1. 为什么需要爬取懂车帝评论数据 最近在研究汽车市场行情,发现懂车帝这个平台上的用户评论特别真实有参考价值。作为一个技术爱好者,我第一反应就是:能不能用Python把这些数据爬下来做个分析?毕竟手动翻页查看几百条评论实在太费…...

别再只会用Discover了!Kibana 7.10里这4种表格制作方法,到底该用哪个?

别再只会用Discover了!Kibana 7.10里这4种表格制作方法,到底该用哪个? 当你第一次接触Kibana的数据可视化功能时,Discover可能是最直观的选择——毕竟它就在首页显眼的位置,点开就能看到原始数据。但随着使用场景的复杂…...

如何用AMLL打造媲美Apple Music的动态歌词体验:3步实现沉浸式音乐播放器

如何用AMLL打造媲美Apple Music的动态歌词体验:3步实现沉浸式音乐播放器 【免费下载链接】applemusic-like-lyrics An Apple Music style lyric player component, with React & Vue support. 一个类 Apple Music 歌词显示组件,同时提供 React 和 Vu…...

PostgreSQL 表结构解析与权限管理实战指南

1. PostgreSQL表结构深度解析 第一次接触PostgreSQL的表结构时,我也被那一堆元数据搞得头晕眼花。但后来发现,只要掌握几个关键点,就能像老中医把脉一样快速诊断表结构问题。PostgreSQL的表结构信息主要存储在系统目录表中,我们可…...

ChineseOCR文字方向检测终极指南:智能校正0°、90°、180°、270°旋转文字

ChineseOCR文字方向检测终极指南:智能校正0、90、180、270旋转文字 【免费下载链接】chineseocr yolo3ocr 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr 在中文OCR识别领域,ChineseOCR项目凭借其强大的文字方向检测功能脱颖而出&…...

告别命令行GDB!用CLion远程调试Linux C++程序,像本地开发一样丝滑

告别命令行GDB!用CLion远程调试Linux C程序,像本地开发一样丝滑 在Windows环境下开发Linux服务器程序,一直是C工程师的痛点。传统方式要么在虚拟机里搭建完整开发环境,要么用命令行GDB远程调试——前者资源消耗大,后者…...

《现代密码学理论与实践》中英文版:深入理解与实践应用

《现代密码学理论与实践》中英文版:深入理解与实践应用 密码学的起源与发展 密码学的历史可以追溯到古代,当时主要使用简单的替换和置换方法来加密信息。随着计算机技术的出现,密码学实现了质的飞跃,演变成了现在的复杂算法和协议…...

Mi-Create:5分钟打造专属小米穿戴表盘的终极免费工具

Mi-Create:5分钟打造专属小米穿戴表盘的终极免费工具 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了小米手环上那些千篇一律的默认表…...

终极英雄联盟回放播放器:ROFL-Player完全使用指南

终极英雄联盟回放播放器:ROFL-Player完全使用指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为无法播放旧版本英雄…...

空洞骑士模组管理终极指南:用Scarab实现一键安装和智能管理

空洞骑士模组管理终极指南:用Scarab实现一键安装和智能管理 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》设计的现代化模组管理器&…...

LeetCodehot100-34. 在排序数组中查找元素的第一个和最后一个位置

class Solution { public:int search(vector<int>& nums, int target){//>int left0,rightnums.size()-1;while(left<right){int midleft(right-left)/2;if(nums[mid]<target) leftmid1;else rightmid-1;}return left;}//[0, left-1] 中的所有元素都 < t…...

3个实战技巧:如何用Fluent.Ribbon让你的WPF应用拥有专业Office界面

3个实战技巧&#xff1a;如何用Fluent.Ribbon让你的WPF应用拥有专业Office界面 【免费下载链接】Fluent.Ribbon WPF Ribbon control like in Office 项目地址: https://gitcode.com/gh_mirrors/fl/Fluent.Ribbon Fluent.Ribbon是一个专为WPF应用程序设计的开源控件库&am…...

告别CAN总线?手把手教你用ISO 13400和DoIP实现车载远程诊断(附Python示例)

从CAN到以太网&#xff1a;基于ISO 13400的DoIP诊断实战指南 当传统CAN总线在带宽和远程诊断需求面前逐渐力不从心&#xff0c;车载以太网正以百兆甚至千兆的传输速率重塑车辆电子架构。作为诊断协议的新载体&#xff0c;DoIP&#xff08;Diagnostic over Internet Protocol&am…...

H5playerV2.1.2实战:5分钟搞定跨域播放器集成(含常见报错解决方案)

H5playerV2.1.2实战&#xff1a;5分钟搞定跨域播放器集成&#xff08;含常见报错解决方案&#xff09; 在视频监控、在线教育、直播平台等Web应用中&#xff0c;H5player凭借其无需插件、跨平台兼容的特性成为主流播放方案。但实际集成时&#xff0c;开发者常被跨域配置、HTTPS…...

你的小米路由器在‘隔离’设备吗?详解无线加密模式如何影响局域网互访

小米路由器无线加密模式对局域网互访的影响与解决方案 家里的小米路由器突然让所有设备"形同陌路"&#xff1f;明明连着同一个WiFi&#xff0c;手机传文件给电脑却像隔了堵墙&#xff0c;智能家居设备集体失联&#xff0c;甚至局域网游戏都卡在连接界面——这可能是路…...

三菱机床FTP程序传输:从参数配置到实战调用的完整指南

1. 三菱机床FTP程序传输基础概念 第一次接触三菱机床的FTP功能时&#xff0c;我也是一头雾水。机床还能联网传文件&#xff1f;这不是电脑才有的功能吗&#xff1f;后来在实际工作中才发现&#xff0c;这个功能简直是生产现场的"救命稻草"。想象一下&#xff0c;当你…...

别再为点云数据交换发愁了!手把手教你用E57格式搞定多平台协作

E57格式&#xff1a;点云数据跨平台协作的终极解决方案 在建筑信息模型&#xff08;BIM&#xff09;、地理信息系统&#xff08;GIS&#xff09;和工业测量领域&#xff0c;点云数据已成为数字化工作流的核心组成部分。然而&#xff0c;当项目涉及多个团队、不同品牌的扫描设备…...

星际蜗牛矿机变家庭影院:用群晖Docker部署Jellyfin的完整避坑记录

星际蜗牛矿机变家庭影院&#xff1a;用群晖Docker部署Jellyfin的完整避坑记录 去年在二手市场淘了台星际蜗牛矿机&#xff0c;原本打算当个下载机用&#xff0c;没想到这台不到500元的设备竟成了我家的影音中枢。从矿渣到NAS再到4K流媒体服务器&#xff0c;整个过程踩坑无数&am…...

HEIF Utility:Windows平台处理苹果HEIF图片的完整解决方案

HEIF Utility&#xff1a;Windows平台处理苹果HEIF图片的完整解决方案 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 对于使用iPhone拍摄照片的Windows用户来说…...