You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

alpaca-py StopOrderRequest bracket订单状态枚举验证错误求助

使用alpaca-py创建带止损止盈的止损订单时遇到枚举验证错误

我在使用alpaca-py库,调用创建新订单接口,尝试通过StopOrderRequest创建带止损止盈(bracket订单)的订单时,出现了如下Pydantic验证错误:

File "G:\...functions.py", line 80, in trading_client.submit_order(order_request)
File "C:\...\Python\Python310\lib\site-packages\alpaca\trading\client.py", line 90, in submit_order
    return Order(**response)
  File "C:...\Python\Python310\lib\site-packages\alpaca\trading\models.py", line 182, in __init__
    super().__init__(**data)
  File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Order
legs -> 0 -> status
  value is not a valid enumeration member; permitted: 'new', 'partially_filled', 'filled', 'done_for_day', 'canceled', 'expired', 'replaced', 'pending_cancel', 'pending_replace', 'accepted', 'pending_new', 'accepted_for_bidding', 'stopped', 'rejected', 'suspended', 'calculated' (type=type_error.enum; enum_values=[<OrderStatus.NEW: 'new'>, <OrderStatus.PARTIALLY_FILLED: 'partially_filled'>, <OrderStatus.FILLED: 'filled'>, <OrderStatus.DONE_FOR_DAY: 'done_for_day'>, <OrderStatus.CANCELED: 'canceled'>, <OrderStatus.EXPIRED: 'expired'>, <OrderStatus.REPLACED: 'replaced'>, <OrderStatus.PENDING_CANCEL: 'pending_cancel'>, <OrderStatus.PENDING_REPLACE: 'pending_replace'>, <OrderStatus.ACCEPTED: 'accepted'>, <OrderStatus.PENDING_NEW: 'pending_new'>, <OrderStatus.ACCEPTED_FOR_BIDDING: 'accepted_for_bidding'>, <OrderStatus.STOPPED: 'stopped'>, <OrderStatus.REJECTED: 'rejected'>, <OrderStatus.SUSPENDED: 'suspended'>, <OrderStatus.CALCULATED: 'calculated'>])
legs -> 1 -> status
  value is not a valid enumeration member; permitted: 'new', 'partially_filled', 'filled', 'done_for_day', 'canceled', 'expired', 'replaced', 'pending_cancel', 'pending_replace', 'accepted', 'pending_new', 'accepted_for_bidding', 'stopped', 'rejected', 'suspended', 'calculated' (type=type_error.enum; enum_values=[<OrderStatus.NEW: 'new'>, <OrderStatus.PARTIALLY_FILLED: 'partially_filled'>, <OrderStatus.FILLED: 'filled'>, <OrderStatus.DONE_FOR_DAY: 'done_for_day'>, <OrderStatus.CANCELED: 'canceled'>, <OrderStatus.EXPIRED: 'expired'>, <OrderStatus.REPLACED: 'replaced'>, <OrderStatus.PENDING_CANCEL: 'pending_cancel'>, <OrderStatus.PENDING_REPLACE: 'pending_replace'>, <OrderStatus.ACCEPTED: 'accepted'>, <OrderStatus.PENDING_NEW: 'pending_new'>, <OrderStatus.ACCEPTED_FOR_BIDDING: 'accepted_for_bidding'>, <OrderStatus.STOPPED: 'stopped'>, <OrderStatus.REJECTED: 'rejected'>, <OrderStatus.SUSPENDED: 'suspended'>, <OrderStatus.CALCULATED: 'calculated'>])

问题原因

这个错误是因为Alpaca API返回的订单legs状态值,不在当前alpaca-py版本的OrderStatus枚举定义范围内。大概率是你使用的alpaca-py版本过旧,没有兼容API新增的状态值。

解决方法

  1. 升级alpaca-py到最新版本:
    执行以下命令更新库:
    pip install --upgrade alpaca-py
    
  2. 检查订单创建参数:
    确认创建bracket订单时,没有手动给StopOrderRequest设置status字段——订单状态是由API自动返回的,不需要用户传入。确保你的订单参数完全符合bracket订单的规范。

内容的提问来源于stack exchange,提问作者Zach Marion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:46:18