Administrator
2024-12-02 06017f086996efc251a2367dae860507963ceb44
扫入修改
6个文件已修改
78 ■■■■■ 已修改文件
cancel_strategy/s_l_h_cancel_strategy.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/trade_client.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_strategy.py 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py
@@ -13,6 +13,7 @@
from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager, BigOrderDealManager
from log_module import async_log_util
from third_data import code_plate_key_manager
from trade.buy_radical import radical_buy_data_manager
from utils import tool
from l2.transaction_progress import TradeBuyQueue
@@ -568,15 +569,22 @@
    def get_cancel_rate(cls, code, buy_exec_time, is_up=False, is_l_down_recomputed=False, buy_mode = None):
        try:
            must_buy = cls.__MustBuyCodesManager.is_in_cache(code)
            if must_buy:
                if buy_mode == OrderBeginPosInfo.MODE_RADICAL:
                    # 扫入的化撤单比例调整为80%
            if buy_mode == OrderBeginPosInfo.MODE_RADICAL:
                if must_buy:
                    # 扫入加红
                    return constant.L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY, True
                else:
                    if is_up:
                        return constant.L_CANCEL_RATE_UP_WITH_MUST_BUY, True
                    else:
                        return constant.L_CANCEL_RATE_WITH_MUST_BUY, True
                    deal_big_order_info = radical_buy_data_manager.get_total_deal_big_order_info(code,
                                                                                                 gpcode_manager.get_limit_up_price_as_num(
                                                                                                     code))
                    if deal_big_order_info[1]/deal_big_order_info[2] > 0.8:
                        # 大单成交比例达到80%,半加红
                        return constant.L_CANCEL_RATE_WITH_HALF_MUST_BUY_FOR_REDICAL_BUY, False
            if must_buy:
                if is_up:
                    return constant.L_CANCEL_RATE_UP_WITH_MUST_BUY, True
                else:
                    return constant.L_CANCEL_RATE_WITH_MUST_BUY, True
        except Exception as e:
            async_log_util.error(logger_l2_l_cancel, str(e))
constant.py
@@ -138,7 +138,9 @@
L_CANCEL_RATE_WITH_MUST_BUY = 0.9  # 加红L后
L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY = 0.8  # 扫入加红
L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY = 0.95  # 扫入加红
L_CANCEL_RATE_WITH_HALF_MUST_BUY_FOR_REDICAL_BUY = 0.85  # 扫入半加红
# L上撤单比例
L_CANCEL_RATE_UP = 0.79  # L前
@@ -170,7 +172,7 @@
G_CANCEL_RATE_FOR_GOOD_MARKET = 0.59
# 华鑫L2的卡位数量
HUAXIN_L2_MAX_CODES_COUNT = 75
HUAXIN_L2_MAX_CODES_COUNT = 90
TRADE_WAY_HUAXIN = "huaxin"
TRADE_WAY_JUEJIN = "juejin"
huaxin_client/trade_client.py
@@ -554,6 +554,7 @@
            # 终端信息采集
            # UserProductInfo填写终端名称
            login_req.UserProductInfo = 'jiabei'
            login_req.DynamicPassword = 'rxoB195F'
            # 按照监管要求填写终端信息
            login_req.TerminalInfo = f'PC;IIP=NA;IPORT=NA;LIP={LOCAL_IP};MAC=5C6F69CC2B40;HD=004bc76004aff0882b9052ba0eb00506;@jiabei'
            # 以下内外网IP地址若不填则柜台系统自动采集,若填写则以终端填值为准报送
