| | |
| | | |
| | | # 开始交易 |
| | | def start_buy(code, capture_timestamp, last_data, last_data_index): |
| | | @dask.delayed |
| | | # @dask.delayed |
| | | def is_forbidden(code): |
| | | if l2_trade_util.is_in_forbidden_trade_codes(code): |
| | | return Exception("禁止交易") |
| | | return None, None |
| | | |
| | | @dask.delayed |
| | | # @dask.delayed |
| | | def is_state_right(code): |
| | | trade_state = CodesTradeStateManager().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 |
| | | |
| | | @dask.delayed |
| | | # @dask.delayed |
| | | def is_money_enough(code): |
| | | money = AccountAvailableMoneyManager().get_available_money_cache() |
| | | if money is None: |
| | |
| | | return Exception("账户可用资金不足"), price |
| | | return None, price |
| | | |
| | | @dask.delayed |
| | | # @dask.delayed |
| | | def can_trade(*args): |
| | | for arg in args: |
| | | if arg[0] is not None: |
| | |
| | | |
| | | _start_time = tool.get_now_timestamp() |
| | | |
| | | f1 = is_forbidden(code) |
| | | f2 = is_state_right(code) |
| | | f3 = is_money_enough(code) |
| | | dask_result = can_trade(f1, f2, f3) |
| | | ex, trade_state, price = dask_result.compute() |
| | | if ex is not None: |
| | | ex = is_forbidden(code)[0] |
| | | if ex: |
| | | raise ex |
| | | ex, trade_state = is_state_right(code) |
| | | if ex: |
| | | raise ex |
| | | ex, price = is_money_enough(code) |
| | | if ex: |
| | | raise ex |
| | | |
| | | # 并行改造 |