From 6da589c084f8fa15555aa365d5f79e6e85e6dc5c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 09 十月 2023 09:54:46 +0800 Subject: [PATCH] bug修复 --- trade/sell_data_processor.py | 76 +++++++++----------------------------- 1 files changed, 18 insertions(+), 58 deletions(-) diff --git a/trade/sell_data_processor.py b/trade/sell_data_processor.py index 7a55091..ec06792 100644 --- a/trade/sell_data_processor.py +++ b/trade/sell_data_processor.py @@ -5,72 +5,32 @@ class TickDataProcess: - # 鍒濆鍖栧師濮嬩环鏍�,鍙�9鐐�25鐨勪环鏍� - __last_price_infos = {} - - __last_15s_price_infos = {} - - __reference_price_info = {} + # 鏈�楂樹环 + __highest_price_infos = {} @classmethod def init_origin_price(cls, code, price, rate_percent): - cls.__last_price_infos[code] = [("09:25:00", price, rate_percent)] - cls.__last_15s_price_infos[code] = [("09:25:00", price, rate_percent)] - cls.__reference_price_info[code] = ("09:25:00", price, rate_percent) - - # 鑾峰彇15s鏈�缁堢殑浠锋牸 - @classmethod - def get_15_seconds_price_info(cls, price_infos, max_amplitude_rate_percent): - final_price_info = price_infos[-1] - max_rate_info = None - for price_info in price_infos: - if price_info - price_infos[0][2] > max_amplitude_rate_percent: - if not max_rate_info: - max_rate_info = price_info - if max_rate_info[2] < price_info[2]: - max_rate_info = price_info - if max_rate_info: - final_price_info = max_rate_info - return final_price_info + cls.__highest_price_infos[code] = [("09:25:00", price, rate_percent)] # 浠锋牸淇℃伅(鏃堕棿,鐜颁环,娑ㄥ箙) + # return 鏄惁鍑忎粨 @classmethod def process_tick_data(cls, code, time_str, price, rate_percent, max_amplitude_rate_percent=0.6): + # 闈炰氦鏄撴椂闂� + if tool.trade_time_sub(time_str, "09:30:00") < 0: + return False now_price_info = (time_str, price, rate_percent) - latest_price_info = cls.__last_price_infos.get(code)[-1] - # 濉厖涓棿缂哄け鐨勬暟鎹� - latest_time = latest_price_info[0] - if tool.trade_time_sub(latest_time, "09:29:57") < 0: - latest_time = "09:29:57" - - sub_time = tool.trade_time_sub(time_str, latest_time) - fill_middle_count = sub_time // 3 - 1 - if fill_middle_count > 0: - for i in range(0, fill_middle_count): - cls.__last_price_infos.get(code).append( - (tool.trade_time_add_second(latest_price_info[0], 3), latest_price_info[1], latest_price_info[2])) - cls.__last_price_infos.get(code).append(now_price_info) - latest_15s_price_info = cls.__last_15s_price_infos[code][-1] - if now_price_info[2] - latest_15s_price_info[2] > max_amplitude_rate_percent: - # 娑ㄥ箙瓒呰繃鎸箙涓旀瘮鍙傝�冪偣鐨勬尟骞呭ぇ - if now_price_info[2] > cls.__reference_price_info[code][2]: - cls.__reference_price_info[code] = now_price_info - elif latest_15s_price_info[2] - now_price_info[2] > max_amplitude_rate_percent: - # 璺屽箙瓒呰繃鎸箙 - cls.__reference_price_info[code] = now_price_info - # 褰撳墠鐐规槸鍚︽瘮鍙傝�冪偣涓嬮檷鎸箙灏辫Е鍙戝崠 - if cls.__reference_price_info[code][2] - now_price_info[2] > max_amplitude_rate_percent: - # 瑙﹀彂鍗� - cls.__reference_price_info[code] = now_price_info - return True + # 濡傛灉姣旀渶楂樹环楂樺氨鍙栨渶楂樹环 + if cls.__highest_price_infos.get(code)[2] < now_price_info[2]: + cls.__highest_price_infos[code] = now_price_info else: - # 灏氭湭瑙﹀彂鍗� - if len(cls.__last_price_infos.get(code)) >= 5: - # 婊¤冻15s鏁版嵁 - reference_price_info = cls.get_15_seconds_price_info(cls.__last_price_infos.get(code), max_amplitude_rate_percent) - cls.__last_price_infos.get(code).clear() - cls.__reference_price_info[code] = reference_price_info + # 浣庝簬鏈�楂樼偣闃堝�� + if cls.__highest_price_infos.get(code)[2] - now_price_info[2] > max_amplitude_rate_percent: + # 瑙﹀彂鍗� + cls.__highest_price_infos[code] = now_price_info + return True + return False - - +if __name__ == "__main__": + pass -- Gitblit v1.8.0