diff --git a/pyproject.toml b/pyproject.toml index 188ec28..1567655 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "x10-python-trading-starknet" -version = "0.0.15" +version = "0.0.16" description = "Python client for X10 API" authors = ["X10 "] repository = "https://github.com/x10xchange/python_sdk" diff --git a/x10/perpetual/order_object.py b/x10/perpetual/order_object.py index 33f466b..7ab7207 100644 --- a/x10/perpetual/order_object.py +++ b/x10/perpetual/order_object.py @@ -14,12 +14,12 @@ ) from x10.perpetual.orders import ( CreateOrderTpslTriggerModel, + NewOrderModel, OrderPriceType, OrderSide, OrderTpslType, OrderTriggerPriceType, OrderType, - PerpetualOrderModel, SelfTradeProtectionLevel, TimeInForce, ) @@ -55,7 +55,7 @@ def create_order_object( tp_sl_type: Optional[OrderTpslType] = None, take_profit: Optional[OrderTpslTriggerParam] = None, stop_loss: Optional[OrderTpslTriggerParam] = None, -) -> PerpetualOrderModel: +) -> NewOrderModel: """ Creates an order object to be placed on the exchange using the `place_order` method. """ @@ -132,7 +132,16 @@ def __create_order_object( tp_sl_type: Optional[OrderTpslType] = None, take_profit: Optional[OrderTpslTriggerParam] = None, stop_loss: Optional[OrderTpslTriggerParam] = None, -) -> PerpetualOrderModel: +) -> NewOrderModel: + if side not in OrderSide: + raise ValueError(f"Unexpected order side value: {side}") + + if time_in_force not in TimeInForce or time_in_force == TimeInForce.FOK: + raise ValueError(f"Unexpected time in force value: {time_in_force}") + + if expire_time is None: + raise ValueError("`expire_time` must be provided") + if exact_only: raise NotImplementedError("`exact_only` option is not supported yet") @@ -144,9 +153,6 @@ def __create_order_object( ): raise NotImplementedError("TPSL `MARKET` price type is not supported yet") - if expire_time is None: - raise ValueError("`expire_time` must be provided") - if nonce is None: nonce = generate_nonce() @@ -194,7 +200,7 @@ def __create_order_object( ) order_id = str(settlement_data.order_hash) if order_external_id is None else order_external_id - order = PerpetualOrderModel( + order = NewOrderModel( id=order_id, market=market.name, type=OrderType.LIMIT, diff --git a/x10/perpetual/orders.py b/x10/perpetual/orders.py index eec6389..146b253 100644 --- a/x10/perpetual/orders.py +++ b/x10/perpetual/orders.py @@ -131,7 +131,7 @@ class CreateOrderTpslTriggerModel(X10BaseModel): debugging_amounts: Optional[StarkDebuggingOrderAmountsModel] = None -class PerpetualOrderModel(X10BaseModel): +class NewOrderModel(X10BaseModel): id: str market: str type: OrderType @@ -188,6 +188,7 @@ class OpenOrderModel(X10BaseModel): created_time: int updated_time: int expiry_time: Optional[int] = None + time_in_force: TimeInForce tp_sl_type: Optional[OrderTpslType] = None take_profit: Optional[OpenOrderTpslTriggerModel] = None stop_loss: Optional[OpenOrderTpslTriggerModel] = None diff --git a/x10/perpetual/simple_client/simple_trading_client.py b/x10/perpetual/simple_client/simple_trading_client.py index 12bbf36..a8600c4 100644 --- a/x10/perpetual/simple_client/simple_trading_client.py +++ b/x10/perpetual/simple_client/simple_trading_client.py @@ -9,10 +9,10 @@ from x10.perpetual.markets import MarketModel from x10.perpetual.order_object import create_order_object from x10.perpetual.orders import ( + NewOrderModel, OpenOrderModel, OrderSide, OrderStatus, - PerpetualOrderModel, TimeInForce, ) from x10.perpetual.stream_client.perpetual_stream_connection import ( @@ -208,7 +208,7 @@ async def create_and_place_order( if not market: raise ValueError(f"Market '{market_name}' not found.") - order: PerpetualOrderModel = create_order_object( + order: NewOrderModel = create_order_object( account=self.__account, market=market, amount_of_synthetic=amount_of_synthetic, diff --git a/x10/perpetual/trading_client/order_management_module.py b/x10/perpetual/trading_client/order_management_module.py index 7143466..4924312 100644 --- a/x10/perpetual/trading_client/order_management_module.py +++ b/x10/perpetual/trading_client/order_management_module.py @@ -1,6 +1,6 @@ from typing import List, Optional -from x10.perpetual.orders import PerpetualOrderModel, PlacedOrderModel +from x10.perpetual.orders import NewOrderModel, PlacedOrderModel from x10.perpetual.trading_client.base_module import BaseModule from x10.utils.http import send_delete_request, send_post_request from x10.utils.log import get_logger @@ -17,7 +17,7 @@ class _MassCancelRequestModel(X10BaseModel): class OrderManagementModule(BaseModule): - async def place_order(self, order: PerpetualOrderModel): + async def place_order(self, order: NewOrderModel): """ Placed new order on the exchange.