| | |
| | | class L2TradeDataProcessor: |
| | | unreal_buy_dict = {} |
| | | volume_rate_info = {} |
| | | __trade_thread_lock_dict = {} |
| | | __codeActualPriceProcessor = CodeActualPriceProcessor() |
| | | __ths_l2_trade_queue_manager = trade_queue_manager.thsl2tradequeuemanager() |
| | | __thsBuy1VolumnManager = trade_queue_manager.THSBuy1VolumnManager() |
| | |
| | | return False |
| | | else: |
| | | l2_log.debug(code, "可以下单,原因:{}", reason) |
| | | if code not in cls.__trade_thread_lock_dict: |
| | | cls.__trade_thread_lock_dict[code] = threading.RLock() |
| | | cls.__trade_thread_lock_dict[code].acquire() |
| | | try: |
| | | l2_log.debug(code, "开始执行买入") |
| | | trade_manager.start_buy(code, capture_timestamp, last_data, |
| | |
| | | pass |
| | | finally: |
| | | # l2_log.debug(code, "m值影响因子:{}", l2_trade_factor.L2TradeFactorUtil.factors_to_string(code)) |
| | | cls.__trade_thread_lock_dict[code].release() |
| | | pass |
| | | return True |
| | | |
| | | # 是否可以取消 |
| | |
| | | |
| | | @classmethod |
| | | def __cancel_buy(cls, code): |
| | | # 加锁 |
| | | if code not in cls.__trade_thread_lock_dict: |
| | | cls.__trade_thread_lock_dict[code] = threading.RLock() |
| | | try: |
| | | cls.__trade_thread_lock_dict[code].acquire() |
| | | l2_log.debug(code, "开始执行撤单") |
| | | trade_manager.start_cancel_buy(code) |
| | | l2_log.debug(code, "执行撤单成功") |
| | |
| | | l2_log.debug(code, "执行撤单异常:{}", str(e)) |
| | | return False |
| | | finally: |
| | | cls.__trade_thread_lock_dict[code].release() |
| | | pass |
| | | |
| | | |
| | | @classmethod |