行情数据示例代码
本页面提供miniQMT xtquant接口的行情数据获取示例代码,包括历史行情数据和实时行情数据的获取方法。
功能说明
- 通过
xtdata.get_local_data获取本地已经保存的历史数据 - 通过
xtdata.get_full_tick获取最新的行情报价信息 - 分析历史数据的时间范围、数据条数和最新收盘价
- 分析实时行情的最新价格和涨跌幅
使用方法
- 点击右侧的「复制代码」按钮一键复制完整代码
- 确保已经安装了xtquant模块
- 确保已经开启并登录了miniQMT.exe终端
- 将代码保存为Python文件并在本地IDE中运行
- 可以修改股票代码和周期参数来获取不同股票的行情数据
示例代码
market-data.py
# -*- coding: utf-8 -*-
"""
申请开通QMT请添加微信咨询gjquant,获取更多资料访问https://miniqmt.com/
此代码脚本仅用于软件测试,不能用于实盘交易,以此代码进行交易本人不承担任何损失
通过get_local_data获取本地已经保存的,可用历史数据
通过get_full_tick获取最新的行情报价信息
"""
from xtquant import xtdata
import pandas as pd
import numpy as np
# 分析历史数据
stock_code = "510300.SH"
historical_data = xtdata.get_local_data([], [stock_code], period="1d", count=-1)
if stock_code in historical_data:
df = historical_data[stock_code]
# 正确转换时间戳(假设时间戳是毫秒级)
if "time" in df.columns:
# 将时间列转换为datetime
df["datetime"] = pd.to_datetime(df["time"], unit="ms")
start_time = df["datetime"].min()
end_time = df["datetime"].max()
else:
# 如果索引是时间戳
try:
start_time = pd.to_datetime(df.index.astype(np.int64), unit="ms").min()
end_time = pd.to_datetime(df.index.astype(np.int64), unit="ms").max()
except:
start_time = "无法解析"
end_time = "无法解析"
print(f"历史数据时间范围: {start_time} 到 {end_time}")
print(f"数据条数: {len(df)}")
print(f"最新收盘价: {df['close'].iloc[-1] if len(df) > 0 else '无数据'}")
else:
print("未获取到历史数据")
# 分析实时行情
realtime_data = xtdata.get_full_tick([stock_code])
if stock_code in realtime_data:
tick_data = realtime_data[stock_code]
print(f"\n实时行情时间: {tick_data['timetag']}")
print(f"最新价格: {tick_data['lastPrice']}")
print(f"涨跌幅: {(tick_data['lastPrice'] - tick_data['lastClose']) / tick_data['lastClose'] * 100:.2f}%")
else:
print("未获取到实时行情数据")
代码说明
1. 首先导入必要的库:xtquant的xtdata模块用于获取行情数据,pandas用于数据处理,numpy用于数值计算。
2. 设置股票代码为"510300.SH"(沪深300ETF)。
3. 使用xtdata.get_local_data获取历史数据,参数说明:
- 第一个参数:需要获取的字段列表,空列表表示获取所有字段
- 第二个参数:股票代码列表
- period:周期,"1d"表示日线
- count:获取的数据条数,-1表示获取所有数据
4. 处理历史数据,分析时间范围、数据条数和最新收盘价。
5. 使用xtdata.get_full_tick获取实时行情数据。
6. 处理实时行情数据,打印最新价格和涨跌幅。