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