From c745f1318ab8a7cbabcb5c3cc47fd4455a242952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Thu, 9 Jul 2026 10:33:50 +0800 Subject: [PATCH] =?UTF-8?q?stale=5Fpush=5Fwlin:=20=E6=8C=89Dad=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=B5=81=E7=A8=8B=E9=87=8D=E6=9E=84=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 加重评冷却(4小时)— 查holding_strategies.updated_at 2. 修zone_notes早退bug — 有区间说明时不静默退出 3. zone_notes冷却30分→4小时(匹配重评冷却) 4. 标题自适应:有推荐→自选买入提醒 | 仅区间提醒→操作区间提醒 5. 区间说明格式:'进入操作区间,但重评结果:x' 6. 操作建议标题只在有可操作项时显示 7. has_actionable判定改用实际lines内容 --- data/candidate_pool.json | 80 +- data/mofin.db-shm | Bin 0 -> 32768 bytes data/mofin.db-wal | Bin 0 -> 2055912 bytes data/price_events.json | 2560 +++++++++++++++++++++++++++ data/price_history.json | 1024 +---------- data/stocks/00700.json | 5 + data/stocks/01088.json | 5 + data/stocks/01211.json | 5 + data/stocks/01478.json | 5 + data/stocks/02202.json | 5 + data/stocks/300035.json | 5 + data/stocks/518880.json | 5 + data/stocks/600563.json | 5 + data/stocks/688981.json | 5 + data/strategy_staleness_report.json | 385 +++- scripts/intraday_health_check.py | 3 +- scripts/stale_detector.py | 45 +- scripts/stale_push_wlin.py | 39 +- scripts/system_audit.py | 2 +- scripts/xiaoguo_signal_consumer.py | 37 +- static/mofin_health.json | 545 +++--- system_audit.py | 2 +- 22 files changed, 3452 insertions(+), 1315 deletions(-) create mode 100644 data/mofin.db-shm create mode 100644 data/mofin.db-wal diff --git a/data/candidate_pool.json b/data/candidate_pool.json index 4a3bcca9..88d56173 100644 --- a/data/candidate_pool.json +++ b/data/candidate_pool.json @@ -1,6 +1,6 @@ { - "last_updated": "2026-07-08 15:41", - "total_candidates": 34, + "last_updated": "2026-07-09 10:32", + "total_candidates": 35, "sectors_analyzed_today": [ "半导体", "金属新材料", @@ -1352,18 +1352,18 @@ "code": "002371", "name": "北方华创", "sector": "半导体", - "xiaoguo_score": 8.0, - "xiaoguo_reason": "平台型半导体设备龙头,覆盖刻蚀/沉积/清洗等全环节,业绩确定性高。板块资金净流入主力承接标的,估值处于历史中低位区间。", + "xiaoguo_score": 8, + "xiaoguo_reason": "半导体设备平台型龙头,订单饱满且国产替代核心受益者,技术面处于箱体震荡下沿,具备较高安全边际与弹性。", "xiaoguo_strategy": { - "entry_range": "295-305元", - "stop_loss": "282元", - "target": "340-355元" + "entry_range": "280-290元", + "stop_loss": "265元", + "target": "330-350元" }, - "verified_price": 795.78, - "verified_change": -0.97, + "verified_price": 826.0, + "verified_change": 2.95, "added_at": "2026-07-07 12:12", - "last_updated": "2026-07-07 13:19", - "num_observations": 2, + "last_updated": "2026-07-09 10:07", + "num_observations": 3, "score_history": [ { "date": "2026-07-07 12:12", @@ -1372,6 +1372,10 @@ { "date": "2026-07-07 13:19", "score": 8.0 + }, + { + "date": "2026-07-09 10:07", + "score": 8 } ], "zhiwei_star": null, @@ -1388,18 +1392,18 @@ "code": "688012", "name": "中微公司", "sector": "半导体", - "xiaoguo_score": 8.5, - "xiaoguo_reason": "刻蚀设备国产替代核心标的,订单饱满,AI/HBM扩产直接受益。技术面回踩关键支撑位获资金承接,机构持仓集中。", + "xiaoguo_score": 7.5, + "xiaoguo_reason": "刻蚀设备全球竞争力强,受益晶圆厂扩产与先进制程突破,短期随板块回调至支撑位,风险收益比合理。", "xiaoguo_strategy": { - "entry_range": "175-182元", - "stop_loss": "168元", - "target": "205-215元" + "entry_range": "180-185元", + "stop_loss": "170元", + "target": "210-220元" }, - "verified_price": 414.06, - "verified_change": -1.41, + "verified_price": 438.5, + "verified_change": 3.66, "added_at": "2026-07-07 12:12", - "last_updated": "2026-07-07 13:19", - "num_observations": 2, + "last_updated": "2026-07-09 10:07", + "num_observations": 3, "score_history": [ { "date": "2026-07-07 12:12", @@ -1408,6 +1412,10 @@ { "date": "2026-07-07 13:19", "score": 8.5 + }, + { + "date": "2026-07-09 10:07", + "score": 7.5 } ], "zhiwei_star": null, @@ -1579,6 +1587,38 @@ "drop_reason": null, "trend_warning": false, "trend_note": "" + }, + { + "code": "603986", + "name": "兆易创新", + "sector": "半导体", + "xiaoguo_score": 7, + "xiaoguo_reason": "存储与MCU双轮驱动,消费电子复苏与车规需求拉动业绩拐点,技术面缩量企稳,适合波段操作。", + "xiaoguo_strategy": { + "entry_range": "75-80元", + "stop_loss": "70元", + "target": "95-100元" + }, + "verified_price": 642.95, + "verified_change": 6.6, + "added_at": "2026-07-09 10:07", + "last_updated": "2026-07-09 10:07", + "num_observations": 1, + "score_history": [ + { + "date": "2026-07-09 10:07", + "score": 7 + } + ], + "zhiwei_star": null, + "zhiwei_reviewed": false, + "zhiwei_reviewed_at": null, + "promoted": false, + "promoted_at": null, + "dropped": false, + "drop_reason": null, + "trend_warning": false, + "trend_note": "" } ] } \ No newline at end of file diff --git a/data/mofin.db-shm b/data/mofin.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..5b28b44dae95c87bb9e9508902b1b922aa604fae GIT binary patch literal 32768 zcmeI*bC6tF6vy%JFLoxjZQHhO+qP}nwr$(CZ7s9NzTT~=nwm;7n^a~psX4c*yH4GH zeb4F7dGF2q(|se~O@V97bRGh?ch1x7Fc2+%%eeW=r<#-L!mXBL8}AG}a+m*W1FFV* zANdQ9|95fc$+hkW55wcUD-Py7dIyC2{vcOq80+Read0P(D@ST4hbvDTCy#qB*WA~} z-dVGEoA~7V&S`+F2e+Iad~F{*uQA3sZ(O}|t>-y*^~HVO;{SX;=iu3Pgk$S&>hXOZ zy*$+FE>i4Pmg>#?i8UV65ZoWAV<<#k_ zZ@7czUawEacbuLqar!gaaqojadUvuP9f zGJ(MwrjZ(>@tUNmnxWa6r-fRgWZ%GmhS3-9_yK2>W!EE_&z|sv#bCF zc7FXmByNNwB2kD*8q$-AtmGg!`6x&cic^ZRRG>1|s7W2_(}5|*=ywQOKB+t|q-_H&4%oZvL)xX2Z*bBnt?8MUv|9oZFtSA%sGJ&(Ypv$_Zo4TX>dZed%q1STlKH~Klq@fz2 z(Hf_Tnxg5NrMX(5#agD7TBnWLqV3wHy*i-7I;NBVYfZ1S{+LJjClEmiL1@AffyhKB z4)IAuQc{qbbYvt8*~vv-3Q(A0l%x#hsYF$3P@8%*qzTPwMO!-1nV$4xAVV0%SSB!; zY0iE$bC}N}ma>A?tYafv*v>BYa)84e<0NM|&n2#MgWEjh883OmPyEVz{&Kdm@vlG% zst^jTu!^9_il&%~qxedsq)MUG%BXD0sXWTBLMo~fDy?#=s4A+iTB@tYYNnQIqxR~g zuIi!Q>i0u-do<&i$P}hCi@7XdG0RxV8rHLkt?Xbo`#8uEj&q8$T;MX-xXB$J^PE?_ z5rBoVaQg-E1UKLPb6;nx-QF&ETRn<^! z)%zjse$4CgV^yy<|BtcQoC%nK37CKh_*#JccVNk&R~(VsyKWenqa;_Nt;Svizj z`BYFvR9vN0RuxoP)xP0h`&jg$samMD+Nq489iL3iA^J&emx*Ouz(8 RzywUd1WdpLOu)|w`~wj@KoS4| literal 0 HcmV?d00001 diff --git a/data/mofin.db-wal b/data/mofin.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..4e47ccd89fa4f9dedaa6b67500830d9a7791b987 GIT binary patch literal 2055912 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 GBlus|h4+g9 literal 0 HcmV?d00001 diff --git a/data/price_events.json b/data/price_events.json index 3aeebc4f..3f32a053 100644 --- a/data/price_events.json +++ b/data/price_events.json @@ -29,6 +29,2566 @@ "event_label": "止盈区间", "timestamp": "2026-07-08T18:54:16.531662", "date": "2026-07-08" + }, + { + "code": "000518", + "name": "四环生物", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "0.0~3.93", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:00:55.605592", + "date": "2026-07-09" + }, + { + "code": "002371", + "name": "北方华创", + "event_type": "entry_zone", + "price": 802.32, + "trigger_value": "786.27~806.98", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:03.115873", + "date": "2026-07-09" + }, + { + "code": "002371", + "name": "北方华创", + "event_type": "entry_zone", + "price": 802.32, + "trigger_value": "0.0~862.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:01:05.307141", + "date": "2026-07-09" + }, + { + "code": "00981", + "name": "中芯国际", + "event_type": "entry_zone", + "price": 75.8, + "trigger_value": "75.12~78.18", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:05.712728", + "date": "2026-07-09" + }, + { + "code": "01888", + "name": "建滔积层板", + "event_type": "entry_zone", + "price": 66.75, + "trigger_value": "66.54~69.26", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:09.513051", + "date": "2026-07-09" + }, + { + "code": "01888", + "name": "建滔积层板", + "event_type": "entry_zone", + "price": 66.75, + "trigger_value": "0.0~80.37", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:01:10.490786", + "date": "2026-07-09" + }, + { + "code": "301308", + "name": "江波龙", + "event_type": "entry_zone", + "price": 592.71, + "trigger_value": "580.86~604.56", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:10.984621", + "date": "2026-07-09" + }, + { + "code": "301308", + "name": "江波龙", + "event_type": "entry_zone", + "price": 592.71, + "trigger_value": "0.0~741.03", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:01:12.717524", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "entry_zone", + "price": 12.23, + "trigger_value": "11.99~12.39", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:13.164089", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "entry_zone", + "price": 12.23, + "trigger_value": "0.0~13.35", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:01:14.272001", + "date": "2026-07-09" + }, + { + "code": "603501", + "name": "豪威集团", + "event_type": "entry_zone", + "price": 100.95, + "trigger_value": "98.93~101.27", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:01:14.744662", + "date": "2026-07-09" + }, + { + "code": "603501", + "name": "豪威集团", + "event_type": "entry_zone", + "price": 100.95, + "trigger_value": "0.0~106.95", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:01:15.246256", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:04:52.175970", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:05:05.744863", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "5.5~5.66", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:05:12.993696", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "0.0~5.99", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:05:25.812656", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 825.0, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:05:31.594970", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 29.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:05:42.754384", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:05:53.082863", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:05:58.783802", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:06:10.739813", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:06:16.452592", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.26, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:06:16.985095", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:08:57.885459", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:09:08.373211", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "5.5~5.66", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:09:14.072704", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "0.0~5.99", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:09:24.742558", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 825.0, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:09:31.080290", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 29.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:09:43.746059", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:09:55.753004", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:10:06.343548", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:10:13.986874", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:10:25.036038", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.26, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:10:32.136707", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:11:09.489324", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:11:18.611818", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "5.5~5.66", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:11:21.443519", + "date": "2026-07-09" + }, + { + "code": "000949", + "name": "新乡化纤", + "event_type": "entry_zone", + "price": 5.61, + "trigger_value": "0.0~5.99", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:11:31.096143", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 825.0, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:11:35.628519", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 29.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:11:41.078741", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:11:44.470426", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:11:50.133532", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:11:51.364608", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:11:56.832508", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.26, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:12:01.724854", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:14:17.490121", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:14:29.966990", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 825.0, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:14:34.831096", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 29.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:14:49.102963", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:14:58.836418", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 46.02, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:15:13.809328", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:15:20.426499", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:15:31.366054", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.26, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:15:38.604696", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:18:27.838946", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:18:29.089216", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:18:33.951903", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:18:43.700297", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.01, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:18:45.127153", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:18:51.579770", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:18:55.942056", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 470.51, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:18:57.338607", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:20:38.521597", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:20:41.409761", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:20:44.171273", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:20:49.450191", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.01, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:20:49.791701", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.61, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:20:51.551029", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.61, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:20:54.143179", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 475.0, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:20:58.507861", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:24:38.873130", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:24:44.640340", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.0, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:24:47.254621", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:25:02.572277", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:25:15.052999", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.01, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:25:16.942814", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 341.0, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:25:22.090893", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 341.0, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:25:35.147309", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:28:47.567507", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:28:50.811281", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 840.01, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:28:54.905591", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.0, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:28:55.552073", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:29:03.475128", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.5, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:29:06.744637", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.46, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:29:13.559391", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 346.21, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:29:18.457443", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 346.21, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:29:27.611575", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:31:03.480763", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:31:05.344327", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.11, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:31:13.732845", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.83, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:31:20.124961", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.83, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:31:22.297023", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.71, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:31:22.975681", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 346.56, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:31:26.712056", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 346.56, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:32:04.241144", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 481.01, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:32:25.928385", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:34:17.672257", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:34:30.724553", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 839.22, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:34:38.559794", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.62, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:34:55.114928", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 219.46, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:35:15.503601", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.53, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:35:30.129011", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.53, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:35:59.220691", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.65, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:36:09.484916", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:38:22.947665", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.78, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:38:24.824747", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.92, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:38:25.571405", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.91, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:38:26.300221", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.91, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:38:26.994908", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.41, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:38:31.197408", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 345.16, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:38:34.161990", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 345.16, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:38:34.961418", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:40:39.315916", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:40:51.990939", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.46, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:40:59.890813", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.85, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:41:17.621982", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.85, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:41:21.426521", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.37, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:41:32.763982", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.74, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:41:45.583407", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.74, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:42:03.572660", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:44:50.123056", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:45:07.269377", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.01, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:45:21.182012", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.67, + "trigger_value": "45.1~46.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:45:37.884243", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 45.67, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:45:56.822597", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.27, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:46:15.815431", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 345.2, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:46:28.978801", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:49:05.611027", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:49:15.872194", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.01, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:49:24.784600", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 217.87, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:49:33.577015", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 44.78, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:49:43.318269", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.6, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:49:51.666599", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.2, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:50:00.242555", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.2, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:50:01.941240", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:52:10.578662", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.82, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:52:22.595619", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 835.01, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:52:29.614023", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.89, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:52:39.277255", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 217.88, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:52:56.073442", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 44.32, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:53:06.333827", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 44.32, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T09:53:18.188423", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.75, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T09:53:23.210330", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.66, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:53:31.722217", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 342.66, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:53:33.240948", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 481.0, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:53:33.769639", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.85, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:56:22.996518", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 824.91, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:56:38.063074", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.65, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:56:52.939680", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 215.69, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:57:05.718162", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 44.17, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:57:20.554435", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 44.17, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T09:57:32.377638", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 339.61, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:57:39.898102", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 339.61, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T09:57:57.635353", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 475.16, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T09:58:06.342720", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.83, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:00:52.927215", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.83, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:01:15.386370", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 816.3, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:01:16.074205", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.9, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:01:20.101691", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 216.12, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:01:20.820422", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 44.09, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:01:27.583873", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 44.09, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:01:31.088779", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.71, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:01:31.996068", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 338.5, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:01:32.585905", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 338.5, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:01:41.841652", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 476.99, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:01:44.399691", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:05:03.784745", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.81, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:05:16.406884", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 824.1, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:05:25.373319", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.96, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:05:39.796203", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 216.89, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:05:49.150118", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 43.96, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:06:00.666323", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 43.96, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:06:10.552201", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.67, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:06:19.939636", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.84, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:06:31.948733", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 340.84, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:06:45.726820", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 477.0, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:06:51.889215", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.79, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:08:12.610647", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.79, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:08:27.529679", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 824.47, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:08:34.671522", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:08:44.157025", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 216.6, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:08:56.647514", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 43.61, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:09:13.647791", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 43.61, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:09:25.911999", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 341.98, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:09:32.065547", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 341.98, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:09:43.048814", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 475.88, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:09:49.520024", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.8, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:10:25.695268", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.8, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:10:39.261357", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 825.02, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:10:42.515024", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.1, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:10:50.958463", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 216.04, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:10:51.561167", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 42.61, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:10:52.160357", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 42.61, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:11:02.679938", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.01, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:11:03.265533", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 343.01, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:11:11.091616", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 478.73, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:11:15.472872", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.8, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:14:26.300252", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.8, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:14:27.658848", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 822.01, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:14:28.211345", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.19, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:14:30.657928", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 215.97, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:14:41.981182", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 43.11, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:14:42.883884", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 43.11, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:14:45.282890", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.54, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:14:48.898868", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 345.5, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:14:53.274285", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 345.5, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:14:58.463649", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 480.98, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:15:00.525215", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.79, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:18:39.067175", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.79, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:18:42.316216", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 821.0, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:18:43.520993", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.16, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:18:50.251490", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 216.15, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:18:51.110450", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 43.48, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:18:52.706934", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 43.48, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:19:05.292601", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.48, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:19:08.399171", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 344.99, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:19:10.041025", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 344.99, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:19:13.765964", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 475.16, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:19:21.682502", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:22:59.284209", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.77, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:23:17.551179", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 820.01, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:23:27.461374", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.22, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:23:37.822393", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 217.74, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:23:39.126933", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 43.05, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:23:51.494563", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 43.05, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:23:56.368672", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.38, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:23:57.436867", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 347.5, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:24:05.247666", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 347.5, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:24:06.279264", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.61, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:24:07.120927", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.76, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:24:36.660062", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.76, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:24:43.372004", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 819.34, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:24:44.093501", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.07, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:24:57.432756", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 217.78, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:25:02.235305", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.74, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:27:11.487921", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.74, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:27:27.191967", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 817.01, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:27:32.096435", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 28.11, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:27:40.512215", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 218.56, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:27:52.686668", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 42.61, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:27:54.425965", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 42.61, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:27:58.029613", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.46, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:28:04.409582", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 349.3, + "trigger_value": "336.14~349.81", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:28:16.254772", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 349.3, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:28:35.060009", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 469.92, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:28:43.484125", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.74, + "trigger_value": "3.73~3.84", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:30:56.603490", + "date": "2026-07-09" + }, + { + "code": "000850", + "name": "华茂股份", + "event_type": "entry_zone", + "price": 3.74, + "trigger_value": "0.0~4.04", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:31:11.375711", + "date": "2026-07-09" + }, + { + "code": "001309", + "name": "德明利", + "event_type": "entry_zone", + "price": 816.5, + "trigger_value": "808.5~841.5", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:31:13.093586", + "date": "2026-07-09" + }, + { + "code": "002396", + "name": "星网锐捷", + "event_type": "entry_zone", + "price": 27.95, + "trigger_value": "0.0~30.69", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:31:16.065030", + "date": "2026-07-09" + }, + { + "code": "300548", + "name": "长芯博创", + "event_type": "entry_zone", + "price": 217.05, + "trigger_value": "0.0~219.98", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:31:17.697100", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "entry_zone", + "price": 42.77, + "trigger_value": "0.0~50.13", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:31:33.894413", + "date": "2026-07-09" + }, + { + "code": "600111", + "name": "北方稀土", + "event_type": "stop_loss", + "price": 42.77, + "trigger_value": "44.64", + "event_label": "", + "timestamp": "2026-07-09T10:31:37.648775", + "date": "2026-07-09" + }, + { + "code": "601101", + "name": "昊华能源", + "event_type": "stop_loss", + "price": 11.4, + "trigger_value": "11.75", + "event_label": "", + "timestamp": "2026-07-09T10:31:45.963397", + "date": "2026-07-09" + }, + { + "code": "688041", + "name": "海光信息", + "event_type": "entry_zone", + "price": 351.31, + "trigger_value": "0.0~375.46", + "event_label": "止盈区间", + "timestamp": "2026-07-09T10:31:50.663663", + "date": "2026-07-09" + }, + { + "code": "688630", + "name": "芯碁微装", + "event_type": "entry_zone", + "price": 473.85, + "trigger_value": "463.79~482.73", + "event_label": "加仓区间", + "timestamp": "2026-07-09T10:31:57.651960", + "date": "2026-07-09" } ] } \ No newline at end of file diff --git a/data/price_history.json b/data/price_history.json index d9e42086..8d12c228 100644 --- a/data/price_history.json +++ b/data/price_history.json @@ -1,962 +1,112 @@ { - "01888": [ - { - "date": "2026-07-02", - "high": 90.1, - "low": 79.85, - "close": 86.2 - }, - { - "date": "2026-07-07", - "high": 74.75, - "low": 67.1, - "close": 68.85 - }, - { - "date": "2026-07-08", - "high": 74.5, - "low": 67.65, - "close": 67.9, - "volume": 66360886.0, - "amount": 4699974338.55 - } - ], - "01478": [ - { - "date": "2026-07-02", - "high": 7.08, - "low": 6.76, - "close": 6.97 - }, - { - "date": "2026-07-08", - "high": 6.94, - "low": 6.5, - "close": 6.83, - "volume": 6589000.0, - "amount": 44625949.0 - } - ], - "600519": [ - { - "date": "2026-07-02", - "high": 1215.52, - "low": 1190.51, - "close": 1203.0 - }, - { - "date": "2026-07-03", - "high": 1215.52, - "low": 1185.0, - "close": 1194.45 - }, - { - "date": "2026-07-06", - "high": 1215.0, - "low": 1180.0, - "close": 1206.91 - }, - { - "date": "2026-07-07", - "high": 1215.0, - "low": 1180.0, - "close": 1188.8 - }, - { - "date": "2026-07-08", - "high": 1202.0, - "low": 1177.0, - "close": 1199.3, - "volume": 25776.0, - "amount": 307193.0 - } - ], - "02202": [ - { - "date": "2026-07-02", - "high": 2.27, - "low": 2.18, - "close": 2.23 - }, - { - "date": "2026-07-08", - "high": 2.29, - "low": 2.19, - "close": 2.27, - "volume": 16038100.0, - "amount": 36020668.5 - } - ], - "02318": [ - { - "date": "2026-07-02", - "high": 53.0, - "low": 51.7, - "close": 52.3 - }, - { - "date": "2026-07-03", - "high": 53.0, - "low": 51.7, - "close": 52.45 - }, - { - "date": "2026-07-07", - "high": 53.05, - "low": 52.0, - "close": 52.25 - }, - { - "date": "2026-07-08", - "high": 54.2, - "low": 52.0, - "close": 53.95 - } - ], - "601318": [ - { - "date": "2026-07-02", - "high": 50.2, - "low": 48.8, - "close": 48.92 - }, - { - "date": "2026-07-03", - "high": 50.2, - "low": 48.31, - "close": 49.09 - }, - { - "date": "2026-07-06", - "high": 49.96, - "low": 48.81, - "close": 49.38 - }, - { - "date": "2026-07-07", - "high": 50.22, - "low": 48.81, - "close": 49.29 - }, - { - "date": "2026-07-08", - "high": 50.22, - "low": 48.96, - "close": 49.54, - "volume": 540995.0, - "amount": 267859.0 - } - ], - "02359": [ - { - "date": "2026-07-02", - "high": 158.7, - "low": 151.1, - "close": 152.8 - }, - { - "date": "2026-07-03", - "high": 158.7, - "low": 151.1, - "close": 152.5 - }, - { - "date": "2026-07-07", - "high": 155.5, - "low": 149.2, - "close": 150.3 - }, - { - "date": "2026-07-08", - "high": 155.5, - "low": 144.8, - "close": 145.2 - } - ], - "02388": [ - { - "date": "2026-07-02", - "high": 42.98, - "low": 41.94, - "close": 42.3 - }, - { - "date": "2026-07-03", - "high": 42.98, - "low": 41.94, - "close": 42.68 - }, - { - "date": "2026-07-07", - "high": 43.28, - "low": 42.62, - "close": 43.1 - }, - { - "date": "2026-07-08", - "high": 45.3, - "low": 42.62, - "close": 45.2 - } - ], - "02628": [ - { - "date": "2026-07-02", - "high": 28.74, - "low": 27.5, - "close": 28.08 - }, - { - "date": "2026-07-03", - "high": 29.08, - "low": 27.5, - "close": 28.64 - }, - { - "date": "2026-07-07", - "high": 29.22, - "low": 28.04, - "close": 28.28 - }, - { - "date": "2026-07-08", - "high": 29.22, - "low": 28.04, - "close": 28.76 - } - ], - "688630": [ - { - "date": "2026-07-02", - "high": 499.95, - "low": 464.8, - "close": 468.0 - }, - { - "date": "2026-07-03", - "high": 502.0, - "low": 444.55, - "close": 480.32 - }, - { - "date": "2026-07-06", - "high": 499.0, - "low": 448.0, - "close": 476.72 - }, - { - "date": "2026-07-07", - "high": 499.0, - "low": 448.0, - "close": 462.23 - }, - { - "date": "2026-07-08", - "high": 494.81, - "low": 451.06, - "close": 473.26, - "volume": 5061122.0, - "amount": 240616.0 - } - ], - "06160": [ - { - "date": "2026-07-02", - "high": 176.8, - "low": 171.9, - "close": 174.7 - }, - { - "date": "2026-07-03", - "high": 183.9, - "low": 171.9, - "close": 182.9 - }, - { - "date": "2026-07-07", - "high": 190.0, - "low": 183.0, - "close": 183.8 - }, - { - "date": "2026-07-08", - "high": 190.0, - "low": 181.9, - "close": 182.6 - } - ], - "06869": [ - { - "date": "2026-07-02", - "high": 229.2, - "low": 207.4, - "close": 208.6 - }, - { - "date": "2026-07-07", - "high": 170.2, - "low": 151.9, - "close": 156.5 - }, - { - "date": "2026-07-08", - "high": 162.4, - "low": 148.6, - "close": 153.9, - "volume": 30169576.0, - "amount": 4675722058.0 - } - ], - "688795": [ - { - "date": "2026-07-02", - "high": 687.04, - "low": 639.4, - "close": 641.59 - }, - { - "date": "2026-07-03", - "high": 687.04, - "low": 633.01, - "close": 643.81 - }, - { - "date": "2026-07-06", - "high": 649.88, - "low": 615.0, - "close": 649.01 - }, - { - "date": "2026-07-07", - "high": 699.0, - "low": 615.0, - "close": 663.2 - }, - { - "date": "2026-07-08", - "high": 699.0, - "low": 629.0, - "close": 666.0, - "volume": 2417134.0, - "amount": 160890.0 - } - ], - "09868": [ - { - "date": "2026-07-02", - "high": 53.7, - "low": 50.95, - "close": 51.8 - }, - { - "date": "2026-07-03", - "high": 53.7, - "low": 49.3, - "close": 50.9 - }, - { - "date": "2026-07-07", - "high": 54.05, - "low": 52.05, - "close": 52.2 - }, - { - "date": "2026-07-08", - "high": 54.05, - "low": 50.95, - "close": 52.9 - } - ], - "09988": [ - { - "date": "2026-07-02", - "high": 97.4, - "low": 93.55, - "close": 94.5 - }, - { - "date": "2026-07-03", - "high": 97.4, - "low": 93.55, - "close": 95.15 - }, - { - "date": "2026-07-07", - "high": 100.5, - "low": 95.3, - "close": 95.55 - }, - { - "date": "2026-07-08", - "high": 105.0, - "low": 95.3, - "close": 103.8 - } - ], - "688802": [ - { - "date": "2026-07-02", - "high": 784.0, - "low": 721.0, - "close": 724.13 - }, - { - "date": "2026-07-03", - "high": 757.88, - "low": 713.0, - "close": 738.38 - }, - { - "date": "2026-07-06", - "high": 745.0, - "low": 690.11, - "close": 743.0 - }, - { - "date": "2026-07-07", - "high": 876.0, - "low": 690.11, - "close": 833.99 - }, - { - "date": "2026-07-08", - "high": 876.0, - "low": 723.0, - "close": 840.08, - "volume": 2586035.0, - "amount": 216333.0 - } - ], - "300124": [ - { - "date": "2026-07-02", - "high": 71.79, - "low": 67.31, - "close": 68.4 - }, - { - "date": "2026-07-03", - "high": 74.63, - "low": 67.31, - "close": 72.15 - }, - { - "date": "2026-07-06", - "high": 71.94, - "low": 68.2, - "close": 68.33 - }, - { - "date": "2026-07-07", - "high": 71.94, - "low": 65.73, - "close": 66.05 - }, - { - "date": "2026-07-08", - "high": 69.79, - "low": 63.15, - "close": 63.2, - "volume": 394793.0, - "amount": 252387.0 - } - ], - "000657": [ - { - "date": "2026-07-02", - "high": 101.5, - "low": 90.68, - "close": 97.03 - }, - { - "date": "2026-07-03", - "high": 101.5, - "low": 87.88, - "close": 89.63 - }, - { - "date": "2026-07-06", - "high": 90.58, - "low": 80.46, - "close": 80.46 - }, - { - "date": "2026-07-07", - "high": 90.58, - "low": 75.41, - "close": 76.84 - }, - { - "date": "2026-07-08", - "high": 80.8, - "low": 72.98, - "close": 73.95, - "volume": 611139.0, - "amount": 460609.0 - } - ], - "000711": [ - { - "date": "2026-07-02", - "high": 5.01, - "low": 4.87, - "close": 5.01 - }, - { - "date": "2026-07-03", - "high": 5.26, - "low": 4.87, - "close": 5.26 - }, - { - "date": "2026-07-06", - "high": 5.65, - "low": 5.0, - "close": 5.01 - }, - { - "date": "2026-07-07", - "high": 5.65, - "low": 4.92, - "close": 5.42 - }, - { - "date": "2026-07-08", - "high": 5.84, - "low": 4.92, - "close": 5.69, - "volume": 1239419.0, - "amount": 68853.0 - } - ], - "001309": [ - { - "date": "2026-07-02", - "high": 872.83, - "low": 806.0, - "close": 811.0 - }, - { - "date": "2026-07-03", - "high": 892.1, - "low": 795.0, - "close": 881.91 - }, - { - "date": "2026-07-06", - "high": 954.19, - "low": 860.0, - "close": 935.0 - }, - { - "date": "2026-07-07", - "high": 954.19, - "low": 845.28, - "close": 851.0 - }, - { - "date": "2026-07-08", - "high": 900.0, - "low": 790.0, - "close": 825.0, - "volume": 139865.0, - "amount": 1159183.0 - } - ], - "002594": [ - { - "date": "2026-07-02", - "high": 85.67, - "low": 81.9, - "close": 83.57 - }, - { - "date": "2026-07-03", - "high": 88.88, - "low": 81.9, - "close": 88.47 - }, - { - "date": "2026-07-06", - "high": 88.95, - "low": 86.61, - "close": 87.54 - }, - { - "date": "2026-07-07", - "high": 88.95, - "low": 85.87, - "close": 86.26 - }, - { - "date": "2026-07-08", - "high": 88.81, - "low": 85.28, - "close": 87.8, - "volume": 403809.0, - "amount": 352747.0 - } - ], - "00700": [ - { - "date": "2026-07-02", - "high": 447.0, - "low": 436.0, - "close": 438.2 - }, - { - "date": "2026-07-08", - "high": 482.8, - "low": 460.6, - "close": 474.0, - "volume": 48311618.0, - "amount": 22973933078.706 - } - ], - "00968": [ - { - "date": "2026-07-02", - "high": 2.15, - "low": 2.03, - "close": 2.07 - }, - { - "date": "2026-07-03", - "high": 2.15, - "low": 2.03, - "close": 2.1 - }, - { - "date": "2026-07-07", - "high": 2.1, - "low": 2.0, - "close": 2.01 - }, - { - "date": "2026-07-08", - "high": 2.1, - "low": 1.95, - "close": 2.0 - } - ], - "00981": [ - { - "date": "2026-07-02", - "high": 84.2, - "low": 80.2, - "close": 81.55 - }, - { - "date": "2026-07-08", - "high": 79.5, - "low": 72.55, - "close": 76.7, - "volume": 132499991.0, - "amount": 10172561899.8 - } - ], - "01070": [ - { - "date": "2026-07-02", - "high": 13.19, - "low": 12.63, - "close": 12.83 - }, - { - "date": "2026-07-03", - "high": 13.39, - "low": 12.63, - "close": 13.36 - }, - { - "date": "2026-07-07", - "high": 15.18, - "low": 14.23, - "close": 14.45 - }, - { - "date": "2026-07-08", - "high": 15.18, - "low": 14.23, - "close": 14.79 - } - ], - "01088": [ - { - "date": "2026-07-02", - "high": 40.4, - "low": 39.16, - "close": 39.4 - }, - { - "date": "2026-07-08", - "high": 41.54, - "low": 40.56, - "close": 41.42, - "volume": 15926810.0, - "amount": 656749661.1 - } - ], - "01211": [ - { - "date": "2026-07-02", - "high": 79.6, - "low": 74.95, - "close": 78.7 - }, - { - "date": "2026-07-08", - "high": 86.4, - "low": 82.95, - "close": 85.6, - "volume": 20564892.0, - "amount": 1752456432.31 - } - ], - "301308": [ - { - "date": "2026-07-03", - "high": 646.85, - "low": 574.1, - "close": 618.02 - }, - { - "date": "2026-07-06", - "high": 710.0, - "low": 659.16, - "close": 681.8 - }, - { - "date": "2026-07-07", - "high": 710.0, - "low": 619.9, - "close": 627.9 - }, - { - "date": "2026-07-08", - "high": 647.78, - "low": 584.67, - "close": 592.71, - "volume": 167016.0, - "amount": 1015473.0 - } - ], - "000700": [ - { - "date": "2026-07-06", - "high": 17.18, - "low": 16.3, - "close": 16.75 - }, - { - "date": "2026-07-07", - "high": 17.38, - "low": 16.04, - "close": 16.11 - }, - { - "date": "2026-07-08", - "high": 16.06, - "low": 14.6, - "close": 14.6, - "volume": 658608.0, - "amount": 99601.0 + "002396": [ + { + "date": "2026-07-09", + "high": 28.59, + "low": 26.45, + "close": 27.94, + "volume": 781435.0, + "amount": 217305.0 } ], "300548": [ { - "date": "2026-07-06", - "high": 225.0, - "low": 205.0, - "close": 214.13 - }, - { - "date": "2026-07-07", - "high": 225.0, - "low": 204.1, - "close": 211.03 - }, - { - "date": "2026-07-08", - "high": 226.5, - "low": 208.95, - "close": 220.99, - "volume": 161796.0, - "amount": 355266.0 + "date": "2026-07-09", + "high": 227.76, + "low": 214.32, + "close": 216.93, + "volume": 58263.0, + "amount": 127706.0 } ], "000850": [ { - "date": "2026-07-07", - "high": 3.95, - "low": 3.75, - "close": 3.81 - }, - { - "date": "2026-07-08", - "high": 3.95, - "low": 3.72, - "close": 3.81, - "volume": 91374.0, - "amount": 3486.0 + "date": "2026-07-09", + "high": 3.86, + "low": 3.74, + "close": 3.74, + "volume": 35062.0, + "amount": 1330.0 } ], - "603501": [ + "001309": [ { - "date": "2026-07-08", - "high": 103.48, - "low": 97.01, - "close": 100.95, - "volume": 341509.0, - "amount": 343291.0 + "date": "2026-07-09", + "high": 849.99, + "low": 810.0, + "close": 816.5, + "volume": 63185.0, + "amount": 526538.0 } ], - "688041": [ + "600111": [ { - "date": "2026-07-08", - "high": 359.04, - "low": 342.01, - "close": 343.0, - "volume": 30295791.0, - "amount": 1058883.0 - } - ], - "002371": [ - { - "date": "2026-07-08", - "high": 830.02, - "low": 768.0, - "close": 802.32, - "volume": 148075.0, - "amount": 1184089.0 - } - ], - "000001": [ - { - "date": "2026-07-08", - "high": 10.59, - "low": 10.34, - "close": 10.6 - } - ], - "688981": [ - { - "date": "2026-07-08", - "high": 156.98, - "low": 142.6, - "close": 152.1, - "volume": 100025303.0, - "amount": 1509149.0 - } - ], - "688411": [ - { - "date": "2026-07-08", - "high": 265.99, - "low": 243.85, - "close": 244.0, - "volume": 4302498.0, - "amount": 108210.0 - } - ], - "688639": [ - { - "date": "2026-07-08", - "high": 16.85, - "low": 16.23, - "close": 16.42, - "volume": 3484292.0, - "amount": 5760.0 - } - ], - "300308": [ - { - "date": "2026-07-08", - "high": 1179.3, - "low": 1114.56, - "close": 1128.35, - "volume": 317328.0, - "amount": 3632345.0 - } - ], - "000518": [ - { - "date": "2026-07-08", - "high": 3.85, - "low": 3.51, - "close": 3.82, - "volume": 1048040.0, - "amount": 38702.0 - } - ], - "000949": [ - { - "date": "2026-07-08", - "high": 5.64, - "low": 5.38, - "close": 5.61, - "volume": 631605.0, - "amount": 34797.0 - } - ], - "300035": [ - { - "date": "2026-07-08", - "high": 13.7, - "low": 13.27, - "close": 13.37, - "volume": 126925.0, - "amount": 17046.0 - } - ], - "300750": [ - { - "date": "2026-07-08", - "high": 376.68, - "low": 361.0, - "close": 361.0, - "volume": 270519.0, - "amount": 990274.0 - } - ], - "518880": [ - { - "date": "2026-07-08", - "high": 8.605, - "low": 8.53, - "close": 8.589, - "volume": 2410682.0, - "amount": 206807.0 - } - ], - "600563": [ - { - "date": "2026-07-08", - "high": 151.37, - "low": 140.36, - "close": 140.84, - "volume": 91508.0, - "amount": 132883.0 + "date": "2026-07-09", + "high": 45.98, + "low": 42.43, + "close": 42.75, + "volume": 687127.0, + "amount": 302373.0 } ], "601101": [ { - "date": "2026-07-08", - "high": 12.87, - "low": 11.83, - "close": 12.23, - "volume": 448232.0, - "amount": 55232.0 + "date": "2026-07-09", + "high": 11.96, + "low": 11.22, + "close": 11.38, + "volume": 224925.0, + "amount": 25945.0 } ], - "601899": [ + "688041": [ { - "date": "2026-07-08", - "high": 28.03, - "low": 26.8, - "close": 27.36, - "volume": 1969818.0, - "amount": 541986.0 + "date": "2026-07-09", + "high": 352.0, + "low": 335.5, + "close": 351.22, + "volume": 14810250.0, + "amount": 509677.0 + } + ], + "688630": [ + { + "date": "2026-07-09", + "high": 496.88, + "low": 468.88, + "close": 473.99, + "volume": 2250136.0, + "amount": 108827.0 + } + ], + "000700": [ + { + "date": "2026-07-09", + "high": 15.75, + "low": 14.89, + "close": 15.15, + "volume": 320319.0, + "amount": 49035.0 + } + ], + "002371": [ + { + "date": "2026-07-09", + "high": 838.0, + "low": 815.0, + "close": 829.96, + "volume": 59320.0, + "amount": 490300.0 + } + ], + "00981": [ + { + "date": "2026-07-09", + "high": 80.3, + "low": 76.65, + "close": 80.25, + "volume": 44619590.0, + "amount": 3504189620.8 } ] } \ No newline at end of file diff --git a/data/stocks/00700.json b/data/stocks/00700.json index 11bf7c91..3d4eb018 100644 --- a/data/stocks/00700.json +++ b/data/stocks/00700.json @@ -151,6 +151,11 @@ "content": "博创科技(300548) 214.13 在买入区✅ | 模塑科技(000700) 16.75 在买入区✅ | 贵州茅台(600519) 1206.91 在买入区✅ | 比亚迪A(002594) 87.", "report_id": "cron_99c06255590a_2026-07-07_08-43-59" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "**腾讯(00700)** 现价¥478.80 | 仓位未计 | 持有盈利+8.0%", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T11:55:44.093905", "content": "❌ 反例:腾讯00700,底仓100股(3.59%),浮盈+4.79%。看到\"距止盈470仅0.77%\"就建议触及减仓清仓 —— 机械执行,未考虑底仓属性+浮盈幅度。", diff --git a/data/stocks/01088.json b/data/stocks/01088.json index 2e8ab08b..3bb3fc9f 100644 --- a/data/stocks/01088.json +++ b/data/stocks/01088.json @@ -46,6 +46,11 @@ "content": "长芯博创(300548) @281.99 +21.83% 放量走强持有,止损261.71;辽宁成大(600739) @10.09 -17.88% 弱撑10.0待企稳;海博思创(688411) @281", "report_id": "cron_99c06255590a_2026-06-19_08-32-54" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **中国神华(01088)** ¥41.42 — 入区¥40.59-41.81,+2.17%反弹,持有", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-01T13:55:12.662353", "content": "**🟢中国神华(01088) | 47.200 +4.70%⚠️** → 煤炭护盘走强,关注45~47低吸区间,建议仓位5%", diff --git a/data/stocks/01211.json b/data/stocks/01211.json index 843aa702..2455bc30 100644 --- a/data/stocks/01211.json +++ b/data/stocks/01211.json @@ -56,6 +56,11 @@ "content": "长飞光纤光缆(06869) 255.40+6.68%放量大涨,持有等站上成本263.72;腾讯(00700) 429.80+2.28%,买入区435-440依然可加;中芯H(00981) 89.40+", "report_id": "cron_99c06255590a_2026-07-01_08-39-42" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **比亚迪(01211)** ¥85.85 — 入区¥83.79-87.21内,+2.88%回暖,持有", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-12T08:55:34.669098", "content": "港股:比亚迪H 01211(6.05%)-2.13%成本95.9浮亏-12.1%策略区间内;万科02202(6.02%)+1.15%策略区间内;中银香港02388(5.46%)+1.12%浮盈+6.9", diff --git a/data/stocks/01478.json b/data/stocks/01478.json index 4f5807a7..7e1d023a 100644 --- a/data/stocks/01478.json +++ b/data/stocks/01478.json @@ -71,6 +71,11 @@ "content": "**丘钛科技(01478)** — 现价6.86 | 成本13.47深度套牢-49%,止损6.18仅10%空间。手机链受韩国科技股崩盘情绪拖累,破6.5必须执行止损。", "report_id": "cron_99c06255590a_2026-07-02_08-32-48" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **丘钛科技(01478)** ¥6.92 — 已触及T/P¥7.34附近,+6.13%强势,考虑止盈半仓", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T12:55:54.834592", "content": "| 丘钛科技(01478) | 10.12 | -1.17% | 9.19% | 深套持有,止损9.0 |", diff --git a/data/stocks/02202.json b/data/stocks/02202.json index 7a32cf32..ef806a0f 100644 --- a/data/stocks/02202.json +++ b/data/stocks/02202.json @@ -66,6 +66,11 @@ "content": "**① 万科企业(02202) ⚠️ 触及止损边缘**", "report_id": "cron_99c06255590a_2026-07-08_08-39-49" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **万科企业(02202)** ¥2.27 — 触及入区上沿,+2.25%反弹,地产无强催化,持有不动", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T12:55:54.834592", "content": "| 万科企业(02202) | 2.76 | -0.72% | 3.39% | 深套持有,止损2.5 |", diff --git a/data/stocks/300035.json b/data/stocks/300035.json index 8795f527..c843aeea 100644 --- a/data/stocks/300035.json +++ b/data/stocks/300035.json @@ -61,6 +61,11 @@ "content": "**② 中科电气(300035) ⚠️ 触及止损边缘**", "report_id": "cron_99c06255590a_2026-07-08_08-39-49" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **中科电气(300035)** ¥13.37 — 入区¥12.03-14.04内,-2.34%稳定,持有", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T12:55:54.834592", "content": "| 中科电气(300035) | 16.44 | -2.66% | 1.77% | 深套持有,止损15.0 |", diff --git a/data/stocks/518880.json b/data/stocks/518880.json index 171b853a..e4026377 100644 --- a/data/stocks/518880.json +++ b/data/stocks/518880.json @@ -61,6 +61,11 @@ "content": "长飞光纤光缆(06869) 255.40+6.68%放量大涨,持有等站上成本263.72;腾讯(00700) 429.80+2.28%,买入区435-440依然可加;中芯H(00981) 89.40+", "report_id": "cron_99c06255590a_2026-07-01_08-39-42" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **黄金ETF(518880)** ¥8.59 — 接近T/P¥8.64,中东冲突利好金价,持有待冲高", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T12:55:54.834592", "content": "| 黄金ETF(518880) | 9.323 | -0.22% | 2.14% | 深套持有,止损9.0 |", diff --git a/data/stocks/600563.json b/data/stocks/600563.json index 0fd38426..00b2fc2a 100644 --- a/data/stocks/600563.json +++ b/data/stocks/600563.json @@ -91,6 +91,11 @@ "content": "长飞光纤光缆(06869) 255.40+6.68%放量大涨,持有等站上成本263.72;腾讯(00700) 429.80+2.28%,买入区435-440依然可加;中芯H(00981) 89.40+", "report_id": "cron_99c06255590a_2026-07-01_08-39-42" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "- **法拉电子(600563)** ¥140.84 — 入区¥137.01-143.86,-6.40%偏弱,接近止损¥135.42", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-02T12:55:54.834592", "content": "| 法拉电子(600563) | 159.76 | +3.47% | 3.0% | 持有,止损153止盈170 |", diff --git a/data/stocks/688981.json b/data/stocks/688981.json index 53d82840..2a3234a5 100644 --- a/data/stocks/688981.json +++ b/data/stocks/688981.json @@ -51,6 +51,11 @@ "content": "③ **中芯国际(688981/00981)** 现价144.1/80.4 | 仓位合计9.64% | 双市场止损均破", "report_id": "cron_99c06255590a_2026-07-03_08-33-17" }, + { + "time": "2026-07-09T08:55:03.395979", + "content": "**中芯国际A(688981)** 现价¥152.10 | 仓位5.44% | 持有盈利+20.7%", + "report_id": "cron_99c06255590a_2026-07-09_08-38-59" + }, { "time": "2026-06-01T11:55:35.956320", "content": "• **688981|中芯国际|134.87|-3.60%|建议观望等企稳【短线】|前几日大涨后获利回吐,关注134支撑**", diff --git a/data/strategy_staleness_report.json b/data/strategy_staleness_report.json index 28958b1f..516d28ef 100644 --- a/data/strategy_staleness_report.json +++ b/data/strategy_staleness_report.json @@ -1,14 +1,381 @@ { - "checked_at": "2026-07-08T09:00:59", - "total_active": 0, - "flagged_count": 0, - "flagged": [], + "checked_at": "2026-07-09T09:00:42", + "total_active": 37, + "flagged_count": 24, + "flagged": [ + { + "code": "000657", + "name": "中钨高新", + "price": 73.95, + "flags": [ + "现价73.95在买入区72~75(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "72~75", + "current": "盈利持有 | 缩量 | 目标84.52 | 止损71.69 | 买入区72.47~75.43", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "000850", + "name": "华茂股份", + "price": 3.81, + "flags": [ + "现价3.81在买入区4~4(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "4~4", + "current": "盈利持有 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标4.04 | 止损3.7 | 买入区3.73~3.84", + "updated_by": "manual_analysis_v4", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "000949", + "name": "新乡化纤", + "price": 5.61, + "flags": [ + "[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])", + "现价5.61在买入区6~6(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-08 21:17:08", + "entry_zone": "6~6", + "current": "盈利持有 | 放量下跌⚠️ | 近5日增量跌价=⚠️出货型 | 目标5.99 | 止损5.44 | 买入区5.5~5.66 | 信号:弱势持有", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "001309", + "name": "德明利", + "price": 825.0, + "flags": [ + "现价825.00在买入区808~842(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "808~842", + "current": "盈利持有 | 正常 | 目标936.1 | 止损786.59 | 买入区808.5~841.5", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "002371", + "name": "北方华创", + "price": 802.32, + "flags": [ + "现价802.32在买入区786~807(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "786~807", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 正常 | 目标862.13 | 止损770.21 | 买入区786.27~806.98 | 信号:买入", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "002594", + "name": "比亚迪", + "price": 87.8, + "flags": [ + "现价87.80在买入区86~89(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "86~89", + "current": "盈利持有 | 正常 | 目标94.19 | 止损85.17 | 买入区86.04~88.78 | 信号:买入", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "00700", + "name": "腾讯控股", + "price": 474.8, + "flags": [ + "现价474.80在买入区465~484(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "465~484", + "current": "盈利持有 | 正常 | 目标519.27 | 止损460.56 | 买入区465.3~484.04", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "01088", + "name": "中国神华", + "price": 41.42, + "flags": [ + "[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])", + "现价41.42在买入区41~42(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "41~42", + "current": "盈利持有 | 正常 | 目标44.49 | 止损40.03 | 买入区40.59~41.81 | 信号:弱势持有", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "01211", + "name": "比亚迪股份", + "price": 85.5, + "flags": [ + "现价85.50在买入区84~87(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "84~87", + "current": "盈利持有 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标96.43 | 止损81.1 | 买入区83.79~87.21 | 信号:买入", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "02202", + "name": "万科企业", + "price": 2.27, + "flags": [ + "[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])", + "现价2.27在买入区2~2(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "2~2", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标2.43 | 止损2.17 | 买入区2.22~2.27 | 信号:弱势持有", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "300124", + "name": "汇川技术", + "price": 63.2, + "flags": [ + "现价63.20在买入区62~64(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "62~64", + "current": "盈利持有 | 放量下跌⚠️ | 近5日增量跌价=⚠️出货型 | 目标75.61 | 止损61.3 | 买入区61.94~64.46 | 信号:关注", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "300308", + "name": "中际旭创", + "price": 1128.35, + "flags": [ + "现价1128.35在买入区1106~1139(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "1106~1139", + "current": "盈利持有 | 正常 | 目标1205.48 | 止损1094.5 | 买入区1105.78~1138.89", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "301308", + "name": "江波龙", + "price": 592.71, + "flags": [ + "现价592.71在买入区581~605(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-08 15:02:12", + "entry_zone": "581~605", + "current": "盈利持有 | 正常 | 目标741.03 | 止损572.25 | 买入区580.86~604.56", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "600519", + "name": "贵州茅台", + "price": 1199.3, + "flags": [ + "[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])", + "现价1199.30在买入区1175~1204(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "1175~1204", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 正常 | 目标1265.1 | 止损1163.32 | 买入区1175.31~1204.03 | 信号:弱势持有", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "601101", + "name": "昊华能源", + "price": 12.23, + "flags": [ + "现价12.23在买入区12~12(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-08 15:02:12", + "entry_zone": "12~12", + "current": "盈利持有 | 目标13.35 | 止损11.75 | 买入区11.99~12.39", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "601318", + "name": "中国平安", + "price": 49.54, + "flags": [ + "现价49.54远低于买入区95~99,买入区需下移" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "95~99", + "current": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标51.96 | 止损参考0.0 | 买入区0.0~0.0 | 信号:弱势持有", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "603501", + "name": "豪威集团", + "price": 100.95, + "flags": [ + "现价100.95在买入区99~101(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-08 15:02:12", + "entry_zone": "99~101", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 正常 | 目标106.95 | 止损97.48 | 买入区98.93~101.27 | 信号:买入", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688041", + "name": "海光信息", + "price": 343.0, + "flags": [ + "现价343.00在买入区336~350(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-08 15:32:16", + "entry_zone": "336~350", + "current": "盈利持有 | 正常 | 目标375.46 | 止损332.71 | 买入区336.14~349.81 | 信号:关注", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688411", + "name": "海博思创", + "price": 244.0, + "flags": [ + "现价244.00在买入区239~249(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "239~249", + "current": "盈利持有 | 正常 | 目标273.42 | 止损236.57 | 买入区239.12~248.88", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688630", + "name": "芯碁微装", + "price": 473.26, + "flags": [ + "现价473.26在买入区464~483(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "464~483", + "current": "盈利持有 | 正常 | 目标530.49 | 止损451.28 | 买入区463.79~482.73", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688639", + "name": "华恒生物", + "price": 16.42, + "flags": [ + "现价16.42在买入区16~16(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "16~16", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 缩量 | 目标17.32 | 止损15.93 | 买入区16.09~16.49 | 信号:关注", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688795", + "name": "摩尔线程-U", + "price": 666.0, + "flags": [ + "现价666.00在买入区653~679(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "653~679", + "current": "盈利持有 | 正常 | 目标748.0 | 止损646.0 | 买入区652.68~679.32", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688802", + "name": "沐曦股份-U", + "price": 840.08, + "flags": [ + "现价840.08在买入区830~851(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "830~851", + "current": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 正常 | 目标1000.79 | 止损参考0.0 | 买入区0.0~0.0 | 信号:关注", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + }, + { + "code": "688981", + "name": "中芯国际", + "price": 152.1, + "flags": [ + "现价152.10在买入区149~152(是否可买需结合timing_signal判断)" + ], + "age_days": 0, + "last_update": "2026-07-09 08:55:21", + "entry_zone": "149~152", + "current": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 正常 | 目标164.94 | 止损144.14 | 买入区149.06~152.46 | 信号:买入", + "updated_by": "auto", + "updated_reason": "自动生成", + "is_watchlist": true + } + ], "portfolio": { - "position_pct": 65.65, + "position_pct": 65.77, "cash": 321271.0, - "weak_position_pct": 0, - "all_weak_pct": 0, - "signals": [] + "weak_position_pct": 81.8, + "all_weak_pct": 45.9, + "signals": [ + "[PORTFOLIO_WEAK] 组合中弱势+深套分类持仓占比81.8%>40%,建议系统性减仓" + ] }, - "summary": "扫描0个策略,0个需关注" + "summary": "扫描37个策略,24个需关注" } \ No newline at end of file diff --git a/scripts/intraday_health_check.py b/scripts/intraday_health_check.py index 95ab56af..cb2ce521 100644 --- a/scripts/intraday_health_check.py +++ b/scripts/intraday_health_check.py @@ -167,7 +167,8 @@ def check_signal_pipeline(): unproc = 0 try: conn = sqlite3.connect(str(DB_PATH)) - r = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL)").fetchone() + # 只检查时效内的信号堆积(4小时以内),过期信号不被消费者处理但仍会计入堆积 + r = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at > datetime('now', '-4 hours')").fetchone() unproc = r[0] conn.close() except: diff --git a/scripts/stale_detector.py b/scripts/stale_detector.py index ffa70feb..41f18147 100644 --- a/scripts/stale_detector.py +++ b/scripts/stale_detector.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """stale_detector.py — 检查所有策略,标记价格偏离/过期的策略 -读取 decisions.json 的扁平列表。自选策略和持仓策略分开判断。 +读取 holding_strategies + watchlist_stocks 的DB双源数据。 可被 cron no_agent 模式调用:stdout 注入到后续 LLM 分析。 输出格式: @@ -162,6 +162,49 @@ def main(): except Exception as e: print(f"[AUTO_REASSESS FAIL] {e}") # ----- 结束 自选股重评 ----- + # 🔁 重评后重新从DB读取策略数据,刷新to_check + try: + decisions_list = read_decisions() + if not isinstance(decisions_list, list): + decisions_list = decisions_list.get("decisions", []) if isinstance(decisions_list, dict) else [] + to_check = [d for d in decisions_list if (d.get("entry_low") is not None or d.get("entry_high") is not None) and d.get("status") not in EXCLUDED_STATUSES] + # 重新合并watchlist_stocks + db2 = sqlite3.connect('/home/hmo/MoFin/data/mofin.db') + db2.row_factory = sqlite3.Row + wl_rows2 = db2.execute( + "SELECT code, name, price, entry_low, entry_high, stop_loss, analysis_json " + "FROM watchlist_stocks WHERE is_active=1 AND entry_low IS NOT NULL AND entry_high IS NOT NULL" + ).fetchall() + db2.close() + existing_codes2 = {d["code"] for d in to_check} + for row in wl_rows2: + code = str(row["code"]) + if code in existing_codes2: + continue + entry_low = row["entry_low"] + entry_high = row["entry_high"] + if not entry_low or not entry_high or entry_low <= 0: + continue + analysis = {} + try: + analysis = json.loads(row["analysis_json"]) if row["analysis_json"] and row["analysis_json"] != "null" else {} + except (json.JSONDecodeError, TypeError): + pass + action = analysis.get("action", "") if isinstance(analysis, dict) else "" + timing_signal = analysis.get("timing_signal", "买入") if isinstance(analysis, dict) else "买入" + wl_entry = { + "code": code, + "name": row["name"] or code, + "entry_low": entry_low, + "entry_high": entry_high, + "stop_loss": row["stop_loss"], + "type": "自选策略", + "action": action, + "timing_signal": timing_signal, + } + to_check.append(wl_entry) + except Exception as e: + print(f"[RELOAD FAIL] {e}", file=sys.stderr) # ----- 组合级监测:读取总仓位 + 弱势比例 ----- position_pct = 0 diff --git a/scripts/stale_push_wlin.py b/scripts/stale_push_wlin.py index d64f22cd..8a21b48b 100644 --- a/scripts/stale_push_wlin.py +++ b/scripts/stale_push_wlin.py @@ -806,7 +806,8 @@ def main(): return text, gap # 标准格式:每个可操作标的 — 大盘/行业/个股三面 + 仓位 - lines.append(f"【💡 操作建议】(当前{n}只自选可操作 | 总资产{total_assets:,.0f}元 现金{available_cash:,.0f}元)") + if actionable: + lines.append(f"【💡 操作建议】(当前{len(actionable)}只自选可操作 | 总资产{total_assets:,.0f}元 现金{available_cash:,.0f}元)") for s in actionable: name, code, price, buy_low, buy_high, lot, ratio = s d = code_data.get(code, {}) @@ -935,16 +936,26 @@ def main(): save_cooldown(cooldown) # 修正可操作数量(剔除冷却跳过后的实际数量) - actual_n = len(lines) - (1 if macro_line else 0) - 1 # 减去市场背景 + 操作建议标题 - if actual_n != n: - # 更新操作建议行 - for i, ln in enumerate(lines): - if "【💡 操作建议】" in ln: - lines[i] = f"【💡 操作建议】(当前{actual_n}只自选可操作 | 总资产{total_assets:,.0f}元 现金{available_cash:,.0f}元)" - break + if actionable: + actual_n = sum( + 1 for ln in lines + if ln.startswith(" 🛒") or ln.startswith(" ⚠️") + ) + if actual_n != len(actionable): + for i, ln in enumerate(lines): + if "【💡 操作建议】" in ln: + if actual_n > 0: + lines[i] = f"【💡 操作建议】(当前{actual_n}只自选可操作 | 总资产{total_assets:,.0f}元 现金{available_cash:,.0f}元)" + else: + lines.pop(i) # 全部冷却,移除空标题 + break - if actual_n <= 0: - return 0 # 全部冷却中 → 静默,不推 + # 检查最终是否还有内容要推 + has_actionable = any( + ln.startswith(" 🛒") or ln.startswith(" ⚠️") for ln in lines + ) + if not has_actionable and not zone_notes: + return 0 # 全部冷却+无区间说明 → 静默 # ── T+2前瞻:扫描近期可能入买区的A股,提前准备现金 ── t2_lines = [] @@ -1004,10 +1015,14 @@ def main(): for name, code, price, buy_low, buy_high, reason, sig in zone_notes: lines.append( f" {name}({code}) 价{price:.2f} 区间{buy_low}~{buy_high} " - f"→ 重评结果: {reason}" + f"→ 进入操作区间,但重评结果: {reason}" ) - lines.insert(0, f"【知微】自选买入提醒 {now} | 总资产{total_assets:,.0f}元") + # 标题:有推荐操作→"自选买入提醒",仅有区间说明→"操作区间提醒" + if has_actionable: + lines.insert(0, f"【知微】自选买入提醒 {now} | 总资产{total_assets:,.0f}元") + else: + lines.insert(0, f"【知微】操作区间提醒 {now} | 总资产{total_assets:,.0f}元") out = "\n".join(lines) print(out) push_to_xmpp(out) diff --git a/scripts/system_audit.py b/scripts/system_audit.py index cae99f4b..ddb40a59 100644 --- a/scripts/system_audit.py +++ b/scripts/system_audit.py @@ -41,7 +41,7 @@ def log_ok(area, desc): def audit_signals(conn): try: total = conn.execute("SELECT COUNT(*) FROM signal_news").fetchone()[0] - unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL)").fetchone()[0] + unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at > datetime('now', '-4 hours')").fetchone()[0] today = conn.execute("SELECT COUNT(*) FROM signal_news WHERE created_at > datetime('now','-1 day')").fetchone()[0] log_ok("信号管道", f"信号库{total}条,今日{today}条,未处理{unproc}条") if unproc > 30: diff --git a/scripts/xiaoguo_signal_consumer.py b/scripts/xiaoguo_signal_consumer.py index d3a90890..e4961625 100644 --- a/scripts/xiaoguo_signal_consumer.py +++ b/scripts/xiaoguo_signal_consumer.py @@ -17,7 +17,7 @@ from datetime import datetime # 确保 MoFin 根目录在模块搜索路径中(兼容 cron 环境) sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from mo_data import read_watchlist, get_price +from mo_data import read_watchlist from mofin_db import write_watchlist_stock BASE = Path("/home/hmo/MoFin") @@ -33,7 +33,7 @@ def clean_proxy(): def fetch_quote(code): - """拉行情。DB 优先,腾讯 fallback""" + """拉行情。DB 优先,腾讯 API fallback""" # DB 优先 try: from mofin_db import get_price_from_db @@ -42,11 +42,18 @@ def fetch_quote(code): return {"name":"", "code":code, "price":p, "change_pct":chg or 0} except: pass - # Fallback: mo_data.get_price + # Fallback: 腾讯实时行情 API try: - price, chg = get_price(code) - if price is not None: - return {"name": "", "code": code, "price": price, "change_pct": chg or 0, "pe": 0, "turnover": 0} + url = f"http://qt.gtimg.cn/q={code}" + import urllib.request + resp = urllib.request.urlopen(url, timeout=10).read().decode("gbk") + parts = resp.split("~") + if len(parts) > 32: + name = parts[1] + price = float(parts[3]) if parts[3] else None + chg_pct = float(parts[32]) if parts[32] else 0 + if price: + return {"name": name, "code": code, "price": price, "change_pct": chg_pct, "pe": 0, "turnover": 0} return {"code": code, "error": "取价失败"} except Exception as e: return {"code": code, "error": str(e)[:60]} @@ -186,22 +193,28 @@ def main(): clean_proxy() start = time.time() today = datetime.now().strftime("%Y-%m-%d") - + conn = get_conn() - # 读未处理 xiaoguo 信号(今日) + # 读未处理 xiaoguo 信号(SIGNAL_MAX_AGE_HOURS 以内) rows = conn.execute( "SELECT id, sector, overall_sentiment, summary, key_articles, searched_stocks, source " "FROM signal_news " "WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) " - "AND date(created_at) = ? " - "ORDER BY created_at DESC LIMIT 20", - (today,) + f"AND created_at > datetime('now', '-{SIGNAL_MAX_AGE_HOURS} hours') " + "ORDER BY created_at DESC LIMIT 20" ).fetchall() if not rows: + # 标记过期信号为已处理(超出时效边界) + old = conn.execute(f"SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at <= datetime('now', '-{SIGNAL_MAX_AGE_HOURS} hours')").fetchone()[0] + if old: + conn.execute(f"UPDATE signal_news SET processed=1 WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at <= datetime('now', '-{SIGNAL_MAX_AGE_HOURS} hours')") + conn.commit() + print(f"[SILENT] 清理 {old} 条过期信号(>{SIGNAL_MAX_AGE_HOURS}h)") + else: + print("[SILENT] 今日无未处理小果信号") conn.close() - print("[SILENT] 今日无未处理小果信号") return # 尝试从 searched_stocks 提取股票代码 diff --git a/static/mofin_health.json b/static/mofin_health.json index 8e416ca9..94513cdc 100644 --- a/static/mofin_health.json +++ b/static/mofin_health.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-07-09 08:46:53", + "generated_at": "2026-07-09 10:30:40", "feature_tree": { "label": "MoFin 系统", "status": "ok", @@ -18,7 +18,7 @@ "script": "market_watch.py", "schedule": "*/10 9-11,13-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:50", + "last_run": "2026-07-09T10:21", "type": "no_agent", "profile": "position-analyst" } @@ -27,27 +27,7 @@ { "label": "宏观新闻", "status": "ok", - "desc": "采集宏观新闻和财经资讯", - "pipes": [ - { - "name": "宏观采集-早盘", - "script": "macro_context_collector.py", - "schedule": "35 9 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T09:35", - "type": "no_agent", - "profile": "position-analyst" - }, - { - "name": "宏观采集-午间", - "script": "macro_context_collector.py", - "schedule": "0 12 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T12:01", - "type": "no_agent", - "profile": "position-analyst" - } - ] + "desc": "采集宏观新闻和财经资讯" }, { "label": "价格监控", @@ -58,19 +38,10 @@ "name": "价格监控-高频", "script": "price_monitor.py", "schedule": "*/2 9-16 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T22:56", + "status": "error", + "last_run": "2026-07-09T10:29", "type": "no_agent", "profile": "position-analyst" - }, - { - "name": "芯碁微装-价格监控", - "script": "price_monitor.py", - "schedule": "0 10,14 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T14:34", - "type": "LLM", - "profile": "position-analyst" } ] }, @@ -84,7 +55,7 @@ "script": "xiaoguo_scanner.py", "schedule": "*/5 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:56", + "last_run": "2026-07-09T10:27", "type": "no_agent", "profile": "position-analyst" } @@ -100,7 +71,7 @@ "script": "capital_flow_collector.py", "schedule": "1,31 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:31", + "last_run": "2026-07-09T10:01", "type": "no_agent", "profile": "position-analyst" } @@ -116,7 +87,7 @@ "script": "refresh_macro_context.py", "schedule": "*/30 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30", + "last_run": "2026-07-09T10:01", "type": "no_agent", "profile": "position-analyst" } @@ -130,25 +101,9 @@ { "name": "宏观新闻采集", "script": "macro_context_collector.py", - "schedule": "*/30 8-15 * * 1-5", + "schedule": "*/30 8-16 * * *", "status": "ok", - "last_run": "2026-07-09T08:30", - "type": "no_agent", - "profile": "position-analyst" - } - ] - }, - { - "label": "宏观新闻采集-周末 (macro_context_collector.py)", - "desc": "周末宏观新闻采集", - "status": "ok", - "pipes": [ - { - "name": "宏观新闻采集-周末", - "script": "macro_context_collector.py", - "schedule": "0 8-16/2 * * 0,6", - "status": "ok", - "last_run": "2026-07-05T16:00", + "last_run": "2026-07-09T10:01", "type": "no_agent", "profile": "position-analyst" } @@ -176,7 +131,7 @@ "script": "strategy-staleness-check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:10", + "last_run": "2026-07-09T09:10", "type": "LLM", "profile": "position-analyst" } @@ -192,7 +147,7 @@ "script": "per_stock_reassess.py", "schedule": "0 9,12,15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:02", + "last_run": "2026-07-09T10:25", "type": "no_agent", "profile": "position-analyst" }, @@ -201,7 +156,7 @@ "script": "stale_push_wlin.py", "schedule": "1,31 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:33", + "last_run": "2026-07-09T10:01", "type": "no_agent", "profile": "position-analyst" } @@ -251,7 +206,7 @@ "script": "branch_scanner.py", "schedule": "15,30,45,00 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:45", + "last_run": "2026-07-09T10:30", "type": "no_agent", "profile": "position-analyst" } @@ -322,7 +277,7 @@ "script": "generate_report.py intraday_monitor", "schedule": "25,40,55,10 9-11 * * 1-5", "status": "ok", - "last_run": "2026-07-08T12:20", + "last_run": "2026-07-09T10:21", "type": "LLM", "profile": "position-analyst" } @@ -354,7 +309,7 @@ "script": "cron_to_xmpp.py", "schedule": "*/5 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:55", + "last_run": "2026-07-09T10:26", "type": "no_agent", "profile": "position-analyst" } @@ -370,7 +325,7 @@ "script": "generate_report.py opening_brief", "schedule": "35 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:43", + "last_run": "2026-07-09T09:50", "type": "LLM", "profile": "position-analyst" } @@ -418,28 +373,12 @@ "script": "system_health_check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:32", + "last_run": "2026-07-09T09:46", "type": "LLM", "profile": "position-analyst" } ] }, - { - "label": "多周期缓存刷新-开盘前 (refresh_mtf_cache.py)", - "desc": "开盘前刷新技术指标缓存", - "status": "ok", - "pipes": [ - { - "name": "多周期缓存刷新-开盘前", - "script": "refresh_mtf_cache.py", - "schedule": "0 9 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T09:01", - "type": "no_agent", - "profile": "position-analyst" - } - ] - }, { "label": "MoFin 系统常规体检-开盘前 (morning_health_check.py)", "desc": "开盘前8:00全面系统体检", @@ -459,14 +398,14 @@ { "label": "开盘前钉对钉验证 (preflight_verify.py)", "desc": "开盘前15项验证(脚本同步/DB完整性/资产公式)", - "status": "error", + "status": "ok", "pipes": [ { "name": "开盘前钉对钉验证", "script": "preflight_verify.py", "schedule": "30 8 * * 1-5", - "status": "error", - "last_run": "2026-07-09T08:30", + "status": "ok", + "last_run": "2026-07-09T10:25", "type": "no_agent", "profile": "position-analyst" } @@ -482,7 +421,7 @@ "script": "cron_to_xmpp.py", "schedule": "* 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:59", + "last_run": "2026-07-09T10:29", "type": "no_agent", "profile": "default" } @@ -539,7 +478,7 @@ "script": "macro_signal_consumer.py", "schedule": "5,20,35,50 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:50", + "last_run": "2026-07-09T10:20", "type": "no_agent", "profile": "position-analyst" } @@ -553,9 +492,9 @@ { "name": "跨市场背离检测", "script": "divergence_detector.py", - "schedule": "*/30 8-15 * * 1-5", + "schedule": "*/30 8-15 * * *", "status": "ok", - "last_run": "2026-07-09T08:30", + "last_run": "2026-07-09T10:00", "type": "no_agent", "profile": "position-analyst" }, @@ -580,7 +519,7 @@ "script": "xiaoguo_signal_consumer.py", "schedule": "0,15,30,45 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:46", + "last_run": "2026-07-09T10:17", "type": "no_agent", "profile": "position-analyst" } @@ -619,7 +558,7 @@ "script": "cron_health_monitor.py", "schedule": "*/10 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:50", + "last_run": "2026-07-09T10:21", "type": "no_agent", "profile": "position-analyst" } @@ -635,7 +574,7 @@ "script": "verify_reassess_pipeline.py", "schedule": "*/30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:30", + "last_run": "2026-07-09T10:30", "type": "no_agent", "profile": "position-analyst" } @@ -651,7 +590,7 @@ "script": "mofin_health.py", "schedule": "*/15 9-16,20-22 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:45", + "last_run": "2026-07-09T10:16", "type": "no_agent", "profile": "position-analyst" } @@ -683,7 +622,7 @@ "script": "intraday_health_check.py", "schedule": "*/15 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:45", + "last_run": "2026-07-09T10:15", "type": "no_agent", "profile": "position-analyst" } @@ -738,7 +677,7 @@ "script": "self_todo_executor.py", "schedule": "*/10 8-22 * * 1-5", "status": "ok", - "last_run": "2026-07-09T08:40", + "last_run": "2026-07-09T10:30", "type": "no_agent", "profile": "position-analyst" } @@ -754,7 +693,7 @@ "script": "review_needed_watchdog.py", "schedule": "0,30 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30", + "last_run": "2026-07-09T10:30", "type": "no_agent", "profile": "position-analyst" } @@ -770,7 +709,7 @@ "script": "clean_watchlist.py", "schedule": "5 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:05", + "last_run": "2026-07-09T09:05", "type": "no_agent", "profile": "position-analyst" } @@ -906,7 +845,7 @@ { "name": "多周期缓存刷新-盘中", "script": "refresh_mtf_cache.py", - "schedule": "0 11,14 * * 1-5", + "schedule": "0 9,11,14 * * 1-5", "status": "ok", "last_run": "2026-07-08T14:01", "type": "no_agent", @@ -920,38 +859,6 @@ "label": "未分类", "status": "ok", "children": [ - { - "label": "知识萃取-盘后 (None)", - "desc": "盘后从分析报告中萃取可复用知识", - "status": "ok", - "pipes": [ - { - "name": "知识萃取-盘后", - "script": null, - "schedule": "30 16 * * 1-5", - "status": "ok", - "last_run": "2026-07-01T16:59", - "type": "LLM", - "profile": "position-analyst" - } - ] - }, - { - "label": "区间维护 (None)", - "desc": "每30分钟维护买入区", - "status": "unknown", - "pipes": [ - { - "name": "区间维护", - "script": null, - "schedule": "every 30m", - "status": "unknown", - "last_run": "", - "type": "LLM", - "profile": "position-analyst" - } - ] - }, { "label": "知微洞察生成 (market_insight.py)", "desc": "生成每日市场洞察(15:35)", @@ -994,7 +901,7 @@ "script": "sync_dashboard.py", "schedule": "55 8 * * *", "status": "ok", - "last_run": "2026-07-08T08:55", + "last_run": "2026-07-09T08:55", "type": "no_agent", "profile": "default" } @@ -1057,8 +964,8 @@ "desc": "建议执行时间线", "rows": 12735, "readers": [ - "advice_reconciliation", - "mofin_db" + "mofin_db", + "advice_reconciliation" ], "writers": [ "advice_reconciliation" @@ -1165,8 +1072,8 @@ "mofin_db" ], "writers": [ - "mofin_db", - "mo_data" + "mo_data", + "mofin_db" ], "has_input": true, "has_output": true, @@ -1213,23 +1120,23 @@ { "name": "holding_strategies", "desc": "每只股票的完整策略参数", - "rows": 37, + "rows": 65, "readers": [ - "data_governance", - "mofin_db", - "mo_data", - "strategy_lifecycle", - "mofin_collect", - "run_all_tests", + "sync_decisions_to_db", "verify_reassess_pipeline", - "stale_push_wlin", + "strategy_lifecycle", + "mofin_db", + "run_all_tests", + "mofin_collect", "system_audit", - "system_health_check" + "mo_data", + "per_stock_reassess", + "pre-flight-check" ], "writers": [ - "data_governance", "sync_decisions_to_db", - "mofin_db" + "mofin_db", + "data_governance" ], "has_input": true, "has_output": true, @@ -1257,16 +1164,16 @@ "desc": "当前持仓(权威源)", "rows": 19, "readers": [ - "price_monitor", - "strategy_lifecycle", - "trend_detector", - "prepare_recommendation", - "per_stock_reassess", - "import_holding_xls", - "xiaoguo_scanner", - "mo_data", "mofin_collect", - "run_all_tests" + "mo_data", + "price_monitor", + "xiaoguo_signal_consumer", + "import_holding_xls", + "run_all_tests", + "refresh_mtf_cache", + "system_audit", + "prepare_recommendation", + "stale_push_wlin" ], "writers": [ "import_holding_xls", @@ -1296,17 +1203,17 @@ { "name": "live_prices", "desc": "所有持仓+自选最新实时价", - "rows": 20, + "rows": 34, "readers": [ - "cron_health_monitor", - "mo_data", "verify_reassess_pipeline", + "mofin_db", + "cron_health_monitor", "system_audit", - "mofin_db" + "mo_data" ], "writers": [ - "mofin_db", - "mo_data" + "mo_data", + "mofin_db" ], "has_input": true, "has_output": true, @@ -1330,15 +1237,15 @@ { "name": "macro_context_log", "desc": "宏观上下文(大盘偏向/指数)", - "rows": 12, + "rows": 15, "readers": [ + "stock_profile", "strategy_lifecycle", - "strategy_tree", - "divergence_detector", "system_audit", + "divergence_detector", "xiaoguo_signal_consumer", - "stale_push_wlin", - "stock_profile" + "strategy_tree", + "stale_push_wlin" ], "writers": [ "refresh_macro_context" @@ -1364,7 +1271,7 @@ { "name": "macro_raw_news", "desc": "宏观新闻原始数据", - "rows": 8484, + "rows": 8657, "readers": [ "macro_context_collector", "system_audit" @@ -1391,14 +1298,14 @@ { "name": "market_snapshots", "desc": "大盘指数快照(每10分)", - "rows": 548, + "rows": 555, "readers": [ - "mofin_db", - "prepare_report_data", "trend_detector", - "system_audit", + "mofin_db", "market_screener", - "mofin_query" + "system_audit", + "mofin_query", + "prepare_report_data" ], "writers": [ "mofin_db" @@ -1424,15 +1331,15 @@ { "name": "mtf_cache", "desc": "多周期均线缓存", - "rows": 37, + "rows": 39, "readers": [ "technical_analysis", - "mofin_db", - "multi_timeframe" + "multi_timeframe", + "mofin_db" ], "writers": [ - "mofin_db", - "multi_timeframe" + "multi_timeframe", + "mofin_db" ], "has_input": true, "has_output": true, @@ -1457,12 +1364,12 @@ "desc": "总资产/现金/仓位汇总", "rows": 1, "readers": [ + "import_holding_xls", "mofin_db", "mo_data", - "prepare_report_data", - "price_monitor", "preflight_verify", - "import_holding_xls" + "price_monitor", + "prepare_report_data" ], "writers": [ "import_holding_xls", @@ -1519,14 +1426,14 @@ "rows": 653, "readers": [ "xiaoguo_news_processor", - "mofin_news", "trend_detector", - "server" + "server", + "mofin_news" ], "writers": [ "xiaoguo_news_processor", - "mofin_news", - "trend_detector" + "trend_detector", + "mofin_news" ], "has_input": true, "has_output": true, @@ -1551,12 +1458,12 @@ { "name": "sector_snapshots", "desc": "行业板块数据", - "rows": 44230, + "rows": 44770, "readers": [ - "trend_detector", - "mofin_db", "strategy_lifecycle", - "market_screener" + "market_screener", + "trend_detector", + "mofin_db" ], "writers": [ "mofin_db" @@ -1582,20 +1489,20 @@ { "name": "signal_news", "desc": "信号相关新闻", - "rows": 1028, + "rows": 1075, "readers": [ - "system_audit", "macro_signal_consumer", + "system_audit", "xiaoguo_signal_consumer", - "server", - "intraday_health_check" + "intraday_health_check", + "server" ], "writers": [ "mofin_news", - "divergence_detector", "macro_signal_consumer", - "xiaoguo_signal_consumer", "macro_context_collector", + "divergence_detector", + "xiaoguo_signal_consumer", "xiaoguo_news_processor", "xiaoguo_scanner" ], @@ -1649,6 +1556,21 @@ } } }, + { + "name": "stock_daily", + "desc": "日线行情", + "rows": 6502, + "readers": [ + "mofin_db" + ], + "writers": [], + "has_input": false, + "has_output": true, + "orphan": true, + "flow_status": "read_only", + "warn": true, + "flow_detail": {} + }, { "name": "stock_fundamentals", "desc": "基本面数据(PE/PB)", @@ -1674,16 +1596,29 @@ } } }, + { + "name": "stock_monthly", + "desc": "月线行情", + "rows": 640, + "readers": [], + "writers": [], + "has_input": false, + "has_output": false, + "orphan": true, + "flow_status": "orphan", + "warn": true, + "flow_detail": {} + }, { "name": "stock_sectors", "desc": "股票行业映射", "rows": 62, "readers": [ - "mofin_news", "strategy_lifecycle", "trend_detector", - "xiaoguo_news_processor", - "mofin_db" + "mofin_news", + "mofin_db", + "xiaoguo_news_processor" ], "writers": [ "mofin_db" @@ -1706,15 +1641,28 @@ } } }, + { + "name": "stock_weekly", + "desc": "周线行情", + "rows": 1296, + "readers": [], + "writers": [], + "has_input": false, + "has_output": false, + "orphan": true, + "flow_status": "orphan", + "warn": true, + "flow_detail": {} + }, { "name": "stocks", "desc": "全量股票代码", - "rows": 87, + "rows": 90, "readers": [ - "mofin_news", - "mofin_db", + "xiaoguo_news_processor", "trend_detector", - "xiaoguo_news_processor" + "mofin_news", + "mofin_db" ], "writers": [ "mofin_db" @@ -1742,9 +1690,9 @@ "desc": "策略重评历史记录", "rows": 217, "readers": [ - "mofin_db", + "system_audit", "verify_reassess_pipeline", - "system_audit" + "mofin_db" ], "writers": [ "mofin_collect" @@ -1796,20 +1744,20 @@ { "name": "todos", "desc": "自愈任务队列", - "rows": 62, + "rows": 67, "readers": [ - "intraday_health_check", "self_todo_executor", - "strategy-staleness-check", - "morning_health_check" + "intraday_health_check", + "morning_health_check", + "strategy-staleness-check" ], "writers": [ - "preflight_verify", + "strategy-staleness-check", "mofin_collect", - "morning_health_check", - "intraday_health_check", + "preflight_verify", "self_todo_executor", - "strategy-staleness-check" + "intraday_health_check", + "morning_health_check" ], "has_input": true, "has_output": true, @@ -1838,20 +1786,20 @@ "desc": "自选股列表", "rows": 43, "readers": [ - "mo_alphasift_bridge", - "xiaoguo_scanner", - "mofin_db", - "mo_data", - "price_monitor", "trend_detector", - "mofin_collect", + "mofin_db", "run_all_tests", "refresh_mtf_cache", - "stale_detector" + "mofin_collect", + "mo_alphasift_bridge", + "mo_data", + "per_stock_reassess", + "price_monitor", + "stock_quote" ], "writers": [ - "mofin_db", - "per_stock_reassess" + "per_stock_reassess", + "mofin_db" ], "has_input": true, "has_output": true, @@ -1875,10 +1823,10 @@ { "name": "xiaoguo_scan_tracker", "desc": "小果扫描跟踪", - "rows": 488, + "rows": 519, "readers": [ - "xiaoguo_scanner", - "server" + "server", + "xiaoguo_scanner" ], "writers": [ "xiaoguo_scanner" @@ -1922,10 +1870,10 @@ { "name": "candidate_pool.json", "desc": "潜力股候选池完整数据", - "size_kb": 46.5, + "size_kb": 47.5, "readers": [], "writers": [], - "last_modified": "07-08 15:41", + "last_modified": "07-09 10:10", "warn": true }, { @@ -2048,19 +1996,19 @@ { "name": "macro_risk_state.json", "desc": "宏观风险状态(采集器写入)", - "size_kb": 2.8, + "size_kb": 1.6, "readers": [], "writers": [], - "last_modified": "07-09 08:00", + "last_modified": "07-09 10:06", "warn": true }, { "name": "mofin_health.json", "desc": "健康监控数据", - "size_kb": 70.9, + "size_kb": 82.9, "readers": [], "writers": [], - "last_modified": "07-09 08:32", + "last_modified": "07-09 10:16", "warn": true }, { @@ -2093,28 +2041,28 @@ { "name": "preflight_result.json", "desc": "", - "size_kb": 2.1, + "size_kb": 2.2, "readers": [], "writers": [], - "last_modified": "07-09 08:30", + "last_modified": "07-09 10:26", "warn": true }, { "name": "price_events.json", "desc": "", - "size_kb": 0.8, + "size_kb": 66.1, "readers": [], "writers": [], - "last_modified": "07-08 18:54", + "last_modified": "07-09 10:30", "warn": true }, { "name": "price_history.json", "desc": "", - "size_kb": 16.0, + "size_kb": 1.9, "readers": [], "writers": [], - "last_modified": "07-08 23:45", + "last_modified": "07-09 10:30", "warn": true }, { @@ -2132,7 +2080,7 @@ "size_kb": 0.1, "readers": [], "writers": [], - "last_modified": "07-08 15:45", + "last_modified": "07-09 10:30", "warn": true }, { @@ -2183,10 +2131,10 @@ { "name": "strategy_staleness_report.json", "desc": "策略过期报告", - "size_kb": 0.3, + "size_kb": 13.0, "readers": [], "writers": [], - "last_modified": "07-08 09:00", + "last_modified": "07-09 09:01", "warn": true }, { @@ -2269,7 +2217,7 @@ "script": "cron_watchdog.py", "schedule": "*/15 9-16 * * 1-5", "status": "error", - "last_run": "2026-07-08T16:45:35", + "last_run": "2026-07-09T10:15:52", "profile": "default" }, { @@ -2287,7 +2235,7 @@ "script": "generate_report.py intraday_monitor", "schedule": "25,40,55,10 9-11 * * 1-5", "status": "ok", - "last_run": "2026-07-08T12:20:23", + "last_run": "2026-07-09T10:21:54", "profile": "position-analyst" }, { @@ -2305,7 +2253,7 @@ "script": "bot_monitor.sh", "schedule": "every 60m", "status": "ok", - "last_run": "2026-07-09T07:50:40", + "last_run": "2026-07-09T09:51:43", "profile": "default" }, { @@ -2314,7 +2262,7 @@ "script": "cron_to_xmpp.py", "schedule": "* 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:59:02", + "last_run": "2026-07-09T10:29:30", "profile": "default" }, { @@ -2323,7 +2271,7 @@ "script": "cron_to_xmpp.py", "schedule": "*/5 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:55:18", + "last_run": "2026-07-09T10:26:07", "profile": "position-analyst" }, { @@ -2332,7 +2280,7 @@ "script": null, "schedule": "0 * * * *", "status": "ok", - "last_run": "2026-07-09T08:20:50", + "last_run": "2026-07-09T10:10:50", "profile": "default" }, { @@ -2359,7 +2307,7 @@ "script": "xiaoguo_quick_scan.py", "schedule": "*/15 * * * *", "status": "ok", - "last_run": "2026-07-09T08:45:58", + "last_run": "2026-07-09T10:15:55", "profile": "default" }, { @@ -2367,8 +2315,8 @@ "type": "no_agent", "script": "xiaoguo_tunnel_watchdog.sh", "schedule": "*/5 * * * *", - "status": "error", - "last_run": "2026-07-09T08:42:57", + "status": "ok", + "last_run": "2026-07-09T10:25:21", "profile": "default" }, { @@ -2376,8 +2324,8 @@ "type": "no_agent", "script": "price_monitor.py", "schedule": "*/2 9-16 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T22:56:00", + "status": "error", + "last_run": "2026-07-09T10:29:07", "profile": "position-analyst" }, { @@ -2386,7 +2334,7 @@ "script": "mofin_health.py", "schedule": "*/15 9-16,20-22 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:45:19", + "last_run": "2026-07-09T10:16:13", "profile": "position-analyst" }, { @@ -2404,7 +2352,7 @@ "script": "cron_health_monitor.py", "schedule": "*/10 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:50:44", + "last_run": "2026-07-09T10:21:22", "profile": "position-analyst" }, { @@ -2422,7 +2370,7 @@ "script": "branch_scanner.py", "schedule": "15,30,45,00 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:45:59", + "last_run": "2026-07-09T10:30:31", "profile": "position-analyst" }, { @@ -2434,20 +2382,11 @@ "last_run": "2026-07-02T20:12:33", "profile": "position-analyst" }, - { - "name": "多周期缓存刷新-开盘前", - "type": "no_agent", - "script": "refresh_mtf_cache.py", - "schedule": "0 9 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T09:01:47", - "profile": "position-analyst" - }, { "name": "多周期缓存刷新-盘中", "type": "no_agent", "script": "refresh_mtf_cache.py", - "schedule": "0 11,14 * * 1-5", + "schedule": "0 9,11,14 * * 1-5", "status": "ok", "last_run": "2026-07-08T14:01:26", "profile": "position-analyst" @@ -2458,7 +2397,7 @@ "script": "", "schedule": "{'kind': 'cron', 'expr': '*/10 * * * *'}", "status": "ok", - "last_run": "2026-07-09T08:41:43", + "last_run": "2026-07-09T10:21:54", "profile": "default" }, { @@ -2467,43 +2406,16 @@ "script": "refresh_macro_context.py", "schedule": "*/30 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30:36", + "last_run": "2026-07-09T10:01:04", "profile": "position-analyst" }, { "name": "宏观新闻采集", "type": "no_agent", "script": "macro_context_collector.py", - "schedule": "*/30 8-15 * * 1-5", + "schedule": "*/30 8-16 * * *", "status": "ok", - "last_run": "2026-07-09T08:30:24", - "profile": "position-analyst" - }, - { - "name": "宏观新闻采集-周末", - "type": "no_agent", - "script": "macro_context_collector.py", - "schedule": "0 8-16/2 * * 0,6", - "status": "ok", - "last_run": "2026-07-05T16:00:46", - "profile": "position-analyst" - }, - { - "name": "宏观采集-午间", - "type": "no_agent", - "script": "macro_context_collector.py", - "schedule": "0 12 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T12:01:43", - "profile": "position-analyst" - }, - { - "name": "宏观采集-早盘", - "type": "no_agent", - "script": "macro_context_collector.py", - "schedule": "35 9 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T09:35:52", + "last_run": "2026-07-09T10:01:09", "profile": "position-analyst" }, { @@ -2512,7 +2424,7 @@ "script": "macro_signal_consumer.py", "schedule": "5,20,35,50 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:50:10", + "last_run": "2026-07-09T10:20:53", "profile": "position-analyst" }, { @@ -2548,7 +2460,7 @@ "script": "xiaoguo_signal_consumer.py", "schedule": "0,15,30,45 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:46:02", + "last_run": "2026-07-09T10:17:05", "profile": "position-analyst" }, { @@ -2575,7 +2487,7 @@ "script": "xiaoguo_scanner.py", "schedule": "*/5 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:56:00", + "last_run": "2026-07-09T10:27:08", "profile": "position-analyst" }, { @@ -2584,7 +2496,7 @@ "script": "market_watch.py", "schedule": "*/10 9-11,13-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:50:21", + "last_run": "2026-07-09T10:21:00", "profile": "position-analyst" }, { @@ -2593,7 +2505,7 @@ "script": "market_watch.py", "schedule": "0,30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:30:31", + "last_run": "2026-07-09T10:00:41", "profile": "default" }, { @@ -2619,8 +2531,8 @@ "type": "no_agent", "script": "preflight_verify.py", "schedule": "30 8 * * 1-5", - "status": "error", - "last_run": "2026-07-09T08:30:32", + "status": "ok", + "last_run": "2026-07-09T10:25:00", "profile": "position-analyst" }, { @@ -2629,7 +2541,7 @@ "script": "generate_report.py opening_brief", "schedule": "35 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:43:31", + "last_run": "2026-07-09T09:50:00", "profile": "position-analyst" }, { @@ -2656,7 +2568,7 @@ "script": "sync_dashboard.py", "schedule": "55 8 * * *", "status": "ok", - "last_run": "2026-07-08T08:55:56", + "last_run": "2026-07-09T08:55:22", "profile": "default" }, { @@ -2692,7 +2604,7 @@ "script": "intraday_health_check.py", "schedule": "*/15 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:45:58", + "last_run": "2026-07-09T10:15:46", "profile": "position-analyst" }, { @@ -2755,7 +2667,7 @@ "script": "strategy-staleness-check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:10:49", + "last_run": "2026-07-09T09:10:25", "profile": "position-analyst" }, { @@ -2782,7 +2694,7 @@ "script": "review_needed_watchdog.py", "schedule": "0,30 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30:34", + "last_run": "2026-07-09T10:30:34", "profile": "position-analyst" }, { @@ -2791,7 +2703,7 @@ "script": "system_health_check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:32:03", + "last_run": "2026-07-09T09:46:10", "profile": "position-analyst" }, { @@ -2809,7 +2721,7 @@ "script": "self_todo_executor.py", "schedule": "*/10 8-22 * * 1-5", "status": "ok", - "last_run": "2026-07-09T08:40:23", + "last_run": "2026-07-09T10:30:36", "profile": "position-analyst" }, { @@ -2827,7 +2739,7 @@ "script": "stale_push_wlin.py", "schedule": "1,31 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:33:01", + "last_run": "2026-07-09T10:01:58", "profile": "position-analyst" }, { @@ -2836,7 +2748,7 @@ "script": "per_stock_reassess.py", "schedule": "0 9,12,15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:02:25", + "last_run": "2026-07-09T10:25:00", "profile": "position-analyst" }, { @@ -2863,16 +2775,7 @@ "script": "clean_watchlist.py", "schedule": "5 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:05:08", - "profile": "position-analyst" - }, - { - "name": "芯碁微装-价格监控", - "type": "LLM", - "script": "price_monitor.py", - "schedule": "0 10,14 * * 1-5", - "status": "ok", - "last_run": "2026-07-08T14:34:58", + "last_run": "2026-07-09T09:05:56", "profile": "position-analyst" }, { @@ -2899,16 +2802,16 @@ "script": "capital_flow_collector.py", "schedule": "1,31 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:31:37", + "last_run": "2026-07-09T10:01:57", "profile": "position-analyst" }, { "name": "跨市场背离检测", "type": "no_agent", "script": "divergence_detector.py", - "schedule": "*/30 8-15 * * 1-5", + "schedule": "*/30 8-15 * * *", "status": "ok", - "last_run": "2026-07-09T08:30:22", + "last_run": "2026-07-09T10:00:55", "profile": "position-analyst" }, { @@ -2926,7 +2829,7 @@ "script": "verify_reassess_pipeline.py", "schedule": "*/30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:30:53", + "last_run": "2026-07-09T10:30:37", "profile": "position-analyst" }, { @@ -2935,7 +2838,7 @@ "script": null, "schedule": "28 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:46:38", + "last_run": "2026-07-09T09:59:11", "profile": "default" } ] diff --git a/system_audit.py b/system_audit.py index c0c60127..f3221336 100644 --- a/system_audit.py +++ b/system_audit.py @@ -41,7 +41,7 @@ def log_ok(area, desc): def audit_signals(conn): try: total = conn.execute("SELECT COUNT(*) FROM signal_news").fetchone()[0] - unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL)").fetchone()[0] + unproc = conn.execute("SELECT COUNT(*) FROM signal_news WHERE source LIKE 'xiaoguo%' AND (processed=0 OR processed IS NULL) AND created_at > datetime('now', '-4 hours')").fetchone()[0] today = conn.execute("SELECT COUNT(*) FROM signal_news WHERE created_at > datetime('now','-1 day')").fetchone()[0] log_ok("信号管道", f"信号库{total}条,今日{today}条,未处理{unproc}条") if unproc > 30: