feat dev6
This commit is contained in:
@@ -934,7 +934,8 @@ class TradeDetailDataHandler(BaseHandler):
|
||||
ret = safe_call(get_trade_detail_data, self.acc(), account, datatype)
|
||||
if ret is None:
|
||||
ret = []
|
||||
self.write(json.dumps({"data": ret}, separators=(',', ':'), ensure_ascii=False))
|
||||
result = [fixed_fields(obj) for obj in ret]
|
||||
self.write(json.dumps({"data": result}, separators=(',', ':'), ensure_ascii=False))
|
||||
|
||||
# get_value_by_order_id() - Get order or trade details by order ID
|
||||
class ValueByOrderIdHandler(BaseHandler):
|
||||
@@ -1080,7 +1081,28 @@ class HoldingHandler(BaseHandler):
|
||||
data = json.loads(self.request.body)
|
||||
account = data.get('account', 'stock')
|
||||
positions = safe_call(get_trade_detail_data, self.acc(), account, 'position') or []
|
||||
self.write(json.dumps({"data": positions}, separators=(',', ':'), ensure_ascii=False))
|
||||
holding = {}
|
||||
for position in positions:
|
||||
stock = position.m_strInstrumentID + '.' + position.m_strExchangeID
|
||||
holding[stock] = {
|
||||
'StockCode': stock,
|
||||
'StockName': position.m_strInstrumentName,
|
||||
'Direction': position.m_nDirection,
|
||||
'Volume': position.m_nVolume,
|
||||
'OpenPrice': position.m_dOpenPrice,
|
||||
'FloatProfit': position.m_dFloatProfit,
|
||||
'MarketValue': position.m_dMarketValue,
|
||||
'StockHolder': position.m_strStockHolder,
|
||||
'FrozenVolume': position.m_nFrozenVolume,
|
||||
'CanUseVolume': position.m_nCanUseVolume,
|
||||
'OnRoadVolume': position.m_nOnRoadVolume,
|
||||
'YesterdayVolume': position.m_nYesterdayVolume,
|
||||
'LastPrice': position.m_dLastPrice,
|
||||
'ProfitRate': position.m_dProfitRate,
|
||||
'FutureTradeType': position.m_eFutureTradeType,
|
||||
'ExpireDate': position.m_strExpireDate
|
||||
}
|
||||
self.write(json.dumps({"data": holding}, separators=(',', ':'), ensure_ascii=False))
|
||||
|
||||
# get_trade_detail_data('account') - Query account assets
|
||||
class AssetsHandler(BaseHandler):
|
||||
@@ -1094,28 +1116,6 @@ class AssetsHandler(BaseHandler):
|
||||
self.write(json.dumps({"total": round(info.m_dBalance, 2),"available": round(info.m_dAvailable, 2)}, separators=(',', ':'), ensure_ascii=False))
|
||||
|
||||
|
||||
# get_trade_detail_data('account') - Query total assets
|
||||
class TotalMoneyHandler(BaseHandler):
|
||||
def post(self):
|
||||
data = json.loads(self.request.body)
|
||||
account = data.get('account', 'stock')
|
||||
_data = safe_call(get_trade_detail_data, self.acc(), account, 'account')
|
||||
info = _data[0] if _data else None
|
||||
if not info:
|
||||
raise HTTPError(500, "Failed to get account data")
|
||||
self.write(json.dumps({"total_money": round(info.m_dBalance, 2)}, separators=(',', ':'), ensure_ascii=False))
|
||||
|
||||
# get_trade_detail_data('account') - Query available cash
|
||||
class AvailableMoneyHandler(BaseHandler):
|
||||
def post(self):
|
||||
data = json.loads(self.request.body)
|
||||
account = data.get('account', 'stock')
|
||||
_data = safe_call(get_trade_detail_data, self.acc(), account, 'account')
|
||||
info = _data[0] if _data else None
|
||||
if not info:
|
||||
raise HTTPError(500, "Failed to get account data")
|
||||
self.write(json.dumps({"available_money": round(info.m_dAvailable, 2)}, separators=(',', ':'), ensure_ascii=False))
|
||||
|
||||
# passorder(23) - Simplified buy order wrapper
|
||||
class BuyHandler(BaseHandler):
|
||||
def post(self):
|
||||
@@ -1275,8 +1275,6 @@ def make_app():
|
||||
|
||||
# Legacy compatibility routes
|
||||
(r"/api/holding", HoldingHandler),
|
||||
(r"/api/money/total", TotalMoneyHandler),
|
||||
(r"/api/money/available", AvailableMoneyHandler),
|
||||
(r"/api/order/buy", BuyHandler),
|
||||
(r"/api/order/sell", SellHandler),
|
||||
(r"/api/order/status", OrderStatusHandler),
|
||||
|
||||
Reference in New Issue
Block a user