tdxdata 未知领域探索
PTD
阅读:1827
2025-12-15 09:34:15
评论:0
PYtdx TDXDATA 未知领域
1. 当前支持的行情数据类型
现有行情数据函数:
# 在 tqcenter.py 中
def get_market_data(
field_list: List[str] = [],
stock_list: List[str] = [],
period: str = '', # 支持 '1d', '1m', '5m', '15m', '30m', '60m', 'tick' 等
# ... 其他参数
) -> Dict
def get_report_data(
stock_codes: str,
isLevel2: bool = False # ← 注意:这里有 isLevel2 参数
) -> Dict
2. get_report_data 函数的 isLevel2 参数
虽然 get_report_data 函数有一个 isLevel2 参数,但从代码注释和实现来看:
@classmethod
def get_report_data(cls,
stock_codes: str,
isLevel2: bool = False) -> Dict:
"""获取报表数据"""
# 注释和实现都没有明确说明这是获取L2行情数据的函数
# 名称是 "报表数据" 而不是 "行情数据"
从函数名 get_report_data(获取报表数据)和底层的DLL函数名 GetREPORTInStr 来看,这个函数并不是用来获取L2行情数据,而是获取其他类型的报表数据。
3. 当前支持的行情数据级别
从代码分析,目前支持:
3.1 普通行情数据 (Level 1)
- K线数据:通过
get_market_data获取 - 支持周期:日线、分钟线、tick数据
- 包含字段:Open, High, Low, Close, Volume 等基础字段
3.2 tick数据
- 通过:
get_market_data设置period='tick' - 包含:基本的tick数据,但不是L2级别的详细数据
4. 缺失的L2功能
真正的L2行情数据通常包括:
- 十档行情(买卖一到十档的价格和数量)
- 逐笔成交明细(每笔成交的详细情况)
- 委托队列(实时委托订单信息)
- 大单统计等
这些功能在当前的代码中都没有实现。
5. 如何添加L2功能
如果需要添加L2行情数据功能,需要:
5.1 确认底层DLL支持
检查 TPythClient.dll 是否有以下功能:
// 可能的L2相关函数
GetL2QuoteInStr // 获取L2报价
GetL2TransactionInStr // 获取L2成交明细
GetL2OrderQueueInStr // 获取L2委托队列
5.2 在 tqcenter.py 中添加对应函数
可以添加类似以下的新函数:
@classmethod
def get_l2_quote(cls,
stock_code: str,
timeout_ms: int = 5000) -> Dict:
"""获取L2十档行情数据"""
# 自动初始化连接
cls._auto_initialize()
codestr = stock_code.encode('utf-8')
try:
# 假设DLL中有 GetL2QuoteInStr 函数
ptr = dll.GetL2QuoteInStr(cls._get_run_id(), codestr, timeout_ms)
if len(ptr) > 0:
result_str = ptr.decode('utf-8')
return json.loads(result_str)
except Exception as e:
raise ValueError(f"获取L2行情数据异常: {e}")
@classmethod
def get_l2_transaction(cls,
stock_code: str,
start_time: str,
end_time: str,
count: int = 1000) -> Dict:
"""获取L2逐笔成交数据"""
# 实现类似的逻辑
pass
5.3 在 test.py 中添加使用示例
# 获取L2十档行情
l2_quote = tdxdata.get_l2_quote('600519.SH')
print(f"L2十档买盘: {l2_quote.get('BuyLevels')}")
print(f"L2十档卖盘: {l2_quote.get('SellLevels')}")
# 获取L2逐笔成交
l2_trans = tdxdata.get_l2_transaction(
stock_code='600519.SH',
start_time='20241212 09:30:00',
end_time='20241212 10:00:00',
count=1000
)
print(f"逐笔成交数量: {len(l2_trans)}")
6. 替代方案
如果你暂时无法获取L2数据,可以考虑:
6.1 使用现有的tick数据
tick_data = tdxdata.get_market_data(
stock_list=['600519.SH'],
period='tick',
start_time='20241212 09:30:00',
end_time='20241212 10:00:00'
)
6.2 订阅实时数据
def l2_callback(data_str):
"""实时接收数据(如果有L2支持的话)"""
data = json.loads(data_str)
# 处理L2数据
tdxdata.subscribe_quote(
stock_code='600519.SH',
period='tick', # 或者特定的L2周期
callback=l2_callback
)
待验证的项目
- 确认
TPythClient.dll是否支持L2数据接口 - 如果有DLL的开发文档,查看其中关于L2的函数
- 按照第5节的示例添加L2相关功能
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=64
声明
1.本站原创文章,转载需注明文章作者来源。 2.如果文章内容涉及版权问题,请联系我们删除,向本站投稿文章可能会经我们编辑修改。 3.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。






