from __future__ import annotations from typing import Any OP_BUY = 23 OP_SELL = 24 ORDER_TYPE_VOLUME = 1101 PR_TYPE_LATEST = 5 QUICK_TRADE_NOW = 2 ORDER_SIDE_BY_OFFSET = {"23": "BUY", "24": "SELL", "48": "BUY", "49": "SELL"} class TradeMixin: def passorder( self, op_type: int, stock_code: str, volume: int, order_type: int = ORDER_TYPE_VOLUME, pr_type: int = PR_TYPE_LATEST, price: float = -1, quick_trade: int = QUICK_TRADE_NOW, strategy_name: str = "", order_id: str = "", ) -> dict[str, Any]: return self._post_json( "/api/trade/passorder", { "opType": op_type, "orderType": order_type, "stockCode": stock_code, "prType": pr_type, "price": price, "volume": volume, "quickTrade": quick_trade, "strategyName": strategy_name, "orderId": order_id, }, ) def passorder_latest(self, side: int, stock_code: str, volume: int) -> dict[str, Any]: return self.passorder(side, stock_code, volume) def passorder_latest_tagged( self, side: int, stock_code: str, volume: int, strategy_name: str, order_id: str, ) -> dict[str, Any]: return self.passorder( side, stock_code, volume, strategy_name=strategy_name, order_id=order_id, ) def cancel_by_id(self, order_id: str) -> dict[str, Any]: return self._post_json("/api/trade/cancel_by_id", {"order_id": order_id})