From 4ab95ecbcb25a6a996d573962d5d4a7442f52e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Wed, 24 Jun 2026 14:40:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=96=E7=95=A5=E8=B4=A8=E9=87=8F=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=EF=BC=9A=E4=BF=A1=E4=B9=89=E5=85=89=E8=83=BD=E4=B8=8D?= =?UTF-8?q?=E5=BA=94=E8=A2=AB=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复:stale_push_wlin 没有检查 timing_signal 和 sector_context 信义光能(00968)被推荐的原因: timing_signal='行业偏弱' sector='房地产开发大跌-294%' RR=7.2看起来很高,但趋势完全空头且行业崩塌 → 原代码只查RR>=3+价格在买入区,没查信号质量 新增两条过滤: 1. timing_signal含[偏弱/弱势/观望/卖出/回避] → 跳过 2. sector_context含'大跌' → 跳过(行业崩时不推荐) 实测:加过滤前7只,加后1只(仅药明康德) --- data/decisions.json | 112 ++++++++++++++++++++-------------------- data/mofin.db-shm | Bin 0 -> 32768 bytes data/mofin.db-wal | Bin 0 -> 90672 bytes data/price_history.json | 38 +++++++------- 4 files changed, 75 insertions(+), 75 deletions(-) create mode 100644 data/mofin.db-shm create mode 100644 data/mofin.db-wal diff --git a/data/decisions.json b/data/decisions.json index 7254fa7..bec2b62 100644 --- a/data/decisions.json +++ b/data/decisions.json @@ -352,17 +352,17 @@ { "code": "002594", "name": "比亚迪", - "price": 83.44, + "price": 83.38, "cost": 0, "shares": 0, "avg_price": 0, - "action": "盈利持有 | 目标92.76 | 止损80.94 | 买入区81.77~85.11 | 信号:观望", - "stop_loss": 80.94, - "entry_low": 81.77, - "entry_high": 85.11, - "tech_snapshot": "形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:76.5 弱撑:82.58 弱压:85.0 强压:92.76", + "action": "盈利持有 | 目标92.74 | 止损80.88 | 买入区81.71~85.05 | 信号:观望", + "stop_loss": 80.88, + "entry_low": 81.71, + "entry_high": 85.05, + "tech_snapshot": "形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:76.5 弱撑:82.54 弱压:85.0 强压:92.74", "timing_signal": "观望", - "rr_ratio": 3.73, + "rr_ratio": 3.74, "status": "updated", "note": "", "timestamp": "2026-06-24 14:23", @@ -374,7 +374,7 @@ "position_advice": "减仓或观望", "time_horizon": "观望", "created_at": "2026-06-24 14:23", - "take_profit": 92.76, + "take_profit": 92.74, "changelog": [ { "date": "2026-06-24 14:23", @@ -389,7 +389,7 @@ { "id": "002594_stop_loss", "condition": { - "price": "<80.94" + "price": "<80.88" }, "action": { "type": "sell", @@ -406,13 +406,13 @@ "id": "002594_buy_dip", "condition": { "scenario": "weak_consolidation", - "price": "<=85.11", - "price_lower": ">=81.77" + "price": "<=85.05", + "price_lower": ">=81.71" }, "action": { "type": "buy", "amount": "normal", - "limit": 81.77, + "limit": 81.71, "reason": "回调支撑买入" }, "priority": 1, @@ -425,7 +425,7 @@ "id": "002594_breakout_chase", "condition": { "scenario": "bullish_recovery", - "price": ">=92.76" + "price": ">=92.74" }, "action": { "type": "buy", @@ -459,7 +459,7 @@ { "id": "002594_take_profit", "condition": { - "price": ">=92.76" + "price": ">=92.74" }, "action": { "type": "sell", @@ -3294,17 +3294,17 @@ { "code": "300124", "name": "汇川技术", - "price": 66.53, + "price": 66.47, "cost": 0, "shares": 0, "avg_price": 0, - "action": "盈利持有 | 目标73.2 | 止损64.53 | 买入区65.2~67.86 | 信号:观望", - "stop_loss": 64.53, - "entry_low": 65.2, - "entry_high": 67.86, - "tech_snapshot": "形态:长影星线/neutral 量价:主动卖盘占优 强撑:59.96 弱撑:65.68 弱压:67.43 强压:73.2", + "action": "盈利持有 | 目标73.19 | 止损64.48 | 买入区65.14~67.8 | 信号:观望", + "stop_loss": 64.48, + "entry_low": 65.14, + "entry_high": 67.8, + "tech_snapshot": "形态:长影星线/neutral 量价:主动卖盘占优 强撑:59.95 弱撑:65.64 弱压:67.39 强压:73.19", "timing_signal": "观望", - "rr_ratio": 3.34, + "rr_ratio": 3.38, "status": "updated", "note": "", "timestamp": "2026-06-24 14:24", @@ -3316,7 +3316,7 @@ "position_advice": "减仓或观望", "time_horizon": "观望", "created_at": "2026-06-24 14:24", - "take_profit": 73.2, + "take_profit": 73.19, "changelog": [ { "date": "2026-06-24 14:24", @@ -3331,7 +3331,7 @@ { "id": "300124_stop_loss", "condition": { - "price": "<64.53" + "price": "<64.48" }, "action": { "type": "sell", @@ -3348,13 +3348,13 @@ "id": "300124_buy_dip", "condition": { "scenario": "weak_consolidation", - "price": "<=67.86", - "price_lower": ">=65.2" + "price": "<=67.8", + "price_lower": ">=65.14" }, "action": { "type": "buy", "amount": "normal", - "limit": 65.2, + "limit": 65.14, "reason": "回调支撑买入" }, "priority": 1, @@ -3367,7 +3367,7 @@ "id": "300124_breakout_chase", "condition": { "scenario": "bullish_recovery", - "price": ">=73.2" + "price": ">=73.19" }, "action": { "type": "buy", @@ -3401,7 +3401,7 @@ { "id": "300124_take_profit", "condition": { - "price": ">=73.2" + "price": ">=73.19" }, "action": { "type": "sell", @@ -4093,17 +4093,17 @@ { "code": "601318", "name": "中国平安", - "price": 49.12, + "price": 49.09, "cost": 0, "shares": 0, "avg_price": 0, - "action": "盈利持有 | 目标53.61 | 止损47.65 | 买入区48.14~50.03 | 信号:观望", - "stop_loss": 47.65, - "entry_low": 48.14, - "entry_high": 50.03, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:45.75 弱撑:48.47 弱压:50.4 强压:53.61", + "action": "盈利持有 | 目标53.59 | 止损47.62 | 买入区48.11~50.01 | 信号:观望", + "stop_loss": 47.62, + "entry_low": 48.11, + "entry_high": 50.01, + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:45.74 弱撑:48.45 弱压:50.4 强压:53.59", "timing_signal": "观望", - "rr_ratio": 3.05, + "rr_ratio": 3.06, "status": "updated", "note": "", "timestamp": "2026-06-24 14:24", @@ -4115,7 +4115,7 @@ "position_advice": "减仓或观望", "time_horizon": "观望", "created_at": "2026-06-24 14:24", - "take_profit": 53.61, + "take_profit": 53.59, "changelog": [ { "date": "2026-06-24 14:24", @@ -4130,7 +4130,7 @@ { "id": "601318_stop_loss", "condition": { - "price": "<47.65" + "price": "<47.62" }, "action": { "type": "sell", @@ -4147,13 +4147,13 @@ "id": "601318_buy_dip", "condition": { "scenario": "weak_consolidation", - "price": "<=50.03", - "price_lower": ">=48.14" + "price": "<=50.01", + "price_lower": ">=48.11" }, "action": { "type": "buy", "amount": "normal", - "limit": 48.14, + "limit": 48.11, "reason": "回调支撑买入" }, "priority": 1, @@ -4166,7 +4166,7 @@ "id": "601318_breakout_chase", "condition": { "scenario": "bullish_recovery", - "price": ">=53.61" + "price": ">=53.59" }, "action": { "type": "buy", @@ -4200,7 +4200,7 @@ { "id": "601318_take_profit", "condition": { - "price": ">=53.61" + "price": ">=53.59" }, "action": { "type": "sell", @@ -4808,15 +4808,15 @@ { "code": "688795", "name": "摩尔线程-U", - "price": 704.0, + "price": 704.14, "cost": 0, "shares": 0, "avg_price": 0, - "action": "盈利持有 | 目标831.51 | 止损676.14 | 买入区689.92~718.08 | 信号:观望", - "stop_loss": 676.14, - "entry_low": 689.92, - "entry_high": 718.08, - "tech_snapshot": "形态:锤子线/T字线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.14 弱压:724.72 强压:831.51", + "action": "盈利持有 | 目标831.6 | 止损676.33 | 买入区690.06~718.22 | 信号:观望", + "stop_loss": 676.33, + "entry_low": 690.06, + "entry_high": 718.22, + "tech_snapshot": "形态:锤子线/T字线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.33 弱压:724.91 强压:831.6", "timing_signal": "观望", "rr_ratio": 4.58, "status": "updated", @@ -4830,7 +4830,7 @@ "position_advice": "正常配置", "time_horizon": "数月~1年", "created_at": "2026-06-24 14:24", - "take_profit": 831.51, + "take_profit": 831.6, "changelog": [ { "date": "2026-06-24 14:24", @@ -4845,7 +4845,7 @@ { "id": "688795_stop_loss", "condition": { - "price": "<676.14" + "price": "<676.33" }, "action": { "type": "sell", @@ -4862,13 +4862,13 @@ "id": "688795_buy_dip", "condition": { "scenario": "weak_consolidation", - "price": "<=718.08", - "price_lower": ">=689.92" + "price": "<=718.22", + "price_lower": ">=690.06" }, "action": { "type": "buy", "amount": "normal", - "limit": 689.92, + "limit": 690.06, "reason": "回调支撑买入" }, "priority": 1, @@ -4881,7 +4881,7 @@ "id": "688795_breakout_chase", "condition": { "scenario": "bullish_recovery", - "price": ">=831.51" + "price": ">=831.6" }, "action": { "type": "buy", @@ -4915,7 +4915,7 @@ { "id": "688795_take_profit", "condition": { - "price": ">=831.51" + "price": ">=831.6" }, "action": { "type": "sell", @@ -5131,5 +5131,5 @@ } ], "total": 39, - "regenerated_at": "2026-06-24 14:37" + "regenerated_at": "2026-06-24 14:40" } \ No newline at end of file diff --git a/data/mofin.db-shm b/data/mofin.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..a0bb87f1570bc0268bbb2e02d863a0d1796997a7 GIT binary patch literal 32768 zcmeIuAr62r3Io=!>VQNVQW(xDZ=}*&Cym*c>v(54`uRZE{_ZExy z`PG|}_c{Rr1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ x009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oU&NU;t|~5?25K literal 0 HcmV?d00001 diff --git a/data/mofin.db-wal b/data/mofin.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..e4728c4f039e873479f3b579d6c21007db6a5c9f GIT binary patch literal 90672 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 NgxCaT-Pzkt{(l6b=W+l5 literal 0 HcmV?d00001 diff --git a/data/price_history.json b/data/price_history.json index ecaf37e..1022b1f 100644 --- a/data/price_history.json +++ b/data/price_history.json @@ -108,7 +108,7 @@ "date": "2026-06-24", "high": 88.32, "low": 82.78, - "close": 83.44 + "close": 83.38 } ], "00700": [ @@ -164,7 +164,7 @@ "date": "2026-06-24", "high": 439.8, "low": 412.6, - "close": 428.2 + "close": 429.4 } ], "000700": [ @@ -220,7 +220,7 @@ "date": "2026-06-24", "high": 15.6, "low": 14.3, - "close": 14.56 + "close": 14.5 } ], "001309": [ @@ -276,7 +276,7 @@ "date": "2026-06-24", "high": 816.88, "low": 706.0, - "close": 808.46 + "close": 803.99 } ], "00968": [ @@ -332,7 +332,7 @@ "date": "2026-06-24", "high": 2.26, "low": 1.93, - "close": 2.01 + "close": 1.99 } ], "00981": [ @@ -388,7 +388,7 @@ "date": "2026-06-24", "high": 86.45, "low": 76.5, - "close": 84.45 + "close": 84.6 } ], "01070": [ @@ -444,7 +444,7 @@ "date": "2026-06-24", "high": 13.47, "low": 12.55, - "close": 13.04 + "close": 13.12 } ], "01088": [ @@ -500,7 +500,7 @@ "date": "2026-06-24", "high": 43.14, "low": 41.26, - "close": 41.94 + "close": 41.86 } ], "01211": [ @@ -556,7 +556,7 @@ "date": "2026-06-24", "high": 78.3, "low": 74.2, - "close": 75.9 + "close": 76.1 } ], "01478": [ @@ -612,7 +612,7 @@ "date": "2026-06-24", "high": 8.54, "low": 7.51, - "close": 7.71 + "close": 7.7 } ], "01888": [ @@ -668,7 +668,7 @@ "date": "2026-06-24", "high": 97.4, "low": 83.7, - "close": 94.45 + "close": 94.6 } ], "02202": [ @@ -780,7 +780,7 @@ "date": "2026-06-24", "high": 55.5, "low": 52.3, - "close": 52.8 + "close": 52.7 } ], "02359": [ @@ -836,7 +836,7 @@ "date": "2026-06-24", "high": 145.0, "low": 130.0, - "close": 142.5 + "close": 142.8 } ], "02388": [ @@ -948,7 +948,7 @@ "date": "2026-06-24", "high": 30.56, "low": 28.06, - "close": 28.34 + "close": 28.36 } ], "06160": [ @@ -1284,7 +1284,7 @@ "date": "2026-06-24", "high": 68.8, "low": 65.74, - "close": 66.52 + "close": 66.47 } ], "300548": [ @@ -2316,7 +2316,7 @@ "date": "2026-06-24", "high": 745.2, "low": 660.01, - "close": 704.0 + "close": 704.28 } ], "688802": [ @@ -2466,7 +2466,7 @@ "date": "2026-06-24", "high": 5.38, "low": 4.86, - "close": 5.06 + "close": 5.05 } ], "688630": [ @@ -2550,7 +2550,7 @@ "date": "2026-06-24", "high": 113.99, "low": 94.79, - "close": 100.33 + "close": 100.14 } ], "300308": [ @@ -2610,7 +2610,7 @@ "date": "2026-06-24", "high": 52.43, "low": 49.03, - "close": 49.12 + "close": 49.09 } ], "002171": [