| | |
| | | val = queue_strategy_trade.get() |
| | | if val: |
| | | _type = val["type"] |
| | | async_log_util.info(logger_local_huaxin_contact_debug, f"接受到信息: {_type}") |
| | | if _type != "test": |
| | | async_log_util.info(logger_local_huaxin_contact_debug, f"接受到信息: {val}") |
| | | cls.process_command_thread_pool.submit(lambda: cls.process_command(_type, None, val)) |
| | | except Exception as e: |
| | | async_log_util.exception(logger_local_huaxin_trade_debug, e) |
| | |
| | | @classmethod |
| | | def get_cancel_rate(cls, code): |
| | | base_rate = constant.L_CANCEL_RATE |
| | | block_rate = 0 |
| | | if code in cls.__block_limit_up_count_dict: |
| | | count = cls.__block_limit_up_count_dict[code] |
| | | rates = [0, 0.03, 0.06, 0.08, 0.12] |
| | | rate = 0 |
| | | if count >= len(rates): |
| | | rate = rates[-1] |
| | | block_rate = rates[-1] |
| | | else: |
| | | rate = rates[count] |
| | | base_rate += rate |
| | | block_rate = rates[count] |
| | | |
| | | deal_rate = 0 |
| | | if code in cls.__big_num_deal_rate_dict: |
| | | temp_rate = cls.__big_num_deal_rate_dict[code] |
| | | rate = 0 |
| | | if temp_rate >= 1: |
| | | if temp_rate > 3: |
| | | temp_rate = 3 |
| | | rate = round((temp_rate * 3.5 - 2.5) / 100, 4) |
| | | base_rate += rate |
| | | return round(base_rate,2) |
| | | deal_rate = round((temp_rate * 3.5 - 2.5) / 100, 4) |
| | | |
| | | |
| | | base_rate += block_rate |
| | | base_rate += deal_rate |
| | | return round(base_rate, 2), block_rate, deal_rate |
| | | |
| | | # 设置板块涨停数量(除开自己) |
| | | @classmethod |
| | |
| | | @classmethod |
| | | def set_big_num_deal_rate(cls, code, rate): |
| | | cls.__big_num_deal_rate_dict[code] = rate |
| | | logger_l2_l_cancel.debug(code, f"设置大单成交金额比值:{rate}") |
| | | |
| | | l2_log.l_cancel_debug(code, f"设置大单成交金额比值:{rate}") |
| | | |
| | | |
| | | # 计算成交位置之后的大单(特定笔数)的撤单比例 |
| | |
| | | # return True, total_data[-1] |
| | | |
| | | rate = round(canceled_num / total_num, 3) |
| | | l2_log.l_cancel_debug(code, f"计算范围:{start_index}-{end_index},已撤单比例:{rate}") |
| | | if rate >= LCancelRateManager.get_cancel_rate(code): |
| | | thresh_hold_rate = LCancelRateManager.get_cancel_rate(code) |
| | | l2_log.l_cancel_debug(code, f"计算范围:{start_index}-{end_index},已撤单比例:{rate}/{thresh_hold_rate}") |
| | | if rate >= thresh_hold_rate: |
| | | return True, total_data[-1] |
| | | |
| | | return False, None |
| | |
| | | # 开始撤单 |
| | | def start_cancel(self, code, buy_no, total_datas, buy_order_no_map, local_operate_map, m_val_num): |
| | | # TODO 暂时注释掉G撤 |
| | | return False,"暂时不执行G撤" |
| | | return False, "暂时不执行G撤" |
| | | thresh_num = int(m_val_num * 1) |
| | | place_order_index = self.__SecondCancelBigNumComputer.get_real_place_order_index_cache(code) |
| | | if place_order_index is None: |
| | |
| | | |
| | | if __name__ == "__main__": |
| | | pass |
| | | |
| | |
| | | |
| | | # 依次处理 |
| | | cancel_data, cancel_msg = l_cancel(buy_single_index, buy_exec_index) |
| | | if not cancel_data: |
| | | cancel_data, cancel_msg = s_cancel(buy_single_index, buy_exec_index) |
| | | # 暂时取消S撤 |
| | | # if not cancel_data: |
| | | # cancel_data, cancel_msg = s_cancel(buy_single_index, buy_exec_index) |
| | | if not cancel_data: |
| | | cancel_data, cancel_msg = h_cancel(buy_single_index, buy_exec_index) |
| | | # l2_log.debug(code, "撤单计算结束") |
| | |
| | | from log_module import async_log_util |
| | | from log_module.log import logger_l2_trade_cancel, logger_l2_trade_buy, logger_trade_record, logger_l2_trade, \ |
| | | logger_l2_s_cancel, logger_l2_h_cancel, logger_l2_l_cancel, logger_l2_error |
| | | logger_l2_s_cancel, logger_l2_h_cancel, logger_l2_l_cancel, logger_l2_error, logger_l2_d_cancel |
| | | |
| | | threadIds = {} |
| | | |
| | |
| | | |
| | | |
| | | def d_cancel_debug(code, content, *args): |
| | | __add_async_log(logger_l2_l_cancel, code, content, *args) |
| | | __add_async_log(logger_l2_d_cancel, code, content, *args) |
| | | |
| | | # 交易记录 |
| | | def trade_record(code, type, content, *args): |
| | |
| | | l1Process.join() |
| | | tradeProcess.join() |
| | | except Exception as e: |
| | | logging.exception(e) |
| | | logger_system.exception(e) |
| | |
| | | limit_up_record_datas, |
| | | yesterday_current_limit_up_codes, |
| | | before_blocks_dict): |
| | | pass |
| | | # TODO 测试暂时注释 |
| | | l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, |
| | | f"涨停原因({limit_up_reasons.get(code)})不是老大撤单", |