Administrator
4 小时以前 bba825d6ddfaca81c18890a5c3d3a1f0a346fd42
servers/huaxin_trade_server.py
@@ -19,7 +19,7 @@
from code_attribute.code_l1_data_manager import L1DataManager
from code_attribute.gpcode_manager import CodePrePriceManager, CodesNameManager, \
    WantBuyCodesManager
from huaxin_client import l2_data_transform_protocol
from huaxin_client import l2_data_transform_protocol, l1_subscript_codes_manager
from huaxin_client.trade_transform_protocol import TradeResponse
from l2 import l2_data_manager_new, l2_log, code_price_manager, l2_data_util, transaction_progress, \
    l2_data_source_util, l2_data_log, data_callback
@@ -38,9 +38,11 @@
from log_module.log import hx_logger_contact_debug, hx_logger_trade_callback, \
    hx_logger_l2_orderdetail, hx_logger_l2_market_data, logger_l2_g_cancel, logger_debug, \
    logger_system, logger_trade, logger_l2_radical_buy, logger_l2_trade
from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util
from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util, \
    third_blocks_manager
from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData, \
    KPLPlateForbiddenManager
from third_data.history_k_data_manager import HistoryKDataManager
from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils
from trade import l2_trade_util, \
    trade_data_manager, trade_constant, buy_open_limit_up_strategy
@@ -57,7 +59,7 @@
    EveryLimitupBigDelegateOrderManager
from trade.sell.sell_rule_manager import TradeRuleManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from trade.trade_manager import CodesTradeStateManager
from trade.trade_manager import CodesTradeStateManager, CodesContinueBuyMoneyManager
from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util, \
    output_util
@@ -233,7 +235,7 @@
                                            code, gpcode_manager.get_limit_up_price_as_num(code))
                                        deal_big_order_info = (
                                            output_util.money_desc(th), output_util.money_desc(deal_big_money_info[1]),
                                            output_util.money_desc(deal_big_money_info[2]))
                                            output_util.money_desc(deal_big_money_info[2]), deal_big_money_info[0] <= 0)
                                    except:
                                        deal_big_order_info = None
                                    code_name = gpcode_manager.get_code_name(code)
@@ -270,7 +272,7 @@
                                            code, gpcode_manager.get_limit_up_price_as_num(code))
                                        deal_big_order_info = (
                                            output_util.money_desc(th), output_util.money_desc(deal_big_money_info[1]),
                                            output_util.money_desc(deal_big_money_info[2]))
                                            output_util.money_desc(deal_big_money_info[2]), deal_big_money_info[0] <= 0)
                                    except:
                                        deal_big_order_info = None
                                    code_name = gpcode_manager.get_code_name(code)
@@ -296,7 +298,7 @@
                            # if d["pre_close"] * tool.get_limit_up_rate(d["sec_id"]) > constant.MAX_SUBSCRIPT_CODE_PRICE:
                            #     continue
                            if (d["listed_date"] + datetime.timedelta(
                                    days=100)).timestamp() > datetime.datetime.now().timestamp():
                                    days=20)).timestamp() > datetime.datetime.now().timestamp():
                                continue
                            fdatas.append(d["sec_id"])
                            code_name_map[d["sec_id"]] = d["sec_name"]
@@ -629,6 +631,8 @@
            huaxin_trade_record_manager.DelegateRecordManager.add([data])
            if huaxin_util.is_deal(order_status):
                if int(str(data["direction"])) == huaxin_util.TORA_TSTP_D_Buy:
                    # 订单成交回调,移除续买金额+拉黑
                    CodesContinueBuyMoneyManager().remove_continue_buy_money(data["securityID"])
                    l2_trade_util.forbidden_trade(data["securityID"], msg="已成交", force=True)
                    if TradePointManager.get_latest_place_order_mode(
                            data["securityID"]) == OrderBeginPosInfo.MODE_RADICAL:
