admin
2025-06-10 568c763084b926a6f2d632b7ac65b9ec8280752f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from utils import tool
 
 
def __get_transaction_datas():
    transaction_dict = {}
    with open("D:\\文件传输\\交易\\日志文件\\transaction.2024-01-12.log", mode="r") as f:
        lines = f.readlines()
        for line in lines:
            si = line.find("#")
            code = line[si - 6:si]
            value = line[si + 1:]
            if code not in transaction_dict:
                transaction_dict[code] = []
            transaction_dict[code].extend(eval(value))
    return transaction_dict
 
 
def __convert_time(time_str):
    time_str = str(time_str)
    if time_str.startswith("9"):
        time_str = f"0{time_str}"
    ms = "{:0<3}".format(time_str[6:])
    time_ = f"{time_str[0:2]}:{time_str[2:4]}:{time_str[4:6]}"
    return f"{time_}", int(ms)
 
import matplotlib.pyplot as plt
def show_data(datas):
 
 
    # 示例数据
    x = [t[0] for t in datas]  # x轴数据
    y = [t[1] for t in datas]  # x轴数据
 
    # 创建折线图
    plt.plot(x, y)
 
    # 添加标题和轴标签
    plt.title("折线图示例")
    plt.xlabel("X轴")
    plt.ylabel("Y轴")
 
    # 显示图形
    plt.show()
 
 
if __name__ == "__main__":
    transaction_datas_dict = __get_transaction_datas()
    for k in transaction_datas_dict:
        for d in transaction_datas_dict[k]:
            if d[2] > 10000:
                print(d)
 
if __name__ == "__main__1":
    code = "603663"
    transaction_datas_dict = __get_transaction_datas()
    datas = transaction_datas_dict.get(code)
    # 100ms计算一次速率
    start_time_ms = None
    total_num = 0
    show_datas=[]
    for d in datas:
        # 转为ms
        time_str, ms = __convert_time(d[3])
        time_as_ms = tool.get_time_as_second(time_str) * 1000 + ms
        if start_time_ms is None:
            start_time_ms = time_as_ms
 
        total_num += d[2]
        if time_as_ms - start_time_ms >= 100:
            ms = start_time_ms % 1000
            time_str = tool.time_seconds_format(start_time_ms // 1000)
            show_datas.append((f"{time_str}.{ms}",round(int(total_num / (time_as_ms - start_time_ms) * 100) * d[1]/10000, 2)))
            # print(f"{time_str}.{ms}", f"{round(int(total_num / (time_as_ms - start_time_ms) * 100) * d[1]/10000, 2)}w")
            # 结束计算
            total_num = 0
            start_time_ms = None
    show_data(show_datas)