| | |
| | | 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 |
| | |
| | | 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, "禁止代码交易") |
| | | |
| | | |
| | | # 是否在禁止交易代码中 |
| | |
| | | |
| | | |
| | | # 开始交易 |
| | | def start_buy(code): |
| | | def start_buy(code, capture_timestamp,last_data,last_data_index): |
| | | # 是否禁止交易 |
| | | if is_in_forbidden_trade_codes(code): |
| | | raise Exception("禁止交易") |
| | |
| | | # 买一手的资金是否足够 |
| | | if price * 100 > money: |
| | | raise Exception("账户可用资金不足") |
| | | |
| | | 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: |
| | | print("开始买入") |
| | | logger_trade.info("{}开始买入".format(code)) |
| | | set_trade_state(code, TRADE_STATE_BUY_PLACE_ORDER) |
| | | guiTrade.buy(code, price) |
| | | # 下单成功,加入固定代码库 |
| | | l2_data_manager.add_to_l2_fixed_codes(code) |
| | | print("买入结束") |
| | | logger_trade.info("{}买入成功".format(code)) |
| | | __place_order_success(code, capture_timestamp, last_data,last_data_index) |
| | | except Exception as e: |
| | | print("买入异常") |
| | | __place_order_fail(code, trade_state) |
| | | logger_trade.error("{}买入异常{}".format(code, str(e))) |
| | | # 状态还原 |
| | | set_trade_state(code, trade_state) |
| | | 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)) |
| | | |
| | | |
| | | # 下单失败 |
| | | def __place_order_fail(code, trade_state): |
| | | print("买入异常") |
| | | # 状态还原 |
| | | set_trade_state(code, trade_state) |
| | | |
| | | |
| | | # 开始取消买入 |
| | |
| | | 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) |
| | |
| | | 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: |