From 9e5b50a69a64aad3d396e1808344645ad2c25efc Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 17 十月 2024 17:32:18 +0800
Subject: [PATCH] 引入精选流出到买入策略

---
 api/outside_api_command_callback.py |   42 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/api/outside_api_command_callback.py b/api/outside_api_command_callback.py
index 6373874..86ca4f3 100644
--- a/api/outside_api_command_callback.py
+++ b/api/outside_api_command_callback.py
@@ -1,3 +1,4 @@
+import base64
 import concurrent.futures
 import copy
 import json
@@ -26,7 +27,7 @@
     l2_data_source_util, cancel_buy_strategy
 from l2.code_price_manager import Buy1PriceManager
 
-from l2.l2_data_manager import TradePointManager
+from l2.l2_data_manager import TradePointManager, OrderBeginPosInfo
 from l2.l2_data_util import L2DataUtil
 from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, BigOrderDealManager
 from log_module import async_log_util, log_export
@@ -45,7 +46,7 @@
 from third_data.third_blocks_manager import CodeThirdBlocksManager, SOURCE_TYPE_KPL, BlockMapManager
 from trade import trade_manager, l2_trade_util, trade_data_manager, trade_constant
 import l2_data_util as l2_data_util_old
-from trade.buy_money_count_setting import BuyMoneyAndCountSetting
+from trade.buy_money_count_setting import BuyMoneyAndCountSetting, RadicalBuyBlockCodeCountManager
 
 from trade.huaxin import huaxin_trade_api, huaxin_trade_data_update, \
     huaxin_trade_record_manager, huaxin_trade_order_processor, huaxin_sell_util
@@ -281,6 +282,8 @@
             code_list_type = data["code_list_type"]
             operate = data["operate"]
             code = data.get("code")
+            if code and not tool.is_can_buy_code(code):
+                raise Exception(f"涓嶆槸鍙互浜ゆ槗鐨勪唬鐮侊細{code}")
             fresult = {"code": 0}
             if code_list_type == outside_api_command_manager.CODE_LIST_WANT:
                 if operate == outside_api_command_manager.OPERRATE_SET:
@@ -442,6 +445,7 @@
             black = l2_trade_util.is_in_forbidden_trade_codes(code)
             pause_buy = gpcode_manager.PauseBuyCodesManager().is_in_cache(code)
             must_buy = gpcode_manager.MustBuyCodesManager().is_in_cache(code)
+            green = gpcode_manager.GreenListCodeManager().is_in_cache(code)
             desc_list = []
             if want:
                 desc_list.append("銆愭兂涔板崟銆�")
@@ -453,6 +457,8 @@
                 desc_list.append("銆愭殏涓嶄拱銆�")
             if must_buy:
                 desc_list.append("銆愮孩鍚嶅崟銆�")
+            if green:
+                desc_list.append("銆愮豢鍚嶅崟銆�")
 
             result = {"code": 0, "data": {"code_info": (code, code_name), "desc": "".join(desc_list)}}
             self.send_response(result, client_id, request_id)
@@ -871,7 +877,7 @@
                             # 鑾峰彇涓嬪崟浣嶇疆淇℃伅
                             order_begin_pos = TradePointManager().get_buy_compute_start_data_cache(code)
                             if order_begin_pos is None or order_begin_pos.buy_single_index is None:
-                                continue
+                                order_begin_pos = OrderBeginPosInfo(buy_single_index=0, buy_exec_index=0)
                             l2_data_util.load_l2_data(code)
                             total_datas = l2_data_util.local_today_datas.get(code)
                             trade_index, is_default = transaction_progress.TradeBuyQueue().get_traded_index(code)
@@ -879,6 +885,8 @@
                                 trade_index = 0
                             # 涓嬪崟浣嶇疆
                             place_order_index = SCancelBigNumComputer().get_real_place_order_index_cache(code)
+                            if place_order_index is None:
+                                place_order_index = 0
                             # 璁$畻淇″彿浣嶇疆鍒扮湡瀹炰笅鍗曚綅缃殑鎬讳拱锛堜笉绠℃槸鍚﹀凡鎾わ級
                             total_nums = 0
                             for i in range(order_begin_pos.buy_single_index, place_order_index):
@@ -1096,6 +1104,14 @@
                             except:
                                 pass
 
+                            try:
+                                if order_begin_pos:
+                                    fdata['mode'] = order_begin_pos.mode
+                                else:
+                                    fdata['mode'] = -1
+                            except:
+                                pass
+
                             fdatas.append(fdata)
                         except Exception as e:
                             logger_debug.exception(e)
@@ -1175,6 +1191,8 @@
                 kpl_data_manager.PullTask.repaire_pull_task()
                 # 淇鏁版嵁鏈嶅姟
                 server_util.repaire_data_server()
+                # 浠诲姟淇
+                huaxin_trade_data_update.repaire_task()
                 self.send_response({"code": 0, "data": {}}, client_id, request_id)
             elif ctype == "get_trade_queue":
                 code = data["code"]
@@ -1276,11 +1294,27 @@
                 data = {
                     "normal": BuyMoneyAndCountSetting().get_normal_buy_setting(),
                     "radical": BuyMoneyAndCountSetting().get_radical_buy_setting(),
-                    "moneys":constant.AVAILABLE_BUY_MONEYS
+                    "moneys": constant.AVAILABLE_BUY_MONEYS
                 }
                 self.send_response({"code": 0, "data": data, "msg": f""},
                                    client_id,
                                    request_id)
+            elif ctype == "set_radical_buy_block_count_setting":
+                # 璁剧疆涔板叆閲戦鍜屾暟閲�
+                data_str = data["data"]
+                data_str = base64.b64decode(data_str).decode('utf-8')
+                setting = json.loads(data_str)
+                RadicalBuyBlockCodeCountManager().set_block_code_count(setting)
+                self.send_response({"code": 0, "data": setting, "msg": f""},
+                                   client_id,
+                                   request_id)
+            elif ctype == "get_radical_buy_block_count_setting":
+                # 璁剧疆涔板叆閲戦鍜屾暟閲�
+                data = RadicalBuyBlockCodeCountManager().get_block_code_count_settings()
+                self.send_response({"code": 0, "data": data, "msg": f""},
+                                   client_id,
+                                   request_id)
+
         except Exception as e:
             logging.exception(e)
             logger_debug.exception(e)

--
Gitblit v1.8.0