Administrator
2023-01-02 ed9e2367eea9baa6c8bea82e0f81c209ffb2a56f
trade_manager.py
@@ -5,6 +5,7 @@
# 交易管理器
import time
import constant
import gpcode_manager
import l2_trade_util
import mysql_data
@@ -83,12 +84,24 @@
    time_str = datetime.datetime.now().strftime("%H:%M:%S")
    redis.setex("trade-success-latest-time", tool.get_expire(), time_str)
    mysqldb = mysql_data.Mysqldb()
    # 合并同一合同编号
    dict_ = {}
    for data in datas:
        trade_num = data["trade_num"]
        if trade_num not in dict_:
            dict_[trade_num] = data
        else:
            # 合并成交数量与成交金额
            dict_[trade_num]["num"] = int(dict_[trade_num]["num"]) + int(data["num"])
            dict_[trade_num]["money"] = round(float(dict_[trade_num]["money"]) + float(data["money"]), 3)
    for key in dict_:
        data= dict_[key]
        _time = data["time"]
        # 过滤错误数据
        if _time == "00:00:00":
            continue
        data["_id"] = data["trade_num"]
        data["_id"] = "{}_{}".format(day, data["trade_num"])
        data["day"] = day
        data["create_time"] = int(round(t.time() * 1000))
        counts = mysqldb.select_one("select count(*) from ths_trade_success_record where _id='{}'".format(data["_id"]))
@@ -186,6 +199,8 @@
# 购买
@tool.async_call
def __buy(code, price, trade_state, capture_timestamp, last_data, last_data_index):
    if constant.TEST:
        return
    try:
        guiTrade.buy(code, price)
        __place_order_success(code, capture_timestamp, last_data, last_data_index)
@@ -203,7 +218,8 @@
    # 下单成功,加入固定代码库
    l2_data_manager.add_to_l2_fixed_codes(code)
    # 记录下单的那一帧图片的截图时间与交易用时
    trade_data_manager.TradeBuyDataManager.set_buy_position_info(code, capture_timestamp, use_time, last_data, last_data_index)
    trade_data_manager.TradeBuyDataManager.set_buy_position_info(code, capture_timestamp, use_time, last_data,
                                                                 last_data_index)
    print("买入结束")
    logger_trade.info("{}买入成功".format(code))
@@ -267,7 +283,6 @@
                #TODO 完全成交后移除L2
# 处理委托成功数据
def process_trade_delegate_data(datas):
    if datas is None:
@@ -324,6 +339,5 @@
if __name__ == "__main__":
    # time_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    # print(time_str)
    __clear_data("002388")
    # __clear_big_data()
    pass