Administrator
2024-12-18 c316509ed6cdeda261871cbc6e5b9c45d5d52f02
买1量实时计算
3个文件已修改
46 ■■■■■ 已修改文件
huaxin_client/l2_data_manager.py 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_data_transform_protocol.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_strategy.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_data_manager.py
@@ -37,6 +37,7 @@
        self.upload_l2_data_task_dict = {}
        self.l2_order_codes = set()
        self.l2_transaction_codes = set()
        self.__real_time_buy1_data = {}
    # 过滤订单
    def __filter_order(self, item):
@@ -51,6 +52,16 @@
    # 添加委托详情
    def add_l2_order_detail(self, data, start_time=0, istransaction=False):
        code = data["SecurityID"]
        if code in self.__real_time_buy1_data:
            if self.__real_time_buy1_data[code][1] == data["Price"]:
                # 与买的价格一致
                if data["Side"] == '1':
                    if data["OrderStatus"] == 'D':
                        # 买撤
                        self.__real_time_buy1_data[code][3] -= data["Volume"]
                    else:
                        # 买
                        self.__real_time_buy1_data[code][3] += data["Volume"]
        q: collections.deque = self.temp_order_queue_dict.get(code)
        q.append((data['SecurityID'], data['Price'], data['Volume'], data['Side'], data['OrderType'], data['OrderTime'],
                  data['MainSeq'], data['SubSeq'], data['OrderNO'], data['OrderStatus'], time.time(), start_time))
@@ -58,6 +69,10 @@
    # 添加逐笔成交
    def add_transaction_detail(self, data):
        code = data["SecurityID"]
        if code in self.__real_time_buy1_data:
            if self.__real_time_buy1_data[code][1] == data["TradePrice"]:
                # 与买的价格一致
                self.__real_time_buy1_data[code][3] -= data["TradeVolume"]
        q: collections.deque = self.temp_transaction_queue_dict.get(code)
        q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
                  data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
@@ -65,6 +80,10 @@
    def add_market_data(self, data):
        code = data["securityID"]
        # [时间,买1价格,原始买1量,计算后的买1量]}
        self.__real_time_buy1_data[code] = [data["dataTimeStamp"], data["buy"][0][0], data["buy"][0][1],
                                            data["buy"][0][1]]
        self.data_callback_distribute_manager.get_distributed_callback(code).OnMarketData(code, [data])
    # 分配上传队列
@@ -83,7 +102,9 @@
            t1.start()
            t2 = threading.Thread(target=lambda: self.__run_upload_transaction_task(code), daemon=True)
            t2.start()
            self.upload_l2_data_task_dict[code] = (t1, t2)
            t3 = threading.Thread(target=lambda: self.__run_upload_real_time_buy1_task(code), daemon=True)
            t3.start()
            self.upload_l2_data_task_dict[code] = (t1, t2, t3)
        # 释放已经分配的队列
    def release_distributed_upload_queue(self, code):
@@ -169,6 +190,21 @@
            finally:
                pass
    # 处理实时买1数据
    def __run_upload_real_time_buy1_task(self, code):
        while True:
            try:
                if code in self.__real_time_buy1_data:
                    data = self.__real_time_buy1_data[code]
                    # 如果最新的买1是原来买1的1/2时开始上传
                    if data[2] > 0 and data[3] / data[2] <= 0.5:
                        self.data_callback_distribute_manager.get_distributed_callback(code).OnRealTimeBuy1Info(code,
                                                                                                                data)
            except:
                pass
            finally:
                time.sleep(0.1)
def add_target_code(code):
    target_codes.add(code)
huaxin_client/l2_data_transform_protocol.py
@@ -16,3 +16,6 @@
    def OnTradingOrderCancel(self, code, buy_no):
        pass
    def OnRealTimeBuy1Info(self, code, buy1_info):
        pass
trade/trade_strategy.py
@@ -560,6 +560,11 @@
            buy1 = d["buy"][0]
            L1DataProcessor.excute_sell_rule(code, buy1[1], buy1[0], "l2")
    def OnRealTimeBuy1Info(self, code, buy1_info):
        # buy1_info: [买1时间,买1价格, 原始买1量, 实时买1量]
        async_log_util.info(logger_debug, f"OnRealTimeBuy1Info:{code}-{buy1_info}")
        L1DataProcessor.excute_sell_rule(code, buy1_info[3], buy1_info[1], "l2")
# 做一些初始化的操作
def __init():