Administrator
2025-05-09 865ac6330e194767ab48bf77e9fcf9e1fbeb8850
bug修复
2个文件已修改
34 ■■■■■ 已修改文件
huaxin_client/l2_client_test.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2_data_parser.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_client_test.py
@@ -100,8 +100,12 @@
        if self.__latest_buy_order and self.__latest_buy_order[0] != item[0]:
            # 有可能是大单成交完成, 判断上个订单是否是大单
            last_buy_order = self.__big_accurate_buy_order_dict.get(self.__latest_buy_order[0])
            if last_buy_order[2] > 299e4:
                self.big_accurate_buy_order_queue.put_nowait(last_buy_order)
            try:
                if last_buy_order[2] > 299e4:
                    self.big_accurate_buy_order_queue.put_nowait(last_buy_order)
            except Exception as e:
                print("数据:", last_buy_order, item)
                raise e
            # 如果数据过多需要移除过长时间的小金额数据
            accurate_buy_count = len(self.__big_accurate_buy_order_dict.keys())
            if accurate_buy_count > 10000 and accurate_buy_count - self.__last_accurate_buy_count > 2000:
l2_data_parser.py
@@ -4,6 +4,8 @@
import csv
import os
import sys
import time
from db import mysql_data_delegate as mysql_data
from huaxin_client.l2_client_test import L2TransactionDataManager
from log_module import log_export
@@ -97,13 +99,16 @@
    @param day:
    @return:
    """
    print("开始处理数据", day, big_order_path, target_code)
    print("开始处理成交大单数据", day, big_order_path, target_code)
    l2_data_manager_dict = {}
    # 解析数据
    __start_time = time.time()
    transaction_data = parse_transaction(day)
    print("Transaction 读取完毕", len(transaction_data))
    print("Transaction 读取完毕", len(transaction_data), "耗时", int(time.time() - __start_time))
    __start_time = time.time()
    ngtstick_data = parse_ngtstick(day)
    print("NGTSTick 读取完毕", len(ngtstick_data))
    print("NGTSTick 读取完毕", len(ngtstick_data), "耗时", int(time.time() - __start_time))
    __start_time = time.time()
    big_order_list = []
    for index, row in enumerate(transaction_data):
        code = row[1]
@@ -130,7 +135,8 @@
            while not l2_data_manager.big_accurate_sell_order_queue.empty():
                data = l2_data_manager.big_accurate_sell_order_queue.get()
                big_order_list.append((code, 1, data))
    print("Transaction 处理完毕", len(big_order_list))
    print("Transaction 处理完毕", len(big_order_list), "耗时", int(time.time() - __start_time))
    __start_time = time.time()
    for index, row in enumerate(ngtstick_data):
        code = row[1]
@@ -162,7 +168,8 @@
            while not l2_data_manager.big_accurate_sell_order_queue.empty():
                data = l2_data_manager.big_accurate_sell_order_queue.get()
                big_order_list.append((code, 1, data))
    print("NGTSTick 处理完毕", len(big_order_list))
    print("NGTSTick 处理完毕", len(big_order_list), "耗时", int(time.time() - __start_time))
    __start_time = time.time()
    # 读取剩余的未读数据的代码
    for code in l2_data_manager_dict:
        l2_data_manager: L2TransactionDataManager = l2_data_manager_dict[code]
@@ -173,13 +180,14 @@
        while not l2_data_manager.big_accurate_sell_order_queue.empty():
            data = l2_data_manager.big_accurate_sell_order_queue.get()
            big_order_list.append((code, 1, data))
    print("开始写入本地文件:", len(big_order_list))
    print("开始写入本地文件:", len(big_order_list), "耗时", int(time.time() - __start_time))
    __start_time = time.time()
    # 开始写入本地文件
    with open(big_order_path, mode='w', encoding='utf-8') as f:
        for order in big_order_list:
            f.write(f"{order}")
    print("写入本地文件结束:")
    print("写入本地文件结束:", "耗时", int(time.time() - __start_time))
    __start_time = time.time()
def parse_market_data(day):
@@ -204,6 +212,7 @@
# 命令模式  /home/userzjj/app/gp-server/l2_data_parser Transaction  2025-05-08
# 解析大单: /home/userzjj/app/gp-server/l2_data_parser ExtractDealBigOrder 2025-05-08 /home/userzjj/temp.txt 000555
if __name__ == '__main__':
    if len(sys.argv) > 1:
        params = sys.argv[1:]
@@ -224,7 +233,6 @@
            parse_market_data(day)
        elif _type == 'ExtractDealBigOrder':
            # 提取所有成交的大单
            # TODO
            if len(params) > 2:
                save_path = params[2].strip()
            else: