数据新鲜度防御体系(致命错误防御)

根因:今下午报告用周五多周期缓存(multi_tf_cache)作周一操作建议,
中芯国际H浮盈+10%被错报破止损。

修改:
1. price_monitor 新增 live_prices.json 写入(每2分钟刷新所有实时价)
2. 新增 data_freshness.py — data_freshness check function
3. intraday_health_check price_monitor检测从10min收紧到5min
4. 新增 midday MTF cache refresh (11:00+14:00)
5. cron-report-format pre-flight checklist 新增数据新鲜度检查项

所有报告产出前必须先跑 data_freshness,过期则禁止出操作建议
This commit is contained in:
知微
2026-06-29 15:23:32 +08:00
parent 6a97d93018
commit aa4f013ee5
7 changed files with 9016 additions and 905 deletions
+8142 -519
View File
File diff suppressed because it is too large Load Diff
+38 -38
View File
@@ -1254,7 +1254,7 @@
"volume": 1763719144.0 "volume": 1763719144.0
} }
], ],
"updated_at": 1782706051.5965953 "updated_at": 1782717139.88627
}, },
"00700": { "00700": {
"daily": [ "daily": [
@@ -2511,7 +2511,7 @@
"volume": 667412728.0 "volume": 667412728.0
} }
], ],
"updated_at": 1782705995.3402534 "updated_at": 1782717060.7531412
}, },
"000657": { "000657": {
"daily": [ "daily": [
@@ -3768,7 +3768,7 @@
"volume": 20396773.0 "volume": 20396773.0
} }
], ],
"updated_at": 1782705987.0867403 "updated_at": 1782717054.5245514
}, },
"000700": { "000700": {
"daily": [ "daily": [
@@ -5025,7 +5025,7 @@
"volume": 17181401.0 "volume": 17181401.0
} }
], ],
"updated_at": 1782705988.33133 "updated_at": 1782717055.5022836
}, },
"000711": { "000711": {
"daily": [ "daily": [
@@ -6282,7 +6282,7 @@
"volume": 15999462.0 "volume": 15999462.0
} }
], ],
"updated_at": 1782705991.5414426 "updated_at": 1782717057.8530786
}, },
"001309": { "001309": {
"daily": [ "daily": [
@@ -7539,7 +7539,7 @@
"volume": 2760837.0 "volume": 2760837.0
} }
], ],
"updated_at": 1782705994.8228173 "updated_at": 1782717058.0894217
}, },
"002594": { "002594": {
"daily": [ "daily": [
@@ -8796,7 +8796,7 @@
"volume": 7929446.0 "volume": 7929446.0
} }
], ],
"updated_at": 1782705995.101498 "updated_at": 1782717060.0304492
}, },
"00968": { "00968": {
"daily": [ "daily": [
@@ -10053,7 +10053,7 @@
"volume": 1303595711.0 "volume": 1303595711.0
} }
], ],
"updated_at": 1782705995.787828 "updated_at": 1782717062.846691
}, },
"00981": { "00981": {
"daily": [ "daily": [
@@ -11310,7 +11310,7 @@
"volume": 2495083345.0 "volume": 2495083345.0
} }
], ],
"updated_at": 1782705996.525525 "updated_at": 1782717064.7212029
}, },
"01070": { "01070": {
"daily": [ "daily": [
@@ -12567,7 +12567,7 @@
"volume": 148906925.0 "volume": 148906925.0
} }
], ],
"updated_at": 1782705996.9653752 "updated_at": 1782717066.7172375
}, },
"01088": { "01088": {
"daily": [ "daily": [
@@ -13824,7 +13824,7 @@
"volume": 289696739.0 "volume": 289696739.0
} }
], ],
"updated_at": 1782706001.677639 "updated_at": 1782717069.9709167
}, },
"01211": { "01211": {
"daily": [ "daily": [
@@ -15081,7 +15081,7 @@
"volume": 520224640.0 "volume": 520224640.0
} }
], ],
"updated_at": 1782706002.8164096 "updated_at": 1782717075.4028337
}, },
"01478": { "01478": {
"daily": [ "daily": [
@@ -16338,7 +16338,7 @@
"volume": 157832102.0 "volume": 157832102.0
} }
], ],
"updated_at": 1782706003.6388638 "updated_at": 1782717081.5936816
}, },
"01888": { "01888": {
"daily": [ "daily": [
@@ -17595,7 +17595,7 @@
"volume": 1684251408.0 "volume": 1684251408.0
} }
], ],
"updated_at": 1782706004.5710166 "updated_at": 1782717084.0933223
}, },
"02202": { "02202": {
"daily": [ "daily": [
@@ -18852,7 +18852,7 @@
"volume": 424242411.0 "volume": 424242411.0
} }
], ],
"updated_at": 1782706006.3132045 "updated_at": 1782717089.0535672
}, },
"02318": { "02318": {
"daily": [ "daily": [
@@ -20109,7 +20109,7 @@
"volume": 828520533.0 "volume": 828520533.0
} }
], ],
"updated_at": 1782706011.0799863 "updated_at": 1782717092.8216407
}, },
"02359": { "02359": {
"daily": [ "daily": [
@@ -21366,7 +21366,7 @@
"volume": 133091756.0 "volume": 133091756.0
} }
], ],
"updated_at": 1782706012.8625598 "updated_at": 1782717096.36564
}, },
"02388": { "02388": {
"daily": [ "daily": [
@@ -22623,7 +22623,7 @@
"volume": 279136126.0 "volume": 279136126.0
} }
], ],
"updated_at": 1782706013.6215148 "updated_at": 1782717099.0185645
}, },
"02628": { "02628": {
"daily": [ "daily": [
@@ -23880,7 +23880,7 @@
"volume": 906095931.0 "volume": 906095931.0
} }
], ],
"updated_at": 1782706014.0054975 "updated_at": 1782717102.295698
}, },
"06160": { "06160": {
"daily": [ "daily": [
@@ -25137,7 +25137,7 @@
"volume": 109763254.0 "volume": 109763254.0
} }
], ],
"updated_at": 1782706015.3040774 "updated_at": 1782717102.5999513
}, },
"06869": { "06869": {
"daily": [ "daily": [
@@ -26394,7 +26394,7 @@
"volume": 447131411.0 "volume": 447131411.0
} }
], ],
"updated_at": 1782706020.1379104 "updated_at": 1782717102.9797394
}, },
"09868": { "09868": {
"daily": [ "daily": [
@@ -27651,7 +27651,7 @@
"volume": 343118048.0 "volume": 343118048.0
} }
], ],
"updated_at": 1782706020.7164657 "updated_at": 1782717103.3929343
}, },
"09988": { "09988": {
"daily": [ "daily": [
@@ -28908,7 +28908,7 @@
"volume": 1922973839.0 "volume": 1922973839.0
} }
], ],
"updated_at": 1782706021.5092528 "updated_at": 1782717106.0313873
}, },
"300035": { "300035": {
"daily": [ "daily": [
@@ -30165,7 +30165,7 @@
"volume": 4400429.0 "volume": 4400429.0
} }
], ],
"updated_at": 1782706022.742583 "updated_at": 1782717108.1478984
}, },
"300124": { "300124": {
"daily": [ "daily": [
@@ -31422,7 +31422,7 @@
"volume": 8009597.0 "volume": 8009597.0
} }
], ],
"updated_at": 1782706026.0259018 "updated_at": 1782717110.0109851
}, },
"300308": { "300308": {
"daily": [ "daily": [
@@ -32679,7 +32679,7 @@
"volume": 5855170.0 "volume": 5855170.0
} }
], ],
"updated_at": 1782706027.8375022 "updated_at": 1782717113.6646516
}, },
"300548": { "300548": {
"daily": [ "daily": [
@@ -33936,7 +33936,7 @@
"volume": 4122818.0 "volume": 4122818.0
} }
], ],
"updated_at": 1782706028.1449785 "updated_at": 1782717117.1192489
}, },
"300750": { "300750": {
"daily": [ "daily": [
@@ -35193,7 +35193,7 @@
"volume": 6795828.0 "volume": 6795828.0
} }
], ],
"updated_at": 1782706028.7154987 "updated_at": 1782717117.5389514
}, },
"518880": { "518880": {
"daily": [ "daily": [
@@ -36450,7 +36450,7 @@
"volume": 74216427.0 "volume": 74216427.0
} }
], ],
"updated_at": 1782706030.0068972 "updated_at": 1782717118.8917606
}, },
"600519": { "600519": {
"daily": [ "daily": [
@@ -37707,7 +37707,7 @@
"volume": 810206.0 "volume": 810206.0
} }
], ],
"updated_at": 1782706030.337012 "updated_at": 1782717119.3404405
}, },
"600563": { "600563": {
"daily": [ "daily": [
@@ -38964,7 +38964,7 @@
"volume": 2390925.0 "volume": 2390925.0
} }
], ],
"updated_at": 1782706033.4242928 "updated_at": 1782717123.2639246
}, },
"601318": { "601318": {
"daily": [ "daily": [
@@ -40221,7 +40221,7 @@
"volume": 19118626.0 "volume": 19118626.0
} }
], ],
"updated_at": 1782706037.6416202 "updated_at": 1782717128.5631177
}, },
"601899": { "601899": {
"daily": [ "daily": [
@@ -41478,7 +41478,7 @@
"volume": 65544402.0 "volume": 65544402.0
} }
], ],
"updated_at": 1782706041.6034863 "updated_at": 1782717130.624442
}, },
"688411": { "688411": {
"daily": [ "daily": [
@@ -42735,7 +42735,7 @@
"volume": 122696229.0 "volume": 122696229.0
} }
], ],
"updated_at": 1782706043.6559353 "updated_at": 1782717133.9323957
}, },
"688630": { "688630": {
"daily": [ "daily": [
@@ -43992,7 +43992,7 @@
"volume": 132048197.0 "volume": 132048197.0
} }
], ],
"updated_at": 1782706045.396502 "updated_at": 1782717134.9173846
}, },
"688639": { "688639": {
"daily": [ "daily": [
@@ -45249,7 +45249,7 @@
"volume": 124114989.0 "volume": 124114989.0
} }
], ],
"updated_at": 1782706045.6856456 "updated_at": 1782717135.2589629
}, },
"688795": { "688795": {
"daily": [ "daily": [
@@ -46466,7 +46466,7 @@
"volume": 57135746.0 "volume": 57135746.0
} }
], ],
"updated_at": 1782706046.0276382 "updated_at": 1782717136.4705422
}, },
"688802": { "688802": {
"daily": [ "daily": [
@@ -47683,6 +47683,6 @@
"volume": 44794504.0 "volume": 44794504.0
} }
], ],
"updated_at": 1782706051.2910626 "updated_at": 1782717136.905508
} }
} }
+324 -307
View File
@@ -7,34 +7,33 @@
"cost": 1316.53, "cost": 1316.53,
"position_pct": 15.27, "position_pct": 15.27,
"is_active": 1, "is_active": 1,
"stop_loss": 1141.07, "stop_loss": 1155.88,
"take_profit": 1278.12, "take_profit": 1291.54,
"entry_low": 1143.66, "entry_low": 1171.59,
"entry_high": 1203.93, "entry_high": 1217.9,
"action": null, "action": null,
"strategy_updated": null, "strategy_updated": null,
"analysis": { "analysis": {
"stop_loss": 1141.07, "stop_loss": 1155.88,
"take_profit": 1278.12, "take_profit": 1291.54,
"entry_low": 1143.66, "entry_low": 1171.59,
"entry_high": 1203.93, "entry_high": 1217.9,
"action": "持有观察 | 止损1141.07 | 目标1278.12 | 买入区1143.66~1203.93 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损1155.88 | 目标1291.54 | 买入区1171.59~1217.9 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:1076.48 弱撑:1143.66 弱压:1253.89 强压:1331.38 | MA5=1316.36 MA10=1286.79 MA20=1234.59 MA60=991.33", "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:1090.45 弱撑:1171.59 弱压:1266.31 强压:1345.35 | MA5=1316.36 MA10=1286.79 MA20=1234.59 MA60=991.33",
"multi_tf_context": "多周期看多 | MA20=1234.59 | MA60=991.33 | 长撑:日弱支撑=1113.9 | 长压:日强阻=1416.88", "multi_tf_context": "多周期看多 | MA20=1234.59 | MA60=991.33 | 长撑:日弱支撑=1113.9 | 长压:日强阻=1416.88",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 1.51, "rr_ratio": 0.97,
"action_note": "", "action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 1141.07, "stop_loss": 1155.88,
"entry_zone": "1143.66~1203.93", "entry_zone": "1171.59~1217.9",
"take_profit_zone": "0~1278.12" "take_profit_zone": "0~1291.54"
}, },
"price": 1178.1, "price": 1220.0,
"change_pct": -6.04, "change_pct": -2.7
"market_value": 131653.0
}, },
{ {
"code": "06869", "code": "06869",
@@ -43,34 +42,33 @@
"cost": 263.72, "cost": 263.72,
"position_pct": 13.47, "position_pct": 13.47,
"is_active": 1, "is_active": 1,
"stop_loss": 168.38, "stop_loss": 175.78,
"take_profit": 256.78, "take_profit": 260.3,
"entry_low": 218.6, "entry_low": 226.73,
"entry_high": 237.6, "entry_high": 241.67,
"action": null, "action": null,
"strategy_updated": null, "strategy_updated": null,
"analysis": { "analysis": {
"stop_loss": 168.38, "stop_loss": 175.78,
"take_profit": 256.78, "take_profit": 260.3,
"entry_low": 218.6, "entry_low": 226.73,
"entry_high": 237.6, "entry_high": 241.67,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损168.38 | 目标256.78 | 买入区218.6~237.6 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损175.78 | 目标260.3 | 买入区226.73~241.67 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/neutral 量价:数据不足 强撑:178.0 弱撑:218.6 弱压:250.6 强压:297.2 | MA5=270.0 MA10=249.88 MA20=243.41 MA60=229.24", "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:182.07 弱撑:226.73 弱压:256.13 强压:301.27 | MA5=270.0 MA10=249.88 MA20=243.41 MA60=229.24",
"multi_tf_context": "多周期看多 | MA20=243.41 | MA60=229.24 | 长撑:MA20=243.41 | 长压:日强阻=305.0", "multi_tf_context": "多周期看多 | MA20=243.41 | MA60=229.24 | 长撑:MA20=243.41 | 长压:日强阻=305.0",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 1.33, "rr_ratio": 1.02,
"action_note": "⚠️盈亏比偏低(1:1.3),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 168.38, "stop_loss": 175.78,
"entry_zone": "218.6~237.6", "entry_zone": "226.73~241.67",
"take_profit_zone": "0~256.78" "take_profit_zone": "0~260.3"
}, },
"price": 199.64, "price": 208.32,
"change_pct": -8.22, "change_pct": -4.23
"market_value": 131860.0
}, },
{ {
"code": "01478", "code": "01478",
@@ -79,34 +77,33 @@
"cost": 13.47, "cost": 13.47,
"position_pct": 7.97, "position_pct": 7.97,
"is_active": 1, "is_active": 1,
"stop_loss": 5.98, "stop_loss": 6.17,
"take_profit": 7.12, "take_profit": 7.14,
"entry_low": 6.17, "entry_low": 6.23,
"entry_high": 7.19, "entry_high": 7.27,
"action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", "action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 5.98, "stop_loss": 6.17,
"take_profit": 7.12, "take_profit": 7.14,
"entry_low": 6.17, "entry_low": 6.23,
"entry_high": 7.19, "entry_high": 7.27,
"action": "深套持有 | 深套持有 | 止损5.98 | 目标7.12 | 买入区6.17~7.19 | 信号:持有", "action": "深套持有 | 深套持有 | 止损6.17 | 目标7.14 | 买入区6.23~7.27 | 信号:持有",
"tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:6.28 弱撑:6.74 弱压:6.95 强压:7.42 | MA5=8.6 MA10=8.92 MA20=9.28 MA60=8.9", "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:6.3 弱撑:6.79 弱压:7.0 强压:7.44 | MA5=8.6 MA10=8.92 MA20=9.28 MA60=8.9",
"multi_tf_context": "震荡/无明显方向 | MA20=9.28 | MA60=8.9 | 长撑:日强支撑=6.6 | 长压:日强阻=10.5", "multi_tf_context": "震荡/无明显方向 | MA20=9.28 | MA60=8.9 | 长撑:日强支撑=6.6 | 长压:日强阻=10.5",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.55, "rr_ratio": 0.5,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 5.98, "stop_loss": 6.17,
"entry_zone": "6.17~7.19", "entry_zone": "6.23~7.27",
"take_profit_zone": "0~7.12" "take_profit_zone": "0~7.14"
}, },
"price": 5.97, "price": 6.01,
"change_pct": 0.29, "change_pct": 0.87
"market_value": 148170.0
}, },
{ {
"code": "601899", "code": "601899",
@@ -115,34 +112,33 @@
"cost": 39.89, "cost": 39.89,
"position_pct": 7.34, "position_pct": 7.34,
"is_active": 1, "is_active": 1,
"stop_loss": 22.34, "stop_loss": 23.01,
"take_profit": 25.65, "take_profit": 26.51,
"entry_low": 23.0, "entry_low": 23.21,
"entry_high": 26.84, "entry_high": 27.08,
"action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", "action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 22.34, "stop_loss": 23.01,
"take_profit": 25.65, "take_profit": 26.51,
"entry_low": 23.0, "entry_low": 23.21,
"entry_high": 26.84, "entry_high": 27.08,
"action": "深套持有 | 深套持有 | 止损22.34 | 目标25.65 | 买入区23.0~26.84 | 信号:持有", "action": "深套持有 | 深套持有 | 止损23.01 | 目标26.51 | 买入区23.21~27.08 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:24.17 弱撑:25.09 弱压:25.91 强压:26.72 | MA5=32.41 MA10=34.06 MA20=35.71 MA60=36.48", "tech_snapshot": "形态:带下影阳线/bullish 量价:主动买盘占优 强撑:23.51 弱撑:25.1 弱压:26.17 强压:27.61 | MA5=32.41 MA10=34.06 MA20=35.71 MA60=36.48",
"multi_tf_context": "震荡/无明显方向 | MA20=35.71 | MA60=36.48 | 长撑:日强支撑=24.86 | 长压:日强阻=31.44", "multi_tf_context": "震荡/无明显方向 | MA20=35.71 | MA60=36.48 | 长撑:日强支撑=24.86 | 长压:日强阻=31.44",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:12",
"status": "updated", "status": "updated",
"rr_ratio": 0.3, "rr_ratio": 0.47,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 22.34, "stop_loss": 23.01,
"entry_zone": "23.0~26.84", "entry_zone": "23.21~27.08",
"take_profit_zone": "0~25.65" "take_profit_zone": "0~26.51"
}, },
"price": 25.56, "price": 25.79,
"change_pct": 1.83, "change_pct": 2.75
"market_value": 95736.0
}, },
{ {
"code": "688411", "code": "688411",
@@ -151,34 +147,33 @@
"cost": 266.95, "cost": 266.95,
"position_pct": 6.31, "position_pct": 6.31,
"is_active": 1, "is_active": 1,
"stop_loss": 245.49, "stop_loss": 263.66,
"take_profit": 268.41, "take_profit": 283.32,
"entry_low": 258.88, "entry_low": 258.88,
"entry_high": 271.82, "entry_high": 271.82,
"action": "盈利良好 | 止损253.82 | 目标316.5 | 买入区273.21~286.87 | 信号:持有", "action": "盈利良好 | 止损253.82 | 目标316.5 | 买入区273.21~286.87 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 245.49, "stop_loss": 263.66,
"take_profit": 268.41, "take_profit": 283.32,
"entry_low": 258.88, "entry_low": 258.88,
"entry_high": 271.82, "entry_high": 271.82,
"action": "盈利良好 | 止损245.49 | 目标268.41 | 买入区258.88~271.82 | 信号:持有", "action": "盈利良好 | 止损263.66 | 目标283.32 | 买入区258.88~271.82 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:244.1 弱撑:258.88 弱压:294.69 强压:310.66 | MA5=263.81 MA10=256.47 MA20=250.21 MA60=243.32", "tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:244.9 弱撑:258.88 弱压:296.29 强压:310.66 | MA5=263.81 MA10=256.47 MA20=250.21 MA60=243.32",
"multi_tf_context": "震荡/无明显方向 | MA20=250.21 | MA60=243.32 | 长撑:MA20=250.21 | 长压:日强阻=307.58", "multi_tf_context": "震荡/无明显方向 | MA20=250.21 | MA60=243.32 | 长撑:MA20=250.21 | 长压:日强阻=307.58",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:12",
"status": "updated", "status": "updated",
"rr_ratio": 1.91, "rr_ratio": 1.72,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 245.49, "stop_loss": 263.66,
"entry_zone": "258.88~271.82", "entry_zone": "258.88~271.82",
"take_profit_zone": "0~268.41" "take_profit_zone": "0~283.32"
}, },
"price": 283.6, "price": 286.0,
"change_pct": 9.55, "change_pct": 10.48
"market_value": 53390.0
}, },
{ {
"code": "688981", "code": "688981",
@@ -187,34 +182,33 @@
"cost": 126.07, "cost": 126.07,
"position_pct": 5.44, "position_pct": 5.44,
"is_active": 1, "is_active": 1,
"stop_loss": 136.53, "stop_loss": 145.01,
"take_profit": 155.12, "take_profit": 157.01,
"entry_low": 139.74, "entry_low": 143.67,
"entry_high": 146.73, "entry_high": 150.85,
"action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", "action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 136.53, "stop_loss": 145.01,
"take_profit": 155.12, "take_profit": 157.01,
"entry_low": 139.74, "entry_low": 143.67,
"entry_high": 146.73, "entry_high": 150.85,
"action": "盈利良好 | 止损136.53 | 目标155.12 | 买入区139.74~146.73 | 信号:持有", "action": "盈利良好 | 止损145.01 | 目标157.01 | 买入区143.67~150.85 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:131.14 弱撑:139.74 弱压:151.73 强压:161.58 | MA5=148.89 MA10=140.54 MA20=135.42 MA60=121.68", "tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:133.11 弱撑:143.67 弱压:155.66 强压:163.55 | MA5=148.89 MA10=140.54 MA20=135.42 MA60=121.68",
"multi_tf_context": "震荡/无明显方向 | MA20=135.42 | MA60=121.68 | 长撑:MA20=135.42 | 长压:周强阻=159.05", "multi_tf_context": "震荡/无明显方向 | MA20=135.42 | MA60=121.68 | 长撑:MA20=135.42 | 长压:周强阻=159.05",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:12",
"status": "updated", "status": "updated",
"rr_ratio": 3.07, "rr_ratio": 1.71,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 136.53, "stop_loss": 145.01,
"entry_zone": "139.74~146.73", "entry_zone": "143.67~150.85",
"take_profit_zone": "0~155.12" "take_profit_zone": "0~157.01"
}, },
"price": 145.1, "price": 151.0,
"change_pct": -2.46, "change_pct": 1.51
"market_value": 37821.0
}, },
{ {
"code": "01888", "code": "01888",
@@ -223,34 +217,33 @@
"cost": 88.23, "cost": 88.23,
"position_pct": 5.28, "position_pct": 5.28,
"is_active": 1, "is_active": 1,
"stop_loss": 74.92, "stop_loss": 85.43,
"take_profit": 93.4, "take_profit": 95.43,
"entry_low": 84.9, "entry_low": 89.6,
"entry_high": 89.15, "entry_high": 94.08,
"action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", "action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 74.92, "stop_loss": 85.43,
"take_profit": 93.4, "take_profit": 95.43,
"entry_low": 84.9, "entry_low": 89.6,
"entry_high": 89.15, "entry_high": 94.08,
"action": "盈利持有 | 止损74.92 | 目标93.4 | 买入区84.9~89.15 | 信号:持有", "action": "盈利良好 | 止损85.43 | 目标95.43 | 买入区89.6~94.08 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/neutral 量价:数据不足 强撑:79.2 弱撑:84.9 弱压:98.55 强压:108.1 | MA5=95.1 MA10=88.76 MA20=72.25 MA60=47.53", "tech_snapshot": "形态:锤子线/T字线/neutral 量价:数据不足 强撑:81.55 弱撑:89.6 弱压:102.95 强压:110.45 | MA5=95.1 MA10=88.76 MA20=72.25 MA60=47.53",
"multi_tf_context": "多周期看多 | MA20=72.25 | MA60=47.53 | 长撑:MA20=72.25 | 长压:日强阻=107.2", "multi_tf_context": "多周期看多 | MA20=72.25 | MA60=47.53 | 长撑:MA20=72.25 | 长压:日强阻=107.2",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 1.77, "rr_ratio": 2.84,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 74.92, "stop_loss": 85.43,
"entry_zone": "84.9~89.15", "entry_zone": "89.6~94.08",
"take_profit_zone": "0~93.4" "take_profit_zone": "0~95.43"
}, },
"price": 78.55, "price": 83.2,
"change_pct": -8.17, "change_pct": -2.74
"market_value": 44115.0
}, },
{ {
"code": "688639", "code": "688639",
@@ -259,34 +252,33 @@
"cost": 21.51, "cost": 21.51,
"position_pct": 5.25, "position_pct": 5.25,
"is_active": 1, "is_active": 1,
"stop_loss": 13.24, "stop_loss": 13.5,
"take_profit": 15.97, "take_profit": 15.97,
"entry_low": 14.82, "entry_low": 14.97,
"entry_high": 17.29, "entry_high": 17.46,
"action": null, "action": null,
"strategy_updated": null, "strategy_updated": null,
"analysis": { "analysis": {
"stop_loss": 13.24, "stop_loss": 13.5,
"take_profit": 15.97, "take_profit": 15.97,
"entry_low": 14.82, "entry_low": 14.97,
"entry_high": 17.29, "entry_high": 17.46,
"action": "深套持有 | 深套持有 | 止损13.24 | 目标15.97 | 买入区14.82~17.29 | 信号:持有", "action": "深套持有 | 深套持有 | 止损13.5 | 目标15.97 | 买入区14.97~17.46 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:14.06 弱撑:15.4 弱压:16.93 强压:18.48 | MA5=33.22 MA10=33.72 MA20=35.78 MA60=34.59", "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:13.98 弱撑:15.4 弱压:17.17 强压:18.48 | MA5=33.22 MA10=33.72 MA20=35.78 MA60=34.59",
"multi_tf_context": "多周期看多 | MA20=35.78 | MA60=34.59 | 长撑:日强支撑=14.52 | 长压:月强阻=43.44", "multi_tf_context": "多周期看多 | MA20=35.78 | MA60=34.59 | 长撑:日强支撑=14.52 | 长压:月强阻=43.44",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:12",
"status": "updated", "status": "updated",
"rr_ratio": 0.81, "rr_ratio": 0.7,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 13.24, "stop_loss": 13.5,
"entry_zone": "14.82~17.29", "entry_zone": "14.97~17.46",
"take_profit_zone": "0~15.97" "take_profit_zone": "0~15.97"
}, },
"price": 16.47, "price": 16.63,
"change_pct": 6.95, "change_pct": 7.99
"market_value": 60228.0
}, },
{ {
"code": "300750", "code": "300750",
@@ -295,34 +287,33 @@
"cost": 401.78, "cost": 401.78,
"position_pct": 4.64, "position_pct": 4.64,
"is_active": 1, "is_active": 1,
"stop_loss": 367.23, "stop_loss": 374.88,
"take_profit": 403.56, "take_profit": 403.64,
"entry_low": 381.0, "entry_low": 381.0,
"entry_high": 388.77, "entry_high": 388.85,
"action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有", "action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 367.23, "stop_loss": 374.88,
"take_profit": 403.56, "take_profit": 403.64,
"entry_low": 381.0, "entry_low": 381.0,
"entry_high": 388.77, "entry_high": 388.85,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损367.23 | 目标403.56 | 买入区381.0~388.77 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损374.88 | 目标403.64 | 买入区381.0~388.85 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:357.16 弱撑:381.0 弱压:399.33 强压:420.38 | MA5=395.95 MA10=396.68 MA20=402.28 MA60=414.59", "tech_snapshot": "形态:带下影阳线/bullish 量价:买卖均衡 强撑:357.24 弱撑:381.0 弱压:399.51 强压:420.46 | MA5=395.95 MA10=396.68 MA20=402.28 MA60=414.59",
"multi_tf_context": "震荡/无明显方向 | MA20=402.28 | MA60=414.59 | 长撑:日强支撑=380.03 | 长压:周强阻=468.75", "multi_tf_context": "震荡/无明显方向 | MA20=402.28 | MA60=414.59 | 长撑:日强支撑=380.03 | 长压:周强阻=468.75",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.81, "rr_ratio": 0.8,
"action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓", "action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 367.23, "stop_loss": 374.88,
"entry_zone": "381.0~388.77", "entry_zone": "381.0~388.85",
"take_profit_zone": "0~403.56" "take_profit_zone": "0~403.64"
}, },
"price": 392.1, "price": 392.36,
"change_pct": 2.91, "change_pct": 2.98
"market_value": 40178.0
}, },
{ {
"code": "01211", "code": "01211",
@@ -331,34 +322,33 @@
"cost": 104.87, "cost": 104.87,
"position_pct": 4.62, "position_pct": 4.62,
"is_active": 1, "is_active": 1,
"stop_loss": 64.81, "stop_loss": 65.47,
"take_profit": 77.11, "take_profit": 76.78,
"entry_low": 66.74, "entry_low": 66.06,
"entry_high": 77.86, "entry_high": 77.07,
"action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有", "action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 64.81, "stop_loss": 65.47,
"take_profit": 77.11, "take_profit": 76.78,
"entry_low": 66.74, "entry_low": 66.06,
"entry_high": 77.86, "entry_high": 77.07,
"action": "深套持有 | 深套持有 | 止损64.81 | 目标77.11 | 买入区66.74~77.86 | 信号:持有", "action": "深套持有 | 深套持有 | 止损65.47 | 目标76.78 | 买入区66.06~77.07 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.15 弱撑:72.65 弱压:75.02 强压:80.32 | MA5=96.92 MA10=96.4 MA20=97.59 MA60=97.92", "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:66.95 弱撑:72.33 弱压:74.48 强压:79.98 | MA5=96.92 MA10=96.4 MA20=97.59 MA60=97.92",
"multi_tf_context": "多周期看多 | MA20=97.59 | MA60=97.92 | 长撑:日强支撑=72.2 | 长压:日强阻=97.15", "multi_tf_context": "多周期看多 | MA20=97.59 | MA60=97.92 | 长撑:日强支撑=72.2 | 长压:日强阻=97.15",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.55, "rr_ratio": 0.6,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 64.81, "stop_loss": 65.47,
"entry_zone": "66.74~77.86", "entry_zone": "66.06~77.07",
"take_profit_zone": "0~77.11" "take_profit_zone": "0~76.78"
}, },
"price": 64.19, "price": 63.71,
"change_pct": 1.79, "change_pct": 1.03
"market_value": 62922.0
}, },
{ {
"code": "02202", "code": "02202",
@@ -367,34 +357,33 @@
"cost": 4.67, "cost": 4.67,
"position_pct": 4.6, "position_pct": 4.6,
"is_active": 1, "is_active": 1,
"stop_loss": 1.79, "stop_loss": 1.82,
"take_profit": 2.1, "take_profit": 2.09,
"entry_low": 2.02, "entry_low": 2.0,
"entry_high": 2.35, "entry_high": 2.33,
"action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", "action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 1.79, "stop_loss": 1.82,
"take_profit": 2.1, "take_profit": 2.09,
"entry_low": 2.02, "entry_low": 2.0,
"entry_high": 2.35, "entry_high": 2.33,
"action": "深套持有 | 深套持有 | 止损1.79 | 目标2.1 | 买入区2.02~2.35 | 信号:持有", "action": "深套持有 | 深套持有 | 止损1.82 | 目标2.09 | 买入区2.0~2.33 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:2.03 弱撑:2.17 弱压:2.29 强压:2.43 | MA5=3.35 MA10=3.39 MA20=3.46 MA60=3.53", "tech_snapshot": "形态:长影星线/neutral 量价:数据不足 强撑:2.02 弱撑:2.16 弱压:2.28 强压:2.42 | MA5=3.35 MA10=3.39 MA20=3.46 MA60=3.53",
"multi_tf_context": "多周期看多 | MA20=3.46 | MA60=3.53 | 长撑:日强支撑=2.17 | 长压:日强阻=2.94", "multi_tf_context": "多周期看多 | MA20=3.46 | MA60=3.53 | 长撑:日强支撑=2.17 | 长压:日强阻=2.94",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.56, "rr_ratio": 0.61,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 1.79, "stop_loss": 1.82,
"entry_zone": "2.02~2.35", "entry_zone": "2.0~2.33",
"take_profit_zone": "0~2.1" "take_profit_zone": "0~2.09"
}, },
"price": 1.94, "price": 1.93,
"change_pct": 1.82, "change_pct": 0.91
"market_value": 91999.0
}, },
{ {
"code": "00700", "code": "00700",
@@ -403,34 +392,33 @@
"cost": 443.13, "cost": 443.13,
"position_pct": 4.41, "position_pct": 4.41,
"is_active": 1, "is_active": 1,
"stop_loss": 369.87, "stop_loss": 373.0,
"take_profit": 397.13, "take_profit": 383.77,
"entry_low": 411.8, "entry_low": 411.8,
"entry_high": 425.33, "entry_high": 423.07,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 369.87, "stop_loss": 373.0,
"take_profit": 397.13, "take_profit": 383.77,
"entry_low": 411.8, "entry_low": 411.8,
"entry_high": 425.33, "entry_high": 423.07,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损369.87 | 目标397.13 | 买入区411.8~425.33 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损373.0 | 目标383.77 | 买入区411.8~423.07 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:391.01 弱撑:411.8 弱压:435.67 强压:459.65 | MA5=608.6 MA10=615.0 MA20=612.77 MA60=565.12", "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:401.96 弱撑:411.8 弱压:431.13 强压:444.18 | MA5=608.6 MA10=615.0 MA20=612.77 MA60=565.12",
"multi_tf_context": "多周期看多 | MA20=612.77 | MA60=565.12 | 长撑:日强支撑=411.0 | 长压:周强阻=526.5", "multi_tf_context": "多周期看多 | MA20=612.77 | MA60=565.12 | 长撑:日强支撑=411.0 | 长压:周强阻=526.5",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.82, "rr_ratio": 1.09,
"action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.1),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 369.87, "stop_loss": 373.0,
"entry_zone": "411.8~425.33", "entry_zone": "411.8~423.07",
"take_profit_zone": "0~397.13" "take_profit_zone": "0~383.77"
}, },
"price": 371.68, "price": 366.82,
"change_pct": 3.98, "change_pct": 2.62
"market_value": 44313.0
}, },
{ {
"code": "00981", "code": "00981",
@@ -439,34 +427,33 @@
"cost": 75.94, "cost": 75.94,
"position_pct": 4.2, "position_pct": 4.2,
"is_active": 1, "is_active": 1,
"stop_loss": 77.11, "stop_loss": 80.81,
"take_profit": 84.29, "take_profit": 85.82,
"entry_low": 79.7, "entry_low": 80.0,
"entry_high": 83.53, "entry_high": 84.0,
"action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", "action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 77.11, "stop_loss": 80.81,
"take_profit": 84.29, "take_profit": 85.82,
"entry_low": 79.7, "entry_low": 80.0,
"entry_high": 83.53, "entry_high": 84.0,
"action": "盈利良好 | 止损77.11 | 目标84.29 | 买入区79.7~83.53 | 信号:持有", "action": "盈利良好 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损80.81 | 目标85.82 | 买入区80.0~84.0 | 信号:持有",
"tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:75.4 弱撑:79.7 弱压:83.85 强压:87.8 | MA5=81.51 MA10=78.21 MA20=77.92 MA60=70.26", "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:75.93 弱撑:80.0 弱压:85.98 强压:89.4 | MA5=81.51 MA10=78.21 MA20=77.92 MA60=70.26",
"multi_tf_context": "震荡/无明显方向 | MA20=77.92 | MA60=70.26 | 长撑:MA20=77.92 | 长压:周强阻=93.0", "multi_tf_context": "震荡/无明显方向 | MA20=77.92 | MA60=70.26 | 长撑:MA20=77.92 | 长压:周强阻=93.0",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 2.17, "rr_ratio": 1.27,
"action_note": "", "action_note": "⚠️盈亏比偏低(1:1.3),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 77.11, "stop_loss": 80.81,
"entry_zone": "79.7~83.53", "entry_zone": "80.0~84.0",
"take_profit_zone": "0~84.29" "take_profit_zone": "0~85.82"
}, },
"price": 70.74, "price": 73.26,
"change_pct": 1.88, "change_pct": 5.5
"market_value": 37970.0
}, },
{ {
"code": "300548", "code": "300548",
@@ -475,34 +462,33 @@
"cost": 231.46, "cost": 231.46,
"position_pct": 3.2, "position_pct": 3.2,
"is_active": 1, "is_active": 1,
"stop_loss": 214.83, "stop_loss": 223.68,
"take_profit": 255.28, "take_profit": 257.59,
"entry_low": 239.2, "entry_low": 241.53,
"entry_high": 251.16, "entry_high": 253.61,
"action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持", "action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 214.83, "stop_loss": 223.68,
"take_profit": 255.28, "take_profit": 257.59,
"entry_low": 239.2, "entry_low": 241.53,
"entry_high": 251.16, "entry_high": 253.61,
"action": "盈利良好 | 止损214.83 | 目标255.28 | 买入区239.2~251.16 | 信号:持有", "action": "盈利良好 | 止损223.68 | 目标257.59 | 买入区241.53~253.61 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:212.7 弱撑:239.2 弱压:263.06 强压:295.46 | MA5=282.18 MA10=273.89 MA20=252.1 MA60=241.84", "tech_snapshot": "形态:带下影阴线/neutral 量价:主动买盘占优 强撑:212.34 弱撑:241.53 弱压:266.91 强压:298.14 | MA5=282.18 MA10=273.89 MA20=252.1 MA60=241.84",
"multi_tf_context": "多周期看多 | MA20=252.1 | MA60=241.84 | 长撑:MA20=252.1 | 长压:日强阻=309.98", "multi_tf_context": "多周期看多 | MA20=252.1 | MA60=241.84 | 长撑:MA20=252.1 | 长压:日强阻=309.98",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 5.27, "rr_ratio": 3.86,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 214.83, "stop_loss": 223.68,
"entry_zone": "239.2~251.16", "entry_zone": "241.53~253.61",
"take_profit_zone": "0~255.28" "take_profit_zone": "0~257.59"
}, },
"price": 248.18, "price": 253.19,
"change_pct": -5.51, "change_pct": -3.6
"market_value": 23146.0
}, },
{ {
"code": "518880", "code": "518880",
@@ -511,34 +497,33 @@
"cost": 12.19, "cost": 12.19,
"position_pct": 2.45, "position_pct": 2.45,
"is_active": 1, "is_active": 1,
"stop_loss": 7.77, "stop_loss": 7.91,
"take_profit": 9.03, "take_profit": 9.02,
"entry_low": 7.63, "entry_low": 7.6,
"entry_high": 8.9, "entry_high": 8.87,
"action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有", "action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 7.77, "stop_loss": 7.91,
"take_profit": 9.03, "take_profit": 9.02,
"entry_low": 7.63, "entry_low": 7.6,
"entry_high": 8.9, "entry_high": 8.87,
"action": "深套持有 | 深套持有 | 止损7.77 | 目标9.03 | 买入区7.63~8.9 | 信号:持有", "action": "深套持有 | 深套持有 | 止损7.91 | 目标9.02 | 买入区7.6~8.87 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:7.79 弱撑:8.39 弱压:8.49 强压:9.14 | MA5=9.56 MA10=9.52 MA20=9.74 MA60=10.33", "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.77 弱撑:8.39 弱压:8.48 强压:9.12 | MA5=9.56 MA10=9.52 MA20=9.74 MA60=10.33",
"multi_tf_context": "震荡/无明显方向 | MA20=9.74 | MA60=10.33 | 长撑:日弱支撑=8.29 | 长压:周强阻=10.15", "multi_tf_context": "震荡/无明显方向 | MA20=9.74 | MA60=10.33 | 长撑:日弱支撑=8.29 | 长压:周强阻=10.15",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.52, "rr_ratio": 0.53,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 7.77, "stop_loss": 7.91,
"entry_zone": "7.63~8.9", "entry_zone": "7.6~8.87",
"take_profit_zone": "0~9.03" "take_profit_zone": "0~9.02"
}, },
"price": 8.47, "price": 8.45,
"change_pct": 1.01, "change_pct": 0.67
"market_value": 29256.0
}, },
{ {
"code": "300035", "code": "300035",
@@ -547,34 +532,33 @@
"cost": 22.29, "cost": 22.29,
"position_pct": 2.42, "position_pct": 2.42,
"is_active": 1, "is_active": 1,
"stop_loss": 12.96, "stop_loss": 13.28,
"take_profit": 15.26, "take_profit": 15.29,
"entry_low": 12.71, "entry_low": 12.77,
"entry_high": 14.83, "entry_high": 14.9,
"action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有", "action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 12.96, "stop_loss": 13.28,
"take_profit": 15.26, "take_profit": 15.29,
"entry_low": 12.71, "entry_low": 12.77,
"entry_high": 14.83, "entry_high": 14.9,
"action": "深套持有 | 深套持有 | 止损12.96 | 目标15.26 | 买入区12.71~14.83 | 信号:持有", "action": "深套持有 | 深套持有 | 止损13.28 | 目标15.29 | 买入区12.77~14.9 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:12.68 弱撑:13.8 弱压:14.37 强压:15.44 | MA5=21.64 MA10=21.74 MA20=22.02 MA60=21.43", "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:12.7 弱撑:13.85 弱压:14.42 强压:15.46 | MA5=21.64 MA10=21.74 MA20=22.02 MA60=21.43",
"multi_tf_context": "震荡/无明显方向 | MA20=22.02 | MA60=21.43 | 长压:日强阻=18.23", "multi_tf_context": "震荡/无明显方向 | MA20=22.02 | MA60=21.43 | 长压:日强阻=18.23",
"reassessed_at": "2026-06-29 12:07", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.62, "rr_ratio": 0.6,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 12.96, "stop_loss": 13.28,
"entry_zone": "12.71~14.83", "entry_zone": "12.77~14.9",
"take_profit_zone": "0~15.26" "take_profit_zone": "0~15.29"
}, },
"price": 14.12, "price": 14.19,
"change_pct": -0.49, "change_pct": 0.0
"market_value": 31206.0
}, },
{ {
"code": "000700", "code": "000700",
@@ -594,13 +578,13 @@
"take_profit": 15.54, "take_profit": 15.54,
"entry_low": 13.33, "entry_low": 13.33,
"entry_high": 14.09, "entry_high": 14.09,
"action": "持有观察 | 止损13.91 | 目标15.54 | 买入区13.33~14.09 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.5),不建议加仓 | 止损13.91 | 目标15.54 | 买入区13.33~14.09 | 信号:持有",
"tech_snapshot": "形态:带上影阴线/bearish 量价:主动买盘占优 强撑:12.72 弱撑:13.2 弱压:14.25 强压:15.54 | MA5=14.54 MA10=15.05 MA20=15.38 MA60=13.59", "tech_snapshot": "形态:阴线/bearish 量价:主动买盘占优 强撑:12.72 弱撑:13.32 弱压:14.49 强压:15.54 | MA5=14.54 MA10=15.05 MA20=15.38 MA60=13.59",
"multi_tf_context": "多周期看多 | MA20=15.38 | MA60=13.59 | 长撑:日弱支撑=13.78 | 长压:日强阻=18.66", "multi_tf_context": "多周期看多 | MA20=15.38 | MA60=13.59 | 长撑:日弱支撑=13.78 | 长压:日强阻=18.66",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:10",
"status": "manual", "status": "manual",
"rr_ratio": 14.52, "rr_ratio": 12.12,
"action_note": "", "action_note": "⚠️盈亏比偏低(1:1.5),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
@@ -608,9 +592,43 @@
"entry_zone": "13.33~14.09", "entry_zone": "13.33~14.09",
"take_profit_zone": "0~15.54" "take_profit_zone": "0~15.54"
}, },
"price": 13.57, "price": 13.86,
"change_pct": -3.96, "change_pct": -1.91
"market_value": 20762.0 },
{
"code": "600563",
"name": "法拉电子",
"shares": 100,
"cost": 147.18,
"position_pct": 2.3,
"is_active": 1,
"stop_loss": 167.33,
"take_profit": 179.4,
"entry_low": 183.73,
"entry_high": 192.92,
"action": "盈利良好 | 止损161.41 | 目标192.67 | 买入区165.51~173.79 | 信号:持有",
"strategy_updated": "2026-06-19 16:01",
"analysis": {
"stop_loss": 167.33,
"take_profit": 179.4,
"entry_low": 183.73,
"entry_high": 192.92,
"action": "盈利良好 | 止损167.33 | 目标179.4 | 买入区183.73~192.92 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/neutral 量价:买卖均衡 强撑:170.17 弱撑:183.73 弱压:196.93 强压:207.64 | MA5=178.6 MA10=169.98 MA20=164.66 MA60=141.48",
"multi_tf_context": "多周期看多 | MA20=164.66 | MA60=141.48 | 长撑:MA20=164.66 | 长压:日强阻=195.5",
"reassessed_at": "2026-06-29 15:12",
"status": "updated",
"rr_ratio": 3.22,
"action_note": "",
"timing_signal": "持有"
},
"trigger": {
"stop_loss": 167.33,
"entry_zone": "183.73~192.92",
"take_profit_zone": "0~179.4"
},
"price": 189.4,
"change_pct": 0.34
}, },
{ {
"code": "01088", "code": "01088",
@@ -619,34 +637,33 @@
"cost": 45.89, "cost": 45.89,
"position_pct": 2.14, "position_pct": 2.14,
"is_active": 1, "is_active": 1,
"stop_loss": 39.98, "stop_loss": 40.06,
"take_profit": 43.67, "take_profit": 43.8,
"entry_low": 40.53, "entry_low": 40.49,
"entry_high": 40.88, "entry_high": 40.98,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有",
"strategy_updated": "2026-06-19 16:01", "strategy_updated": "2026-06-19 16:01",
"analysis": { "analysis": {
"stop_loss": 39.98, "stop_loss": 40.06,
"take_profit": 43.67, "take_profit": 43.8,
"entry_low": 40.53, "entry_low": 40.49,
"entry_high": 40.88, "entry_high": 40.98,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损39.98 | 目标43.67 | 买入区40.53~40.88 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损40.06 | 目标43.8 | 买入区40.49~40.98 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:37.58 弱撑:40.53 弱压:41.57 强压:44.17 | MA5=41.55 MA10=42.48 MA20=44.3 MA60=45.37", "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:37.68 弱撑:40.49 弱压:41.79 强压:44.29 | MA5=41.55 MA10=42.48 MA20=44.3 MA60=45.37",
"multi_tf_context": "震荡/无明显方向 | MA20=44.3 | MA60=45.37 | 长撑:日弱支撑=40.44 | 长压:月强阻=49.62", "multi_tf_context": "震荡/无明显方向 | MA20=44.3 | MA60=45.37 | 长撑:日弱支撑=40.44 | 长压:月强阻=49.62",
"reassessed_at": "2026-06-29 12:06", "reassessed_at": "2026-06-29 15:11",
"status": "updated", "status": "updated",
"rr_ratio": 0.81, "rr_ratio": 0.83,
"action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓", "action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
}, },
"trigger": { "trigger": {
"stop_loss": 39.98, "stop_loss": 40.06,
"entry_zone": "40.53~40.88", "entry_zone": "40.49~40.98",
"take_profit_zone": "0~43.67" "take_profit_zone": "0~43.8"
}, },
"price": 35.76, "price": 35.78,
"change_pct": 1.43, "change_pct": 1.48
"market_value": 22945.0
} }
], ],
"cash": 92664.2, "cash": 92664.2,
@@ -654,7 +671,7 @@
"total_assets": 1239815.6, "total_assets": 1239815.6,
"total_pl": 0, "total_pl": 0,
"position_pct": 88.25, "position_pct": 88.25,
"updated_at": "2026-06-29 12:38", "updated_at": "2026-06-29 15:23",
"source": "/home/hmo/stocks/holding.xls", "source": "/home/hmo/stocks/holding.xls",
"frozen_cash": 39481.4, "frozen_cash": 39481.4,
"available_cash": 73758.85, "available_cash": 73758.85,
+380
View File
@@ -5299,6 +5299,386 @@
"event_label": "止盈区间", "event_label": "止盈区间",
"timestamp": "2026-06-29T12:04:20.775936", "timestamp": "2026-06-29T12:04:20.775936",
"date": "2026-06-29" "date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.55,
"trigger_value": "47.58~48.56",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:12:24.695868",
"date": "2026-06-29"
},
{
"code": "002594",
"name": "比亚迪",
"event_type": "entry_zone",
"price": 79.75,
"trigger_value": "78.13~79.85",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:16:25.226305",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 691.84,
"trigger_value": "677.19~693.59",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:16:27.532958",
"date": "2026-06-29"
},
{
"code": "02628",
"name": "中国人寿",
"event_type": "entry_zone",
"price": 27.84,
"trigger_value": "27.34~27.98",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:28:33.502709",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 700.31,
"trigger_value": "681.68~702.49",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:28:35.273498",
"date": "2026-06-29"
},
{
"code": "02628",
"name": "中国人寿",
"event_type": "entry_zone",
"price": 27.88,
"trigger_value": "27.28~27.94",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:32:46.206445",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 700.4,
"trigger_value": "686.48~702.49",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:32:49.738883",
"date": "2026-06-29"
},
{
"code": "518880",
"name": "黄金ETF华安",
"event_type": "entry_zone",
"price": 8.42,
"trigger_value": "0~8.76",
"event_label": "止盈区间",
"timestamp": "2026-06-29T13:34:49.340891",
"date": "2026-06-29"
},
{
"code": "00700",
"name": "腾讯控股",
"event_type": "entry_zone",
"price": 423.2,
"trigger_value": "411.8~423.8",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:40:53.424720",
"date": "2026-06-29"
},
{
"code": "300124",
"name": "汇川技术",
"event_type": "entry_zone",
"price": 64.01,
"trigger_value": "62.89~64.65",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:40:56.379356",
"date": "2026-06-29"
},
{
"code": "002594",
"name": "比亚迪",
"event_type": "entry_zone",
"price": 79.67,
"trigger_value": "77.98~79.74",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:48:05.635207",
"date": "2026-06-29"
},
{
"code": "300124",
"name": "汇川技术",
"event_type": "entry_zone",
"price": 65.09,
"trigger_value": "63.45~65.13",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:48:06.996123",
"date": "2026-06-29"
},
{
"code": "600519",
"name": "贵州茅台",
"event_type": "entry_zone",
"price": 1194.88,
"trigger_value": "1170.48~1195.44",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:48:07.169069",
"date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.45,
"trigger_value": "47.51~48.48",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:50:06.230543",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 150.59,
"trigger_value": "143.55~150.73",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:50:08.175321",
"date": "2026-06-29"
},
{
"code": "00700",
"name": "腾讯控股",
"event_type": "entry_zone",
"price": 423.4,
"trigger_value": "411.8~423.73",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:52:08.200375",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 701.76,
"trigger_value": "686.0~702.63",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:52:08.376855",
"date": "2026-06-29"
},
{
"code": "300548",
"name": "长芯博创",
"event_type": "entry_zone",
"price": 252.46,
"trigger_value": "240.65~252.68",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:54:08.586170",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 150.12,
"trigger_value": "143.34~150.51",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:56:10.582829",
"date": "2026-06-29"
},
{
"code": "300124",
"name": "汇川技术",
"event_type": "entry_zone",
"price": 65.81,
"trigger_value": "64.47~65.91",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:58:15.649330",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 702.8,
"trigger_value": "687.96~702.97",
"event_label": "买入区间",
"timestamp": "2026-06-29T13:58:17.796797",
"date": "2026-06-29"
},
{
"code": "300308",
"name": "中际旭创",
"event_type": "entry_zone",
"price": 1212.85,
"trigger_value": "1167.99~1216.1",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:00:28.977972",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 150.63,
"trigger_value": "144.0~151.2",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:04:36.667548",
"date": "2026-06-29"
},
{
"code": "688795",
"name": "摩尔线程-U",
"event_type": "entry_zone",
"price": 700.42,
"trigger_value": "688.8~702.93",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:06:41.553640",
"date": "2026-06-29"
},
{
"code": "300124",
"name": "汇川技术",
"event_type": "entry_zone",
"price": 65.42,
"trigger_value": "64.1~65.46",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:14:51.556374",
"date": "2026-06-29"
},
{
"code": "300548",
"name": "长芯博创",
"event_type": "entry_zone",
"price": 251.25,
"trigger_value": "240.87~252.91",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:14:53.153846",
"date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.49,
"trigger_value": "47.52~48.49",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:18:56.358778",
"date": "2026-06-29"
},
{
"code": "300308",
"name": "中际旭创",
"event_type": "entry_zone",
"price": 1214.1,
"trigger_value": "1168.95~1216.58",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:34:13.493124",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 148.88,
"trigger_value": "142.77~149.91",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:34:18.543871",
"date": "2026-06-29"
},
{
"code": "688630",
"name": "芯碁微装",
"event_type": "entry_zone",
"price": 542.1,
"trigger_value": "531.16~542.22",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:36:14.967114",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 149.65,
"trigger_value": "142.94~150.09",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:40:20.036549",
"date": "2026-06-29"
},
{
"code": "300308",
"name": "中际旭创",
"event_type": "entry_zone",
"price": 1215.58,
"trigger_value": "1170.92~1217.57",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:42:20.627552",
"date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.47,
"trigger_value": "47.51~48.49",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:44:22.882398",
"date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.46,
"trigger_value": "47.51~48.49",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:48:26.528220",
"date": "2026-06-29"
},
{
"code": "688981",
"name": "中芯国际",
"event_type": "entry_zone",
"price": 149.98,
"trigger_value": "142.92~150.07",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:48:28.172626",
"date": "2026-06-29"
},
{
"code": "601318",
"name": "中国平安",
"event_type": "entry_zone",
"price": 48.49,
"trigger_value": "47.53~48.5",
"event_label": "买入区间",
"timestamp": "2026-06-29T14:56:35.987585",
"date": "2026-06-29"
},
{
"code": "00700",
"name": "腾讯控股",
"event_type": "entry_zone",
"price": 422.2,
"trigger_value": "411.8~423.53",
"event_label": "买入区间",
"timestamp": "2026-06-29T15:10:50.407974",
"date": "2026-06-29"
},
{
"code": "06869",
"name": "长飞光纤光缆",
"event_type": "entry_zone",
"price": 241.2,
"trigger_value": "227.27~241.93",
"event_label": "买入区间",
"timestamp": "2026-06-29T15:10:52.129972",
"date": "2026-06-29"
} }
] ]
} }
+41 -41
View File
@@ -10,7 +10,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 798.98, "high": 798.98,
"low": 720.0, "low": 720.0,
"close": 786.05 "close": 793.55
} }
], ],
"000657": [ "000657": [
@@ -24,7 +24,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 109.68, "high": 109.68,
"low": 91.68, "low": 91.68,
"close": 93.04 "close": 95.57
} }
], ],
"000700": [ "000700": [
@@ -37,8 +37,8 @@
{ {
"date": "2026-06-29", "date": "2026-06-29",
"high": 15.28, "high": 15.28,
"low": 13.52, "low": 13.4,
"close": 13.57 "close": 13.86
} }
], ],
"000711": [ "000711": [
@@ -66,7 +66,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 980.0, "high": 980.0,
"low": 872.31, "low": 872.31,
"close": 924.0 "close": 970.0
} }
], ],
"002594": [ "002594": [
@@ -80,7 +80,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 81.8, "high": 81.8,
"low": 77.6, "low": 77.6,
"close": 80.26 "close": 79.64
} }
], ],
"00700": [ "00700": [
@@ -94,7 +94,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 432.0, "high": 432.0,
"low": 411.0, "low": 411.0,
"close": 429.0 "close": 422.2
} }
], ],
"00968": [ "00968": [
@@ -122,7 +122,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 85.25, "high": 85.25,
"low": 79.05, "low": 79.05,
"close": 81.95 "close": 84.15
} }
], ],
"01070": [ "01070": [
@@ -136,7 +136,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 13.0, "high": 13.0,
"low": 12.4, "low": 12.4,
"close": 12.85 "close": 12.9
} }
], ],
"01088": [ "01088": [
@@ -148,9 +148,9 @@
}, },
{ {
"date": "2026-06-29", "date": "2026-06-29",
"high": 41.22, "high": 41.48,
"low": 40.0, "low": 40.0,
"close": 41.22 "close": 41.3
} }
], ],
"01211": [ "01211": [
@@ -164,7 +164,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 75.55, "high": 75.55,
"low": 72.2, "low": 72.2,
"close": 74.15 "close": 73.35
} }
], ],
"01478": [ "01478": [
@@ -178,7 +178,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 7.17, "high": 7.17,
"low": 6.6, "low": 6.6,
"close": 6.85 "close": 6.92
} }
], ],
"01888": [ "01888": [
@@ -192,7 +192,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 103.5, "high": 103.5,
"low": 89.05, "low": 89.05,
"close": 89.5 "close": 96.55
} }
], ],
"02202": [ "02202": [
@@ -206,7 +206,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 2.36, "high": 2.36,
"low": 2.16, "low": 2.16,
"close": 2.24 "close": 2.22
} }
], ],
"02318": [ "02318": [
@@ -220,7 +220,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 52.45, "high": 52.45,
"low": 50.0, "low": 50.0,
"close": 52.4 "close": 52.05
} }
], ],
"02359": [ "02359": [
@@ -234,7 +234,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 154.6, "high": 154.6,
"low": 143.4, "low": 143.4,
"close": 153.3 "close": 153.8
} }
], ],
"02388": [ "02388": [
@@ -248,7 +248,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 46.3, "high": 46.3,
"low": 43.42, "low": 43.42,
"close": 43.5 "close": 43.66
} }
], ],
"02628": [ "02628": [
@@ -262,7 +262,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 28.56, "high": 28.56,
"low": 26.7, "low": 26.7,
"close": 28.28 "close": 27.76
} }
], ],
"06160": [ "06160": [
@@ -276,7 +276,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 177.0, "high": 177.0,
"low": 164.7, "low": 164.7,
"close": 175.3 "close": 175.8
} }
], ],
"06869": [ "06869": [
@@ -290,7 +290,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 286.8, "high": 286.8,
"low": 227.2, "low": 227.2,
"close": 229.0 "close": 241.2
} }
], ],
"09868": [ "09868": [
@@ -304,7 +304,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 49.14, "high": 49.14,
"low": 45.32, "low": 45.32,
"close": 48.28 "close": 47.5
} }
], ],
"09988": [ "09988": [
@@ -318,7 +318,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 95.45, "high": 95.45,
"low": 88.65, "low": 88.65,
"close": 95.2 "close": 93.4
} }
], ],
"300035": [ "300035": [
@@ -332,7 +332,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 15.12, "high": 15.12,
"low": 13.74, "low": 13.74,
"close": 14.12 "close": 14.19
} }
], ],
"300124": [ "300124": [
@@ -346,7 +346,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 66.75, "high": 66.75,
"low": 62.01, "low": 62.01,
"close": 62.4 "close": 65.23
} }
], ],
"300308": [ "300308": [
@@ -360,7 +360,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 1296.94, "high": 1296.94,
"low": 1169.49, "low": 1169.49,
"close": 1178.1 "close": 1220.0
} }
], ],
"300548": [ "300548": [
@@ -373,8 +373,8 @@
{ {
"date": "2026-06-29", "date": "2026-06-29",
"high": 286.48, "high": 286.48,
"low": 245.1, "low": 243.58,
"close": 248.18 "close": 253.19
} }
], ],
"300750": [ "300750": [
@@ -388,7 +388,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 409.81, "high": 409.81,
"low": 378.2, "low": 378.2,
"close": 392.1 "close": 392.36
} }
], ],
"518880": [ "518880": [
@@ -402,7 +402,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 8.479, "high": 8.479,
"low": 8.293, "low": 8.293,
"close": 8.475 "close": 8.449
} }
], ],
"600519": [ "600519": [
@@ -416,7 +416,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 1215.0, "high": 1215.0,
"low": 1151.01, "low": 1151.01,
"close": 1206.29 "close": 1194.96
} }
], ],
"600563": [ "600563": [
@@ -430,7 +430,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 198.8, "high": 198.8,
"low": 177.7, "low": 177.7,
"close": 188.61 "close": 189.4
} }
], ],
"601318": [ "601318": [
@@ -444,7 +444,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 49.49, "high": 49.49,
"low": 46.9, "low": 46.9,
"close": 48.53 "close": 48.6
} }
], ],
"601899": [ "601899": [
@@ -456,9 +456,9 @@
}, },
{ {
"date": "2026-06-29", "date": "2026-06-29",
"high": 25.9, "high": 25.96,
"low": 24.86, "low": 24.86,
"close": 25.56 "close": 25.79
} }
], ],
"688411": [ "688411": [
@@ -472,7 +472,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 288.49, "high": 288.49,
"low": 255.19, "low": 255.19,
"close": 283.6 "close": 286.0
} }
], ],
"688630": [ "688630": [
@@ -486,7 +486,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 558.0, "high": 558.0,
"low": 503.66, "low": 503.66,
"close": 507.0 "close": 548.07
} }
], ],
"688639": [ "688639": [
@@ -498,9 +498,9 @@
}, },
{ {
"date": "2026-06-29", "date": "2026-06-29",
"high": 16.75, "high": 16.95,
"low": 14.52, "low": 14.52,
"close": 16.47 "close": 16.63
} }
], ],
"688795": [ "688795": [
@@ -514,7 +514,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 708.2, "high": 708.2,
"low": 663.8, "low": 663.8,
"close": 696.24 "close": 703.18
} }
], ],
"688981": [ "688981": [
@@ -528,7 +528,7 @@
"date": "2026-06-29", "date": "2026-06-29",
"high": 156.22, "high": 156.22,
"low": 141.0, "low": 141.0,
"close": 145.1 "close": 151.0
} }
], ],
"002015": [ "002015": [
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env python3
"""data_freshness.py — 数据新鲜度校验
所有报告管道在生成输出前必须调用 check_fresh()。
返回 (pass: bool, details: str),如果数据过期则阻止生成操作建议。
用法:
from data_freshness import check_fresh
ok, msg = check_fresh()
if not ok:
print(f"⚠️ 数据过期: {msg}")
sys.exit(0) # 不生成报告
校验规则:
- 盘中 (9:30~15:00)price/live_prices.json 必须在 5 分钟内刷新
- 盘后 (9:30以前/15:00以后):允许最长 120 分钟
- 周末/节假日:跳过校验
"""
import json, os
from datetime import datetime, timedelta
LIVE_PRICES_PATH = "/home/hmo/web-dashboard/data/live_prices.json"
PORTFOLIO_PATH = "/home/hmo/web-dashboard/data/portfolio.json"
def is_market_hours():
now = datetime.now()
if now.weekday() >= 5: # 周六日
return False, "weekend"
t = now.hour * 60 + now.minute
if 9*60+30 <= t <= 15*60:
return True, "trading"
return False, "closed"
def check_fresh():
"""返回 (ok: bool, msg: str)"""
now = datetime.now()
# 先看是不是交易日
in_market, period = is_market_hours()
max_age_min = 5 if in_market else 120
# 主指标:live_prices.json
if os.path.exists(LIVE_PRICES_PATH):
try:
lp = json.load(open(LIVE_PRICES_PATH))
lp_time = lp.get("updated_at", "")
if not lp_time:
return False, "live_prices.json updated_at 为空"
lp_dt = datetime.fromisoformat(lp_time)
age = (now - lp_dt).total_seconds() / 60
if age > max_age_min:
return False, f"live_prices.json 已 {age:.0f} 分钟未更新(阈值 {max_age_min} 分钟)"
return True, f"数据新鲜({age:.0f} 分钟前)"
except Exception as e:
return False, f"live_prices.json 读取失败: {e}"
else:
# fallback: portfolio.json
if os.path.exists(PORTFOLIO_PATH):
try:
pf = json.load(open(PORTFOLIO_PATH))
pf_time = pf.get("updated_at", "")
if not pf_time:
return False, "portfolio.json updated_at 为空"
pf_dt = datetime.fromisoformat(pf_time)
age = (now - pf_dt).total_seconds() / 60
if age > max_age_min:
return False, f"portfolio.json 已 {age:.0f} 分钟未更新(阈值 {max_age_min} 分钟)"
return True, f"数据新鲜(portfolio.json {age:.0f} 分钟前)"
except Exception as e:
return False, f"portfolio.json 读取失败: {e}"
return False, "live_prices.json 和 portfolio.json 均不存在"
if __name__ == "__main__":
ok, msg = check_fresh()
print(f"{'' if ok else ''} {msg}")
+11
View File
@@ -135,6 +135,17 @@ def refresh_data_prices():
prices = fetch_all_prices(list(all_codes)) prices = fetch_all_prices(list(all_codes))
updated = 0 updated = 0
# 保存全量实时价快照(供报告管道消费,确保分析用最新数据)
try:
live = {"updated_at": datetime.now().isoformat(), "prices": {}}
for code in all_codes:
if code in prices:
p, c, chg = prices[code]
live["prices"][code] = {"price": p, "change_pct": chg}
json.dump(live, open("/home/hmo/web-dashboard/data/live_prices.json", "w"), indent=2)
except Exception:
pass
# 更新portfolio(只在价格变化时写入,避免触发文件变更通知) # 更新portfolio(只在价格变化时写入,避免触发文件变更通知)
changed = False changed = False
for s in pf.get('holdings', []): for s in pf.get('holdings', []):