From 32203dcb2d06b93e4b6c81f9121b00531a91395e Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 06 六月 2025 18:43:07 +0800
Subject: [PATCH] bug修复

---
 strategy/低吸脚本_辨识度_v2.py |   96 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 96 insertions(+), 0 deletions(-)

diff --git "a/strategy/\344\275\216\345\220\270\350\204\232\346\234\254_\350\276\250\350\257\206\345\272\246_v2.py" "b/strategy/\344\275\216\345\220\270\350\204\232\346\234\254_\350\276\250\350\257\206\345\272\246_v2.py"
new file mode 100644
index 0000000..2eae881
--- /dev/null
+++ "b/strategy/\344\275\216\345\220\270\350\204\232\346\234\254_\350\276\250\350\257\206\345\272\246_v2.py"
@@ -0,0 +1,96 @@
+from strategy.strategy_variable import StockVariables
+
+sv = StockVariables()
+
+
+def can_buy():
+    """
+    @return: 鏄惁鍙拱, 涓嶈兘涔扮殑鍘熷洜/鍙拱鐨勬澘鍧�
+    """
+    # print(f"{target_code}:鎵ц绛栫暐")
+    if not sv.鏄ㄦ棩闈炶穼鍋� or not sv.鏄ㄦ棩闈炴定鍋� or not sv.鏄ㄦ棩闈炵偢鏉�:
+        return False, "鏃涓嶆弧瓒虫潯浠�"
+    # if sv.鍏釜浜ゆ槗鏃ユ定骞呰繃楂�:
+    #     # print(f"{target_code}:鍏釜浜ゆ槗鏃ユ定骞呰繃楂�")
+    #     return False, "鍏釜浜ゆ槗鏃ユ定骞呰繃楂�"
+
+    # if sv.褰撳墠浠� <= sv.鏃ユ渶楂樹环_10:
+    #     return False, "娌$獊鐮�10鏃ユ渶楂樹环"
+    # 缁熻澶у崟鏁伴噺
+    if sv.浠婃棩寮�鐩樹环 and (sv.浠婃棩寮�鐩樹环 - sv.鏄ㄦ棩鏀剁洏浠�) / sv.鏄ㄦ棩鏀剁洏浠� < -0.03:
+        return False, "寮�鐩樻定骞呭皬浜�-0.03"
+
+    if sv.浠婃棩娑ㄥ仠浠� < sv.鏃ユ渶楂樹环_5:
+        return False, "浠婃棩娑ㄥ仠浠峰皬浜�5鏃ユ渶楂樹环"
+
+    if sv.娑ㄥ仠鏁癬5 > 3 or sv.璺屽仠鏁癬5 > 3 or sv.鐐告澘鏁癬5 > 3:
+        return False, "5鏃ユ定鍋滄暟/鐐告澘鏁�/璺屽仠鏁�>3"
+    if sv.浠婃棩娑ㄥ仠浠� > 60 or sv.浠婃棩娑ㄥ仠浠� < 2.99:
+        return False, "浠婃棩娑ㄥ仠浠烽珮浜�60/浣庝簬2.99"
+
+    big_order_count = 0
+    if sv.浠婃棩澶у崟鏁版嵁:
+        # 10涓氦鏄撴棩鍐呮湁鐐告澘鎴栨定鍋滃氨鐪�5涓氦鏄撴棩
+        # if sv.娑ㄥ仠鏁癬10 > 0 or sv.鐐告澘鏁癬10 > 0:
+        #     big_order_count = len(set([o[0] for o in sv.浠婃棩澶у崟鏁版嵁 if sv.鏃ユ渶楂樹环_5 <= o[4] < sv.鏄ㄦ棩鏀剁洏浠� * 1.06]))
+        # else:
+        # big_order_count = len(set([o[0] for o in sv.浠婃棩澶у崟鏁版嵁 if o[4] < sv.鏄ㄦ棩鏀剁洏浠� * 1.06]))
+        big_order_count = len(set([o[0] for o in sv.浠婃棩澶у崟鏁版嵁 if (sv.鏃ユ渶楂樹环_10 < o[4] < sv.鏄ㄦ棩鏀剁洏浠� * 1.06)]))
+    if big_order_count < 1:  # max(1, int(round(sv.鏄ㄦ棩鎴愪氦棰� * 0.33 / 1e8))):
+        return False, f"({big_order_count})灏戜簬1涓ぇ鍗�"
+    if not sv.浠g爜鏉垮潡:
+        return False, "娌℃湁鏉垮潡"
+
+    can_buy_blocks = set([k for k in sv.浠g爜鏉垮潡 if sv.鏉垮潡娑ㄥ仠 and k in sv.鏉垮潡娑ㄥ仠 and len(sv.鏉垮潡娑ㄥ仠[k]) >= 1])
+    if not can_buy_blocks:
+        return False, "鏉垮潡灏戜簬1涓定鍋�"
+    # 鏄惁杩樻湁鍙拱鐨勬澘鍧�
+    can_buy_blocks = sv.浠g爜鏉垮潡 - sv.鏉垮潡鎴愪氦浠g爜.keys()
+    if not can_buy_blocks:
+        return False, "鏉垮潡宸叉湁鎴愪氦浠g爜"
+    tr = 0.06 if target_code.find("30") != 0 else 0.12
+    if (sv.浠婃棩澶у崟鏁版嵁[-1][4] - sv.鏄ㄦ棩鏀剁洏浠�) / sv.鏄ㄦ棩鏀剁洏浠� >= tr:
+        return False, "娑ㄥ箙杩囬珮"
+    buy_money = 0
+    sell_money = 0
+    order_ids = set()
+    if sv.浠婃棩澶у崟鏁版嵁:
+        for d in reversed(sv.浠婃棩澶у崟鏁版嵁):
+            if d[0] in order_ids:
+                continue
+            order_ids.add(d[0])
+            if d[4] >= sv.鏄ㄦ棩鏀剁洏浠� * 1.06:
+                continue
+            buy_money += d[2]
+    if sv.浠婃棩澶у崟鏁版嵁 and str(sv.浠婃棩澶у崟鏁版嵁[-1][3]).find("92") == 0:
+        return False, "澶у崟鏃堕棿鍦�09:30涔嬪墠"
+
+    if sv.浠婃棩鍗栧ぇ鍗曟暟鎹�:
+        for d in reversed(sv.浠婃棩鍗栧ぇ鍗曟暟鎹�):
+            if d[0] in order_ids:
+                continue
+            order_ids.add(d[0])
+            sell_money += d[2]
+
+    if buy_money - sell_money < 299e4:
+        # print(target_code, "鍗栧崟澶氫簬涔板崟: ", sv.浠婃棩鍗栧ぇ鍗曟暟鎹�)
+        return False, "鍗栧崟澶氫簬涔板崟"
+
+    if (sv.浠婃棩澶у崟鏁版嵁[-1][4] - sv.浠婃棩澶у崟鍧囦环) / sv.鏄ㄦ棩鏀剁洏浠� > 0.03:
+        return False, f"楂樹簬澶у崟鍧囦环({sv.浠婃棩澶у崟鍧囦环})3涓偣"
+
+    # 绠楁姏鍘嬪潎浠�
+    high_price = sv.鏃ユ渶楂樹环_10
+    high_rate = (sv.浠婃棩澶у崟鏁版嵁[-1][4] - high_price) / high_price
+    if high_rate >= 0.02 or high_rate < -0.1:
+        pass
+    else:
+        return False, f"鎶涘帇娑ㄥ箙({high_rate}/{high_rate})鍦�-10-2涔嬮棿"
+    print("澶у崟", sv.浠婃棩澶у崟鏁版嵁)
+    return True, can_buy_blocks, (
+        f"澶у崟鏁伴噺锛歿big_order_count}",
+        f"涔板叆浠凤細{sv.浠婃棩澶у崟鏁版嵁[-1][4]}锛屾定骞咃細{round((sv.浠婃棩澶у崟鏁版嵁[-1][4] - sv.鏄ㄦ棩鏀剁洏浠�) * 100 / sv.鏄ㄦ棩鏀剁洏浠�, 2)}%",
+        sv.浠婃棩澶у崟鏁版嵁[-1], [(p, sv.鏉垮潡娑ㄥ仠.get(p)) for p in can_buy_blocks])
+
+
+compute_result = can_buy()

--
Gitblit v1.8.0