Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions tplus/model/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from tplus.model.asset_identifier import AssetIdentifier
from tplus.model.limit_order import LimitOrderDetails
from tplus.model.market_order import MarketOrderDetails
from tplus.model.order_trigger import TriggerAbove, TriggerBelow
from tplus.model.order_trigger import OrderTrigger
from tplus.model.types import UserPublicKey

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -68,7 +68,7 @@ class Order(BaseModel):
book_quantity_decimals: int
details: LimitOrderDetails | MarketOrderDetails
side: Side
trigger: TriggerAbove | TriggerBelow | None = None
trigger: OrderTrigger | None = None
creation_timestamp_ns: int
canceled: bool = False
target: TradeTarget = TradeTarget.margin_account_spot_trade()
Expand Down Expand Up @@ -109,6 +109,7 @@ class OrderResponse(BaseModel):
trigger_above_price: Decimal | None
trigger_below_price: Decimal | None
trigger_touched: bool | None = None
parent_id: str | None = None
last_update_timestamp_ns: int | None
is_immediate_or_cancel: bool | None = None
is_fill_or_kill: bool | None = None
Expand Down
12 changes: 12 additions & 0 deletions tplus/model/order_trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,15 @@ def serialize_model(self) -> dict[str, dict[str, Any]]:
"price": self.price,
}
return {"PriceBelow": data}


class OrderTrigger(BaseModel):
parent_order_id: str | None
trigger: TriggerAbove | TriggerBelow

@model_serializer
def serialize_model(self) -> dict[str, dict[str, Any] | str | None]:
return {
"parent_order_id": self.parent_order_id,
"condition": self.trigger.serialize_model(),
}
4 changes: 2 additions & 2 deletions tplus/utils/limit_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from tplus.model.asset_identifier import AssetIdentifier
from tplus.model.limit_order import GTC, GTD, IOC, LimitOrderDetails
from tplus.model.order import CreateOrderRequest, Order, Side, TradeTarget
from tplus.model.order_trigger import TriggerAbove, TriggerBelow
from tplus.model.order_trigger import OrderTrigger
from tplus.utils.user import User


Expand All @@ -17,7 +17,7 @@ def create_limit_order_ob_request_payload(
asset_identifier: AssetIdentifier,
order_id: str,
time_in_force: GTC | GTD | IOC | None = None,
trigger: TriggerAbove | TriggerBelow | None = None,
trigger: OrderTrigger | None = None,
target: TradeTarget | None = None,
) -> CreateOrderRequest:
side_normalized = Side.SELL if side.lower() == "sell" else Side.BUY
Expand Down
4 changes: 2 additions & 2 deletions tplus/utils/market_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
MarketQuoteQuantity,
)
from tplus.model.order import CreateOrderRequest, Order, Side, TradeTarget
from tplus.model.order_trigger import TriggerAbove, TriggerBelow
from tplus.model.order_trigger import OrderTrigger
from tplus.utils.user import User


Expand All @@ -22,7 +22,7 @@ def create_market_order_ob_request_payload(
base_quantity: MarketBaseQuantity | None = None,
quote_quantity: MarketQuoteQuantity | None = None,
fill_or_kill: bool = False,
trigger: TriggerAbove | TriggerBelow | None = None,
trigger: OrderTrigger | None = None,
target: TradeTarget | None = None,
) -> CreateOrderRequest:
side_normalized = Side.SELL if side.lower() == "sell" else Side.BUY
Expand Down
Loading