| | |
| | | RedisUtils.delete(self.__get_redis(), self.__key) |
| | | |
| | | |
| | | __trade_state_cache = {} |
| | | |
| | | |
| | | # 获取交易状态 |
| | | def get_trade_state(code): |
| | | state = RedisUtils.get(__redis_manager.getRedis(), "trade-state-{}".format(code)) |
| | |
| | | return int(state) |
| | | |
| | | |
| | | def get_trade_state_cache(code): |
| | | cache_result = tool.CodeDataCacheUtil.get_cache(__trade_state_cache, code) |
| | | if cache_result[0]: |
| | | return cache_result[1] |
| | | val = get_trade_state(code) |
| | | tool.CodeDataCacheUtil.set_cache(__trade_state_cache, code, val) |
| | | return val |
| | | |
| | | |
| | | # 设置交易状态 |
| | | def set_trade_state(code, state): |
| | | logger_trade.info("set_trade_state {}-{}".format(code, state)) |
| | | RedisUtils.setex(__redis_manager.getRedis(), "trade-state-{}".format(code), tool.get_expire(), state) |
| | | tool.CodeDataCacheUtil.set_cache(__trade_state_cache, code, state) |
| | | RedisUtils.setex_async(__redis_manager.getRedis(), "trade-state-{}".format(code), tool.get_expire(), state) |
| | | |
| | | |
| | | def get_codes_by_trade_state(state): |
| | |
| | | |
| | | @dask.delayed |
| | | def is_state_right(code): |
| | | trade_state = get_trade_state(code) |
| | | trade_state = get_trade_state_cache(code) |
| | | if trade_state != TRADE_STATE_NOT_TRADE and trade_state != TRADE_STATE_BUY_CANCEL_SUCCESS and trade_state != TRADE_STATE_BUY_CANCEL_ING: |
| | | return Exception("代码处于不可交易状态"), trade_state |
| | | return None, trade_state |
| | |
| | | |
| | | # 开始取消买入 |
| | | def start_cancel_buy(code, force=False): |
| | | trade_state = get_trade_state(code) |
| | | trade_state = get_trade_state_cache(code) |
| | | if trade_state == TRADE_STATE_BUY_SUCCESS: |
| | | return None |
| | | if not force: |
| | |
| | | time.sleep(0.02) |
| | | for i in range(0, 5): |
| | | # 如果时 |
| | | trade_state = get_trade_state(code) |
| | | trade_state = get_trade_state_cache(code) |
| | | if trade_state != TRADE_STATE_BUY_CANCEL_ING and trade_state != TRADE_STATE_BUY_CANCEL_SUCCESS: |
| | | return |
| | | try: |
| | |
| | | # 买入成功 |
| | | if code is not None and int(data["type"]) == 0: |
| | | l2_trade_util.forbidden_trade(code) |
| | | state = get_trade_state(code) |
| | | state = get_trade_state_cache(code) |
| | | if state != TRADE_STATE_BUY_SUCCESS: |
| | | set_trade_state(code, TRADE_STATE_BUY_SUCCESS) |
| | | # 删除买撤记录的临时信息 |
| | |
| | | code = data["code"] |
| | | if code is not None: |
| | | codes.append(code) |
| | | trade_state = get_trade_state(code) |
| | | trade_state = get_trade_state_cache(code) |
| | | # 设置下单状态的代码为已委托 |
| | | if trade_state == TRADE_STATE_BUY_PLACE_ORDER: |
| | | set_trade_state(code, TRADE_STATE_BUY_DELEGATED) |