From 4a96c448feb8caf33c8b252309b30cc8d87672e9 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 19 十一月 2024 10:52:59 +0800 Subject: [PATCH] L2测试 --- huaxin_client/l2_client_test.py | 75 +++++++++++++++++++++++++++---------- 1 files changed, 54 insertions(+), 21 deletions(-) diff --git a/huaxin_client/l2_client_test.py b/huaxin_client/l2_client_test.py index c821ae2..72caebb 100644 --- a/huaxin_client/l2_client_test.py +++ b/huaxin_client/l2_client_test.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import logging +import multiprocessing import queue import time import lev2mdapi @@ -44,6 +45,8 @@ self.__big_buy_orders = [] self.__latest_sell_order = None self.__big_sell_orders = [] + self.big_buy_order_queue = queue.Queue() + self.big_sell_order_queue = queue.Queue() def get_big_buy_orders(self): return self.__big_buy_orders @@ -61,25 +64,37 @@ # "ExecType": pTransaction['ExecType'].decode()} money = round(item[2] * item[3]) volume = item[3] + order_time = data["OrderTime"] if not self.__latest_buy_order: - self.__latest_buy_order = [item[0], 0, 0] + self.__latest_buy_order = [item[0], 0, 0, order_time] if self.__latest_buy_order[0] == item[0]: self.__latest_buy_order[1] += volume self.__latest_buy_order[2] += money + self.__latest_buy_order[3] = order_time else: if self.__latest_buy_order[2] > 1e6: - self.__big_buy_orders.append((self.__latest_buy_order[0],self.__latest_buy_order[1], self.__latest_buy_order[2])) - self.__latest_buy_order = [item[0],volume, money] + d = (self.__latest_buy_order[0], self.__latest_buy_order[1], self.__latest_buy_order[2], self.__latest_buy_order[3]) + self.__big_buy_orders.append(d) + self.big_buy_order_queue.put_nowait(d) + + self.__latest_buy_order = [item[0], volume, money, order_time] if not self.__latest_sell_order: - self.__latest_sell_order = [item[1], 0, 0] + self.__latest_sell_order = [item[1], 0, 0, order_time] if self.__latest_sell_order[0] == item[1]: self.__latest_sell_order[1] += volume self.__latest_sell_order[2] += money + self.__latest_sell_order[3] = order_time else: if self.__latest_sell_order[2] > 1e6: - self.__big_sell_orders.append((self.__latest_sell_order[0],self.__latest_sell_order[1], self.__latest_sell_order[2])) - self.__latest_sell_order = [item[1], volume, money] + d = (self.__latest_sell_order[0], self.__latest_sell_order[1], self.__latest_sell_order[2], self.__latest_sell_order[3]) + self.__big_sell_orders.append(d) + self.big_sell_order_queue.put_nowait(d) + self.__latest_sell_order = [item[1], volume, money, order_time] + + +# 涔板叆鐨勫ぇ鍗曡鍗曞彿 +l2_transaction_data_dict = {} class Lev2MdSpi(lev2mdapi.CTORATstpLev2MdSpi): @@ -90,9 +105,6 @@ subscripted_codes = set() # 浠g爜鐨勪笂娆℃垚浜ょ殑璁㈠崟鍞竴绱㈠紩 __last_transaction_keys_dict = {} - - # 涔板叆鐨勫ぇ鍗曡鍗曞彿 - __l2_transaction_data_dict = {} def __init__(self, api, codes): lev2mdapi.CTORATstpLev2MdSpi.__init__(self) @@ -209,9 +221,9 @@ "SubSeq": pTransaction['SubSeq'], "BuyNo": pTransaction['BuyNo'], "SellNo": pTransaction['SellNo'], "ExecType": pTransaction['ExecType'].decode()} - if item["SecurityID"] not in self.__l2_transaction_data_dict: - self.__l2_transaction_data_dict[item["SecurityID"]] = L2TransactionDataManager(item["SecurityID"]) - self.__l2_transaction_data_dict[item["SecurityID"]].add_transaction_data(item) + if item["SecurityID"] not in l2_transaction_data_dict: + l2_transaction_data_dict[item["SecurityID"]] = L2TransactionDataManager(item["SecurityID"]) + l2_transaction_data_dict[item["SecurityID"]].add_transaction_data(item) def OnRtnNGTSTick(self, pTick): """ @@ -228,9 +240,9 @@ "SubSeq": pTick['SubSeq'], "BuyNo": pTick['BuyNo'], "SellNo": pTick['SellNo'], "ExecType": '1'} - if item["SecurityID"] not in self.__l2_transaction_data_dict: - self.__l2_transaction_data_dict[item["SecurityID"]] = L2TransactionDataManager(item["SecurityID"]) - self.__l2_transaction_data_dict[item["SecurityID"]].add_transaction_data(item) + if item["SecurityID"] not in l2_transaction_data_dict: + l2_transaction_data_dict[item["SecurityID"]] = L2TransactionDataManager(item["SecurityID"]) + l2_transaction_data_dict[item["SecurityID"]].add_transaction_data(item) except Exception as e: logger_local_huaxin_l2_subscript.exception(e) @@ -269,17 +281,38 @@ api.Init() -def run(codes) -> None: +def run(codes, _queue: multiprocessing.Queue) -> None: try: log.close_print() + __init_l2(codes) logger_system.info(f"L2璁㈤槄鏈嶅姟鍚姩鎴愬姛:") except Exception as e: logger_system.exception(e) while True: - time.sleep(2) + try: + for code in l2_transaction_data_dict: + l2_transaction_data_manager: L2TransactionDataManager = l2_transaction_data_dict[code] + try: + while True: + result = l2_transaction_data_manager.big_buy_order_queue.get(block=False) + if result: + _queue.put_nowait((code, 0, result)) + else: + break + except: + pass + try: + while True: + result = l2_transaction_data_manager.big_sell_order_queue.get(block=False) + if result: + _queue.put_nowait((code, 1, result)) + else: + break + except: + pass + except: + pass + finally: + time.sleep(1) - -if __name__ == "__main__": - run({"000009", "601618"}) - input() -- Gitblit v1.8.0