From 2f2516749615da866e96d8d24e499b7ecbb63a3e Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 23 六月 2025 12:28:52 +0800 Subject: [PATCH] 默认交易模式变更/真实下单位置计算位置修改 --- utils/init_data_util.py | 77 +++++++++++++++++++++++++++++++++++--- 1 files changed, 70 insertions(+), 7 deletions(-) diff --git a/utils/init_data_util.py b/utils/init_data_util.py index b02b719..70a3f5b 100644 --- a/utils/init_data_util.py +++ b/utils/init_data_util.py @@ -14,13 +14,13 @@ def re_set_price_pres(codes, force=False): # 閫氳繃鍘嗗彶鏁版嵁缂撳瓨鑾峰彇 - result = HistoryKDatasUtils.get_gp_latest_info(codes) - for item in result: - symbol = item['symbol'] - symbol = symbol.split(".")[1] - pre_close = tool.to_price(decimal.Decimal(str(item['pre_close']))) - gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force) - + for code in codes: + result = HistoryKDatasUtils.get_history_tick_n(code, 1) + for item in result: + symbol = item['symbol'] + symbol = symbol.split(".")[1] + pre_close = tool.to_price(decimal.Decimal(str(item['close']))) + gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force) # 鑾峰彇杩�90澶╃殑鏈�澶ч噺涓庢渶杩戠殑閲� @@ -63,6 +63,69 @@ "%Y-%m-%d"), refer_index +def parse_max_volume_new(code, datas): + """ + 璁$畻杩滈珮閲� + @param code: + @param datas: + @return: [楂橀噺,楂橀噺,楂橀噺鏃ユ湡,楂橀噺绱㈠紩] + """ + + def __is_limited_up(item): + limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(code, item["pre_close"])) + if abs(limit_up_price - item["high"]) < 0.001: + return True + return False + + # 鍙栨渶杩�60涓氦鏄撴棩 + datas = datas[:60] + + # 鍒ゆ柇鏄惁娑ㄥ仠杩� + target_index = None + for i in range(len(datas)): + data = datas[i] + if __is_limited_up(data): + next_data = None + if i > 0: + next_data = datas[i - 1] + # max锛堟定鍋滆繖涓�澶�, 鍚庝竴澶╋級鐨勯噺 + if next_data and next_data['volume'] > data['volume']: + target_index = i - 1 + else: + target_index = i + break + if target_index is None: + # 60澶╂湭娑ㄥ仠,鑾峰彇60澶╁唴鐨勬渶楂橀噺 + for i in range(len(datas)): + data = datas[i] + if target_index is None: + target_index = i + if data['volume'] > datas[target_index]['volume']: + target_index = i + return datas[target_index]['volume'], datas[target_index]['volume'], datas[target_index]['bob'].strftime( + "%Y-%m-%d"), target_index + + +def parse_max_volume_in_days(datas, max_day): + """ + 瑙f瀽鏈�杩戝嚑澶╂渶澶х殑閲� + @param datas: + @param max_day: + @return: + """ + # 瑙f瀽鏈�杩戝嚑澶╃殑鏈�澶ч噺 + datas = datas[:max_day] + max_volume_info = None + for d in datas: + if max_volume_info is None: + max_volume_info = (d["volume"], d) + if d["volume"] > max_volume_info[0]: + max_volume_info = (d["volume"], d) + if max_volume_info: + return max_volume_info[0] + return None + + # 杩斿洖锛�(60澶╂渶澶ч噺,鏄ㄦ棩閲�,閲忓弬鑰冩棩鏈�,鍙傝�冮噺鎹粖浜ゆ槗鏃ユ暟) def __parse_max_volume(code, datas, is_new_or_near_top=False): max_volume = 0 -- Gitblit v1.8.0