From 287c506725b2d970f721f80169f83c2418cb0991 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 04 六月 2025 18:39:02 +0800
Subject: [PATCH] 添加新版低吸中间服务器

---
 utils/hosting_api_util.py |  143 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 128 insertions(+), 15 deletions(-)

diff --git a/utils/hosting_api_util.py b/utils/hosting_api_util.py
index 0565187..8ddf2ed 100644
--- a/utils/hosting_api_util.py
+++ b/utils/hosting_api_util.py
@@ -24,6 +24,7 @@
 CODE_LIST_WANT = "want"
 CODE_LIST_PAUSE_BUY = "pause_buy"
 CODE_LIST_MUST_BUY = "must_buy"
+CODE_LIST_GREEN = "green"
 # 绫诲瀷
 API_TYPE_TRADE = "trade"  # 浜ゆ槗
 API_TYPE_TRADE_STATE = "trade_state"  # 浜ゆ槗鐘舵��
@@ -97,6 +98,12 @@
                     raise Exception(f"璇诲彇鍐呭瓒呮椂: request_id={request_id}")
         finally:
             pass
+    else:
+        try:
+            # 濡傛灉涓嶆槸闃诲璇锋眰闇�瑕侀噴鏀惧鎴风
+            ClientSocketManager.release_client(client[0])
+        except:
+            pass
 
     return None
 
@@ -131,13 +138,14 @@
 # blocking鏄惁闃诲杩涚▼
 def trade_order(direction, code, volume, price, price_type=2, blocking=True):
     print("瀹㈡埛绔�", ClientSocketManager.socket_client_dict)
-    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE,
-                                   {"type": API_TYPE_TRADE, "trade_type": 1,
-                                    "direction": direction,
-                                    "code": code,
-                                    "volume": volume,
-                                    "price_type": price_type,
-                                    "price": price, "sinfo": f"order_{code}_{round(time.time() * 1000)}"})
+    request_id, client = __request(
+        ClientSocketManager.CLIENT_TYPE_TRADE if direction == 1 else ClientSocketManager.CLIENT_TYPE_TRADE_SELL,
+        {"type": API_TYPE_TRADE, "trade_type": 1,
+         "direction": direction,
+         "code": code,
+         "volume": volume,
+         "price_type": price_type,
+         "price": price, "sinfo": f"order_{code}_{round(time.time() * 1000)}"})
 
     return __read_response(client, request_id, blocking)
 
@@ -229,8 +237,8 @@
 
 
 #  鍒锋柊浜ゆ槗鏁版嵁
-def refresh_trade_data(type, blocking=True):
-    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_COMMON,
+def refresh_trade_data(type, blocking=True, client_type=ClientSocketManager.CLIENT_TYPE_COMMON):
+    request_id, client = __request(client_type,
                                    {"type": API_TYPE_REFRESH_TRADE_DATA, "ctype": type,
                                     "sinfo": f"cb_{API_TYPE_REFRESH_TRADE_DATA}_{round(time.time() * 1000)}"})
     return __read_response(client, request_id, blocking)
@@ -310,7 +318,7 @@
 
 # 淇濆瓨姝e湪杩愯鐨勬暟鎹�
 def sell_rule(operate, data={}, blocking=True):
-    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_COMMON,
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_SELL,
                                    {"type": API_TYPE_SELL_RULE, "operate": operate, "data": data,
                                     "sinfo": f"cb_{API_TYPE_SELL_RULE}_{round(time.time() * 1000)}"})
     return __read_response(client, request_id, blocking, timeout=10)
@@ -318,22 +326,127 @@
 
 # 鑾峰彇浠g爜鎸佷粨淇℃伅
 def get_code_position_info(code, blocking=True):
-    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE,
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_SELL,
                                    {"type": API_TYPE_GET_CODE_POSITION_INFO, "code": code,
                                     "sinfo": f"cb_{API_TYPE_GET_CODE_POSITION_INFO}_{round(time.time() * 1000)}"})
     return __read_response(client, request_id, blocking)
 
 
-def common_request(params={}, blocking=True):
+def common_request(params={}, blocking=True, client_type=ClientSocketManager.CLIENT_TYPE_COMMON):
     data = {"type": API_TYPE_COMMON_REQUEST,
             "sinfo": f"cb_{API_TYPE_COMMON_REQUEST}_{round(time.time() * 1000)}"}
     if params:
         for k in params:
             data[k] = params[k]
