diff --git a/core/lib/schemas/oanda_s.py b/core/lib/schemas/oanda_s.py index 2efd88b..49ae47f 100644 --- a/core/lib/schemas/oanda_s.py +++ b/core/lib/schemas/oanda_s.py @@ -386,41 +386,6 @@ AccountInstrumentsSchema = { } -class OrderTransaction(BaseModel): - id: str - accountID: str - userID: int - batchID: str - requestID: str - time: str - type: str - instrument: str - units: str - timeInForce: str - positionFill: str - reason: str - - -class OrderCreate(BaseModel): - orderCreateTransaction: OrderTransaction - - -OrderCreateSchema = { - "id": "orderCreateTransaction.id", - "accountID": "orderCreateTransaction.accountID", - "userID": "orderCreateTransaction.userID", - "batchID": "orderCreateTransaction.batchID", - "requestID": "orderCreateTransaction.requestID", - "time": "orderCreateTransaction.time", - "type": "orderCreateTransaction.type", - "symbol": "orderCreateTransaction.instrument", - "units": "orderCreateTransaction.units", - "timeInForce": "orderCreateTransaction.timeInForce", - "positionFill": "orderCreateTransaction.positionFill", - "reason": "orderCreateTransaction.reason", -} - - class PriceBid(BaseModel): price: str liquidity: int @@ -476,11 +441,6 @@ PricingInfoSchema = { } -class LongPositionCloseout(BaseModel): - instrument: str - units: str - - class Trade(BaseModel): tradeID: str clientTradeID: str @@ -498,30 +458,52 @@ class Trade(BaseModel): trailingStopLossOrder: dict | None -{ - "trades": [ - { - "id": "14480", - "instrument": "EUR_USD", - "price": "1.06345", - "openTime": "2022-12-22T08:57:10.459593310Z", - "initialUnits": "100", - "initialMarginRequired": "2.9226", - "state": "OPEN", - "currentUnits": "100", - "realizedPL": "0.0000", - "financing": "0.0000", - "dividendAdjustment": "0.0000", - "unrealizedPL": "-0.0158", - "marginUsed": "2.9228", - } - ], - "lastTransactionID": "14480", -} +class SideCarOrder(BaseModel): + id: str + createTime: str + state: str + price: str | None + timeInForce: str + gtdTime: str | None + clientExtensions: dict | None + tradeID: str + clientTradeID: str | None + type: str + time: str | None + priceBound: str | None + positionFill: str | None + reason: str | None + orderFillTransactionID: str | None + tradeOpenedID: str | None + tradeReducedID: str | None + tradeClosedIDs: list[str] | None + cancellingTransactionID: str | None + replacesOrderID: str | None + replacedByOrderID: str | None + + +class OpenTradesTrade(BaseModel): + id: str + instrument: str + price: str + openTime: str + initialUnits: str + initialMarginRequired: str + state: str + currentUnits: str + realizedPL: str + financing: str + dividendAdjustment: str + unrealizedPL: str + marginUsed: str + takeProfitOrder: SideCarOrder | None + stopLossOrder: SideCarOrder | None + trailingStopLossOrder: SideCarOrder | None + trailingStopValue: dict | None class OpenTrades(BaseModel): - trades: list[Trade] + trades: list[OpenTradesTrade] lastTransactionID: str @@ -530,8 +512,8 @@ OpenTradesSchema = { "trades", [ { - "id": "tradeID", - "instrument": "instrument", + "id": "id", + "symbol": "instrument", "price": "price", "openTime": "openTime", "initialUnits": "initialUnits", @@ -546,6 +528,7 @@ OpenTradesSchema = { "takeProfitOrder": "takeProfitOrder", "stopLossOrder": "stopLossOrder", "trailingStopLossOrder": "trailingStopLossOrder", + "trailingStopValue": "trailingStopValue", } ], ), @@ -560,6 +543,48 @@ class HomeConversionFactors(BaseModel): lossBaseHome: str +class LongPositionCloseout(BaseModel): + instrument: str + units: str + + +class OrderTransaction(BaseModel): + id: str + accountID: str + userID: int + batchID: str + requestID: str + time: str + type: str + instrument: str | None + units: str | None + timeInForce: str | None + positionFill: str | None + reason: str + longPositionCloseout: LongPositionCloseout | None + longOrderFillTransaction: dict | None + + +class OrderCreate(BaseModel): + orderCreateTransaction: OrderTransaction + + +OrderCreateSchema = { + "id": "orderCreateTransaction.id", + "accountID": "orderCreateTransaction.accountID", + "userID": "orderCreateTransaction.userID", + "batchID": "orderCreateTransaction.batchID", + "requestID": "orderCreateTransaction.requestID", + "time": "orderCreateTransaction.time", + "type": "orderCreateTransaction.type", + "symbol": "orderCreateTransaction.instrument", + "units": "orderCreateTransaction.units", + "timeInForce": "orderCreateTransaction.timeInForce", + "positionFill": "orderCreateTransaction.positionFill", + "reason": "orderCreateTransaction.reason", +} + + class LongOrderFillTransaction(BaseModel): id: str accountID: str @@ -592,23 +617,6 @@ class LongOrderFillTransaction(BaseModel): longPositionCloseout: LongPositionCloseout -class OrderTransaction(BaseModel): - id: str - accountID: str - userID: int - batchID: str - requestID: str - time: str - type: str - instrument: str | None - units: str | None - timeInForce: str | None - positionFill: str | None - reason: str - longPositionCloseout: LongPositionCloseout | None - longOrderFillTransaction: dict | None - - class PositionClose(BaseModel): longOrderCreateTransaction: OrderTransaction | None longOrderFillTransaction: OrderTransaction | None @@ -678,3 +686,25 @@ TradeDetailsSchema = { "clientExtensions": "trade.clientExtensions", "lastTransactionID": "lastTransactionID", } + + +class TradeClose(BaseModel): + orderCreateTransaction: OrderTransaction + + +TradeCloseSchema = { + "id": "orderCreateTransaction.id", + "accountID": "orderCreateTransaction.accountID", + "userID": "orderCreateTransaction.userID", + "batchID": "orderCreateTransaction.batchID", + "requestID": "orderCreateTransaction.requestID", + "time": "orderCreateTransaction.time", + "type": "orderCreateTransaction.type", + "symbol": "orderCreateTransaction.instrument", + "units": "orderCreateTransaction.units", + "timeInForce": "orderCreateTransaction.timeInForce", + "positionFill": "orderCreateTransaction.positionFill", + "reason": "orderCreateTransaction.reason", + "longPositionCloseout": "orderCreateTransaction.longPositionCloseout", + "longOrderFillTransaction": "orderCreateTransaction.longOrderFillTransaction", +}