Skip to content

Commit 209c472

Browse files
shinny-hongyanshinny-chenli
authored andcommitted
Update Version 3.8.6
1 parent c5fd96a commit 209c472

File tree

12 files changed

+340
-35
lines changed

12 files changed

+340
-35
lines changed

PKG-INFO

Lines changed: 1 addition & 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.8.5
3+
Version: 3.8.6
44
Summary: TianQin SDK
55
Home-page: https://www.shinnytech.com/tqsdk
66
Author: TianQin

doc/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@
4848
# built documents.
4949
#
5050
# The short X.Y version.
51-
version = u'3.8.5'
51+
version = u'3.8.6'
5252
# The full version, including alpha/beta/rc tags.
53-
release = u'3.8.5'
53+
release = u'3.8.6'
5454

5555
# The language for content autogenerated by Sphinx. Refer to documentation
5656
# for a list of supported languages.
40.8 KB
Loading

doc/images/github_add_cursor.png

43.1 KB
Loading

doc/tqsdk_cursor.rst

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,71 @@ Cursor 继承了 VS Code 强大的调试功能。
171171
* **分享您的尝试**:如果您已尝试过某些解决方案,告知 AI,这有助于获得更精准的指导。
172172
* **迭代与追问**:AI 的首次回答可能并非完美,您可以基于其回答进行追问或要求澄清。
173173

174+
使用 Context7 增强 Cursor 文档上下文
175+
====================================
176+
177+
Context7 简介
178+
--------------
179+
180+
在使用cursor时,还可以结合 context7 来增强文档上下文,从而减少幻觉,让回答更贴近实际可用的 API 与最佳实践。
181+
182+
Context7 是一款基于 MCP(Model Context Protocol)的“文档与示例检索”工具,由 Upstash 提供。启用后,它会在回答问题前自动检索权威、最新且可指定版本的官方文档与示例代码,并把结果注入到 AI 的上下文中,从而显著减少“幻觉”,让回答更贴近实际可用的 API 与最佳实践。
183+
184+
安装与系统要求
185+
----------------
186+
187+
* Node.js >= v18.0.0(必需)
188+
189+
建议通过 ``node -v`` 确认本机 Node.js 版本,未满足时请先升级至 18 或更高版本。
190+
191+
在 Cursor 中启用 Context7(MCP 配置)
192+
-----------------------------------
193+
访问 `Context7 Github 地址 <https://github.com/upstash/context7>`_
194+
195+
在下方找到 Install in Cursor,点击 Add to Cursor 按钮
196+
197+
.. image:: images/github_add_cursor.png
198+
199+
此时会跳转到 Cursor 界面,点击 Install 即安装成功
200+
201+
.. image:: images/context7add_to_cursor.png
202+
203+
204+
在对话中使用 Context7
205+
----------------------
206+
207+
1. 打开聊天(`Ctrl + K` / `Cmd + K`)。
208+
2. 在说明完你的需求后,在提示末尾添加:**`use context7`**。
209+
3. 结合本仓库源码一起引用更佳:在问题中同时描述你的代码片段或通过 `@tqsdk/...` 指向相关模块,获得“实现 + 规范”的联合校对与建议。
210+
211+
示例模板(可直接粘贴)
212+
----------------------
213+
214+
* “请用 TqSdk 获取 SHFE.rb 主力连续的 1 分钟 K 线,并用 pandas 2.2 计算 20/60 均线;代码需兼容 Python 3.11。use context7”
215+
216+
217+
能带来哪些好处
218+
----------------
219+
220+
* **降低幻觉**:基于权威、最新、可指定版本的文档进行回答,显著减少错误建议。
221+
* **效率更高**:无需频繁切换浏览器查文档,回答可带来源依据,验证成本更低。
222+
* **与源码联动**:将外部文档与本仓库源码一起纳入上下文,得到“规范 + 实现”的双重视角。
223+
224+
最佳实践与注意事项
225+
--------------------
226+
227+
* **明确版本**:在提示中写出你正在使用的 Python 与关键依赖版本(如 pandas 2.2、NumPy 2.x)。
228+
* **问题要聚焦**:一次只问一个核心问题,必要时拆分为多轮对话,逐步演进。
229+
* **最小上下文**:提供足够但不冗余的代码与背景,避免信息噪声干扰答案质量。
230+
* **与源码同引用**:当官方文档与实现存在差异时,请在问题中同时 `@` 源码位置,并让 AI 标注差异与原因。
231+
232+
常见问题(FAQ)
233+
---------------
234+
235+
* “添加后没有生效?”——请在 Cursor 的 MCP 面板确认 `context7` 为 Running;若未运行,检查 Node.js 版本与网络代理;重启 Cursor 再试。
236+
* “公司网络限制 npx?”——可预先外网安装依赖,或与网络/安全同事沟通放行 `@upstash/context7-mcp` 的获取;必要时使用私有镜像源。
237+
* “如何停用?”——移除 MCP 配置或在 MCP 面板禁用 `context7`,重启 Cursor。
238+
174239
总结
175240
=====
176241

