问题描述
/
解决方案
核心解答
是的,会自动取整。
在 ptrade 量化平台中,当您调用 order_value(指定目标价值买卖)或 order_target_value(指定持仓市值买卖)接口时,系统会根据您传入的金额和当前价格计算出理论委托数量。如果该数量不满整手,系统会自动向下取整以符合交易所的交易规则。
具体的取整规则
根据 ptrade API 文档的明确规定:
- 股票交易:自动取整为 100股 的整数倍。
- 可转债交易:自动取整为 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 时,特别是在实盘交易环境中,需要注意以下几点以避免重复下单:
- 持仓同步时滞:柜台返回持仓数据体现当日变化时,通常有 6 秒左右的时滞。如果在短时间内连续调用
order_target_value,由于持仓市值未瞬时更新,会导致重复计算差额并重复下单。 - 在途委托未计算:如果第一笔委托未完全成交且未撤单,再次调用
order_target_value相同的目标金额,引擎不会计算在途的委托数量,也会造成重复下单。 - 柜台配置差异:部分券商柜台的持仓数据不体现当日变化(一天同步一次),这种情况下使用目标市值委托必然会造成重复下单。
建议:在实盘交易中使用 order_target_value 前,务必确认券商柜台的持仓更新配置,并在策略逻辑中增加订单状态和持仓同步的管理机制。