-    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_COMMON, data)
+    request_id, client = __request(client_type, data)
+    return __read_response(client, request_id, blocking, timeout=10)
+
+
+###############鍙浆鍊�#################
+def trade_order_for_cb(direction, code, volume, price, price_type=2, blocking=True):
+    """
+    浜ゆ槗
+    :param direction: 1-涔� 2-鍗�
+    :param code: 浠g爜
+    :param volume: 閲�
+    :param price: 浠锋牸
+    :param price_type: 浠锋牸绫诲瀷
+    :param blocking: 鏄惁闃诲
+    :return:
+    """
+    request_id, client = __request(
+        ClientSocketManager.CLIENT_TYPE_TRADE_CB,
+        {"type": API_TYPE_TRADE, "trade_type": 1,
+         "direction": direction,
+         "code": code,
+         "volume": volume,
+         "price_type": price_type,
+         "price": price, "sinfo": f"order_{code}_{round(time.time() * 1000)}"})
+
+    return __read_response(client, request_id, blocking)
+
+
+def get_position_for_cb(code=None, blocking=True):
+    """
+    鑾峰彇鎸佷粨
+    :param code:
+    :param blocking:
+    :return:
+    """
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_CB,
+                                   {"type": API_TYPE_GET_CODE_POSITION_INFO, "code": code,
+                                    "sinfo": f"cb_{API_TYPE_GET_CODE_POSITION_INFO}_{round(time.time() * 1000)}"})
+    return __read_response(client, request_id, blocking)
+
+
+def refresh_trade_data_for_cb(refresh_type, blocking=True):
+    """
+    鍒锋柊浜ゆ槗鏁版嵁
+    :param refresh_type:
+    :param blocking:
+    :return:
+    """
+
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_CB,
+                                   {"type": API_TYPE_REFRESH_TRADE_DATA, "ctype": refresh_type,
+                                    "sinfo": f"cb_{API_TYPE_REFRESH_TRADE_DATA}_{round(time.time() * 1000)}"})
+    return __read_response(client, request_id, blocking)
+
+
+def get_account_money_for_cb(blocking=True):
+    """
+    鑾峰彇璐︽埛璧勯噾鎯呭喌
+    :param code:
+    :param blocking:
+    :return:
+    """
+    return common_request_for_cb({"ctype": "get_account_money"}, blocking)
+
+
+def refresh_trade_data_for_cb(type_, blocking=True):
+    """
+    鍒锋柊鍙浆鍊轰氦鏄撴暟鎹�
+    :param code:
+    :param blocking:
+    :return:
+    """
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_CB,
+                                   {"type": API_TYPE_REFRESH_TRADE_DATA, "ctype": type_,
+                                    "sinfo": f"cb_{API_TYPE_REFRESH_TRADE_DATA}_{round(time.time() * 1000)}"})
+    return __read_response(client, request_id, blocking)
+
+
+def common_request_for_cb(params, blocking=True):
+    """
+    閫氱敤璇锋眰
+    :param params:
+    :param blocking:
+    :return:
+    """
+    data = {"type": API_TYPE_COMMON_REQUEST,
+            "sinfo": f"cb_{API_TYPE_COMMON_REQUEST}_{round(time.time() * 1000)}"}
+    if params:
+        for k in params:
+            data[k] = params[k]
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_CB, data)
+    return __read_response(client, request_id, blocking, timeout=10)
+
+
+def common_request_for_low_suction(params, blocking=True):
+    """
+    閫氱敤璇锋眰
+    :param params:
+    :param blocking:
+    :return:
+    """
+    data = {"type": API_TYPE_COMMON_REQUEST,
+            "sinfo": f"cb_{API_TYPE_COMMON_REQUEST}_{round(time.time() * 1000)}"}
+    if params:
+        for k in params:
+            data[k] = params[k]
+    request_id, client = __request(ClientSocketManager.CLIENT_TYPE_TRADE_LOW_SUCTION, data)
     return __read_response(client, request_id, blocking, timeout=10)
 
 
 if __name__ == "__main__":
-    d = {"id": "123123"}
-    print(d.pop("id"))
+    pass

--
Gitblit v1.8.0