Administrator
2022-09-23 21d753614ea7bbe936b8560cbf466c4e438821b2
trade_manager.py
@@ -1,13 +1,15 @@
# 交易管理器
import datetime
import json
import time
import gpcode_manager
import l2_code_operate
import mongo_data
import tool
from trade_data_manager import TradeBuyDataManager
from trade_gui import THSGuiTrade, async_call
import time as t
from l2_code_operate import *
import l2_data_manager
from log import *
@@ -168,7 +170,7 @@
# 开始交易
def start_buy(code, capture_timestamp,last_data,last_data_index):
def start_buy(code, capture_timestamp, last_data, last_data_index):
    # 是否禁止交易
    if is_in_forbidden_trade_codes(code):
        raise Exception("禁止交易")
@@ -188,15 +190,15 @@
    print("开始买入")
    logger_trade.info("{}开始买入".format(code))
    set_trade_state(code, TRADE_STATE_BUY_PLACE_ORDER)
    __buy(code, price, trade_state, capture_timestamp,last_data,last_data_index)
    __buy(code, price, trade_state, capture_timestamp, last_data, last_data_index)
# 购买
@async_call
def __buy(code, price, trade_state, capture_timestamp, last_data,last_data_index):
def __buy(code, price, trade_state, capture_timestamp, last_data, last_data_index):
    try:
        guiTrade.buy(code, price)
        __place_order_success(code, capture_timestamp, last_data,last_data_index)
        __place_order_success(code, capture_timestamp, last_data, last_data_index)
    except Exception as e:
        __place_order_fail(code, trade_state)
        logger_trade.error("{}买入异常{}".format(code, str(e)))
@@ -204,14 +206,14 @@
# 下单成功
def __place_order_success(code, capture_timestamp, last_data,last_data_index):
def __place_order_success(code, capture_timestamp, last_data, last_data_index):
    # 买入结束点
    use_time = round(time.time() * 1000) - capture_timestamp
    logger_trade.info("{}-从截图到下单成功总费时:{}".format(code, use_time))
    # 下单成功,加入固定代码库
    l2_data_manager.add_to_l2_fixed_codes(code)
    # 记录下单的那一帧图片的截图时间与交易用时
    TradeBuyDataManager.set_buy_position_info(code, capture_timestamp, use_time, last_data,last_data_index)
    TradeBuyDataManager.set_buy_position_info(code, capture_timestamp, use_time, last_data, last_data_index)
    print("买入结束")
    logger_trade.info("{}买入成功".format(code))
@@ -263,7 +265,13 @@
            continue
        if code is not None and int(data["type"]) == 0:
            forbidden_trade(code)
            set_trade_state(code, TRADE_STATE_BUY_SUCCESS)
            state = get_trade_state(code)
            if state != TRADE_STATE_BUY_SUCCESS:
                set_trade_state(code, TRADE_STATE_BUY_SUCCESS)
                # 删除买撤记录的临时信息
                l2_data_manager.TradePointManager.delete_compute_info_for_cancel_buy(code)
                l2_data_manager.TradePointManager.delete_buy_cancel_point(code)
                l2_data_manager.TradePointManager.delete_buy_point(code)
# 处理委托成功数据
@@ -293,20 +301,21 @@
def __clear_data(code):
    redis_l2 = redis_manager.RedisManager(1).getRedis()
    redis_l2.delete("buy_compute_index-{}".format(code))
    redis_l2.delete("buy_compute_num-{}".format(code))
    keys = redis_l2.keys("l2-{}-*".format(code))
    keys = redis_l2.keys("*{}*".format(code))
    for k in keys:
        redis_l2.delete(k)
    redis_l2.delete("l2-data-latest-{}".format(code))
    redis_l2.delete("l2-maxindex-{}".format(code))
    redis_l2.delete("latest-l2-count-{}".format(code))
    redis_trade = redis_manager.RedisManager(2).getRedis()
    redis_trade.delete("trade-state-{}".format(code))
    redis_info = redis_manager.RedisManager(0).getRedis()
    keys = redis_info.keys("*{}*".format(code))
    for k in keys:
        if k.find("pre") is None or k.find("pre") < 0:
            redis_info.delete(k)
if __name__ == "__main__":
    # time_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    # print(time_str)
    __clear_data("000503")
    __clear_data("000068")