| | |
| | | # 交易管理器 |
| | | 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 * |
| | |
| | | |
| | | |
| | | # 开始交易 |
| | | 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("禁止交易") |
| | |
| | | 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))) |
| | |
| | | |
| | | |
| | | # 下单成功 |
| | | 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)) |
| | |
| | | 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) |
| | | |
| | | |
| | | # 处理委托成功数据 |
| | |
| | | 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") |