From 9949e2de0c9f0624a0698a305b5d3ad52799e906 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 27 六月 2025 15:42:53 +0800 Subject: [PATCH] L撤bug修改/RD撤生效时间设置为60s --- utils/tool.py | 137 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 130 insertions(+), 7 deletions(-) diff --git a/utils/tool.py b/utils/tool.py index 4f29cc5..e191df7 100644 --- a/utils/tool.py +++ b/utils/tool.py @@ -21,6 +21,22 @@ return wrapper +def singleton(cls): + """ + 鍗曚緥瑁呴グ鍣� + @param cls: + @return: + """ + instances = {} + + def get_instance(*args, **kwargs): + if cls not in instances: + instances[cls] = cls(*args, **kwargs) + return instances[cls] + + return get_instance + + def get_expire(): now = int(t.time()) end = int(t.time()) + 60 * 60 * 24 @@ -28,7 +44,7 @@ end = int(t.mktime(t.strptime(local_time, "%Y-%m-%d"))) expire = end - now # 鍔犻殢鏈烘暟锛岄槻姝竴璧烽攢姣佹暟鎹� - expire += random.randint(0, 60 * 60) + expire += random.randint(0, 60 * 30) return expire @@ -51,6 +67,18 @@ def get_now_time_str(): time_str = datetime.datetime.now().strftime("%H:%M:%S") + return time_str + + +def get_now_time_as_int(): + time_str = datetime.datetime.now().strftime("%H:%M:%S") + return int(time_str.replace(":", "")) + + +def get_now_time_with_ms_str(): + now = datetime.datetime.now() + ms = int(now.microsecond / 1000) + time_str = now.strftime(f"%H:%M:%S.{ms:03d}") return time_str @@ -179,6 +207,16 @@ return "{0:0>2}:{1:0>2}:{2:0>2}.{3:0>3}".format(h, m, s, ms) +def timestamp_format(timestamp, format): + """ + 鏃堕棿鎴虫牸寮忓寲 + @param timestamp: + @param format: + @return: + """ + return datetime.datetime.fromtimestamp(timestamp).strftime(format) + + # 浜ゆ槗鏅傞枔鐨勫樊鍊� # 濡�11:29:59 涓� 13:00:00鍙浉宸�1s def trade_time_sub(time_str_1, time_str_2): @@ -286,7 +324,11 @@ # if price - 0.1 < fprice: # fprice = price - 0.1 # return round(fprice, 2) - return round(get_buy_min_price(price) - 0.03, 2) + if price < 20: + return round(get_buy_min_price(price) - 0.03, 2) + else: + # 澶ц偂浠风洿鎺ュ悜涓嬪彇2% + return round(price * (1 - 0.02), 2) if __name__ == "__main__": @@ -312,11 +354,39 @@ return False, None -# 鏄惁涓轰富鏉夸唬鐮� -def is_shsz_code(code): - if code.find("00") == 0 or code.find("60") == 0: +def is_can_buy_code(code): + if code.find("00") == 0 or code.find("60") == 0 or code.find("30") == 0: return True return False + + +def is_target_code(code): + """ + 鏄惁鏄洰鏍囦唬鐮� + @param code: + @return: + """ + prefixes = ["00", "60", "30"] + for prefix in prefixes: + if code.find(prefix) == 0: + return True + return False + + +def get_limit_up_rate(code): + # 鑾峰彇娑ㄥ仠鍊嶆暟 + if code.find("00") == 0 or code.find("60") == 0: + return 1.1 + else: + return 1.2 + + +def get_limit_down_rate(code): + # 鑾峰彇娑ㄥ仠鍊嶆暟 + if code.find("00") == 0 or code.find("60") == 0: + return 0.9 + else: + return 0.8 def get_thread_id(): @@ -332,11 +402,64 @@ def get_buy_volume(limit_up_price): - count = (constant.BUY_MONEY_PER_CODE // int(round(float(limit_up_price) * 100))) * 100 + return get_buy_volume_by_money(limit_up_price, constant.BUY_MONEY_PER_CODE) + + +def get_buy_volume_by_money(limit_up_price, money): + count = (money // int(round(float(limit_up_price) * 100))) * 100 if count < 100: count = 100 return count +# 娣辫瘉 +MARKET_TYPE_SZSE = 1 +# 涓婅瘉 +MARKET_TYPE_SSE = 0 +# 鏈煡 +MARKET_TYPE_UNKNOWN = -1 + + +def get_market_type(code): + """ + 鏍规嵁鑲$エ浠g爜 + :param code: + :return: + """ + if code.find("00") == 0 or code.find("30") == 0 or code.find("12") == 0: + return MARKET_TYPE_SZSE + elif code.find("60") == 0 or code.find("68") == 0 or code.find("11") == 0: + return MARKET_TYPE_SSE + else: + return MARKET_TYPE_UNKNOWN + + +def is_sh_code(code): + """ + 鏄惁鏄笂璇� + @param code: + @return: + """ + return get_market_type(code) == MARKET_TYPE_SSE + + +def is_sz_code(code): + """ + 鏄惁鏄繁璇� + @param code: + @return: + """ + return get_market_type(code) == MARKET_TYPE_SZSE + + +def is_ge_code(code): + """ + 鏄惁鏄垱涓氭澘 + @param code: + @return: + """ + return code.find("30") == 0 + + if __name__ == "__main__": - print(to_time_with_ms("11:29:50", 15)) + print(timestamp_format(1726034271, "%H%M%S")) -- Gitblit v1.8.0