@@ -828,7 +832,7 @@
                        radical_buy_data_manager.ExcludeIndexComputeCodesManager.remove_code(code)
                        if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT and not tool.is_sh_code(code):
                        if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT:
                            # 上证不能根据成交买入
                            latest_deal_time = l2_huaxin_util.convert_time(transaction_datas[-1][3])
                            refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, latest_deal_time)
@@ -841,7 +845,8 @@
                            threshold_money = 0
                            every_deal_orders = EveryLimitupBigDealOrderManager.list_big_buy_deal_orders(code)
                            if every_deal_orders:
                                min_order_no = min(every_deal_orders, lambda x: x[0])[0]
                                min_order_no_info = min(every_deal_orders, key=lambda x: x[0])
                                min_order_no = min_order_no_info[0]
                            else:
                                min_order_no = transaction_datas[-1][6]
@@ -855,7 +860,7 @@
                                                                     mode_desc=f"扫入买入:{buy_blocks}, 大单成交最小订单号:{min_order_no}",
                                                                     sell_info=sell_info,
                                                                     threshold_money=threshold_money,
                                                                     min_order_no= min_order_no
                                                                     min_order_no=min_order_no
                                                                     )
                            L2TradeDataProcessor.save_order_begin_data(code, order_begin_pos_info)
                            buy_result = L2TradeDataProcessor.start_buy(code, total_datas[-1], total_datas[-1]["index"],
@@ -864,9 +869,9 @@
                                # 下单成功
                                radical_buy_data_manager.BlockPlaceOrderRecordManager().add_record(code, buy_blocks)
                                radical_buy_strategy.clear_data(code, force=True)
                                RDCancelBigNumComputer().clear_data(code)
                                # RDCancelBigNumComputer().clear_data(code)
                                # 大单成交足够
                                RadicalBuyDataManager().big_order_deal_enough(code)
                                # RadicalBuyDataManager().big_order_deal_enough(code)
                            return True
                        else:
                            if transaction_datas:
@@ -1088,6 +1093,20 @@
    logger_debug.info("更新昨日开盘啦实时涨停数据")
def __update_l1_target_codes():
    try:
        codes_sh, codes_sz = l1_subscript_codes_manager.request_l1_subscript_target_codes()
        if codes_sh and codes_sz:
            l1_subscript_codes_manager.save_codes(codes_sh, codes_sz)
        # 拉取三方板块
        codes = []
        codes.extend(codes_sh)
        codes.extend(codes_sz)
        third_blocks_manager.load_if_less(codes)
    except Exception as e:
        logger_debug.error(e)
# 做一些初始化的操作
def __init():
    def run_pending():
@@ -1100,13 +1119,16 @@
        # 更新K线
        schedule.every().day.at("08:00:01").do(history_k_data_manager.update_history_k_bars)
        schedule.every().day.at("08:30:01").do(history_k_data_manager.update_history_k_bars)
        schedule.every().day.at("09:00:01").do(history_k_data_manager.update_history_k_bars)
        schedule.every().day.at("09:02:01").do(lambda: history_k_data_manager.update_history_k_bars(force=True))
        # 更新账户信息
        schedule.every().day.at("09:00:01").do(huaxin_trade_data_update.add_money_list)
        schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list)
        schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list)
        # 更新昨日实时涨停数据
        schedule.every().day.at("07:58:00").do(__update_yesterday_kpl_limit_up_datas)
        # 更新代码
        schedule.every().day.at("15:58:00").do(__update_l1_target_codes)
        # 更新K线
        schedule.every().day.at("16:30:00").do(history_k_data_manager.update_history_k_bars)
        while True:
            try:
@@ -1148,6 +1170,10 @@
    # 初始化数据
    BuyMoneyAndCountSetting()
    gpcode_manager.WantBuyCodesManager()
    # 加载历史K线数据
    HistoryKDataManager().load_data()
    # 队列持久化
    threading.Thread(target=lambda: DelegateRecordManager().run(), daemon=True).start()
def run(queue_strategy_r_trade_w, queue_strategy_w_trade_r, queue_strategy_w_trade_r_for_read, trade_ipc_addr):