| | |
| | | """ |
| | | __db = 3 |
| | | __big_order_threshold = {} |
| | | __big_sell_order_threshold = {} |
| | | # 已经成交的累计大买单金额:用于初次上板尚未订阅的情况 |
| | | __already_total_deal_big_order_money = {} |
| | | # 已经成交的累计大卖单金额:用于初次上板尚未订阅的情况 |
| | |
| | | val = redis_manager.RedisUtils.get(self.__get_redis(), k) |
| | | val = int(val) |
| | | self.__big_order_threshold[code] = val |
| | | keys = redis_manager.RedisUtils.keys(self.__get_redis(), "radical_big_sell_order_threshold-*") |
| | | for k in keys: |
| | | code = k.split("-")[1] |
| | | val = redis_manager.RedisUtils.get(self.__get_redis(), k) |
| | | val = int(val) |
| | | self.__big_sell_order_threshold[code] = val |
| | | |
| | | def __get_redis(self): |
| | | return self.__redis_manager.getRedis() |
| | |
| | | return |
| | | self.__big_order_threshold[code] = threshold_money |
| | | redis_manager.RedisUtils.setex_async(self.__db, f"radical_big_order_threshold-{code}", tool.get_expire(), |
| | | f"{threshold_money}") |
| | | |
| | | def set_big_sell_order_threshold(self, code, threshold_money): |
| | | """ |
| | | 设置大卖单的阈值 |
| | | @param code: |
| | | @param threshold_money: |
| | | @return: |
| | | """ |
| | | if code in self.__big_sell_order_threshold: |
| | | return |
| | | async_log_util.info(logger_l2_radical_buy_data, f"大卖单阈值数据:{code}-{threshold_money}") |
| | | if threshold_money < self.__get_base_big_order_threshold(code): |
| | | # 小于基础大单不设置 |
| | | return |
| | | self.__big_sell_order_threshold[code] = threshold_money |
| | | redis_manager.RedisUtils.setex_async(self.__db, f"radical_big_sell_order_threshold-{code}", tool.get_expire(), |
| | | f"{threshold_money}") |
| | | |
| | | def set_big_deal_order_list(self, code, buy_money_list, sell_money_list, limit_up_price, min_order_no): |
| | |
| | | pre_limit_up_price_money_sell_list.append((info[0], info[2])) |
| | | total_deal_sell_money += info[0] |
| | | total_deal_sell_money_info_list.append(info) |
| | | # 计算卖单阈值 |
| | | max_sell_money = max([x[0] for x in total_deal_sell_money_info_list]) |
| | | average_sell_money = sum([x[0] for x in total_deal_sell_money_info_list]) |
| | | threshold_sell_money = int( |
| | | round(max(self.__get_base_big_order_threshold(code), |
| | | min((max_sell_money // 2 + average_sell_money) // 2, average_sell_money)))) |
| | | self.set_big_sell_order_threshold(code, threshold_sell_money) |
| | | |
| | | async_log_util.info(logger_l2_radical_buy_data, |
| | | f"之前的大卖单:{code}-{total_deal_sell_money}-{total_deal_sell_money_info_list}") |
| | | f"之前的大卖单:{code}-{total_deal_sell_money}-{total_deal_sell_money_info_list},卖大单阈值-{threshold_sell_money}") |
| | | self.__already_total_sell_deal_big_order_money[code] = ( |
| | | total_deal_sell_money, pre_limit_up_price_money_sell_list) |
| | | total_deal_sell_money, pre_limit_up_price_money_sell_list) |
| | | |
| | | def get_big_order_threshold(self, code): |
| | | """ |
| | |
| | | return self.__big_order_threshold.get(code) |
| | | return 2990000 |
| | | |
| | | def __get_base_big_order_threshold(self, code): |
| | | """ |
| | | 获取基础大单的金额 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | return l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), tool.is_ge_code(code)) |
| | | |
| | | def get_big_sell_order_threshold(self, code): |
| | | """ |
| | | 获取大单阈值 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | if code in self.__big_sell_order_threshold: |
| | | return self.__big_sell_order_threshold.get(code) |
| | | |
| | | return self.__get_base_big_order_threshold(code) |
| | | |
| | | def get_deal_big_order_money(self, code): |
| | | """ |
| | | 获取大单成交金额 |
| | |
| | | return self.__already_total_deal_big_order_money[code][0] |
| | | return 0 |
| | | |
| | | def get_sell_deal_big_order_money(self, code): |
| | | def get_sell_deal_big_order_money(self, code, threshold_money): |
| | | if code in self.__already_total_sell_deal_big_order_money: |
| | | return self.__already_total_sell_deal_big_order_money[code][0] |
| | | return sum([x[0] if x[0] >= threshold_money else 0 for x in |
| | | self.__already_total_sell_deal_big_order_money[code][1]]) |
| | | return 0 |
| | | |
| | | def get_deal_big_order_money_list(self, code): |
| | |
| | | @param code: |
| | | @return: 买大单, 上板前买大单, 卖大单, 上板前卖大单 |
| | | """ |
| | | threshold_sell_money = BeforeSubDealBigOrderManager().get_big_sell_order_threshold(code) |
| | | buy_money = BigOrderDealManager().get_total_buy_money(code) |
| | | sell_money = BigOrderDealManager().get_total_sell_money(code) |
| | | sell_money = BigOrderDealManager().get_total_sell_money(code, threshold_money=threshold_sell_money) |
| | | before_buy_money = BeforeSubDealBigOrderManager().get_deal_big_order_money(code) |
| | | before_sell_money = BeforeSubDealBigOrderManager().get_sell_deal_big_order_money(code) |
| | | before_sell_money = BeforeSubDealBigOrderManager().get_sell_deal_big_order_money(code, threshold_sell_money) |
| | | return buy_money, before_buy_money, sell_money, before_sell_money |
| | | |
| | | |
| | |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY |
| | | |
| | | big_order_detail_info = get_total_detal_big_order_details(code) |
| | | deal_big_order_money = big_order_detail_info[0] + big_order_detail_info[1] - big_order_detail_info[2] - big_order_detail_info[3] |
| | | deal_big_order_money = big_order_detail_info[0] + big_order_detail_info[1] - big_order_detail_info[2] - \ |
| | | big_order_detail_info[3] |
| | | try: |
| | | # 获取正在成交的订单 |
| | | dealing_order_info = HuaXinBuyOrderManager().get_dealing_order_info(code) |