From bda4216d608a12db7132c97083c19ecdad48d78f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 28 八月 2024 18:29:21 +0800 Subject: [PATCH] 激进买入 --- utils/buy_strategy_util.py | 75 ++++++++++++++++++++++++------------- 1 files changed, 48 insertions(+), 27 deletions(-) diff --git a/utils/buy_strategy_util.py b/utils/buy_strategy_util.py index 40c8872..8ab6868 100644 --- a/utils/buy_strategy_util.py +++ b/utils/buy_strategy_util.py @@ -3,10 +3,12 @@ """ import time -from code_attribute import gpcode_manager +from code_attribute import gpcode_manager, code_volumn_manager from l2 import l2_data_util, l2_data_source_util, transaction_progress from l2.l2_data_util import L2DataUtil from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager +from log_module import async_log_util +from log_module.log import logger_l2_error from settings.trade_setting import MarketSituationManager, TradeBlockBuyModeManager from trade import trade_data_manager from utils import tool, buy_condition_util, global_util @@ -141,33 +143,52 @@ @param trade_index: @return: """ - total_data = l2_data_util.local_today_datas.get(code) - total_count = 0 - total_big_count = 0 - for i in range(trade_index + 1, total_data[-1]["index"] + 1): - data = total_data[i] - val = data["val"] - if not l2_data_util.L2DataUtil.is_limit_up_price_buy(val): - continue - money = val["num"] * float(val["price"]) - if money < 5000: - continue + # 鑾峰彇浠婃棩鎴愪氦閲忎笌鍙傝�冮噺 + # today = get_today_volumn(code) + # max60, yesterday = get_histry_volumn(code) + try: + today_volume = code_volumn_manager.get_today_volumn_cache(code) + histry_volumn = code_volumn_manager.get_histry_volumn(code) + if not today_volume or not histry_volumn: + return False, "灏氭湭鑾峰彇鍒伴噺" + threshhold_volume = (histry_volumn[0][0] - today_volume) // 3 + limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) + threshhold_volumes = threshhold_volume // 100, int(50000 / limit_up_price), int(200000 / limit_up_price) - left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2( - code, - i, - total_data, - l2_data_util.local_today_canceled_buyno_map.get( - code)) - if left_count > 0: - total_count += 1 - if money > 29900: - total_big_count += 1 - if total_count > 10: - break - if total_count > 10 or total_big_count < 1: - return False, f"鏈垚浜ゆ暟閲�-{total_count}锛屽ぇ鍗曟暟閲�-{total_big_count}" - return True, "" + total_data = l2_data_util.local_today_datas.get(code) + total_count = 0 + total_big_count = 0 + total_num = 0 + for i in range(trade_index + 1, total_data[-1]["index"] + 1): + data = total_data[i] + val = data["val"] + if not l2_data_util.L2DataUtil.is_limit_up_price_buy(val): + continue + money = val["num"] * float(val["price"]) + if money < 5000: + continue + + left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2( + code, + i, + total_data, + l2_data_util.local_today_canceled_buyno_map.get( + code)) + if left_count > 0: + total_num += val["num"] + total_count += 1 + if money > 29900: + total_big_count += 1 + if threshhold_volumes[2] < total_num: + break + if threshhold_volumes[1] <= total_num <= threshhold_volumes[2] and total_num < threshhold_volumes[ + 0] and total_big_count > 0: + # 鍓╀綑鐨勫�煎湪500w-2000w涔嬮棿鎵嶄細鍙備笌璁$畻 + return True, "" + return False, f"鏈垚浜ゆ墜鏁�-{total_num}锛岄槇鍊�-{threshhold_volumes[0]}锛屽ぇ鍗曟暟閲�-{total_big_count}" + except Exception as e: + async_log_util.error(logger_l2_error, f"璁$畻鏄惁璺濈鎴愪氦杩涘害浣嶇疆杩戯細{str(e)}") + return False, "璁$畻寮傚父" def is_quantization(code, start_index, end_index): -- Gitblit v1.8.0