xtquant 中切换 IP 实现更稳定地获取数据
xtquant 中切换 IP 实现更稳定地获取数据
利用迅投 QMT 的 xtquant 包我们可以很方便的独立获取量化数据,但有时默认连接了某个拥挤的站点,或者部分有故障的服务器,给我们造成不稳定的困扰。本文介绍如何在切换行情服务器,获取更加准确的数据。
一、券商版行情站点切换
如果是 miniqmt, 配置文件在 QMT 安装根目录下的 userdata_mini\users\xtquoterconfig.xml 中,读取文件通常能获取券商版默认的用户名和密码, 比如下面的迅投东莞主站:
info={
"ip": "218.16.123.121",
"port": 55300,
"username": "qmtguosheng307",
"pwd": "AUtURWJaLUJJOXlyZnBBVkdWUG9tNElFZmpvU01zY19nYlRVVEotUzdoMEM5RkJmMFdheG5XZz09"
}
如果我们要增加或修改行情站点,例如增加 VIP 行情站点,则可以在客户端行情配置中手动添加或者直接修改这个文件,并在 QuoterServers 配置项中的设置默认连接行情。
需要注意的是,券商版 QMT 目前暂时不支持在代码中切换站点,因此只能手动在 QMT/MiniQMT 行情源中切换。
二、VIP 行情站点切换
2.1 问题数据复线
比如下面代码读取历史北向资金流向数据,部分默认站点(上海)可能出现读取数据丢失以及不准确问题:
import datetime, time
import pandas as pd
from xtquant import xtdatacenter as xtdc
import xtquant.xtdata as xtdata
from clickhouse_driver import Client
from tqdm import tqdm
xtdc.set_token('3e6c******5501')
xtdc.set_data_home_dir('/data/qmt')
xtdata.download_history_data('FFFFFF.SGT', 'northfinancechange1m', '', '')
xtdata.get_market_data_ex([], ['FFFFFF.SGT'], 'northfinancechange1m', '', '')['FFFFFF.SGT']
2.2 切换行情站点
VIP 行情目前支持在 xtdatacenter 中通过 QuoteServer 函数手动设置行情服务器并连接:
import time
info={'ip': '218.16.123.27', 'port': 55310, 'username': '', 'pwd': ''}
qs = xtdata.QuoteServer(info)
result = qs.connect()
if result.get("result", False):
print("切换站点成功!")
else:
print("切换站点失败!")
切换成功后,我们重新下载数据,可以发现数据正常。
当然,可以通过回调函数更加精细地监控切换服务器连接状态:
connect_success = 0
def func(d):
ip = d.get('ip', '')
port = d.get('port')
status = d.get('status', 'disconnected')
global connect_success
if ip == info['ip'] and port == info['port']:
if status == 'connected':
connect_success = 1
else:
connect_success = 2
# 注册连接回调信息
xtdata.watch_quote_server_status(func)
# 行情连接
qs = xtdata.QuoteServer(info)
qs.connect()
# 等待连接状态
while connect_success == 0:
time.sleep(0.3)
if connect_success == 2:
print("连接失败")
原文来自xuntou.net引用“量化实战”公号文章。
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=43
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源; 2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任; 3.作者投稿可能会经我们编辑修改或补充。