| | |
| | | |
| | | import concurrent.futures |
| | | |
| | | from cancel_strategy.s_l_h_cancel_strategy import CancelRateHumanSettingManager |
| | | from code_attribute import gpcode_manager |
| | | from code_attribute.gpcode_manager import CodesContinueBuyMoneyManager |
| | | from db import mysql_data_delegate as mysql_data, redis_manager_delegate as redis_manager |
| | | from db.mysql_data_delegate import Mysqldb |
| | | from db.redis_manager_delegate import RedisUtils |
| | |
| | | from trade.trade_data_manager import AccountMoneyManager, RadicalBuyDealCodesManager |
| | | from utils import import_util, tool, huaxin_util |
| | | |
| | | trade_gui = import_util.import_lib("trade.trade_gui") |
| | | |
| | | try: |
| | | trade_gui = import_util.import_lib("trade.trade_gui") |
| | | except: |
| | | pass |
| | | __db = 2 |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | |
| | |
| | | # 默认设置为可交易 |
| | | val = RedisUtils.get(cls.__get_redis(), "trade_buy_mode") |
| | | if val is None: |
| | | return cls.MODE_BUY_ALL |
| | | return cls.MODE_ONLY_BUY_WANT_CODES |
| | | return int(val) |
| | | |
| | | def get_mode_cache(self): |
| | |
| | | @return: |
| | | """ |
| | | price = gpcode_manager.get_limit_up_price(code) |
| | | __buy(code, price, trade_constant.TRADE_STATE_NOT_TRADE, 0, last_data, last_data["index"], 0, exec_index=exec_index) |
| | | __buy(code, price, trade_constant.TRADE_STATE_NOT_TRADE, 0, last_data, last_data["index"], 0, exec_index=exec_index) |
| | | |
| | | |
| | | # 中断买入 |
| | |
| | | mode)) |
| | | if not can_buy: |
| | | raise Exception(msg) |
| | | continue_buy_money = CodesContinueBuyMoneyManager().get_continue_buy_money(code) |
| | | if continue_buy_money: |
| | | # 设置了续买金额的 |
| | | money = continue_buy_money |
| | | |
| | | count = tool.get_buy_volume_by_money(price, money) |
| | | if count < 4 and float(price) < 200: |
| | | count = 4 |
| | | |
| | | # if mode == OrderBeginPosInfo.MODE_RADICAL: |
| | | # # 激进买入金额为1手 |
| | |
| | | |
| | | # 开始取消买入 |
| | | def start_cancel_buy(code, force=False): |
| | | """ |
| | | 开始撤单 |
| | | @param code: |
| | | @param force: |
| | | @return: |
| | | """ |
| | | async_log_util.info(logger_trade, "{} trade_manager.start_cancel_buy 开始".format(code)) |
| | | trade_state = __CodesTradeStateManager.get_trade_state_cache(code) |
| | | try: |
| | |
| | | continue |
| | | # 买入成功 |
| | | if code is not None and int(data["type"]) == 0: |
| | | l2_trade_util.forbidden_trade(code, msg="交易成功", force=True) |
| | | if not CodesContinueBuyMoneyManager().get_continue_buy_money(code): |
| | | l2_trade_util.forbidden_trade(code, msg="交易成功", force=True) |
| | | state = CodesTradeStateManager().get_trade_state_cache(code) |
| | | if state != trade_constant.TRADE_STATE_BUY_SUCCESS: |
| | | CodesTradeStateManager().set_trade_state(code, trade_constant.TRADE_STATE_BUY_SUCCESS) |
| | | # 删除买撤记录的临时信息 |
| | | kp_client_msg_manager.add_msg(code, "买入成交") |
| | | l2_data_manager.TradePointManager().delete_buy_point(code) |
| | | if not CodesContinueBuyMoneyManager().get_continue_buy_money(code): |
| | | # 没设置续买 |
| | | CodesTradeStateManager().set_trade_state(code, trade_constant.TRADE_STATE_BUY_SUCCESS) |
| | | # 删除买撤记录的临时信息 |
| | | kp_client_msg_manager.add_msg(code, "买入成交") |
| | | l2_data_manager.TradePointManager().delete_buy_point(code) |
| | | # 交易成功时间过去3s之后,且当前委托列表里面还有该代码数据就再次执行撤单 |
| | | # 新版下单不处理 |
| | | if not constant.IS_NEW_VERSION_PLACE_ORDER: |
| | |
| | | def buy_success(code): |
| | | # 加入黑名单 |
| | | if not l2_trade_util.is_in_forbidden_trade_codes(code): |
| | | l2_trade_util.forbidden_trade(code, "buy success", force=True) |
| | | if not CodesContinueBuyMoneyManager().get_continue_buy_money(code): |
| | | l2_trade_util.forbidden_trade(code, "buy success", force=True) |
| | | mode = TradePointManager().get_latest_place_order_mode(code) |
| | | if mode is None: |
| | | mode = OrderBeginPosInfo.MODE_NORMAL |