@@ -564,15 +565,15 @@
            TradeSimpleApi.req_id += 1
            ret = api.ReqUserLogin(login_req, TradeSimpleApi.req_id)
            if ret != 0:
                logger.info('ReqUserLogin fail, ret[%d]' % ret)
                logger_trade.info('ReqUserLogin fail, ret[%d]' % ret)
        else:
            logger.info('GetConnectionInfo fail, [%d] [%d] [%s]!!!' % (
            logger_trade.info('GetConnectionInfo fail, [%d] [%d] [%s]!!!' % (
                nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
    def OnRspUserLogin(self, pRspUserLoginField: "CTORATstpRspUserLoginField", pRspInfoField: "CTORATstpRspInfoField",
                       nRequestID: "int") -> "void":
        if pRspInfoField.ErrorID == 0:
            logger.info('Login success! [%d]' % nRequestID)
            logger_trade.info('Login success! [%d]' % nRequestID)
            self.__front_id = pRspUserLoginField.FrontID
            self.__session_id = pRspUserLoginField.SessionID
            TradeSimpleApi.set_login_info(self.__session_id, self.__front_id)
@@ -596,7 +597,7 @@
                TradeSimpleApi().get_money_account()
        else:
            logger.info('Login fail!!! [%d] [%d] [%s]'
            logger_trade.info('Login fail!!! [%d] [%d] [%s]'
                        % (nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
    def OnRspUserPasswordUpdate(self, pUserPasswordUpdateField: "CTORATstpUserPasswordUpdateField",
servers/huaxin_trade_server.py
@@ -470,14 +470,19 @@
        L2MarketSellManager().set_current_total_sell_data(code, time_str,
                                                          data["totalAskVolume"] * data["avgAskPrice"],
                                                          data["totalAskVolume"], sell_1_info, data.get("sell"))
        if data["sell"] and len(data["sell"]) > 1 and data["sell"][1][1] > 0:
            # 出现卖二
            radical_buy_strategy.clear_data(code, force=True)
        # 设置扫入数据
        RadicalCodeMarketInfoManager().set_market_info(code, time_str, round(float(limit_up_price), 2), data["buy"][0], sell_1_info)
        RadicalCodeMarketInfoManager().set_market_info(code, time_str, round(float(limit_up_price), 2), data["buy"][0],
                                                       sell_1_info)
        # 判断是否下单
        state = CodesTradeStateManager().get_trade_state_cache(code)
        if not trade_util.is_can_order_by_state(state):
            # 不处于可下单状态
            RadicalBuyDataManager().market_info_change(code)
    @classmethod
    def trading_order_canceled(cls, code, order_no):
@@ -827,7 +832,7 @@
                            if buy_result:
                                # 下单成功
                                radical_buy_data_manager.BlockPlaceOrderRecordManager().add_record(code, buy_blocks)
                                radical_buy_strategy.clear_data(code)
                                radical_buy_strategy.clear_data(code, force=True)
                                RDCancelBigNumComputer().clear_data(code)
                                # 大单成交足够
                                RadicalBuyDataManager().big_order_deal_enough(code)
trade/buy_radical/radical_buy_data_manager.py
@@ -182,7 +182,6 @@
        """
        if gpcode_manager.MustBuyCodesManager().is_in_cache(code):
            return
        cls.place_order_success(code)
        total_deal_big_order_result = get_total_deal_big_order_info(code,
                                                                    gpcode_manager.get_limit_up_price_as_num(code))
        if total_deal_big_order_result[0] <= 0:
@@ -1014,7 +1013,7 @@
    """
    总成交大单啊是否足够
    @param code:
    @return:(缺少的资金,总成交金额, 要求的大单)
    @return:(缺少的资金,总成交金额, 要求的大单金额)
    """
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT = round(
        code_volumn_manager.CodeVolumeManager().get_max_volume_in_5days(code) * limit_up_price / 1e8, 2)
trade/buy_radical/radical_buy_strategy.py
@@ -30,21 +30,34 @@
__latest_deal_active_buy_order = {}
def clear_data(code):
def clear_data(code, force=False):
    """
    清除数据:下单过后/开板后清除数据
    @param force: 是否强制清除
    @param code:
    @return:
    """
    if code in __deal_active_buy_total_money:
        __deal_active_buy_total_money.pop(code)
        # async_log_util.info(logger_l2_radical_buy, f"{code}-清除扫入数据")
    if code in __latest_deal_active_buy_order:
        __latest_deal_active_buy_order.pop(code)
    # 清除L2下单信号
    if code in RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict:
        RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.pop(code)
    if not force:
        # 非强制清除数据要看大单成交是否足够
        big_deal_info = radical_buy_data_manager.get_total_deal_big_order_info(code,
                                                                               gpcode_manager.get_limit_up_price_as_num(
                                                                                   code))
        if big_deal_info[0] > 0:
            # 大单不够
            force = True
    if force:
        if __deal_active_buy_total_money.get(code):
            async_log_util.info(logger_l2_radical_buy, f"清除涨停卖成交数据")
        # 强制清除数据
        if code in __deal_active_buy_total_money:
            __deal_active_buy_total_money.pop(code)
        # 清除L2下单信号
        if code in RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict:
            RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict.pop(code)
def process_limit_up_active_buy_deal(code, transaction_datas):