From d5d2288ba84f2774935b2f866ca6faa8da0aac66 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 07 七月 2025 18:38:05 +0800
Subject: [PATCH] bug修复/策略完善

---
 api/outside_api_callback.py |   66 ++++++++++++++++++++++++++++++--
 1 files changed, 61 insertions(+), 5 deletions(-)

diff --git a/api/outside_api_callback.py b/api/outside_api_callback.py
index e43b9f4..0fa8a74 100644
--- a/api/outside_api_callback.py
+++ b/api/outside_api_callback.py
@@ -9,16 +9,19 @@
 from code_attribute import gpcode_manager
 from huaxin_client import l1_subscript_codes_manager
 from huaxin_client.client_network import SendResponseSkManager
+from log_module import async_log_util
 from strategy import strategy_params_settings, env_info, strategy_manager
 from strategy.env_info import RealTimeEnvInfo
+from strategy.place_order_queue_manager import PlaceOrderRecordManager
 from strategy.strategy_manager import PlateWhiteListManager
 from strategy.strategy_params_settings import StrategyParamsSettingsManager, StrategyParamsSettings
+from strategy.strategy_variable import StockVariables
 from strategy.strategy_variable_factory import DataLoader
 from third_data.history_k_data_manager import TradeDateManager
 from third_data.kpl_block_manager import KPLCodeJXBlocksManager
 from trade import trade_record_log_util
-from trade.trade_manager import TradeStateManager
-from utils import socket_util, middle_api_protocol, tool
+from trade.trade_manager import TradeStateManager, DealCodesManager, logger_trade
+from utils import socket_util, middle_api_protocol, tool, huaxin_util
 
 OPERRATE_SET = 1  # 璁剧疆
 OPERRATE_DELETE = 2  # 鍒犻櫎
@@ -220,9 +223,62 @@
             except:
                 plates = []
             result_json = {"code": 0, "data": plates}
-
-
-
         elif ctype == 'plate_white_list':
             result_json = self.__on_plate_white_list(data)
+        elif ctype == 'get_not_process_place_order_record':
+            # 鑾峰彇鏈鐞嗙殑涓嬪崟璁板綍
+            record = PlaceOrderRecordManager(tool.get_now_date_str()).get_not_process_record()
+            if not record:
+                result_json = {"code": 1, "msg": '鏆傛棤璁板綍'}
+            else:
+                result_json = {"code": 0, "data": json.dumps(record)}
+        elif ctype == 'set_place_order_buy':
+            id_ = data.get("id")
+            place_order_record_manager = PlaceOrderRecordManager(tool.get_now_date_str())
+            #  (ID,浠g爜,鏉垮潡淇℃伅, 澶у崟淇℃伅, 鏃堕棿, 浠锋牸, 娑ㄥ箙)
+            record = place_order_record_manager.get_not_process_record_by_id(id_)
+            if not record:
+                result_json = {"code": 1, "msg": '璁板綍涓嶅瓨鍦�'}
+            else:
+
+                code = record[1]
+                sv: StockVariables = strategy_manager.low_suction_strtegy.stock_variables_dict.get(code)
+                if sv is None:
+                    result_json = {"code": 1, "msg": '浠g爜鍙橀噺瀵硅薄涓嶅瓨鍦�'}
+                else:
+                    place_order_record_manager.set_buy(record[0])
+                    # 鍙互涓嬪崟
+                    # 鍒ゆ柇鏄惁鍙互涔�
+                    order_ref = huaxin_util.create_order_ref()
+                    price = tool.get_buy_max_price(sv.褰撳墠浠�)
+                    volume = 100
+                    DealCodesManager().place_order(set(record[2].keys()), record[1], order_ref, price, volume)
+                    trade_record_log_util.add_place_order_log(code, trade_record_log_util.PlaceOrderInfo(code=code,
+                                                                                                         time_str=
+                                                                                                         record[4],
+                                                                                                         price=sv.褰撳墠浠�,
+                                                                                                         rate=round((
+                                                                                                                            sv.褰撳墠浠� - sv.鏄ㄦ棩鏀剁洏浠�) * 100 / sv.鏄ㄦ棩鏀剁洏浠�,
+                                                                                                                    2),
+                                                                                                         plates=record[
+                                                                                                             2].keys(),
+                                                                                                         plates_info=
+                                                                                                         record[2],
+                                                                                                         info=record[3]
+                                                                                                         ))
+                    async_log_util.info(logger_trade, f"{code}涓嬪崟锛屾澘鍧楋細{record[2].keys()}")
+        elif ctype == 'set_place_order_not_buy':
+            id_ = data.get("id")
+            place_order_record_manager = PlaceOrderRecordManager(tool.get_now_date_str())
+            #  (ID,浠g爜,鏉垮潡淇℃伅, 澶у崟淇℃伅, 鏃堕棿, 浠锋牸, 娑ㄥ箙)
+            record = place_order_record_manager.get_not_process_record_by_id(id_)
+            if not record:
+                result_json = {"code": 1, "msg": '璁板綍涓嶅瓨鍦�'}
+            else:
+                place_order_record_manager.set_not_buy(record[0], "鎵嬪姩椹冲洖")
+        elif ctype == 'add_black_list':
+            code = data.get("code")
+            gpcode_manager.BlackListCodeManager().add_code(code)
+            result_json = {"code": 0, "msg": '娣诲姞鎴愬姛'}
+
         self.send_response(result_json, client_id, request_id)

--
Gitblit v1.8.0