Administrator
2024-01-08 0acb55dbb2d251472f902b3bb721fd888ab9a31f
增加获取当前正在委托详情API/下单后立马移除红名单
5个文件已修改
76 ■■■■■ 已修改文件
code_attribute/gpcode_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_client.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_data_manager.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_server.py 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_result_manager.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/gpcode_manager.py
@@ -294,7 +294,7 @@
        return self.__pause_buy_codes_cache
# 必买单
# 必买单/红名单
class MustBuyCodesManager:
    __instance = None
    __db = 0
huaxin_client/l2_client.py
@@ -16,6 +16,7 @@
from huaxin_client.command_manager import L2ActionCallback
from huaxin_client.l2_data_manager import L2DataUploadManager
from log_module import log, async_log_util
from log_module.async_log_util import huaxin_l2_log
from log_module.log import logger_local_huaxin_l2_subscript, logger_system, logger_local_huaxin_l2_transaction, \
    logger_local_huaxin_g_cancel, logger_l2_codes_subscript
from utils import tool
@@ -193,8 +194,7 @@
            self.l2_data_upload_manager.set_order_fileter_condition(code, min_volume, limit_up_price,
                                                                    {volume, constant.SHADOW_ORDER_VOLUME},
                                                                    time.time() + 3)
            async_log_util.info(logger_local_huaxin_l2_subscript, f"设置下单量监听:{code}-{volume}")
            huaxin_l2_log.info(logger_local_huaxin_l2_subscript, f"设置下单量监听:{code}-{volume}")
    def OnFrontConnected(self):
        print("OnFrontConnected")
huaxin_client/l2_data_manager.py
@@ -12,7 +12,8 @@
# 活动时间
from huaxin_client.code_queue_distribute_manager import CodeQueueDistributeManager
from log_module import async_log_util
from log_module.log import logger_local_huaxin_l2_error, logger_system
from log_module.async_log_util import huaxin_l2_log
from log_module.log import logger_local_huaxin_l2_error, logger_system, logger_local_huaxin_l2_subscript
from utils import tool
import collections
@@ -48,9 +49,13 @@
            special_volumes = set()
        if code in self.filter_order_condition_dict and not special_volumes and not special_volumes_expire_time:
            self.filter_order_condition_dict[code][0] = (min_volume, limit_up_price)
            huaxin_l2_log.info(logger_local_huaxin_l2_subscript,
                               f"({code})常规过滤条件设置:{self.filter_order_condition_dict[code]}")
        else:
            self.filter_order_condition_dict[code] = [(min_volume, limit_up_price), special_volumes,
                                                      special_volumes_expire_time]
            huaxin_l2_log.info(logger_local_huaxin_l2_subscript,
                               f"({code})下单后过滤条件设置:{self.filter_order_condition_dict[code]}")
    # 过滤订单
    def __filter_order(self, item):
trade/huaxin/huaxin_trade_server.py
@@ -35,6 +35,7 @@
from l2.huaxin import huaxin_target_codes_manager
from l2.huaxin.huaxin_target_codes_manager import HuaXinL1TargetCodesManager
from l2.l2_data_listen_manager import L2DataListenManager
from l2.l2_data_manager import TradePointManager
from l2.l2_data_util import L2DataUtil
from l2.l2_sell_manager import L2MarketSellManager
from l2.l2_transaction_data_manager import HuaXinTransactionDatasProcessor
@@ -1146,6 +1147,65 @@
                    self.send_response({"code": 0, "data": datas}, client_id, request_id)
                except Exception as e:
                    self.send_response({"code": 1, "msg": str(e)}, client_id, request_id)
            elif ctype == "get_delegated_buy_code_infos":
                # 获取委托中的代码
                current_delegates = huaxin_trade_record_manager.DelegateRecordManager().list_current_delegates()
                fdatas = []
                for c in current_delegates:
                    if int(c["direction"]) != huaxin_util.TORA_TSTP_D_Buy:
                        continue
                    code = c["securityID"]
                    code_name = gpcode_manager.get_code_name(code)
                    # 获取下单位置信息
                    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
                    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)
                    # 下单位置
                    place_order_index = SecondCancelBigNumComputer().get_real_place_order_index_cache(code)
                    # 计算信号位置到真实下单位置的总买(不管是否已撤)
                    total_nums = 0
                    for i in range(order_begin_pos.buy_single_index, place_order_index):
                        data = total_datas[i]
                        val = data["val"]
                        if not L2DataUtil.is_limit_up_price_buy(val):
                            continue
                        total_nums += val["num"]
                    # 计算已成交/已撤单的数量
                    deal_or_cancel_num = 0
                    for i in range(order_begin_pos.buy_single_index, trade_index + 1):
                        data = total_datas[i]
                        val = data["val"]
                        if not L2DataUtil.is_limit_up_price_buy(val):
                            continue
                        deal_or_cancel_num += val["num"]
                    # 获取剩下的笔数
                    total_left_count = 0
                    total_left_num = 0
                    for i in range(trade_index + 1, place_order_index):
                        data = total_datas[i]
                        val = data["val"]
                        if not L2DataUtil.is_limit_up_price_buy(val):
                            continue
                        if val["num"] * float(val["price"]) < 5000:
                            continue
                        left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code,
                                                                                                                 i,
                                                                                                                 total_datas,
                                                                                                                 l2_data_util.local_today_canceled_buyno_map.get(
                                                                                                                     code))
                        if left_count > 0:
                            total_left_count += left_count
                            total_left_num += val["num"] * left_count
                    limit_up_price = gpcode_manager.get_limit_up_price(code)
                    fdata = {"code_info": (code, code_name), "total_num": total_nums, "finish_num": deal_or_cancel_num,
                             "left_count": total_left_count,
                             "left_money": output_util.money_desc(total_left_num * float(limit_up_price) * 100)}
                    fdatas.append(fdata)
                result = {"code": 0, "data": fdatas}
                self.send_response(result, client_id, request_id)
        except Exception as e:
            logging.exception(e)
trade/trade_result_manager.py
@@ -1,6 +1,7 @@
# 虚拟买成功
import logging
from code_attribute.gpcode_manager import MustBuyCodesManager
from l2 import l2_data_manager
from l2.cancel_buy_strategy import HourCancelBigNumComputer, SecondCancelBigNumComputer, \
    LCancelBigNumComputer, DCancelBigNumComputer, FastCancelBigNumComputer, GCancelBigNumComputer
@@ -91,6 +92,8 @@
        FastCancelBigNumComputer().set_trade_progress(code, order_begin_pos.buy_exec_index)
    # 下单成功
    PlaceOrderCountManager().place_order(code)
    # 下单成功之后移除红名单
    MustBuyCodesManager().remove_code(code)
# 真实撤成功