| | |
| | | val = json.loads(val) |
| | | self.__total_big_order_threshold[code] = val |
| | | |
| | | def remove_money(self, code): |
| | | """ |
| | | 移除金额 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | if code in self.__total_big_order_threshold: |
| | | self.__total_big_order_threshold.pop(code) |
| | | trade_record_log_util.add_common_msg(code, f"移除人为设置累计大单阈值") |
| | | |
| | | def set_money(self, code, money, trade_state): |
| | | """ |
| | | 设置金额 |
| | |
| | | redis_manager.RedisUtils.setex_async(self.__db, f"total_radical_big_order_threshold_info-{code}", |
| | | tool.get_expire(), |
| | | json.dumps((money, trade_state))) |
| | | trade_record_log_util.add_common_msg(code, f"人为设置累计大单阈值:{money}") |
| | | |
| | | def get_money_cache(self, code): |
| | | """ |
| | |
| | | # trade_record_log_util.add_must_buy(code, "累计成交大单足够") |
| | | # cls.__process_add_must(code) |
| | | pass |
| | | |
| | | @classmethod |
| | | def __process_add_must(cls, code): |
| | | """ |
| | | 处理加白 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | if not constant.CAN_AUTO_ADD_WHITE: |
| | | return |
| | | if gpcode_manager.MustBuyCodesManager().is_in_cache(code): |
| | | return |
| | | trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code) |
| | | if not trade_util.is_delegated(trade_state): |
| | | # 没下单 |
| | | return |
| | | human_setting_money_info = TotalDealBigOrderThresholdMoneyManager().get_money_info_cache(code) |
| | | if not human_setting_money_info or not trade_util.is_delegated(human_setting_money_info[1]): |
| | | # 没有人为设置累计大单阈值/不是在下单状态设置的 就不能加白 |
| | | return |
| | | try: |
| | | total_deal_big_order_result = get_total_deal_big_order_info(code, |
| | | gpcode_manager.get_limit_up_price_as_num(code)) |
| | | if total_deal_big_order_result[0] <= 0 and total_deal_big_order_result[2] >= 1e8: |
| | | # 1个亿以上的且本批次成交的大单金额大于2倍大单金额就加白 |
| | | order_begin_pos = TradePointManager().get_buy_compute_start_data_cache(code) |
| | | is_placed_order = l2_data_manager.TradePointManager.is_placed_order(order_begin_pos) |
| | | if not is_placed_order: |
| | | # 没有下过单 |
| | | return |
| | | if order_begin_pos and order_begin_pos.min_order_no is not None: |
| | | # 在 min_order_no 之后成交的大单金额 |
| | | total_buy_data_list = BigOrderDealManager().get_total_buy_data_list(code) |
| | | min_order_no = order_begin_pos.min_order_no |
| | | if min_order_no is None: |
| | | async_log_util.warning(logger_debug, "处理成交大单足够加红: 最小订单号为空") |
| | | return |
| | | bigger_money = l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), |
| | | tool.is_ge_code(code)) |
| | | deal_money = sum( |
| | | [x[2] for x in total_buy_data_list if x[0] >= min_order_no and x[2] >= bigger_money]) |
| | | # 获取均大单 |
| | | THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info( |
| | | code) |
| | | if deal_money >= 2 * THRESHOLD_MONEY: |
| | | gpcode_manager.MustBuyCodesManager().add_code(code) |
| | | trade_record_log_util.add_common_msg(code, "加红", |
| | | f"{code}大单成交足够加红, 本批次成交金额-{deal_money}/{THRESHOLD_MONEY * 2} 累计大单金额:{total_deal_big_order_result[1]}/{total_deal_big_order_result[2]}") |
| | | else: |
| | | async_log_util.info(logger_debug, |
| | | f"{code}-成交大单少({deal_money}/{2 * THRESHOLD_MONEY},最小订单号-{order_begin_pos.min_order_no}),不能加白") |
| | | |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | async_log_util.info(logger_debug, f"处理成交大单足够加白的问题:{str(e)}") |
| | | |
| | | @classmethod |
| | | def market_info_change(cls, code): |
| | |
| | | # 再次计算算的值 |
| | | deal_rate = round(deal_big_order_money / TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE_ORIGIN, 2) |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = max(1, ( |
| | | 1 + max((-0.1 * deal_rate + 0.25), 0)) * deal_big_order_money) |
| | | 1 + max((-0.1 * deal_rate + 0.25), 0)) * deal_big_order_money) |
| | | refer_sell_data = L2MarketSellManager().get_latest_refer_sell_data_with_not_zero(code) |
| | | if refer_sell_data: |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE += refer_sell_data[1] |