Jikipedia
概念笔记

聚宽下单 API 与订单对象

四种下单 API 按「按数量还是按金额、增量为买入还是调到目标」区分;清仓统一写 ordertarget(x, 0)。下单返回 Order 对象、成交返回 Trade 对象,可查状态。

量化聚宽orderorder_valueorder_target下单

一句话

聚宽下单四件套:order(按股数买/卖)、order_value(按金额买)、order_target(把仓位调到目标股数)、order_target_value(把持仓价值调到目标金额)。动态多股票买入用 order_value 平分现金,均衡持有用 order_target_value 摊总资产,清仓/止损一律 order_target(x, 0)

当前理解

四种下单的语义(第 1/3 篇)

API语义典型用途
order(security, amount)按股数买卖要精确股数时
order_value(security, 金额)按金额买入(金额转股数)用现金份额买,如平分现金
order_target(security, 目标股数)把持仓调到目标股数清仓写 0;卖出
order_target_value(security, 目标金额)把持仓价值调到目标金额均衡分配、按目标市值持有

资金与仓位的数据来源

  • context.portfolio.cash:当前可用现金。
  • context.portfolio.total_value:总资产 = 现金 + 持仓市值。
  • context.portfolio.positions[股票]:持仓对象;closeable_amount 可卖数量、avg_cost 成本、price 现价。

多股票资金分配的两个阶段(第 4/6 篇的教训)

  • 错法:循环里每只都用全部现金 order_value(sec, cash) → 第一只买完就没钱了。
  • 第 1 版对法:per_cash = cash / len(股票),每只 order_value(sec, per_cash)(只对现金均分)。
  • 第 2 版更对(市值轮动 2.0):per = total_value / stocksnum,每只 order_target_value(sec, per)——把「每只持仓价值 = 总资产均分」设为目标,长期入选的股票不会越积越多。原因:order_value 每次是「加一笔」,order_target_value 是「拉回目标线」。

订单管理与对象

  • 管理:cancel_order(撤单)、get_open_orders(未完成订单)、get_orders(当天全部)、get_trades(当天成交)。
  • Order 对象属性:add_time、is_buy(买卖方向)、amount(下单量,恒正)、filled(已成交量)、security、order_id、price(平均成交价)、status(未成交/部分成交/已撤销/交易所拒绝/全部成交)。
  • Trade 对象属性:time、amount、price、trade_id。

来源

常见混淆

  • order_value vs order_target_value:前者「按金额加买一笔」(增量),后者「把该股仓位调到目标金额」(存量目标)。市值轮动 2.0 的持仓失衡问题只有后者能修。
  • order_target(x, 0) 是清仓:不是「卖 0 股」,而是把仓位调到 0 = 全部卖出。
  • amount 恒正:Order 对象里买卖方向由 is_buy 表达,amount 不取负。
  • positions 是复数:老教程多处写成 position(单数)属笔误,正写是 context.portfolio.positions

开放问题

  • [需要验证] 是否支持限价单/市价单等更多订单类型(教程只覆盖四种基础下单)。
  • [需要验证] 停牌/涨停股下单的实际成交行为(教程提到要过滤这类股票,但没讲下单失败会怎样)。

更新 2026-09-06

检索知识库

按标题、类型或正文检索