Skip to content

Commit a3dc039

Browse files
shinny-hongyanshinny-chenli
authored andcommitted
Update Version 3.9.2
1 parent 4c4fc4b commit a3dc039

41 files changed

Lines changed: 1382 additions & 358 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PKG-INFO

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 2.1
22
Name: tqsdk
3-
Version: 3.9.1
3+
Version: 3.9.2
44
Summary: TianQin SDK
55
Home-page: https://www.shinnytech.com/tqsdk
66
Author: TianQin
@@ -85,6 +85,20 @@ TqSdk提供的功能可以支持从简单到复杂的各类策略程序:
8585

8686
* **配合天勤AI助手**,提供函数解释、策略编写指导、错误分析等支持
8787

88+
## 配合 AI / Agent 使用 TqSdk
89+
90+
如果你想让自己的 AI、Agent 或 OpenClaw 更好地理解和使用 TqSdk,可以把下面这段内容直接复制给它:
91+
92+
> 请先下载并解压 TqSdk 技能包:https://doc.shinnytech.com/tqsdk/latest/ai_editor/skills/tqsdk-trading-and-data.zip,然后先阅读其中的 SKILL.md,并按里面的说明再回答任何 TqSdk 问题或编写任何 TqSdk 代码。
93+
94+
相关文档与资源:
95+
96+
* [通过 AI 工具使用 TqSdk](https://doc.shinnytech.com/tqsdk/latest/ai_editor/index.html)
97+
* [在 Trae 中高效学习和使用 TqSdk](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_trae.html)
98+
* [使用 Codex 协作开发 TqSdk 项目](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_codex.html)
99+
* [TqSdk Skills 压缩包与使用说明](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_skills.html)
100+
* [下载 TqSdk 技能包 `tqsdk-trading-and-data.zip`](https://doc.shinnytech.com/tqsdk/latest/ai_editor/skills/tqsdk-trading-and-data.zip)
101+
88102
## 安装方法
89103

90104
TqSdk 仅支持 Python 3.8 及更高版本。要安装 TqSdk,可使用 pip:

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ TqSdk提供的功能可以支持从简单到复杂的各类策略程序:
6969

7070
* **配合天勤AI助手**,提供函数解释、策略编写指导、错误分析等支持
7171

72+
## 配合 AI / Agent 使用 TqSdk
73+
74+
如果你想让自己的 AI、Agent 或 OpenClaw 更好地理解和使用 TqSdk,可以把下面这段内容直接复制给它:
75+
76+
> 请先下载并解压 TqSdk 技能包:https://doc.shinnytech.com/tqsdk/latest/ai_editor/skills/tqsdk-trading-and-data.zip,然后先阅读其中的 SKILL.md,并按里面的说明再回答任何 TqSdk 问题或编写任何 TqSdk 代码。
77+
78+
相关文档与资源:
79+
80+
* [通过 AI 工具使用 TqSdk](https://doc.shinnytech.com/tqsdk/latest/ai_editor/index.html)
81+
* [在 Trae 中高效学习和使用 TqSdk](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_trae.html)
82+
* [使用 Codex 协作开发 TqSdk 项目](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_codex.html)
83+
* [TqSdk Skills 压缩包与使用说明](https://doc.shinnytech.com/tqsdk/latest/ai_editor/tqsdk_skills.html)
84+
* [下载 TqSdk 技能包 `tqsdk-trading-and-data.zip`](https://doc.shinnytech.com/tqsdk/latest/ai_editor/skills/tqsdk-trading-and-data.zip)
85+
7286
## 安装方法
7387

7488
TqSdk 仅支持 Python 3.8 及更高版本。要安装 TqSdk,可使用 pip:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
如果你想让自己的 AI、Agent 或 OpenClaw 更好地理解和使用 TqSdk,可以把下面这段内容直接复制给它:
2+
3+
::
4+
5+
请先下载并解压 TqSdk 技能包:https://doc.shinnytech.com/tqsdk/latest/ai_editor/skills/tqsdk-trading-and-data.zip,然后先阅读其中的 SKILL.md,并按里面的说明再回答任何 TqSdk 问题或编写任何 TqSdk 代码。
6+
7+
.. tqsdk_skills_ref_marker
8+
9+
详细说明请见 :ref:`tqsdk_skills` 。

doc/advanced/for_ctp_user.rst

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
TqSdk与使用Ctp接口开发策略程序有哪些差别
44
=================================================
5-
如果您曾经直接使用CTP接口开发过交易策略程序, 目前刚开始接触 TqSdk, 下面的信息将帮助您尽快理解 TqSdk.
5+
如果您曾经直接使用 CTP 接口开发过交易策略程序,现在刚开始接触 TqSdk,下面的信息将帮助您尽快理解 TqSdk。
6+
7+
如果你只是想先跑通一套最小程序,建议先看 :ref:`quickstart` 和 :ref:`framework`;本文更适合在迁移已有代码时对照阅读。
68

79

810
系统整体架构
@@ -108,10 +110,10 @@ TqSdk则不使用事件回调机制. :py:meth:`~tqsdk.TqApi.wait_update` 函数
108110

109111
TqSdk针对行情数据和交易信息都采用相同的 wait_update/is_changing 方案. 用户需要记住的要点包括:
110112

111-
* get_quote, get_kline_serial, insert_order 等业务函数返回的是一个引用(refrence, not value), 它们的值总是在 wait_update 时更新.
112-
* 用户程序除执行自己业务逻辑外, 需要反复调用 wait_update. 在两次 wait_update 间, 所有数据都不更新
113-
* 用 insert_order 函数下单, 报单指令实际是在 insert_order 后调用 wait_update 时发出的.
114-
* 用户程序中需要避免阻塞, 不要使用 sleep 暂停程序
113+
* get_quoteget_kline_serialinsert_order 等业务函数返回的是引用对象(reference, not value),它们的字段会在 wait_update 返回后刷新。
114+
* 用户程序除执行自己业务逻辑外,还需要反复调用 wait_update在两次 wait_update 之间,数据不会继续推进。
115+
* 用 insert_order 函数下单后,还要继续调用 wait_update,报单指令才会真正发出。
116+
* 用户程序中需要避免阻塞,不要直接用 sleep 暂停主循环;如果需要定时控制,请参考 :ref:`timer`。
115117

116118
关于 wait_update 机制的详细说明, 请见 :ref:`framework`
117119

doc/advanced/for_vnpy_user.rst

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ TqSdk 与 vn.py 有哪些差别
44
=================================================
55
TqSdk 与 vn.py 有非常多的差别. 如果您是一位有经验的 vn.py 用户, 刚开始接触 TqSdk, 下面的信息将帮助您尽快理解 TqSdk.
66

7+
如果你只是想先跑通一套最小程序,建议先看 :ref:`quickstart` 和 :ref:`framework`;本文更适合在迁移已有策略代码时对照阅读。
8+
79

810
系统整体架构
911
-------------------------------------------------
@@ -31,7 +33,7 @@ TqSdk 则使用基于网络协作的组件设计. 如下图:
3133
* 交易相关接口被大幅度简化, 不再需要处理CTP接口的复杂回调, 也不需要发起任何查询请求
3234

3335

34-
对于需要直连期货公司交易的用户, TqSdk 也提供了 :py:meth:`~tqsdk.TqCtp` 模块支持用户直连
36+
对于需要直连期货公司交易的用户, TqSdk 也提供了 :py:class:`~tqsdk.TqCtp` 模块支持用户直连
3537

3638

3739
每个策略是一个单独运行的py文件
@@ -215,10 +217,10 @@ TqSdk则不使用事件回调机制. :py:meth:`~tqsdk.TqApi.wait_update` 函数
215217

216218
TqSdk针对行情数据和交易信息都采用相同的 wait_update/is_changing 方案. 用户需要记住的要点包括:
217219

218-
* get_quote, get_kline_serial, insert_order 等业务函数返回的是一个引用(refrence, not value), 它们的值总是在 wait_update 时更新.
219-
* 用户程序除执行自己业务逻辑外, 需要反复调用 wait_update. 在两次 wait_update 间, 所有数据都不更新
220-
* 用 insert_order 函数下单, 报单指令实际是在 insert_order 后调用 wait_update 时发出的.
221-
* 用户程序中需要避免阻塞, 不要使用 sleep 暂停程序
220+
* get_quoteget_kline_serialinsert_order 等业务函数返回的是引用对象(reference, not value),它们的字段会在 wait_update 返回后刷新。
221+
* 用户程序除执行自己业务逻辑外,还需要反复调用 wait_update在两次 wait_update 之间,数据不会继续推进。
222+
* 用 insert_order 函数下单后,还要继续调用 wait_update,报单指令才会真正发出。
223+
* 用户程序中需要避免阻塞,不要直接用 sleep 暂停主循环;如果需要定时控制,请参考 :ref:`timer`。
222224

223225
关于 wait_update 机制的详细说明, 请见 :ref:`framework`
224226

doc/advanced/index.rst

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,42 @@
22

33
进阶主题
44
========================================
5-
这一部分内容提供给有经验的 TqSdk 用户, 主要讲解将 TqSdk 用于实际工作时的一些重要问题的处理方案和最佳实践.
5+
这一部分内容提供给有经验的 TqSdk 用户,聚焦实盘落地、策略组织、外部集成和复杂场景下的最佳实践。
66

77
.. toctree::
8-
:maxdepth: 2
8+
:maxdepth: 1
9+
:caption: 交易执行与风控
910

1011
order.rst
11-
backtest.rst
12-
multi_strategy.rst
12+
targetpostask2.rst
13+
emergency_stop.rst
1314
tq_trading_unit.rst
15+
16+
.. toctree::
17+
:maxdepth: 1
18+
:caption: 策略组织与调度
19+
20+
multi_strategy.rst
21+
scheduler.rst
22+
unanttended.rst
23+
24+
.. toctree::
25+
:maxdepth: 1
26+
:caption: 回测与运行
27+
28+
backtest.rst
1429
gui.rst
1530
dingding.rst
31+
32+
.. toctree::
33+
:maxdepth: 1
34+
:caption: 定时控制
35+
36+
timer.rst
37+
38+
.. toctree::
39+
:maxdepth: 1
40+
:caption: 生态集成
41+
1642
for_vnpy_user.rst
1743
for_ctp_user.rst
18-
unanttended.rst
19-
emergency_stop.rst
20-
targetpostask2.rst
21-
scheduler.rst

doc/advanced/timer.rst

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,65 @@
1+
.. _timer:
2+
13
定时器
24
=================================================
3-
This part of the documentation covers the installation of Requests. The first step to using any software package is getting it properly installed.
5+
6+
在 TqSdk 里,定时逻辑通常不是单独开一个 ``sleep`` 循环,而是和 :py:meth:`~tqsdk.TqApi.wait_update` 结合在同一个主循环里执行。这样可以保证订阅、下单、撤单以及后台任务仍然持续被驱动。
7+
8+
优先使用“行情时间”而不是本机时间
9+
-------------------------------------------------
10+
11+
如果你的逻辑和交易时段、收盘前平仓、定时检查等场景有关,优先使用 ``quote.datetime`` 代表的行情时间::
12+
13+
from datetime import datetime
14+
from tqsdk import TqApi, TqAuth, TargetPosTask
15+
16+
api = TqApi(auth=TqAuth("快期账户", "账户密码"))
17+
quote = api.get_quote("SHFE.rb2405")
18+
target_pos = TargetPosTask(api, "SHFE.rb2405")
19+
close_hour, close_minute = 14, 50
20+
21+
while True:
22+
api.wait_update()
23+
if api.is_changing(quote, "datetime"):
24+
now_time = datetime.strptime(quote.datetime, "%Y-%m-%d %H:%M:%S.%f")
25+
if now_time.hour == close_hour and now_time.minute >= close_minute:
26+
print("临近收盘,平仓")
27+
target_pos.set_target_volume(0)
28+
break
29+
30+
这种方式的好处是:你的定时判断和交易所时间保持一致,不依赖本机时钟是否漂移。
31+
32+
用 deadline 做“等待一段时间后继续”
33+
-------------------------------------------------
34+
35+
:py:meth:`~tqsdk.TqApi.wait_update` 提供了 ``deadline`` 参数。它接收的是 ``time.time()`` 风格的 unix 时间戳,适合做“最多再等多久”的控制::
36+
37+
import time
38+
from tqsdk import TqApi, TqAuth
39+
40+
api = TqApi(auth=TqAuth("快期账户", "账户密码"))
41+
quote = api.get_quote("SHFE.rb2405")
42+
43+
while True:
44+
api.wait_update()
45+
if api.is_changing(quote, "datetime"):
46+
print("收到一次关键更新,接下来最多再等 60 秒")
47+
deadline = time.time() + 60
48+
while api.wait_update(deadline=deadline):
49+
pass
50+
print("等待结束,继续执行后续逻辑")
51+
52+
这类写法适合:
53+
54+
* 收盘前平仓后再等待一小段时间,确认撤单和回报处理完毕
55+
* 给某个阶段性任务一个最长等待时间,避免长时间阻塞
56+
* 在同步主循环里做简单的“超时退出”控制
57+
58+
常见误区
59+
-------------------------------------------------
60+
61+
* 不要在主循环里频繁使用 ``time.sleep()``, 否则会阻塞 ``wait_update``,数据和后台任务都会停下来
62+
* ``deadline`` 是 unix 时间戳,不是“秒数”本身;通常写成 ``time.time() + 60``
63+
* 如果你在定时逻辑里调用了 ``insert_order`` 或 ``TargetPosTask.set_target_volume``,后面仍然要继续调用 ``wait_update``,否则报单不会真正发出
64+
* 如果策略已经采用协程任务,优先考虑 :py:meth:`~tqsdk.TqApi.register_update_notify`,不要把同步和异步等待方式混在一起
465

doc/advanced/tq_trading_unit.rst

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,57 @@ TqSdk 多策略使用手册
102102
.. image:: ../images/tq_zq_broker.png
103103

104104

105+
日志导出
106+
=========
107+
如果您在使用过程中遇到问题,您可以把日志发给我们来帮助您查询
108+
109+
导出日志前,需要先关闭 zq_server 和 zq_server_history_go 两个进程,然后打包日志目录并发送给我们
110+
111+
**Linux**:
112+
113+
.. code-block:: bash
114+
115+
pkill -f zq_server_history_go
116+
pkill -f zq_server
117+
tar -czf ~/tqsdk_zq_log.tar.gz -C ~ .tqsdk/zq/log
118+
119+
**Windows** (PowerShell):
120+
121+
.. code-block:: powershell
122+
123+
taskkill /F /IM zq_server_history_go.exe 2>$null
124+
taskkill /F /IM zq_server.exe 2>$null
125+
cd $env:USERPROFILE
126+
tar -czf tqsdk_zq_log.tar.gz .tqsdk/zq/log
127+
128+
压缩完成后,将生成的 ``tqsdk_zq_log.tar.gz`` 文件发送给我们即可
129+
130+
131+
重置本地环境
132+
-------------------------------------------------
133+
如果你想彻底清空所有本地数据,重新开始使用众期多策略系统,可以执行以下命令来重置本地环境:
134+
**Linux**:
135+
136+
.. code-block:: bash
137+
138+
pkill -f zq_server_history_go
139+
pkill -f zq_server
140+
pkill -f sock-proxy
141+
pkill -f postgres
142+
rm -rf ~/.tqsdk/zq
143+
144+
**Windows** (PowerShell):
145+
146+
.. code-block:: powershell
147+
148+
taskkill /F /IM zq_server_history_go.exe 2>$null
149+
taskkill /F /IM zq_server.exe 2>$null
150+
taskkill /F /IM sock-proxy.exe 2>$null
151+
taskkill /F /IM postgres.exe 2>$null
152+
Remove-Item -Recurse -Force $env:USERPROFILE\.tqsdk\zq
153+
154+
删除之后可以使用 ``tqsdk-zq init`` 来重新初始化环境
155+
105156
其他事项
106157
=========
107158
- 当用户在众期多策略系统中添加实盘账户时,仍然占用企业版3个实盘账户的名额,如果需要额外购买实盘账户名额请联系我们的商务同事 QQ:1539404802

doc/ai_editor/index.rst

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,22 @@
33
通过 AI 工具使用 TqSdk
44
========================================
55

6+
这一部分介绍如何在不同 AI 编码工具中接入 TqSdk,并复用配套 skills 与研究模板。
7+
8+
AI 编辑器接入
9+
----------------------------------------
10+
611
.. toctree::
7-
:maxdepth: 2
12+
:maxdepth: 1
813

914
tqsdk_trae.rst
1015
tqsdk_codex.rst
16+
17+
技能与研究模板
18+
----------------------------------------
19+
20+
.. toctree::
21+
:maxdepth: 1
22+
1123
tqsdk_skills.rst
1224
nl_research.rst

0 commit comments

Comments
 (0)