doc/version.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
版本变更
44
=============================
5+
3.8.6 (2025/08/26)
6+
7+
* 新增::py:class:`~tqsdk.risk_rule.TqRuleOrderRateLimit` 类,设置一个 API 实例每秒最大订单操作次数限制
8+
* docs: 优化文档
9+
10+
511
3.8.5 (2025/08/07)
612

713
* 修复: websockets 10.0 版本引发的连接失败问题

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
setuptools.setup(
1010
name='tqsdk',
11-
version="3.8.5",
11+
version="3.8.6",
1212
description='TianQin SDK',
1313
author='TianQin',
1414
author_email='[email protected]',

tqsdk/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '3.8.5'
1+
__version__ = '3.8.6'

tqsdk/api.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
from tqsdk.risk_rule import TqRiskRule
7272
from tqsdk.ins_schema import ins_schema, basic, derivative, future, option
7373
from tqsdk.symbols import TqSymbols
74-
from tqsdk.tradeable import TqAccount, TqZq, TqKq, TqKqStock, TqSim, TqSimStock, BaseSim, BaseOtg, TqCtp, TqRohon, TqJees, TqYida
74+
from tqsdk.tradeable import TqAccount, TqZq, TqKq, TqKqStock, TqSim, TqSimStock, BaseSim, BaseOtg, TqCtp, TqRohon, TqJees, TqYida, TqTradingUnit
7575
from tqsdk.trading_status import TqTradingStatus
7676
from tqsdk.tqwebhelper import TqWebHelper
7777
from tqsdk.utils import _generate_uuid, _query_for_quote, BlockManagerUnconsolidated, _quotes_add_night, _bisect_value, \
@@ -81,7 +81,11 @@
8181
from .__version__ import __version__
8282

8383

84-
UnionTradeable = Union[TqAccount, TqKq, TqZq, TqKqStock, TqSim, TqSimStock, TqCtp, TqRohon, TqJees, TqYida]
84+
# todo:
85+
# 在 python 文档中对 type alias 的定义有多种:TypeAliasType, TypeAlias 以及 simple assignment https://docs.python.org/3.13/library/typing.html#type-aliases
86+
# Union 类型支持嵌套 Union 类型,但是不支持嵌套 Union TypeAliasType 类型:https://docs.python.org/3.13/library/typing.html#typing.Union
87+
# 但是 Union 文档没有明说是否支持嵌套 Union simple assignment 类型,从实现上看,目前所有版本都支持(最新 3.13)
88+
UnionTradeable = Union[TqAccount, TqKq, TqZq, TqKqStock, TqSim, TqSimStock, TqCtp, TqRohon, TqJees, TqYida, TqTradingUnit]
8589

8690

8791
class TqApi(TqBaseApi):
@@ -124,9 +128,11 @@ def __init__(self, account: Optional[Union[TqMultiAccount, UnionTradeable]] = No
124128
125129
* :py:class:`~tqsdk.TqYida` : 使用易达账号
126130
131+
* :py:class:`~tqsdk.TqTradingUnit` : 使用交易单元账号
132+
127133
* :py:class:`~tqsdk.TqMultiAccount` : 多账户列表,列表中支持 :py:class:`~tqsdk.TqAccount`、:py:class:`~tqsdk.TqKq`、:py:class:`~tqsdk.TqKqStock`、\
128134
:py:class:`~tqsdk.TqSim`、:py:class:`~tqsdk.TqSimStock`、:py:class:`~tqsdk.TqZq`、:py:class:`~tqsdk.TqRohon`、:py:class:`~tqsdk.TqJees`、\
129-
:py:class:`~tqsdk.TqYida` 和 :py:class:`~tqsdk.TqCtp` 中的 0 至 N 个或者组合
135+
:py:class:`~tqsdk.TqYida` 、:py:class:`~tqsdk.TqTradingUnit` 和 :py:class:`~tqsdk.TqCtp` 中的 0 至 N 个或者组合
130136
131137
auth (TqAuth/str): [必填]用户快期账户:
132138
* :py:class:`~tqsdk.TqAuth` : 添加快期账户类,例如:TqAuth("[email protected]", "123456")
@@ -1478,6 +1484,9 @@ def cancel_order(self, order_or_order_id: Union[str, Order], account: Optional[U
14781484
"user_id": self._account._get_account_id(account),
14791485
"order_id": order_id,
14801486
}
1487+
# 风控检查
1488+
self._risk_manager._could_cancel_order(msg)
1489+
self._risk_manager._on_cancel_order(msg)
14811490
self._send_pack(msg)
14821491

14831492
# ----------------------------------------------------------------------

tqsdk/multiaccount.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
__time__ = '2020/8/5 22:45'
44
__author__ = 'Hong Yan'
55

6-
from typing import List, Union, Optional
6+
from typing import List, Union, Optional, TYPE_CHECKING
77

88
from shinny_structlog import ShinnyLoggerAdapter
99

10+
if TYPE_CHECKING:
11+
from tqsdk.api import UnionTradeable
12+
1013
from tqsdk.channel import TqChan
11-
from tqsdk.tradeable import TqAccount, TqKq, TqKqStock, TqSim, TqSimStock, BaseSim, TqZq, TqCtp, TqRohon, TqJees, TqYida, TqTradingUnit
14+
from tqsdk.tradeable import TqSim, BaseSim
1215
from tqsdk.tradeable.mixin import StockMixin
1316

1417

@@ -27,7 +30,7 @@ class TqMultiAccount(object):
2730
2831
"""
2932

30-
def __init__(self, accounts: Optional[List[Union[TqAccount, TqKq, TqZq, TqKqStock, TqSim, TqSimStock, TqZq, TqCtp, TqRohon, TqJees, TqYida, TqTradingUnit]]] = None):
33+
def __init__(self, accounts: Optional[List['UnionTradeable']] = None):
3134
"""
3235
创建 TqMultiAccount 实例
3336
@@ -85,7 +88,7 @@ def _has_duplicate_account(self):
8588
account_set = set([a._account_key for a in self._account_list])
8689
return len(account_set) != len(self._account_list)
8790

88-
def _check_valid(self, account: Union[str, TqAccount, TqKq, TqKqStock, TqSim, TqSimStock, None]):
91+
def _check_valid(self, account: Union[str, 'UnionTradeable', None]):
8992
"""
9093
查询委托、成交、资产、委托时, 需要指定账户实例
9194
account: 类型 str 表示 account_key,其他为账户类型或者 None

0 commit comments

Comments
 (0)