聚宽信号中转站
默认蓝
主题色
明暗
选择会记在本机浏览器,下次打开保持。
登录 免费注册

聚宽连接教程

适用产品:聚宽跟单工具 · 预计用时:约 5 分钟。粘贴一段代码即可,不用改策略逻辑,也不交出策略源码。

开始之前

  • 已创建一个有效的通道(用户中心 → 我的通道)。
  • 拥有一条自己可以编辑的聚宽策略。
  • 想清楚每个策略用哪个通道 —— 多个策略请用不同通道,避免身份与参数混用。

整条链路长什么样

聚宽策略  ──①推送信号──▶  中转站(本站)      信号状态:待领取
                             │
QMT 策略  ──②领取信号──▶  中转站
          ──③回报结果──▶  中转站              信号状态:已完成
          ──④心跳─────▶  中转站              工作台据此显示「已连接」
聚宽这一侧只负责「说我想要什么」。 真正买多少股、按什么价买,由你本机的 QMT 决定 —— 因为只有它知道实时持仓、 可用资金和盘口。所以聚宽策略里不用管数量换算、也不用管价格笼子。

① 打开当前通道的配置与下载页

到「用户中心 → 我的通道」选择目标通道,进入通道工作台。 工作台里有全部配置入口:聚宽接入代码、跟单包下载、风控参数、信号列表。

多个策略请分别用各自的通道,不要共用一个 —— 否则信号会混在一起,无法区分来源。

② 复制当前通道的专属代码

点 「复制完整代码」。这段代码里已经写好了你的中转站地址和通道令牌, 不要改动其中的服务器地址与通道令牌。

为什么是「粘贴」而不是「上传文件」? 这段代码是自包含的,直接跑在你的策略文件里。所以不需要上传任何文件到研究根目录, 也不需要给每个下单语句加前缀 —— 它就地接管了聚宽原生的 order / order_value / order_target_value 等函数。

③ 放在导入语句之后、策略函数之前

在聚宽策略编辑器里,删除旧接入代码,把新版放在全部 import 之后、initialize 等策略函数定义之前,并在 initialize 函数首行加入 _jqr_install()。

from jqdata import *

# 当前通道完整接入代码(替换旧版,不要重复追加)
# 放在全部 import 之后、策略函数之前
...(点「复制完整代码」得到的那一整段)...

# 原策略函数从这里开始
def initialize(context):
    _jqr_install()
    g.security = '000001.XSHE'

def handle_data(context, data):
    order_target_value(g.security, 10000)
回测 / 模拟都不会受影响:
  • 回测:代码自动识别回测环境并完全跳过,不推送任何信号, 同时照常调用聚宽原生下单函数 —— 回测成交、净值、收益率与改造前完全一致。
  • 模拟交易:先把信号推给中转站,然后照常执行你原来的下单语句, 聚宽自己的模拟账户照旧成交,原有模拟盘行为不变。
  • 网络异常:推送失败只打日志并本地排队重发,绝不打断策略主流程。
  • 想彻底关掉:把代码里的 _JQR["enabled"] 改成 False。

④ 保存并运行聚宽策略

保存后按聚宽平台的正常流程启动策略即可。 本站无法验证你是否保存或粘贴正确,所以这一步不会有「已完成」勾选 —— 请用下一步的真实记录来确认。

⑤ 三种测试方式(按需选)

「聚宽能不能把信号送出来」和「QMT 能不能收到并执行」是两件独立的事。 按下面的顺序逐步验证,出问题时能立刻定位是哪一段断的。

方式怎么做验了什么要等开盘吗
1 研究环境自检
推荐先做
通道工作台点「复制自检代码」→ 粘到聚宽「研究环境」新建的 Notebook → 运行(末尾那行 _jqr_e2e_test() 会自动开跑) 三跳全验:聚宽 → 中转站 → QMT。断在哪一跳会直接写明 不用。探针不取价、不报单,收盘后 / 周末同样有效
2 模拟盘实跑 把策略切到「模拟交易」并启动。回测模式不会推送任何信号,这是设计如此 策略真实运行时会不会推送;工作台「最近策略信号」能看到信号, 状态从 待领取 → 已领取 → 已完成 要。模拟盘只在交易时段触发交易事件
3 验证真实报单 到通道工作台点「实盘下单(100股)」,填股票代码与精确价格。 这条不经过聚宽,由工作台直接发真实信号 QMT 侧 passorder 那一段是否真的能报单。 下单后到 QMT 委托列表核对方向 / 价格 / 数量 不用等聚宽,但要过服务端风控(含交易时段校验)
为什么自检能「不用等开盘」? 它发的是标记了 is_test 的探针信号:QMT 收到后直接回报, 不取价、不报单。所以它碰不到「收盘后取不到价」这个坑 —— 这正是以前收盘后测试必然失败的原因。
真实下单必须带精确价格(v0.7.8 起强制)。 接入代码在推送前会取最新价作为参考价一起发出;若某标的取不到价 (停牌 / 冷门 LOF / 非交易时段),该信号会被中转站直接拒收, 并在工作台「最近策略信号」标成「被风控拦截」、原因写明「信号未携带价格」。

自检(可选,但很省事)

在聚宽「研究」环境里执行一次,可以一次性看到地址、令牌、接管了几个下单函数, 以及中转站是否可达:

_jqr_selfcheck()

这个函数就在你粘贴的那段代码里,不需要额外 import。

常见问题与排查

现象原因 / 处理
页面一直没有策略信号 确认聚宽策略实际在运行且触发了交易事件 (回测不会推),并确认用的是当前通道的专属代码。
多个策略的信号混在一起 为不同策略创建独立通道,分别复制对应通道的代码。
推送失败 HTTP 401 通道令牌不对或已被更换。回工作台重新复制一次代码。
推送失败 HTTP 402 工具权益已到期,到积分与权益续费即可。
推送失败 / 连接超时 聚宽访问不到中转站。聚宽的策略环境对白名单外的域名有限制, 若用域名推不上去,请让客服把站点地址改成 IP + 端口 的形式。
信号被拒收(status=expired) 信号时间比服务器时间旧太多(默认 300 秒)。 这是防止回测信号误入实盘的保险。检查聚宽策略是否真的在实时运行。
信号全部被风控拦截 检查是否在交易时段内,以及通道的单笔金额 / 日委托笔数上限。
信号停在「待领取」 QMT 侧没在运行,或两边令牌不一致。看工作台的 QMT 连接状态与执行日志。
信号被拦截,原因写「信号未携带价格」 v0.7.8 起真实下单必须带精确价格。接入代码取不到该标的行情 (停牌 / 冷门 LOF / 非交易时段)时就会这样。重新复制一次最新的接入代码, 并确认标的当时有行情。
编译报 invalid character in identifier 粘贴时混入了全角标点(中文引号、中文逗号)。 请重新「复制完整代码」再整段替换一次,不要手工改。
?帮助 ◎知识库
帮助