🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant 回测中如何下条件单?停止单止盈止损模式详解

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

回测中条件单怎么下?就是停止单吗

但是api文档中显示停止单需要设置参数mode,只有止盈和止损模式?例如现在价格为1,我想在价格2上挂上条件单,价格达到2的时候触发条件单做多,这算止盈还是止损?

解决方案

在 JoinQuant(聚宽)平台中,条件单确实是通过“停止单”(Stop Order)来实现的

针对您的具体场景:当前价格为1,想在价格达到2的时候触发条件单做多(买入),这在 JoinQuant 的定义中属于【止损模式】(stop_loss)。

为什么是止损模式(stop_loss)?

根据 JoinQuant API 文档对停止单 mode 参数的严格定义:

  • 止损模式 (stop_loss):买入/做多/平空时,触发价必须 大于 最新价;卖出/做空/平多时,触发价必须 小于 最新价。
  • 止盈模式 (take_profit):买入/做多/平空时,触发价必须 小于 最新价;卖出/做空/平多时,触发价必须 大于 最新价。

在您的例子中,操作是做多(买入),触发价(2)大于 最新价(1),完全符合**止损模式 (stop_loss)**的规则。如果触发价不满足上述条件,该停止单会立即触发。

如何在代码中下停止单?

您可以使用 StopMarketOrderStyle(停止市价单)或 StopLimitOrderStyle(停止限价单)作为 order 系列函数的 style 参数。

代码示例:

# 假设当前价格为 1,目标突破 2 时买入 100 股平安银行

# 方式一:停止市价单(突破 2 时,以市价买入)
order('000001.XSHE', 100, style=StopMarketOrderStyle(mode='stop_loss', stop_price=2.0))

# 方式二:停止限价单(突破 2 时,下达价格为 2.05 的限价买单)
order('000001.XSHE', 100, style=StopLimitOrderStyle(mode='stop_loss', stop_price=2.0, limit_price=2.05))

使用停止单的注意事项:

  1. 资金与持仓不提前锁定:停止单在挂单时不会提前锁定您的现金或持仓。当价格达到触发价时,系统才会真正去下市价单或限价单。如果触发时您的账户资金不足,订单会直接委托失败。
  2. 当日有效:订单生效的时间仅限于标的交易时间,当天未完成的停止单会在盘后自动撤销。如果需要长期有效的条件单,需要在每天的 handle_data 或定时函数中重新挂单。
  3. 按价值下单的计算规则:如果您使用 order_valueorder_target_value 配合停止单,实际委托数量是根据 stop_price(对于 StopMarketOrderStyle)或 limit_price(对于 StopLimitOrderStyle)来计算的,而不是当时的最新价。