| | |
| | | from l2.huaxin import l2_huaxin_util |
| | | from l2.l2_data_manager import TradePointManager |
| | | from l2.l2_data_util import L2DataUtil |
| | | from l2.l2_sell_manager import L2MarketSellManager |
| | | from l2.l2_transaction_data_manager import BigOrderDealManager, HuaXinBuyOrderManager |
| | | from log_module import async_log_util |
| | | from log_module.log import logger_l2_radical_buy, logger_debug, logger_l2_radical_buy_data |
| | |
| | | @return:(缺少的资金, 净成交金额, 要求的大单金额, 计算得到的大单阈值金额, 人为设置的大单) |
| | | """ |
| | | |
| | | THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code) |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = compute_total_deal_big_order_threshold_money(code, |
| | | limit_up_price, |
| | | THRESHOLD_MONEY) |
| | | |
| | | human_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code) |
| | | if human_setting_money is not None: |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = int(human_setting_money) |
| | | else: |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE |
| | | |
| | | # if is_for_buy and is_temp_threshold_money: |
| | | # # 首次上板买入,大单阈值打3折 |
| | | # TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY //= 3 |
| | | |
| | | # 买大单, 上板前买大单, 卖大单, 上板前卖大单 |
| | | 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] - \ |
| | |
| | | deal_big_order_money += dealing_order_info[2] |
| | | except Exception as e: |
| | | async_log_util.info(logger_l2_radical_buy, f"计算正在成交大单出错:{str(e)}") |
| | | |
| | | THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code) |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = compute_total_deal_big_order_threshold_money(code, |
| | | limit_up_price, |
| | | THRESHOLD_MONEY) |
| | | # 再次计算算的值 |
| | | deal_rate = round(deal_big_order_money / TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE, 2) |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = (1 + (-0.1 * deal_rate + 0.25)) * 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] |
| | | |
| | | human_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code) |
| | | if human_setting_money is not None: |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = int(human_setting_money) |
| | | else: |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE |
| | | |
| | | # if is_for_buy and is_temp_threshold_money: |
| | | # # 首次上板买入,大单阈值打3折 |
| | | # TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY //= 3 |
| | | |
| | | total_lack_money = max(0, int(TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY - deal_big_order_money)) |
| | | return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE, human_setting_money |
| | | |
| | |
| | | # 新的阈大于老的阈值 |
| | | old_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code) |
| | | if old_setting_money: |
| | | new_setting_money = int(old_setting_money * money / THRESHOLD_MONEY) |
| | | async_log_util.info(logger_l2_radical_buy_data, |
| | | f"累计大单回调人为设置({code}): {old_setting_money}->{new_setting_money}") |
| | | TotalDealBigOrderThresholdMoneyManager().set_money(code, new_setting_money, |
| | | trade_manager.CodesTradeStateManager().get_trade_state_cache( |
| | | code)) |
| | | pass |
| | | # new_setting_money = int(old_setting_money * money / THRESHOLD_MONEY) |
| | | # async_log_util.info(logger_l2_radical_buy_data, |
| | | # f"累计大单回调人为设置({code}): {old_setting_money}->{new_setting_money}") |
| | | # TotalDealBigOrderThresholdMoneyManager().set_money(code, new_setting_money, |
| | | # trade_manager.CodesTradeStateManager().get_trade_state_cache( |
| | | # code)) |
| | | |
| | | # 只有涨停过的代码才需要拉大单 |
| | | if code_ not in LimitUpDataConstant.get_history_limit_up_codes(): |