Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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.

‎doc/images/context7add_to_cursor.png‎

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='tianqincn@gmail.com',

‎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("tianqin@qq.com", "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)

AltStyle によって変換されたページ (->オリジナル) /