Administrator
2024-09-23 99cc81fca997dc7b73c5ac00ad47a60cf590d0ff
servers/huaxin_trade_server.py
@@ -44,7 +44,7 @@
    TargetCodePlateKeyManager
from third_data.history_k_data_util import JueJinApi
from trade import trade_manager, l2_trade_util, \
    trade_data_manager, trade_constant
    trade_data_manager, trade_constant, radical_buy_strategy
from trade.huaxin import huaxin_trade_api as trade_api, huaxin_trade_api, huaxin_trade_data_update, \
    huaxin_trade_record_manager, huaxin_sell_util
@@ -766,11 +766,11 @@
        except Exception as e:
            logger_debug.exception(e)
    def OnLimitUpActiveBuy(self, code, huaxin_timestamp, buy_no):
    def OnLimitUpActiveBuy(self, code, transaction_datas):
        try:
            # 判断最近60个交易日有无涨停
            # 判断昨日是否涨停过
            async_log_util.info(logger_l2_radical_buy, f"涨停主动买:{code}-{huaxin_timestamp}")
            async_log_util.info(logger_l2_radical_buy, f"涨停主动买:{code}-{transaction_datas[-1]}")
            deal_codes = RadicalBuyDealCodesManager().get_deal_codes()
            if len(deal_codes) >= 2:
                async_log_util.info(logger_l2_radical_buy, f"成交代码个数大于2个:{code}-{deal_codes}")
@@ -824,61 +824,37 @@
                    except Exception as e:
                        logger_debug.exception(e)
                    # 有可以扫的板块
                    # 判断最近的主动买占了总买额的多少
                    refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, l2_huaxin_util.convert_time(
                        huaxin_timestamp))
                    async_log_util.info(logger_l2_radical_buy, f"参考总卖额:{code}-{refer_sell_data}")
                    if refer_sell_data:
                        # 如果总卖额大于500w,成交到一半就直接扫
                        if refer_sell_data[1] >= 500 * 1e4:
                            THRESH_HOLD_VOLUME = refer_sell_data[2]
                            if refer_sell_data[4] and len(refer_sell_data[4]) < 10:
                                # 小于10挡,最后一档才是涨停价
                                if refer_sell_data[4][-1][1] > 0:
                                    THRESH_HOLD_VOLUME = refer_sell_data[4][-1][1]
                            refer_sell_time = refer_sell_data[0]
                            # 获取最近的主动买成交量
                            limit_up_deal_infos = HuaXinSellOrderStatisticManager.get_latest_6s_active_buy_deal_volumes(
                                code)
                            async_log_util.info(logger_l2_radical_buy, f"最近涨停主动买成交:{code}-{limit_up_deal_infos}")
                            # 总卖额要大于100w
                            deal_volume = 0
                            for i in range(0, len(limit_up_deal_infos)):
                                # >=统计到的总卖
                                if int(refer_sell_time.replace(":", "")) > int(
                                        limit_up_deal_infos[i][0].replace(":", "")):
                                    break
                                deal_volume += limit_up_deal_infos[i][1]
                            async_log_util.info(logger_l2_radical_buy, f"成交量:{deal_volume}/{THRESH_HOLD_VOLUME}")
                            deal_rate = round(deal_volume / THRESH_HOLD_VOLUME, 2)
                            if deal_rate > 0.5:
                                # 判断参考时间之后是否有大单成交
                                # big_deal_money_list = BigOrderDealManager().get_total_buy_money_list(code)
                                # 成交比例大于50%
                                total_datas = l2_data_util.local_today_datas.get(code)
                                buy_single_index, buy_exec_index = total_datas[-1]["index"], total_datas[-1]["index"]
                                buy_volume_rate = L2TradeDataProcessor.volume_rate_info[code][0]
                                sell_info = (refer_sell_data[0], refer_sell_data[0])
                                threshold_money = 0
                                order_begin_pos_info = OrderBeginPosInfo(buy_single_index=buy_single_index,
                                                                         buy_exec_index=buy_exec_index,
                                                                         buy_compute_index=buy_exec_index,
                                                                         num=deal_volume // 100, count=1,
                                                                         max_num_set=set(),
                                                                         buy_volume_rate=buy_volume_rate,
                                                                         mode=OrderBeginPosInfo.MODE_RADICAL,
                                                                         mode_desc="激进买入",
                                                                         sell_info=sell_info,
                                                                         threshold_money=threshold_money)
                                L2TradeDataProcessor.save_order_begin_data(code, order_begin_pos_info)
                                L2TradeDataProcessor.start_buy(code, total_datas[-1], total_datas[-1]["index"], True)
                    # -----根据成交比例判断是否可买------
                    result_by_volume = radical_buy_strategy.limit_up_active_buy_deal(code, transaction_datas)
                    if result_by_volume[0] != radical_buy_strategy.BUY_MODE_NONE:
                        if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT:
                            refer_sell_data = L2MarketSellManager().get_refer_sell_data(code,
                                                                                        l2_huaxin_util.convert_time(
                                                                                            transaction_datas[-1][3]))
                            total_datas = l2_data_util.local_today_datas.get(code)
                            buy_single_index, buy_exec_index = total_datas[-1]["index"], total_datas[-1]["index"]
                            buy_volume_rate = L2TradeDataProcessor.volume_rate_info[code][0]
                            sell_info = (0, 0)
                            if refer_sell_data:
                                sell_info = (refer_sell_data[0],refer_sell_data[1])
                            threshold_money = 0
                            order_begin_pos_info = OrderBeginPosInfo(buy_single_index=buy_single_index,
                                                                     buy_exec_index=buy_exec_index,
                                                                     buy_compute_index=buy_exec_index,
                                                                     num=1, count=1,
                                                                     max_num_set=set(),
                                                                     buy_volume_rate=buy_volume_rate,
                                                                     mode=OrderBeginPosInfo.MODE_RADICAL,
                                                                     mode_desc="激进买入",
                                                                     sell_info=sell_info,
                                                                     threshold_money=threshold_money)
                            L2TradeDataProcessor.save_order_begin_data(code, order_begin_pos_info)
                            L2TradeDataProcessor.start_buy(code, total_datas[-1], total_datas[-1]["index"], True)
                        else:
                            # L2委托有大单就扫
                            # 记录买入信号, 3s内有效
                            RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict[code] = (
                                time.time() + 3, buy_no)
                                time.time() + 3, transaction_datas[-1][6])
                    else:
                        async_log_util.info(logger_l2_radical_buy, f"不能下单:{code}-{result_by_volume}")
                else:
                    volume_rate = code_volumn_manager.get_volume_rate(code)
                    async_log_util.info(logger_l2_radical_buy, f"没有可扫入的板块:{code},量比:{volume_rate}")