From ed9e2367eea9baa6c8bea82e0f81c209ffb2a56f Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 02 一月 2023 17:55:50 +0800 Subject: [PATCH] 撤单策略再次修改 --- trade_data_manager.py | 69 ++++++++++++++++++++++++++++++++-- 1 files changed, 64 insertions(+), 5 deletions(-) diff --git a/trade_data_manager.py b/trade_data_manager.py index 8c5eafb..4b54b81 100644 --- a/trade_data_manager.py +++ b/trade_data_manager.py @@ -210,7 +210,22 @@ count = self.__get_redis().get(key) return 0 if count is None else count + # 淇濆瓨褰撳墠娑ㄥ箙 + def __save_current_rate(self, code, rate): + key = "code_current_rate-{}".format(code) + self.__get_redis().setex(key, tool.get_expire(), rate) + + # 鑾峰彇褰撳墠娑ㄥ箙 + def __get_current_rate(self, code): + key = "code_current_rate-{}".format(code) + rate = self.__get_redis().get(key) + if rate is not None: + return float(rate) + return None + def process_rate(self, code, rate, time_str): + # 淇濆瓨鐩墠鐨勪唬鐮佹定骞� + self.__save_current_rate(code, rate) # 9鐐瑰崐涔嬪墠鐨勬暟鎹笉澶勭悊 if int(time_str.replace(":", "")) < int("093000"): return @@ -261,11 +276,55 @@ return None return data[1] + # 鑾峰彇娑ㄥ箙鍓嶅嚑鐨勪唬鐮� + def get_top_rate_codes(self, top_n): + keys = "code_current_rate-*" + keys = self.__get_redis().keys(keys) + infos = [] + for k in keys: + code = k.split("-")[1] + rate = self.__get_current_rate(code) + infos.append((code, rate)) + # 鎺掑簭淇℃伅 + sorted_infos = sorted(infos, key=lambda tup: tup[1], reverse=True) + sorted_infos = sorted_infos[:top_n] + codes = [] + for data in sorted_infos: + codes.append(data[0]) + return codes + + +# 娑ㄥ仠娆℃暟绠$悊 +class placeordercountmanager: + __redisManager = redis_manager.RedisManager(0) + + @classmethod + def __get_redis(cls): + return cls.__redisManager.getRedis() + + @classmethod + def __incre_place_order_count(cls, code): + key = "place_order_count-{}".format(code) + cls.__get_redis().incrby(key, 1) + cls.__get_redis().expire(key, tool.get_expire()) + + @classmethod + def __get_place_order_count(cls, code): + key = "place_order_count-{}".format(code) + count = cls.__get_redis().get(key) + if count is not None: + return int(count) + return 0 + + @classmethod + def place_order(cls, code): + cls.__incre_place_order_count(code) + + @classmethod + def get_place_order_count(cls, code): + return cls.__get_place_order_count(code) + if __name__ == "__main__": processor = CodeActualPriceProcessor() - processor.process_rate("123456", -0.2, "09:30:00") - processor.process_rate("123456", -0.3, "09:40:00") - processor.process_rate("123456", 0.3, "09:50:00") - - processor.is_under_water("123456") + print(processor.get_top_rate_codes(30)) -- Gitblit v1.8.0