TqSdk-Python 策略程序框架详解
tqsdk-python 天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易 项目地址: https://gitcode.com/gh_mirrors/tq/tqsdk-python
核心架构概述
TqSdk-Python 是一个专业的量化交易开发框架,其核心设计采用了事件驱动架构,通过异步I/O机制实现高效的市场数据处理和交易执行。本文将深入解析该框架的核心组件和运行机制,帮助开发者构建稳健的交易策略。
TqApi 核心类
TqApi 是整个框架的中枢神经系统,负责协调所有功能模块的运作。创建TqApi实例是使用该框架的第一步:
from tqsdk import TqApi, TqAuth
# 基本初始化方式
api = TqApi(auth=TqAuth("您的快期账号", "您的密码"))
账户类型选择
TqApi支持三种账户模式,满足不同场景需求:
- 实盘交易账户:通过
TqAccount
连接期货公司实盘 - 本地模拟账户:使用
TqSim
进行策略测试 - 自动模拟模式:不指定账户参数时默认创建模拟账户
核心职责
TqApi实例承担着多重关键功能:
- 建立与行情/交易服务器的WebSocket连接
- 维护内存中的实时数据存储
- 执行交易指令的发送与状态跟踪
- 管理异步任务调度
- 支持策略回测功能
数据更新机制
wait_update 核心方法
wait_update()
是框架运行的关键引擎,其工作流程如下:
- 网络通信:发送待处理的网络请求(如下单指令)
- 任务调度:激活后台任务执行窗口
- 数据同步:接收并处理服务器数据更新
- 阻塞控制:可设置超时参数避免长时间等待
典型的使用模式是将其置于主循环中:
while True:
api.wait_update() # 等待数据更新
# 在此处添加策略逻辑
数据引用机制
TqSdk采用动态引用方式访问数据,这种设计既保证了数据实时性,又提高了访问效率:
# 获取账户引用(非快照)
account = api.get_account()
# 实时获取最新权益
print(f"当前权益:{account.balance}")
数据变更检测
框架提供了精细化的数据变更检测机制,避免不必要的计算:
# 检测账户任何字段变化
if api.is_changing(account):
print("账户状态变化")
# 仅检测权益变化
if api.is_changing(account, "balance"):
print("账户权益发生变化")
典型策略结构
一个完整的交易策略通常包含以下流程:
from tqsdk import TqApi, TqAuth, TargetPosTask
api = TqApi(auth=TqAuth("账号", "密码"))
klines = api.get_kline_serial("SHFE.rb2305", 60)
target_pos = TargetPosTask(api, "SHFE.rb2305")
# 开仓逻辑
while True:
api.wait_update()
if 满足开仓条件(klines):
target_pos.set_target_volume(1) # 开1手多单
break
# 平仓逻辑
while True:
api.wait_update()
if 满足平仓条件(klines):
target_pos.set_target_volume(0) # 平仓
break
api.close() # 必须的资源清理
最佳实践建议
-
跨日处理:建议每个交易日结束后重启策略程序,避免:
- 合约信息更新不及时
- 隔夜委托单状态异常
- 交易辅助工具失效
-
资源管理:程序退出前务必调用
api.close()
,确保:- 网络连接正常关闭
- 最后一次数据同步完成
- 系统资源正确释放
-
异常处理:建议添加适当的异常捕获机制,应对网络中断等异常情况
通过理解这些核心概念和机制,开发者可以基于TqSdk构建出高效、稳定的量化交易策略。框架的事件驱动设计和动态数据引用机制,使得策略代码既简洁又高效。
tqsdk-python 天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易 项目地址: https://gitcode.com/gh_mirrors/tq/tqsdk-python
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考