Administrator
2022-09-16 b7000cbf5e67e90abe53e96a4ea931afbf906e24
trade_manager.py
@@ -4,7 +4,8 @@
import l2_code_operate
import mongo_data
import tool
from trade_gui import THSGuiTrade
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
@@ -156,7 +157,7 @@
def forbidden_trade(code):
    add_to_forbidden_trade_codes(code)
    l2_data_manager.remove_from_l2_fixed_codes(code)
    l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code)
    l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code, "禁止代码交易")
# 是否在禁止交易代码中
@@ -167,7 +168,7 @@
# 开始交易
def start_buy(code):
def start_buy(code, capture_timestamp,last_data,last_data_index):
    # 是否禁止交易
    if is_in_forbidden_trade_codes(code):
        raise Exception("禁止交易")
@@ -183,21 +184,44 @@
    # 买一手的资金是否足够
    if price * 100 > money:
        raise Exception("账户可用资金不足")
    try:
        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)
# 购买
@async_call
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)
    except Exception as e:
        __place_order_fail(code, trade_state)
        logger_trade.error("{}买入异常{}".format(code, str(e)))
        raise e
# 下单成功
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)
        print("买入结束")
        logger_trade.info("{}买入成功".format(code))
    except Exception as e:
# 下单失败
def __place_order_fail(code, trade_state):
        print("买入异常")
        logger_trade.error("{}买入异常{}".format(code, str(e)))
        # 状态还原
        set_trade_state(code, trade_state)
        raise e
# 开始取消买入
@@ -212,9 +236,7 @@
        logger_trade.info("{}开始撤单".format(code))
        set_trade_state(code, TRADE_STATE_BUY_CANCEL_ING)
        guiTrade.cancel_buy(code)
        # 下单成功,加入固定代码库
        l2_data_manager.remove_from_l2_fixed_codes(code)
        logger_trade.info("{}撤单成功".format(code))
        __cancel_success(code)
    except Exception as e:
        # 状态还原
        set_trade_state(code, trade_state)
@@ -222,6 +244,14 @@
        raise e
# 取消委托成功
def __cancel_success(code):
    TradeBuyDataManager.remove_buy_capture_time(code)
    # 下单成功,加入固定代码库
    l2_data_manager.remove_from_l2_fixed_codes(code)
    logger_trade.info("{}撤单成功".format(code))
# 处理交易成功数据
def process_trade_success_data(datas):
    if datas is None: