Jikipedia
Jikipedia量化聚宽新手入门教程(JoinQuant 平台实操)止盈止损与持仓管理(聚宽写法)
概念笔记

止盈止损与持仓管理(聚宽写法)

止盈止损 = 用持仓的 price/avgcost 比例当触发条件,用 ordertarget(x, 0) 清仓执行;止损要独立高频跑(每日/分钟),与低频调仓分开。均衡持仓用 ordertargetvalue。

量化聚宽止损止盈持仓管理avg_cost

一句话

持仓信息在 context.portfolio.positions[股票]avg_cost 持仓成本、price 现价、closeable_amount 可卖量。盈亏比例 = price/avg_cost:≥ 1.5 止盈、≤ 0.9(或 0.8)止损,触发就 order_target(stock, 0) 清仓。止损必须每天都检查(甚至每分钟),不能等低频轮动周期。

当前理解

  • 概念出处(第 2 篇):止盈止损是完整策略「处理逻辑」的第四件套(选股、择时、仓位管理、止盈止损)。止盈 = 有收益及时卖落袋;止损 = 亏损及时卖避免更大亏损。仓位管理讨论「如何分批入场 + 如何止盈止损」。
  • 基础写法(第 3 篇):
    avg_cost = context.portfolio.positions[stock].avg_cost
    price    = context.portfolio.positions[stock].price
    if price/avg_cost >= 1.5:  order_target(stock, 0)   # 收益 50% 止盈
    if price/avg_cost <= 0.9:  order_target(stock, 0)   # 亏损 10% 止损
    
    比例可参数化(阈值 1.5 / 0.9 只是示例)。
  • 止损的节奏(第 6/7 篇):
    • 止损要「尽快」,所以不能只在 10 天轮动日检查;市值轮动 2.0 把 stop(context) 放 daily 开头(每天跑),轮动判断放后面(每 10 天跑)。
    • 3.0 更进一步:止损按分钟跑,用 run_daily(stop_by_minute, 'every_bar') 单独注册(按分钟回测时每分钟检查)——止损与调仓拆成两个节奏。
    • 2.0 示例阈值:price/avg_cost < 0.8 清仓(亏 20%)。
  • 持仓均衡(第 6 篇,与止损同族的持仓管理):每只目标价值 = total_value / stocksnum,用 order_target_value(stock, 目标) 拉回——比每次 order_value 加仓更不易失衡。
  • 卖出前查可卖量:双均线示例用 positions[sec].closeable_amount > 0 判断「有货才卖」,避免空仓误卖。

来源

常见混淆

  • 止损 vs 轮动换仓:止损因「亏损达到阈值」砍仓(价驱动);轮动换仓因「股票离开目标名单」卖(名单驱动)。两者触发理由不同,代码里是两段逻辑。
  • price 是现价不是成本:比例式里分子是现价(最新成交/收盘),分母是 avg_cost;写反就变成「涨了止损」。
  • order_target(x,0) 清仓:见 jq-order-api——不是卖 0 股。
  • 止损价与成交价:教程用现价判断、市价清仓;真实回测里涨跌停/流动性会让实际成交价偏离现价(教程未展开,[需要验证])。

开放问题

  • [需要验证] 涨跌停板上的止损单能否成交、滑点对止损有效性的影响(教程只提醒「涨停/停牌股无法交易」)。
  • 固定比例止损只是最简单一档;止损价/移动止损/波动率止损等进阶写法在量化课堂批次里补。

更新 2026-09-06

检索知识库

按标题、类型或正文检索