From 2f2516749615da866e96d8d24e499b7ecbb63a3e Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 23 六月 2025 12:28:52 +0800 Subject: [PATCH] 默认交易模式变更/真实下单位置计算位置修改 --- utils/tool.py | 78 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 73 insertions(+), 5 deletions(-) diff --git a/utils/tool.py b/utils/tool.py index 6e07859..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__": @@ -313,8 +355,21 @@ def is_can_buy_code(code): - if code.find("00") == 0 or code.find("60") == 0:# or code.find("30") == 0: + 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 @@ -347,7 +402,11 @@ 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 @@ -393,5 +452,14 @@ 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(is_sz_code("0000")) + print(timestamp_format(1726034271, "%H%M%S")) -- Gitblit v1.8.0