Skip to content
Closed
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
1 change: 1 addition & 0 deletions tests/clients/test_stream_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ async def test_orderbook_stream(create_orderbook_message):
"type": "SNAPSHOT",
"data": {
"m": message_model.data.market,
"t": None,
"b": [{"q": "0.008", "p": "43547.00"}, {"q": "0.007000", "p": "43548.00"}],
"a": [{"q": "0.008", "p": "43546.00"}],
},
Expand Down
3 changes: 3 additions & 0 deletions x10/clients/rest/rest_api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
PlacedOrderModel,
SelfTradeProtectionLevel,
TimeInForce,
OrderType
)
from x10.signing.order_object import OrderTpslTriggerParam, create_order_object
from x10.utils.date import utc_now
Expand Down Expand Up @@ -51,6 +52,7 @@ async def place_order(
price: Decimal,
side: OrderSide,
taker_fee: Decimal,
order_type: OrderType = OrderType.LIMIT,
post_only: bool = False,
previous_order_id=None,
expire_time: Optional[datetime] = None,
Expand Down Expand Up @@ -85,6 +87,7 @@ async def place_order(
amount_of_synthetic=amount_of_synthetic,
price=price,
side=side,
order_type=order_type,
post_only=post_only,
previous_order_external_id=previous_order_id,
expire_time=expire_time,
Expand Down
8 changes: 8 additions & 0 deletions x10/clients/stream/stream_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ def subscribe_to_orderbooks(self, market_name: Optional[str] = None, depth: int
url = self.__get_url("/orderbooks/<market?>", market=market_name, query={"depth": depth})
return self.__connect(url, WrappedStreamResponseModel[OrderbookUpdateModel])

def subscribe_to_rfq_orderbooks(self, market_name: Optional[str] = None):
"""
Subscribe to the RFQ orderbook stream.
"""

url = self.__get_url("/orderbooks/rfq/<market?>", market=market_name)
return self.__connect(url, WrappedStreamResponseModel[OrderbookUpdateModel])

def subscribe_to_public_trades(self, market_name: Optional[str] = None):
"""
https://api.docs.extended.exchange/#trades-stream
Expand Down
6 changes: 5 additions & 1 deletion x10/models/orderbook.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from decimal import Decimal
from typing import List
from typing import List, Optional

from pydantic import AliasChoices, Field

from x10.models.base import X10BaseModel
from x10.models.http import StreamDataType


class OrderbookQuantityModel(X10BaseModel):
Expand All @@ -13,5 +14,8 @@ class OrderbookQuantityModel(X10BaseModel):

class OrderbookUpdateModel(X10BaseModel):
market: str = Field(validation_alias=AliasChoices("market", "m"), serialization_alias="m")
type: Optional[StreamDataType] = Field(
default=None, validation_alias=AliasChoices("type", "t"), serialization_alias="t"
)
bid: List[OrderbookQuantityModel] = Field(validation_alias=AliasChoices("bid", "b"), serialization_alias="b")
ask: List[OrderbookQuantityModel] = Field(validation_alias=AliasChoices("ask", "a"), serialization_alias="a")
Loading