🚀 AI 一键生成 ptrade 策略代码

ptrade调用order_value/order_target_value按金额委托会自动取整吗?

ptrade | 发布时间: 2026/5/28
以下内容由 EasyQuant 生成。

问题描述

量化调用order_target_value 、order_value接口传入委托金额计算的委托数量不满整手数会自动取整吗?

/

解决方案

核心解答

是的,会自动取整。

在 ptrade 量化平台中,当您调用 order_value(指定目标价值买卖)或 order_target_value(指定持仓市值买卖)接口时,系统会根据您传入的金额和当前价格计算出理论委托数量。如果该数量不满整手,系统会自动向下取整以符合交易所的交易规则。

具体的取整规则

根据 ptrade API 文档的明确规定:

  1. 股票交易:自动取整为 100股 的整数倍。
  2. 可转债交易:自动取整为 10张 的整数倍。

注意:由于向下取整的机制,实际成交的金额通常会略小于您在接口中传入的目标金额(value)。


接口使用示例

1. order_value 示例

买入指定价值的股票,系统会自动计算数量并取整。

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 假设当前价格为 41.5 元
    # 理论数量 = 10000 / 41.5 ≈ 240.96 股
    # 系统自动取整为 200 股进行委托
    order_value('600570.SS', 10000)

2. order_target_value 示例

调整股票持仓市值到指定价值,系统同样会自动计算差额数量并取整。

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 将恒生电子的持仓市值调整到 50000 元
    # 系统会根据当前持仓市值和最新价,计算需要买入或卖出的数量,并按100股取整
    order_target_value('600570.SS', 50000)

⚠️ 交易场景使用注意事项

在使用 order_target_value 时,特别是在实盘交易环境中,需要注意以下几点以避免重复下单

  1. 持仓同步时滞:柜台返回持仓数据体现当日变化时,通常有 6 秒左右的时滞。如果在短时间内连续调用 order_target_value,由于持仓市值未瞬时更新,会导致重复计算差额并重复下单。
  2. 在途委托未计算:如果第一笔委托未完全成交且未撤单,再次调用 order_target_value 相同的目标金额,引擎不会计算在途的委托数量,也会造成重复下单。
  3. 柜台配置差异:部分券商柜台的持仓数据不体现当日变化(一天同步一次),这种情况下使用目标市值委托必然会造成重复下单。

建议:在实盘交易中使用 order_target_value 前,务必确认券商柜台的持仓更新配置,并在策略逻辑中增加订单状态和持仓同步的管理机制。