From 9fef32413bb9fbb682e9622df923e60554629bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Wed, 8 Jul 2026 23:54:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E5=85=A5=E5=8F=A3=20mo=5Fdata.get=5Fprice()=20-=2022?= =?UTF-8?q?=E4=B8=AA=E8=84=9A=E6=9C=AC=E7=A7=BB=E9=99=A4=E8=87=AA=E6=8B=89?= =?UTF-8?q?=E8=85=BE=E8=AE=AFAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 所有价格获取统一走 mo_data.get_price() / get_prices_batch(): - 优先读 live_prices(DB) → 无/过期才调 stock_quote(API) → 自动写回DB - 22个脚本全部替换:branch_scanner chip_factors divergence_detector market_screener mo_provider mofin_collect monitor_300308 300308_monitor multi_timeframe refresh_macro_context stale_detector stale_push_wlin stock_profile strategy_evaluator strategy_lifecycle strategy_review strategy-staleness-check technical_analysis xiaoguo_signal_consumer collect_evaluation_data --- CHANGELOG.md | 25 +- __pycache__/multi_timeframe.cpython-312.pyc | Bin 26641 -> 26641 bytes .../technical_analysis.cpython-312.pyc | Bin 25468 -> 25596 bytes data/analyst-knowledge-log.md | 14 + data/candidate_pool.json | 100 +- data/decisions.json | 823 -- data/decisions.json.bak | 4794 --------- data/decisions.json.bak.v3 | 2005 ---- data/evaluation_input.json | 2162 ++-- data/portfolio.json | 1 - data/portfolio.json.20260623 | 272 - data/price_events.json | 9258 +---------------- data/price_history.json | 270 +- .../{test_sync_marker => .hermes-tmp.2983720} | 0 scripts/.hermes-tmp.2983724 | 0 scripts/300308_monitor.py | 31 +- scripts/branch_scanner.py | 21 +- scripts/chip_factors.py | 16 +- scripts/clean_watchlist.py | 7 +- scripts/data_flow_audit.py | 115 + scripts/divergence_detector.py | 49 +- scripts/intraday_health_check.py | 8 +- scripts/mo_config.py | 32 +- scripts/mo_data.py | 124 +- scripts/mo_provider.py | 40 +- scripts/mofin_collect.py | 15 +- scripts/monitor_300308.py | 18 +- scripts/multi_timeframe.py | 4 +- scripts/per_stock_reassess.py | 49 +- scripts/pre-flight-check.py | 16 +- scripts/price_data_inject.py | 6 +- scripts/refresh_macro_context.py | 26 +- scripts/stale_detector.py | 86 +- scripts/stale_push_wlin.py | 100 +- scripts/stock_profile.py | 119 +- scripts/stock_quote.py | 16 +- scripts/strategy-staleness-check.py | 22 +- scripts/strategy_evaluator.py | 45 +- scripts/strategy_lifecycle.py | 5117 +++++---- scripts/strategy_review.py | 14 +- scripts/strategy_tree.py | 2 +- ...c_db_to_json.py => sync_db_to_json.py.bak} | 0 scripts/technical_analysis.py | 122 +- scripts/xiaoguo_signal_consumer.py | 21 +- static/mofin_health.json | 1557 +-- strategy_tree.py | 2 +- 46 files changed, 5530 insertions(+), 21994 deletions(-) delete mode 100644 data/decisions.json delete mode 100644 data/decisions.json.bak delete mode 100644 data/decisions.json.bak.v3 delete mode 100644 data/portfolio.json delete mode 100644 data/portfolio.json.20260623 rename scripts/{test_sync_marker => .hermes-tmp.2983720} (100%) create mode 100644 scripts/.hermes-tmp.2983724 create mode 100644 scripts/data_flow_audit.py rename scripts/{sync_db_to_json.py => sync_db_to_json.py.bak} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fa568a4..158d7223 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -162,4 +162,27 @@ total_assets: stored = calculated ✅ ### 变更总结 - 核心数据(持仓/自选/策略)的读和写已 100% 走 DB - 唯一仍用 JSON 的非核心文件:reports/*.json(报告缓存)、stocks/*.json(个股详情缓存)、market.json(大盘数据缓存)、accuracy_stats.json(统计缓存) -- 这些是 Dashboard 前端的缓存层,不是权威数据源,暂时保留 + +## 2026-07-08 — BUGFIX: per_stock_reassess.py holding_strategies DB 写回 + JSON 最终移除 + +### 发现 +Dad 反馈我的 v4 手动分析(买入区3.62~3.72)与 13:01 cron 报告(买入区3.78~3.87)不一致。经审计发现两个问题: +1. **per_stock_reassess.py** 调用 reassess_with_context() 后不写 holding_strategies 表(只写 watchlist_stocks 表)。而 read_decisions() 从 holding_strategies 读 → 新策略数据不可见 +2. **decisions.json** 仍有残余依赖,2条旧数据的文件被当作权威源 + +### 修改 +- `per_stock_reassess.py`:策略更新后追加 `write_holding_strategy()` 写入 DB,持仓/自选全部写回 holding_strategies 表 +- `per_stock_reassess.py`:移除 DECISIONS_PATH 常量 + 清理 JSON 死代码注释 +- 同步修复 profile 副本(`~/.hermes/profiles/position-analyst/scripts/per_stock_reassess.py`) +- `sync_db_to_json.py`:删除(DB→JSON 反向同步,无调用者) +- `decisions.json`(两处):删除,备份为 .bak + +### 审计确认 +- MoFin/scripts/ + web-dashboard/ + profile/scripts/ 三个目录下的 active python 代码 **均不再直接读写 decisions.json** +- 所有策略数据通过 `mo_data.read_decisions()` → DB holding_strategies 表 读取 +- 所有策略写入通过 `mofin_db.write_holding_strategy()` → DB holding_strategies 表 + +### 验证 +- `per_stock_reassess 688981` → 输出 `[DB] holding_strategies 已更新: 688981` +- DB holding_strategies 从 1 条 → 17 条 +- web-dashboard PID 4003859 正常运行,API 通过 DB 读取 diff --git a/__pycache__/multi_timeframe.cpython-312.pyc b/__pycache__/multi_timeframe.cpython-312.pyc index 098c2da8ab8b5ef52e6e2eb719a1183b95386f07..168c80af0d3c3476a0c8f4df8fc0511dd2019963 100644 GIT binary patch delta 21 bcmbPufpOvmMy}Jmyj%=Gu;|K0F7^xnO$r8H delta 21 bcmbPufpOvmMy}Jmyj%=Gu;lVaF7^xnO%VoP diff --git a/__pycache__/technical_analysis.cpython-312.pyc b/__pycache__/technical_analysis.cpython-312.pyc index f89f9b78c335df02272aff00704db61081312a49..8e3532e91270878e1194eeda933ae359e08becaf 100644 GIT binary patch delta 2189 zcmb7_%}*Og7{+JTi@(;(+StY)usGCE41^LeA58+Gwjm)98e3S3szRiQX%I%WDto0; zYgV*}R#g=#sYaEm0!mI*BQCADwU^RJ?IG&HDpJxaha9T@0X?T5Gvkc$n&!}zyt|%x z<~Ps0^Uk}^euU3{g6cz6bpv{Rd$d$|`i<&M!93|oW!jNkQ2;~7ky4cXZn`5+Y_ zu{Nhvj*!XJz`W>p0SpT&<5(|46aNKaAJ$sL)0DAX@DZQeuQ@Qd3HPO1f5A_(Z$|BA z3+)cF*C+(Ir7R;Sa&5q6V1xv@5GIEiKe?C=K%JyU1E<%4fS3*=CS=$lrbNmnoutH3 zWG5XVkJBFVeL6g@MyU8x>6S|drrUJ>*H}|Ax&;xnVg+eL%|vo>(T3gFqX48;Xi$+i z3dEe)!@^gTu^V~WET-DPQLs{X+`0}-&FCfXX7nMgLX}wAj8eBQO7;peBXAbvEFabi zeKZJqtiSHVhgH6TK0z)*>h-UTKB<{)SSu;UU|p*TmrP^&se`}IOHIFBYQ+KM-IBH>hCq6S=G>ZXO=5uJo~5tL(s%oRS!3xjhGHkIb)WQh zihE-NxHWQjE;O0776HM8# z;N#5iXM1r6mV!n@#-afv9cL<1_>ph7CgshC33+Q8dC|yLbkU zvsH`eOi$qO4nUJQO7E}kwTNtlp!iuG!3fC)!r2!R&RGa=Q^GJG*X-f^3kg#e!kmTB z=wZ5%5Nlk;1q(qJD@`?OW-J;Ry|x9-uo`bv4cEFxwb`_U|iac#~g{k0jlOQPs z-O~-2g(ej(Kefr?=j$pbTC}QgpyWeW3Pb!m^TmRv;}UK&hMz|hU{#F7nh_(13wl4# zbhNbVTn6i)_KX9Amhsxv14<5BHtCm)I2L>1>tty0p6fS9d9AeZj!{1NdGT`_43nEz z2ORddwl>N}ncTi=KrfNAarie$WKGygzRXTTjr^Wna}U!m>M!(H&XHU$I&$y5s&?k< ziK=$?{rSh9z@19f)BQ;4uPXgV%HXg5(5{nQc;ru1{fVz8s{WCWod;Vvw>`nK<1mo& z=T-1SB24cO5}y1i`N26)zE?g{)x2&y>V$dy;QqBIGIjCMN)H?*`z!k}Nv^Gy;V^l) z8iga|kJVY&Lk6#B-BZ+4iQV2f`0)BalAZZ1O_5J-YwRnntw>egU7S~HK^{}%1@B&%5YrPPjMi{<_AxZM z!#v>Qe-zXF*Kk7jGqOpKl;&A2#(#M~<2QZGTZ@Zjh7#u6@j?KC_i2R~Ny$;`;3qfZ z{Lx&3W`*~~&=!#_X28fv919%L<{H#(^wO}oSfE562CK>zsVeIMR32nO2=f2zA$6Oi78Dj4wa8*juk~9=>Mp501GbnL z(}Y`Slk9a0QNCEpO+?LhrZ>XIkd4))RDm($s3LKnm`TQ z--xmV=)20UA}FA1538-}sVah?e&{;Oxy~N`FKMEJ#-aP1w3+kTdMs_iz%A{9%l(>= z#(!Su%+A3@Nn4-BnDbV-cF7F)%MACO%W%IHWL6^WyLjy!azG#*0k@iCP~62M>MmOt z0;N^1pjr*y;Vf*p1Vd*L(`F~@V4W~5FQ=iv<$BoKE7(a<;0hMiRWpT`YPm7fERCt? zU5qb})MH{TZW6y%Im0!FJ46krthp zw_F%6%vD_SEDfh#M{dI1MrHbZjKNIO7);!?g}g*{)U-jxdUQi zpEZ5zvF0>s#dIUb!z;NVtG40RlVF8xk>)o~jFhzKBaHwKO8kH0<&}QA z%0FEB?D)d1Pd&7ge{=g1|NZt3)%o4EJpG4%yk=63)A9_B^4W4#E#N=fDgJf}{EKo% zd!`Sc=)<3Hp6KHrEgk<|R{aBg=;q5}yfR3>_oVRs)Dx*(_dZQV-XY%8L9H_BIh~-D z$>X8-e)FOO|9T%C;lt}k^csJ*zC#OqWg|nc^39DBy~vL?*3>C<*ATCFk9~JvD1ITK aF~!w;Wm-PIb8n3LiwgDsxx^n=xBde~7M{WY diff --git a/data/analyst-knowledge-log.md b/data/analyst-knowledge-log.md index 39103cc1..b7d8ac6c 100644 --- a/data/analyst-knowledge-log.md +++ b/data/analyst-knowledge-log.md @@ -88,3 +88,17 @@ **强制规则(以后所有推荐都走):** 三步流程:触发系统策略重评 → 检查交易约束 → 基于策略结果出推荐 禁止凭行情直接下结论。 + +## 2026-07-08 补建prepare_recommendation.py(实际文件缺失修复) + +**发现问题:** 午后监控(13:35)运行时发现prepare_recommendation.py实际不存在——2026-07-07知识日志记录已"新建"但system_inventory.json引用的文件路径缺失。根因: 2026-07-07 session中仅记录了计划/写入意图但文件未实际落盘。 + +**修改内容:** +1. 实际创建 `/home/hmo/.hermes/profiles/position-analyst/scripts/prepare_recommendation.py` + - 调用per_stock_reassess.py获取策略信号(timing_signal/action_note/止损/止盈/RR) + - 自动识别市场(A股/港股/科创板)及最小交易单位(100/200) + - 对持仓股计算pnl(成本/盈亏金额/盈亏比例) + - 输出标准化JSON(strategy + trade_constraints + pnl) + - 已验证: 688981(科创板200股)→策略信号:买入但RR1.31<1.5降级+浮盈+22.57% + - 已验证: 01478(港股100股)→策略信号:弱势持有+浮亏-48.85% +2. 同时生成本日午后监控报告 diff --git a/data/candidate_pool.json b/data/candidate_pool.json index b876f38e..4a3bcca9 100644 --- a/data/candidate_pool.json +++ b/data/candidate_pool.json @@ -1,6 +1,6 @@ { - "last_updated": "2026-07-07 14:07", - "total_candidates": 31, + "last_updated": "2026-07-08 15:41", + "total_candidates": 34, "sectors_analyzed_today": [ "半导体", "金属新材料", @@ -1483,6 +1483,102 @@ "drop_reason": null, "trend_warning": false, "trend_note": "" + }, + { + "code": "000977", + "name": "浪潮信息", + "sector": "计算机设备", + "xiaoguo_score": 7, + "xiaoguo_reason": "AI服务器核心标的,订单与产能优势明显,但受供应链与毛利率压制;板块资金流出中仍显相对韧性,适合逢低布局算力基建主线。", + "xiaoguo_strategy": { + "entry_range": "38.5-40.2", + "stop_loss": "36.8", + "target": "45.0" + }, + "verified_price": 78.17, + "verified_change": 10.01, + "added_at": "2026-07-08 15:09", + "last_updated": "2026-07-08 15:09", + "num_observations": 1, + "score_history": [ + { + "date": "2026-07-08 15:09", + "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": "" + }, + { + "code": "603019", + "name": "中科曙光", + "sector": "计算机设备", + "xiaoguo_score": 7.5, + "xiaoguo_reason": "国产高性能计算与液冷技术龙头,政策与信创双重驱动,基本面稳健;波动率低于纯AI概念股,防御与进攻属性均衡。", + "xiaoguo_strategy": { + "entry_range": "42.0-43.5", + "stop_loss": "39.5", + "target": "48.0" + }, + "verified_price": 98.15, + "verified_change": 4.97, + "added_at": "2026-07-08 15:09", + "last_updated": "2026-07-08 15:09", + "num_observations": 1, + "score_history": [ + { + "date": "2026-07-08 15:09", + "score": 7.5 + } + ], + "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": "" + }, + { + "code": "000938", + "name": "紫光股份", + "sector": "计算机设备", + "xiaoguo_score": 6.5, + "xiaoguo_reason": "ICT基础设施全栈布局(服务器/交换机/存储),H3C整合推进中;估值处于历史中低位,但短期受板块情绪拖累,需等待资金回流确认。", + "xiaoguo_strategy": { + "entry_range": "28.0-29.5", + "stop_loss": "26.2", + "target": "33.0" + }, + "verified_price": 33.62, + "verified_change": 6.8, + "added_at": "2026-07-08 15:09", + "last_updated": "2026-07-08 15:09", + "num_observations": 1, + "score_history": [ + { + "date": "2026-07-08 15:09", + "score": 6.5 + } + ], + "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/decisions.json b/data/decisions.json deleted file mode 100644 index 19d04b9b..00000000 --- a/data/decisions.json +++ /dev/null @@ -1,823 +0,0 @@ -{ - "decisions": [ - { - "code": "000700", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 13.74, - "take_profit": 18.6, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322495", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322495", - "type": "decision" - }, - { - "code": "00700", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 390.83, - "take_profit": 528.77, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度20%→10%", - "created_at": "2026-07-08T11:42:04.322435", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322435", - "type": "decision" - }, - { - "code": "00981", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 67.0, - "take_profit": 88.0, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322447", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322447", - "type": "decision" - }, - { - "code": "01088", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 42.0, - "take_profit": 52.0, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322519", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322519", - "type": "decision" - }, - { - "code": "01211", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 77.92, - "take_profit": 104.49, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度16%→10%", - "created_at": "2026-07-08T11:42:04.322411", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322411", - "type": "decision" - }, - { - "code": "01478", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 7.9, - "take_profit": 9.88, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度10%→10%", - "created_at": "2026-07-08T11:42:04.322314", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322314", - "type": "decision" - }, - { - "code": "01888", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 53.55, - "take_profit": 72.45, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9盘后自动调整:价格偏离区间,止损=现价×0.85,止盈=现价×1.15", - "created_at": "2026-07-08T11:42:04.322373", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322373", - "type": "decision" - }, - { - "code": "02202", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 2.34, - "take_profit": 2.92, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度10%→10%", - "created_at": "2026-07-08T11:42:04.322423", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322423", - "type": "decision" - }, - { - "code": "06869", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 209.1, - "take_profit": 282.9, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度20%→10%", - "created_at": "2026-07-08T11:42:04.322285", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322285", - "type": "decision" - }, - { - "code": "300035", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 15.47, - "take_profit": 20.63, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322484", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322484", - "type": "decision" - }, - { - "code": "300308", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": null, - "take_profit": null, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322146", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322146", - "type": "decision" - }, - { - "code": "300548", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 197.92, - "take_profit": 267.78, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度20%→10%", - "created_at": "2026-07-08T11:42:04.322459", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322459", - "type": "decision" - }, - { - "code": "300750", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 331.66, - "take_profit": 448.72, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度20%→10%", - "created_at": "2026-07-08T11:42:04.322399", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322399", - "type": "decision" - }, - { - "code": "518880", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 7.66, - "take_profit": 10.36, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "现价9.01(+0.64%),自动生成策略", - "created_at": "2026-07-08T11:42:04.322472", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322472", - "type": "decision" - }, - { - "code": "600563", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 139.75, - "take_profit": 187.4, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度16%→10%", - "created_at": "2026-07-08T11:42:04.322507", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322507", - "type": "decision" - }, - { - "code": "601899", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 25.13, - "take_profit": 33.5, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度14%→10%", - "created_at": "2026-07-08T11:42:04.322332", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322332", - "type": "decision" - }, - { - "code": "688411", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 235.0, - "take_profit": 300.0, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322347", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322347", - "type": "decision" - }, - { - "code": "688639", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 18.36, - "take_profit": 24.48, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": "6/9知微收紧:宽度14%→10%", - "created_at": "2026-07-08T11:42:04.322387", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322387", - "type": "decision" - }, - { - "code": "688981", - "name": null, - "version": 1, - "price": null, - "cost": null, - "shares": 0, - "stop_loss": 112.0, - "take_profit": 145.0, - "entry_low": null, - "entry_high": null, - "currency": "CNY", - "strategy_type": "decision", - "action": null, - "timing_signal": null, - "rr_ratio": null, - "tech_snapshot": null, - "stock_category": null, - "sector_context": null, - "status": "active", - "trigger_json": null, - "changelog_json": null, - "source": "migrate", - "reason": null, - "created_at": "2026-07-08T11:42:04.322360", - "updated_at": null, - "avg_price": null, - "decision_timestamp": null, - "note": null, - "quality_check": null, - "quality_checked_at": null, - "quality_issues_json": null, - "position_advice": null, - "signal_factors_json": null, - "time_horizon": null, - "decision_type": null, - "trigger": {}, - "changelog": [], - "quality_issues": {}, - "signal_factors": [], - "timestamp": "2026-07-08T11:42:04.322360", - "type": "decision" - } - ], - "total": 19, - "regenerated_at": "2026-07-08 11:42" -} \ No newline at end of file diff --git a/data/decisions.json.bak b/data/decisions.json.bak deleted file mode 100644 index b562fa64..00000000 --- a/data/decisions.json.bak +++ /dev/null @@ -1,4794 +0,0 @@ -{ - "decisions": [ - { - "code": "000657", - "name": "中钨高新", - "price": 100.08, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标112.75 | 止损95.93 | 买入区98.08~102.08", - "stop_loss": 95.93, - "entry_low": 98.08, - "entry_high": 102.08, - "tech_snapshot": "形态:锤子线/T字线/neutral 量价:主动买盘占优 强撑:92.25 弱撑:95.93 弱压:103.1 强压:112.75", - "timing_signal": "信号不充分", - "rr_ratio": 3.05, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "自选策略", - "source": "auto", - "sector_context": "大盘上涨比13.3%", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-24 14:23", - "take_profit": 112.75, - "updated_reason": "技术面重评: 止损95.97→95.93 | 形态:锤子线/T字线/neutral 量价:主动买盘占优 强撑:92.25 弱撑:95.93 弱压:103.1 强压:1", - "changelog": [ - { - "date": "2026-06-24 14:23", - "old_action": "", - "new_action": "盈利持有 | 目标112.75 | 止损96.09 | 买入区98.36~102.38", - "reason": "初始策略创建 | 形态:锤子线/T字线/neutral 量价:主动买盘占优 强撑:92.25 弱撑:96.09 弱压:103.26 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标112.75 | 止损96.09 | 买入区98.36~102.38", - "new_action": "盈利持有 | 目标112.75 | 止损95.97 | 买入区98.14~102.14", - "reason": "技术信号变化: 信号不充分: 止损96.09→95.97 | 形态:锤子线/T字线/neutral 量价:主动买盘占优 强撑:92.25 弱撑:95.97 弱压:103.14 强压:", - "trigger": "技术信号变化: 信号不充分" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利持有 | 目标112.75 | 止损95.97 | 买入区98.14~102.14", - "new_action": "盈利持有 | 目标112.75 | 止损95.93 | 买入区98.08~102.08", - "reason": "技术面重评: 止损95.97→95.93 | 形态:锤子线/T字线/neutral 量价:主动买盘占优 强撑:92.25 弱撑:95.93 弱压:103.1 强压:1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "000700", - "name": "模塑科技", - "price": 14.52, - "cost": 14.83, - "shares": 1400, - "avg_price": 0, - "action": "持有观察 | 止损13.91 | 目标17.0 | 买入区14.53~15.26 | 信号:持有", - "stop_loss": 13.91, - "entry_low": 14.53, - "entry_high": 15.26, - "tech_snapshot": "形态:光头光脚阴线/neutral 量价:主动买盘占优 强撑:13.48 弱撑:14.14 弱压:15.06 强压:16.48", - "timing_signal": "持有", - "rr_ratio": 4.07, - "status": "manual", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "持仓策略", - "source": "manual", - "sector_context": "行业汽车零部件下跌-1.5%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-23 09:00", - "take_profit": 17.0, - "changelog": [ - { - "date": "2026-06-23 09:00", - "old_action": "盈利持有 | 止损13.91 | 目标17.0 | 买入区14.53~15.26 | 信号:温和放量,持有", - "new_action": "盈利持有 | 止损参考13.91 | 买入区14.53~15.26", - "reason": "技术信号变化: neutral: 策略文字调整", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-24 11:27", - "old_action": "盈利持有 | 止损参考13.91 | 买入区14.53~15.26", - "new_action": "持有观察 | 止损13.91 | 目标17.0 | 买入区14.53~15.26 | 信号:持有", - "reason": "技术信号变化: 持有: 策略文字调整", - "trigger": "技术信号变化: 持有" - } - ], - "execution": { - "status": "none" - } - }, - { - "code": "000711", - "name": "ST京蓝", - "price": 5.04, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标5.38 | 止损4.33 | 买入区4.94~5.06 | 信号:观望", - "stop_loss": 4.33, - "entry_low": 4.94, - "entry_high": 5.06, - "tech_snapshot": "形态:十字星/neutral 量价:主动卖盘占优 强撑:4.86 弱撑:4.85 弱压:5.24 强压:5.38", - "timing_signal": "观望", - "rr_ratio": 1.79, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.8),谨慎买入", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "自选策略", - "source": "auto", - "sector_context": "行业房地产大跌-3.1%,收紧止损 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓强趋势让利润跑", - "time_horizon": "数日~2周", - "created_at": "2026-06-24 14:23", - "take_profit": 5.38, - "updated_reason": "技术面重评: 止损4.85→4.33 | 形态:十字星/neutral 量价:主动卖盘占优 强撑:4.86 弱撑:4.85 弱压:5.24 强压:5.38", - "changelog": [ - { - "date": "2026-06-24 14:23", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 目标5.38 | 止损4.34 | 买入区4.96~5.07 | 信号:观望", - "reason": "初始策略创建 | 形态:长影星线/neutral 量价:主动卖盘占优 强撑:4.86 弱撑:4.86 弱压:5.25 强压:5.38", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 目标5.38 | 止损4.86 | 买入区4.96~5.07 | 信号:观望", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标5.38 | 止损4.34 | 买入区4.95~5.07 | 信号:观望", - "reason": "技术面重评: 止损4.86→4.34 | 形态:十字星/neutral 量价:主动卖盘占优 强撑:4.86 弱撑:4.86 弱压:5.25 强压:5.38", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标5.38 | 止损4.85 | 买入区4.94~5.06 | 信号:观望", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标5.38 | 止损4.33 | 买入区4.94~5.06 | 信号:观望", - "reason": "技术面重评: 止损4.85→4.33 | 形态:十字星/neutral 量价:主动卖盘占优 强撑:4.86 弱撑:4.85 弱压:5.24 强压:5.38", - "trigger": "技术面重评" - } - ] - }, - { - "code": "001309", - "name": "德明利", - "price": 810.0, - "cost": 737.04, - "shares": 100, - "avg_price": 0, - "action": "盈利良好 | ⚠️盈亏比偏低(1:0.5),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "stop_loss": 724.0, - "entry_low": 762.44, - "entry_high": 758.71, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:679.51 弱撑:755.01 弱压:836.75 强压:830.51", - "timing_signal": "持有", - "rr_ratio": 0.01, - "status": "manual", - "note": "⚠️盈亏比偏低(1:0.5),不建议加仓", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "持仓策略", - "source": "manual", - "sector_context": "行业半导体大涨+3.8%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-18 17:15", - "take_profit": 810.78, - "updated_reason": "技术面重评: 策略文字调整", - "changelog": [ - { - "date": "2026-06-18 10:25", - "old_action": "", - "new_action": "盈利持有 | 损681.77 | 盈780.58 | 买688.8~716.92 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:695.63 弱压:712.53 ", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | 损681.77 | 盈780.58 | 买688.8~716.92 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损696.46 | 盈780.58 | 买703.64~730.11 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损681.77→696.46 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:638.66 弱撑:704.72 弱压:724.64 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损696.46 | 盈780.58 | 买703.64~730.11 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考702.28 | 买入区709.52~733.6", - "reason": "技术信号变化: neutral: 止损696.46→702.28 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:638.66 弱撑:702.72 弱压:740.64 强压:", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考702.28 | 买入区709.52~733.6", - "new_action": "盈利持有 | 止损参考690.64 | 买入区697.76~726.24", - "reason": "技术面重评: 止损702.28→690.64 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:694.72 弱压:732.64 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | 止损参考690.64 | 买入区697.76~726.24", - "new_action": "盈利持有 | 止损669.92 | 买入区697.76~726.24", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利持有 | 止损669.92 | 买入区697.76~726.24", - "new_action": "盈利持有 | 止损690.64 | 买入区697.76~726.24", - "reason": "技术面重评: 止损669.92→690.64 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:694.72 弱压:732.64 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | 止损690.64 | 买入区697.76~726.24", - "new_action": "盈利持有 | 止损683.32 | 买入区697.76~726.24", - "reason": "技术面重评: 止损690.64→683.32 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:694.72 弱压:732.64 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "盈利持有 | 目标参考783.2 | 止损参考690.64 | 买入区697.76~726.24 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 目标783.2 | 止损681.55 | 买入区709.87~734.86", - "reason": "技术信号变化: neutral: 止损690.64→681.55 | 形态:十字星/neutral 量价:主动买盘占优 强撑:640.8 弱撑:706.91 弱压:740.91 强压:783", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-23 09:00", - "old_action": "盈利持有 | 目标783.2 | 止损702.63 | 买入区709.87~734.86", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标783.2 | 止损714.96 | 买入区722.33~740.48 | 信号:量价齐升,可买入", - "reason": "技术信号变化: 大盘中性,行业偏强,量价齐升,可买入: 止损702.63→714.96 | 形态:带下影阳线/bullish 量价:主动买盘占优 强撑:640.8 弱撑:712.0 弱压:749.38 强压:78", - "trigger": "技术信号变化: 大盘中性,行业偏强,量价齐升,可买入" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | ⚠️盈亏比极低,关注 | 止损700.4 | 目标810.78 | 买入区726.81~737.07 | 信号:温和放量,持有", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考700.4 | 买入区726.81~737.07 | 信号:量价齐升,可买入", - "reason": "技术信号变化: 量价齐升,可买入: 策略文字调整", - "trigger": "技术信号变化: 量价齐升,可买入" - }, - { - "date": "2026-06-24 09:00", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标810.78 | 止损724.0 | 买入区762.44~758.71 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考724.0 | 买入区762.44~758.71", - "reason": "价格变动(778.0→755.01): 策略文字调整", - "trigger": "价格变动(778.0→755.01)" - }, - { - "date": "2026-06-24 11:27", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考724.0 | 买入区762.44~758.71", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "reason": "技术信号变化: 持有: 策略文字调整", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 13:29", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:23", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.5),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "reason": "价格变动(0→808.6): 策略文字调整", - "trigger": "价格变动(0→808.6)" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:0.5),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.7),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:0.7),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.5),不建议加仓 | 止损724.0 | 目标810.78 | 买入区762.44~758.71 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "002594", - "name": "比亚迪", - "price": 83.3, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标92.71 | 止损75.24 | 买入区81.63~84.97 | 信号:观望", - "stop_loss": 75.24, - "entry_low": 81.63, - "entry_high": 84.97, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:76.5 弱撑:82.49 弱压:85.0 强压:92.71", - "timing_signal": "观望", - "rr_ratio": 3.76, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "自选策略", - "source": "auto", - "sector_context": "行业汽车整车下跌-2.5%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:23", - "take_profit": 92.71, - "updated_reason": "技术面重评: 止损80.8→75.24 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:76.5 弱撑:82.49 弱压:85.0 强压:92.7", - "changelog": [ - { - "date": "2026-06-24 14:23", - "old_action": "", - "new_action": "盈利持有 | 目标92.77 | 止损78.54 | 买入区81.8~85.14 | 信号:观望", - "reason": "初始策略创建 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:76.5 弱撑:82.61 弱压:85.0 强压:92.77", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标92.74 | 止损80.88 | 买入区81.71~85.05 | 信号:观望", - "new_action": "盈利持有 | 目标92.74 | 止损78.45 | 买入区81.71~85.05 | 信号:观望", - "reason": "技术面重评: 止损80.88→78.45 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:76.5 弱撑:82.54 弱压:85.0 强压:92.74", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利持有 | 目标92.71 | 止损80.8 | 买入区81.63~84.97 | 信号:观望", - "new_action": "盈利持有 | 目标92.71 | 止损75.24 | 买入区81.63~84.97 | 信号:观望", - "reason": "技术面重评: 止损80.8→75.24 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:76.5 弱撑:82.49 弱压:85.0 强压:92.7", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00700", - "name": "腾讯控股", - "price": 428.8, - "cost": 443.9, - "shares": 100, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损337.9 | 目标473.71 | 买入区414.33~427.07 | 信号:持有", - "stop_loss": 337.9, - "entry_low": 414.33, - "entry_high": 427.07, - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:362.87 弱撑:414.33 弱压:441.53 强压:491.27", - "timing_signal": "持有", - "rr_ratio": 0.95, - "status": "updated", - "note": "⚠️盈亏比偏低(1:0.9),不建议加仓", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业软件开发下跌-2.6%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 473.71, - "updated_reason": "技术面重评: 止损324.0→337.9, 止盈448.96→473.71 | 形态:带上影阳线/neutral 量价:数据不足 强撑:362.87 弱撑:414.33 弱压:441.53 强压:49", - "changelog": [ - { - "date": "2026-06-18 10:26", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损401.6 | 目标480.4 | 买入区435.8~441.0 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:401.6 弱撑:435.8 弱压:445.4 强压:48", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损401.6 | 目标480.4 | 买入区435.8~441.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.47 | 目标480.67 | 买入区433.93~440.07 | 信号:持有", - "reason": "技术面重评: 止损401.6→399.47, 止盈480.4→480.67 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.47 弱撑:433.93 弱压:445.4 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.47 | 目标480.67 | 买入区433.93~440.07 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.4 | 目标480.6 | 买入区433.8~440.0 | 信号:持有", - "reason": "技术面重评: 止损399.47→399.4, 止盈480.67→480.6 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.4 弱撑:433.8 弱压:445.4 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.4 | 目标480.6 | 买入区433.8~440.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.67 | 目标480.87 | 买入区434.33~440.27 | 信号:持有", - "reason": "技术面重评: 止损399.4→399.67, 止盈480.6→480.87 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.67 弱撑:434.33 弱压:445.4 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.67 | 目标480.87 | 买入区434.33~440.27 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损398.6 | 目标481.0 | 买入区433.4~439.8 | 信号:持有", - "reason": "技术面重评: 止损399.67→398.6, 止盈480.87→488.22 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:398.6 弱撑:433.4 弱压:445.4 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损398.6 | 目标481.0 | 买入区433.4~439.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损398.2 | 目标480.6 | 买入区432.6~439.4 | 信号:持有", - "reason": "技术面重评: 止损398.6→398.2, 止盈488.22→487.81 | 形态:带上影阴线/bearish 量价:数据不足 强撑:398.2 弱撑:432.6 弱压:445.4 强压:480.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损398.2 | 目标480.6 | 买入区432.6~439.4 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标481.87 | 买入区435.13~440.67 | 信号:持有", - "reason": "技术面重评: 止损398.2→399.47, 止盈487.81→489.1 | 形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标481.87 | 买入区435.13~440.67 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损395.24 | 目标489.1 | 买入区435.13~440.67 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损395.24 | 目标489.1 | 买入区435.13~440.67 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", - "reason": "技术面重评: 止损395.24→399.47, 止盈489.1→496.33 | 形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", - "reason": "技术面重评: 止损399.47→387.49 | 形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损362.24 | 目标456.57 | 买入区430.6~434.8 | 信号:持有", - "reason": "技术面重评: 止损387.49→362.24, 止盈496.33→456.57 | 形态:带下影阴线/neutral 量价:数据不足 强撑:389.0 弱撑:430.6 弱压:440.2 强压:480.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损362.24 | 目标456.57 | 买入区430.6~434.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损392.77 | 目标481.87 | 买入区427.93~433.47 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有: 止损362.24→392.77, 止盈456.57→481.87 | 形态:带下影阴线/neutral 量价:数据不足 强撑:385.07 弱撑:427.93 弱压:440.2 强压:481", - "trigger": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损392.77 | 目标481.87 | 买入区427.93~433.47 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损357.8 | 目标484.2 | 买入区409.6~421.0 | 信号:持有", - "reason": "价格变动(433.0→417.2): 止损392.77→357.8, 止盈481.87→484.2 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:357.8 弱撑:409.6 弱压:433.0 强压:484.", - "trigger": "价格变动(433.0→417.2)" - }, - { - "date": "2026-06-24 09:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损357.8 | 目标484.2 | 买入区409.6~421.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损363.35 | 目标440.92 | 买入区408.13~420.27 | 信号:持有", - "reason": "价格变动(358.68→414.8): 止损357.8→363.35, 止盈484.2→440.92 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:357.07 弱撑:408.13 弱压:433.0 强压:48", - "trigger": "价格变动(358.68→414.8)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损363.35 | 目标440.92 | 买入区408.13~420.27 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损314.9 | 目标433.14 | 买入区413.33~417.07 | 信号:持有", - "reason": "技术信号变化: 持有: 止损363.35→314.9, 止盈440.92→433.14 | 形态:带上影阳线/neutral 量价:数据不足 强撑:352.87 弱撑:413.33 弱压:421.53 强压:48", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:16", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损314.9 | 目标433.14 | 买入区413.33~417.07 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损316.27 | 目标434.52 | 买入区414.8~418.6 | 信号:持有", - "reason": "技术面重评: 止损314.9→316.27, 止盈433.14→434.52 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:354.4 弱撑:414.8 弱压:424.6 强压:482.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:27", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损316.27 | 目标434.52 | 买入区414.8~418.6 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.44 | 目标433.68 | 买入区413.73~417.67 | 信号:持有", - "reason": "技术面重评: 止损316.27→315.44, 止盈434.52→433.68 | 形态:带上影阳线/neutral 量价:数据不足 强撑:353.47 弱撑:413.73 弱压:422.73 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.44 | 目标433.68 | 买入区413.73~417.67 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损314.9 | 目标433.14 | 买入区412.53~417.07 | 信号:持有", - "reason": "技术面重评: 止损315.44→314.9, 止盈433.68→433.14 | 形态:带上影阳线/neutral 量价:数据不足 强撑:352.87 弱撑:412.53 弱压:421.53 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损314.9 | 目标433.14 | 买入区412.53~417.07 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.37 | 目标433.62 | 买入区413.6~417.6 | 信号:持有", - "reason": "技术面重评: 止损314.9→315.37, 止盈433.14→433.62 | 形态:带上影阳线/neutral 量价:数据不足 强撑:353.4 弱撑:413.6 弱压:422.6 强压:481.8", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.37 | 目标433.62 | 买入区413.6~417.6 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.55 | 目标440.31 | 买入区414.0~417.8 | 信号:持有", - "reason": "技术面重评: 止损315.37→315.55, 止盈433.62→440.31 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:353.6 弱撑:414.0 弱压:423.0 强压:482.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:29", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损315.55 | 目标440.31 | 买入区414.0~417.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损315.73 | 目标440.49 | 买入区414.4~418.0 | 信号:持有", - "reason": "技术面重评: 止损315.55→315.73, 止盈440.31→440.49 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:353.8 弱撑:414.4 弱压:423.4 强压:482.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损315.73 | 目标440.49 | 买入区414.4~418.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损324.48 | 目标449.44 | 买入区414.8~427.8 | 信号:持有", - "reason": "技术面重评: 止损315.73→324.48, 止盈440.49→449.44 | 形态:带上影阳线/neutral 量价:数据不足 强撑:363.6 弱撑:414.8 弱压:443.0 强压:492.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:23", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损324.48 | 目标449.44 | 买入区414.8~427.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损323.65 | 目标448.6 | 买入区413.93~426.87 | 信号:持有", - "reason": "技术面重评: 止损324.48→323.65, 止盈449.44→448.6 | 形态:带上影阳线/neutral 量价:数据不足 强撑:362.67 弱撑:413.93 弱压:441.13 强压:49", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损323.65 | 目标448.6 | 买入区413.93~426.87 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损324.0 | 目标448.96 | 买入区414.73~427.27 | 信号:持有", - "reason": "技术面重评: 止损323.65→324.0, 止盈448.6→448.96 | 形态:带上影阳线/neutral 量价:数据不足 强撑:363.07 弱撑:414.73 弱压:441.93 强压:49", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:44", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损324.0 | 目标448.96 | 买入区414.73~427.27 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损337.9 | 目标473.71 | 买入区414.33~427.07 | 信号:持有", - "reason": "技术面重评: 止损324.0→337.9, 止盈448.96→473.71 | 形态:带上影阳线/neutral 量价:数据不足 强撑:362.87 弱撑:414.33 弱压:441.53 强压:49", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00968", - "name": "信义光能", - "price": 2.0, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标2.58 | 止损1.8 | 买入区1.96~2.04", - "stop_loss": 1.8, - "entry_low": 1.96, - "entry_high": 2.04, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:1.42 弱撑:1.93 弱压:2.08 强压:2.58", - "timing_signal": "信号不充分", - "rr_ratio": 8.29, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "自选策略", - "source": "auto", - "sector_context": "行业电力下跌-2.2%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:23", - "take_profit": 2.58, - "updated_reason": "技术面重评: 止损1.71→1.8 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.42 弱撑:1.93 弱压:2.08 强压:2.58", - "changelog": [ - { - "date": "2026-06-24 14:23", - "old_action": "", - "new_action": "盈利持有 | 目标2.59 | 止损1.72 | 买入区1.97~2.05", - "reason": "初始策略创建 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.43 弱撑:1.93 弱压:2.08 强压:2.59", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标2.59 | 止损1.72 | 买入区1.97~2.05", - "new_action": "盈利持有 | 目标2.58 | 止损1.71 | 买入区1.95~2.03", - "reason": "技术信号变化: 信号不充分: 止损1.72→1.71 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.42 弱撑:1.92 弱压:2.08 强压:2.58", - "trigger": "技术信号变化: 信号不充分" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利持有 | 目标2.58 | 止损1.71 | 买入区1.95~2.03", - "new_action": "盈利持有 | 目标2.58 | 止损1.8 | 买入区1.96~2.04", - "reason": "技术面重评: 止损1.71→1.8 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.42 弱撑:1.93 弱压:2.08 强压:2.58", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00981", - "name": "中芯国际", - "price": 84.8, - "cost": 76.07, - "shares": 500, - "avg_price": 0, - "action": "盈利良好 | 止损82.05 | 目标102.56 | 买入区77.85~81.74 | 信号:持有", - "stop_loss": 82.05, - "entry_low": 77.85, - "entry_high": 81.74, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.8 弱撑:77.85 弱压:88.3 强压:98.1", - "timing_signal": "持有", - "rr_ratio": 3.14, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业半导体大涨+3.8%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓快进快出", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 17:15", - "take_profit": 102.56, - "updated_reason": "技术面重评: 止损77.86→82.05, 止盈99.5→102.56 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.8 弱撑:77.85 弱压:88.3 强压:98.1", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.82 | 目标82.12 | 买入区73.63~75.47 | 信号:持有", - "reason": "初始策略创建 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.82 弱撑:73.63 弱压:77.18 强压:82.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.82 | 目标82.12 | 买入区73.63~75.47 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.77 | 目标82.07 | 买入区73.53~75.42 | 信号:持有", - "reason": "技术面重评: 止损68.82→68.77, 止盈82.12→82.07 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.77 弱撑:73.53 弱压:77.08 强压:82.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.77 | 目标82.07 | 买入区73.53~75.42 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.75 | 目标82.05 | 买入区73.5~75.4 | 信号:持有", - "reason": "技术面重评: 止损68.77→68.75, 止盈82.07→82.05 | 形态:小阴线/bearish 量价:数据不足 强撑:68.75 弱撑:73.5 弱压:77.05 强压:82.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.75 | 目标82.05 | 买入区73.5~75.4 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损68.7 | 目标85.0 | 买入区74.25~76.85 | 信号:持有", - "reason": "技术面重评: 止损68.75→68.7, 止盈82.05→86.28 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.7 弱撑:74.25 弱压:79.95 强压:85.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损68.7 | 目标85.0 | 买入区74.25~76.85 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.25 | 目标84.55 | 买入区73.35~76.4 | 信号:持有", - "reason": "技术面重评: 止损68.7→68.25, 止盈86.28→85.82 | 形态:十字星/neutral 量价:数据不足 强撑:68.25 弱撑:73.35 弱压:79.05 强压:84.55", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.25 | 目标84.55 | 买入区73.35~76.4 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标84.72 | 买入区73.68~76.57 | 信号:持有", - "reason": "技术面重评: 止损68.25→68.42, 止盈85.82→85.99 | 形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标84.72 | 买入区73.68~76.57 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标85.99 | 买入区73.68~76.57 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标85.99 | 买入区73.68~76.57 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", - "reason": "技术面重评: 止损67.69→68.42, 止盈85.99→87.26 | 形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", - "reason": "技术面重评: 止损68.42→67.69 | 形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损66.37 | 目标90.62 | 买入区76.5~79.52 | 信号:持有", - "reason": "价格变动(76.5→78.95): 止损67.69→66.37, 止盈87.26→90.62 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:68.42 弱撑:76.5 弱压:81.88 强压:90.", - "trigger": "价格变动(76.5→78.95)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损66.37 | 目标90.62 | 买入区76.5~79.52 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损69.75 | 目标90.58 | 买入区76.5~79.48 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有: 止损66.37→69.75, 止盈90.62→90.58 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:68.38 弱撑:76.5 弱压:81.82 强压:90.", - "trigger": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损69.75 | 目标90.58 | 买入区76.5~79.48 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损69.51 | 目标93.75 | 买入区77.8~80.95 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有: 止损69.75→69.51, 止盈90.58→93.75 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:68.15 弱撑:77.8 弱压:83.15 强压:93.", - "trigger": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有" - }, - { - "date": "2026-06-24 09:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损69.51 | 目标93.75 | 买入区77.8~80.95 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损70.68 | 目标88.59 | 买入区74.87~78.61 | 信号:持有", - "reason": "价格变动(67.32→77.85): 止损69.51→70.68, 止盈93.75→88.59 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:66.68 弱撑:74.87 弱压:82.47 强压:92", - "trigger": "价格变动(67.32→77.85)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损70.68 | 目标88.59 | 买入区74.87~78.61 | 信号:持有", - "new_action": "盈利良好 | 止损76.25 | 目标95.4 | 买入区77.85~81.74 | 信号:持有", - "reason": "价格变动(77.85→82.75): 止损70.68→76.25, 止盈88.59→95.4 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.2 弱撑:77.85 弱压:86.0 强压:95.4", - "trigger": "价格变动(77.85→82.75)" - }, - { - "date": "2026-06-24 11:16", - "old_action": "盈利良好 | 止损76.25 | 目标95.4 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损76.67 | 目标95.48 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损76.25→76.67, 止盈95.4→95.48 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.28 弱撑:77.85 弱压:86.17 强压:95.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利良好 | 止损76.67 | 目标95.48 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损76.99 | 目标95.6 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损76.67→76.99, 止盈95.48→95.6 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.4 弱撑:77.85 弱压:86.4 强压:95.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利良好 | 止损76.99 | 目标95.6 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损76.57 | 目标95.48 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损76.99→76.57, 止盈95.6→95.48 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.28 弱撑:77.85 弱压:86.17 强压:95.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "盈利良好 | 止损76.57 | 目标95.48 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损76.44 | 目标95.42 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损76.57→76.44, 止盈95.48→95.42 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.22 弱撑:77.85 弱压:86.03 强压:95.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利良好 | 止损76.44 | 目标95.42 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损79.42 | 目标96.87 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损76.44→79.42, 止盈95.42→96.87 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.27 弱撑:77.85 弱压:87.53 强压:96.8", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "盈利良好 | 止损79.42 | 目标96.87 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损79.52 | 目标98.37 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损79.42→79.52, 止盈96.87→98.37 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.32 弱撑:77.85 弱压:87.63 强压:96.9", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:29", - "old_action": "盈利良好 | 止损79.52 | 目标98.37 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损80.13 | 目标98.58 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损79.52→80.13, 止盈98.37→98.58 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:68.52 弱撑:77.85 弱压:88.03 强压:97.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 止损80.13 | 目标98.58 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损77.64 | 目标99.39 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损80.13→77.64, 止盈98.58→99.39 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.62 弱撑:77.85 弱压:87.93 强压:97.9", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:23", - "old_action": "盈利良好 | 止损77.64 | 目标99.39 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损77.82 | 目标99.45 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损77.64→77.82, 止盈99.39→99.45 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.68 弱撑:77.85 弱压:88.07 强压:97.9", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利良好 | 止损77.82 | 目标99.45 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损77.86 | 目标99.5 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损77.82→77.86, 止盈99.45→99.5 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.73 弱撑:77.85 弱压:88.17 强压:98.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利良好 | 止损77.86 | 目标99.5 | 买入区77.85~81.74 | 信号:持有", - "new_action": "盈利良好 | 止损82.05 | 目标102.56 | 买入区77.85~81.74 | 信号:持有", - "reason": "技术面重评: 止损77.86→82.05, 止盈99.5→102.56 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:67.8 弱撑:77.85 弱压:88.3 强压:98.1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01070", - "name": "TCL电子", - "price": 13.1, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标15.51 | 止损12.29 | 买入区12.84~13.36 | 信号:弱势持有", - "stop_loss": 12.29, - "entry_low": 12.84, - "entry_high": 13.36, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:10.45 弱撑:12.67 弱压:13.41 强压:15.51", - "timing_signal": "弱势持有", - "rr_ratio": 5.6, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:44", - "updated_at": "2026-06-24 16:44", - "type": "自选策略", - "source": "auto", - "sector_context": "行业消费电子+0.6%,中性 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:23", - "take_profit": 15.51, - "updated_reason": "技术面重评: 止损12.7→12.29 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:10.45 弱撑:12.67 弱压:13.41 强压:15.", - "changelog": [ - { - "date": "2026-06-24 14:23", - "old_action": "", - "new_action": "盈利持有 | 目标15.49 | 止损12.25 | 买入区12.79~13.31", - "reason": "初始策略创建 | 形态:锤子线/T字线/neutral 量价:数据不足 强撑:10.43 弱撑:12.63 弱压:13.37 强压:15.", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标15.49 | 止损12.25 | 买入区12.79~13.31", - "new_action": "盈利持有 | 目标15.52 | 止损12.3 | 买入区12.86~13.38 | 信号:弱势持有", - "reason": "技术信号变化: 弱势持有: 止损12.25→12.3 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:10.46 弱撑:12.68 弱压:13.42 强压:15.", - "trigger": "技术信号变化: 弱势持有" - }, - { - "date": "2026-06-24 16:44", - "old_action": "盈利持有 | 目标15.53 | 止损12.7 | 买入区12.86~13.38 | 信号:弱势持有", - "new_action": "盈利持有 | 目标15.51 | 止损12.29 | 买入区12.84~13.36 | 信号:弱势持有", - "reason": "技术面重评: 止损12.7→12.29 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:10.45 弱撑:12.67 弱压:13.41 强压:15.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01088", - "name": "中国神华", - "price": 41.9, - "cost": 45.97, - "shares": 500, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.41 | 目标42.13 | 买入区41.38~41.78 | 信号:持有", - "stop_loss": 33.41, - "entry_low": 41.38, - "entry_high": 41.78, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.44 弱撑:41.38 弱压:42.3 强压:46.12", - "timing_signal": "持有", - "rr_ratio": 0.95, - "status": "updated", - "note": "⚠️盈亏比偏低(1:0.9),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业煤炭开采加工大跌-3.5%,收紧止损 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 42.13, - "updated_reason": "技术面重评: 止损33.4→33.41, 止盈42.12→42.13 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.44 弱撑:41.38 弱压:42.3 强压:46.1", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损41.23 | 盈46.36 | 买41.65~43.28 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.56 弱撑:41.98 弱压:43.48 强压:46.36", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损41.23 | 盈46.36 | 买41.65~43.28 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损41.17 | 盈46.33 | 买41.59~43.23 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.23→41.17, 止盈46.36→46.33 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.54 弱撑:41.93 弱压:43.45 强压:46.33", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损41.17 | 盈46.33 | 买41.59~43.23 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.17→41.07 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.49 弱撑:41.81 弱压:43.41 强压:46.26", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.03 | 买入区41.45~43.1 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.07→41.03 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.41 弱撑:41.69 弱压:43.43 强压:46.21", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考41.03 | 买入区41.45~43.1 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.03→41.07 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 21:02", - "old_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标46.28 | 买入区41.66~42.8 | 信号:持有", - "reason": "技术信号变化: 持有: 止损41.07→39.32 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-18 23:35", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标46.28 | 买入区41.66~42.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.27 | 买入区41.66~42.8 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.27 | 买入区41.66~42.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标47.67 | 买入区41.66~42.8 | 信号:持有", - "reason": "技术面重评: 止损35.09→39.32, 止盈42.27→47.67 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标47.67 | 买入区41.66~42.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有", - "reason": "技术面重评: 止损39.32→35.09, 止盈47.67→42.9 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损37.9 | 目标46.43 | 买入区41.91~42.37 | 信号:持有", - "reason": "技术面重评: 止损35.09→37.9, 止盈42.9→46.43 | 形态:带下影阳线/bullish 量价:数据不足 强撑:38.31 弱撑:41.91 弱压:43.19 强压:46.43", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损37.9 | 目标46.43 | 买入区41.91~42.37 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损39.18 | 目标46.53 | 买入区41.65~42.47 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有: 止损37.9→39.18, 止盈46.43→46.53 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:38.41 弱撑:41.65 弱压:43.39 强压:46", - "trigger": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损39.18 | 目标46.53 | 买入区41.65~42.47 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损39.42 | 目标46.77 | 买入区42.27~42.71 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有: 止损39.18→39.42, 止盈46.53→46.77 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:38.65 弱撑:42.27 弱压:43.15 强压:46.", - "trigger": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有" - }, - { - "date": "2026-06-24 09:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损39.42 | 目标46.77 | 买入区42.27~42.71 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损40.61 | 目标44.57 | 买入区41.61~42.37 | 信号:持有", - "reason": "价格变动(36.37→42.06): 止损39.42→40.61, 止盈46.77→44.57 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:38.31 弱撑:41.61 弱压:42.83 强压:46.4", - "trigger": "价格变动(36.37→42.06)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损40.61 | 目标44.57 | 买入区41.61~42.37 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损33.29 | 目标41.38 | 买入区41.1~41.64 | 信号:持有", - "reason": "技术信号变化: 持有: 止损40.61→33.29, 止盈44.57→41.38 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:37.3 弱撑:41.1 弱压:42.06 强压:45.98", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:16", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损33.29 | 目标41.38 | 买入区41.1~41.64 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.38 | 目标41.48 | 买入区41.31~41.75 | 信号:持有", - "reason": "技术面重评: 止损33.29→33.38, 止盈41.38→41.48 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.41 弱撑:41.31 弱压:42.23 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.38 | 目标41.48 | 买入区41.31~41.75 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.36 | 目标41.45 | 买入区41.26~41.72 | 信号:持有", - "reason": "技术面重评: 止损33.38→33.36, 止盈41.48→41.45 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.38 弱撑:41.26 弱压:42.18 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.36 | 目标41.45 | 买入区41.26~41.72 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.35 | 目标41.45 | 买入区41.23~41.71 | 信号:持有", - "reason": "技术面重评: 止损33.36→33.35 | 形态:带下影阴线/neutral 量价:数据不足 强撑:37.37 弱撑:41.23 弱压:42.15 强压:46.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.35 | 目标41.45 | 买入区41.23~41.71 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.38 | 目标41.47 | 买入区41.3~41.74 | 信号:持有", - "reason": "技术面重评: 止损33.35→33.38, 止盈41.45→41.47 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.4 弱撑:41.3 弱压:42.22 强压:46.08", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.38 | 目标41.47 | 买入区41.3~41.74 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.35 | 目标42.07 | 买入区41.25~41.71 | 信号:持有", - "reason": "技术面重评: 止损33.38→33.35, 止盈41.47→42.07 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.37 弱撑:41.25 弱压:42.17 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.35 | 目标42.07 | 买入区41.25~41.71 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.42 | 目标42.14 | 买入区41.41~41.79 | 信号:持有", - "reason": "技术面重评: 止损33.35→33.42, 止盈42.07→42.14 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.45 弱撑:41.41 弱压:42.33 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.42 | 目标42.14 | 买入区41.41~41.79 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.36 | 目标42.08 | 买入区41.26~41.72 | 信号:持有", - "reason": "技术面重评: 止损33.42→33.36, 止盈42.14→42.08 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.38 弱撑:41.26 弱压:42.18 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.36 | 目标42.08 | 买入区41.26~41.72 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.42 | 目标42.14 | 买入区41.41~41.79 | 信号:持有", - "reason": "技术面重评: 止损33.36→33.42, 止盈42.08→42.14 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.45 弱撑:41.41 弱压:42.33 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.42 | 目标42.14 | 买入区41.41~41.79 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.4 | 目标42.12 | 买入区41.35~41.77 | 信号:持有", - "reason": "技术面重评: 止损33.42→33.4, 止盈42.14→42.12 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.43 弱撑:41.35 弱压:42.27 强压:46.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.4 | 目标42.12 | 买入区41.35~41.77 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损33.41 | 目标42.13 | 买入区41.38~41.78 | 信号:持有", - "reason": "技术面重评: 止损33.4→33.41, 止盈42.12→42.13 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:37.44 弱撑:41.38 弱压:42.3 强压:46.1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01211", - "name": "比亚迪股份", - "price": 75.95, - "cost": 105.05, - "shares": 600, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损57.61 | 目标86.27 | 买入区68.36~79.75 | 信号:持有", - "stop_loss": 57.61, - "entry_low": 68.36, - "entry_high": 79.75, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.87 弱撑:74.48 弱压:77.13 强压:89.47", - "timing_signal": "持有", - "rr_ratio": 0.96, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业汽车整车下跌-2.5%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-18 17:15", - "take_profit": 86.27, - "updated_reason": "技术面重评: 止损60.06→57.61, 止盈90.86→86.27 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.87 弱撑:74.48 弱压:77.13 强压:89.", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损69.06 | 目标88.98 | 买入区73.12~85.31 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:73.98 弱撑:80.32 弱压:82.47 强压:88", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损69.06 | 目标88.98 | 买入区73.12~85.31 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损69.15 | 目标89.0 | 买入区73.22~85.42 | 信号:持有", - "reason": "技术面重评: 止损69.06→69.15, 止盈88.98→89.0 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:74.0 弱撑:80.35 弱压:82.5 强压:89.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损69.15 | 目标89.0 | 买入区73.22~85.42 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损69.57 | 目标89.25 | 买入区73.66~85.94 | 信号:持有", - "reason": "技术面重评: 止损69.15→69.57, 止盈89.0→90.59 | 形态:带上影阳线/neutral 量价:数据不足 强撑:74.25 弱撑:80.6 弱压:83.0 强压:89.25", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损69.57 | 目标89.25 | 买入区73.66~85.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损68.55 | 目标88.92 | 买入区72.59~84.68 | 信号:持有", - "reason": "技术面重评: 止损69.57→68.55, 止盈90.59→90.25 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.72 弱撑:79.73 弱压:82.23 强压:88", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "深套持有 | 深套持有 | 止损68.55 | 目标88.92 | 买入区72.59~84.68 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损68.72 | 目标88.98 | 买入区72.77~84.89 | 信号:持有", - "reason": "技术面重评: 止损68.55→68.72, 止盈90.25→90.31 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "深套持有 | 深套持有 | 止损68.72 | 目标88.98 | 买入区72.77~84.89 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损63.99 | 目标85.79 | 买入区72.77~84.89 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "深套持有 | 深套持有 | 止损63.99 | 目标85.79 | 买入区72.77~84.89 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损68.72 | 目标91.65 | 买入区72.77~84.89 | 信号:持有", - "reason": "技术面重评: 止损63.99→68.72, 止盈85.79→91.65 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损68.72 | 目标91.65 | 买入区72.77~84.89 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有", - "reason": "技术面重评: 止损68.72→63.99, 止盈91.65→87.07 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损61.7 | 目标85.12 | 买入区70.16~81.85 | 信号:持有", - "reason": "价格变动(80.85→77.95): 止损63.99→61.7, 止盈87.07→85.12 | 形态:带下影阴线/neutral 量价:数据不足 强撑:67.0 弱撑:76.35 弱压:80.85 强压:89.6", - "trigger": "价格变动(80.85→77.95)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损61.7 | 目标85.12 | 买入区70.16~81.85 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损66.6 | 目标89.73 | 买入区70.52~82.27 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,蓝筹,持有: 止损61.7→66.6, 止盈85.12→89.73 | 形态:带下影阴线/neutral 量价:数据不足 强撑:67.13 弱撑:76.62 弱压:80.85 强压:89.73", - "trigger": "技术信号变化: 大盘中性,行业中性,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损66.6 | 目标89.73 | 买入区70.52~82.27 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损65.02 | 目标88.87 | 买入区68.85~80.33 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,蓝筹,持有: 止损66.6→65.02, 止盈89.73→88.87 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:65.07 弱撑:75.63 弱压:78.35 强压:88.8", - "trigger": "技术信号变化: 大盘中性,行业中性,蓝筹,持有" - }, - { - "date": "2026-06-24 09:00", - "old_action": "深套持有 | 深套持有 | 止损65.02 | 目标88.87 | 买入区68.85~80.33 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损65.31 | 目标81.15 | 买入区68.27~79.64 | 信号:持有", - "reason": "价格变动(65.59→75.85): 止损65.02→65.31, 止盈88.87→81.15 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:64.18 弱撑:74.87 弱压:78.35 强压:88.9", - "trigger": "价格变动(65.59→75.85)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损65.31 | 目标81.15 | 买入区68.27~79.64 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.73 | 目标88.98 | 买入区67.19~78.38 | 信号:持有", - "reason": "技术信号变化: 持有: 止损65.31→59.73, 止盈81.15→88.98 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.58 弱撑:73.72 弱压:76.27 强压:88.9", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:16", - "old_action": "深套持有 | 深套持有 | 止损59.73 | 目标88.98 | 买入区67.19~78.38 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.85 | 目标89.1 | 买入区67.64~78.91 | 信号:持有", - "reason": "技术面重评: 止损59.73→59.85, 止盈88.98→89.1 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.7 弱撑:73.95 弱压:76.5 强压:89.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损59.85 | 目标89.1 | 买入区67.64~78.91 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.7 | 目标88.95 | 买入区67.23~78.44 | 信号:持有", - "reason": "技术面重评: 止损59.85→59.7, 止盈89.1→88.95 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.55 弱撑:73.65 弱压:76.2 强压:88.95", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损59.7 | 目标88.95 | 买入区67.23~78.44 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.64 | 目标88.88 | 买入区66.91~78.07 | 信号:持有", - "reason": "技术面重评: 止损59.7→59.64, 止盈88.95→88.88 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.48 弱撑:73.52 弱压:76.07 强压:88.8", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "深套持有 | 深套持有 | 止损59.64 | 目标88.88 | 买入区66.91~78.07 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.54 | 目标88.88 | 买入区66.87~78.02 | 信号:持有", - "reason": "技术面重评: 止损59.64→59.54 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.38 弱撑:73.42 弱压:76.02 强压:88.8", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损59.54 | 目标88.88 | 买入区66.87~78.02 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损57.24 | 目标84.62 | 买入区67.28~78.49 | 信号:持有", - "reason": "技术面重评: 止损59.54→57.24, 止盈88.88→84.62 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:61.47 弱撑:73.68 弱压:76.33 强压:89.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损57.24 | 目标84.62 | 买入区67.28~78.49 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损57.34 | 目标85.99 | 买入区67.64~78.91 | 信号:持有", - "reason": "技术面重评: 止损57.24→57.34, 止盈84.62→85.99 | 形态:带下影阴线/neutral 量价:数据不足 强撑:61.58 弱撑:73.92 弱压:76.57 强压:89.18", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损57.34 | 目标85.99 | 买入区67.64~78.91 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损57.43 | 目标86.08 | 买入区67.86~79.17 | 信号:持有", - "reason": "技术面重评: 止损57.34→57.43, 止盈85.99→86.08 | 形态:带下影阴线/neutral 量价:数据不足 强撑:61.67 弱撑:74.08 弱压:76.73 强压:89.27", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损57.43 | 目标86.08 | 买入区67.86~79.17 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损60.06 | 目标90.86 | 买入区68.44~79.85 | 信号:持有", - "reason": "技术面重评: 止损57.43→60.06, 止盈86.08→90.86 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.92 弱撑:74.58 弱压:77.23 强压:89.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损60.06 | 目标90.86 | 买入区68.44~79.85 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损59.99 | 目标90.79 | 买入区68.4~79.8 | 信号:持有", - "reason": "技术面重评: 止损60.06→59.99, 止盈90.86→90.79 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.85 弱撑:74.45 弱压:77.1 强压:89.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "深套持有 | 深套持有 | 止损59.99 | 目标90.79 | 买入区68.4~79.8 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损60.06 | 目标90.86 | 买入区68.49~79.91 | 信号:持有", - "reason": "技术面重评: 止损59.99→60.06, 止盈90.79→90.86 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.92 弱撑:74.58 弱压:77.23 强压:89.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损60.06 | 目标90.86 | 买入区68.49~79.91 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损57.61 | 目标86.27 | 买入区68.36~79.75 | 信号:持有", - "reason": "技术面重评: 止损60.06→57.61, 止盈90.86→86.27 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:61.87 弱撑:74.48 弱压:77.13 强压:89.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01478", - "name": "丘钛科技", - "price": 7.69, - "cost": 13.81, - "shares": 11000, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损5.59 | 目标9.76 | 买入区6.92~8.07 | 信号:持有", - "stop_loss": 5.59, - "entry_low": 6.92, - "entry_high": 8.07, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:5.76 弱撑:7.51 弱压:7.88 强压:9.62", - "timing_signal": "持有", - "rr_ratio": 1.0, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业消费电子+0.6%,中性 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-18 17:15", - "take_profit": 9.76, - "updated_reason": "技术面重评: 止损5.6→5.59, 止盈9.77→9.76 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.76 弱撑:7.51 弱压:7.88 强压:9.62", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损7.24 | 目标10.02 | 买入区7.67~8.95 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.34 弱撑:8.32 弱压:8.91 强压:10.02", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损7.24 | 目标10.02 | 买入区7.67~8.95 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.26 | 目标10.02 | 买入区7.69~8.97 | 信号:持有", - "reason": "技术面重评: 止损7.24→7.26 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.34 弱撑:8.32 弱压:8.91 强压:10.02", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损7.26 | 目标10.02 | 买入区7.69~8.97 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.32 | 目标10.05 | 买入区7.75~9.04 | 信号:持有", - "reason": "技术面重评: 止损7.26→7.32, 止盈10.02→10.2 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.37 弱撑:8.36 弱压:8.95 强压:10.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损7.32 | 目标10.05 | 买入区7.75~9.04 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.34 | 目标10.05 | 买入区7.77~9.06 | 信号:持有", - "reason": "技术面重评: 止损7.32→7.34 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.37 弱撑:8.38 弱压:8.97 强压:10.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "深套持有 | 深套持有 | 止损7.34 | 目标10.05 | 买入区7.77~9.06 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.41 | 目标10.09 | 买入区7.88~9.19 | 信号:持有", - "reason": "技术面重评: 止损7.34→7.41, 止盈10.2→10.24 | 形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "深套持有 | 深套持有 | 止损7.41 | 目标10.09 | 买入区7.88~9.19 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.33 | 目标10.24 | 买入区7.88~9.19 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "深套持有 | 深套持有 | 止损7.33 | 目标10.24 | 买入区7.88~9.19 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.41 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", - "reason": "技术面重评: 止损7.33→7.41, 止盈10.24→10.39 | 形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损7.41 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", - "reason": "技术面重评: 止损7.41→7.33 | 形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.62 | 目标9.37 | 买入区7.52~8.78 | 信号:持有", - "reason": "价格变动(8.75→8.36): 止损7.33→6.62, 止盈10.39→9.37 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.18 弱撑:8.14 弱压:8.75 强压:9.86", - "trigger": "价格变动(8.75→8.36)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损6.62 | 目标9.37 | 买入区7.52~8.78 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.12 | 目标9.87 | 买入区7.54~8.8 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,低估值,持有: 止损6.62→7.12, 止盈9.37→9.87 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.19 弱撑:8.15 弱压:8.75 强压:9.87", - "trigger": "技术信号变化: 大盘中性,行业中性,低估值,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损7.12 | 目标9.87 | 买入区7.54~8.8 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.8 | 目标9.64 | 买入区7.3~8.52 | 信号:持有", - "reason": "价格变动(8.38→8.11): 止损7.12→6.8, 止盈9.87→9.64 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:6.8 弱撑:7.9 弱压:8.42 强压:9.64", - "trigger": "价格变动(8.38→8.11)" - }, - { - "date": "2026-06-24 09:00", - "old_action": "深套持有 | 深套持有 | 止损6.8 | 目标9.64 | 买入区7.3~8.52 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.82 | 目标9.32 | 买入区7.09~8.27 | 信号:持有", - "reason": "价格变动(6.81→7.88): 止损6.8→6.82, 止盈9.64→9.32 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:6.43 弱撑:7.61 弱压:8.38 强压:9.71", - "trigger": "价格变动(6.81→7.88)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损6.82 | 目标9.32 | 买入区7.09~8.27 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.59 | 目标9.56 | 买入区6.8~7.94 | 信号:持有", - "reason": "价格变动(7.88→7.56): 止损6.82→5.59, 止盈9.32→9.56 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:5.76 弱撑:7.43 弱压:7.88 强压:9.56", - "trigger": "价格变动(7.88→7.56)" - }, - { - "date": "2026-06-24 11:16", - "old_action": "深套持有 | 深套持有 | 止损5.59 | 目标9.56 | 买入区6.8~7.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.54 | 目标9.57 | 买入区6.78~7.91 | 信号:持有", - "reason": "技术面重评: 止损5.59→5.54, 止盈9.56→9.57 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:5.71 弱撑:7.39 弱压:7.88 强压:9.57", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损5.54 | 目标9.57 | 买入区6.78~7.91 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.55 | 目标9.58 | 买入区6.81~7.95 | 信号:持有", - "reason": "技术面重评: 止损5.54→5.55, 止盈9.57→9.58 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:5.72 弱撑:7.43 弱压:7.88 强压:9.58", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损5.55 | 目标9.58 | 买入区6.81~7.95 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.55 | 目标9.58 | 买入区6.79~7.92 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "深套持有 | 深套持有 | 止损5.55 | 目标9.58 | 买入区6.79~7.92 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.54 | 目标9.57 | 买入区6.78~7.91 | 信号:持有", - "reason": "技术面重评: 止损5.55→5.54, 止盈9.58→9.57 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:5.71 弱撑:7.4 弱压:7.88 强压:9.57", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损5.54 | 目标9.57 | 买入区6.78~7.91 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.36 | 目标9.14 | 买入区6.9~8.05 | 信号:持有", - "reason": "技术面重评: 止损5.54→5.36, 止盈9.57→9.14 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.76 弱撑:7.49 弱压:7.88 强压:9.62", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损5.36 | 目标9.14 | 买入区6.9~8.05 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.36 | 目标9.27 | 买入区6.9~8.05 | 信号:持有", - "reason": "技术面重评: 止盈9.14→9.27 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.76 弱撑:7.49 弱压:7.88 强压:9.62", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损5.36 | 目标9.27 | 买入区6.9~8.05 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.35 | 目标9.26 | 买入区6.88~8.02 | 信号:持有", - "reason": "技术面重评: 止损5.36→5.35, 止盈9.27→9.26 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.75 弱撑:7.47 弱压:7.88 强压:9.61", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损5.35 | 目标9.26 | 买入区6.88~8.02 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.93~8.09 | 信号:持有", - "reason": "技术面重评: 止损5.35→5.6, 止盈9.26→9.77 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.77 弱撑:7.51 弱压:7.88 强压:9.63", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.93~8.09 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.94~8.1 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.94~8.1 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.93~8.09 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损5.6 | 目标9.77 | 买入区6.93~8.09 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损5.59 | 目标9.76 | 买入区6.92~8.07 | 信号:持有", - "reason": "技术面重评: 止损5.6→5.59, 止盈9.77→9.76 | 形态:带下影阴线/neutral 量价:数据不足 强撑:5.76 弱撑:7.51 弱压:7.88 强压:9.62", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01888", - "name": "建滔积层板", - "price": 93.55, - "cost": 88.39, - "shares": 500, - "avg_price": 0, - "action": "盈利良好 | 短炒强趋势持 | 止损90.51 | 目标134.87 | 买入区87.25~91.61 | 信号:持有", - "stop_loss": 90.51, - "entry_low": 87.25, - "entry_high": 91.61, - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:56.7 弱撑:87.25 弱压:98.1 强压:129.0", - "timing_signal": "持有", - "rr_ratio": 7.57, - "status": "updated", - "note": "短炒强趋势持", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业元件大涨+3.2%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓强趋势让利润跑", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 17:15", - "take_profit": 134.87, - "updated_reason": "技术面重评: 止损91.48→90.51, 止盈135.23→134.87 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.7 弱撑:87.25 弱压:98.1 强压:129.0", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.73~90.27 | 信号:阳线企稳,可买入", - "reason": "初始策略创建 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.73 弱撑:84.27 弱压:91.27 强压:115", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.73~90.27 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.78~90.32 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.78~90.32 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损84.13 | 盈115.27 | 买86.58~90.12 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损84.27→84.13, 止盈115.33→115.27 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.67 弱撑:84.13 弱压:91.13 强压:115", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损84.13 | 盈115.27 | 买86.58~90.12 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 止损参考84.0 | 买入区86.44~89.96 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损84.13→84.0 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.7 弱撑:84.0 弱压:91.2 强压:115.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:52", - "old_action": "盈利持有 | 止损参考84.0 | 买入区86.44~89.96 | 信号:阳线企稳,可买入", - "new_action": "新买入 | 按推荐建仓 | 止损84.0 | 目标95.0 | 买入区86~90 | 信号:持有", - "reason": "按推荐买入建仓 500股@88.60 HKD", - "trigger": "用户执行买入" - }, - { - "date": "2026-06-18 16:00", - "old_action": "新买入 | 按推荐建仓 | 止损84.0 | 目标95.0 | 买入区86~90 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损59.95 | 目标116.55 | 买入区85.25~88.25 | 信号:持有", - "reason": "技术面重评: 止损84.0→59.95 | 形态:带下影阳线/bullish 量价:数据不足 强撑:59.95 弱撑:85.25 弱压:93.7 强压:116.55", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损59.95 | 目标116.55 | 买入区85.25~88.25 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损60.48 | 目标117.18 | 买入区85.82~88.83 | 信号:持有", - "reason": "技术面重评: 止损59.95→60.48, 止盈118.3→118.94 | 形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损60.48 | 目标117.18 | 买入区85.82~88.83 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损58.67 | 目标118.94 | 买入区85.82~88.83 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损58.67 | 目标118.94 | 买入区85.82~88.83 | 信号:持有", - "new_action": "盈利持有 | 短炒强趋势持 | 止损87.26 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", - "reason": "技术信号变化: 强趋势持: 止损58.67→87.26, 止盈118.94→141.9 | 形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.1", - "trigger": "技术信号变化: 强趋势持" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | 短炒强趋势持 | 止损87.26 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", - "new_action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", - "reason": "技术面重评: 止损87.26→86.34 | 形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", - "new_action": "盈利持有 | 短炒强趋势持 | 止损81.61 | 目标131.46 | 买入区87.18~91.54 | 信号:强趋势持", - "reason": "技术面重评: 止损86.34→81.61, 止盈141.9→131.46 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:57.27 弱撑:87.18 弱压:98.43 强压:12", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | 短炒强趋势持 | 止损81.61 | 目标131.46 | 买入区87.18~91.54 | 信号:强趋势持", - "new_action": "盈利持有 | 短炒强趋势持 | 止损87.35 | 目标129.48 | 买入区87.02~91.37 | 信号:强趋势持", - "reason": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持: 止损81.61→87.35, 止盈131.46→129.48 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:57.18 弱撑:87.02 弱压:98.27 强压:12", - "trigger": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | 短炒强趋势持 | 止损87.35 | 目标129.48 | 买入区87.02~91.37 | 信号:强趋势持", - "new_action": "持有观察 | 短炒强趋势持 | 止损75.7 | 目标82.76 | 买入区82.28~86.39 | 信号:强趋势持", - "reason": "价格变动(91.95→85.0): 止损87.35→75.7, 止盈129.48→82.76 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:50.97 弱撑:82.28 弱压:91.95 强压:123.", - "trigger": "价格变动(91.95→85.0)" - }, - { - "date": "2026-06-24 09:00", - "old_action": "持有观察 | 短炒强趋势持 | 止损75.7 | 目标82.76 | 买入区82.28~86.39 | 信号:强趋势持", - "new_action": "持有观察 | 短炒强趋势持 | 止损77.86 | 目标106.95 | 买入区83.32~87.49 | 信号:强趋势持", - "reason": "价格变动(75.45→87.25): 止损75.7→77.86, 止盈82.76→106.95 | 形态:带下影阴线/neutral 量价:数据不足 强撑:51.48 弱撑:83.32 弱压:91.95 强压:123.7", - "trigger": "价格变动(75.45→87.25)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "持有观察 | 短炒强趋势持 | 止损77.86 | 目标106.95 | 买入区83.32~87.49 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损90.39 | 目标132.74 | 买入区87.25~91.61 | 信号:持有", - "reason": "价格变动(87.25→93.3): 止损77.86→90.39, 止盈106.95→132.74 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.57 弱撑:87.25 弱压:97.83 强压:128.8", - "trigger": "价格变动(87.25→93.3)" - }, - { - "date": "2026-06-24 11:16", - "old_action": "盈利良好 | 短炒强趋势持 | 止损90.39 | 目标132.74 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损90.76 | 目标132.97 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损90.39→90.76, 止盈132.74→132.97 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.8 弱撑:87.25 弱压:98.3 强压:129.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利良好 | 短炒强趋势持 | 止损90.76 | 目标132.97 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损90.57 | 目标132.85 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损90.76→90.57, 止盈132.97→132.85 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.68 弱撑:87.25 弱压:98.07 强压:128.9", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利良好 | 短炒强趋势持 | 止损90.57 | 目标132.85 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损91.43 | 目标133.2 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损90.57→91.43, 止盈132.85→133.2 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:57.02 弱撑:87.25 弱压:98.73 强压:129.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "盈利良好 | 短炒强趋势持 | 止损91.43 | 目标133.2 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损90.42 | 目标132.85 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损91.43→90.42, 止盈133.2→132.85 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.68 弱撑:87.25 弱压:98.07 强压:128.9", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利良好 | 短炒强趋势持 | 止损90.42 | 目标132.85 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损89.29 | 目标129.47 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损90.42→89.29, 止盈132.85→129.47 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:57.17 弱撑:87.25 弱压:99.03 强压:129.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "盈利良好 | 短炒强趋势持 | 止损89.29 | 目标129.47 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损89.29 | 目标131.39 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止盈129.47→131.39 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:57.15 弱撑:87.25 弱压:99.0 强压:129.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利良好 | 短炒强趋势持 | 止损89.29 | 目标131.39 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损87.45 | 目标130.78 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损89.29→87.45, 止盈131.39→130.78 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.55 弱撑:87.25 弱压:97.8 强压:128.85", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 短炒强趋势持 | 止损87.45 | 目标130.78 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损91.2 | 目标135.13 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损87.45→91.2, 止盈130.78→135.13 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.95 弱撑:87.25 弱压:98.6 强压:129.25", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利良好 | 短炒强趋势持 | 止损91.2 | 目标135.13 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损91.43 | 目标135.18 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损91.2→91.43, 止盈135.13→135.18 | 形态:带上影阳线/neutral 量价:数据不足 强撑:57.0 弱撑:87.25 弱压:98.7 强压:129.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利良好 | 短炒强趋势持 | 止损91.43 | 目标135.18 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损91.48 | 目标135.23 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损91.43→91.48, 止盈135.18→135.23 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:57.05 弱撑:87.25 弱压:98.8 强压:129.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利良好 | 短炒强趋势持 | 止损91.48 | 目标135.23 | 买入区87.25~91.61 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损90.51 | 目标134.87 | 买入区87.25~91.61 | 信号:持有", - "reason": "技术面重评: 止损91.48→90.51, 止盈135.23→134.87 | 形态:带上影阳线/neutral 量价:数据不足 强撑:56.7 弱撑:87.25 弱压:98.1 强压:129.0", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02202", - "name": "万科企业", - "price": 2.31, - "cost": 4.68, - "shares": 19700, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损1.75 | 目标2.52 | 买入区2.08~2.43 | 信号:持有", - "stop_loss": 1.75, - "entry_low": 2.08, - "entry_high": 2.43, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.96 弱撑:2.26 弱压:2.4 强压:2.76", - "timing_signal": "持有", - "rr_ratio": 1.29, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业房地产大跌-3.1%,收紧止损 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-18 17:15", - "take_profit": 2.52, - "updated_reason": "技术面重评: 止损1.77→1.75 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.96 弱撑:2.26 弱压:2.4 强压:2.76", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损2.1 | 目标2.74 | 买入区2.22~2.59 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.26 弱撑:2.44 弱压:2.54 强压:2.74", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损2.1 | 目标2.74 | 买入区2.22~2.59 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.11 | 目标2.74 | 买入区2.23~2.6 | 信号:持有", - "reason": "技术面重评: 止损2.1→2.11 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.26 弱撑:2.45 弱压:2.54 强压:2.74", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损2.11 | 目标2.74 | 买入区2.23~2.6 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.76 | 买入区2.2~2.56 | 信号:持有", - "reason": "技术面重评: 止损2.11→2.07, 止盈2.74→2.8 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.18 弱撑:2.39 弱压:2.54 强压:2.76", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.76 | 买入区2.2~2.56 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.77 | 买入区2.18~2.54 | 信号:持有", - "reason": "技术面重评: 止损2.07→2.06, 止盈2.8→2.81 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.77 | 买入区2.18~2.54 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.81 | 买入区2.18~2.54 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.81 | 买入区2.18~2.54 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", - "reason": "技术面重评: 止盈2.81→2.85 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", - "reason": "技术面重评: 止损2.06→2.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.91 | 目标2.63 | 买入区2.19~2.55 | 信号:持有", - "reason": "技术面重评: 止损2.0→1.91, 止盈2.85→2.63 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:2.05 弱撑:2.37 弱压:2.46 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损1.91 | 目标2.63 | 买入区2.19~2.55 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.79 | 买入区2.22~2.59 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,高估值,持有: 止损1.91→2.07, 止盈2.63→2.79 | 形态:带下影阳线/bullish 量价:数据不足 强撑:2.07 弱撑:2.39 弱压:2.52 强压:2.79", - "trigger": "技术信号变化: 大盘中性,行业中性,高估值,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.79 | 买入区2.22~2.59 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.08 | 目标2.81 | 买入区2.16~2.52 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,高估值,持有: 止损2.07→2.08, 止盈2.79→2.81 | 形态:带上影阴线/bearish 量价:数据不足 强撑:2.09 弱撑:2.36 弱压:2.49 强压:2.81", - "trigger": "技术信号变化: 大盘中性,行业偏强,高估值,持有" - }, - { - "date": "2026-06-24 09:00", - "old_action": "深套持有 | 深套持有 | 止损2.08 | 目标2.81 | 买入区2.16~2.52 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.16 | 目标2.68 | 买入区2.16~2.52 | 信号:持有", - "reason": "价格变动(2.08→2.4): 止损2.08→2.16, 止盈2.81→2.68 | 形态:带上影阴线/bearish 量价:数据不足 强撑:2.07 弱撑:2.34 弱压:2.5 强压:2.79", - "trigger": "价格变动(2.08→2.4)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损2.16 | 目标2.68 | 买入区2.16~2.52 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.48 | 买入区2.12~2.47 | 信号:持有", - "reason": "技术信号变化: 持有: 止损2.16→1.77, 止盈2.68→2.48 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.98 弱撑:2.3 弱压:2.43 强压:2.76", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:16", - "old_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.48 | 买入区2.12~2.47 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.13~2.49 | 信号:持有", - "reason": "技术面重评: 止损1.77→1.78, 止盈2.48→2.49 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.99 弱撑:2.31 弱压:2.44 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.13~2.49 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.12~2.48 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.12~2.48 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.13~2.49 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.13~2.49 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.12~2.48 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.49 | 买入区2.12~2.48 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.48 | 买入区2.12~2.47 | 信号:持有", - "reason": "技术面重评: 止损1.78→1.77, 止盈2.49→2.48 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.98 弱撑:2.3 弱压:2.43 强压:2.76", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.48 | 买入区2.12~2.47 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.12~2.47 | 信号:持有", - "reason": "技术面重评: 止盈2.48→2.52 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.98 弱撑:2.3 弱压:2.43 强压:2.76", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.12~2.47 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.53 | 买入区2.12~2.48 | 信号:持有", - "reason": "技术面重评: 止损1.77→1.78, 止盈2.52→2.53 | 形态:带下影阴线/neutral 量价:数据不足 强撑:1.99 弱撑:2.3 弱压:2.43 强压:2.77", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损1.78 | 目标2.53 | 买入区2.12~2.48 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.11~2.46 | 信号:持有", - "reason": "技术面重评: 止损1.78→1.77, 止盈2.53→2.52 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.98 弱撑:2.29 弱压:2.42 强压:2.76", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.11~2.46 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.12~2.47 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损1.77 | 目标2.52 | 买入区2.12~2.47 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损1.75 | 目标2.52 | 买入区2.08~2.43 | 信号:持有", - "reason": "技术面重评: 止损1.77→1.75 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:1.96 弱撑:2.26 弱压:2.4 强压:2.76", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02318", - "name": "中国平安", - "price": 52.85, - "cost": 54.82, - "shares": 500, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "stop_loss": 53.3, - "entry_low": 53.85, - "entry_high": 56.05, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:46.57 弱撑:52.13 弱压:53.73 强压:59.47", - "timing_signal": "持有", - "rr_ratio": 14.89, - "status": "manual", - "note": "⚠️盈亏比偏低(1:1.1),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "manual", - "sector_context": "行业保险下跌-1.6%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 60.72, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损52.19 | 盈59.52 | 买52.72~54.88 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.52 弱撑:53.08 弱压:56.1 强压:59.52", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损52.19 | 盈59.52 | 买52.72~54.88 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损52.23 | 盈59.53 | 买52.77~54.93 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.19→52.23, 止盈59.52→59.53 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.53 弱撑:53.12 弱压:56.1 强压:59.53", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损52.23 | 盈59.53 | 买52.77~54.93 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损52.28 | 盈59.53 | 买52.82~54.98 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.23→52.28 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.53 弱撑:53.12 弱压:56.1 强压:59.53", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损52.28 | 盈59.53 | 买52.82~54.98 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考51.89 | 买入区52.43~54.57 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.28→51.89 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.0 弱撑:52.65 弱压:56.1 强压:59.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考51.89 | 买入区52.43~54.57 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考52.14 | 买入区52.67~54.83", - "reason": "技术信号变化: neutral: 止损51.89→52.14 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.67 弱撑:52.58 弱压:56.1 强压:59.87", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考52.14 | 买入区52.67~54.83", - "new_action": "盈利持有 | 止损参考52.23 | 买入区52.77~54.93", - "reason": "技术面重评: 止损52.14→52.23 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.72 弱撑:52.68 弱压:56.1 强压:59.92", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | 止损参考52.23 | 买入区52.77~54.93", - "new_action": "盈利持有 | 止损46.61 | 买入区52.77~54.93", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利持有 | 止损46.61 | 买入区52.77~54.93", - "new_action": "盈利持有 | 止损52.23 | 买入区52.77~54.93", - "reason": "技术面重评: 止损46.61→52.23 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.72 弱撑:52.68 弱压:56.1 强压:59.92", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | 止损52.23 | 买入区52.77~54.93", - "new_action": "盈利持有 | 止损46.61 | 买入区52.77~54.93", - "reason": "技术面重评: 止损52.23→46.61 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.72 弱撑:52.68 弱压:56.1 强压:59.92", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "盈利持有 | 目标参考60.13 | 止损参考52.23 | 买入区52.77~54.93 | 信号:弱势持有", - "new_action": "盈利持有 | 目标60.15 | 止损52.82 | 买入区53.36~55.54 | 信号:弱势持有", - "reason": "技术面重评: 止损52.23→52.82 | 形态:带下影阳线/bullish 量价:数据不足 强撑:47.85 弱撑:53.05 弱压:55.4 强压:60.15", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | 目标60.4 | 止损48.1 | 买入区53.15~54.25 | 信号:弱势持有", - "new_action": "盈利持有 | 止损参考48.1 | 买入区53.15~54.25 | 信号:弱势持有", - "reason": "价格变动(51.06→54.95): 策略文字调整", - "trigger": "价格变动(51.06→54.95)" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | 目标60.72 | 止损53.3 | 买入区53.85~56.05", - "new_action": "盈利持有 | 止损参考53.3 | 买入区53.85~56.05 | 信号:接近支撑位,关注", - "reason": "技术信号变化: 接近支撑位,关注: 策略文字调整", - "trigger": "技术信号变化: 接近支撑位,关注" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | 止损参考53.3 | 买入区53.85~56.05 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考53.3 | 买入区53.85~56.05 | 信号:关注", - "reason": "技术信号变化: 关注: 策略文字调整", - "trigger": "技术信号变化: 关注" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | 止损参考53.3 | 买入区53.85~56.05 | 信号:关注", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "reason": "技术信号变化: 持有: 策略文字调整", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损53.3 | 目标60.72 | 买入区53.85~56.05 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02359", - "name": "药明康德", - "price": 141.7, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 目标163.23 | 止损126.88 | 买入区138.87~143.77 | 信号:买入", - "stop_loss": 126.88, - "entry_low": 138.87, - "entry_high": 143.77, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:115.43 弱撑:130.8 弱压:147.37 强压:163.23", - "timing_signal": "买入", - "rr_ratio": 1.98, - "status": "updated", - "note": "⚠️盈亏比偏低(1:2.0),谨慎买入", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业医疗服务+0.5%,中性 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-24 14:24", - "take_profit": 163.23, - "updated_reason": "技术面重评: 止损133.22→126.88 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:115.43 弱撑:130.8 弱压:147.37 强压:16", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标163.5 | 止损133.22 | 买入区139.65~143.88 | 信号:买入", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:115.7 弱撑:130.8 弱压:147.9 强压:163.", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标163.5 | 止损133.22 | 买入区139.65~143.88 | 信号:买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标163.6 | 止损133.22 | 买入区140.04~143.92 | 信号:买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标163.6 | 止损133.22 | 买入区140.04~143.92 | 信号:买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 目标163.23 | 止损126.88 | 买入区138.87~143.77 | 信号:买入", - "reason": "技术面重评: 止损133.22→126.88 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:115.43 弱撑:130.8 弱压:147.37 强压:16", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02388", - "name": "中银香港", - "price": 46.52, - "cost": 43.79, - "shares": 1000, - "avg_price": 0, - "action": "盈利良好 | 止损42.02 | 目标48.59 | 买入区45.75~47.75 | 信号:持有", - "stop_loss": 42.02, - "entry_low": 45.75, - "entry_high": 47.75, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:42.95 弱撑:45.75 弱压:47.43 强压:50.39", - "timing_signal": "持有", - "rr_ratio": 2.76, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业银行下跌-2.7%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2周~3月", - "created_at": "2026-06-18 17:15", - "take_profit": 48.59, - "updated_reason": "技术面重评: 止损40.5→42.02, 止盈45.86→48.59 | 形态:带下影阴线/neutral 量价:数据不足 强撑:42.95 弱撑:45.75 弱压:47.43 强压:50.39", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损46.29 | 目标50.08 | 买入区47.37~48.19 | 信号:持有", - "reason": "初始策略创建 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.31 弱撑:47.37 弱压:48.1 强压:50.08", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利良好 | 止损46.29 | 目标50.08 | 买入区47.37~48.19 | 信号:持有", - "new_action": "盈利良好 | 止损46.35 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "reason": "技术面重评: 止损46.29→46.35, 止盈50.08→50.1 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.32 弱撑:47.39 弱压:48.1 强压:50.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利良好 | 止损46.35 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "new_action": "盈利良好 | 止损46.37 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "reason": "技术面重评: 止损46.35→46.37 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.32 弱撑:47.39 弱压:48.1 强压:50.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损46.37 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "new_action": "盈利良好 | 止损46.83 | 目标51.26 | 买入区47.6~49.05 | 信号:持有", - "reason": "技术面重评: 止损46.37→46.83, 止盈50.1→52.03 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.74 弱撑:47.6 弱压:48.68 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损46.83 | 目标51.26 | 买入区47.6~49.05 | 信号:持有", - "new_action": "盈利良好 | 止损46.68 | 目标51.2 | 买入区47.51~48.94 | 信号:持有", - "reason": "技术面重评: 止损46.83→46.68, 止盈52.03→51.97 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利良好 | 止损46.68 | 目标51.2 | 买入区47.51~48.94 | 信号:持有", - "new_action": "盈利良好 | 止损46.7 | 目标51.2 | 买入区47.51~48.95 | 信号:持有", - "reason": "技术面重评: 止损46.68→46.7 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利良好 | 止损46.7 | 目标51.2 | 买入区47.51~48.95 | 信号:持有", - "new_action": "盈利良好 | 止损43.49 | 目标49.37 | 买入区47.51~48.95 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利良好 | 止损43.49 | 目标49.37 | 买入区47.51~48.95 | 信号:持有", - "new_action": "盈利良好 | 止损46.7 | 目标52.74 | 买入区47.51~48.95 | 信号:持有", - "reason": "技术面重评: 止损43.49→46.7, 止盈49.37→52.74 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利良好 | 止损46.7 | 目标52.74 | 买入区47.51~48.95 | 信号:持有", - "new_action": "盈利良好 | 止损43.49 | 目标50.1 | 买入区47.51~48.95 | 信号:持有", - "reason": "技术面重评: 止损46.7→43.49, 止盈52.74→50.1 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:00", - "old_action": "盈利良好 | 止损43.49 | 目标50.1 | 买入区47.51~48.95 | 信号:持有", - "new_action": "盈利良好 | 止损44.75 | 目标50.16 | 买入区47.09~48.14 | 信号:持有", - "reason": "技术面重评: 止损43.49→44.75, 止盈50.1→50.16 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.94 弱撑:47.09 弱压:48.14 强压:50.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利良好 | 止损44.75 | 目标50.16 | 买入区47.09~48.14 | 信号:持有", - "new_action": "盈利良好 | 止损46.17 | 目标50.19 | 买入区47.15~48.18 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,低估值,蓝筹,持有: 止损44.75→46.17, 止盈50.16→50.19 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.96 弱撑:47.15 弱压:48.14 强压:50.", - "trigger": "技术信号变化: 大盘中性,行业中性,低估值,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利良好 | 止损46.17 | 目标50.19 | 买入区47.15~48.18 | 信号:持有", - "new_action": "盈利良好 | 止损45.98 | 目标51.25 | 买入区47.06~48.61 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,低估值,蓝筹,持有: 止损46.17→45.98, 止盈50.19→51.25 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:43.67 弱撑:47.06 弱压:47.82 强压:51.", - "trigger": "技术信号变化: 大盘中性,行业偏强,低估值,蓝筹,持有" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利良好 | 止损45.98 | 目标51.25 | 买入区47.06~48.61 | 信号:持有", - "new_action": "盈利良好 | 止损45.59 | 目标48.97 | 买入区46.65~48.3 | 信号:持有", - "reason": "价格变动(40.64→47.0): 止损45.98→45.59, 止盈51.25→48.97 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:43.49 弱撑:46.65 弱压:47.61 强压:51.0", - "trigger": "价格变动(40.64→47.0)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利良好 | 止损45.59 | 目标48.97 | 买入区46.65~48.3 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损38.2 | 目标45.15 | 买入区45.41~46.49 | 信号:加仓", - "reason": "技术信号变化: 加仓: 止损45.59→38.2, 止盈48.97→45.15 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.81 弱撑:45.41 弱压:47.09 强压:50.1", - "trigger": "技术信号变化: 加仓" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损38.2 | 目标45.15 | 买入区45.41~46.49 | 信号:加仓", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损38.24 | 目标45.22 | 买入区45.51~46.55 | 信号:加仓", - "reason": "技术面重评: 止损38.2→38.24, 止盈45.15→45.22 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.85 弱撑:45.51 弱压:47.19 强压:50.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损38.24 | 目标45.22 | 买入区45.51~46.55 | 信号:加仓", - "new_action": "盈利良好 | 止损40.04 | 目标45.25 | 买入区45.58~47.58 | 信号:持有", - "reason": "技术信号变化: 持有: 止损38.24→40.04, 止盈45.22→45.25 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.88 弱撑:45.58 弱压:47.26 强压:50.2", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利良好 | 止损40.04 | 目标45.25 | 买入区45.58~47.58 | 信号:持有", - "new_action": "盈利良好 | 止损40.02 | 目标45.23 | 买入区45.55~47.55 | 信号:持有", - "reason": "技术面重评: 止损40.04→40.02, 止盈45.25→45.23 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.87 弱撑:45.55 弱压:47.23 强压:50.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "盈利良好 | 止损40.02 | 目标45.23 | 买入区45.55~47.55 | 信号:持有", - "new_action": "盈利良好 | 止损40.01 | 目标45.24 | 买入区45.57~47.55 | 信号:持有", - "reason": "技术面重评: 止损40.02→40.01, 止盈45.23→45.24 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.87 弱撑:45.57 弱压:47.25 强压:50.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利良好 | 止损40.01 | 目标45.24 | 买入区45.57~47.55 | 信号:持有", - "new_action": "盈利良好 | 止损41.66 | 目标47.72 | 买入区45.5~47.48 | 信号:持有", - "reason": "技术面重评: 止损40.01→41.66, 止盈45.24→47.72 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.85 弱撑:45.5 弱压:47.18 强压:50.23", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "盈利良好 | 止损41.66 | 目标47.72 | 买入区45.5~47.48 | 信号:持有", - "new_action": "盈利良好 | 止损41.75 | 目标48.45 | 买入区45.53~47.54 | 信号:持有", - "reason": "技术面重评: 止损41.66→41.75, 止盈47.72→48.45 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.86 弱撑:45.53 弱压:47.21 强压:50.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利良好 | 止损41.75 | 目标48.45 | 买入区45.53~47.54 | 信号:持有", - "new_action": "盈利良好 | 止损41.71 | 目标48.45 | 买入区45.53~47.52 | 信号:持有", - "reason": "技术面重评: 止损41.75→41.71 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:42.86 弱撑:45.53 弱压:47.21 强压:50.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 止损41.71 | 目标48.45 | 买入区45.53~47.52 | 信号:持有", - "new_action": "盈利良好 | 止损40.28 | 目标46.04 | 买入区45.77~47.77 | 信号:持有", - "reason": "技术面重评: 止损41.71→40.28, 止盈48.45→46.04 | 形态:带下影阴线/neutral 量价:数据不足 强撑:42.95 弱撑:45.77 弱压:47.45 强压:50.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利良好 | 止损40.28 | 目标46.04 | 买入区45.77~47.77 | 信号:持有", - "new_action": "盈利良好 | 止损40.5 | 目标45.86 | 买入区45.93~47.8 | 信号:持有", - "reason": "技术面重评: 止损40.28→40.5, 止盈46.04→45.86 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:43.29 弱撑:45.93 弱压:47.61 强压:50.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利良好 | 止损40.5 | 目标45.86 | 买入区45.93~47.8 | 信号:持有", - "new_action": "盈利良好 | 止损42.02 | 目标48.59 | 买入区45.75~47.75 | 信号:持有", - "reason": "技术面重评: 止损40.5→42.02, 止盈45.86→48.59 | 形态:带下影阴线/neutral 量价:数据不足 强撑:42.95 弱撑:45.75 弱压:47.43 强压:50.39", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02628", - "name": "中国人寿", - "price": 28.32, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标32.72 | 止损25.58 | 买入区27.75~28.89", - "stop_loss": 25.58, - "entry_low": 27.75, - "entry_high": 28.89, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.52 弱撑:27.76 弱压:29.3 强压:32.72", - "timing_signal": "信号不充分", - "rr_ratio": 5.18, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业保险下跌-1.6%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2周~3月", - "created_at": "2026-06-24 14:24", - "take_profit": 32.72, - "updated_reason": "技术信号变化: 信号不充分: 止损27.49→25.58 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.52 弱撑:27.76 弱压:29.3 强压:32.72", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标32.73 | 止损24.53 | 买入区27.77~28.91", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.53 弱撑:27.77 弱压:29.3 强压:32.73", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标32.73 | 止损27.49 | 买入区27.77~28.91", - "new_action": "盈利持有 | 目标32.73 | 止损24.53 | 买入区27.77~28.91 | 信号:关注", - "reason": "技术信号变化: 关注: 止损27.49→24.53 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.53 弱撑:27.79 弱压:29.3 强压:32.73", - "trigger": "技术信号变化: 关注" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标32.74 | 止损27.49 | 买入区27.77~28.91 | 信号:关注", - "new_action": "盈利持有 | 目标32.72 | 止损25.58 | 买入区27.75~28.89", - "reason": "技术信号变化: 信号不充分: 止损27.49→25.58 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.52 弱撑:27.76 弱压:29.3 强压:32.72", - "trigger": "技术信号变化: 信号不充分" - } - ] - }, - { - "code": "06160", - "name": "百济神州", - "price": 165.2, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标180.64 | 止损149.22 | 买入区161.9~168.4", - "stop_loss": 149.22, - "entry_low": 161.9, - "entry_high": 168.4, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:151.1 弱撑:160.9 弱压:167.93 强压:180.64", - "timing_signal": "信号不充分", - "rr_ratio": 3.11, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业生物制品下跌-1.0%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-24 14:24", - "take_profit": 180.64, - "updated_reason": "技术面重评: 止损160.83→149.22 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:151.1 弱撑:160.9 弱压:167.93 强压:1", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标180.8 | 止损155.91 | 买入区162.39~168.76", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:151.2 弱撑:160.9 弱压:168.2 强压:18", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标180.97 | 止损160.73 | 买入区162.39~168.83", - "new_action": "盈利持有 | 目标180.93 | 止损156.01 | 买入区162.48~168.87", - "reason": "技术面重评: 止损160.73→156.01 | 形态:带上影阳线/neutral 量价:数据不足 强撑:151.27 弱撑:160.9 弱压:168.4 强压:180.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标180.97 | 止损160.83 | 买入区162.48~168.89", - "new_action": "盈利持有 | 目标180.64 | 止损149.22 | 买入区161.9~168.4", - "reason": "技术面重评: 止损160.83→149.22 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:151.1 弱撑:160.9 弱压:167.93 强压:1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "price": 261.2, - "cost": 264.06, - "shares": 500, - "avg_price": 0, - "action": "持有观察 | 短炒强趋势持 | 止损243.01 | 目标355.93 | 买入区250.53~263.06 | 信号:持有", - "stop_loss": 243.01, - "entry_low": 250.53, - "entry_high": 263.06, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.07 弱撑:250.53 弱压:272.53 强压:350.67", - "timing_signal": "持有", - "rr_ratio": 8.39, - "status": "updated", - "note": "短炒强趋势持", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业通信设备-0.5%,中性 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓强趋势让利润跑", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 17:15", - "take_profit": 355.93, - "updated_reason": "技术面重评: 止损225.84→243.01, 止盈321.49→355.93 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.07 弱撑:250.53 弱压:272.53 强压:", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损223.1 | 盈256.47 | 买225.4~234.6 | 信号:阳线企稳,可买入", - "reason": "初始策略创建 | 形态:带下影阳线/bullish 量价:数据不足 强撑:198.87 弱撑:224.73 弱压:233.33 强压:25", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损223.1 | 盈256.47 | 买225.4~234.6 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损223.68 | 盈256.33 | 买225.99~235.21 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损223.1→223.68, 止盈256.47→256.33 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:198.73 弱撑:224.27 弱压:233.07 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "盈利持有 | 损223.68 | 盈256.33 | 买225.99~235.21 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损222.71 | 盈256.2 | 买225.01~234.19 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损223.68→222.71, 止盈256.33→256.2 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:198.6 弱撑:224.0 弱压:232.8 强压:256", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损222.71 | 盈256.2 | 买225.01~234.19 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 止损参考216.7 | 买入区218.93~227.87 | 信号:接近支撑位,关注", - "reason": "技术信号变化: 接近支撑位,关注: 止损222.71→216.7 | 形态:带上影阴线/bearish 量价:数据不足 强撑:197.07 弱撑:219.53 弱压:229.73 强压:25", - "trigger": "技术信号变化: 接近支撑位,关注" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考216.7 | 买入区218.93~227.87 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考211.46 | 买入区213.64~222.36", - "reason": "技术信号变化: neutral: 止损216.7→211.46 | 形态:带上影阴线/bearish 量价:数据不足 强撑:188.53 弱撑:212.07 弱压:228.07 强压:25", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考211.46 | 买入区213.64~222.36", - "new_action": "盈利持有 | 止损参考211.27 | 买入区213.44~222.16", - "reason": "技术面重评: 止损211.46→211.27 | 形态:带上影阴线/bearish 量价:数据不足 强撑:188.47 弱撑:211.93 弱压:227.93 强压:25", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | 止损参考211.27 | 买入区213.44~222.16", - "new_action": "盈利持有 | 止损211.27 | 买入区213.44~222.16", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | 止损211.27 | 买入区213.44~222.16", - "new_action": "盈利持有 | 止损209.03 | 买入区213.44~222.16", - "reason": "技术面重评: 止损211.27→209.03 | 形态:带上影阴线/bearish 量价:数据不足 强撑:188.47 弱撑:211.93 弱压:227.93 强压:25", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利持有 | 止损209.03 | 买入区213.44~222.16", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标325.27 | 止损202.82 | 买入区271.66~260.79 | 信号:阳线企稳,可买入", - "reason": "价格变动(217.8→277.2): 止损209.03→202.82 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:201.67 弱撑:217.8 弱压:291.93 强压:32", - "trigger": "价格变动(217.8→277.2)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标325.27 | 止损202.82 | 买入区271.66~260.79 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标344.93 | 止损217.8 | 买入区280.28~268.65 | 信号:阳线企稳,可买入", - "reason": "价格变动(277.2→286.0): 止损202.82→217.8 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:196.13 弱撑:217.8 弱压:306.07 强压:34", - "trigger": "价格变动(277.2→286.0)" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标344.93 | 止损217.8 | 买入区280.28~268.65 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 目标367.2 | 止损251.8 | 买入区262.25~272.95", - "reason": "价格变动(286.0→267.6): 止损217.8→251.8 | 形态:带上影阴线/neutral 量价:数据不足 强撑:189.6 弱撑:251.8 弱压:293.8 强压:367.2", - "trigger": "价格变动(286.0→267.6)" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利持有 | 目标367.2 | 止损251.8 | 买入区262.25~272.95", - "new_action": "盈利持有 | 目标365.4 | 止损238.27 | 买入区259.31~269.89", - "reason": "技术信号变化: 大盘中性,行业偏弱,高估值: 止损251.8→238.27 | 形态:带上影阴线/neutral 量价:数据不足 强撑:187.8 弱撑:248.2 弱压:293.0 强压:365.4", - "trigger": "技术信号变化: 大盘中性,行业偏弱,高估值" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | 目标365.4 | 止损238.27 | 买入区259.31~269.89", - "new_action": "盈利持有 | 目标349.2 | 止损220.96 | 买入区249.12~259.28", - "reason": "价格变动(264.6→254.2): 止损238.27→220.96 | 形态:带上影阴线/bearish 量价:数据不足 强撑:171.6 弱撑:247.6 弱压:267.4 强压:349.2", - "trigger": "价格变动(264.6→254.2)" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利持有 | 目标349.2 | 止损220.96 | 买入区249.12~259.28", - "new_action": "盈利持有 | 目标349.73 | 止损221.91 | 买入区250.88~261.12", - "reason": "技术面重评: 止损220.96→221.91 | 形态:带上影阴线/bearish 量价:数据不足 强撑:172.13 弱撑:248.67 弱压:268.47 强压:34", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | 目标349.73 | 止损221.91 | 买入区250.88~261.12", - "new_action": "盈利持有 | 目标348.93 | 止损220.49 | 买入区250.68~260.92", - "reason": "技术面重评: 止损221.91→220.49 | 形态:带上影阴线/bearish 量价:数据不足 强撑:171.33 弱撑:247.07 弱压:269.07 强压:34", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利持有 | 目标348.93 | 止损220.49 | 买入区250.68~260.92", - "new_action": "盈利持有 | 目标349.2 | 止损220.96 | 买入区251.86~262.14", - "reason": "技术面重评: 止损220.49→220.96 | 形态:带上影阴线/bearish 量价:数据不足 强撑:171.6 弱撑:247.6 弱压:269.6 强压:349.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:32", - "old_action": "盈利持有 | 目标349.2 | 止损220.96 | 买入区251.86~262.14", - "new_action": "盈利持有 | 目标348.67 | 止损220.0 | 买入区250.29~260.51", - "reason": "技术面重评: 止损220.96→220.0 | 形态:带上影阴线/bearish 量价:数据不足 强撑:171.07 弱撑:246.53 弱压:268.53 强压:34", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利持有 | 目标348.67 | 止损220.0 | 买入区250.29~260.51", - "new_action": "盈利持有 | 目标350.07 | 止损232.18 | 买入区254.6~265.0", - "reason": "技术面重评: 止损220.0→232.18 | 形态:小阴线/bearish 量价:数据不足 强撑:172.47 弱撑:249.33 弱压:271.33 强压:350.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "盈利持有 | 目标350.07 | 止损232.18 | 买入区254.6~265.0", - "new_action": "盈利持有 | 目标351.13 | 止损234.17 | 买入区257.74~268.26 | 信号:买入", - "reason": "技术信号变化: 买入: 止损232.18→234.17 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.53 弱撑:251.47 弱压:273.47 强压:", - "trigger": "技术信号变化: 买入" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利持有 | 目标351.13 | 止损234.17 | 买入区257.74~268.26 | 信号:买入", - "new_action": "盈利持有 | 目标351.27 | 止损234.41 | 买入区257.74~268.26 | 信号:买入", - "reason": "技术面重评: 止损234.17→234.41 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.67 弱撑:251.73 弱压:273.73 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利持有 | 目标351.27 | 止损234.41 | 买入区257.74~268.26 | 信号:买入", - "new_action": "持有观察 | 短炒强趋势持 | 止损224.77 | 目标320.94 | 买入区251.87~264.46 | 信号:持有", - "reason": "技术信号变化: 持有: 止损234.41→224.77, 止盈351.27→320.94 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.73 弱撑:251.87 弱压:273.87 强压:", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 14:24", - "old_action": "持有观察 | 短炒强趋势持 | 止损224.77 | 目标320.94 | 买入区251.87~264.46 | 信号:持有", - "new_action": "盈利持有 | 短炒强趋势持 | 止损225.6 | 目标321.37 | 买入区252.8~265.44 | 信号:持有", - "reason": "技术面重评: 止损224.77→225.6, 止盈320.94→321.37 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:174.2 弱撑:252.8 弱压:274.8 强压:351", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 短炒强趋势持 | 止损225.6 | 目标321.37 | 买入区252.8~265.44 | 信号:持有", - "new_action": "盈利持有 | 短炒强趋势持 | 止损225.84 | 目标321.49 | 买入区253.07~265.72 | 信号:持有", - "reason": "技术面重评: 止损225.6→225.84, 止盈321.37→321.49 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:174.33 弱撑:253.07 弱压:275.07 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 短炒强趋势持 | 止损225.84 | 目标321.49 | 买入区253.07~265.72 | 信号:持有", - "new_action": "持有观察 | 短炒强趋势持 | 止损243.01 | 目标355.93 | 买入区250.53~263.06 | 信号:持有", - "reason": "技术面重评: 止损225.84→243.01, 止盈321.49→355.93 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:173.07 弱撑:250.53 弱压:272.53 强压:", - "trigger": "技术面重评" - } - ] - }, - { - "code": "09868", - "name": "小鹏集团-W", - "price": 49.14, - "cost": 51.36, - "shares": 700, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损49.83 | 目标60.53 | 买入区50.52~52.58 | 信号:持有", - "stop_loss": 49.83, - "entry_low": 50.52, - "entry_high": 52.58, - "tech_snapshot": "形态:带上影阴线/neutral 量价:数据不足 强撑:39.91 弱撑:48.39 弱压:50.35 强压:59.27", - "timing_signal": "持有", - "rr_ratio": 23.18, - "status": "manual", - "note": "⚠️盈亏比偏低(1:1.1),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "manual", - "sector_context": "行业汽车整车下跌-2.5%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓快进快出", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 17:15", - "take_profit": 60.53, - "updated_reason": "技术面重评: 策略文字调整", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.8 弱撑:51.0 弱压:53.35 强压:59.0", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损50.0 | 盈59.02 | 买50.52~52.58 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.95→50.0, 止盈59.0→59.02 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.82 弱撑:51.03 弱压:53.35 强压:59.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "盈利持有 | 损50.0 | 盈59.02 | 买50.52~52.58 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损50.0→49.95, 止盈59.02→59.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.8 弱撑:51.0 弱压:53.35 强压:59.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考50.0 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.95→50.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.75 弱撑:51.0 弱压:53.35 强压:59.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考50.0 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考49.62 | 买入区50.13~52.17 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损50.0→49.62 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.22 弱撑:50.53 弱压:53.35 强压:59.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考49.62 | 买入区50.13~52.17 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.62→49.95 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.33 弱撑:50.77 弱压:53.35 强压:59.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利持有 | 止损参考49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | 止损49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损46.51 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.95→46.51 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.33 弱撑:50.77 弱压:53.35 强压:59.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利持有 | 止损46.51 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 目标59.92 | 止损45.89 | 买入区49.78~51.82 | 信号:阳线企稳,可买入", - "reason": "技术信号变化: 阳线企稳,可买入: 止损46.51→45.89 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:41.0 弱撑:49.38 弱压:51.89 强压:59.9", - "trigger": "技术信号变化: 阳线企稳,可买入" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | 目标60.24 | 止损41.32 | 买入区49.91~50.78 | 信号:回踩支撑,可加仓", - "new_action": "盈利持有 | 止损参考41.32 | 买入区49.91~50.78 | 信号:阳线企稳,可买入", - "reason": "价格变动(47.99→51.55): 策略文字调整", - "trigger": "价格变动(47.99→51.55)" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | 目标60.53 | 止损49.83 | 买入区50.52~52.58", - "new_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "reason": "技术信号变化: 接近支撑位,关注: 策略文字调整", - "trigger": "技术信号变化: 接近支撑位,关注" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58", - "reason": "价格变动(42.68→49.36): 策略文字调整", - "trigger": "价格变动(42.68→49.36)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58", - "new_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:关注", - "reason": "技术信号变化: 关注: 策略文字调整", - "trigger": "技术信号变化: 关注" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:关注", - "new_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:买入", - "reason": "技术信号变化: 买入: 策略文字调整", - "trigger": "技术信号变化: 买入" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | 止损参考49.83 | 买入区50.52~52.58 | 信号:买入", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损49.83 | 目标60.53 | 买入区50.52~52.58 | 信号:持有", - "reason": "技术信号变化: 持有: 策略文字调整", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 16:45", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损49.83 | 目标60.53 | 买入区50.52~52.58 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损49.83 | 目标60.53 | 买入区50.52~52.58 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "price": 99.4, - "cost": 0, - "shares": 700, - "avg_price": 0, - "action": "盈利持有 | 目标115.07 | 止损89.79 | 买入区97.41~101.39 | 信号:关注", - "stop_loss": 89.79, - "entry_low": 97.41, - "entry_high": 101.39, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:83.97 弱撑:97.53 弱压:101.38 强压:115.07", - "timing_signal": "关注", - "rr_ratio": 5.26, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业软件开发下跌-2.6%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 115.07, - "updated_reason": "技术信号变化: 关注: 止损96.71→89.79 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:83.97 弱撑:97.53 弱压:101.38 强压:1", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损93.83 | 目标114.43 | 买入区102.27~104.13 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.83 弱撑:102.27 弱压:106.9 强压:114", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损93.83 | 目标114.43 | 买入区102.27~104.13 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.8 | 目标114.4 | 买入区102.2~104.1 | 信号:持有", - "reason": "技术面重评: 止损93.83→93.8, 止盈114.43→114.4 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.8 弱撑:102.2 弱压:106.9 强压:114.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.8 | 目标114.4 | 买入区102.2~104.1 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.87 | 目标114.47 | 买入区102.33~104.17 | 信号:持有", - "reason": "技术面重评: 止损93.8→93.87, 止盈114.4→114.47 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.87 弱撑:102.33 弱压:106.9 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.87 | 目标114.47 | 买入区102.33~104.17 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损92.97 | 目标114.57 | 买入区101.53~103.77 | 信号:持有", - "reason": "技术面重评: 止损93.87→92.97, 止盈114.47→116.29 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:92.97 弱撑:101.53 弱压:106.9 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损92.97 | 目标114.57 | 买入区101.53~103.77 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标115.23 | 买入区102.87~104.43 | 信号:持有", - "reason": "技术面重评: 止损92.97→93.63, 止盈116.29→116.96 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标115.23 | 买入区102.87~104.43 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标116.96 | 买入区102.87~104.43 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标116.96 | 买入区102.87~104.43 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标118.69 | 买入区102.87~104.43 | 信号:持有", - "reason": "技术面重评: 止损90.82→93.63, 止盈116.96→118.69 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标118.69 | 买入区102.87~104.43 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标118.69 | 买入区102.87~104.43 | 信号:持有", - "reason": "技术面重评: 止损93.63→90.82 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标118.69 | 买入区102.87~104.43 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损83.69 | 目标108.94 | 买入区100.83~102.27 | 信号:持有", - "reason": "技术面重评: 止损90.82→83.69, 止盈118.69→108.94 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:89.87 弱撑:100.83 弱压:104.9 强压:11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损83.69 | 目标108.94 | 买入区100.83~102.27 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损91.9 | 目标114.9 | 买入区101.2~102.5 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有: 止损83.69→91.9, 止盈108.94→114.9 | 形态:锤子线/T字线/neutral 量价:数据不足 强撑:90.1 弱撑:101.2 弱压:104.9 强压:114.", - "trigger": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损91.9 | 目标114.9 | 买入区101.2~102.5 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损84.66 | 目标114.73 | 买入区89.64~104.58 | 信号:持有", - "reason": "价格变动(102.9→99.6): 止损91.9→84.66, 止盈114.9→114.73 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:86.73 弱撑:98.07 弱压:102.9 强压:114.", - "trigger": "价格变动(102.9→99.6)" - }, - { - "date": "2026-06-24 09:01", - "old_action": "深套持有 | 深套持有 | 止损84.66 | 目标114.73 | 买入区89.64~104.58 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损85.59 | 目标104.75 | 买入区89.06~103.9 | 信号:持有", - "reason": "价格变动(85.56→98.95): 止损84.66→85.59, 止盈114.73→104.75 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:85.85 弱撑:97.3 弱压:102.9 强压:114.8", - "trigger": "价格变动(85.56→98.95)" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损85.59 | 目标104.75 | 买入区89.06~103.9 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.1 | 目标102.72 | 买入区88.16~102.85 | 信号:持有", - "reason": "技术信号变化: 持有: 止损85.59→74.1, 止盈104.75→102.72 | 形态:带上影阴线/bearish 量价:数据不足 强撑:83.03 弱撑:97.22 弱压:99.52 强压:114.1", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:17", - "old_action": "深套持有 | 深套持有 | 止损74.1 | 目标102.72 | 买入区88.16~102.85 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.25 | 目标102.87 | 买入区88.74~103.53 | 信号:持有", - "reason": "技术面重评: 止损74.1→74.25, 止盈102.72→102.87 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:83.2 弱撑:97.55 弱压:99.85 强压:114.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损74.25 | 目标102.87 | 买入区88.74~103.53 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.18 | 目标102.8 | 买入区88.61~103.37 | 信号:持有", - "reason": "技术面重评: 止损74.25→74.18, 止盈102.87→102.8 | 形态:带上影阴线/bearish 量价:数据不足 强撑:83.12 弱撑:97.38 弱压:99.68 强压:114.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损74.18 | 目标102.8 | 买入区88.61~103.37 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.11 | 目标102.74 | 买入区88.38~103.11 | 信号:持有", - "reason": "技术面重评: 止损74.18→74.11, 止盈102.8→102.74 | 形态:带上影阴线/bearish 量价:数据不足 强撑:83.05 弱撑:97.25 弱压:99.55 强压:114.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:33", - "old_action": "深套持有 | 深套持有 | 止损74.11 | 目标102.74 | 买入区88.38~103.11 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.09 | 目标102.71 | 买入区88.29~103.0 | 信号:持有", - "reason": "技术面重评: 止损74.11→74.09, 止盈102.74→102.71 | 形态:带上影阴线/bearish 量价:数据不足 强撑:83.02 弱撑:97.18 弱压:99.48 强压:114.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损74.09 | 目标102.71 | 买入区88.29~103.0 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.27 | 目标102.9 | 买入区88.97~103.79 | 信号:持有", - "reason": "技术面重评: 止损74.09→74.27, 止盈102.71→102.9 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:83.23 弱撑:97.62 弱压:99.92 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损74.27 | 目标102.9 | 买入区88.97~103.79 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.23 | 目标104.39 | 买入区88.79~103.58 | 信号:持有", - "reason": "技术面重评: 止损74.27→74.23, 止盈102.9→104.39 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:83.18 弱撑:97.52 弱压:99.82 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损74.23 | 目标104.39 | 买入区88.79~103.58 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损74.19 | 目标104.35 | 买入区88.65~103.43 | 信号:持有", - "reason": "技术面重评: 止损74.23→74.19, 止盈104.39→104.35 | 形态:带上影阴线/bearish 量价:数据不足 强撑:83.13 弱撑:97.42 弱压:99.72 强压:114.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损74.19 | 目标104.35 | 买入区88.65~103.43 | 信号:持有", - "new_action": "盈利持有 | 损96.85 | 盈115.2 | 买97.85~101.85", - "reason": "技术信号变化: 蓝筹: 止损74.19→86.43, 止盈104.35→105.24 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:84.1 弱撑:97.8 弱压:101.65 强压:115", - "trigger": "技术信号变化: 蓝筹" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利持有 | 损96.85 | 盈115.2 | 买97.85~101.85", - "new_action": "盈利持有 | 目标115.22 | 止损86.43 | 买入区97.85~101.85", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标115.22 | 止损96.85 | 买入区97.85~101.85", - "new_action": "盈利持有 | 目标115.15 | 止损86.3 | 买入区97.71~101.69", - "reason": "技术信号变化: 信号不充分: 止损96.85→86.3 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:84.05 弱撑:97.7 弱压:101.55 强压:11", - "trigger": "技术信号变化: 信号不充分" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标115.15 | 止损96.71 | 买入区97.71~101.69", - "new_action": "盈利持有 | 目标115.07 | 止损89.79 | 买入区97.41~101.39 | 信号:关注", - "reason": "技术信号变化: 关注: 止损96.71→89.79 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:83.97 弱撑:97.53 弱压:101.38 强压:1", - "trigger": "技术信号变化: 关注" - } - ] - }, - { - "code": "300035", - "name": "中科电气", - "price": 16.08, - "cost": 22.29, - "shares": 1400, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损13.26 | 目标18.7 | 买入区14.47~16.88 | 信号:持有", - "stop_loss": 13.26, - "entry_low": 14.47, - "entry_high": 16.88, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.88 弱撑:15.89 弱压:16.36 强压:18.42", - "timing_signal": "持有", - "rr_ratio": 0.97, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业电池-0.1%,中性 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-18 17:15", - "take_profit": 18.7, - "updated_reason": "技术面重评: 止损13.88→13.26, 止盈19.24→18.7 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.88 弱撑:15.89 弱压:16.36 强压:18", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.15 弱压:17.76 强压:19.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.78 | 目标19.43 | 买入区15.65~18.26 | 信号:持有", - "reason": "技术面重评: 止损14.76→14.78, 止盈19.42→19.72 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:15.65 弱撑:17.16 弱压:17.78 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损14.78 | 目标19.43 | 买入区15.65~18.26 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "reason": "技术面重评: 止损14.78→14.76, 止盈19.72→19.71 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.6 | 目标19.71 | 买入区15.63~18.24 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "深套持有 | 深套持有 | 止损14.6 | 目标19.71 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.76 | 目标20.0 | 买入区15.63~18.24 | 信号:持有", - "reason": "技术面重评: 止损14.6→14.76, 止盈19.71→20.0 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损14.76 | 目标20.0 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有", - "reason": "技术面重评: 止损14.76→13.74, 止盈20.0→19.0 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.94 | 目标18.83 | 买入区15.22~17.76 | 信号:持有", - "reason": "技术面重评: 止损13.74→13.94, 止盈19.0→18.83 | 形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:14.85 弱撑:16.31 弱压:17.43 强压:1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损13.94 | 目标18.83 | 买入区15.22~17.76 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.87 | 目标18.91 | 买入区15.43~18.01 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,持有: 止损13.94→14.87, 止盈18.83→18.91 | 形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:14.93 弱撑:16.47 弱压:17.59 强压:1", - "trigger": "技术信号变化: 大盘中性,行业偏强,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损14.87 | 目标18.91 | 买入区15.43~18.01 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.53 | 目标17.78 | 买入区14.92~17.41 | 信号:持有", - "reason": "价格变动(17.15→16.58): 止损14.87→13.53, 止盈18.91→17.78 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:14.74 弱撑:16.36 弱压:17.15 强压:18", - "trigger": "价格变动(17.15→16.58)" - }, - { - "date": "2026-06-24 09:01", - "old_action": "深套持有 | 深套持有 | 止损13.53 | 目标17.78 | 买入区14.92~17.41 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.15 | 目标16.94 | 买入区14.72~17.18 | 信号:持有", - "reason": "技术面重评: 止损13.53→14.15, 止盈17.78→16.94 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:14.59 弱撑:16.07 弱压:17.15 强压:18", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损14.15 | 目标16.94 | 买入区14.72~17.18 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.86 | 目标18.95 | 买入区14.41~16.81 | 信号:持有", - "reason": "技术信号变化: 持有: 止损14.15→13.86, 止盈16.94→18.95 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.86 弱撑:15.86 弱压:16.36 强压:18", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:17", - "old_action": "深套持有 | 深套持有 | 止损13.86 | 目标18.95 | 买入区14.41~16.81 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.87 | 目标18.95 | 买入区14.42~16.82 | 信号:持有", - "reason": "技术面重评: 止损13.86→13.87 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.86 弱撑:15.86 弱压:16.36 强压:18", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损13.87 | 目标18.95 | 买入区14.42~16.82 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.95 | 目标18.98 | 买入区14.51~16.93 | 信号:持有", - "reason": "技术面重评: 止损13.87→13.95, 止盈18.95→18.98 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:13.89 弱撑:15.9 弱压:16.36 强压:18.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损13.95 | 目标18.98 | 买入区14.51~16.93 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.96 | 目标18.99 | 买入区14.52~16.94 | 信号:持有", - "reason": "技术面重评: 止损13.95→13.96, 止盈18.98→18.99 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:13.9 弱撑:15.92 弱压:16.37 强压:18.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损13.96 | 目标18.99 | 买入区14.52~16.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.3 | 目标18.44 | 买入区14.52~16.94 | 信号:持有", - "reason": "技术面重评: 止损13.96→13.3, 止盈18.99→18.44 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:13.9 弱撑:15.92 弱压:16.37 强压:18.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损13.3 | 目标18.44 | 买入区14.52~16.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.39 | 目标18.75 | 买入区14.62~17.05 | 信号:持有", - "reason": "技术面重评: 止损13.3→13.39, 止盈18.44→18.75 | 形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:13.93 弱撑:15.99 弱压:16.44 强压:1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损13.39 | 目标18.75 | 买入区14.62~17.05 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.37 | 目标18.74 | 买入区14.59~17.02 | 信号:持有", - "reason": "技术面重评: 止损13.39→13.37, 止盈18.75→18.74 | 形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:13.92 弱撑:15.96 弱压:16.41 强压:1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损13.37 | 目标18.74 | 买入区14.59~17.02 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.91 | 目标19.26 | 买入区14.46~16.87 | 信号:持有", - "reason": "技术面重评: 止损13.37→13.91, 止盈18.74→19.26 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.88 弱撑:15.89 弱压:16.36 强压:18", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损13.91 | 目标19.26 | 买入区14.46~16.87 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.9 | 目标19.25 | 买入区14.45~16.86 | 信号:持有", - "reason": "价格变动(0→16.06): 止损13.91→13.9, 止盈19.26→19.25 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.87 弱撑:15.86 弱压:16.36 强压:18", - "trigger": "价格变动(0→16.06)" - }, - { - "date": "2026-06-24 14:40", - "old_action": "深套持有 | 深套持有 | 止损13.9 | 目标19.25 | 买入区14.45~16.86 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.88 | 目标19.24 | 买入区14.43~16.83 | 信号:持有", - "reason": "技术面重评: 止损13.9→13.88, 止盈19.25→19.24 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.86 弱撑:15.86 弱压:16.36 强压:18", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损13.88 | 目标19.24 | 买入区14.43~16.83 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损13.26 | 目标18.7 | 买入区14.47~16.88 | 信号:持有", - "reason": "技术面重评: 止损13.88→13.26, 止盈19.24→18.7 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:13.88 弱撑:15.89 弱压:16.36 强压:18", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300124", - "name": "汇川技术", - "price": 66.31, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标73.13 | 止损62.39 | 买入区64.98~67.64 | 信号:观望", - "stop_loss": 62.39, - "entry_low": 64.98, - "entry_high": 67.64, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:59.89 弱撑:65.54 弱压:67.29 强压:73.13", - "timing_signal": "观望", - "rr_ratio": 3.43, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业自动化设备-0.1%,中性 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:24", - "take_profit": 73.13, - "updated_reason": "技术面重评: 止损64.32→62.39 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:59.89 弱撑:65.54 弱压:67.29 强压:", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标73.19 | 止损62.57 | 买入区65.18~67.84 | 信号:观望", - "reason": "初始策略创建 | 形态:长影星线/neutral 量价:主动卖盘占优 强撑:59.95 弱撑:65.66 弱压:67.41 强压:73.1", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标73.19 | 止损64.48 | 买入区65.14~67.8 | 信号:观望", - "new_action": "盈利持有 | 目标73.19 | 止损62.54 | 买入区65.13~67.79 | 信号:观望", - "reason": "技术面重评: 止损64.48→62.54 | 形态:长影星线/neutral 量价:主动卖盘占优 强撑:59.95 弱撑:65.64 弱压:67.39 强压:73.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标73.13 | 止损64.32 | 买入区64.98~67.64 | 信号:观望", - "new_action": "盈利持有 | 目标73.13 | 止损62.39 | 买入区64.98~67.64 | 信号:观望", - "reason": "技术面重评: 止损64.32→62.39 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:59.89 弱撑:65.54 弱压:67.29 强压:", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300308", - "name": "中际旭创", - "price": 1312.18, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标1447.8 | 止损1272.81 | 买入区1285.94~1338.42", - "stop_loss": 1272.81, - "entry_low": 1285.94, - "entry_high": 1338.42, - "tech_snapshot": "形态:十字星/neutral 量价:主动买盘占优 强撑:1178.34 弱撑:1281.26 弱压:1343.99 强压:1447.8", - "timing_signal": "信号不充分", - "rr_ratio": 3.44, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "大盘上涨比13.3%", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-24 14:24", - "take_profit": 1447.8, - "updated_reason": "技术面重评: 止损1267.79→1272.81 | 形态:十字星/neutral 量价:主动买盘占优 强撑:1178.34 弱撑:1281.26 弱压:1343.99 强压", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标1445.07 | 止损1265.95 | 买入区1279.0~1331.2", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:1175.61 弱撑:1275.81 弱压:1338.", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标1445.07 | 止损1265.95 | 买入区1279.0~1331.2", - "new_action": "盈利持有 | 目标1445.59 | 止损1267.79 | 买入区1280.86~1333.14", - "reason": "技术信号变化: 信号不充分: 止损1265.95→1267.79 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:1176.13 弱撑:1276.85 弱压:1339.", - "trigger": "技术信号变化: 信号不充分" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标1445.59 | 止损1267.79 | 买入区1280.86~1333.14", - "new_action": "盈利持有 | 目标1447.8 | 止损1272.81 | 买入区1285.94~1338.42", - "reason": "技术面重评: 止损1267.79→1272.81 | 形态:十字星/neutral 量价:主动买盘占优 强撑:1178.34 弱撑:1281.26 弱压:1343.99 强压", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300548", - "name": "长芯博创", - "price": 282.23, - "cost": 231.46, - "shares": 100, - "avg_price": 0, - "action": "盈利良好 | 短炒强趋势持 | 止损263.91 | 目标348.37 | 买入区272.07~285.67 | 信号:持有", - "stop_loss": 263.91, - "entry_low": 272.07, - "entry_high": 285.67, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:272.07 弱压:296.18 强压:343.22", - "timing_signal": "持有", - "rr_ratio": 6.0, - "status": "updated", - "note": "短炒强趋势持", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业光学光电子+0.5%,中性 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓强趋势让利润跑", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 17:15", - "take_profit": 348.37, - "updated_reason": "技术面重评: 止损241.6→263.91, 止盈313.53→348.37 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:272.07 弱压:296.18 ", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损260.75 | 目标323.86 | 买入区264.9~278.14 | 信号:放量走强,持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:215.9 弱撑:264.9 弱压:274.12 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损260.75 | 目标323.86 | 买入区264.9~278.14 | 信号:放量走强,持有", - "new_action": "盈利良好 | 止损269.88 | 目标323.86 | 买入区269.88~283.37 | 信号:放量走强,持有", - "reason": "价格变动(268.81→282.3): 止损260.75→269.88, 止盈323.86→328.72 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.88 弱压:290.77 强压:", - "trigger": "价格变动(268.81→282.3)" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损269.88 | 目标323.86 | 买入区269.88~283.37 | 信号:放量走强,持有", - "new_action": "盈利良好 | 止损269.8 | 目标323.86 | 买入区269.8~283.29 | 信号:放量走强,持有", - "reason": "技术面重评: 止损269.88→269.8 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利良好 | 止损269.8 | 目标323.86 | 买入区269.8~283.29 | 信号:放量走强,持有", - "new_action": "盈利良好 | 止损261.71 | 目标328.72 | 买入区269.8~283.29 | 信号:放量走强,持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利良好 | 止损261.71 | 目标328.72 | 买入区269.8~283.29 | 信号:放量走强,持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损269.8 | 目标435.68 | 买入区269.8~283.29 | 信号:强趋势持", - "reason": "技术信号变化: 强趋势持: 止损261.71→269.8, 止盈328.72→435.68 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:3", - "trigger": "技术信号变化: 强趋势持" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利良好 | 短炒强趋势持 | 止损269.8 | 目标435.68 | 买入区269.8~283.29 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持", - "reason": "技术面重评: 止损269.8→251.24, 止盈435.68→413.9 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损263.73 | 目标424.82 | 买入区281.99~296.09 | 信号:强趋势持", - "reason": "价格变动(281.99→298.12): 止损251.24→263.73, 止盈413.9→424.82 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:225.59 弱撑:281.99 弱压:308.63 ", - "trigger": "价格变动(281.99→298.12)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利良好 | 短炒强趋势持 | 止损263.73 | 目标424.82 | 买入区281.99~296.09 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损283.19 | 目标338.39 | 买入区281.99~296.09 | 信号:强趋势持", - "reason": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持: 止损263.73→283.19, 止盈424.82→338.39 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:225.59 弱撑:281.99 弱压:308.61 ", - "trigger": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利良好 | 短炒强趋势持 | 止损283.19 | 目标338.39 | 买入区281.99~296.09 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损282.57 | 目标357.71 | 买入区282.57~296.7 | 信号:强趋势持", - "reason": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持: 止损283.19→282.57, 止盈338.39→357.71 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:238.47 弱撑:282.57 弱压:306.99 ", - "trigger": "技术信号变化: 大盘中性,行业中性,高估值,强趋势持" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利良好 | 短炒强趋势持 | 止损282.57 | 目标357.71 | 买入区282.57~296.7 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损277.44 | 目标343.4 | 买入区276.08~289.88 | 信号:强趋势持", - "reason": "技术面重评: 止损282.57→277.44, 止盈357.71→343.4 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:238.47 弱撑:276.08 弱压:302.78 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利良好 | 短炒强趋势持 | 止损277.44 | 目标343.4 | 买入区276.08~289.88 | 信号:强趋势持", - "new_action": "盈利良好 | 短炒强趋势持 | 止损239.57 | 目标263.31 | 买入区268.46~280.51 | 信号:持有", - "reason": "价格变动(286.02→276.49): 止损277.44→239.57, 止盈343.4→263.31 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:268.46 弱压:292.57 强压:", - "trigger": "价格变动(286.02→276.49)" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利良好 | 短炒强趋势持 | 止损239.57 | 目标263.31 | 买入区268.46~280.51 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损239.64 | 目标308.9 | 买入区268.53~281.96 | 信号:持有", - "reason": "技术面重评: 止损239.57→239.64, 止盈263.31→308.9 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:268.53 弱压:292.64 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利良好 | 短炒强趋势持 | 止损239.64 | 目标308.9 | 买入区268.53~281.96 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损239.92 | 目标308.9 | 买入区268.85~282.29 | 信号:持有", - "reason": "技术面重评: 止损239.64→239.92 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:268.85 弱压:292.96 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利良好 | 短炒强趋势持 | 止损239.92 | 目标308.9 | 买入区268.85~282.29 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损240.35 | 目标308.9 | 买入区269.33~282.8 | 信号:持有", - "reason": "技术面重评: 止损239.92→240.35 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:269.33 弱压:293.44 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利良好 | 短炒强趋势持 | 止损240.35 | 目标308.9 | 买入区269.33~282.8 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损250.8 | 目标326.06 | 买入区269.33~282.8 | 信号:持有", - "reason": "技术面重评: 止损240.35→250.8, 止盈308.9→326.06 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:269.33 弱压:293.44 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "盈利良好 | 短炒强趋势持 | 止损250.8 | 目标326.06 | 买入区269.33~282.8 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损251.91 | 目标330.95 | 买入区270.52~284.05 | 信号:持有", - "reason": "技术面重评: 止损250.8→251.91, 止盈326.06→330.95 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:270.52 弱压:294.63 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利良好 | 短炒强趋势持 | 止损251.91 | 目标330.95 | 买入区270.52~284.05 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损252.78 | 目标330.95 | 买入区271.46~285.03 | 信号:持有", - "reason": "技术面重评: 止损251.91→252.78 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:271.46 弱压:295.57 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 短炒强趋势持 | 止损252.78 | 目标330.95 | 买入区271.46~285.03 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损242.59 | 目标313.53 | 买入区271.84~285.43 | 信号:持有", - "reason": "技术面重评: 止损252.78→242.59, 止盈330.95→313.53 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:271.84 弱压:295.95 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利良好 | 短炒强趋势持 | 止损242.59 | 目标313.53 | 买入区271.84~285.43 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损242.5 | 目标313.53 | 买入区271.74~285.33 | 信号:持有", - "reason": "价格变动(0→282.05): 止损242.59→242.5 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:271.74 弱压:295.85 ", - "trigger": "价格变动(0→282.05)" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利良好 | 短炒强趋势持 | 止损242.5 | 目标313.53 | 买入区271.74~285.33 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损241.6 | 目标313.53 | 买入区270.73~284.27 | 信号:持有", - "reason": "技术面重评: 止损242.5→241.6 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:228.82 弱撑:270.73 弱压:294.84 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利良好 | 短炒强趋势持 | 止损241.6 | 目标313.53 | 买入区270.73~284.27 | 信号:持有", - "new_action": "盈利良好 | 短炒强趋势持 | 止损263.91 | 目标348.37 | 买入区272.07~285.67 | 信号:持有", - "reason": "技术面重评: 止损241.6→263.91, 止盈313.53→348.37 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:228.82 弱撑:272.07 弱压:296.18 ", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300750", - "name": "宁德时代", - "price": 395.36, - "cost": 401.78, - "shares": 100, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.13 | 目标430.87 | 买入区388.26~393.76 | 信号:弱势持有", - "stop_loss": 352.13, - "entry_low": 388.26, - "entry_high": 393.76, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:363.02 弱撑:388.26 弱压:400.87 强压:424.5", - "timing_signal": "弱势持有", - "rr_ratio": 0.9, - "status": "updated", - "note": "⚠️盈亏比偏低(1:0.9),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业电池-0.1%,中性 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 430.87, - "updated_reason": "技术面重评: 止损352.27→352.13, 止盈431.02→430.87 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:363.02 弱撑:388.26 弱压:400.87 强压:", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | 止损370.09 | 目标423.27 | 买入区383.46~396.68 | 信号:缩量回踩弱支撑,可加仓", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.09 弱撑:383.46 弱压:403.43 强压:42", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | 止损370.09 | 目标423.27 | 买入区383.46~396.68 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.4),不建议加仓 | 止损371.06 | 目标424.24 | 买入区385.42~397.65 | 信号:持有", - "reason": "技术信号变化: 持有: 止损370.09→371.06, 止盈423.27→430.6 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:371.06 弱撑:385.42 弱压:405.39 强压:42", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.4),不建议加仓 | 止损371.06 | 目标424.24 | 买入区385.42~397.65 | 信号:持有", - "new_action": "持有观察 | 止损370.53 | 目标423.71 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术信号变化: 缩量回踩弱支撑,可加仓: 止损371.06→370.53, 止盈430.6→430.07 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:42", - "trigger": "技术信号变化: 缩量回踩弱支撑,可加仓" - }, - { - "date": "2026-06-18 23:35", - "old_action": "持有观察 | 止损370.53 | 目标423.71 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | 止损345.04 | 目标408.57 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "持有观察 | 止损345.04 | 目标408.57 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | 止损370.53 | 目标436.42 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术面重评: 止损345.04→370.53, 止盈408.57→436.42 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:42", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 13:17", - "old_action": "持有观察 | 止损370.53 | 目标436.42 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | 止损370.53 | 目标436.42 | 买入区384.35~397.12 | 信号:弱势持有", - "reason": "技术信号变化: 弱势持有: 策略文字调整", - "trigger": "技术信号变化: 弱势持有" - }, - { - "date": "2026-06-19 15:37", - "old_action": "持有观察 | 止损370.53 | 目标436.42 | 买入区384.35~397.12 | 信号:弱势持有", - "new_action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有", - "reason": "技术面重评: 止损370.53→345.04, 止盈436.42→414.6 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:42", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损359.96 | 目标437.18 | 买入区391.55~404.13 | 信号:持有", - "reason": "价格变动(391.55→413.07): 止损345.04→359.96, 止盈414.6→437.18 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:371.09 弱撑:391.55 弱压:422.27 强压:4", - "trigger": "价格变动(391.55→413.07)" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损359.96 | 目标437.18 | 买入区391.55~404.13 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.7),不建议加仓 | 止损377.45 | 目标435.49 | 买入区391.55~402.77 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有: 止损359.96→377.45, 止盈437.18→435.49 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:370.05 弱撑:391.55 弱压:419.54 强压:4", - "trigger": "技术信号变化: 大盘中性,行业偏强,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.7),不建议加仓 | 止损377.45 | 目标435.49 | 买入区391.55~402.77 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损359.17 | 目标413.84 | 买入区395.72~404.88 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术信号变化: 大盘中性,行业偏弱,蓝筹,缩量回踩弱支撑,可加仓: 止损377.45→359.17, 止盈435.49→413.84 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:374.14 弱撑:395.72 弱压:410.75 强压:4", - "trigger": "技术信号变化: 大盘中性,行业偏弱,蓝筹,缩量回踩弱支撑,可加仓" - }, - { - "date": "2026-06-24 09:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损359.17 | 目标413.84 | 买入区395.72~404.88 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | 止损365.5 | 目标392.01 | 买入区384.15~399.09 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏弱,蓝筹,持有: 止损359.17→365.5, 止盈413.84→392.01 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:368.35 弱撑:384.15 弱压:408.98 强压:4", - "trigger": "技术信号变化: 大盘中性,行业偏弱,蓝筹,持有" - }, - { - "date": "2026-06-24 11:06", - "old_action": "持有观察 | 止损365.5 | 目标392.01 | 买入区384.15~399.09 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损348.92 | 目标421.19 | 买入区386.21~390.45 | 信号:弱势持有", - "reason": "技术信号变化: 弱势持有: 止损365.5→348.92, 止盈392.01→421.19 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:359.71 弱撑:386.21 弱压:394.23 强压:", - "trigger": "技术信号变化: 弱势持有" - }, - { - "date": "2026-06-24 11:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损348.92 | 目标421.19 | 买入区386.21~390.45 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损349.13 | 目标421.41 | 买入区386.66~390.67 | 信号:弱势持有", - "reason": "技术面重评: 止损348.92→349.13, 止盈421.19→421.41 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:359.93 弱撑:386.66 弱压:394.68 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损349.13 | 目标421.41 | 买入区386.66~390.67 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损349.95 | 目标422.25 | 买入区388.33~391.51 | 信号:弱势持有", - "reason": "技术面重评: 止损349.13→349.95, 止盈421.41→422.25 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:360.77 弱撑:388.33 弱压:396.35 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损349.95 | 目标422.25 | 买入区388.33~391.51 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损350.5 | 目标422.82 | 买入区389.36~392.08 | 信号:弱势持有", - "reason": "技术面重评: 止损349.95→350.5, 止盈422.25→422.82 | 形态:带下影阳线/bullish 量价:买卖均衡 强撑:361.34 弱撑:389.36 弱压:397.49 强压:42", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损350.5 | 目标422.82 | 买入区389.36~392.08 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损349.83 | 目标433.28 | 买入区389.95~393.76 | 信号:弱势持有", - "reason": "技术面重评: 止损350.5→349.83, 止盈422.82→433.28 | 形态:带下影阳线/bullish 量价:买卖均衡 强撑:360.65 弱撑:389.95 弱压:400.87 强压:42", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损349.83 | 目标433.28 | 买入区389.95~393.76 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损352.43 | 目标431.18 | 买入区388.88~394.07 | 信号:持有", - "reason": "技术信号变化: 持有: 止损349.83→352.43, 止盈433.28→431.18 | 形态:带下影阳线/bullish 量价:买卖均衡 强撑:363.33 弱撑:388.88 弱压:401.49 强压:42", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 14:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损352.43 | 目标431.18 | 买入区388.88~394.07 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损351.9 | 目标430.62 | 买入区387.77~393.52 | 信号:弱势持有", - "reason": "技术信号变化: 弱势持有: 止损352.43→351.9, 止盈431.18→430.62 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:362.78 弱撑:387.77 弱压:400.38 强压:", - "trigger": "技术信号变化: 弱势持有" - }, - { - "date": "2026-06-24 14:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损351.9 | 目标430.62 | 买入区387.77~393.52 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.02 | 目标430.76 | 买入区388.02~393.65 | 信号:弱势持有", - "reason": "价格变动(0→395.2): 止损351.9→352.02, 止盈430.62→430.76 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:362.91 弱撑:388.02 弱压:400.63 强压:", - "trigger": "价格变动(0→395.2)" - }, - { - "date": "2026-06-24 14:40", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.02 | 目标430.76 | 买入区388.02~393.65 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.27 | 目标431.02 | 买入区388.54~393.91 | 信号:弱势持有", - "reason": "技术面重评: 止损352.02→352.27, 止盈430.76→431.02 | 形态:带下影阳线/bullish 量价:买卖均衡 强撑:363.17 弱撑:388.54 弱压:401.15 强压:42", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.27 | 目标431.02 | 买入区388.54~393.91 | 信号:弱势持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损352.13 | 目标430.87 | 买入区388.26~393.76 | 信号:弱势持有", - "reason": "技术面重评: 止损352.27→352.13, 止盈431.02→430.87 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:363.02 弱撑:388.26 弱压:400.87 强压:", - "trigger": "技术面重评" - } - ] - }, - { - "code": "518880", - "name": "黄金ETF华安", - "price": 8.515, - "cost": 12.19, - "shares": 2400, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损7.02 | 目标9.31 | 买入区7.66~8.94 | 信号:持有", - "stop_loss": 7.02, - "entry_low": 7.66, - "entry_high": 8.94, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.81 弱撑:8.45 弱压:8.55 强压:9.17", - "timing_signal": "持有", - "rr_ratio": 0.51, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业贵金属+0.2%,中性 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-19 11:24", - "take_profit": 9.31, - "updated_reason": "技术面重评: 止损6.46→7.02, 止盈8.38→9.31 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.81 弱撑:8.45 弱压:8.55 强压:9.17", - "changelog": [ - { - "date": "2026-06-19 11:24", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损7.57 | 目标9.65 | 买入区8.02~9.35 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.48 弱撑:8.88 弱压:8.96 强压:9.37", - "trigger": "初始创建" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损7.57 | 目标9.65 | 买入区8.02~9.35 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有", - "reason": "技术面重评: 止损7.57→7.05, 止盈9.65→9.17 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.48 弱撑:8.88 弱压:8.96 强压:9.37", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.15 | 目标9.38 | 买入区7.8~9.1 | 信号:持有", - "reason": "技术面重评: 止损7.05→7.15, 止盈9.17→9.38 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.02 弱撑:8.64 弱压:8.91 强压:9.38", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损7.15 | 目标9.38 | 买入区7.8~9.1 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.78 | 目标9.41 | 买入区7.84~9.15 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,持有: 止损7.15→7.78, 止盈9.38→9.41 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:8.27 弱撑:8.67 弱压:8.91 强压:9.14", - "trigger": "技术信号变化: 大盘中性,行业偏强,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损7.78 | 目标9.41 | 买入区7.84~9.15 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.72 | 目标8.37 | 买入区7.73~9.02 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏弱,持有: 止损7.78→6.72, 止盈9.41→8.37 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:7.92 弱撑:8.55 弱压:8.72 强压:9.3", - "trigger": "技术信号变化: 大盘中性,行业偏弱,持有" - }, - { - "date": "2026-06-24 09:01", - "old_action": "深套持有 | 深套持有 | 止损6.72 | 目标8.37 | 买入区7.73~9.02 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.08 | 目标8.0 | 买入区7.68~8.96 | 信号:持有", - "reason": "技术面重评: 止损6.72→7.08, 止盈8.37→8.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:7.9 弱撑:8.48 弱压:8.72 强压:9.26", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损7.08 | 目标8.0 | 买入区7.68~8.96 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.4 | 目标8.23 | 买入区7.6~8.86 | 信号:持有", - "reason": "技术信号变化: 持有: 止损7.08→6.4, 止盈8.0→8.23 | 形态:带上影阴线/bearish 量价:数据不足 强撑:7.79 弱撑:8.4 弱压:8.54 强压:9.14", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:17", - "old_action": "深套持有 | 深套持有 | 止损6.4 | 目标8.23 | 买入区7.6~8.86 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.41 | 目标8.23 | 买入区7.6~8.87 | 信号:持有", - "reason": "技术面重评: 止损6.4→6.41 | 形态:带上影阴线/bearish 量价:数据不足 强撑:7.79 弱撑:8.4 弱压:8.54 强压:9.14", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损6.41 | 目标8.23 | 买入区7.6~8.87 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.4 | 目标8.23 | 买入区7.6~8.86 | 信号:持有", - "reason": "技术面重评: 止损6.41→6.4 | 形态:带上影阴线/bearish 量价:数据不足 强撑:7.79 弱撑:8.4 弱压:8.54 强压:9.14", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损6.4 | 目标8.23 | 买入区7.6~8.86 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.68 | 目标8.68 | 买入区7.6~8.86 | 信号:持有", - "reason": "技术面重评: 止损6.4→6.68, 止盈8.23→8.68 | 形态:带上影阴线/bearish 量价:数据不足 强撑:7.79 弱撑:8.4 弱压:8.54 强压:9.14", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:16", - "old_action": "深套持有 | 深套持有 | 止损6.68 | 目标8.68 | 买入区7.6~8.86 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.7 | 目标8.83 | 买入区7.62~8.89 | 信号:持有", - "reason": "技术面重评: 止损6.68→6.7, 止盈8.68→8.83 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:7.8 弱撑:8.42 弱压:8.54 强压:9.15", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "深套持有 | 深套持有 | 止损6.7 | 目标8.83 | 买入区7.62~8.89 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.7 | 目标8.84 | 买入区7.63~8.9 | 信号:持有", - "reason": "技术面重评: 止盈8.83→8.84 | 形态:十字星/neutral 量价:数据不足 强撑:7.8 弱撑:8.43 弱压:8.54 强压:9.16", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损6.7 | 目标8.84 | 买入区7.63~8.9 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.47 | 目标8.38 | 买入区7.67~8.95 | 信号:持有", - "reason": "技术面重评: 止损6.7→6.47, 止盈8.84→8.38 | 形态:带下影阳线/bullish 量价:数据不足 强撑:7.81 弱撑:8.46 弱压:8.56 强压:9.17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损6.47 | 目标8.38 | 买入区7.67~8.95 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损6.46 | 目标8.38 | 买入区7.67~8.94 | 信号:持有", - "reason": "技术面重评: 止损6.47→6.46 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.81 弱撑:8.45 弱压:8.55 强压:9.17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损6.46 | 目标8.38 | 买入区7.67~8.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.02 | 目标9.31 | 买入区7.66~8.94 | 信号:持有", - "reason": "技术面重评: 止损6.46→7.02, 止盈8.38→9.31 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.81 弱撑:8.45 弱压:8.55 强压:9.17", - "trigger": "技术面重评" - } - ] - }, - { - "code": "600519", - "name": "贵州茅台", - "price": 1207.68, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标1320.83 | 止损1171.45 | 买入区1183.53~1231.2 | 信号:关注", - "stop_loss": 1171.45, - "entry_low": 1183.53, - "entry_high": 1231.2, - "tech_snapshot": "形态:带上影阴线/bearish 量价:主动买盘占优 强撑:1117.21 弱撑:1196.17 弱压:1230.53 强压:1320.83", - "timing_signal": "关注", - "rr_ratio": 3.12, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "大盘上涨比13.3%", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:24", - "take_profit": 1320.83, - "updated_reason": "技术面重评: 止损1171.59→1171.45 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:1117.21 弱撑:1196.17 弱压:1230.53 ", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标1320.84 | 止损1171.49 | 买入区1183.57~1231.23 | 信号:关注", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:1117.22 弱撑:1196.2 弱压:1230.56 强", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标1320.84 | 止损1171.49 | 买入区1183.57~1231.23 | 信号:关注", - "new_action": "盈利持有 | 目标1320.86 | 止损1171.59 | 买入区1183.66~1231.3 | 信号:关注", - "reason": "技术面重评: 止损1171.49→1171.59 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:1117.23 弱撑:1196.22 弱压:1230.58 ", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标1320.86 | 止损1171.59 | 买入区1183.66~1231.3 | 信号:关注", - "new_action": "盈利持有 | 目标1320.83 | 止损1171.45 | 买入区1183.53~1231.2 | 信号:关注", - "reason": "技术面重评: 止损1171.59→1171.45 | 形态:带上影阴线/bearish 量价:主动买盘占优 强撑:1117.21 弱撑:1196.17 弱压:1230.53 ", - "trigger": "技术面重评" - } - ] - }, - { - "code": "600563", - "name": "法拉电子", - "price": 178.76, - "cost": 146.95, - "shares": 100, - "avg_price": 0, - "action": "盈利良好 | 止损172.96 | 目标219.99 | 买入区162.51~170.64 | 信号:持有", - "stop_loss": 172.96, - "entry_low": 162.51, - "entry_high": 170.64, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:184.36 强压:210.42", - "timing_signal": "持有", - "rr_ratio": 3.54, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业元件大涨+3.2%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-18 17:15", - "take_profit": 219.99, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损164.39 | 目标187.06 | 买入区166.77~175.11 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:166.77 弱压:173.78 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损164.39 | 目标187.06 | 买入区166.77~175.11 | 信号:持有", - "new_action": "盈利良好 | 止损163.7 | 目标187.06 | 买入区166.12~174.43 | 信号:持有", - "reason": "技术面重评: 止损164.39→163.7, 止盈187.06→189.87 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:166.12 弱压:173.51 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损163.7 | 目标187.06 | 买入区166.12~174.43 | 信号:持有", - "new_action": "盈利良好 | 止损163.14 | 目标187.06 | 买入区165.51~173.79 | 信号:持有", - "reason": "技术面重评: 止损163.7→163.14 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:35", - "old_action": "盈利良好 | 止损163.14 | 目标187.06 | 买入区165.51~173.79 | 信号:持有", - "new_action": "盈利良好 | 止损151.92 | 目标180.38 | 买入区165.51~173.79 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利良好 | 止损151.92 | 目标180.38 | 买入区165.51~173.79 | 信号:持有", - "new_action": "盈利良好 | 止损163.14 | 目标192.67 | 买入区165.51~173.79 | 信号:持有", - "reason": "技术面重评: 止损151.92→163.14, 止盈180.38→192.67 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利良好 | 止损163.14 | 目标192.67 | 买入区165.51~173.79 | 信号:持有", - "new_action": "盈利良好 | 止损161.41 | 目标192.67 | 买入区165.51~173.79 | 信号:持有", - "reason": "技术面重评: 止损163.14→161.41 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利良好 | 止损161.41 | 目标192.67 | 买入区165.51~173.79 | 信号:持有", - "new_action": "盈利良好 | 止损153.13 | 目标175.76 | 买入区166.06~174.36 | 信号:持有", - "reason": "技术面重评: 止损161.41→153.13, 止盈192.67→175.76 | 形态:倒T线/射击之星/neutral 量价:买卖均衡 强撑:151.37 弱撑:166.06 弱压:175.12 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利良好 | 止损153.13 | 目标175.76 | 买入区166.06~174.36 | 信号:持有", - "new_action": "盈利良好 | 止损167.75 | 目标185.01 | 买入区167.88~176.27 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,持有: 止损153.13→167.75, 止盈175.76→185.01 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:151.37 弱撑:167.88 弱压:177.63 强压", - "trigger": "技术信号变化: 大盘中性,行业中性,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利良好 | 止损167.75 | 目标190.23 | 买入区162.07~170.17 | 信号:持有", - "new_action": "盈利良好 | 止损147.72 | 目标171.21 | 买入区160.56~168.59 | 信号:持有", - "reason": "技术面重评: 止损167.75→147.72, 止盈190.23→171.21 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:155.65 弱撑:160.56 弱压:172.94 强压:19", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利良好 | 止损147.72 | 目标171.21 | 买入区160.56~168.59 | 信号:持有", - "new_action": "盈利持有 | 止损145.02 | 目标164.36 | 买入区158.07~165.97 | 信号:持有", - "reason": "技术面重评: 止损147.72→145.02, 止盈171.21→164.36 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:155.65 弱撑:158.07 弱压:172.94 强压:1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | 止损145.02 | 目标164.36 | 买入区158.07~165.97 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损167.87 | 目标184.12 | 买入区162.51~170.64 | 信号:持有", - "reason": "价格变动(162.51→173.49): 止损145.02→167.87, 止盈164.36→184.12 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:181.32 强压:1", - "trigger": "价格变动(162.51→173.49)" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损167.87 | 目标184.12 | 买入区162.51~170.64 | 信号:持有", - "new_action": "盈利良好 | 止损172.96 | 目标216.73 | 买入区162.51~170.64 | 信号:持有", - "reason": "技术面重评: 止损167.87→172.96, 止盈184.12→216.73 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:184.36 强压:2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "盈利良好 | 止损172.96 | 目标216.73 | 买入区162.51~170.64 | 信号:持有", - "new_action": "盈利良好 | 止损168.02 | 目标210.42 | 买入区162.51~170.64 | 信号:持有", - "reason": "技术面重评: 止损172.96→168.02, 止盈216.73→210.42 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:184.36 强压:2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "盈利良好 | 止损168.02 | 目标210.42 | 买入区162.51~170.64 | 信号:持有", - "new_action": "盈利良好 | 止损168.02 | 目标213.58 | 买入区162.51~170.64 | 信号:持有", - "reason": "技术面重评: 止盈210.42→213.58 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:184.36 强压:2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 止损168.02 | 目标213.58 | 买入区162.51~170.64 | 信号:持有", - "new_action": "盈利良好 | 止损172.96 | 目标219.99 | 买入区162.51~170.64 | 信号:持有", - "reason": "技术面重评: 止损168.02→172.96, 止盈213.58→219.99 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:146.26 弱撑:162.51 弱压:184.36 强压:2", - "trigger": "技术面重评" - } - ] - }, - { - "code": "601318", - "name": "中国平安", - "price": 49.12, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标53.61 | 止损47.65 | 买入区48.14~50.03 | 信号:观望", - "stop_loss": 47.65, - "entry_low": 48.14, - "entry_high": 50.03, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:45.75 弱撑:48.47 弱压:50.4 强压:53.61", - "timing_signal": "观望", - "rr_ratio": 3.05, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "大盘上涨比13.3%", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-24 14:24", - "take_profit": 53.61, - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标53.6 | 止损47.64 | 买入区48.13~50.02 | 信号:观望", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:45.74 弱撑:48.46 弱压:50.4 强压:53.", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利持有 | 目标53.59 | 止损47.62 | 买入区48.11~50.01 | 信号:观望", - "new_action": "盈利持有 | 目标53.59 | 止损47.63 | 买入区48.12~50.01 | 信号:观望", - "reason": "技术面重评: 止损47.62→47.63 | 形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:45.74 弱撑:48.45 弱压:50.4 强压:53.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "601899", - "name": "紫金矿业", - "price": 27.65, - "cost": 40.27, - "shares": 2400, - "avg_price": 0, - "action": "深套持有 | 深套持有 | 止损22.79 | 目标30.99 | 买入区24.88~29.03 | 信号:持有", - "stop_loss": 22.79, - "entry_low": 24.88, - "entry_high": 29.03, - "tech_snapshot": "形态:带上影阳线/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.33 弱压:27.97 强压:30.53", - "timing_signal": "持有", - "rr_ratio": 0.69, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业工业金属-0.0%,中性 | 大盘仅13%个股上涨", - "stock_category": "深套", - "position_advice": "不补不割", - "time_horizon": "长期", - "created_at": "2026-06-18 17:15", - "take_profit": 30.99, - "updated_reason": "技术面重评: 止损22.74→22.79 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.33 弱压:27.97 强压:30.", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损25.08 | 目标33.46 | 买入区26.56~30.99 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.87 弱压:30.57 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损25.08 | 目标33.46 | 买入区26.56~30.99 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损25.19 | 目标33.47 | 买入区26.67~31.11 | 信号:持有", - "reason": "技术面重评: 止损25.08→25.19, 止盈33.46→33.97 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.95 弱压:30.65 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损25.19 | 目标33.47 | 买入区26.67~31.11 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损25.24 | 目标33.47 | 买入区26.72~31.17 | 信号:持有", - "reason": "技术面重评: 止损25.19→25.24 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:36", - "old_action": "深套持有 | 深套持有 | 止损25.24 | 目标33.47 | 买入区26.72~31.17 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.52 | 目标30.57 | 买入区26.72~31.17 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "深套持有 | 深套持有 | 止损22.52 | 目标30.57 | 买入区26.72~31.17 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损25.24 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", - "reason": "技术面重评: 止损22.52→25.24, 止盈30.57→34.47 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "深套持有 | 深套持有 | 止损25.24 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", - "reason": "技术面重评: 止损25.24→24.48 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损24.92 | 目标32.66 | 买入区26.68~31.12 | 信号:持有", - "reason": "技术面重评: 止损24.48→24.92, 止盈34.47→32.66 | 形态:带下影阳线/neutral 量价:主动买盘占优 强撑:26.72 弱撑:28.85 弱压:30.13 强压:32.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "深套持有 | 深套持有 | 止损24.92 | 目标32.66 | 买入区26.68~31.12 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损27.16 | 目标33.64 | 买入区27.4~31.96 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,低估值,蓝筹,持有: 止损24.92→27.16, 止盈32.66→33.64 | 形态:带下影阳线/neutral 量价:主动买盘占优 强撑:26.72 弱撑:29.16 弱压:31.11 强压:32.", - "trigger": "技术信号变化: 大盘中性,行业偏强,低估值,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "深套持有 | 深套持有 | 止损27.16 | 目标33.64 | 买入区27.4~31.96 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.13 | 目标29.15 | 买入区25.47~29.72 | 信号:持有", - "reason": "价格变动(30.44→28.3): 止损27.16→22.13, 止盈33.64→29.15 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:27.4 弱撑:27.7 弱压:30.44 强压:32.3", - "trigger": "价格变动(30.44→28.3)" - }, - { - "date": "2026-06-24 09:01", - "old_action": "深套持有 | 深套持有 | 止损22.13 | 目标29.15 | 买入区25.47~29.72 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损23.01 | 目标27.79 | 买入区24.98~29.14 | 信号:持有", - "reason": "技术面重评: 止损22.13→23.01, 止盈29.15→27.79 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:24.75 弱撑:26.93 弱压:30.44 强压:32", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "深套持有 | 深套持有 | 止损23.01 | 目标27.79 | 买入区24.98~29.14 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.65 | 目标30.53 | 买入区24.72~28.84 | 信号:持有", - "reason": "技术信号变化: 持有: 止损23.01→22.65, 止盈27.79→30.53 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.21 弱压:27.85 强压:", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:17", - "old_action": "深套持有 | 深套持有 | 止损22.65 | 目标30.53 | 买入区24.72~28.84 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.6 | 目标30.53 | 买入区24.67~28.78 | 信号:持有", - "reason": "技术面重评: 止损22.65→22.6 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.17 弱压:27.81 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "深套持有 | 深套持有 | 止损22.6 | 目标30.53 | 买入区24.67~28.78 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.63 | 目标30.53 | 买入区24.7~28.82 | 信号:持有", - "reason": "技术面重评: 止损22.6→22.63 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.22 弱压:27.86 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "深套持有 | 深套持有 | 止损22.63 | 目标30.53 | 买入区24.7~28.82 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.68 | 目标30.53 | 买入区24.75~28.88 | 信号:持有", - "reason": "技术面重评: 止损22.63→22.68 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.23 弱压:27.87 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:00", - "old_action": "深套持有 | 深套持有 | 止损22.68 | 目标30.53 | 买入区24.75~28.88 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损21.77 | 目标29.0 | 买入区24.75~28.88 | 信号:持有", - "reason": "技术面重评: 止损22.68→21.77, 止盈30.53→29.0 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.23 弱压:27.87 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "深套持有 | 深套持有 | 止损21.77 | 目标29.0 | 买入区24.75~28.88 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损21.93 | 目标29.44 | 买入区24.94~29.1 | 信号:持有", - "reason": "技术面重评: 止损21.77→21.93, 止盈29.0→29.44 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.36 弱压:28.0 强压:30.5", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "深套持有 | 深套持有 | 止损21.93 | 目标29.44 | 买入区24.94~29.1 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.76 | 目标30.99 | 买入区24.84~28.98 | 信号:持有", - "reason": "技术面重评: 止损21.93→22.76, 止盈29.44→30.99 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.29 弱压:27.93 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "深套持有 | 深套持有 | 止损22.76 | 目标30.99 | 买入区24.84~28.98 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.74 | 目标30.99 | 买入区24.82~28.96 | 信号:持有", - "reason": "技术面重评: 止损22.76→22.74 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.26 弱压:27.9 强压:3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "深套持有 | 深套持有 | 止损22.74 | 目标30.99 | 买入区24.82~28.96 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损22.79 | 目标30.99 | 买入区24.88~29.03 | 信号:持有", - "reason": "技术面重评: 止损22.74→22.79 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:24.98 弱撑:27.33 弱压:27.97 强压:30.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "603259", - "name": "药明康德", - "price": 115.4, - "cost": 96.2, - "shares": 400, - "avg_price": 0, - "action": "盈利良好 | 止损106.34 | 目标136.95 | 买入区106.31~111.63 | 信号:持有", - "stop_loss": 106.34, - "entry_low": 106.31, - "entry_high": 111.63, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.26 强压:134.93", - "timing_signal": "持有", - "rr_ratio": 3.38, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业医疗服务+0.5%,中性 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-18 17:15", - "take_profit": 136.95, - "updated_reason": "技术面重评: 止损111.46→106.34, 止盈140.97→136.95 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.26 强压:13", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标108.02 | 买入区98.2~103.11 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.32 弱撑:98.2 弱压:105.4 强压:108.0", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 23:36", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标108.02 | 买入区98.2~103.11 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标109.64 | 买入区98.2~103.11 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标109.64 | 买入区98.2~103.11 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标111.26 | 买入区98.2~103.11 | 信号:持有", - "reason": "技术面重评: 止损97.16→98.2, 止盈109.64→111.26 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.35 弱撑:98.2 弱压:105.46 强压:108.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标111.26 | 买入区98.2~103.11 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标111.26 | 买入区98.2~103.11 | 信号:持有", - "reason": "技术面重评: 止损98.2→97.16 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.35 弱撑:98.2 弱压:105.46 强压:108.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标111.26 | 买入区98.2~103.11 | 信号:持有", - "new_action": "盈利良好 | 止损93.96 | 目标107.3 | 买入区102.28~106.93 | 信号:持有", - "reason": "技术面重评: 止损97.16→93.96, 止盈111.26→107.3 | 形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:93.93 弱撑:102.28 弱压:105.18 强压:1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利良好 | 止损93.96 | 目标107.3 | 买入区102.28~106.93 | 信号:持有", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.5),不建议加仓 | 止损102.72 | 目标112.99 | 买入区102.72~107.85 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,低估值,持有: 止损93.96→102.72, 止盈107.3→112.99 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:93.29 弱撑:102.72 弱压:108.63 强压:11", - "trigger": "技术信号变化: 大盘中性,行业中性,低估值,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利良好 | ⚠️盈亏比偏低(1:1.5),不建议加仓 | 止损102.72 | 目标112.99 | 买入区102.72~107.85 | 信号:持有", - "new_action": "盈利良好 | 止损104.51 | 目标117.51 | 买入区106.25~111.01 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,低估值,持有: 止损102.72→104.51, 止盈112.99→117.51 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:96.15 弱撑:106.25 弱压:109.29 强压:", - "trigger": "技术信号变化: 大盘中性,行业偏强,低估值,持有" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利良好 | 止损104.51 | 目标117.51 | 买入区106.25~111.01 | 信号:持有", - "new_action": "盈利良好 | 止损103.12 | 目标112.81 | 买入区104.93~110.18 | 信号:持有", - "reason": "技术面重评: 止损104.51→103.12, 止盈117.51→112.81 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:96.15 弱撑:104.93 弱压:108.53 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利良好 | 止损103.12 | 目标112.81 | 买入区104.93~110.18 | 信号:持有", - "new_action": "盈利良好 | 止损113.15 | 目标139.5 | 买入区106.31~111.63 | 信号:持有", - "reason": "价格变动(106.31→116.94): 止损103.12→113.15, 止盈112.81→139.5 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:120.29 强压:13", - "trigger": "价格变动(106.31→116.94)" - }, - { - "date": "2026-06-24 12:01", - "old_action": "盈利良好 | 止损113.15 | 目标139.5 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损107.76 | 目标135.44 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损113.15→107.76, 止盈139.5→135.44 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:120.29 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "盈利良好 | 止损107.76 | 目标135.44 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损107.16 | 目标137.21 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损107.76→107.16, 止盈135.44→137.21 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.76 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利良好 | 止损107.16 | 目标137.21 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损106.58 | 目标137.07 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损107.16→106.58, 止盈137.21→137.07 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.49 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 止损106.58 | 目标137.07 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损111.45 | 目标140.92 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损106.58→111.45, 止盈137.07→140.92 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.0 强压:134", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利良好 | 止损111.45 | 目标140.92 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损111.3 | 目标140.92 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损111.45→111.3 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.01 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:40", - "old_action": "盈利良好 | 止损111.3 | 目标140.92 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损111.46 | 目标140.97 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损111.3→111.46, 止盈140.92→140.97 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.09 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利良好 | 止损111.46 | 目标140.97 | 买入区106.31~111.63 | 信号:持有", - "new_action": "盈利良好 | 止损106.34 | 目标136.95 | 买入区106.31~111.63 | 信号:持有", - "reason": "技术面重评: 止损111.46→106.34, 止盈140.97→136.95 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:95.68 弱撑:106.31 弱压:119.26 强压:13", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688411", - "name": "海博思创", - "price": 266.19, - "cost": 266.89, - "shares": 200, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损206.87 | 目标300.1 | 买入区261.3~266.69 | 信号:加仓", - "stop_loss": 206.87, - "entry_low": 261.3, - "entry_high": 266.69, - "tech_snapshot": "形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.15 弱撑:261.3 弱压:272.24 强压:311.23", - "timing_signal": "加仓", - "rr_ratio": 1.02, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.0),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "知微", - "sector_context": "行业光伏设备下跌-1.1%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-24 11:06", - "take_profit": 300.1, - "updated_reason": "技术面重评: 止损198.33→206.87, 止盈284.39→300.1 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.15 弱撑:261.3 弱压:272.24 强压:311", - "changelog": [ - { - "date": "2026-06-24 11:06", - "old_action": "买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损198.18 | 目标280.03 | 买入区261.14~266.61 | 信号:加仓", - "reason": "技术信号变化: 加仓: 止损252→198.18, 止盈295→280.03 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.07 弱撑:261.14 弱压:272.24 强压:31", - "trigger": "技术信号变化: 加仓" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损198.18 | 目标280.03 | 买入区261.14~266.61 | 信号:加仓", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损197.82 | 目标279.68 | 买入区260.34~266.21 | 信号:加仓", - "reason": "技术面重评: 止损198.18→197.82, 止盈280.03→279.68 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:221.67 弱撑:260.34 弱压:272.24 强压:3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损197.82 | 目标279.68 | 买入区260.34~266.21 | 信号:加仓", - "new_action": "盈利持有 | 目标311.14 | 止损229.99 | 买入区260.38~271.0 | 信号:买入", - "reason": "技术信号变化: 买入: 止损197.82→229.99 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.06 弱撑:261.1 弱压:272.24 强压:311", - "trigger": "技术信号变化: 买入" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利持有 | 目标311.14 | 止损229.99 | 买入区260.38~271.0 | 信号:买入", - "new_action": "盈利持有 | 目标311.23 | 止损230.4 | 买入区260.85~271.49 | 信号:买入", - "reason": "技术面重评: 止损229.99→230.4 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.15 弱撑:261.28 弱压:272.24 强压:31", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:01", - "old_action": "盈利持有 | 目标311.23 | 止损258.18 | 买入区260.85~271.49 | 信号:买入", - "new_action": "盈利持有 | 目标311.23 | 止损240.42 | 买入区260.85~271.49 | 信号:买入", - "reason": "技术面重评: 止损258.18→240.42 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.15 弱撑:261.28 弱压:272.24 强压:31", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "盈利持有 | 目标311.23 | 止损240.42 | 买入区260.85~271.49 | 信号:买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损207.17 | 目标300.42 | 买入区261.95~267.02 | 信号:持有", - "reason": "技术信号变化: 持有: 止损240.42→207.17, 止盈311.23→300.42 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.48 弱撑:261.95 弱压:272.24 强压:31", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损207.17 | 目标300.42 | 买入区261.95~267.02 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损207.54 | 目标300.8 | 买入区262.74~267.41 | 信号:持有", - "reason": "技术面重评: 止损207.17→207.54, 止盈300.42→300.8 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.87 弱撑:262.74 弱压:273.03 强压:31", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损207.54 | 目标300.8 | 买入区262.74~267.41 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.68 | 目标284.75 | 买入区262.24~267.17 | 信号:持有", - "reason": "技术面重评: 止损207.54→198.68, 止盈300.8→284.75 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.63 弱撑:262.24 弱压:272.53 强压:31", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.68 | 目标284.75 | 买入区262.24~267.17 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.51 | 目标284.58 | 买入区261.89~266.99 | 信号:持有", - "reason": "技术面重评: 止损198.68→198.51, 止盈284.75→284.58 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.45 弱撑:261.89 弱压:272.24 强压:31", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:41", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.51 | 目标284.58 | 买入区261.89~266.99 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.33 | 目标284.39 | 买入区261.47~266.78 | 信号:加仓", - "reason": "技术信号变化: 加仓: 止损198.51→198.33, 止盈284.58→284.39 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.24 弱撑:261.47 弱压:272.24 强压:31", - "trigger": "技术信号变化: 加仓" - }, - { - "date": "2026-06-24 16:45", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损198.33 | 目标284.39 | 买入区261.47~266.78 | 信号:加仓", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损206.87 | 目标300.1 | 买入区261.3~266.69 | 信号:加仓", - "reason": "技术面重评: 止损198.33→206.87, 止盈284.39→300.1 | 形态:带下影阴线/neutral 量价:买卖均衡 强撑:222.15 弱撑:261.3 弱压:272.24 强压:311", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688630", - "name": "芯碁微装", - "price": 513.88, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标555.39 | 止损431.04 | 买入区503.6~499.89 | 信号:买入", - "stop_loss": 431.04, - "entry_low": 503.6, - "entry_high": 499.89, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:434.79 弱撑:462.89 弱压:534.64 强压:555.39", - "timing_signal": "买入", - "rr_ratio": 0.81, - "status": "review", - "note": "⚠️盈亏比不足1:1.5,不建议买入", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业专用设备下跌-1.5%,适度防御 | 大盘仅13%个股上涨", - "stock_category": "中短线", - "position_advice": "中等仓位", - "time_horizon": "2~6周", - "created_at": "2026-06-24 14:24", - "take_profit": 555.39, - "updated_reason": "技术面重评: 止损413.08→431.04 | 形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:434.79 弱撑:462.89 弱压:534.64 强压", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标550.24 | 止损413.08 | 买入区502.57~497.83 | 信号:买入", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:435.62 弱撑:462.89 弱压:530.32 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:41", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标550.24 | 止损413.08 | 买入区502.57~497.83 | 信号:买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标554.61 | 止损413.08 | 买入区500.89~499.58 | 信号:买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标554.61 | 止损413.08 | 买入区500.89~499.58 | 信号:买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标555.39 | 止损431.04 | 买入区503.6~499.89 | 信号:买入", - "reason": "技术面重评: 止损413.08→431.04 | 形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:434.79 弱撑:462.89 弱压:534.64 强压", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688639", - "name": "华恒生物", - "price": 21.4, - "cost": 21.51, - "shares": 2800, - "avg_price": 0, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损18.27 | 目标24.6 | 买入区21.06~21.54 | 信号:持有", - "stop_loss": 18.27, - "entry_low": 21.06, - "entry_high": 21.54, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.84 弱撑:21.06 弱压:21.89 强压:24.24", - "timing_signal": "持有", - "rr_ratio": 1.11, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.1),不建议加仓", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业化学制品-0.6%,中性 | 大盘仅13%个股上涨", - "stock_category": "弱势", - "position_advice": "减仓或观望", - "time_horizon": "观望", - "created_at": "2026-06-18 17:15", - "take_profit": 24.6, - "updated_reason": "技术面重评: 止损16.82→18.27, 止盈22.15→24.6 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.84 弱撑:21.06 弱压:21.89 强压:24", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损20.19 | 盈22.11 | 买20.39~20.96", - "reason": "初始策略创建 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.47 弱撑:20.38 弱压:21.22 强压:22.11", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损20.19 | 盈22.11 | 买20.39~20.96", - "new_action": "盈利持有 | 止损参考20.2 | 买入区20.4~20.96", - "reason": "技术面重评: 止损20.19→20.2 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.47 弱撑:20.39 弱压:21.23 强压:22.11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考20.2 | 买入区20.4~20.96", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损参考20.24 | 买入区20.45~21.0", - "reason": "技术面重评: 止损20.2→20.24 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.49 弱撑:20.42 弱压:21.26 强压:22.13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 23:36", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损参考20.24 | 买入区20.45~21.0", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损19.63 | 买入区20.45~21.0", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损19.63 | 买入区20.45~21.0", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损20.24 | 买入区20.45~21.0", - "reason": "技术面重评: 止损19.63→20.24 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.49 弱撑:20.42 弱压:21.26 强压:22.13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损20.24 | 买入区20.45~21.0", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损20.03 | 买入区20.45~21.0", - "reason": "技术面重评: 止损20.24→20.03 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.49 弱撑:20.42 弱压:21.26 强压:22.13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损20.03 | 买入区20.45~21.0", - "new_action": "盈利持有 | 目标22.22 | 止损19.17 | 买入区19.96~20.74", - "reason": "技术面重评: 止损20.03→19.17 | 形态:带下影阴线/neutral 量价:主动买盘占优 强撑:18.4 弱撑:19.83 弱压:20.87 强压:22.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利持有 | 目标22.27 | 止损19.76 | 买入区19.96~20.76 | 信号:弱势持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标22.5 | 止损20.37 | 买入区20.58~21.11 | 信号:弱势持有", - "reason": "技术面重评: 止损19.76→20.37 | 形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:18.68 弱撑:20.18 弱压:21.41 强压:2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标22.5 | 止损20.37 | 买入区20.58~21.11 | 信号:弱势持有", - "new_action": "盈利持有 | 目标24.5 | 止损21.27 | 买入区21.49~22.37", - "reason": "价格变动(21.0→21.93): 止损20.37→21.27 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:19.1 弱撑:21.0 弱压:22.6 强压:24.5", - "trigger": "价格变动(21.0→21.93)" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利持有 | 目标24.5 | 止损21.27 | 买入区21.49~22.37", - "new_action": "盈利持有 | 目标24.46 | 止损21.0 | 买入区21.39~22.27", - "reason": "技术信号变化: 大盘中性,行业中性: 止损21.27→21.0 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:19.06 弱撑:21.0 弱压:22.54 强压:24.4", - "trigger": "技术信号变化: 大盘中性,行业中性" - }, - { - "date": "2026-06-24 11:06", - "old_action": "盈利持有 | 目标24.46 | 止损21.0 | 买入区21.39~22.27", - "new_action": "盈利持有 | 目标24.28 | 止损18.62 | 买入区21.08~21.94 | 信号:关注", - "reason": "技术信号变化: 关注: 止损21.0→18.62 | 形态:带下影阴线/neutral 量价:主动买盘占优 强撑:18.88 弱撑:21.13 弱压:21.96 强压:24.", - "trigger": "技术信号变化: 关注" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利持有 | 目标24.28 | 止损18.62 | 买入区21.08~21.94 | 信号:关注", - "new_action": "盈利持有 | 目标24.23 | 止损18.49 | 买入区20.93~21.79 | 信号:关注", - "reason": "技术面重评: 止损18.62→18.49 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.83 弱撑:21.02 弱压:21.85 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利持有 | 目标24.23 | 止损20.71 | 买入区20.92~21.78 | 信号:关注", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.82 | 目标21.82 | 买入区21.06~21.55 | 信号:持有", - "reason": "技术信号变化: 持有: 止损20.71→16.82, 止盈24.23→21.82 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.85 弱撑:21.06 弱压:21.89 强压:24", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-24 11:31", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.82 | 目标21.82 | 买入区21.06~21.55 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.83 | 目标21.83 | 买入区21.08~21.56 | 信号:持有", - "reason": "技术面重评: 止损16.82→16.83, 止盈21.82→21.83 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.86 弱撑:21.08 弱压:21.91 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:01", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.83 | 目标21.83 | 买入区21.08~21.56 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.56 | 目标23.05 | 买入区21.08~21.56 | 信号:持有", - "reason": "技术面重评: 止损16.83→17.56, 止盈21.83→23.05 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.86 弱撑:21.08 弱压:21.91 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.56 | 目标23.05 | 买入区21.08~21.56 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.53 | 目标23.36 | 买入区21.02~21.53 | 信号:持有", - "reason": "技术面重评: 止损17.56→17.53, 止盈23.05→23.36 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.83 弱撑:21.02 弱压:21.85 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.53 | 目标23.36 | 买入区21.02~21.53 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.54 | 目标23.37 | 买入区21.04~21.54 | 信号:持有", - "reason": "技术面重评: 止损17.53→17.54, 止盈23.36→23.37 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.84 弱撑:21.04 弱压:21.87 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损17.54 | 目标23.37 | 买入区21.04~21.54 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.83 | 目标22.16 | 买入区21.08~21.56 | 信号:持有", - "reason": "技术面重评: 止损17.54→16.83, 止盈23.37→22.16 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.86 弱撑:21.08 弱压:21.91 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.83 | 目标22.16 | 买入区21.08~21.56 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.81 | 目标22.14 | 买入区21.06~21.54 | 信号:持有", - "reason": "技术面重评: 止损16.83→16.81, 止盈22.16→22.14 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.84 弱撑:21.06 弱压:21.89 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:41", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.81 | 目标22.14 | 买入区21.06~21.54 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.82 | 目标22.15 | 买入区21.06~21.55 | 信号:持有", - "reason": "技术面重评: 止损16.81→16.82, 止盈22.14→22.15 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.85 弱撑:21.06 弱压:21.89 强压:24", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损16.82 | 目标22.15 | 买入区21.06~21.55 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损18.27 | 目标24.6 | 买入区21.06~21.54 | 信号:持有", - "reason": "技术面重评: 止损16.82→18.27, 止盈22.15→24.6 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:18.84 弱撑:21.06 弱压:21.89 强压:24", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688795", - "name": "摩尔线程-U", - "price": 704.8, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标831.78 | 止损683.66 | 买入区690.7~718.9 | 信号:观望", - "stop_loss": 683.66, - "entry_low": 690.7, - "entry_high": 718.9, - "tech_snapshot": "形态:带下影阳线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.67 弱压:725.25 强压:831.78", - "timing_signal": "观望", - "rr_ratio": 4.51, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业半导体大涨+3.8%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-24 14:24", - "take_profit": 831.78, - "updated_reason": "技术面重评: 止损676.67→683.66 | 形态:带下影阳线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.67 弱压:725.25 强压:", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标832.33 | 止损657.44 | 买入区692.44~720.7 | 信号:观望", - "reason": "初始策略创建 | 形态:带下影阳线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:677.77 弱压:726.35 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:41", - "old_action": "盈利持有 | 目标831.6 | 止损676.33 | 买入区690.06~718.22 | 信号:观望", - "new_action": "盈利持有 | 目标831.52 | 止损655.87 | 买入区690.06~718.22 | 信号:观望", - "reason": "技术面重评: 止损676.33→655.87 | 形态:锤子线/T字线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.15 弱压:724.73 强", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标831.78 | 止损676.67 | 买入区690.7~718.9 | 信号:观望", - "new_action": "盈利持有 | 目标831.78 | 止损683.66 | 买入区690.7~718.9 | 信号:观望", - "reason": "技术面重评: 止损676.67→683.66 | 形态:带下影阳线/neutral 量价:主动卖盘占优 强撑:563.22 弱撑:676.67 弱压:725.25 强压:", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688802", - "name": "沐曦股份-U", - "price": 770.19, - "cost": 0, - "shares": 0, - "avg_price": 0, - "action": "盈利持有 | 目标882.43 | 止损747.08 | 买入区754.79~785.59", - "stop_loss": 747.08, - "entry_low": 754.79, - "entry_high": 785.59, - "tech_snapshot": "形态:带下影阳线/neutral 量价:数据不足 强撑:634.43 弱撑:737.86 弱压:790.76 强压:882.43", - "timing_signal": "信号不充分", - "rr_ratio": 3.47, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "自选策略", - "source": "auto", - "sector_context": "行业半导体大涨+3.8%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "中长线", - "position_advice": "正常配置", - "time_horizon": "数月~1年", - "created_at": "2026-06-24 14:24", - "take_profit": 882.43, - "updated_reason": "技术面重评: 止损714.64→747.08 | 形态:带下影阳线/neutral 量价:数据不足 强撑:634.43 弱撑:737.86 弱压:790.76 强压:88", - "changelog": [ - { - "date": "2026-06-24 14:24", - "old_action": "", - "new_action": "盈利持有 | 目标882.03 | 止损714.95 | 买入区753.31~784.05", - "reason": "初始策略创建 | 形态:带下影阳线/neutral 量价:数据不足 强撑:634.03 弱撑:737.06 弱压:789.96 强压:88", - "trigger": "初始创建" - }, - { - "date": "2026-06-24 14:41", - "old_action": "盈利持有 | 目标882.03 | 止损714.95 | 买入区753.31~784.05", - "new_action": "盈利持有 | 目标881.87 | 止损714.64 | 买入区752.99~783.73", - "reason": "技术信号变化: 信号不充分: 止损714.95→714.64 | 形态:带下影阳线/neutral 量价:数据不足 强撑:633.87 弱撑:736.74 弱压:789.64 强压:88", - "trigger": "技术信号变化: 信号不充分" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利持有 | 目标881.87 | 止损714.64 | 买入区752.99~783.73", - "new_action": "盈利持有 | 目标882.43 | 止损747.08 | 买入区754.79~785.59", - "reason": "技术面重评: 止损714.64→747.08 | 形态:带下影阳线/neutral 量价:数据不足 强撑:634.43 弱撑:737.86 弱压:790.76 强压:88", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688981", - "name": "中芯国际", - "price": 151.53, - "cost": 126.07, - "shares": 300, - "avg_price": 0, - "action": "盈利良好 | 止损146.61 | 目标177.77 | 买入区141.7~148.78 | 信号:持有", - "stop_loss": 146.61, - "entry_low": 141.7, - "entry_high": 148.78, - "tech_snapshot": "形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.75 弱撑:141.7 弱压:158.15 强压:170.04", - "timing_signal": "持有", - "rr_ratio": 2.44, - "status": "updated", - "note": "", - "timestamp": "2026-06-24 16:45", - "updated_at": "2026-06-24 16:45", - "type": "持仓策略", - "source": "auto", - "sector_context": "行业半导体大涨+3.8%,可适度积极 | 大盘仅13%个股上涨", - "stock_category": "短炒", - "position_advice": "小仓快进快出", - "time_horizon": "数日~2周", - "created_at": "2026-06-18 23:02", - "take_profit": 177.77, - "updated_reason": "技术面重评: 止损139.64→146.61, 止盈172.59→177.77 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.75 弱撑:141.7 弱压:158.15 强压:170", - "changelog": [ - { - "date": "2026-06-18 23:02", - "old_action": "", - "new_action": "盈利良好 | 止损134.18 | 目标159.66 | 买入区134.18~140.89 | 信号:持有", - "reason": "初始策略创建 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:15", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 23:36", - "old_action": "盈利良好 | 止损134.18 | 目标159.66 | 买入区134.18~140.89 | 信号:持有", - "new_action": "盈利良好 | 止损132.76 | 目标162.05 | 买入区134.18~140.89 | 信号:持有", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 11:24", - "old_action": "盈利良好 | 止损132.76 | 目标162.05 | 买入区134.18~140.89 | 信号:持有", - "new_action": "盈利良好 | 止损134.18 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", - "reason": "技术面重评: 止损132.76→134.18, 止盈162.05→164.45 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:15", - "trigger": "技术面重评" - }, - { - "date": "2026-06-19 15:37", - "old_action": "盈利良好 | 止损134.18 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", - "new_action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", - "reason": "技术面重评: 止损134.18→132.76 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:15", - "trigger": "技术面重评" - }, - { - "date": "2026-06-22 12:01", - "old_action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", - "new_action": "盈利良好 | 止损134.66 | 目标167.33 | 买入区139.41~146.38 | 信号:持有", - "reason": "技术面重评: 止损132.76→134.66, 止盈164.45→167.33 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:120.07 弱撑:139.41 弱压:147.41 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-23 09:01", - "old_action": "盈利良好 | 止损134.66 | 目标167.33 | 买入区139.41~146.38 | 信号:持有", - "new_action": "盈利良好 | 止损141.22 | 目标168.16 | 买入区140.7~147.73 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有: 止损134.66→141.22, 止盈167.33→168.16 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:120.9 弱撑:140.7 弱压:149.06 强压:168.", - "trigger": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有" - }, - { - "date": "2026-06-23 12:01", - "old_action": "盈利良好 | 止损141.22 | 目标168.16 | 买入区140.7~147.73 | 信号:持有", - "new_action": "盈利良好 | 止损139.7 | 目标168.27 | 买入区140.39~147.41 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有: 止损141.22→139.7, 止盈168.16→168.27 | 形态:倒T线/射击之星/neutral 量价:买卖均衡 强撑:120.41 弱撑:140.39 弱压:147.98 强压", - "trigger": "技术信号变化: 大盘中性,行业偏强,高估值,蓝筹,持有" - }, - { - "date": "2026-06-24 09:01", - "old_action": "盈利良好 | 止损139.7 | 目标168.27 | 买入区140.39~147.41 | 信号:持有", - "new_action": "盈利良好 | 止损137.45 | 目标160.44 | 买入区138.1~145.0 | 信号:持有", - "reason": "技术信号变化: 大盘中性,行业中性,高估值,蓝筹,持有: 止损139.7→137.45, 止盈168.27→160.44 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:119.27 弱撑:138.1 弱压:146.8 强压:1", - "trigger": "技术信号变化: 大盘中性,行业中性,高估值,蓝筹,持有" - }, - { - "date": "2026-06-24 11:07", - "old_action": "盈利良好 | 止损137.45 | 目标160.44 | 买入区138.1~145.0 | 信号:持有", - "new_action": "盈利良好 | 止损137.58 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "reason": "价格变动(141.7→149.3): 止损137.45→137.58, 止盈160.44→170.04 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.44 弱撑:141.7 弱压:154.82 强压:17", - "trigger": "价格变动(141.7→149.3)" - }, - { - "date": "2026-06-24 11:17", - "old_action": "盈利良好 | 止损137.58 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损138.41 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损137.58→138.41 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.53 弱撑:141.7 弱压:154.99 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:28", - "old_action": "盈利良好 | 止损138.41 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损140.62 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损138.41→140.62 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:120.27 弱撑:141.7 弱压:157.68 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 11:31", - "old_action": "盈利良好 | 止损140.62 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损142.12 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损140.62→142.12 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.75 弱撑:141.7 弱压:158.85 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 12:01", - "old_action": "盈利良好 | 止损142.12 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损144.97 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损142.12→144.97 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.75 弱撑:141.7 弱压:158.85 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:17", - "old_action": "盈利良好 | 止损144.97 | 目标170.04 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损145.31 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损144.97→145.31, 止盈170.04→172.59 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.76 弱撑:141.7 弱压:159.47 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 13:30", - "old_action": "盈利良好 | 止损145.31 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损146.05 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损145.31→146.05 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.2 弱撑:141.7 弱压:161.05 强压:170", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:15", - "old_action": "盈利良好 | 止损146.05 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损139.6 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损146.05→139.6 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.71 弱撑:141.7 弱压:158.05 强压:170", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:24", - "old_action": "盈利良好 | 止损139.6 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损140.26 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损139.6→140.26 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.81 弱撑:141.7 弱压:158.26 强压:170", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 14:41", - "old_action": "盈利良好 | 止损140.26 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损139.64 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损140.26→139.64 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.7 弱撑:141.7 弱压:158.03 强压:170.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-24 16:45", - "old_action": "盈利良好 | 止损139.64 | 目标172.59 | 买入区141.7~148.78 | 信号:持有", - "new_action": "盈利良好 | 止损146.61 | 目标177.77 | 买入区141.7~148.78 | 信号:持有", - "reason": "技术面重评: 止损139.64→146.61, 止盈172.59→177.77 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:117.75 弱撑:141.7 弱压:158.15 强压:170", - "trigger": "技术面重评" - } - ] - } - ], - "total": 39, - "regenerated_at": "2026-06-24 16:45" -} \ No newline at end of file diff --git a/data/decisions.json.bak.v3 b/data/decisions.json.bak.v3 deleted file mode 100644 index 8af5a96d..00000000 --- a/data/decisions.json.bak.v3 +++ /dev/null @@ -1,2005 +0,0 @@ -{ - "decisions": [ - { - "code": "000700", - "name": "模塑科技", - "price": 15.45, - "cost": 0, - "action": "盈利持有 | 止损参考14.99 | 买入区15.14~15.76 | 信号:接近支撑位,关注", - "stop_loss": 14.99, - "entry_low": 15.14, - "entry_high": 15.76, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:14.36 弱撑:15.21 弱压:15.96 强压:17.56", - "timing_signal": "接近支撑位,关注", - "rr_ratio": 4.59, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 10:25", - "old_action": "", - "new_action": "盈利持有 | 损15.42 | 盈17.56 | 买15.58~16.22 | 信号:量价齐升,可买入", - "reason": "初始策略创建 | 形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:14.36 弱撑:15.52 弱压:16.21 强压:1", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | 损15.42 | 盈17.56 | 买15.58~16.22 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | 损15.09 | 盈17.56 | 买15.25~15.87 | 信号:接近支撑位,关注", - "reason": "技术信号变化: 接近支撑位,关注: 止损15.42→15.09 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:14.36 弱撑:15.29 弱压:15.98 强压:17", - "trigger": "技术信号变化: 接近支撑位,关注" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损15.09 | 盈17.56 | 买15.25~15.87 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考15.12 | 买入区15.28~15.9 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损15.09→15.12 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:14.36 弱撑:15.31 弱压:16.01 强压:17", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考15.12 | 买入区15.28~15.9 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考14.99 | 买入区15.14~15.76 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损15.12→14.99 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:14.36 弱撑:15.21 弱压:15.96 强压:17", - "trigger": "技术面重评" - } - ] - }, - { - "code": "000711", - "name": "ST京蓝", - "price": 5.2, - "cost": 0, - "action": "盈利持有 | 止损参考5.04 | 买入区5.1~5.3 | 信号:放量下跌,等企稳再入", - "stop_loss": 5.04, - "entry_low": 5.1, - "entry_high": 5.3, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:4.58 弱撑:5.05 弱压:5.44 强压:5.69", - "timing_signal": "放量下跌,等企稳再入", - "rr_ratio": 3.06, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 10:25", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 损5.24 | 盈5.69 | 买5.29~5.42 | 信号:放量下跌,等企稳再入", - "reason": "初始策略创建 | 形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:5.15 弱撑:5.29 弱压:5.53 强压:5.69", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 损5.24 | 盈5.69 | 买5.29~5.42 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 损5.14 | 盈5.69 | 买5.19~5.36 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损5.24→5.14 | 形态:倒T线/射击之星/neutral 量价:主动卖盘占优 强撑:5.15 弱撑:5.19 弱压:5.47 强压:5.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损5.14 | 盈5.69 | 买5.19~5.36 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考5.01 | 买入区5.07~5.27 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损5.14→5.01 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:4.58 弱撑:5.04 弱压:5.42 强压:5.69", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考5.01 | 买入区5.07~5.27 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考5.04 | 买入区5.1~5.3 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损5.01→5.04 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:4.58 弱撑:5.05 弱压:5.44 强压:5.6", - "trigger": "技术面重评" - } - ] - }, - { - "code": "001309", - "name": "德明利", - "price": 712.0, - "cost": 0, - "action": "盈利持有 | 止损参考690.64 | 买入区697.76~726.24", - "stop_loss": 690.64, - "entry_low": 697.76, - "entry_high": 726.24, - "tech_snapshot": "形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:694.72 弱压:732.64 强压:780.58", - "timing_signal": "neutral", - "rr_ratio": 3.21, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 10:25", - "old_action": "", - "new_action": "盈利持有 | 损681.77 | 盈780.58 | 买688.8~716.92 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:695.63 弱压:712.53 ", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | 损681.77 | 盈780.58 | 买688.8~716.92 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损696.46 | 盈780.58 | 买703.64~730.11 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损681.77→696.46 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:638.66 弱撑:704.72 弱压:724.64 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损696.46 | 盈780.58 | 买703.64~730.11 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考702.28 | 买入区709.52~733.6", - "reason": "技术信号变化: neutral: 止损696.46→702.28 | 形态:带上影阳线/neutral 量价:主动买盘占优 强撑:638.66 弱撑:702.72 弱压:740.64 强压:", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考702.28 | 买入区709.52~733.6", - "new_action": "盈利持有 | 止损参考690.64 | 买入区697.76~726.24", - "reason": "技术面重评: 止损702.28→690.64 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:638.66 弱撑:694.72 弱压:732.64 ", - "trigger": "技术面重评" - } - ] - }, - { - "code": "002594", - "name": "比亚迪", - "price": 88.13, - "cost": 0, - "action": "盈利持有 | 止损参考85.49 | 买入区86.37~88.76 | 信号:放量下跌,等企稳再入", - "stop_loss": 85.49, - "entry_low": 86.37, - "entry_high": 88.76, - "tech_snapshot": "形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:82.03 弱撑:86.36 弱压:89.61 强压:93.67", - "timing_signal": "放量下跌,等企稳再入", - "rr_ratio": 2.1, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 10:25", - "old_action": "", - "new_action": "盈利持有 | 损84.81 | 盈92.93 | 买85.68~88.06 | 信号:放量下跌,等企稳再入", - "reason": "初始策略创建 | 形态:带下影阳线/bullish 量价:主动卖盘占优 强撑:81.29 弱撑:86.53 弱压:88.15 强压:92.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | 损84.81 | 盈92.93 | 买85.68~88.06 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 损84.27 | 盈93.84 | 买85.14~88.1 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损84.81→84.27, 止盈92.93→93.84 | 形态:长影星线/neutral 量价:主动卖盘占优 强撑:79.94 弱撑:86.07 弱压:87.69 强压:93.8", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损84.27 | 盈93.84 | 买85.14~88.1 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考85.7 | 买入区86.58~88.92 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损84.27→85.7 | 形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:82.1 弱撑:86.51 弱压:89.76 强压:93.7", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考85.7 | 买入区86.58~88.92 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考85.49 | 买入区86.37~88.76 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损85.7→85.49 | 形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:82.03 弱撑:86.36 弱压:89.61 强压:93.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00700", - "name": "腾讯控股", - "price": 440.2, - "cost": 445.7552, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标481.87 | 买入区435.13~440.67 | 信号:持有", - "stop_loss": 399.47, - "entry_low": 435.13, - "entry_high": 440.67, - "tech_snapshot": "形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.87", - "timing_signal": "持有", - "rr_ratio": 1.02, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.0),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 489.1, - "changelog": [ - { - "date": "2026-06-18 10:26", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损401.6 | 目标480.4 | 买入区435.8~441.0 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:401.6 弱撑:435.8 弱压:445.4 强压:48", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损401.6 | 目标480.4 | 买入区435.8~441.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.47 | 目标480.67 | 买入区433.93~440.07 | 信号:持有", - "reason": "技术面重评: 止损401.6→399.47, 止盈480.4→480.67 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.47 弱撑:433.93 弱压:445.4 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.47 | 目标480.67 | 买入区433.93~440.07 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.4 | 目标480.6 | 买入区433.8~440.0 | 信号:持有", - "reason": "技术面重评: 止损399.47→399.4, 止盈480.67→480.6 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.4 弱撑:433.8 弱压:445.4 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.4 | 目标480.6 | 买入区433.8~440.0 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.67 | 目标480.87 | 买入区434.33~440.27 | 信号:持有", - "reason": "技术面重评: 止损399.4→399.67, 止盈480.6→480.87 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:399.67 弱撑:434.33 弱压:445.4 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损399.67 | 目标480.87 | 买入区434.33~440.27 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损398.6 | 目标481.0 | 买入区433.4~439.8 | 信号:持有", - "reason": "技术面重评: 止损399.67→398.6, 止盈480.87→488.22 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:398.6 弱撑:433.4 弱压:445.4 强压:48", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损398.6 | 目标481.0 | 买入区433.4~439.8 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损398.2 | 目标480.6 | 买入区432.6~439.4 | 信号:持有", - "reason": "技术面重评: 止损398.6→398.2, 止盈488.22→487.81 | 形态:带上影阴线/bearish 量价:数据不足 强撑:398.2 弱撑:432.6 弱压:445.4 强压:480.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损398.2 | 目标480.6 | 买入区432.6~439.4 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损399.47 | 目标481.87 | 买入区435.13~440.67 | 信号:持有", - "reason": "技术面重评: 止损398.2→399.47, 止盈487.81→489.1 | 形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00968", - "name": "信义光能", - "price": 2.35, - "cost": 0, - "action": "盈利持有 | 止损参考2.28 | 买入区2.3~2.39 | 信号:接近支撑位,关注", - "stop_loss": 2.28, - "entry_low": 2.3, - "entry_high": 2.39, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:2.15 弱撑:2.32 弱压:2.4 强压:2.56", - "timing_signal": "接近支撑位,关注", - "rr_ratio": 3.0, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 10:26", - "old_action": "", - "new_action": "盈利持有 | 损2.28 | 盈2.54 | 买2.3~2.38 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.17 弱撑:2.32 弱压:2.4 强压:2.54", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:31", - "old_action": "盈利持有 | 损2.28 | 盈2.54 | 买2.3~2.38 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损2.27 | 盈2.54 | 买2.29~2.38 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损2.28→2.27 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.17 弱撑:2.32 弱压:2.4 强压:2.54", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损2.27 | 盈2.54 | 买2.29~2.38 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考2.27 | 买入区2.29~2.38 | 信号:接近支撑位,关注", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考2.27 | 买入区2.29~2.38 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考2.26 | 买入区2.28~2.37 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损2.27→2.26 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.16 弱撑:2.31 弱压:2.4 强压:2.54", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考2.26 | 买入区2.28~2.37 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考2.28 | 买入区2.3~2.39 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损2.26→2.28 | 形态:带下影阴线/neutral 量价:数据不足 强撑:2.15 弱撑:2.32 弱压:2.4 强压:2.56", - "trigger": "技术面重评" - } - ] - }, - { - "code": "00981", - "name": "中芯国际", - "price": 76.5, - "cost": 76.3899, - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标84.72 | 买入区73.68~76.57 | 信号:持有", - "stop_loss": 68.42, - "entry_low": 73.68, - "entry_high": 76.57, - "tech_snapshot": "形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", - "timing_signal": "持有", - "rr_ratio": 1.02, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.0),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 85.99, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.82 | 目标82.12 | 买入区73.63~75.47 | 信号:持有", - "reason": "初始策略创建 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.82 弱撑:73.63 弱压:77.18 强压:82.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.82 | 目标82.12 | 买入区73.63~75.47 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.77 | 目标82.07 | 买入区73.53~75.42 | 信号:持有", - "reason": "技术面重评: 止损68.82→68.77, 止盈82.12→82.07 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.77 弱撑:73.53 弱压:77.08 强压:82.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.77 | 目标82.07 | 买入区73.53~75.42 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.75 | 目标82.05 | 买入区73.5~75.4 | 信号:持有", - "reason": "技术面重评: 止损68.77→68.75, 止盈82.07→82.05 | 形态:小阴线/bearish 量价:数据不足 强撑:68.75 弱撑:73.5 弱压:77.05 强压:82.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.75 | 目标82.05 | 买入区73.5~75.4 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损68.7 | 目标85.0 | 买入区74.25~76.85 | 信号:持有", - "reason": "技术面重评: 止损68.75→68.7, 止盈82.05→86.28 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:68.7 弱撑:74.25 弱压:79.95 强压:85.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损68.7 | 目标85.0 | 买入区74.25~76.85 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.25 | 目标84.55 | 买入区73.35~76.4 | 信号:持有", - "reason": "技术面重评: 止损68.7→68.25, 止盈86.28→85.82 | 形态:十字星/neutral 量价:数据不足 强撑:68.25 弱撑:73.35 弱压:79.05 强压:84.55", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损68.25 | 目标84.55 | 买入区73.35~76.4 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损68.42 | 目标84.72 | 买入区73.68~76.57 | 信号:持有", - "reason": "技术面重评: 止损68.25→68.42, 止盈85.82→85.99 | 形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01070", - "name": "TCL电子", - "price": 13.51, - "cost": 0, - "action": "盈利持有 | 止损参考13.1 | 买入区13.24~13.78", - "stop_loss": 13.1, - "entry_low": 13.24, - "entry_high": 13.78, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:11.93 弱撑:13.16 弱压:14.41 强压:15.43", - "timing_signal": "neutral", - "rr_ratio": 4.68, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损13.25 | 盈15.31 | 买13.39~13.93 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:12.31 弱撑:13.42 弱压:14.41 强压:15.3", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损13.25 | 盈15.31 | 买13.39~13.93 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损13.24 | 盈15.31 | 买13.38~13.92 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损13.25→13.24 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:12.31 弱撑:13.42 弱压:14.41 强压:15.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损13.24 | 盈15.31 | 买13.38~13.92 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损13.26 | 盈15.32 | 买13.4~13.94 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损13.24→13.26, 止盈15.31→15.32 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:12.32 弱撑:13.43 弱压:14.41 强压:15.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损13.26 | 盈15.32 | 买13.4~13.94 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考13.2 | 买入区13.34~13.88", - "reason": "技术信号变化: neutral: 止损13.26→13.2 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:12.08 弱撑:13.29 弱压:14.41 强压:15.4", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考13.2 | 买入区13.34~13.88", - "new_action": "盈利持有 | 止损参考13.01 | 买入区13.14~13.68", - "reason": "技术面重评: 止损13.2→13.01 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:11.9 弱撑:13.09 弱压:14.41 强压:15.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考13.01 | 买入区13.14~13.68", - "new_action": "盈利持有 | 止损参考13.1 | 买入区13.24~13.78", - "reason": "技术面重评: 止损13.01→13.1 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:11.93 弱撑:13.16 弱压:14.41 强压:15.4", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01088", - "name": "中国神华", - "price": 42.34, - "cost": 46.1659, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标46.28 | 买入区41.66~42.8 | 信号:持有", - "stop_loss": 39.32, - "entry_low": 41.66, - "entry_high": 42.8, - "tech_snapshot": "形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "timing_signal": "持有", - "rr_ratio": 1.3, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.3),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 46.97, - "updated_reason": "技术信号变化: 持有: 止损41.07→39.32 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损41.23 | 盈46.36 | 买41.65~43.28 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.56 弱撑:41.98 弱压:43.48 强压:46.36", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损41.23 | 盈46.36 | 买41.65~43.28 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损41.17 | 盈46.33 | 买41.59~43.23 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.23→41.17, 止盈46.36→46.33 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.54 弱撑:41.93 弱压:43.45 强压:46.33", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损41.17 | 盈46.33 | 买41.59~43.23 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.17→41.07 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.49 弱撑:41.81 弱压:43.41 强压:46.26", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.03 | 买入区41.45~43.1 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.07→41.03 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.41 弱撑:41.69 弱压:43.43 强压:46.21", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考41.03 | 买入区41.45~43.1 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损41.03→41.07 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 21:02", - "old_action": "盈利持有 | 止损参考41.07 | 买入区41.49~43.15 | 信号:接近支撑位,关注", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损39.32 | 目标46.28 | 买入区41.66~42.8 | 信号:持有", - "reason": "技术信号变化: 持有: 止损41.07→39.32 | 形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", - "trigger": "技术信号变化: 持有" - } - ] - }, - { - "code": "01211", - "name": "比亚迪股份", - "price": 80.85, - "cost": 105.4926, - "action": "深套持有 | 深套持有 | 止损68.72 | 目标88.98 | 买入区72.77~84.89 | 信号:持有", - "stop_loss": 68.72, - "entry_low": 72.77, - "entry_high": 84.89, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88.98", - "timing_signal": "持有", - "rr_ratio": 0.67, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 90.31, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损69.06 | 目标88.98 | 买入区73.12~85.31 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:73.98 弱撑:80.32 弱压:82.47 强压:88", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损69.06 | 目标88.98 | 买入区73.12~85.31 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损69.15 | 目标89.0 | 买入区73.22~85.42 | 信号:持有", - "reason": "技术面重评: 止损69.06→69.15, 止盈88.98→89.0 | 形态:倒T线/射击之星/neutral 量价:数据不足 强撑:74.0 弱撑:80.35 弱压:82.5 强压:89.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损69.15 | 目标89.0 | 买入区73.22~85.42 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损69.57 | 目标89.25 | 买入区73.66~85.94 | 信号:持有", - "reason": "技术面重评: 止损69.15→69.57, 止盈89.0→90.59 | 形态:带上影阳线/neutral 量价:数据不足 强撑:74.25 弱撑:80.6 弱压:83.0 强压:89.25", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损69.57 | 目标89.25 | 买入区73.66~85.94 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损68.55 | 目标88.92 | 买入区72.59~84.68 | 信号:持有", - "reason": "技术面重评: 止损69.57→68.55, 止盈90.59→90.25 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.72 弱撑:79.73 弱压:82.23 强压:88", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "深套持有 | 深套持有 | 止损68.55 | 目标88.92 | 买入区72.59~84.68 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损68.72 | 目标88.98 | 买入区72.77~84.89 | 信号:持有", - "reason": "技术面重评: 止损68.55→68.72, 止盈90.25→90.31 | 形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01478", - "name": "丘钛科技", - "price": 8.75, - "cost": 13.8666, - "action": "深套持有 | 深套持有 | 止损7.41 | 目标10.09 | 买入区7.88~9.19 | 信号:持有", - "stop_loss": 7.41, - "entry_low": 7.88, - "entry_high": 9.19, - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", - "timing_signal": "持有", - "rr_ratio": 1.0, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 10.24, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损7.24 | 目标10.02 | 买入区7.67~8.95 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.34 弱撑:8.32 弱压:8.91 强压:10.02", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损7.24 | 目标10.02 | 买入区7.67~8.95 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.26 | 目标10.02 | 买入区7.69~8.97 | 信号:持有", - "reason": "技术面重评: 止损7.24→7.26 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.34 弱撑:8.32 弱压:8.91 强压:10.02", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损7.26 | 目标10.02 | 买入区7.69~8.97 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.32 | 目标10.05 | 买入区7.75~9.04 | 信号:持有", - "reason": "技术面重评: 止损7.26→7.32, 止盈10.02→10.2 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.37 弱撑:8.36 弱压:8.95 强压:10.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损7.32 | 目标10.05 | 买入区7.75~9.04 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.34 | 目标10.05 | 买入区7.77~9.06 | 信号:持有", - "reason": "技术面重评: 止损7.32→7.34 | 形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.37 弱撑:8.38 弱压:8.97 强压:10.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "深套持有 | 深套持有 | 止损7.34 | 目标10.05 | 买入区7.77~9.06 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.41 | 目标10.09 | 买入区7.88~9.19 | 信号:持有", - "reason": "技术面重评: 止损7.34→7.41, 止盈10.2→10.24 | 形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", - "trigger": "技术面重评" - } - ] - }, - { - "code": "01888", - "name": "建滔积层板", - "price": 91.85, - "cost": 88.7544, - "action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损60.48 | 目标117.18 | 买入区85.82~88.83 | 信号:持有", - "stop_loss": 60.48, - "entry_low": 85.82, - "entry_high": 88.83, - "tech_snapshot": "形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.18", - "timing_signal": "持有", - "rr_ratio": 0.81, - "status": "updated", - "note": "⚠️盈亏比偏低(1:0.8),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 118.94, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.73~90.27 | 信号:阳线企稳,可买入", - "reason": "初始策略创建 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.73 弱撑:84.27 弱压:91.27 强压:115", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.73~90.27 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.78~90.32 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损84.27 | 盈115.33 | 买86.78~90.32 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损84.13 | 盈115.27 | 买86.58~90.12 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损84.27→84.13, 止盈115.33→115.27 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.67 弱撑:84.13 弱压:91.13 强压:115", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损84.13 | 盈115.27 | 买86.58~90.12 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 止损参考84.0 | 买入区86.44~89.96 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损84.13→84.0 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:58.7 弱撑:84.0 弱压:91.2 强压:115.3", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:52", - "old_action": "盈利持有 | 止损参考84.0 | 买入区86.44~89.96 | 信号:阳线企稳,可买入", - "new_action": "新买入 | 按推荐建仓 | 止损84.0 | 目标95.0 | 买入区86~90 | 信号:持有", - "reason": "按推荐买入建仓 500股@88.60 HKD", - "trigger": "用户执行买入" - }, - { - "date": "2026-06-18 16:00", - "old_action": "新买入 | 按推荐建仓 | 止损84.0 | 目标95.0 | 买入区86~90 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损59.95 | 目标116.55 | 买入区85.25~88.25 | 信号:持有", - "reason": "技术面重评: 止损84.0→59.95 | 形态:带下影阳线/bullish 量价:数据不足 强撑:59.95 弱撑:85.25 弱压:93.7 强压:116.55", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损59.95 | 目标116.55 | 买入区85.25~88.25 | 信号:持有", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损60.48 | 目标117.18 | 买入区85.82~88.83 | 信号:持有", - "reason": "技术面重评: 止损59.95→60.48, 止盈118.3→118.94 | 形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02202", - "name": "万科企业", - "price": 2.42, - "cost": 4.6955, - "action": "深套持有 | 深套持有 | 止损2.06 | 目标2.77 | 买入区2.18~2.54 | 信号:持有", - "stop_loss": 2.06, - "entry_low": 2.18, - "entry_high": 2.54, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", - "timing_signal": "持有", - "rr_ratio": 0.97, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 2.81, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损2.1 | 目标2.74 | 买入区2.22~2.59 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.26 弱撑:2.44 弱压:2.54 强压:2.74", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "深套持有 | 深套持有 | 止损2.1 | 目标2.74 | 买入区2.22~2.59 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.11 | 目标2.74 | 买入区2.23~2.6 | 信号:持有", - "reason": "技术面重评: 止损2.1→2.11 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.26 弱撑:2.45 弱压:2.54 强压:2.74", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损2.11 | 目标2.74 | 买入区2.23~2.6 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.76 | 买入区2.2~2.56 | 信号:持有", - "reason": "技术面重评: 止损2.11→2.07, 止盈2.74→2.8 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.18 弱撑:2.39 弱压:2.54 强压:2.76", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损2.07 | 目标2.76 | 买入区2.2~2.56 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损2.06 | 目标2.77 | 买入区2.18~2.54 | 信号:持有", - "reason": "技术面重评: 止损2.07→2.06, 止盈2.8→2.81 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02318", - "name": "中国平安", - "price": 53.85, - "cost": 0, - "action": "盈利持有 | 止损参考52.23 | 买入区52.77~54.93", - "stop_loss": 52.23, - "entry_low": 52.77, - "entry_high": 54.93, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.72 弱撑:52.68 弱压:56.1 强压:59.92", - "timing_signal": "neutral", - "rr_ratio": 3.75, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损52.19 | 盈59.52 | 买52.72~54.88 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.52 弱撑:53.08 弱压:56.1 强压:59.52", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损52.19 | 盈59.52 | 买52.72~54.88 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损52.23 | 盈59.53 | 买52.77~54.93 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.19→52.23, 止盈59.52→59.53 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.53 弱撑:53.12 弱压:56.1 强压:59.53", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损52.23 | 盈59.53 | 买52.77~54.93 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损52.28 | 盈59.53 | 买52.82~54.98 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.23→52.28 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.53 弱撑:53.12 弱压:56.1 强压:59.53", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损52.28 | 盈59.53 | 买52.82~54.98 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考51.89 | 买入区52.43~54.57 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损52.28→51.89 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:49.0 弱撑:52.65 弱压:56.1 强压:59.6", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考51.89 | 买入区52.43~54.57 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考52.14 | 买入区52.67~54.83", - "reason": "技术信号变化: neutral: 止损51.89→52.14 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.67 弱撑:52.58 弱压:56.1 强压:59.87", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考52.14 | 买入区52.67~54.83", - "new_action": "盈利持有 | 止损参考52.23 | 买入区52.77~54.93", - "reason": "技术面重评: 止损52.14→52.23 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:48.72 弱撑:52.68 弱压:56.1 强压:59.92", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02359", - "name": "药明康德", - "price": 128.7, - "cost": 0, - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考122.5 | 买入区126.13~128.31 | 信号:阳线企稳,可买入", - "stop_loss": 122.5, - "entry_low": 126.13, - "entry_high": 128.31, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:116.44 弱撑:122.5 弱压:131.47 强压:137.03", - "timing_signal": "阳线企稳,可买入", - "rr_ratio": 1.34, - "status": "review", - "note": "⚠️盈亏比不足1:1.5,不建议买入", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.5),谨慎买入 | 损122.5 | 盈136.74 | 买125.54~128.2 | 信号:阳线企稳,可买入", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:116.26 弱撑:122.5 弱压:131.0 强压:136", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.5),谨慎买入 | 损122.5 | 盈136.74 | 买125.54~128.2 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 损122.5 | 盈136.74 | 买125.44~128.2 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 损122.5 | 盈136.74 | 买125.44~128.2 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 损122.5 | 盈136.78 | 买125.54~128.21 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止盈136.74→136.78 | 形态:光头光脚阳线/bullish 量价:数据不足 强撑:116.29 弱撑:122.5 弱压:131.07 强压:13", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 损122.5 | 盈136.78 | 买125.54~128.21 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 止损参考122.5 | 买入区125.34~128.18 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 止损参考122.5 | 买入区125.34~128.18 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.5),谨慎买入 | 止损参考122.5 | 买入区125.64~128.23 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.5),谨慎买入 | 止损参考122.5 | 买入区125.64~128.23 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考122.5 | 买入区126.13~128.31 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02388", - "name": "中银香港", - "price": 48.14, - "cost": 43.9719, - "action": "盈利良好 | 止损46.7 | 目标51.2 | 买入区47.51~48.95 | 信号:持有", - "stop_loss": 46.7, - "entry_low": 47.51, - "entry_high": 48.95, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "timing_signal": "持有", - "rr_ratio": 2.13, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 51.97, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损46.29 | 目标50.08 | 买入区47.37~48.19 | 信号:持有", - "reason": "初始策略创建 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.31 弱撑:47.37 弱压:48.1 强压:50.08", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利良好 | 止损46.29 | 目标50.08 | 买入区47.37~48.19 | 信号:持有", - "new_action": "盈利良好 | 止损46.35 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "reason": "技术面重评: 止损46.29→46.35, 止盈50.08→50.1 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.32 弱撑:47.39 弱压:48.1 强压:50.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利良好 | 止损46.35 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "new_action": "盈利良好 | 止损46.37 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "reason": "技术面重评: 止损46.35→46.37 | 形态:带下影阴线/neutral 量价:数据不足 强撑:45.32 弱撑:47.39 弱压:48.1 强压:50.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损46.37 | 目标50.1 | 买入区47.39~48.23 | 信号:持有", - "new_action": "盈利良好 | 止损46.83 | 目标51.26 | 买入区47.6~49.05 | 信号:持有", - "reason": "技术面重评: 止损46.37→46.83, 止盈50.1→52.03 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.74 弱撑:47.6 弱压:48.68 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损46.83 | 目标51.26 | 买入区47.6~49.05 | 信号:持有", - "new_action": "盈利良好 | 止损46.68 | 目标51.2 | 买入区47.51~48.94 | 信号:持有", - "reason": "技术面重评: 止损46.83→46.68, 止盈52.03→51.97 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利良好 | 止损46.68 | 目标51.2 | 买入区47.51~48.94 | 信号:持有", - "new_action": "盈利良好 | 止损46.7 | 目标51.2 | 买入区47.51~48.95 | 信号:持有", - "reason": "技术面重评: 止损46.68→46.7 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", - "trigger": "技术面重评" - } - ] - }, - { - "code": "02628", - "name": "中国人寿", - "price": 28.02, - "cost": 0, - "action": "盈利持有 | 止损参考27.18 | 买入区27.46~28.58", - "stop_loss": 27.18, - "entry_low": 27.46, - "entry_high": 28.58, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.77 弱撑:27.27 弱压:30.0 强压:32.33", - "timing_signal": "neutral", - "rr_ratio": 5.13, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损27.1 | 盈32.26 | 买27.38~28.5", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.9 弱撑:27.32 弱压:30.0 强压:32.26", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损27.1 | 盈32.26 | 买27.38~28.5", - "new_action": "盈利持有 | 损27.16 | 盈32.27 | 买27.44~28.56", - "reason": "技术面重评: 止损27.1→27.16, 止盈32.26→32.27 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.91 弱撑:27.33 弱压:30.0 强压:32.27", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损27.16 | 盈32.27 | 买27.44~28.56", - "new_action": "盈利持有 | 损27.26 | 盈32.29 | 买27.54~28.66", - "reason": "技术面重评: 止损27.16→27.26, 止盈32.27→32.29 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.93 弱撑:27.39 弱压:30.0 强压:32.29", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损27.26 | 盈32.29 | 买27.54~28.66", - "new_action": "盈利持有 | 止损参考27.16 | 买入区27.44~28.56", - "reason": "技术面重评: 止损27.26→27.16 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.9 弱撑:27.32 弱压:30.0 强压:32.26", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考27.16 | 买入区27.44~28.56", - "new_action": "盈利持有 | 止损参考27.06 | 买入区27.34~28.46", - "reason": "技术面重评: 止损27.16→27.06 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.76 弱撑:27.2 弱压:30.0 强压:32.28", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考27.06 | 买入区27.34~28.46", - "new_action": "盈利持有 | 止损参考27.18 | 买入区27.46~28.58", - "reason": "技术面重评: 止损27.06→27.18 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:24.77 弱撑:27.27 弱压:30.0 强压:32.33", - "trigger": "技术面重评" - } - ] - }, - { - "code": "06160", - "name": "百济神州", - "price": 163.7, - "cost": 0, - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 止损参考157.4 | 买入区160.43~164.46 | 信号:阳线企稳,可买入", - "stop_loss": 157.4, - "entry_low": 160.43, - "entry_high": 164.46, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:148.87 弱撑:157.4 弱压:166.93 强压:175.06", - "timing_signal": "阳线企稳,可买入", - "rr_ratio": 1.8, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.8),谨慎买入", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损157.24 | 盈172.13 | 买158.86~163.2", - "reason": "初始策略创建 | 形态:带上影阳线/neutral 量价:数据不足 强撑:150.73 弱撑:157.4 弱压:165.87 强压:172", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损157.24 | 盈172.13 | 买158.86~163.2", - "new_action": "盈利持有 | 损157.14 | 盈172.17 | 买158.76~163.15", - "reason": "技术面重评: 止损157.24→157.14, 止盈172.13→172.17 | 形态:带上影阳线/neutral 量价:数据不足 强撑:150.77 弱撑:157.4 弱压:165.93 强压:172", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "盈利持有 | 损157.14 | 盈172.17 | 买158.76~163.15", - "new_action": "盈利持有 | 损157.4 | 盈172.23 | 买159.05~163.33", - "reason": "技术面重评: 止损157.14→157.4, 止盈172.17→172.23 | 形态:带上影阳线/neutral 量价:数据不足 强撑:150.83 弱撑:157.4 弱压:166.07 强压:172", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损157.4 | 盈172.23 | 买159.05~163.33", - "new_action": "盈利持有 | 止损参考157.14 | 买入区158.76~163.12", - "reason": "技术面重评: 止损157.4→157.14 | 形态:带上影阳线/neutral 量价:数据不足 强撑:150.7 弱撑:157.4 弱压:165.8 强压:172.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考157.14 | 买入区158.76~163.12", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 止损参考157.4 | 买入区159.25~163.35", - "reason": "技术面重评: 止损157.14→157.4 | 形态:带上影阳线/neutral 量价:数据不足 强撑:150.87 弱撑:157.4 弱压:166.13 强压:172", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 止损参考157.4 | 买入区159.25~163.35", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 止损参考157.4 | 买入区160.43~164.46 | 信号:阳线企稳,可买入", - "reason": "技术信号变化: 阳线企稳,可买入: 策略文字调整", - "trigger": "技术信号变化: 阳线企稳,可买入" - } - ] - }, - { - "code": "06869", - "name": "长飞光纤", - "price": 217.8, - "cost": 0, - "action": "盈利持有 | 止损参考211.27 | 买入区213.44~222.16", - "stop_loss": 211.27, - "entry_low": 213.44, - "entry_high": 222.16, - "tech_snapshot": "形态:带上影阴线/bearish 量价:数据不足 强撑:188.47 弱撑:211.93 弱压:227.93 强压:255.67", - "timing_signal": "neutral", - "rr_ratio": 5.8, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损223.1 | 盈256.47 | 买225.4~234.6 | 信号:阳线企稳,可买入", - "reason": "初始策略创建 | 形态:带下影阳线/bullish 量价:数据不足 强撑:198.87 弱撑:224.73 弱压:233.33 强压:25", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损223.1 | 盈256.47 | 买225.4~234.6 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损223.68 | 盈256.33 | 买225.99~235.21 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损223.1→223.68, 止盈256.47→256.33 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:198.73 弱撑:224.27 弱压:233.07 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "盈利持有 | 损223.68 | 盈256.33 | 买225.99~235.21 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 损222.71 | 盈256.2 | 买225.01~234.19 | 信号:阳线企稳,可买入", - "reason": "技术面重评: 止损223.68→222.71, 止盈256.33→256.2 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:198.6 弱撑:224.0 弱压:232.8 强压:256", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损222.71 | 盈256.2 | 买225.01~234.19 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 止损参考216.7 | 买入区218.93~227.87 | 信号:接近支撑位,关注", - "reason": "技术信号变化: 接近支撑位,关注: 止损222.71→216.7 | 形态:带上影阴线/bearish 量价:数据不足 强撑:197.07 弱撑:219.53 弱压:229.73 强压:25", - "trigger": "技术信号变化: 接近支撑位,关注" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考216.7 | 买入区218.93~227.87 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考211.46 | 买入区213.64~222.36", - "reason": "技术信号变化: neutral: 止损216.7→211.46 | 形态:带上影阴线/bearish 量价:数据不足 强撑:188.53 弱撑:212.07 弱压:228.07 强压:25", - "trigger": "技术信号变化: neutral" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考211.46 | 买入区213.64~222.36", - "new_action": "盈利持有 | 止损参考211.27 | 买入区213.44~222.16", - "reason": "技术面重评: 止损211.46→211.27 | 形态:带上影阴线/bearish 量价:数据不足 强撑:188.47 弱撑:211.93 弱压:227.93 强压:25", - "trigger": "技术面重评" - } - ] - }, - { - "code": "09868", - "name": "小鹏汽车-W", - "price": 51.5, - "cost": 0, - "action": "盈利持有 | 止损参考49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "stop_loss": 49.95, - "entry_low": 50.47, - "entry_high": 52.53, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.33 弱撑:50.77 弱压:53.35 强压:59.23", - "timing_signal": "接近支撑位,关注", - "rr_ratio": 4.99, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.8 弱撑:51.0 弱压:53.35 强压:59.0", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损50.0 | 盈59.02 | 买50.52~52.58 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.95→50.0, 止盈59.0→59.02 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.82 弱撑:51.03 弱压:53.35 强压:59.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "盈利持有 | 损50.0 | 盈59.02 | 买50.52~52.58 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损50.0→49.95, 止盈59.02→59.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.8 弱撑:51.0 弱压:53.35 强压:59.0", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损49.95 | 盈59.0 | 买50.47~52.53 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考50.0 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.95→50.0 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.75 弱撑:51.0 弱压:53.35 强压:59.05", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考50.0 | 买入区50.52~52.58 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考49.62 | 买入区50.13~52.17 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损50.0→49.62 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.22 弱撑:50.53 弱压:53.35 强压:59.1", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "盈利持有 | 止损参考49.62 | 买入区50.13~52.17 | 信号:接近支撑位,关注", - "new_action": "盈利持有 | 止损参考49.95 | 买入区50.47~52.53 | 信号:接近支撑位,关注", - "reason": "技术面重评: 止损49.62→49.95 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:44.33 弱撑:50.77 弱压:53.35 强压:59.2", - "trigger": "技术面重评" - } - ] - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "price": 104.9, - "cost": 126.6781, - "action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标115.23 | 买入区102.87~104.43 | 信号:持有", - "stop_loss": 93.63, - "entry_low": 102.87, - "entry_high": 104.43, - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:115.23", - "timing_signal": "持有", - "rr_ratio": 0.92, - "status": "updated", - "note": "⚠️盈亏比偏低(1:0.9),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 116.96, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损93.83 | 目标114.43 | 买入区102.27~104.13 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.83 弱撑:102.27 弱压:106.9 强压:114", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 11:32", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损93.83 | 目标114.43 | 买入区102.27~104.13 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.8 | 目标114.4 | 买入区102.2~104.1 | 信号:持有", - "reason": "技术面重评: 止损93.83→93.8, 止盈114.43→114.4 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.8 弱撑:102.2 弱压:106.9 强压:114.4", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 11:33", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.8 | 目标114.4 | 买入区102.2~104.1 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.87 | 目标114.47 | 买入区102.33~104.17 | 信号:持有", - "reason": "技术面重评: 止损93.8→93.87, 止盈114.4→114.47 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:93.87 弱撑:102.33 弱压:106.9 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损93.87 | 目标114.47 | 买入区102.33~104.17 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损92.97 | 目标114.57 | 买入区101.53~103.77 | 信号:持有", - "reason": "技术面重评: 止损93.87→92.97, 止盈114.47→116.29 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:92.97 弱撑:101.53 弱压:106.9 强压:114", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:15", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损92.97 | 目标114.57 | 买入区101.53~103.77 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损93.63 | 目标115.23 | 买入区102.87~104.43 | 信号:持有", - "reason": "技术面重评: 止损92.97→93.63, 止盈116.29→116.96 | 形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:11", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300035", - "name": "中科电气", - "price": 17.37, - "cost": 22.2914, - "action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "stop_loss": 14.76, - "entry_low": 15.63, - "entry_high": 18.24, - "tech_snapshot": "形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.42", - "timing_signal": "持有", - "rr_ratio": 0.79, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 19.71, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.15 弱压:17.76 强压:19.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.78 | 目标19.43 | 买入区15.65~18.26 | 信号:持有", - "reason": "技术面重评: 止损14.76→14.78, 止盈19.42→19.72 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:15.65 弱撑:17.16 弱压:17.78 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损14.78 | 目标19.43 | 买入区15.65~18.26 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损14.76 | 目标19.42 | 买入区15.63~18.24 | 信号:持有", - "reason": "技术面重评: 止损14.78→14.76, 止盈19.72→19.71 | 形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300124", - "name": "汇川技术", - "price": 71.18, - "cost": 0, - "action": "盈利持有 | 止损参考69.04 | 买入区69.76~71.88 | 信号:放量下跌,等企稳再入", - "stop_loss": 69.04, - "entry_low": 69.76, - "entry_high": 71.88, - "tech_snapshot": "形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:65.73 弱撑:69.5 弱压:72.61 强压:76.13", - "timing_signal": "放量下跌,等企稳再入", - "rr_ratio": 2.31, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损68.05 | 盈76.38 | 买68.75~71.38 | 信号:放量下跌,等企稳再入", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:主动卖盘占优 强撑:64.08 弱撑:69.17 弱压:71.21 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损68.05 | 盈76.38 | 买68.75~71.38 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考69.24 | 买入区69.95~72.24 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损68.05→69.24 | 形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:65.3 弱撑:69.67 弱压:72.78 强压:76.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考69.24 | 买入区69.95~72.24 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | 止损参考69.04 | 买入区69.76~71.88 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 止损69.24→69.04 | 形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:65.73 弱撑:69.5 弱压:72.61 强压:76.1", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300548", - "name": "长芯博创", - "price": 281.99, - "cost": 231.46, - "action": "盈利良好 | 止损269.8 | 目标323.86 | 买入区269.8~283.29 | 信号:放量走强,持有", - "stop_loss": 269.8, - "entry_low": 269.8, - "entry_high": 283.29, - "tech_snapshot": "形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:323.86", - "timing_signal": "放量走强,持有", - "rr_ratio": 3.43, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 328.72, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损260.75 | 目标323.86 | 买入区264.9~278.14 | 信号:放量走强,持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:215.9 弱撑:264.9 弱压:274.12 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损260.75 | 目标323.86 | 买入区264.9~278.14 | 信号:放量走强,持有", - "new_action": "盈利良好 | 止损269.88 | 目标323.86 | 买入区269.88~283.37 | 信号:放量走强,持有", - "reason": "价格变动(268.81→282.3): 止损260.75→269.88, 止盈323.86→328.72 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.88 弱压:290.77 强压:", - "trigger": "价格变动(268.81→282.3)" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损269.88 | 目标323.86 | 买入区269.88~283.37 | 信号:放量走强,持有", - "new_action": "盈利良好 | 止损269.8 | 目标323.86 | 买入区269.8~283.29 | 信号:放量走强,持有", - "reason": "技术面重评: 止损269.88→269.8 | 形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:3", - "trigger": "技术面重评" - } - ] - }, - { - "code": "300690", - "name": "双一科技", - "price": 23.88, - "cost": 27.178, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损22.78 | 目标25.17 | 买入区23.57~23.98 | 信号:持有", - "stop_loss": 22.78, - "entry_low": 23.57, - "entry_high": 23.98, - "tech_snapshot": "形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:22.78 弱撑:23.57 弱压:24.29 强压:25.17", - "timing_signal": "持有", - "rr_ratio": 1.17, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.2),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 21:02", - "take_profit": 25.55, - "changelog": [ - { - "date": "2026-06-18 21:02", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损22.78 | 目标25.17 | 买入区23.57~23.98 | 信号:持有", - "reason": "初始策略创建 | 形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:22.78 弱撑:23.57 弱压:24.29 强压:25.", - "trigger": "初始创建" - } - ] - }, - { - "code": "300750", - "name": "宁德时代", - "price": 391.55, - "cost": 401.7803, - "action": "持有观察 | 止损370.53 | 目标423.71 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "stop_loss": 370.53, - "entry_low": 384.35, - "entry_high": 397.12, - "tech_snapshot": "形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:423.71", - "timing_signal": "缩量回踩弱支撑,可加仓", - "rr_ratio": 1.53, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 430.07, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | 止损370.09 | 目标423.27 | 买入区383.46~396.68 | 信号:缩量回踩弱支撑,可加仓", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.09 弱撑:383.46 弱压:403.43 强压:42", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | 止损370.09 | 目标423.27 | 买入区383.46~396.68 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.4),不建议加仓 | 止损371.06 | 目标424.24 | 买入区385.42~397.65 | 信号:持有", - "reason": "技术信号变化: 持有: 止损370.09→371.06, 止盈423.27→430.6 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:371.06 弱撑:385.42 弱压:405.39 强压:42", - "trigger": "技术信号变化: 持有" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.4),不建议加仓 | 止损371.06 | 目标424.24 | 买入区385.42~397.65 | 信号:持有", - "new_action": "持有观察 | 止损370.53 | 目标423.71 | 买入区384.35~397.12 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术信号变化: 缩量回踩弱支撑,可加仓: 止损371.06→370.53, 止盈430.6→430.07 | 形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:42", - "trigger": "技术信号变化: 缩量回踩弱支撑,可加仓" - } - ] - }, - { - "code": "518880", - "name": "黄金ETF华安", - "price": 8.908, - "cost": 12.1915, - "action": "深套持有 | 深套持有 | 止损7.57 | 目标9.37 | 买入区8.02~9.35 | 信号:持有", - "stop_loss": 7.57, - "entry_low": 8.02, - "entry_high": 9.35, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.48 弱撑:8.88 弱压:8.96 强压:9.37", - "timing_signal": "持有", - "rr_ratio": 0.35, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 9.51, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损7.59 | 目标9.65 | 买入区8.04~9.38 | 信号:持有", - "reason": "初始策略创建 | 形态:带上影阴线/bearish 量价:数据不足 强撑:8.22 弱撑:8.91 弱压:8.96 强压:9.65", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损7.59 | 目标9.65 | 买入区8.04~9.38 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.56 | 目标9.36 | 买入区8.01~9.34 | 信号:持有", - "reason": "技术面重评: 止损7.59→7.56, 止盈9.65→9.5 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.47 弱撑:8.87 弱压:8.96 强压:9.36", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损7.56 | 目标9.36 | 买入区8.01~9.34 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损7.57 | 目标9.37 | 买入区8.02~9.35 | 信号:持有", - "reason": "技术面重评: 止损7.56→7.57, 止盈9.5→9.51 | 形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.48 弱撑:8.88 弱压:8.96 强压:9.37", - "trigger": "技术面重评" - } - ] - }, - { - "code": "600036", - "name": "招商银行", - "price": 37.26, - "cost": 38.1582, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.59 | 目标40.55 | 买入区36.95~37.57 | 信号:缩量回踩弱支撑,可加仓", - "stop_loss": 34.59, - "entry_low": 36.95, - "entry_high": 37.57, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:34.59 弱撑:36.95 弱压:38.23 强压:40.55", - "timing_signal": "缩量回踩弱支撑,可加仓", - "rr_ratio": 1.23, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.2),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 41.16, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.68 | 目标40.67 | 买入区37.15~37.67 | 信号:缩量回踩弱支撑,可加仓", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:34.68 弱撑:37.15 弱压:38.23 强压:40.6", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.68 | 目标40.67 | 买入区37.15~37.67 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.61 | 目标40.58 | 买入区36.99~37.59 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术面重评: 止损34.68→34.61, 止盈40.67→41.19 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:34.61 弱撑:36.99 弱压:38.23 强压:40.5", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.61 | 目标40.58 | 买入区36.99~37.59 | 信号:缩量回踩弱支撑,可加仓", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损34.59 | 目标40.55 | 买入区36.95~37.57 | 信号:缩量回踩弱支撑,可加仓", - "reason": "技术面重评: 止损34.61→34.59, 止盈41.19→41.16 | 形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:34.59 弱撑:36.95 弱压:38.23 强压:40.5", - "trigger": "技术面重评" - } - ] - }, - { - "code": "600563", - "name": "法拉电子", - "price": 168.19, - "cost": 155.5032, - "action": "盈利良好 | 止损163.14 | 目标187.06 | 买入区165.51~173.79 | 信号:持有", - "stop_loss": 163.14, - "entry_low": 165.51, - "entry_high": 173.79, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压:187.06", - "timing_signal": "持有", - "rr_ratio": 3.74, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 189.87, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损164.39 | 目标187.06 | 买入区166.77~175.11 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:166.77 弱压:173.78 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损164.39 | 目标187.06 | 买入区166.77~175.11 | 信号:持有", - "new_action": "盈利良好 | 止损163.7 | 目标187.06 | 买入区166.12~174.43 | 信号:持有", - "reason": "技术面重评: 止损164.39→163.7, 止盈187.06→189.87 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:166.12 弱压:173.51 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损163.7 | 目标187.06 | 买入区166.12~174.43 | 信号:持有", - "new_action": "盈利良好 | 止损163.14 | 目标187.06 | 买入区165.51~173.79 | 信号:持有", - "reason": "技术面重评: 止损163.7→163.14 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压", - "trigger": "技术面重评" - } - ] - }, - { - "code": "600739", - "name": "辽宁成大", - "price": 10.09, - "cost": 12.2862, - "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.38 | 目标10.86 | 买入区10.0~10.12 | 信号:持有", - "stop_loss": 9.38, - "entry_low": 10.0, - "entry_high": 10.12, - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:9.38 弱撑:10.0 弱压:10.24 强压:10.86", - "timing_signal": "持有", - "rr_ratio": 1.08, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.1),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 11.02, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.4 | 目标10.88 | 买入区10.03~10.14 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:9.4 弱撑:10.03 弱压:10.24 强压:10.8", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.4 | 目标10.88 | 买入区10.03~10.14 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.39 | 目标10.87 | 买入区10.01~10.13 | 信号:持有", - "reason": "技术面重评: 止损9.4→9.39, 止盈10.88→11.03 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:9.39 弱撑:10.01 弱压:10.24 强压:10.", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.39 | 目标10.87 | 买入区10.01~10.13 | 信号:持有", - "new_action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.38 | 目标10.86 | 买入区10.0~10.12 | 信号:持有", - "reason": "技术面重评: 止损9.39→9.38, 止盈11.03→11.02 | 形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:9.38 弱撑:10.0 弱压:10.24 强压:10.8", - "trigger": "技术面重评" - } - ] - }, - { - "code": "601899", - "name": "紫金矿业", - "price": 29.69, - "cost": 40.2685, - "action": "深套持有 | 深套持有 | 止损25.24 | 目标33.47 | 买入区26.72~31.17 | 信号:持有", - "stop_loss": 25.24, - "entry_low": 26.72, - "entry_high": 31.17, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:33.47", - "timing_signal": "持有", - "rr_ratio": 0.85, - "status": "updated", - "note": "深套持有", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 33.97, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "深套持有 | 深套持有 | 止损25.08 | 目标33.46 | 买入区26.56~30.99 | 信号:持有", - "reason": "初始策略创建 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.87 弱压:30.57 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "深套持有 | 深套持有 | 止损25.08 | 目标33.46 | 买入区26.56~30.99 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损25.19 | 目标33.47 | 买入区26.67~31.11 | 信号:持有", - "reason": "技术面重评: 止损25.08→25.19, 止盈33.46→33.97 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.95 弱压:30.65 强压:", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "深套持有 | 深套持有 | 止损25.19 | 目标33.47 | 买入区26.67~31.11 | 信号:持有", - "new_action": "深套持有 | 深套持有 | 止损25.24 | 目标33.47 | 买入区26.72~31.17 | 信号:持有", - "reason": "技术面重评: 止损25.19→25.24 | 形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:", - "trigger": "技术面重评" - } - ] - }, - { - "code": "603259", - "name": "药明康德", - "price": 102.72, - "cost": 96.201, - "action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标108.02 | 买入区98.2~103.11 | 信号:持有", - "stop_loss": 98.2, - "entry_low": 98.2, - "entry_high": 103.11, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.35 弱撑:98.2 弱压:105.46 强压:108.02", - "timing_signal": "持有", - "rr_ratio": 1.17, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.2),不建议加仓", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 109.64, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损98.2 | 目标108.02 | 买入区98.2~103.11 | 信号:持有", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.32 弱撑:98.2 弱压:105.4 强压:108.0", - "trigger": "初始创建" - } - ] - }, - { - "code": "688411", - "name": "海博思创", - "price": 281.0, - "cost": 258.6163, - "action": "盈利良好 | 止损272.57 | 目标323.46 | 买入区273.21~286.87 | 信号:持有", - "stop_loss": 272.57, - "entry_low": 273.21, - "entry_high": 286.87, - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:237.08 弱撑:273.21 弱压:288.06 强压:323.46", - "timing_signal": "持有", - "rr_ratio": 5.04, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 328.31, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损268.82 | 目标316.4 | 买入区272.07~285.67 | 信号:持有", - "reason": "初始策略创建 | 形态:十字星/neutral 量价:买卖均衡 强撑:238.68 弱撑:272.07 弱压:282.59 强压:316.", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损268.82 | 目标316.4 | 买入区272.07~285.67 | 信号:持有", - "new_action": "盈利良好 | 止损273.06 | 目标323.46 | 买入区273.22~286.88 | 信号:持有", - "reason": "技术面重评: 止损268.82→273.06, 止盈316.4→328.31 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:237.08 弱撑:273.22 弱压:288.07 强压", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损273.06 | 目标323.46 | 买入区273.22~286.88 | 信号:持有", - "new_action": "盈利良好 | 止损272.57 | 目标323.46 | 买入区273.21~286.87 | 信号:持有", - "reason": "技术面重评: 止损273.06→272.57 | 形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:237.08 弱撑:273.21 弱压:288.06 强压", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688630", - "name": "芯碁微装", - "price": 502.0, - "cost": 0, - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.96~500.3 | 信号:量价齐升,可买入", - "stop_loss": 475.77, - "entry_low": 491.96, - "entry_high": 500.3, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:453.45 弱撑:475.77 弱压:519.55 强压:537.09", - "timing_signal": "量价齐升,可买入", - "rr_ratio": 1.34, - "status": "review", - "note": "⚠️盈亏比不足1:1.5,不建议买入", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 损475.77 | 盈533.04 | 买492.47~498.68 | 信号:量价齐升,可买入", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:452.64 弱撑:475.77 弱压:514.68 强压", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 损475.77 | 盈533.04 | 买492.47~498.68 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.71~500.43 | 信号:量价齐升,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.71~500.43 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.96~500.3 | 信号:量价齐升,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:22", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.96~500.3 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考380.0 | 买入区430.0~445.0 | 信号:量价齐升,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 17:25", - "old_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考380.0 | 买入区430.0~445.0 | 信号:量价齐升,可买入", - "new_action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考475.77 | 买入区491.96~500.3 | 信号:量价齐升,可买入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688639", - "name": "华恒生物", - "price": 20.87, - "cost": 0, - "action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损参考20.24 | 买入区20.45~21.0", - "stop_loss": 20.24, - "entry_low": 20.45, - "entry_high": 21.0, - "tech_snapshot": "形态:十字星/neutral 量价:主动买盘占优 强撑:19.49 弱撑:20.42 弱压:21.26 强压:22.13", - "timing_signal": "neutral", - "rr_ratio": 2.0, - "status": "updated", - "note": "⚠️盈亏比偏低(1:2.0),谨慎买入", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损20.19 | 盈22.11 | 买20.39~20.96", - "reason": "初始策略创建 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.47 弱撑:20.38 弱压:21.22 强压:22.11", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损20.19 | 盈22.11 | 买20.39~20.96", - "new_action": "盈利持有 | 止损参考20.2 | 买入区20.4~20.96", - "reason": "技术面重评: 止损20.19→20.2 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.47 弱撑:20.39 弱压:21.23 强压:22.11", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考20.2 | 买入区20.4~20.96", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 止损参考20.24 | 买入区20.45~21.0", - "reason": "技术面重评: 止损20.2→20.24 | 形态:十字星/neutral 量价:主动买盘占优 强撑:19.49 弱撑:20.42 弱压:21.26 强压:22.13", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688795", - "name": "摩尔线程-U", - "price": 669.0, - "cost": 0, - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 止损参考639.0 | 买入区655.62~672.94 | 信号:放量下跌,等企稳再入", - "stop_loss": 639.0, - "entry_low": 655.62, - "entry_high": 672.94, - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:593.85 弱撑:639.0 弱压:685.7 强压:723.85", - "timing_signal": "放量下跌,等企稳再入", - "rr_ratio": 1.83, - "status": "updated", - "note": "⚠️盈亏比偏低(1:1.8),谨慎买入", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损639.0 | 盈718.78 | 买650.72~670.91 | 信号:放量下跌,等企稳再入", - "reason": "初始策略创建 | 形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:593.88 弱撑:639.0 弱压:680.67 强压:", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损639.0 | 盈718.78 | 买650.72~670.91 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 止损参考639.0 | 买入区658.42~673.32 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 止损参考639.0 | 买入区658.42~673.32 | 信号:放量下跌,等企稳再入", - "new_action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 止损参考639.0 | 买入区655.62~672.94 | 信号:放量下跌,等企稳再入", - "reason": "技术面重评: 策略文字调整", - "trigger": "技术面重评" - } - ] - }, - { - "code": "688802", - "name": "沐曦股份-U", - "price": 769.89, - "cost": 0, - "action": "盈利持有 | 止损参考732.5 | 买入区754.49~785.29", - "stop_loss": 732.5, - "entry_low": 754.49, - "entry_high": 785.29, - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:658.68 弱撑:732.5 弱压:795.21 强压:869.04", - "timing_signal": "neutral", - "rr_ratio": 2.65, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "自选策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利持有 | 损732.5 | 盈864.31 | 买752.84~783.56", - "reason": "初始策略创建 | 形态:带上影阳线/neutral 量价:数据不足 强撑:660.19 弱撑:732.5 弱压:792.01 强压:864", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利持有 | 损732.5 | 盈864.31 | 买752.84~783.56", - "new_action": "盈利持有 | 止损参考732.5 | 买入区761.22~788.03 | 信号:阳线企稳,可买入", - "reason": "技术信号变化: 阳线企稳,可买入: 策略文字调整", - "trigger": "技术信号变化: 阳线企稳,可买入" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利持有 | 止损参考732.5 | 买入区761.22~788.03 | 信号:阳线企稳,可买入", - "new_action": "盈利持有 | 止损参考732.5 | 买入区754.49~785.29", - "reason": "技术信号变化: neutral: 策略文字调整", - "trigger": "技术信号变化: neutral" - } - ] - }, - { - "code": "688981", - "name": "中芯国际", - "price": 140.7, - "cost": 126.0681, - "action": "盈利良好 | 止损134.18 | 目标159.66 | 买入区134.18~140.89 | 信号:持有", - "stop_loss": 134.18, - "entry_low": 134.18, - "entry_high": 140.89, - "tech_snapshot": "形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:159.66", - "timing_signal": "持有", - "rr_ratio": 2.91, - "status": "updated", - "note": "", - "timestamp": "2026-06-18 21:02", - "updated_at": "2026-06-18 21:02", - "type": "持仓策略", - "source": "auto", - "created_at": "2026-06-18 17:15", - "take_profit": 162.05, - "changelog": [ - { - "date": "2026-06-18 11:31", - "old_action": "", - "new_action": "盈利良好 | 止损134.46 | 目标153.26 | 买入区134.46~141.18 | 信号:持有", - "reason": "初始策略创建 | 形态:带下影阳线/bullish 量价:买卖均衡 强撑:121.46 弱撑:134.46 弱压:141.85 强压:15", - "trigger": "初始创建" - }, - { - "date": "2026-06-18 14:17", - "old_action": "盈利良好 | 止损134.46 | 目标153.26 | 买入区134.46~141.18 | 信号:持有", - "new_action": "盈利良好 | 止损134.7 | 目标159.97 | 买入区134.7~141.44 | 信号:持有", - "reason": "技术面重评: 止损134.46→134.7, 止盈153.26→162.37 | 形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:119.45 弱撑:134.7 弱压:146.55 强压:15", - "trigger": "技术面重评" - }, - { - "date": "2026-06-18 16:00", - "old_action": "盈利良好 | 止损134.7 | 目标159.97 | 买入区134.7~141.44 | 信号:持有", - "new_action": "盈利良好 | 止损134.18 | 目标159.66 | 买入区134.18~140.89 | 信号:持有", - "reason": "技术面重评: 止损134.7→134.18, 止盈162.37→162.05 | 形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:15", - "trigger": "技术面重评" - } - ] - } - ], - "total": 38, - "regenerated_at": "2026-06-18 21:02" -} \ No newline at end of file diff --git a/data/evaluation_input.json b/data/evaluation_input.json index d0dfac6c..6398226c 100644 --- a/data/evaluation_input.json +++ b/data/evaluation_input.json @@ -1,110 +1,166 @@ { - "collected_at": "2026-06-29T20:30:20.603152", - "total_stocks": 38, + "collected_at": "2026-07-08T19:50:36.281088", + "total_stocks": 37, "summary": { - "up_count": 29, - "down_count": 8, - "deep_loss_count": 7, + "up_count": 9, + "down_count": 10, + "deep_loss_count": 8, "holdings_count": 19, - "watchlist_count": 19 + "watchlist_count": 18 }, "index_data": { "上证指数": { - "price": 4073.9, - "prev_close": 4027.26, - "change_pct": 1.16, - "high": 4075.33, - "low": 3992.55, - "timestamp": "20260629161418" + "price": 3970.88, + "prev_close": 3990.24, + "change_pct": -0.49, + "high": 4016.03, + "low": 3967.91, + "timestamp": "20260708161401" }, "深证成指": { - "price": 15812.87, - "prev_close": 15782.22, - "change_pct": 0.19, - "high": 15938.23, - "low": 15487.92, - "timestamp": "20260629161442" + "price": 14939.73, + "prev_close": 15225.11, + "change_pct": -1.87, + "high": 15292.12, + "low": 14907.62, + "timestamp": "20260708161430" }, "创业板指": { - "price": 4216.7, - "prev_close": 4194.21, - "change_pct": 0.54, - "high": 4265.46, - "low": 4103.63, - "timestamp": "20260629161457" + "price": 3845.35, + "prev_close": 3911.91, + "change_pct": -1.7, + "high": 3965.39, + "low": 3824.33, + "timestamp": "20260708161445" }, "恒生指数": { - "price": 23026.68, - "prev_close": 22671.86, - "change_pct": 1.57, - "high": 23183.17, - "low": 22783.64, - "timestamp": "2026/06/29 18:30:51" + "price": 24199.46, + "prev_close": 23496.89, + "change_pct": 2.99, + "high": 24310.92, + "low": 23541.22, + "timestamp": "2026/07/08 18:31:17" }, "恒生科技": { - "price": 4393.01, - "prev_close": 4255.59, - "change_pct": 3.23, - "high": 4431.39, - "low": 4320.85, - "timestamp": "2026/06/29 16:09:22" + "price": 4731.02, + "prev_close": 4507.04, + "change_pct": 4.97, + "high": 4774.2, + "low": 4525.77, + "timestamp": "2026/07/08 16:08:50" } }, "sector_groups": { "": [ + { + "code": "000518", + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, { "code": "000657", - "name": "中钨高新", - "change_pct": -3.96, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选策略" }, { "code": "000700", - "name": "模塑科技", - "change_pct": -1.91, - "pnl_pct": -6.54, + "name": "", + "change_pct": -9.6, + "pnl_pct": -1.55, "type": "持仓策略" }, { "code": "000711", - "name": "ST京蓝", - "change_pct": -5.05, + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "000850", + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "000949", + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "002371", + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选策略" }, { "code": "00981", - "name": "中芯国际", - "change_pct": 6.0, - "pnl_pct": 11.67, + "name": "", + "change_pct": 3.2, + "pnl_pct": -0.18, "type": "持仓策略" }, { "code": "300308", - "name": "中际旭创", - "change_pct": -2.7, - "pnl_pct": -7.33, - "type": "持仓策略" + "name": "", + "change_pct": 0.57, + "pnl_pct": -14.29, + "type": "自选策略" + }, + { + "code": "301308", + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" }, { "code": "600519", - "name": "贵州茅台", - "change_pct": 2.25, + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "601101", + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选策略" }, { "code": "601318", "name": "中国平安", - "change_pct": 2.9, + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "603501", + "name": "", + "change_pct": null, + "pnl_pct": null, + "type": "自选策略" + }, + { + "code": "688041", + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选策略" }, { "code": "688630", - "name": "芯碁微装", - "change_pct": 3.81, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选策略" } @@ -112,8 +168,8 @@ "半导体/存储": [ { "code": "001309", - "name": "德明利", - "change_pct": 2.0, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选" } @@ -121,171 +177,94 @@ "新能源汽车": [ { "code": "002594", - "name": "比亚迪", - "change_pct": 1.84, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选" }, { "code": "01211", - "name": "比亚迪股份", - "change_pct": 0.34, - "pnl_pct": -30.49, + "name": "", + "change_pct": 2.88, + "pnl_pct": -18.14, "type": "持仓" }, - { - "code": "09868", - "name": "小鹏集团-W", - "change_pct": 3.99, - "pnl_pct": null, - "type": "自选" - }, { "code": "300750", - "name": "宁德时代", - "change_pct": 2.98, - "pnl_pct": -2.34, + "name": "", + "change_pct": -3.08, + "pnl_pct": -10.15, "type": "持仓" } ], "互联网": [ { "code": "00700", - "name": "腾讯控股", - "change_pct": 2.04, - "pnl_pct": -5.17, + "name": "", + "change_pct": 3.82, + "pnl_pct": 8.05, "type": "持仓" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "change_pct": 3.91, - "pnl_pct": null, - "type": "持仓" - } - ], - "新能源/光伏": [ - { - "code": "00968", - "name": "信义光能", - "change_pct": 1.5, - "pnl_pct": null, - "type": "自选" - } - ], - "消费电子/家电": [ - { - "code": "01070", - "name": "TCL电子", - "change_pct": 2.54, - "pnl_pct": null, - "type": "自选" } ], "煤炭/能源": [ { "code": "01088", - "name": "中国神华", - "change_pct": 1.18, - "pnl_pct": -10.44, + "name": "", + "change_pct": 2.17, + "pnl_pct": -9.74, "type": "自选" } ], "消费电子": [ { "code": "01478", - "name": "丘钛科技", - "change_pct": 0.58, - "pnl_pct": -48.78, + "name": "", + "change_pct": 6.13, + "pnl_pct": -48.63, "type": "持仓" } ], "电子/覆铜板": [ { "code": "01888", - "name": "建滔积层板", - "change_pct": -2.28, - "pnl_pct": 9.15, + "name": "", + "change_pct": -4.64, + "pnl_pct": -24.35, "type": "自选" } ], "房地产": [ { "code": "02202", - "name": "万科企业", - "change_pct": 0.45, - "pnl_pct": -52.68, - "type": "持仓" - } - ], - "金融/保险": [ - { - "code": "02318", - "name": "中国平安", - "change_pct": 2.67, - "pnl_pct": null, - "type": "自选" - } - ], - "医药/CRO": [ - { - "code": "02359", - "name": "药明康德", - "change_pct": 5.16, - "pnl_pct": null, - "type": "自选" - } - ], - "银行": [ - { - "code": "02388", - "name": "中银香港", - "change_pct": -1.59, - "pnl_pct": null, - "type": "持仓" - } - ], - "保险": [ - { - "code": "02628", - "name": "中国人寿", - "change_pct": 2.67, - "pnl_pct": null, - "type": "自选" - } - ], - "生物医药": [ - { - "code": "06160", - "name": "百济神州", - "change_pct": 5.18, - "pnl_pct": null, + "name": "", + "change_pct": 2.25, + "pnl_pct": -51.39, "type": "持仓" } ], "通信/光缆": [ { "code": "06869", - "name": "长飞光纤光缆", - "change_pct": -4.47, - "pnl_pct": -9.22, + "name": "", + "change_pct": -3.98, + "pnl_pct": -42.4, "type": "自选" } ], "新能源材料": [ { "code": "300035", - "name": "中科电气", - "change_pct": 0.0, - "pnl_pct": -36.34, + "name": "", + "change_pct": -2.34, + "pnl_pct": -40.02, "type": "持仓" } ], "工控自动化": [ { "code": "300124", - "name": "汇川技术", - "change_pct": 3.08, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选" } @@ -293,69 +272,69 @@ "光通信/光器件": [ { "code": "300548", - "name": "长芯博创", - "change_pct": -3.6, - "pnl_pct": 9.39, + "name": "", + "change_pct": 4.79, + "pnl_pct": -4.52, "type": "自选" } ], "商品/贵金属": [ { "code": "518880", - "name": "黄金ETF华安", - "change_pct": 0.7, - "pnl_pct": -30.69, + "name": "", + "change_pct": -0.09, + "pnl_pct": -29.53, "type": "持仓" } ], "电子元器件": [ { "code": "600563", - "name": "法拉电子", - "change_pct": 0.34, - "pnl_pct": 28.69, + "name": "", + "change_pct": -6.4, + "pnl_pct": -4.31, "type": "持仓" } ], "有色金属": [ { "code": "601899", - "name": "紫金矿业", - "change_pct": 2.75, - "pnl_pct": -35.35, + "name": "", + "change_pct": -0.94, + "pnl_pct": -31.41, "type": "持仓" } ], "储能/电力系统": [ { "code": "688411", - "name": "海博思创", - "change_pct": 10.48, - "pnl_pct": 7.14, + "name": "", + "change_pct": -6.94, + "pnl_pct": -8.6, "type": "持仓" } ], "化工/生物制造": [ { "code": "688639", - "name": "华恒生物", - "change_pct": 7.99, - "pnl_pct": -22.69, + "name": "", + "change_pct": -0.73, + "pnl_pct": -23.66, "type": "持仓" } ], "半导体/GPU": [ { "code": "688795", - "name": "摩尔线程-U", - "change_pct": 4.52, + "name": "", + "change_pct": null, "pnl_pct": null, "type": "自选" }, { "code": "688802", "name": "沐曦股份-U", - "change_pct": 8.65, + "change_pct": null, "pnl_pct": null, "type": "自选" } @@ -363,1003 +342,904 @@ "半导体/晶圆代工": [ { "code": "688981", - "name": "中芯国际", - "change_pct": 1.51, - "pnl_pct": 19.77, + "name": "", + "change_pct": 4.59, + "pnl_pct": 20.65, "type": "自选" } ] }, "stocks": [ { - "code": "000657", - "name": "中钨高新", + "code": "000518", + "name": "", "market": "A股", "type": "自选策略", "sector": "", "business": "", - "price": 95.57, - "prev_close": 99.51, - "open": 98.0, - "high": 101.5, - "low": 91.68, - "change_pct": -3.96, - "volume": 1015100.0, - "pe": 109.46, - "total_market_cap": 1388.56, - "high_52w": 89.56, - "low_52w": 0.94, - "turnover_rate": 6.99, - "amplitude": 9.87, + "price": 3.82, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | 目标109.46 | 止损91.0 | 买入区93.66~97.48", - "entry_zone": "93.66~97.48", - "stop_loss": 91.0, - "take_profit": 109.46, + "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标3.93 | 止损3.57 | 买入区3.74~3.71 | 信号:买入", + "entry_zone": "3.74~3.71", + "stop_loss": 3.57, + "take_profit": 3.93, "type": "自选策略", - "tech_snapshot": "形态:小阴线/bearish 量价:主动买盘占优 强撑:89.56 弱撑:91.0 弱压:100.82 强压:109.46 | MA5=103.22 MA10=96.25 MA20=83.3 MA60=64.92" + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:3.39 弱撑:3.57 弱压:3.94 强压:3.93 | MA5=3.55 MA10=3.39 MA20=3.3 MA60=3.28" + }, + "pnl_pct": null + }, + { + "code": "000657", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 73.95, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 缩量 | 目标84.52 | 止损71.69 | 买入区72.47~75.43", + "entry_zone": "72.47~75.43", + "stop_loss": 71.69, + "take_profit": 84.52, + "type": "自选策略", + "tech_snapshot": "形态:光头光脚阴线/neutral 量价:主动买盘占优 强撑:69.16 弱撑:71.69 弱压:77.5 强压:84.52 | MA5=83.49 MA10=90.87 MA20=90.73 MA60=70.05" }, "pnl_pct": null }, { "code": "000700", - "name": "模塑科技", + "name": "", "market": "A股", "type": "持仓策略", "sector": "", "business": "", - "price": 13.86, - "prev_close": 14.13, - "open": 14.19, - "high": 14.57, - "low": 13.4, - "change_pct": -1.91, - "volume": 864239.0, - "pe": 15.54, - "total_market_cap": 127.24, - "high_52w": 12.72, - "low_52w": 1.09, - "turnover_rate": 9.41, - "amplitude": 8.28, + "price": 14.6, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -9.6, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 14.83, - "shares": 1400, + "shares": 0, "position_pct": 2.41, "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:1.5),不建议加仓 | 止损13.91 | 目标15.54 | 买入区13.33~14.09 | 信号:持有", - "entry_zone": "13.33~14.09", - "stop_loss": 13.91, - "take_profit": 15.54, + "action": "持有观察 | 正常 | 损14.11 | 盈17.77 | 买14.31~14.89", + "entry_zone": "14.31~14.89", + "stop_loss": 13.19, + "take_profit": 16.21, "type": "持仓策略", - "tech_snapshot": "形态:小阴线/bearish 量价:主动买盘占优 强撑:12.72 弱撑:13.32 弱压:14.49 强压:15.54 | MA5=14.54 MA10=15.05 MA20=15.38 MA60=13.59" + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:12.31 弱撑:14.11 弱压:16.15 强压:17.77 | MA5=16.39 MA10=15.39 MA20=15.31 MA60=14.14" }, - "pnl_pct": -6.54 + "pnl_pct": -1.55 }, { "code": "000711", - "name": "ST京蓝", + "name": "", "market": "A股", "type": "自选策略", "sector": "", "business": "", - "price": 4.32, - "prev_close": 4.55, - "open": 4.4, - "high": 4.47, - "low": 4.32, - "change_pct": -5.05, - "volume": 424662.0, - "pe": 4.78, - "total_market_cap": 102.87, - "high_52w": 4.32, - "low_52w": 0.51, - "turnover_rate": 1.78, - "amplitude": 3.3, + "price": 5.69, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | 目标4.75 | 止损3.82 | 买入区4.23~4.41 | 信号:观望", - "entry_zone": "4.23~4.41", - "stop_loss": 3.82, - "take_profit": 4.75, + "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标5.96 | 止损5.2 | 买入区5.58~5.6", + "entry_zone": "5.58~5.6", + "stop_loss": 5.2, + "take_profit": 5.96, "type": "自选策略", - "tech_snapshot": "形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:3.99 弱撑:4.27 弱压:4.55 强压:4.75 | MA5=4.98 MA10=5.24 MA20=5.54 MA60=5.09" + "tech_snapshot": "形态:光头光脚阳线/neutral 量价:主动卖盘占优 强撑:4.88 弱撑:5.36 弱压:5.93 强压:5.96 | MA5=5.28 MA10=4.94 MA20=5.17 MA60=5.25" + }, + "pnl_pct": null + }, + { + "code": "000850", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 3.81, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标4.04 | 止损3.7 | 买入区3.73~3.84", + "entry_zone": "", + "stop_loss": 3.7, + "take_profit": 4.04, + "type": "自选策略", + "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:3.58 弱撑:3.72 弱压:3.91 强压:4.04 | MA5=3.89 MA10=3.73 MA20=3.74 MA60=4.19" + }, + "pnl_pct": null + }, + { + "code": "000949", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 5.61, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 目标5.99 | 止损5.44 | 买入区5.5~5.66 | 信号:弱势持有", + "entry_zone": "5.5~5.66", + "stop_loss": 5.44, + "take_profit": 5.99, + "type": "自选策略", + "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:5.09 弱撑:5.45 弱压:5.71 强压:5.99 | MA5=6.09 MA10=6.38 MA20=6.55 MA60=7.19" }, "pnl_pct": null }, { "code": "001309", - "name": "德明利", + "name": "", "market": "A股", "type": "自选", "sector": "半导体/存储", "business": "存储芯片(闪存主控/NAND/DRAM模组),嵌入式存储解决方案", - "price": 970.0, - "prev_close": 951.0, - "open": 939.95, - "high": 978.0, - "low": 886.66, - "change_pct": 2.0, - "volume": 171300.0, - "pe": 1046.1, - "total_market_cap": 1599.67, - "high_52w": 855.9, - "low_52w": 0.92, - "turnover_rate": 10.39, - "amplitude": 9.6, + "price": 825.0, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 止损参考810.0 | 买入区873.18~908.82", - "entry_zone": "873.18~908.82", - "stop_loss": 810.0, - "take_profit": 1153.26, + "action": "盈利持有 | 正常 | 目标936.1 | 止损786.59 | 买入区808.5~841.5", + "entry_zone": "", + "stop_loss": 786.59, + "take_profit": 936.1, "type": "自选策略", - "tech_snapshot": "形态:带下影阳线/neutral 量价:主动买盘占优 强撑:855.9 弱撑:911.77 弱压:1003.11 强压:1046.1 | MA5=828.82 MA10=748.06 MA20=686.42 MA60=593.36" + "tech_snapshot": "形态:带下影阴线/neutral 量价:主动买盘占优 强撑:765.9 弱撑:786.59 弱压:866.83 强压:936.1 | MA5=860.78 MA10=895.2 MA20=792.55 MA60=661.16" + }, + "pnl_pct": null + }, + { + "code": "002371", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 802.32, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 正常 | 目标862.13 | 止损770.21 | 买入区786.27~806.98 | 信号:买入", + "entry_zone": "786.27~806.98", + "stop_loss": 770.21, + "take_profit": 862.13, + "type": "自选策略", + "tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:738.09 弱撑:770.21 弱压:832.23 强压:862.13 | MA5=813.87 MA10=835.7 MA20=765.78 MA60=630.86" }, "pnl_pct": null }, { "code": "002594", - "name": "比亚迪", + "name": "", "market": "A股", "type": "自选", "sector": "新能源汽车", "business": "新能源整车(乘用车/商用车),动力电池(弗迪电池),半导体(比亚迪半导体)", - "price": 79.64, - "prev_close": 78.2, - "open": 78.2, - "high": 80.95, - "low": 77.6, - "change_pct": 1.84, - "volume": 523707.0, - "pe": 86.02, - "total_market_cap": 2776.74, - "high_52w": 70.38, - "low_52w": 0.94, - "turnover_rate": 1.5, - "amplitude": 4.28, + "price": 87.8, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标83.6 | 止损76.48 | 买入区78.05~79.79 | 信号:观望", - "entry_zone": "78.05~79.79", - "stop_loss": 76.48, - "take_profit": 83.6, + "action": "盈利持有 | 正常 | 目标94.19 | 止损79.31 | 买入区86.04~88.78 | 信号:买入", + "entry_zone": "86.04~88.78", + "stop_loss": 79.31, + "take_profit": 94.19, "type": "自选策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:主动卖盘占优 强撑:75.2 弱撑:77.84 弱压:81.19 强压:83.6 | MA5=97.85 MA10=97.95 MA20=96.9 MA60=96.07" + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:80.09 弱撑:85.94 弱压:89.0 强压:94.19 | MA5=86.73 MA10=83.4 MA20=85.89 MA60=94.3" }, "pnl_pct": null }, { "code": "00700", - "name": "腾讯控股", + "name": "", "market": "港股", "type": "持仓", "sector": "互联网", "business": "社交(微信/QQ),游戏,云服务,AI,投资", - "price": 420.2, - "prev_close": 411.8, + "price": 478.8, + "prev_close": null, "open": null, - "high": 432.0, - "low": 415.0, - "change_pct": 2.04, - "volume": 33066070.0, - "pe": 14.54, - "total_market_cap": 9108284766.0, - "high_52w": 677.7, - "low_52w": 411.0, + "high": null, + "low": null, + "change_pct": 3.82, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 443.13, "shares": 100, - "position_pct": 4.41, + "position_pct": null, "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损373.0 | 目标383.77 | 买入区411.8~423.07 | 信号:持有", - "entry_zone": "411.8~423.07", - "stop_loss": 373.0, - "take_profit": 383.77, - "type": "持仓策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:401.96 弱撑:411.8 弱压:431.13 强压:444.18 | MA5=608.6 MA10=615.0 MA20=612.77 MA60=565.12" - }, - "pnl_pct": -5.17 - }, - { - "code": "00968", - "name": "信义光能", - "market": "港股", - "type": "自选", - "sector": "新能源/光伏", - "business": "光伏玻璃全球龙头,太阳能发电站运营,EVA胶膜", - "price": 2.03, - "prev_close": 2.0, - "open": null, - "high": 2.06, - "low": 2.0, - "change_pct": 1.5, - "volume": 49476305.0, - "pe": 19.86, - "total_market_cap": 9147043615.0, - "high_52w": 4.092, - "low_52w": 1.93, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标2.14 | 止损1.75 | 买入区2.0~2.01", - "entry_zone": "2.0~2.01", - "stop_loss": 1.75, - "take_profit": 2.14, + "action": "盈利持有 | 正常 | 目标519.27 | 止损460.56 | 买入区465.3~484.04", + "entry_zone": "", + "stop_loss": 460.56, + "take_profit": 519.27, "type": "自选策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:1.92 弱撑:2.0 弱压:2.07 强压:2.14 | MA5=3.03 MA10=3.11 MA20=3.18 MA60=3.33" + "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:425.67 弱撑:461.2 弱压:484.33 强压:519.27 | MA5=450.0 MA10=436.2 MA20=442.1 MA60=461.01" }, - "pnl_pct": null + "pnl_pct": 8.05 }, { "code": "00981", - "name": "中芯国际", + "name": "", "market": "港股", "type": "持仓策略", "sector": "", "business": "", - "price": 84.8, - "prev_close": 80.0, + "price": 75.8, + "prev_close": null, "open": null, - "high": 85.8, - "low": 79.35, - "change_pct": 6.0, - "volume": 124513219.0, - "pe": 117.29, - "total_market_cap": 8560738730.0, - "high_52w": 93.5, - "low_52w": 41.5, + "high": null, + "low": null, + "change_pct": 3.2, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 75.94, - "shares": 500, + "shares": 0, "position_pct": 4.2, "strategy": { - "action": "盈利良好 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损80.81 | 目标85.82 | 买入区80.0~84.0 | 信号:持有", - "entry_zone": "80.0~84.0", - "stop_loss": 80.81, - "take_profit": 85.82, + "action": "盈利持有 | 正常 | 损73.0 | 盈87.9 | 买75.12~78.18", + "entry_zone": "75.12~78.18", + "stop_loss": 72.12, + "take_profit": 84.38, "type": "持仓策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:75.93 弱撑:80.0 弱压:85.98 强压:89.4 | MA5=81.51 MA10=78.21 MA20=77.92 MA60=70.26" + "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:64.6 弱撑:73.0 弱压:79.95 强压:87.9 | MA5=76.56 MA10=80.78 MA20=77.99 MA60=73.37" }, - "pnl_pct": 11.67 - }, - { - "code": "01070", - "name": "TCL电子", - "market": "港股", - "type": "自选", - "sector": "消费电子/家电", - "business": "电视机/显示器全球出货前列,光伏储能,智能家居", - "price": 12.93, - "prev_close": 12.61, - "open": null, - "high": 12.97, - "low": 12.41, - "change_pct": 2.54, - "volume": 5733644.0, - "pe": 22.68, - "total_market_cap": 2520935155.0, - "high_52w": 15.692, - "low_52w": 8.394, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标13.78 | 止损11.82 | 买入区12.64~12.68 | 信号:弱势持有", - "entry_zone": "12.64~12.68", - "stop_loss": 11.82, - "take_profit": 13.78, - "type": "自选策略", - "tech_snapshot": "形态:带下影阳线/bullish 量价:数据不足 强撑:11.71 弱撑:12.57 弱压:13.08 强压:13.78 | MA5=12.93 MA10=13.57 MA20=13.78 MA60=14.29" - }, - "pnl_pct": null + "pnl_pct": -0.18 }, { "code": "01088", - "name": "中国神华", + "name": "", "market": "港股", "type": "自选", "sector": "煤炭/能源", "business": "煤炭开采(动力煤/焦煤),煤化工,铁路/港口运输", - "price": 41.1, - "prev_close": 40.62, + "price": 41.42, + "prev_close": null, "open": null, - "high": 41.48, - "low": 40.18, - "change_pct": 1.18, - "volume": 16064016.0, - "pe": 16.56, - "total_market_cap": 21689434304.0, - "high_52w": 49.62, - "low_52w": 29.076, + "high": null, + "low": null, + "change_pct": 2.17, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 45.89, "shares": 500, "position_pct": 2.14, "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损40.06 | 目标43.8 | 买入区40.49~40.98 | 信号:持有", - "entry_zone": "40.49~40.98", - "stop_loss": 40.06, - "take_profit": 43.8, - "type": "持仓策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:37.68 弱撑:40.49 弱压:41.79 强压:44.29 | MA5=41.55 MA10=42.48 MA20=44.3 MA60=45.37" + "action": "盈利持有 | 正常 | 目标44.51 | 止损40.14 | 买入区40.67~41.89 | 信号:弱势持有", + "entry_zone": "", + "stop_loss": 40.14, + "take_profit": 44.51, + "type": "自选策略", + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:37.87 弱撑:40.54 弱压:41.83 强压:44.51 | MA5=40.5 MA10=40.68 MA20=42.26 MA60=44.67" }, - "pnl_pct": -10.44 + "pnl_pct": -9.74 }, { "code": "01211", - "name": "比亚迪股份", + "name": "", "market": "港股", "type": "持仓", "sector": "新能源汽车", "business": "新能源整车(乘用车/商用车),动力电池,电机电控", - "price": 72.9, - "prev_close": 72.65, + "price": 85.85, + "prev_close": null, "open": null, - "high": 74.6, - "low": 72.45, - "change_pct": 0.34, - "volume": 24806182.0, - "pe": 35.92, - "total_market_cap": 9117197565.0, - "high_52w": 135.889, - "low_52w": 72.2, + "high": null, + "low": null, + "change_pct": 2.88, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 104.87, "shares": 600, "position_pct": 4.62, "strategy": { - "action": "深套持有 | 深套持有 | 止损65.47 | 目标76.78 | 买入区66.06~77.07 | 信号:持有", - "entry_zone": "66.06~77.07", - "stop_loss": 65.47, - "take_profit": 76.78, - "type": "持仓策略", - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:66.95 弱撑:72.33 弱压:74.48 强压:79.98 | MA5=96.92 MA10=96.4 MA20=97.59 MA60=97.92" + "action": "盈利持有 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标96.43 | 止损81.1 | 买入区83.79~87.21 | 信号:买入", + "entry_zone": "", + "stop_loss": 81.1, + "take_profit": 96.43, + "type": "自选策略", + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:73.53 弱撑:83.45 弱压:87.02 强压:96.43 | MA5=83.0 MA10=78.5 MA20=80.91 MA60=93.33" }, - "pnl_pct": -30.49 + "pnl_pct": -18.14 }, { "code": "01478", - "name": "丘钛科技", + "name": "", "market": "港股", "type": "持仓", "sector": "消费电子", "business": "摄像头模组(CCM),指纹识别模组,车载摄像头", - "price": 6.9, - "prev_close": 6.86, + "price": 6.92, + "prev_close": null, "open": null, - "high": 6.95, - "low": 6.74, - "change_pct": 0.58, - "volume": 5045134.0, - "pe": 4.99, - "total_market_cap": 1194890725.0, - "high_52w": 16.44, - "low_52w": 6.6, + "high": null, + "low": null, + "change_pct": 6.13, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 13.47, "shares": 11000, "position_pct": 7.97, "strategy": { - "action": "深套持有 | 深套持有 | 止损6.17 | 目标7.14 | 买入区6.23~7.27 | 信号:持有", - "entry_zone": "6.23~7.27", - "stop_loss": 6.17, - "take_profit": 7.14, + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 正常 | 损6.51 | 盈7.34 | 买6.67~6.84 | 信号:弱势持有", + "entry_zone": "", + "stop_loss": 6.51, + "take_profit": 7.34, "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:6.3 弱撑:6.79 弱压:7.0 强压:7.44 | MA5=8.6 MA10=8.92 MA20=9.28 MA60=8.9" + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:6.18 弱撑:6.52 弱压:7.01 强压:7.34 | MA5=6.74 MA10=6.92 MA20=7.69 MA60=8.44" }, - "pnl_pct": -48.78 + "pnl_pct": -48.63 }, { "code": "01888", - "name": "建滔积层板", + "name": "", "market": "港股", "type": "自选", "sector": "电子/覆铜板", "business": "覆铜板(CCL)全球龙头,印刷线路板(PCB),玻璃纤维布", - "price": 96.3, - "prev_close": 98.55, + "price": 66.75, + "prev_close": null, "open": null, - "high": 102.4, - "low": 89.05, - "change_pct": -2.28, - "volume": 71922441.0, - "pe": 124.27, - "total_market_cap": 3151450000.0, - "high_52w": 107.2, - "low_52w": 8.52, + "high": null, + "low": null, + "change_pct": -4.64, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, - "cost": 88.23, - "shares": 500, + "cost": 88.24, + "shares": 0, "position_pct": 5.28, "strategy": { - "action": "盈利良好 | 止损85.43 | 目标95.43 | 买入区89.6~94.08 | 信号:持有", - "entry_zone": "89.6~94.08", - "stop_loss": 85.43, - "take_profit": 95.43, + "action": "深套持有 | 深套持有 | 缩量 | 损64.72 | 盈93.02 | 买66.54~69.26", + "entry_zone": "66.54~69.26", + "stop_loss": 58.77, + "take_profit": 80.37, "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/neutral 量价:数据不足 强撑:81.55 弱撑:89.6 弱压:102.95 强压:110.45 | MA5=95.1 MA10=88.76 MA20=72.25 MA60=47.53" + "tech_snapshot": "形态:光头光脚阴线/neutral 量价:数据不足 强撑:47.02 弱撑:65.53 弱压:72.38 强压:93.02 | MA5=75.54 MA10=86.95 MA20=82.61 MA60=54.68" }, - "pnl_pct": 9.15 + "pnl_pct": -24.35 }, { "code": "02202", - "name": "万科企业", + "name": "", "market": "港股", "type": "持仓", "sector": "房地产", "business": "住宅开发,物业服务(万物云),商业地产,长租", - "price": 2.21, - "prev_close": 2.2, + "price": 2.27, + "prev_close": null, "open": null, - "high": 2.28, - "low": 2.16, - "change_pct": 0.45, - "volume": 22750076.0, - "pe": -0.98, - "total_market_cap": 11930709471.0, - "high_52w": 5.99, - "low_52w": 2.16, + "high": null, + "low": null, + "change_pct": 2.25, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, "cost": 4.67, "shares": 19700, "position_pct": 4.6, "strategy": { - "action": "深套持有 | 深套持有 | 止损1.82 | 目标2.09 | 买入区2.0~2.33 | 信号:持有", - "entry_zone": "2.0~2.33", - "stop_loss": 1.82, - "take_profit": 2.09, - "type": "持仓策略", - "tech_snapshot": "形态:长影星线/neutral 量价:数据不足 强撑:2.02 弱撑:2.16 弱压:2.28 强压:2.42 | MA5=3.35 MA10=3.39 MA20=3.46 MA60=3.53" - }, - "pnl_pct": -52.68 - }, - { - "code": "02318", - "name": "中国平安", - "market": "港股", - "type": "自选", - "sector": "金融/保险", - "business": "综合金融(保险/银行/证券/信托),科技金融", - "price": 51.9, - "prev_close": 50.55, - "open": null, - "high": 52.45, - "low": 50.35, - "change_pct": 2.67, - "volume": 43912077.0, - "pe": 8.29, - "total_market_cap": 18107641995.0, - "high_52w": 72.689, - "low_52w": 45.648, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | 止损参考49.36 | 买入区50.08~51.12 | 信号:弱势持有", - "entry_zone": "50.08~51.12", - "stop_loss": 49.36, - "take_profit": 53.76, + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标2.43 | 止损2.18 | 买入区2.22~2.28 | 信号:弱势持有", + "entry_zone": "", + "stop_loss": 2.18, + "take_profit": 2.43, "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:47.45 弱撑:50.55 弱压:52.88 强压:55.78 | MA5=66.58 MA10=68.47 MA20=68.47 MA60=67.52" + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:2.07 弱撑:2.21 弱压:2.31 强压:2.43 | MA5=2.27 MA10=2.25 MA20=2.39 MA60=2.74" }, - "pnl_pct": null - }, - { - "code": "02359", - "name": "药明康德", - "market": "港股", - "type": "自选", - "sector": "医药/CRO", - "business": "小分子药物发现/临床前CRO,化学药/生物药CDMO", - "price": 152.9, - "prev_close": 145.4, - "open": null, - "high": 154.6, - "low": 144.4, - "change_pct": 5.16, - "volume": 13203157.0, - "pe": 21.5, - "total_market_cap": 2963608255.0, - "high_52w": 154.6, - "low_52w": 73.063, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标163.24 | 止损149.19 | 买入区150.72~152.54 | 信号:买入", - "entry_zone": "150.72~152.54", - "stop_loss": 149.19, - "take_profit": 163.24, - "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:138.63 弱撑:145.4 弱压:157.47 强压:163.24 | MA5=139.14 MA10=132.31 MA20=128.35 MA60=128.79" - }, - "pnl_pct": null - }, - { - "code": "02388", - "name": "中银香港", - "market": "港股", - "type": "持仓", - "sector": "银行", - "business": "香港发钞行之一,零售银行,财富管理,跨境业务", - "price": 43.6, - "prev_close": 44.305, - "open": null, - "high": 44.4, - "low": 43.38, - "change_pct": -1.59, - "volume": 18551296.0, - "pe": 11.49, - "total_market_cap": 10572780266.0, - "high_52w": 48.105, - "low_52w": 31.375, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | 目标47.32 | 止损42.37 | 买入区42.81~44.35 | 信号:关注", - "entry_zone": "42.81~44.35", - "stop_loss": 42.37, - "take_profit": 47.32, - "type": "自选策略", - "tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:40.33 弱撑:43.25 弱压:44.3 强压:47.32 | MA5=46.6 MA10=47.51 MA20=47.55 MA60=45.8" - }, - "pnl_pct": null - }, - { - "code": "02628", - "name": "中国人寿", - "market": "港股", - "type": "自选", - "sector": "保险", - "business": "人身保险(寿险/健康险/意外险),养老保险", - "price": 27.64, - "prev_close": 26.92, - "open": null, - "high": 28.28, - "low": 26.94, - "change_pct": 2.67, - "volume": 44946286.0, - "pe": 8.84, - "total_market_cap": 28264705000.0, - "high_52w": 36.16, - "low_52w": 17.72, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 目标29.52 | 止损26.97 | 买入区27.24~27.9", - "entry_zone": "27.24~27.9", - "stop_loss": 26.97, - "take_profit": 29.52, - "type": "自选策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:25.8 弱撑:26.92 弱压:28.38 强压:29.52 | MA5=28.42 MA10=29.95 MA20=31.14 MA60=31.23" - }, - "pnl_pct": null - }, - { - "code": "06160", - "name": "百济神州", - "market": "港股", - "type": "持仓", - "sector": "生物医药", - "business": "创新药(肿瘤/免疫),泽布替尼/替雷利珠单抗,全球化", - "price": 174.5, - "prev_close": 165.9, - "open": null, - "high": 177.0, - "low": 165.5, - "change_pct": 5.18, - "volume": 7213063.0, - "pe": 37.74, - "total_market_cap": 1541419108.0, - "high_52w": 229.4, - "low_52w": 144.1, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标186.83 | 止损164.24 | 买入区172.19~174.27 | 信号:买入", - "entry_zone": "172.19~174.27", - "stop_loss": 164.24, - "take_profit": 186.83, - "type": "自选策略", - "tech_snapshot": "形态:带下影阳线/bullish 量价:数据不足 强撑:158.7 弱撑:165.9 弱压:180.03 强压:186.83 | MA5=184.9 MA10=191.56 MA20=196.94 MA60=193.6" - }, - "pnl_pct": null + "pnl_pct": -51.39 }, { "code": "06869", - "name": "长飞光纤光缆", + "name": "", "market": "港股", "type": "自选", "sector": "通信/光缆", "business": "光纤预制棒/光纤/光缆全球龙头,通信线缆,数据中心", - "price": 239.4, - "prev_close": 250.6, + "price": 151.9, + "prev_close": null, "open": null, - "high": 256.6, - "low": 227.2, - "change_pct": -4.47, - "volume": 21884160.0, - "pe": 88.36, - "total_market_cap": 827905108.0, - "high_52w": 305.0, - "low_52w": 18.76, + "high": null, + "low": null, + "change_pct": -3.98, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, "turnover_rate": null, "amplitude": null, - "cost": 263.72, - "shares": 500, + "cost": 263.73, + "shares": 0, "position_pct": 13.47, "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损175.78 | 目标260.3 | 买入区226.73~241.67 | 信号:持有", - "entry_zone": "226.73~241.67", - "stop_loss": 175.78, - "take_profit": 260.3, + "action": "深套持有 | 深套持有 | 放量下跌⚠️ | 近5日增量跌价=⚠️出货型 | 损131.26 | 盈235.57 | 买150.23~156.37", + "entry_zone": "150.23~156.37", + "stop_loss": 134.97, + "take_profit": 226.15, "type": "持仓策略", - "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:182.07 弱撑:226.73 弱压:256.13 强压:301.27 | MA5=270.0 MA10=249.88 MA20=243.41 MA60=229.24" + "tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:74.37 弱撑:147.53 弱压:161.33 强压:235.57 | MA5=176.0 MA10=217.42 MA20=229.55 MA60=228.94" }, - "pnl_pct": -9.22 - }, - { - "code": "09868", - "name": "小鹏集团-W", - "market": "港股", - "type": "自选", - "sector": "新能源汽车", - "business": "智能电动汽车(SUV/轿车),自动驾驶技术(XNGP),飞行汽车", - "price": 47.4, - "prev_close": 45.58, - "open": null, - "high": 49.14, - "low": 46.22, - "change_pct": 3.99, - "volume": 19243364.0, - "pe": -11.24, - "total_market_cap": 1916069323.0, - "high_52w": 110.8, - "low_52w": 45.32, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 止损参考45.44 | 买入区46.98~47.89", - "entry_zone": "46.98~47.89", - "stop_loss": 45.44, - "take_profit": 51.57, - "type": "自选策略", - "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:43.8 弱撑:45.58 弱压:49.02 强压:51.44 | MA5=79.1 MA10=79.12 MA20=79.16 MA60=73.45" - }, - "pnl_pct": null - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "market": "港股", - "type": "持仓", - "sector": "互联网", - "business": "电商(淘宝/天猫),云计算(阿里云),本地生活(饿了么/高德)", - "price": 93.0, - "prev_close": 89.5, - "open": null, - "high": 95.45, - "low": 91.15, - "change_pct": 3.91, - "volume": 123324036.0, - "pe": 15.22, - "total_market_cap": 19206078670.0, - "high_52w": 185.173, - "low_52w": 88.65, - "turnover_rate": null, - "amplitude": null, - "cost": 0, - "shares": 0, - "position_pct": 0, - "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标100.13 | 止损80.8 | 买入区91.68~93.28", - "entry_zone": "91.68~93.28", - "stop_loss": 80.8, - "take_profit": 100.13, - "type": "自选策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:数据不足 强撑:86.53 弱撑:89.5 弱压:95.52 强压:100.13 | MA5=146.48 MA10=147.25 MA20=155.7 MA60=148.36" - }, - "pnl_pct": null + "pnl_pct": -42.4 }, { "code": "300035", - "name": "中科电气", + "name": "", "market": "A股", "type": "持仓", "sector": "新能源材料", "business": "锂电负极材料(石墨化/硅碳),电磁屏蔽设备", - "price": 14.19, - "prev_close": 14.19, - "open": 14.18, - "high": 14.31, - "low": 13.74, - "change_pct": 0.0, - "volume": 203996.0, - "pe": 17.03, - "total_market_cap": 82.78, - "high_52w": 11.35, - "low_52w": 0.82, - "turnover_rate": 3.5, - "amplitude": 4.02, + "price": 13.37, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -2.34, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 22.29, "shares": 1400, "position_pct": 2.42, "strategy": { - "action": "深套持有 | 深套持有 | 止损13.28 | 目标15.29 | 买入区12.77~14.9 | 信号:持有", - "entry_zone": "12.77~14.9", - "stop_loss": 13.28, - "take_profit": 15.29, + "action": "深套持有 | 深套持有 | 缩量 | 止损10.74 | 目标12.2 | 买入区12.03~14.04 | 信号:持有", + "entry_zone": "12.03~14.04", + "stop_loss": 10.74, + "take_profit": 12.2, "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:12.7 弱撑:13.85 弱压:14.42 强压:15.46 | MA5=21.64 MA10=21.74 MA20=22.02 MA60=21.43" + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:12.78 弱撑:13.19 弱压:13.69 强压:14.12 | MA5=13.89 MA10=14.18 MA20=15.62 MA60=18.6" }, - "pnl_pct": -36.34 + "pnl_pct": -40.02 }, { "code": "300124", - "name": "汇川技术", + "name": "", "market": "A股", "type": "自选", "sector": "工控自动化", "business": "工业自动化(伺服系统/PLC/变频器),新能源汽车电驱系统", - "price": 65.23, - "prev_close": 63.28, - "open": 62.98, - "high": 65.97, - "low": 62.01, - "change_pct": 3.08, - "volume": 482978.0, - "pe": 75.94, - "total_market_cap": 1572.25, - "high_52w": 50.62, - "low_52w": 1.13, - "turnover_rate": 2.0, - "amplitude": 6.26, + "price": 63.2, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 目标69.14 | 止损62.21 | 买入区63.93~65.36 | 信号:观望", - "entry_zone": "63.93~65.36", - "stop_loss": 62.21, - "take_profit": 69.14, + "action": "盈利持有 | 放量下跌⚠️ | 近5日增量跌价=⚠️出货型 | 目标75.61 | 止损61.3 | 买入区61.94~64.46 | 信号:关注", + "entry_zone": "", + "stop_loss": 61.3, + "take_profit": 75.61, "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:59.66 弱撑:62.84 弱压:66.8 强压:69.14 | MA5=73.35 MA10=75.2 MA20=77.15 MA60=73.84" + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动卖盘占优 强撑:52.84 弱撑:62.22 弱压:66.05 强压:75.61 | MA5=67.63 MA10=66.8 MA20=67.85 MA60=70.71" }, "pnl_pct": null }, { "code": "300308", - "name": "中际旭创", - "market": "A股", - "type": "持仓策略", - "sector": "", - "business": "", - "price": 1220.0, - "prev_close": 1253.89, - "open": 1239.0, - "high": 1264.21, - "low": 1169.49, - "change_pct": -2.7, - "volume": 352899.0, - "pe": 1504.67, - "total_market_cap": 13541.27, - "high_52w": 1003.11, - "low_52w": 1.13, - "turnover_rate": 3.18, - "amplitude": 7.55, - "cost": 1316.53, - "shares": 100, - "position_pct": 15.27, - "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损1155.88 | 目标1291.54 | 买入区1171.59~1217.9 | 信号:持有", - "entry_zone": "1171.59~1217.9", - "stop_loss": 1155.88, - "take_profit": 1291.54, - "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:1090.45 弱撑:1171.59 弱压:1266.31 强压:1345.35 | MA5=1316.36 MA10=1286.79 MA20=1234.59 MA60=991.33" - }, - "pnl_pct": -7.33 - }, - { - "code": "300548", - "name": "长芯博创", - "market": "A股", - "type": "自选", - "sector": "光通信/光器件", - "business": "光无源器件(分路器/波分复用),光有源器件,数据中心光互联", - "price": 253.19, - "prev_close": 262.65, - "open": 262.0, - "high": 268.96, - "low": 243.58, - "change_pct": -3.6, - "volume": 142255.0, - "pe": 315.18, - "total_market_cap": 689.59, - "high_52w": 210.12, - "low_52w": 0.64, - "turnover_rate": 5.22, - "amplitude": 9.66, - "cost": 231.46, - "shares": 100, - "position_pct": 3.2, - "strategy": { - "action": "盈利良好 | 止损223.68 | 目标257.59 | 买入区241.53~253.61 | 信号:持有", - "entry_zone": "241.53~253.61", - "stop_loss": 223.68, - "take_profit": 257.59, - "type": "持仓策略", - "tech_snapshot": "形态:带下影阴线/neutral 量价:主动买盘占优 强撑:212.34 弱撑:241.53 弱压:266.91 强压:298.14 | MA5=282.18 MA10=273.89 MA20=252.1 MA60=241.84" - }, - "pnl_pct": 9.39 - }, - { - "code": "300750", - "name": "宁德时代", - "market": "A股", - "type": "持仓", - "sector": "新能源汽车", - "business": "动力电池(全球第一),储能电池,电池回收", - "price": 392.36, - "prev_close": 381.0, - "open": 386.96, - "high": 396.0, - "low": 378.2, - "change_pct": 2.98, - "volume": 425259.0, - "pe": 457.2, - "total_market_cap": 16702.81, - "high_52w": 304.8, - "low_52w": 1.01, - "turnover_rate": 1.0, - "amplitude": 4.67, - "cost": 401.78, - "shares": 100, - "position_pct": 4.64, - "strategy": { - "action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损374.88 | 目标403.64 | 买入区381.0~388.85 | 信号:持有", - "entry_zone": "381.0~388.85", - "stop_loss": 374.88, - "take_profit": 403.64, - "type": "持仓策略", - "tech_snapshot": "形态:带下影阳线/bullish 量价:买卖均衡 强撑:357.24 弱撑:381.0 弱压:399.51 强压:420.46 | MA5=395.95 MA10=396.68 MA20=402.28 MA60=414.59" - }, - "pnl_pct": -2.34 - }, - { - "code": "518880", - "name": "黄金ETF华安", - "market": "A股", - "type": "持仓", - "sector": "商品/贵金属", - "business": "黄金ETF,跟踪国内黄金现货价格", - "price": 8.449, - "prev_close": 8.39, - "open": 8.445, - "high": 8.479, - "low": 8.404, - "change_pct": 0.7, - "volume": 3398349.0, - "pe": 9.229, - "total_market_cap": 878.66, - "high_52w": 7.551, - "low_52w": 0.79, - "turnover_rate": 3.27, - "amplitude": 0.89, - "cost": 12.19, - "shares": 2400, - "position_pct": 2.45, - "strategy": { - "action": "深套持有 | 深套持有 | 止损7.91 | 目标9.02 | 买入区7.6~8.87 | 信号:持有", - "entry_zone": "7.6~8.87", - "stop_loss": 7.91, - "take_profit": 9.02, - "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:7.77 弱撑:8.39 弱压:8.48 强压:9.12 | MA5=9.56 MA10=9.52 MA20=9.74 MA60=10.33" - }, - "pnl_pct": -30.69 - }, - { - "code": "600519", - "name": "贵州茅台", + "name": "", "market": "A股", "type": "自选策略", "sector": "", "business": "", - "price": 1194.96, - "prev_close": 1168.63, - "open": 1169.0, - "high": 1215.0, - "low": 1151.01, - "change_pct": 2.25, - "volume": 66878.0, - "pe": 1285.49, - "total_market_cap": 14937.98, - "high_52w": 1051.77, - "low_52w": 1.29, - "turnover_rate": 0.53, - "amplitude": 5.48, + "price": 1128.35, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": 0.57, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 1316.53, + "shares": 100, + "position_pct": 15.27, + "strategy": { + "action": "盈利持有 | 正常 | 目标1205.48 | 止损1094.5 | 买入区1105.78~1138.89", + "entry_zone": "", + "stop_loss": 1094.5, + "take_profit": 1205.48, + "type": "自选策略", + "tech_snapshot": "形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:1076.0 弱撑:1102.17 弱压:1166.91 强压:1205.48 | MA5=1121.63 MA10=1189.86 MA20=1223.01 MA60=1064.33" + }, + "pnl_pct": -14.29 + }, + { + "code": "300548", + "name": "", + "market": "A股", + "type": "自选", + "sector": "光通信/光器件", + "business": "光无源器件(分路器/波分复用),光有源器件,数据中心光互联", + "price": 220.99, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": 4.79, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 231.46, + "shares": 0, + "position_pct": 3.2, + "strategy": { + "action": "持有观察 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | 正常 | 损210.88 | 盈241.21 | 买216.57~223.01", + "entry_zone": "216.57~223.01", + "stop_loss": 199.61, + "take_profit": 219.98, + "type": "持仓策略", + "tech_snapshot": "形态:带上影阳线/neutral 量价:主动买盘占优 强撑:196.41 弱撑:210.88 弱压:228.68 强压:241.21 | MA5=217.8 MA10=241.88 MA20=253.37 MA60=249.5" + }, + "pnl_pct": -4.52 + }, + { + "code": "300750", + "name": "", + "market": "A股", + "type": "持仓", + "sector": "新能源汽车", + "business": "动力电池(全球第一),储能电池,电池回收", + "price": 361.0, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -3.08, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 401.78, + "shares": 100, + "position_pct": 4.64, + "strategy": { + "action": "持有观察 | ⚠️盈亏比偏低(1:1.4),不建议加仓 | 缩量回踩(洗盘末端) | 近5日减量跌价=洗盘特征 | 止损337.35 | 目标395.11 | 买入区355.77~366.23 | 信号:持有", + "entry_zone": "", + "stop_loss": 337.35, + "take_profit": 395.11, + "type": "持仓策略", + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:337.35 弱撑:355.77 弱压:372.49 强压:395.11 | MA5=374.07 MA10=382.25 MA20=388.85 MA60=413.27" + }, + "pnl_pct": -10.15 + }, + { + "code": "301308", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 592.71, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 目标1250.98 | 止损1158.98 | 买入区1171.06~1195.78", - "entry_zone": "1171.06~1195.78", - "stop_loss": 1158.98, - "take_profit": 1250.98, + "action": "盈利持有 | 正常 | 目标741.03 | 止损572.25 | 买入区580.86~604.56", + "entry_zone": "580.86~604.56", + "stop_loss": 572.25, + "take_profit": 741.03, "type": "自选策略", - "tech_snapshot": "形态:带上影阳线/neutral 量价:主动买盘占优 强撑:1123.0 弱撑:1158.98 弱压:1222.97 强压:1250.98 | MA5=1376.16 MA10=1380.75 MA20=1369.51 MA60=1396.07" + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:502.32 弱撑:572.25 弱压:627.9 强压:741.03 | MA5=623.93 MA10=657.13 MA20=607.95 MA60=522.55" + }, + "pnl_pct": null + }, + { + "code": "518880", + "name": "", + "market": "A股", + "type": "持仓", + "sector": "商品/贵金属", + "business": "黄金ETF,跟踪国内黄金现货价格", + "price": 8.59, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -0.09, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 12.19, + "shares": 2400, + "position_pct": 2.45, + "strategy": { + "action": "深套持有 | 深套持有 | 缩量 | 止损7.51 | 目标8.64 | 买入区7.73~9.02 | 信号:持有", + "entry_zone": "7.73~9.02", + "stop_loss": 7.51, + "take_profit": 8.64, + "type": "持仓策略", + "tech_snapshot": "形态:光头光脚阳线/bullish 量价:数据不足 强撑:8.15 弱撑:8.54 弱压:8.62 强压:9.0 | MA5=8.59 MA10=8.47 MA20=8.61 MA60=9.3" + }, + "pnl_pct": -29.53 + }, + { + "code": "600519", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 1199.3, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 缩量 | 目标1265.1 | 止损1163.32 | 买入区1175.31~1204.03 | 信号:弱势持有", + "entry_zone": "1175.31~1204.03", + "stop_loss": 1163.32, + "take_profit": 1265.1, + "type": "自选策略", + "tech_snapshot": "形态:带下影阳线/bullish 量价:主动买盘占优 强撑:1119.75 弱撑:1183.87 弱压:1207.85 强压:1265.1 | MA5=1198.49 MA10=1191.86 MA20=1206.92 MA60=1287.4" }, "pnl_pct": null }, { "code": "600563", - "name": "法拉电子", + "name": "", "market": "A股", "type": "持仓", "sector": "电子元器件", "business": "薄膜电容器(全球前三),新能源车/风光/工控用电容", - "price": 189.4, - "prev_close": 188.76, - "open": 191.0, - "high": 198.8, - "low": 185.6, - "change_pct": 0.34, - "volume": 169242.0, - "pe": 207.64, - "total_market_cap": 426.15, - "high_52w": 169.88, - "low_52w": 1.1, - "turnover_rate": 7.52, - "amplitude": 6.99, + "price": 140.84, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -6.4, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 147.18, "shares": 100, "position_pct": 2.3, "strategy": { - "action": "盈利良好 | 止损167.33 | 目标179.4 | 买入区183.73~192.92 | 信号:持有", - "entry_zone": "183.73~192.92", - "stop_loss": 167.33, - "take_profit": 179.4, + "action": "持有观察 | 缩量回踩(洗盘末端) | 近5日减量跌价=洗盘特征 | 止损135.42 | 目标155.46 | 买入区137.01~143.86 | 信号:持有", + "entry_zone": "", + "stop_loss": 135.42, + "take_profit": 155.46, "type": "持仓策略", - "tech_snapshot": "形态:倒T线/射击之星/neutral 量价:买卖均衡 强撑:170.17 弱撑:183.73 弱压:196.93 强压:207.64 | MA5=178.6 MA10=169.98 MA20=164.66 MA60=141.48" + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:135.42 弱撑:137.01 弱压:150.47 强压:155.46 | MA5=153.26 MA10=170.79 MA20=166.48 MA60=147.47" }, - "pnl_pct": 28.69 + "pnl_pct": -4.31 + }, + { + "code": "601101", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 12.23, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 目标13.35 | 止损11.75 | 买入区11.99~12.39", + "entry_zone": "11.99~12.39", + "stop_loss": 11.75, + "take_profit": 13.35, + "type": "自选策略", + "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:11.27 弱撑:11.75 弱压:12.79 强压:13.35 | MA5=11.9 MA10=11.44 MA20=11.56 MA60=10.83" + }, + "pnl_pct": null }, { "code": "601318", @@ -1368,194 +1248,260 @@ "type": "自选策略", "sector": "", "business": "", - "price": 48.6, - "prev_close": 47.23, - "open": 47.3, - "high": 48.87, - "low": 46.9, - "change_pct": 2.9, - "volume": 1089609.0, - "pe": 51.95, - "total_market_cap": 5180.79, - "high_52w": 42.51, - "low_52w": 0.82, - "turnover_rate": 1.02, - "amplitude": 4.17, + "price": null, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标50.71 | 止损47.14 | 买入区47.63~48.57 | 信号:观望", - "entry_zone": "47.63~48.57", - "stop_loss": 47.14, - "take_profit": 50.71, + "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标51.96 | 止损参考0.0 | 买入区0.0~0.0 | 信号:弱势持有", + "entry_zone": "", + "stop_loss": 49.07, + "take_profit": 51.96, "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动卖盘占优 强撑:45.53 弱撑:47.23 弱压:49.35 强压:50.71 | MA5=68.18 MA10=69.11 MA20=67.13 MA60=63.42" + "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:46.91 弱撑:49.07 弱压:49.91 强压:51.96 | MA5=49.39 MA10=48.93 MA20=50.5 MA60=53.31" }, "pnl_pct": null }, { "code": "601899", - "name": "紫金矿业", + "name": "", "market": "A股", "type": "持仓", "sector": "有色金属", "business": "铜矿/金矿/锌矿开采冶炼,全球布局(刚果金/塞尔维亚)", - "price": 25.79, - "prev_close": 25.1, - "open": 25.35, - "high": 25.96, - "low": 24.98, - "change_pct": 2.75, - "volume": 3232927.0, - "pe": 27.61, - "total_market_cap": 5313.2, - "high_52w": 22.59, - "low_52w": 0.77, - "turnover_rate": 1.57, - "amplitude": 3.9, + "price": 27.36, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -0.94, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 39.89, "shares": 2400, "position_pct": 7.34, "strategy": { - "action": "深套持有 | 深套持有 | 止损23.01 | 目标26.51 | 买入区23.21~27.08 | 信号:持有", - "entry_zone": "23.21~27.08", - "stop_loss": 23.01, - "take_profit": 26.51, + "action": "深套持有 | 深套持有 | 缩量 | 止损22.96 | 目标26.23 | 买入区24.62~28.73 | 信号:持有", + "entry_zone": "24.62~28.73", + "stop_loss": 22.96, + "take_profit": 26.23, "type": "持仓策略", - "tech_snapshot": "形态:带下影阳线/bullish 量价:主动买盘占优 强撑:23.51 弱撑:25.1 弱压:26.17 强压:27.61 | MA5=32.41 MA10=34.06 MA20=35.71 MA60=36.48" + "tech_snapshot": "形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:26.03 弱撑:26.76 弱压:27.99 强压:28.76 | MA5=27.48 MA10=26.41 MA20=27.6 MA60=30.75" }, - "pnl_pct": -35.35 + "pnl_pct": -31.41 }, { - "code": "688411", - "name": "海博思创", - "market": "A股", - "type": "持仓", - "sector": "储能/电力系统", - "business": "电化学储能系统集成,电力辅助服务,新能源配储", - "price": 286.0, - "prev_close": 258.88, - "open": 260.12, - "high": 288.49, - "low": 260.12, - "change_pct": 10.48, - "volume": 8470055.0, - "pe": 310.66, - "total_market_cap": 379.16, - "high_52w": 207.1, - "low_52w": 1.48, - "turnover_rate": 6.39, - "amplitude": 10.96, - "cost": 266.95, - "shares": 200, - "position_pct": 6.31, - "strategy": { - "action": "盈利良好 | 止损263.66 | 目标283.32 | 买入区258.88~271.82 | 信号:持有", - "entry_zone": "258.88~271.82", - "stop_loss": 263.66, - "take_profit": 283.32, - "type": "持仓策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:244.9 弱撑:258.88 弱压:296.29 强压:310.66 | MA5=263.81 MA10=256.47 MA20=250.21 MA60=243.32" - }, - "pnl_pct": 7.14 - }, - { - "code": "688630", - "name": "芯碁微装", + "code": "603501", + "name": "", "market": "A股", "type": "自选策略", "sector": "", "business": "", - "price": 548.07, - "prev_close": 527.97, - "open": 538.0, - "high": 558.0, - "low": 503.66, - "change_pct": 3.81, - "volume": 6403258.0, - "pe": 633.56, - "total_market_cap": 722.03, - "high_52w": 422.38, - "low_52w": 1.12, - "turnover_rate": 4.86, - "amplitude": 10.29, + "price": 100.95, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标590.92 | 止损469.2 | 买入区537.11~545.46 | 信号:买入", - "entry_zone": "537.11~545.46", - "stop_loss": 469.2, - "take_profit": 590.92, + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 正常 | 目标106.95 | 止损97.48 | 买入区98.93~101.27 | 信号:买入", + "entry_zone": "98.93~101.27", + "stop_loss": 97.48, + "take_profit": 106.95, "type": "自选策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动买盘占优 强撑:482.24 弱撑:515.15 弱压:569.49 强压:590.92 | MA5=509.65 MA10=482.2 MA20=428.7 MA60=312.11" + "tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:94.01 弱撑:97.48 弱压:103.95 强压:106.95 | MA5=100.2 MA10=95.77 MA20=92.23 MA60=96.42" + }, + "pnl_pct": null + }, + { + "code": "688041", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 343.0, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 正常 | 目标375.46 | 止损332.71 | 买入区336.14~349.81 | 信号:关注", + "entry_zone": "", + "stop_loss": 332.71, + "take_profit": 375.46, + "type": "自选策略", + "tech_snapshot": "形态:带上影阴线/neutral 量价:买卖均衡 强撑:320.58 弱撑:336.99 弱压:354.02 强压:375.46 | MA5=334.46 MA10=345.25 MA20=325.86 MA60=304.14" + }, + "pnl_pct": null + }, + { + "code": "688411", + "name": "", + "market": "A股", + "type": "持仓", + "sector": "储能/电力系统", + "business": "电化学储能系统集成,电力辅助服务,新能源配储", + "price": 244.0, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -6.94, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 266.95, + "shares": 200, + "position_pct": 6.31, + "strategy": { + "action": "盈利持有 | 正常 | 目标273.42 | 止损236.57 | 买入区239.12~248.88", + "entry_zone": "", + "stop_loss": 236.57, + "take_profit": 273.42, + "type": "自选策略", + "tech_snapshot": "形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:229.14 弱撑:236.57 弱压:262.2 强压:273.42 | MA5=255.77 MA10=265.37 MA20=265.44 MA60=257.24" + }, + "pnl_pct": -8.6 + }, + { + "code": "688630", + "name": "", + "market": "A股", + "type": "自选策略", + "sector": "", + "business": "", + "price": 473.26, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, + "cost": 0, + "shares": 0, + "position_pct": 0, + "strategy": { + "action": "盈利持有 | 正常 | 目标530.49 | 止损420.23 | 买入区463.79~482.73", + "entry_zone": "463.79~482.73", + "stop_loss": 420.23, + "take_profit": 530.49, + "type": "自选策略", + "tech_snapshot": "形态:长影星线/neutral 量价:主动买盘占优 强撑:415.59 弱撑:451.28 弱压:495.03 强压:530.49 | MA5=470.76 MA10=503.2 MA20=477.36 MA60=350.45" }, "pnl_pct": null }, { "code": "688639", - "name": "华恒生物", + "name": "", "market": "A股", "type": "持仓", "sector": "化工/生物制造", "business": "生物法丙氨酸/缬氨酸等氨基酸产品,合成生物学平台技术", - "price": 16.63, - "prev_close": 15.4, - "open": 15.65, - "high": 16.95, - "low": 15.65, - "change_pct": 7.99, - "volume": 28192651.0, - "pe": 18.48, - "total_market_cap": 41.59, - "high_52w": 12.32, - "low_52w": 2.78, - "turnover_rate": 11.27, - "amplitude": 8.44, + "price": 16.42, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": -0.73, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 21.51, "shares": 2800, "position_pct": 5.25, "strategy": { - "action": "深套持有 | 深套持有 | 止损13.5 | 目标15.97 | 买入区14.97~17.46 | 信号:持有", - "entry_zone": "14.97~17.46", - "stop_loss": 13.5, - "take_profit": 15.97, - "type": "持仓策略", - "tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:13.98 弱撑:15.4 弱压:17.17 强压:18.48 | MA5=33.22 MA10=33.72 MA20=35.78 MA60=34.59" + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 缩量 | 目标17.32 | 止损15.93 | 买入区16.09~16.49 | 信号:关注", + "entry_zone": "", + "stop_loss": 15.93, + "take_profit": 17.32, + "type": "自选策略", + "tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:15.68 弱撑:16.15 弱压:16.77 强压:17.32 | MA5=16.67 MA10=16.5 MA20=18.78 MA60=23.65" }, - "pnl_pct": -22.69 + "pnl_pct": -23.66 }, { "code": "688795", - "name": "摩尔线程-U", + "name": "", "market": "A股", "type": "自选", "sector": "半导体/GPU", "business": "国产GPU芯片设计,AI训练/推理芯片,图形渲染芯片", - "price": 703.18, - "prev_close": 672.77, - "open": 665.0, - "high": 708.2, - "low": 665.0, - "change_pct": 4.52, - "volume": 3511958.0, - "pe": 807.32, - "total_market_cap": 212.54, - "high_52w": 538.22, - "low_52w": 0.97, - "turnover_rate": 11.62, - "amplitude": 6.42, + "price": 666.0, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标748.38 | 止损666.04 | 买入区689.12~703.01 | 信号:观望", - "entry_zone": "689.12~703.01", - "stop_loss": 666.04, - "take_profit": 748.38, + "action": "盈利持有 | 正常 | 目标748.0 | 止损646.0 | 买入区652.68~679.32", + "entry_zone": "", + "stop_loss": 646.0, + "take_profit": 748.0, "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/neutral 量价:主动卖盘占优 强撑:635.87 弱撑:672.77 弱压:719.25 强压:748.38 | MA5=690.42 MA10=663.58 MA20=645.82 MA60=652.59" + "tech_snapshot": "形态:长影星线/neutral 量价:主动卖盘占优 强撑:580.0 弱撑:646.0 弱压:683.99 强压:748.0 | MA5=650.02 MA10=671.63 MA20=660.54 MA60=665.26" }, "pnl_pct": null }, @@ -1566,64 +1512,64 @@ "type": "自选", "sector": "半导体/GPU", "business": "国产GPU芯片设计,图形渲染/通用计算芯片", - "price": 793.55, - "prev_close": 730.4, - "open": 720.0, - "high": 798.98, - "low": 720.0, - "change_pct": 8.65, - "volume": 3449367.0, - "pe": 876.48, - "total_market_cap": 147.03, - "high_52w": 584.32, - "low_52w": 1.4, - "turnover_rate": 18.62, - "amplitude": 10.81, + "price": null, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": null, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 0, "shares": 0, "position_pct": 0, "strategy": { - "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标849.82 | 止损723.1 | 买入区777.68~778.17", - "entry_zone": "777.68~778.17", - "stop_loss": 723.1, - "take_profit": 849.82, + "action": "盈利持有 | ⚠️盈亏比不足1:1.5,不建议买入 | 正常 | 目标1000.79 | 止损参考0.0 | 买入区0.0~0.0 | 信号:关注", + "entry_zone": "", + "stop_loss": 813.48, + "take_profit": 1000.79, "type": "自选策略", - "tech_snapshot": "形态:光头光脚阳线/neutral 量价:数据不足 强撑:691.86 弱撑:730.4 弱压:821.69 强压:849.82 | MA5=759.62 MA10=744.5 MA20=721.34 MA60=707.93" + "tech_snapshot": "形态:长影星线/neutral 量价:数据不足 强撑:667.19 弱撑:813.48 弱压:865.27 强压:1000.79 | MA5=773.52 MA10=777.04 MA20=756.02 MA60=731.96" }, "pnl_pct": null }, { "code": "688981", - "name": "中芯国际", + "name": "", "market": "A股", "type": "自选", "sector": "半导体/晶圆代工", "business": "集成电路晶圆代工,先进制程(14nm/28nm及以上),成熟制程", - "price": 151.0, - "prev_close": 148.76, - "open": 147.8, - "high": 152.99, - "low": 141.0, - "change_pct": 1.51, - "volume": 102740101.0, - "pe": 178.51, - "total_market_cap": 3019.34, - "high_52w": 119.01, - "low_52w": 0.91, - "turnover_rate": 5.14, - "amplitude": 8.06, + "price": 152.1, + "prev_close": null, + "open": null, + "high": null, + "low": null, + "change_pct": 4.59, + "volume": null, + "pe": null, + "total_market_cap": null, + "high_52w": null, + "low_52w": null, + "turnover_rate": null, + "amplitude": null, "cost": 126.07, "shares": 300, "position_pct": 5.44, "strategy": { - "action": "盈利良好 | 止损145.01 | 目标157.01 | 买入区143.67~150.85 | 信号:持有", - "entry_zone": "143.67~150.85", - "stop_loss": 145.01, - "take_profit": 157.01, - "type": "持仓策略", - "tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:133.11 弱撑:143.67 弱压:155.66 强压:163.55 | MA5=148.89 MA10=140.54 MA20=135.42 MA60=121.68" + "action": "盈利持有 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 正常 | 目标164.94 | 止损144.14 | 买入区149.06~152.46 | 信号:买入", + "entry_zone": "", + "stop_loss": 144.14, + "take_profit": 164.94, + "type": "自选策略", + "tech_snapshot": "形态:小阳线/bullish 量价:买卖均衡 强撑:136.18 弱撑:144.14 弱压:158.52 强压:164.94 | MA5=145.18 MA10=149.58 MA20=142.42 MA60=128.72" }, - "pnl_pct": 19.77 + "pnl_pct": 20.65 } ] } \ No newline at end of file diff --git a/data/portfolio.json b/data/portfolio.json deleted file mode 100644 index 36ef96bb..00000000 --- a/data/portfolio.json +++ /dev/null @@ -1 +0,0 @@ -{"__comment": "此文件已废弃,所有数据从 mofin.db holdings + portfolio_summary 表读取。保留空文件防止导入报错,后续可安全删除。", "holdings": [], "cash": 0, "total_assets": 0, "updated_at": ""} diff --git a/data/portfolio.json.20260623 b/data/portfolio.json.20260623 deleted file mode 100644 index 2409af23..00000000 --- a/data/portfolio.json.20260623 +++ /dev/null @@ -1,272 +0,0 @@ -{ - "holdings": [ - { - "code": "01478", - "name": "丘钛科技", - "shares": 11000, - "cost": 11.96, - "price": 8.07, - "change_pct": -3.7, - "position_pct": 7.66, - "is_active": 1, - "avg_price": 13.8313 - }, - { - "code": "001309", - "name": "德明利", - "shares": 100, - "cost": 737.0374, - "price": 763.86, - "change_pct": 3.63, - "position_pct": 7.5, - "is_active": 1, - "avg_price": 737.0374 - }, - { - "code": "600739", - "name": "辽宁成大", - "shares": 6600, - "cost": 12.2862, - "price": 10.77, - "change_pct": 0.28, - "position_pct": 7.03, - "is_active": 1, - "avg_price": 12.2862 - }, - { - "code": "601899", - "name": "紫金矿业", - "shares": 2400, - "cost": 40.2685, - "price": 28.01, - "change_pct": -7.98, - "position_pct": 6.7, - "is_active": 1, - "avg_price": 40.2685 - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "shares": 700, - "cost": 109.26, - "price": 99.55, - "change_pct": -3.35, - "position_pct": 5.95, - "is_active": 1, - "avg_price": 126.3558 - }, - { - "code": "688981", - "name": "中芯国际", - "shares": 300, - "cost": 126.0681, - "price": 142.16, - "change_pct": -2.36, - "position_pct": 4.31, - "is_active": 1, - "avg_price": 126.0681 - }, - { - "code": "603259", - "name": "药明康德", - "shares": 400, - "cost": 96.201, - "price": 106.66, - "change_pct": -0.16, - "position_pct": 4.23, - "is_active": 1, - "avg_price": 96.201 - }, - { - "code": "02202", - "name": "万科企业", - "shares": 19700, - "cost": 4.05, - "price": 2.4, - "change_pct": -3.24, - "position_pct": 4.05, - "is_active": 1, - "avg_price": 4.6836 - }, - { - "code": "02388", - "name": "中银香港", - "shares": 1000, - "cost": 37.93, - "price": 47.32, - "change_pct": -0.59, - "position_pct": 4.02, - "is_active": 1, - "avg_price": 43.8601 - }, - { - "code": "300750", - "name": "宁德时代", - "shares": 100, - "cost": 401.7803, - "price": 396.98, - "change_pct": -2.93, - "position_pct": 3.93, - "is_active": 1, - "avg_price": 401.7803 - }, - { - "code": "01211", - "name": "比亚迪股份", - "shares": 600, - "cost": 90.99, - "price": 76.4, - "change_pct": -2.62, - "position_pct": 3.9, - "is_active": 1, - "avg_price": 105.2242 - }, - { - "code": "01888", - "name": "建滔积层板", - "shares": 500, - "cost": 76.55, - "price": 84.4, - "change_pct": -8.21, - "position_pct": 3.75, - "is_active": 1, - "avg_price": 88.5286 - }, - { - "code": "00700", - "name": "腾讯控股", - "shares": 100, - "cost": 384.46, - "price": 417.6, - "change_pct": -3.56, - "position_pct": 3.59, - "is_active": 1, - "avg_price": 444.6211 - }, - { - "code": "00981", - "name": "中芯国际", - "shares": 500, - "cost": 65.89, - "price": 80.05, - "change_pct": 1.46, - "position_pct": 3.54, - "is_active": 1, - "avg_price": 76.1956 - }, - { - "code": "09868", - "name": "小鹏集团-W", - "shares": 700, - "cost": 44.49, - "price": 49.78, - "change_pct": -3.43, - "position_pct": 3.0, - "is_active": 1, - "avg_price": 51.4476 - }, - { - "code": "300548", - "name": "长芯博创", - "shares": 100, - "cost": 231.46, - "price": 290.58, - "change_pct": -2.52, - "position_pct": 2.95, - "is_active": 1, - "avg_price": 231.46 - }, - { - "code": "600036", - "name": "招商银行", - "shares": 800, - "cost": 38.1582, - "price": 37.76, - "change_pct": 0.29, - "position_pct": 2.95, - "is_active": 1, - "avg_price": 38.1582 - }, - { - "code": "02318", - "name": "中国平安", - "shares": 500, - "cost": 47.48, - "price": 54.0, - "change_pct": -1.73, - "position_pct": 2.28, - "is_active": 1, - "avg_price": 54.9086 - }, - { - "code": "300035", - "name": "中科电气", - "shares": 1400, - "cost": 22.2914, - "price": 16.47, - "change_pct": -3.97, - "position_pct": 2.28, - "is_active": 1, - "avg_price": 22.2914 - }, - { - "code": "000700", - "name": "模塑科技", - "shares": 1400, - "cost": 14.8336, - "price": 15.41, - "change_pct": 1.52, - "position_pct": 2.12, - "is_active": 1, - "avg_price": 14.8336 - }, - { - "code": "518880", - "name": "黄金ETF华安", - "shares": 2400, - "cost": 12.1915, - "price": 8.57, - "change_pct": -1.73, - "position_pct": 2.02, - "is_active": 1, - "avg_price": 12.1915 - }, - { - "code": "01088", - "name": "中国神华", - "shares": 500, - "cost": 39.82, - "price": 42.62, - "change_pct": 0.09, - "position_pct": 1.81, - "is_active": 1, - "avg_price": 46.0485 - }, - { - "code": "600563", - "name": "法拉电子", - "shares": 100, - "cost": 146.95, - "price": 163.8, - "change_pct": -5.29, - "position_pct": 1.63, - "is_active": 1, - "avg_price": 146.95 - }, - { - "code": "300690", - "name": "双一科技", - "shares": 400, - "cost": 27.178, - "price": 23.75, - "change_pct": -1.7, - "position_pct": 0.94, - "is_active": 1, - "avg_price": 27.178 - } - ], - "cash": 80476, - "total_assets": 1023059.24, - "position_pct": 92.13, - "last_updated": "2026-06-23 11:00" -} \ No newline at end of file diff --git a/data/price_events.json b/data/price_events.json index 24399c81..3aeebc4f 100644 --- a/data/price_events.json +++ b/data/price_events.json @@ -1,9254 +1,34 @@ { "events": [ { - "code": "000700", - "name": "模塑科技", + "code": "000518", + "name": "四环生物", "event_type": "entry_zone", - "price": 16.17, - "trigger_value": "15.36~16.49", - "event_label": "买入区", - "timestamp": "2026-06-09T23:52:13.162637", - "date": "2026-06-09" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 625.74, - "trigger_value": "585.01~646.59", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.247779", - "date": "2026-06-10" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 91.89, - "trigger_value": "86.15~95.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.248144", - "date": "2026-06-10" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 453.2, - "trigger_value": "436.81~482.79", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.416203", - "date": "2026-06-10" - }, - { - "code": "00968", - "name": "信义光能", - "event_type": "entry_zone", - "price": 2.42, - "trigger_value": "2.28~2.52", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.803892", - "date": "2026-06-10" - }, - { - "code": "01070", - "name": "TCL电子", - "event_type": "entry_zone", - "price": 13.92, - "trigger_value": "13.02~14.4", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.826211", - "date": "2026-06-10" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 88.4, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.828919", - "date": "2026-06-10" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 8.61, - "trigger_value": "8.16~9.02", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.830524", - "date": "2026-06-10" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 63.0, - "trigger_value": "57.96~68.04", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.869920", - "date": "2026-06-10" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.55, - "trigger_value": "2.41~2.67", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.871641", - "date": "2026-06-10" - }, - { - "code": "02318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 56.9, - "trigger_value": "53.87~59.54", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.891569", - "date": "2026-06-10" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 116.8, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.894479", - "date": "2026-06-10" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 47.9, - "trigger_value": "45.22~49.98", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.942726", - "date": "2026-06-10" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.38, - "trigger_value": "25.8~28.52", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.964920", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 255.4, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:04.967464", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 61.3, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.024534", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 117.1, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.026521", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 74.6, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.028375", - "date": "2026-06-10" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 238.83, - "trigger_value": "221.2~244.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.055476", - "date": "2026-06-10" - }, - { - "code": "300690", - "name": "双一科技", - "event_type": "entry_zone", - "price": 24.15, - "trigger_value": "22.7~25.08", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.058596", - "date": "2026-06-10" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 399.5, - "trigger_value": "370.68~409.7", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.109190", - "date": "2026-06-10" - }, - { - "code": "600036", - "name": "招商银行", - "event_type": "entry_zone", - "price": 38.49, - "trigger_value": "36.6~40.46", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.137336", - "date": "2026-06-10" - }, - { - "code": "600110", - "name": "诺德股份", - "event_type": "entry_zone", - "price": 11.81, - "trigger_value": "11.22~12.4", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.140534", - "date": "2026-06-10" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 166.57, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.188358", - "date": "2026-06-10" - }, - { - "code": "600739", - "name": "辽宁成大", - "event_type": "entry_zone", - "price": 10.0, - "trigger_value": "9.48~10.48", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.216435", - "date": "2026-06-10" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 28.47, - "trigger_value": "26.52~29.32", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.219165", - "date": "2026-06-10" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 20.48, - "trigger_value": "19.38~21.42", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.267650", - "date": "2026-06-10" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 615.89, - "trigger_value": "591.28~653.52", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.303861", - "date": "2026-06-10" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 704.98, - "trigger_value": "678.23~749.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.335212", - "date": "2026-06-10" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 9.01, - "trigger_value": "8.56~9.46", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.384366", - "date": "2026-06-10" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 252.0, - "trigger_value": "245.0~260.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.388156", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.17, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.428485", - "date": "2026-06-10" - }, - { - "code": "00981", - "name": "中芯国际-H", - "event_type": "entry_zone", - "price": 75.0, - "trigger_value": "70.0~75.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:05:05.599746", - "date": "2026-06-10" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 63.0, - "trigger_value": "57.96~68.04", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:10:15.819641", - "date": "2026-06-10" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 9.01, - "trigger_value": "8.56~9.46", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:10:15.820685", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.17, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:10:15.954942", - "date": "2026-06-10" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 46.5, - "trigger_value": "45.22~49.98", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:16:33.691197", - "date": "2026-06-10" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 45.16, - "trigger_value": "44.0~46.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:16:34.391815", - "date": "2026-06-10" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 151.8, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:19:41.612673", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.16, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:19:41.614212", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.46, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:20:44.317866", - "date": "2026-06-10" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 152.0, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:23:55.954452", - "date": "2026-06-10" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 45.52, - "trigger_value": "44.0~46.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:28:02.366398", - "date": "2026-06-10" - }, - { - "code": "600110", - "name": "诺德股份", - "event_type": "entry_zone", - "price": 12.31, - "trigger_value": "11.22~12.4", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:33:12.307271", - "date": "2026-06-10" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 245.9, - "trigger_value": "245.0~260.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:35:15.390567", - "date": "2026-06-10" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 246.0, - "trigger_value": "245.0~260.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:37:18.478507", - "date": "2026-06-10" - }, - { - "code": "600110", - "name": "诺德股份", - "event_type": "entry_zone", - "price": 12.3, - "trigger_value": "11.22~12.4", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:39:26.927250", - "date": "2026-06-10" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 45.48, - "trigger_value": "44.0~46.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:45:29.972609", - "date": "2026-06-10" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 45.78, - "trigger_value": "44.0~46.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:49:35.555639", - "date": "2026-06-10" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 245.64, - "trigger_value": "245.0~260.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:50:37.824606", - "date": "2026-06-10" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 245.18, - "trigger_value": "245.0~260.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T09:53:37.542949", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.37, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:02:43.847987", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.39, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:08:51.862746", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.36, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:13:58.284507", - "date": "2026-06-10" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 16.97, - "trigger_value": "15.5~17.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:18:16.495768", - "date": "2026-06-10" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.37, - "trigger_value": "15.36~16.49", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:19:10.047353", - "date": "2026-06-10" - }, - { - "code": "00981", - "name": "中芯国际-H", - "event_type": "entry_zone", - "price": 75.0, - "trigger_value": "70.0~75.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:20:11.731263", - "date": "2026-06-10" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 17.0, - "trigger_value": "15.5~17.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:28:18.662122", - "date": "2026-06-10" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 17.0, - "trigger_value": "15.5~17.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:33:30.750534", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.92, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:40:38.272684", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 233.8, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:43:46.495511", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.95, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:47:51.027650", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:49:56.137387", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:54:09.268940", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.8, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:54:09.271883", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.0, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:56:11.711660", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.0, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:57:15.006162", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:58:16.197190", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.0, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T10:59:15.227782", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.3, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:01:20.851261", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:11:42.646492", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.0, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:12:46.044535", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.2, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:13:46.804558", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.2, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:41:55.818206", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.0, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:47:15.600778", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 97.0, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:48:16.414262", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:50:25.860183", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T11:56:32.814296", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.76, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:00:31.848636", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.69, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:07:53.294342", - "date": "2026-06-10" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "stop_loss", - "price": 7.9, - "trigger_value": "7.9", - "event_label": "", - "timestamp": "2026-06-10T13:24:28.934702", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.83, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:25:27.685491", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.96, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:33:43.883688", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.99, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:35:55.814949", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.9, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:44:09.917610", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.15, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:56:46.430773", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.2, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T13:56:46.434402", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.28, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:02:16.425195", - "date": "2026-06-10" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.2, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:09:33.491884", - "date": "2026-06-10" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.1, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:09:33.497487", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.3, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:09:33.760351", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.29, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:12:42.031166", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.23, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:18:49.310112", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.97, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:21:51.342399", - "date": "2026-06-10" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.61, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:24:54.764650", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.95, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:24:54.770412", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.2, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:36:10.443572", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 97.0, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:38:11.632421", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.23, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:43:24.648262", - "date": "2026-06-10" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.0, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:44:27.408236", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.23, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:45:29.320915", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.3, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:50:38.941608", - "date": "2026-06-10" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.29, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:55:28.740992", - "date": "2026-06-10" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.98, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-10T14:55:28.744002", - "date": "2026-06-10" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-10T15:31:08.047000", - "date": "2026-06-10" - }, - { - "code": "00968", - "name": "信义光能", - "event_type": "entry_zone", - "price": 2.52, - "trigger_value": "2.28~2.52", - "event_label": "加仓区间", - "timestamp": "2026-06-10T15:41:31.531237", - "date": "2026-06-10" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 8.05, - "trigger_value": "7.4~9.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:00:23.751967", - "date": "2026-06-11" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 244.2, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:15:48.893562", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 150.0, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:15:48.897998", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.41, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:15:49.075048", - "date": "2026-06-11" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 678.39, - "trigger_value": "678.23~749.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:16:48.548387", - "date": "2026-06-11" - }, - { - "code": "01070", - "name": "TCL电子", - "event_type": "entry_zone", - "price": 14.4, - "trigger_value": "13.02~14.4", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:17:53.266482", - "date": "2026-06-11" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.86, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:17:53.271225", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.15, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:19:59.407453", - "date": "2026-06-11" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 28.48, - "trigger_value": "25.8~28.52", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:21:59.688269", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.8, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:21:59.690348", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 120.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:26:01.606553", - "date": "2026-06-11" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.1, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:26:01.611480", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 152.3, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:26:01.616071", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:29:06.406974", - "date": "2026-06-11" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.2, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:29:06.411703", - "date": "2026-06-11" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 481.0, - "trigger_value": "436.81~482.79", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:30:14.196314", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:31:15.217598", - "date": "2026-06-11" - }, - { - "code": "600110", - "name": "诺德股份", - "event_type": "entry_zone", - "price": 12.29, - "trigger_value": "11.22~12.4", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:32:16.891552", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.2, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:32:16.895678", - "date": "2026-06-11" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.74, - "trigger_value": "45.22~49.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:35:23.184163", - "date": "2026-06-11" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.35, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:35:23.186195", - "date": "2026-06-11" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.56, - "trigger_value": "8.56~9.46", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:36:23.196434", - "date": "2026-06-11" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 233.8, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:45:47.395071", - "date": "2026-06-11" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.23, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:46:52.109286", - "date": "2026-06-11" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.56, - "trigger_value": "8.56~9.46", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:47:54.873335", - "date": "2026-06-11" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.3, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:48:54.568155", - "date": "2026-06-11" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.3, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:48:54.570483", - "date": "2026-06-11" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 112.1, - "trigger_value": "112.0~123.8", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:53:01.206777", - "date": "2026-06-11" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 58.1, - "trigger_value": "58.09~64.21", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:55:02.532834", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.2, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:57:02.501934", - "date": "2026-06-11" - }, - { - "code": "600110", - "name": "诺德股份", - "event_type": "entry_zone", - "price": 12.34, - "trigger_value": "11.22~12.4", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:58:05.036569", - "date": "2026-06-11" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 233.8, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:59:05.660714", - "date": "2026-06-11" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.28, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T09:59:05.735674", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.92, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:03:12.489436", - "date": "2026-06-11" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 235.2, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:04:13.605069", - "date": "2026-06-11" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 234.2, - "trigger_value": "233.7~258.3", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:08:21.996389", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.8, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:16:34.896496", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:17:34.186387", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.98, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:19:41.729938", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.9, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:21:45.031067", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.13, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T10:22:46.458537", - "date": "2026-06-11" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 28.52, - "trigger_value": "25.8~28.52", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:32:11.700425", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 150.99, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:32:11.702869", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.7, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:33:11.545223", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.95, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T10:34:13.919044", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 151.2, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:35:16.726646", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.15, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:36:19.044132", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.92, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T10:36:19.047300", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 150.93, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:37:18.559192", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.91, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T10:38:19.648233", - "date": "2026-06-11" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 28.48, - "trigger_value": "25.8~28.52", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:39:22.226106", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:42:32.318177", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.8, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:43:37.201993", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:45:36.478415", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.91, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T10:45:36.482698", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:47:43.233631", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.15, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T10:54:55.956322", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.88, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:13:31.404798", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.15, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:16:35.920005", - "date": "2026-06-11" - }, - { - "code": "688981", - "name": "中芯国际-A", - "event_type": "entry_zone", - "price": 125.97, - "trigger_value": "118.0~126.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:16:35.926863", - "date": "2026-06-11" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 234.89, - "trigger_value": "235.0", - "event_label": "", - "timestamp": "2026-06-11T11:18:41.198676", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:20:48.475325", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.15, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:49:36.318445", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T11:49:36.858590", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T12:01:54.283244", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.3, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T12:04:58.797794", - "date": "2026-06-11" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.2, - "trigger_value": "84.12~92.98", - "event_label": "加仓区间", - "timestamp": "2026-06-11T12:12:11.876166", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.96, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:11:28.470750", - "date": "2026-06-11" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.37, - "trigger_value": "70.23~77.63", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:16:30.101949", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 151.28, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:20:33.281566", - "date": "2026-06-11" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 121.4, - "trigger_value": "109.91~121.48", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:24:36.029300", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.99, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:25:37.654686", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 151.11, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:26:39.116615", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 151.16, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:32:42.801406", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 151.02, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:35:44.712058", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.99, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:45:45.583689", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.98, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:48:50.886349", - "date": "2026-06-11" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 150.99, - "trigger_value": "150.87~166.75", - "event_label": "加仓区间", - "timestamp": "2026-06-11T13:50:53.790333", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 155.0, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T14:05:12.308451", - "date": "2026-06-11" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 96.94, - "trigger_value": "93.5~97.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T14:07:12.791811", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.9, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T14:09:16.039057", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.8, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T14:20:29.747864", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.9, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T14:32:41.178689", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.8, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T15:46:43.815551", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 155.0, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T15:51:48.707337", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 155.0, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T15:55:51.503589", - "date": "2026-06-11" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 154.9, - "trigger_value": "145.0~155.0", - "event_label": "加仓区间", - "timestamp": "2026-06-11T15:58:52.463969", - "date": "2026-06-11" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 100.08, - "trigger_value": "98.08~102.08", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:13.957250", - "date": "2026-06-25" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 100.08, - "trigger_value": "0~112.75", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:13.959579", - "date": "2026-06-25" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.04, - "trigger_value": "4.94~5.06", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.043415", - "date": "2026-06-25" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.04, - "trigger_value": "0~5.38", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.183576", - "date": "2026-06-25" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 83.3, - "trigger_value": "0~92.71", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.193693", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 428.8, - "trigger_value": "0~473.71", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.203971", - "date": "2026-06-25" - }, - { - "code": "00968", - "name": "信义光能", - "event_type": "entry_zone", - "price": 2.0, - "trigger_value": "0~2.58", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.211485", - "date": "2026-06-25" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 84.8, - "trigger_value": "0~102.56", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.216437", - "date": "2026-06-25" - }, - { - "code": "01070", - "name": "TCL电子", - "event_type": "entry_zone", - "price": 13.1, - "trigger_value": "0~15.51", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.220461", - "date": "2026-06-25" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 41.9, - "trigger_value": "0~42.13", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.223908", - "date": "2026-06-25" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 75.95, - "trigger_value": "0~86.27", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.227115", - "date": "2026-06-25" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.69, - "trigger_value": "0~9.76", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.230013", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 93.55, - "trigger_value": "0~134.87", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.232697", - "date": "2026-06-25" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.31, - "trigger_value": "0~2.52", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.235306", - "date": "2026-06-25" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 141.7, - "trigger_value": "0~163.23", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.237668", - "date": "2026-06-25" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 46.52, - "trigger_value": "0~48.59", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.240119", - "date": "2026-06-25" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 28.32, - "trigger_value": "0~32.72", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.242500", - "date": "2026-06-25" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 165.2, - "trigger_value": "161.9~168.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.244856", - "date": "2026-06-25" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 165.2, - "trigger_value": "0~180.64", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.248349", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 261.2, - "trigger_value": "0~355.93", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.250676", - "date": "2026-06-25" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 99.4, - "trigger_value": "0~115.07", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.253068", - "date": "2026-06-25" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 16.08, - "trigger_value": "14.47~16.88", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.255403", - "date": "2026-06-25" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 16.08, - "trigger_value": "0~18.7", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.257704", - "date": "2026-06-25" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 66.31, - "trigger_value": "0~73.13", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.260626", - "date": "2026-06-25" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1312.18, - "trigger_value": "1285.94~1338.42", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.263219", - "date": "2026-06-25" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1312.18, - "trigger_value": "0~1447.8", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.265530", - "date": "2026-06-25" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 282.23, - "trigger_value": "0~348.37", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.267922", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 395.36, - "trigger_value": "0~430.87", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.270393", - "date": "2026-06-25" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.52, - "trigger_value": "0~9.31", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.272844", - "date": "2026-06-25" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1207.68, - "trigger_value": "1183.53~1231.2", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.275224", - "date": "2026-06-25" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1207.68, - "trigger_value": "0~1320.83", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.277630", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 178.76, - "trigger_value": "0~219.99", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.280811", - "date": "2026-06-25" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.12, - "trigger_value": "48.14~50.03", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:14:14.283611", - "date": "2026-06-25" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.12, - "trigger_value": "0~53.61", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.286010", - "date": "2026-06-25" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 27.65, - "trigger_value": "0~30.99", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.289002", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 115.4, - "trigger_value": "0~136.95", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.291470", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 266.19, - "trigger_value": "0~300.1", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.293880", - "date": "2026-06-25" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 21.4, - "trigger_value": "0~24.6", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.296417", - "date": "2026-06-25" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 704.8, - "trigger_value": "0~831.78", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.298900", - "date": "2026-06-25" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 770.19, - "trigger_value": "0~882.43", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.301373", - "date": "2026-06-25" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 151.53, - "trigger_value": "0~177.77", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:14:14.303855", - "date": "2026-06-25" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "stop_loss", - "price": 17.12, - "trigger_value": "18.27", - "event_label": "", - "timestamp": "2026-06-25T09:16:16.570416", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 415.0, - "trigger_value": "372.78~434.91", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.450258", - "date": "2026-06-25" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 85.2, - "trigger_value": "76.32~89.04", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.452816", - "date": "2026-06-25" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 41.3, - "trigger_value": "37.17~43.37", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.455349", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 93.9, - "trigger_value": "84.51~98.6", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.457857", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 300.0, - "trigger_value": "270.18~315.21", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.460342", - "date": "2026-06-25" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 288.02, - "trigger_value": "259.2~302.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.462882", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 401.0, - "trigger_value": "360.9~421.05", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.465592", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 117.0, - "trigger_value": "105.3~122.85", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.468206", - "date": "2026-06-25" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 17.12, - "trigger_value": "15.41~17.98", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.470745", - "date": "2026-06-25" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 153.55, - "trigger_value": "137.7~160.65", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:17:38.473329", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 415.6, - "trigger_value": "372.78~434.91", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.131239", - "date": "2026-06-25" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 86.0, - "trigger_value": "76.32~89.04", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.133999", - "date": "2026-06-25" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 41.3, - "trigger_value": "37.17~43.37", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.251817", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 94.0, - "trigger_value": "84.51~98.6", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.405386", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 300.0, - "trigger_value": "270.18~315.21", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.525677", - "date": "2026-06-25" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 288.0, - "trigger_value": "259.2~302.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.676529", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 401.0, - "trigger_value": "360.9~421.05", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.680287", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 117.0, - "trigger_value": "105.3~122.85", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.683717", - "date": "2026-06-25" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 17.12, - "trigger_value": "15.41~17.98", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.686915", - "date": "2026-06-25" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 154.0, - "trigger_value": "137.7~160.65", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:18:17.690021", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 188.0, - "trigger_value": "169.2~197.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:20:23.199989", - "date": "2026-06-25" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.86, - "trigger_value": "4.81~4.97", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:32:39.598466", - "date": "2026-06-25" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 518.88, - "trigger_value": "516.46~537.54", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:32:40.008402", - "date": "2026-06-25" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 518.88, - "trigger_value": "0~599.04", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:32:40.194461", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 395.24, - "trigger_value": "394.67~397.27", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:36:39.788834", - "date": "2026-06-25" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 533.77, - "trigger_value": "517.12~538.22", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:36:39.802613", - "date": "2026-06-25" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 140.8, - "trigger_value": "137.98~143.62", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:38:41.850741", - "date": "2026-06-25" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 167.0, - "trigger_value": "163.66~169.63", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:38:41.903956", - "date": "2026-06-25" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 97.3, - "trigger_value": "95.35~99.25", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:38:42.442194", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 114.92, - "trigger_value": "0~115.96", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:40:46.337313", - "date": "2026-06-25" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 103.34, - "trigger_value": "100.92~103.84", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:42:48.958769", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 186.97, - "trigger_value": "0~205.58", - "event_label": "止盈区间", - "timestamp": "2026-06-25T09:46:54.816028", - "date": "2026-06-25" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 46.38, - "trigger_value": "46.21~47.65", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:51:01.147587", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 396.32, - "trigger_value": "393.93~396.9", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:51:01.150830", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 265.2, - "trigger_value": "262.19~265.99", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:51:01.270978", - "date": "2026-06-25" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 103.31, - "trigger_value": "101.13~103.63", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:52:01.045988", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 421.4, - "trigger_value": "419.0~423.8", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:52:01.049246", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 394.95, - "trigger_value": "393.12~396.5", - "event_label": "买入区间", - "timestamp": "2026-06-25T09:54:03.285174", - "date": "2026-06-25" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 46.46, - "trigger_value": "0~52.48", - "event_label": "止盈区间", - "timestamp": "2026-06-25T10:04:24.498984", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 264.6, - "trigger_value": "261.61~265.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:06:25.784025", - "date": "2026-06-25" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 69.34, - "trigger_value": "68.27~69.95", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:08:26.829425", - "date": "2026-06-25" - }, - { - "code": "02318", - "name": "中国平安", - "event_type": "stop_loss", - "price": 51.75, - "trigger_value": "53.3", - "event_label": "", - "timestamp": "2026-06-25T10:14:31.724000", - "date": "2026-06-25" - }, - { - "code": "02318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 51.75, - "trigger_value": "0~59.37", - "event_label": "止盈区间", - "timestamp": "2026-06-25T10:14:31.727160", - "date": "2026-06-25" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "stop_loss", - "price": 47.08, - "trigger_value": "49.83", - "event_label": "", - "timestamp": "2026-06-25T10:14:31.742452", - "date": "2026-06-25" - }, - { - "code": "09868", - "name": "小鹏集团-W", - "event_type": "entry_zone", - "price": 47.08, - "trigger_value": "0~59.43", - "event_label": "止盈区间", - "timestamp": "2026-06-25T10:14:31.757588", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.15, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:18:36.676835", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 265.77, - "trigger_value": "261.84~265.82", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:20:38.469692", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 394.45, - "trigger_value": "392.29~396.08", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:22:39.119592", - "date": "2026-06-25" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.96, - "trigger_value": "48.86~50.32", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:22:39.122669", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 98.0, - "trigger_value": "93.55~98.23", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:24:40.059617", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 115.83, - "trigger_value": "0~115.96", - "event_label": "止盈区间", - "timestamp": "2026-06-25T10:28:42.840806", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 98.1, - "trigger_value": "93.55~98.23", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:36:48.881408", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.6, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:36:48.891301", - "date": "2026-06-25" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 97.8, - "trigger_value": "93.55~98.23", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:42:55.292172", - "date": "2026-06-25" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 41.14, - "trigger_value": "40.59~41.17", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:44:57.413972", - "date": "2026-06-25" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1216.57, - "trigger_value": "1197.29~1224.21", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:44:57.740680", - "date": "2026-06-25" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 548.6, - "trigger_value": "543.7~554.99", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:52:08.743725", - "date": "2026-06-25" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1221.99, - "trigger_value": "1198.34~1231.31", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:54:10.255360", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 274.2, - "trigger_value": "261.2~274.26", - "event_label": "买入区间", - "timestamp": "2026-06-25T10:56:13.164429", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 271.2, - "trigger_value": "261.2~274.26", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:06:14.978452", - "date": "2026-06-25" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 779.6, - "trigger_value": "764.94~796.16", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:12:18.711572", - "date": "2026-06-25" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 41.1, - "trigger_value": "40.57~41.17", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:20:24.464319", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 265.59, - "trigger_value": "261.51~265.65", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:22:25.404299", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.2, - "trigger_value": "418.87~423.73", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:24:25.467785", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 265.54, - "trigger_value": "261.77~265.79", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:26:26.163674", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 118.1, - "trigger_value": "0~122.4", - "event_label": "止盈区间", - "timestamp": "2026-06-25T11:28:26.289914", - "date": "2026-06-25" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 550.11, - "trigger_value": "542.88~554.99", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:28:26.293304", - "date": "2026-06-25" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 274.2, - "trigger_value": "261.2~274.26", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:30:29.614225", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 424.2, - "trigger_value": "419.8~424.2", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:46:41.071693", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.2, - "trigger_value": "418.47~423.53", - "event_label": "买入区间", - "timestamp": "2026-06-25T11:52:45.739591", - "date": "2026-06-25" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.29, - "trigger_value": "0~8.36", - "event_label": "止盈区间", - "timestamp": "2026-06-25T12:08:53.518089", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.4, - "trigger_value": "418.2~423.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T12:16:58.031994", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.58, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:02:31.356204", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 186.93, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:06:34.832493", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 275.9, - "trigger_value": "266.19~279.5", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:08:36.396719", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 117.4, - "trigger_value": "0~117.67", - "event_label": "止盈区间", - "timestamp": "2026-06-25T13:12:40.067540", - "date": "2026-06-25" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 272.11, - "trigger_value": "263.49~272.3", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:16:44.979268", - "date": "2026-06-25" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 276.99, - "trigger_value": "0~313.96", - "event_label": "止盈区间", - "timestamp": "2026-06-25T13:20:48.901314", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 117.52, - "trigger_value": "0~117.67", - "event_label": "止盈区间", - "timestamp": "2026-06-25T13:20:50.494959", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.7, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:24:52.173864", - "date": "2026-06-25" - }, - { - "code": "603259", - "name": "药明康德", - "event_type": "entry_zone", - "price": 117.98, - "trigger_value": "0~130.75", - "event_label": "止盈区间", - "timestamp": "2026-06-25T13:28:57.033138", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 397.17, - "trigger_value": "392.6~397.58", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:34:05.114187", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.4, - "trigger_value": "418.73~423.67", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:38:12.785872", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.68, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:46:29.461376", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 422.8, - "trigger_value": "418.73~423.67", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:52:38.773140", - "date": "2026-06-25" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 397.81, - "trigger_value": "393.2~397.88", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:58:43.134088", - "date": "2026-06-25" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.67, - "trigger_value": "178.76~187.7", - "event_label": "买入区间", - "timestamp": "2026-06-25T13:58:44.379956", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 422.8, - "trigger_value": "417.67~423.13", - "event_label": "买入区间", - "timestamp": "2026-06-25T14:04:53.453966", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.2, - "trigger_value": "418.2~423.4", - "event_label": "买入区间", - "timestamp": "2026-06-25T14:14:11.928598", - "date": "2026-06-25" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 422.2, - "trigger_value": "418.07~423.33", - "event_label": "买入区间", - "timestamp": "2026-06-25T14:24:25.645198", - "date": "2026-06-25" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 891.0, - "trigger_value": "0~1153.26", - "event_label": "止盈区间", - "timestamp": "2026-06-25T14:56:19.855072", - "date": "2026-06-25" - }, - { - "code": "01070", - "name": "TCL电子", - "event_type": "entry_zone", - "price": 12.55, - "trigger_value": "12.3~12.8", - "event_label": "买入区间", - "timestamp": "2026-06-25T16:19:00.294519", - "date": "2026-06-25" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1323.4, - "trigger_value": "1191.06~1389.57", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:12:34.987860", - "date": "2026-06-26" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 401.9, - "trigger_value": "361.71~422.0", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:12:36.322694", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 190.04, - "trigger_value": "171.04~199.54", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:12:37.360736", - "date": "2026-06-26" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 275.89, - "trigger_value": "248.3~289.68", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:12:38.372686", - "date": "2026-06-26" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "stop_loss", - "price": 13.7, - "trigger_value": "14.11", - "event_label": "", - "timestamp": "2026-06-26T09:16:38.672231", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 410.0, - "trigger_value": "369.0~430.5", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:18:39.429164", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 102.0, - "trigger_value": "91.53~106.79", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:18:41.266008", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 287.4, - "trigger_value": "258.12~301.14", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:18:45.331159", - "date": "2026-06-26" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 13.7, - "trigger_value": "12.33~14.38", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:18:46.056139", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 103.06, - "trigger_value": "101.0~105.12", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:28:50.757535", - "date": "2026-06-26" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1199.0, - "trigger_value": "1175.02~1215.79", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:28:55.696081", - "date": "2026-06-26" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 541.31, - "trigger_value": "530.48~552.14", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:28:56.599732", - "date": "2026-06-26" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 15.28, - "trigger_value": "13.75~16.04", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:28:56.717540", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 103.9, - "trigger_value": "103.65~107.89", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:35:07.048678", - "date": "2026-06-26" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 279.44, - "trigger_value": "270.24~283.75", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:35:07.521605", - "date": "2026-06-26" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 402.27, - "trigger_value": "401.69~405.75", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:35:07.639630", - "date": "2026-06-26" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 145.5, - "trigger_value": "142.59~148.41", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:38:10.484157", - "date": "2026-06-26" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 166.9, - "trigger_value": "163.56~167.99", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:38:15.318966", - "date": "2026-06-26" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 92.0, - "trigger_value": "90.16~93.84", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:38:20.812799", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 104.61, - "trigger_value": "103.88~108.12", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:40:16.629194", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1278.14, - "trigger_value": "1273.59~1285.27", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:40:17.649748", - "date": "2026-06-26" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 274.2, - "trigger_value": "271.37~275.93", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:40:17.785625", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 108.97, - "trigger_value": "106.23~109.33", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:46:24.209649", - "date": "2026-06-26" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 551.87, - "trigger_value": "539.98~562.02", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:46:28.948490", - "date": "2026-06-26" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 83.85, - "trigger_value": "83.08~87.23", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:48:24.355400", - "date": "2026-06-26" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 148.1, - "trigger_value": "145.33~151.27", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:48:25.294615", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.56, - "trigger_value": "45.35~45.83", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:48:25.500165", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 269.2, - "trigger_value": "267.47~277.13", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:48:25.637269", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1257.0, - "trigger_value": "1249.46~1273.2", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:48:26.084695", - "date": "2026-06-26" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.54, - "trigger_value": "0~25.62", - "event_label": "止盈区间", - "timestamp": "2026-06-26T09:50:30.807456", - "date": "2026-06-26" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 275.1, - "trigger_value": "271.94~276.22", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:50:32.288387", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.5, - "trigger_value": "40.23~40.63", - "event_label": "买入区间", - "timestamp": "2026-06-26T09:52:32.306409", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1271.38, - "trigger_value": "1246.35~1271.65", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:02:41.064909", - "date": "2026-06-26" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 396.56, - "trigger_value": "0~414.58", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:02:42.738607", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.86, - "trigger_value": "45.39~47.22", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:08:45.443104", - "date": "2026-06-26" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 169.8, - "trigger_value": "167.19~171.74", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:08:46.384674", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 259.2, - "trigger_value": "249.33~261.8", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:08:46.490518", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1263.77, - "trigger_value": "1242.87~1269.9", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:10:48.592197", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.0, - "trigger_value": "412.0~416.6", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:12:50.998295", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 415.0, - "trigger_value": "0~438.85", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:14:50.093778", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.44, - "trigger_value": "0~41.92", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:14:51.245951", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.56, - "trigger_value": "0~47.79", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:14:51.422199", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 184.48, - "trigger_value": "0~200.68", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:14:51.561728", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 262.0, - "trigger_value": "250.4~262.92", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:18:55.205480", - "date": "2026-06-26" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 389.64, - "trigger_value": "0~389.99", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:20:57.452487", - "date": "2026-06-26" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 265.8, - "trigger_value": "261.17~270.83", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:28:05.021850", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.12, - "trigger_value": "0~41.89", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:40:29.535813", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 98.15, - "trigger_value": "97.23~102.09", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:40:31.309706", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.34, - "trigger_value": "0~47.71", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:40:32.635893", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 182.0, - "trigger_value": "0~200.68", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:40:35.212070", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 180.15, - "trigger_value": "0~180.61", - "event_label": "止盈区间", - "timestamp": "2026-06-26T10:52:35.357825", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 103.03, - "trigger_value": "101.74~105.9", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:54:37.175441", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 254.0, - "trigger_value": "242.67~254.8", - "event_label": "买入区间", - "timestamp": "2026-06-26T10:56:39.239605", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 254.2, - "trigger_value": "242.27~254.38", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:00:41.668659", - "date": "2026-06-26" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 102.68, - "trigger_value": "101.16~105.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:02:45.437399", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.2, - "trigger_value": "239.33~251.3", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:10:57.638815", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 184.84, - "trigger_value": "176.88~185.72", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:10:57.860693", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.36, - "trigger_value": "39.95~40.49", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:30:16.649347", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 93.35, - "trigger_value": "89.23~93.69", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:32:21.078417", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 44.94, - "trigger_value": "0~47.82", - "event_label": "止盈区间", - "timestamp": "2026-06-26T11:34:22.591187", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 93.95, - "trigger_value": "89.63~94.11", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:36:25.585633", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 94.3, - "trigger_value": "90.0~94.5", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:46:35.871326", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 183.5, - "trigger_value": "0~190.65", - "event_label": "止盈区间", - "timestamp": "2026-06-26T11:46:41.178060", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 94.25, - "trigger_value": "90.1~94.61", - "event_label": "买入区间", - "timestamp": "2026-06-26T11:58:47.716976", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.46, - "trigger_value": "39.96~40.5", - "event_label": "买入区间", - "timestamp": "2026-06-26T12:18:08.081029", - "date": "2026-06-26" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.6, - "trigger_value": "0~42.07", - "event_label": "止盈区间", - "timestamp": "2026-06-26T13:18:55.410663", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1259.62, - "trigger_value": "1232.43~1264.69", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:18:57.017989", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 94.0, - "trigger_value": "90.0~94.5", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:20:58.919465", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1265.3, - "trigger_value": "1234.99~1265.97", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:23:00.759790", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.2, - "trigger_value": "411.2~416.2", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:24:03.185173", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.2, - "trigger_value": "0~439.58", - "event_label": "止盈区间", - "timestamp": "2026-06-26T13:24:04.760341", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 94.2, - "trigger_value": "89.77~94.26", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:24:05.992824", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 182.77, - "trigger_value": "0~190.65", - "event_label": "止盈区间", - "timestamp": "2026-06-26T13:24:07.352519", - "date": "2026-06-26" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 524.1, - "trigger_value": "514.02~535.0", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:32:15.619016", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.6, - "trigger_value": "412.0~416.6", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:40:25.940861", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 415.8, - "trigger_value": "411.47~416.33", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:44:30.743902", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 187.08, - "trigger_value": "179.17~188.13", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:44:32.440315", - "date": "2026-06-26" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.2, - "trigger_value": "411.2~416.2", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:48:35.781947", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.0, - "trigger_value": "233.47~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T13:56:41.605607", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 248.6, - "trigger_value": "232.8~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:00:48.837239", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1267.68, - "trigger_value": "1239.19~1268.06", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:06:56.503470", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 190.5, - "trigger_value": "0~190.65", - "event_label": "止盈区间", - "timestamp": "2026-06-26T14:06:58.414638", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.0, - "trigger_value": "232.93~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:08:56.806922", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 249.2, - "trigger_value": "232.67~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:16:08.880102", - "date": "2026-06-26" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 96.0, - "trigger_value": "91.83~96.42", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:24:18.337297", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 188.64, - "trigger_value": "179.71~188.7", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:32:28.359307", - "date": "2026-06-26" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 381.75, - "trigger_value": "0~406.94", - "event_label": "止盈区间", - "timestamp": "2026-06-26T14:34:31.950804", - "date": "2026-06-26" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.19, - "trigger_value": "0~26.97", - "event_label": "止盈区间", - "timestamp": "2026-06-26T14:34:33.360319", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1261.66, - "trigger_value": "1234.44~1265.69", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:42:40.409134", - "date": "2026-06-26" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1265.01, - "trigger_value": "1235.11~1266.02", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:46:46.926322", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.0, - "trigger_value": "232.8~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T14:58:56.695711", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.34, - "trigger_value": "0~45.55", - "event_label": "止盈区间", - "timestamp": "2026-06-26T15:02:04.068601", - "date": "2026-06-26" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 188.76, - "trigger_value": "0~190.65", - "event_label": "止盈区间", - "timestamp": "2026-06-26T15:02:05.512534", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.2, - "trigger_value": "233.33~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T15:16:12.783238", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 249.8, - "trigger_value": "232.67~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T15:22:15.141367", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 249.2, - "trigger_value": "232.67~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T15:48:32.793068", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.64, - "trigger_value": "0~45.65", - "event_label": "止盈区间", - "timestamp": "2026-06-26T15:56:36.399133", - "date": "2026-06-26" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 45.62, - "trigger_value": "44.95~45.63", - "event_label": "买入区间", - "timestamp": "2026-06-26T15:58:37.708427", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.2, - "trigger_value": "232.67~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T16:00:42.468753", - "date": "2026-06-26" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 250.2, - "trigger_value": "232.8~250.28", - "event_label": "买入区间", - "timestamp": "2026-06-26T16:16:51.401738", - "date": "2026-06-26" - }, - { - "code": "00968", - "name": "信义光能", - "event_type": "entry_zone", - "price": 2.06, - "trigger_value": "2.02~2.1", - "event_label": "买入区间", - "timestamp": "2026-06-26T16:18:51.455889", - "date": "2026-06-26" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.5, - "trigger_value": "26.81~27.91", - "event_label": "买入区间", - "timestamp": "2026-06-26T16:18:52.809734", - "date": "2026-06-26" - }, - { - "code": "00968", - "name": "信义光能", - "event_type": "entry_zone", - "price": 2.0, - "trigger_value": "1.96~2.04", - "event_label": "买入区间", - "timestamp": "2026-06-26T16:24:55.991064", - "date": "2026-06-26" - }, - { - "code": "002015", - "name": "协鑫能科", - "event_type": "entry_zone", - "price": 17.62, - "trigger_value": "15.74~18.65", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:00:15.396545", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 47.23, - "trigger_value": "46.29~48.17", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:04:21.130185", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 411.8, - "trigger_value": "0~429.71", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:24.888569", - "date": "2026-06-29" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.62, - "trigger_value": "0~41.92", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:25.314387", - "date": "2026-06-29" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 72.65, - "trigger_value": "0~76.11", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:25.512982", - "date": "2026-06-29" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 6.86, - "trigger_value": "0~7.15", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:25.660367", - "date": "2026-06-29" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 14.19, - "trigger_value": "0~15.01", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:25.801553", - "date": "2026-06-29" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 381.0, - "trigger_value": "0~404.24", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:25.994059", - "date": "2026-06-29" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.39, - "trigger_value": "0~8.67", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:26.141704", - "date": "2026-06-29" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 188.76, - "trigger_value": "0~196.92", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:26.302407", - "date": "2026-06-29" - }, - { - "code": "601899", - "name": "XD紫金矿", - "event_type": "entry_zone", - "price": 25.1, - "trigger_value": "0~25.48", - "event_label": "止盈区间", - "timestamp": "2026-06-29T09:06:27.198362", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 401.0, - "trigger_value": "360.0~420.0", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:18:38.906209", - "date": "2026-06-29" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.0, - "trigger_value": "36.56~42.65", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:18:41.039951", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 100.7, - "trigger_value": "91.8~107.1", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:18:45.305294", - "date": "2026-06-29" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 260.8, - "trigger_value": "234.72~273.84", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:18:46.235834", - "date": "2026-06-29" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 188.88, - "trigger_value": "169.91~198.23", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:18:46.389087", - "date": "2026-06-29" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.4, - "trigger_value": "4.31~4.46", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:28:50.539984", - "date": "2026-06-29" - }, - { - "code": "02388", - "name": "中银香港", - "event_type": "entry_zone", - "price": 44.2, - "trigger_value": "39.78~46.41", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:33:05.123557", - "date": "2026-06-29" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 78.92, - "trigger_value": "77.86~80.07", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:34:04.378178", - "date": "2026-06-29" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1226.35, - "trigger_value": "1214.89~1232.51", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:34:07.074119", - "date": "2026-06-29" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 261.0, - "trigger_value": "258.24~271.15", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:34:11.418084", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 262.8, - "trigger_value": "258.88~264.31", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:34:14.772314", - "date": "2026-06-29" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 735.0, - "trigger_value": "719.5~739.39", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:34:15.157222", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.2, - "trigger_value": "26.66~27.36", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:38:11.008629", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 263.45, - "trigger_value": "258.88~263.5", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:42:11.172603", - "date": "2026-06-29" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 382.56, - "trigger_value": "378.47~382.73", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:44:11.230598", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "stop_loss", - "price": 97.0, - "trigger_value": "97.0", - "event_label": "", - "timestamp": "2026-06-29T09:46:14.164401", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 698.0, - "trigger_value": "682.08~701.29", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:46:15.913113", - "date": "2026-06-29" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 81.2, - "trigger_value": "80.0~82.47", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:48:17.525847", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 264.0, - "trigger_value": "258.88~264.12", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:48:21.507125", - "date": "2026-06-29" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.56, - "trigger_value": "40.21~40.61", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:50:21.491884", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 97.6, - "trigger_value": "93.9~98.6", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:50:21.976228", - "date": "2026-06-29" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 245.4, - "trigger_value": "240.2~248.4", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:50:22.165114", - "date": "2026-06-29" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 548.2, - "trigger_value": "542.23~553.38", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:52:23.434566", - "date": "2026-06-29" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1238.75, - "trigger_value": "1225.28~1244.75", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:54:23.523546", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 264.0, - "trigger_value": "258.88~264.68", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:54:23.662831", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.36, - "trigger_value": "26.73~27.39", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:56:25.102386", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 696.08, - "trigger_value": "687.27~702.1", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:56:27.698517", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 418.6, - "trigger_value": "411.8~418.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:58:26.363803", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 100.1, - "trigger_value": "97.33~102.2", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:58:29.452745", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 47.93, - "trigger_value": "46.91~48.16", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:58:34.800530", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 263.5, - "trigger_value": "258.88~264.04", - "event_label": "买入区间", - "timestamp": "2026-06-29T09:58:38.752279", - "date": "2026-06-29" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 166.3, - "trigger_value": "162.88~166.83", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:02:43.477899", - "date": "2026-06-29" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1173.26, - "trigger_value": "1149.09~1179.31", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:06:46.638268", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 97.5, - "trigger_value": "95.27~100.03", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:08:47.176237", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 263.4, - "trigger_value": "258.88~263.8", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:08:48.166851", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 698.95, - "trigger_value": "688.42~702.82", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:08:49.087052", - "date": "2026-06-29" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1182.99, - "trigger_value": "1158.14~1195.43", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:10:56.370625", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.0, - "trigger_value": "411.8~417.53", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:14:55.975876", - "date": "2026-06-29" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 150.0, - "trigger_value": "147.0~150.76", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:14:58.195797", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.8, - "trigger_value": "27.24~27.88", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:15:00.753967", - "date": "2026-06-29" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 382.71, - "trigger_value": "379.21~383.11", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:15:01.381577", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 262.0, - "trigger_value": "258.88~263.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:15:01.798198", - "date": "2026-06-29" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 250.13, - "trigger_value": "0~253.31", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:19:01.652867", - "date": "2026-06-29" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.48, - "trigger_value": "40.21~40.5", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:20:11.497720", - "date": "2026-06-29" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 151.3, - "trigger_value": "147.88~151.45", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:20:13.509497", - "date": "2026-06-29" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 170.6, - "trigger_value": "167.09~171.04", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:20:13.706997", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 691.0, - "trigger_value": "680.12~694.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:20:13.866188", - "date": "2026-06-29" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 381.49, - "trigger_value": "378.26~382.63", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:22:15.126007", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 263.51, - "trigger_value": "258.88~263.82", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:22:16.751077", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.0, - "trigger_value": "411.8~417.8", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:24:15.162388", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 92.95, - "trigger_value": "0~93.59", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:24:22.320829", - "date": "2026-06-29" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.62, - "trigger_value": "0~42.07", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:28:17.693920", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 91.7, - "trigger_value": "0~92.49", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:28:21.236389", - "date": "2026-06-29" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 150.9, - "trigger_value": "148.67~151.93", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:28:26.057385", - "date": "2026-06-29" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 14.22, - "trigger_value": "0~15.27", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:28:30.201717", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 416.0, - "trigger_value": "411.8~418.07", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:30:19.763512", - "date": "2026-06-29" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 93.2, - "trigger_value": "91.63~93.5", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:30:20.133677", - "date": "2026-06-29" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 755.8, - "trigger_value": "747.59~763.33", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:34:28.902996", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.82, - "trigger_value": "27.22~27.84", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:44:34.224315", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 90.9, - "trigger_value": "86.63~90.96", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:46:38.291560", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.84, - "trigger_value": "27.32~27.92", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:48:40.653876", - "date": "2026-06-29" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.65, - "trigger_value": "0~26.47", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:48:43.285402", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 419.8, - "trigger_value": "411.8~419.87", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:52:42.845068", - "date": "2026-06-29" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 151.2, - "trigger_value": "148.67~152.07", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:52:44.104494", - "date": "2026-06-29" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.61, - "trigger_value": "0~26.45", - "event_label": "止盈区间", - "timestamp": "2026-06-29T10:52:44.256298", - "date": "2026-06-29" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 173.0, - "trigger_value": "170.13~173.64", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:54:44.852741", - "date": "2026-06-29" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 152.0, - "trigger_value": "148.96~152.08", - "event_label": "买入区间", - "timestamp": "2026-06-29T10:56:45.914742", - "date": "2026-06-29" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 80.08, - "trigger_value": "78.54~80.15", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:03:02.974500", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 697.68, - "trigger_value": "686.0~702.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:06:07.066617", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.94, - "trigger_value": "27.36~27.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:10:09.319803", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 422.6, - "trigger_value": "0~455.12", - "event_label": "止盈区间", - "timestamp": "2026-06-29T11:14:16.938475", - "date": "2026-06-29" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "stop_loss", - "price": 13.67, - "trigger_value": "13.91", - "event_label": "", - "timestamp": "2026-06-29T11:16:20.412387", - "date": "2026-06-29" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 13.67, - "trigger_value": "0~15.54", - "event_label": "止盈区间", - "timestamp": "2026-06-29T11:16:21.323015", - "date": "2026-06-29" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.24, - "trigger_value": "0~2.43", - "event_label": "止盈区间", - "timestamp": "2026-06-29T11:16:21.813925", - "date": "2026-06-29" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 81.8, - "trigger_value": "79.6~83.5", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:18:21.829163", - "date": "2026-06-29" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 6.86, - "trigger_value": "6.17~7.2", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:18:26.795969", - "date": "2026-06-29" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 231.6, - "trigger_value": "220.73~238.67", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:18:29.952758", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.36, - "trigger_value": "47.49~48.46", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:18:30.122411", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 147.16, - "trigger_value": "141.24~148.3", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:18:30.242120", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.92, - "trigger_value": "27.32~27.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:26:31.380828", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 695.01, - "trigger_value": "681.09~695.93", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:28:31.832074", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 90.9, - "trigger_value": "86.6~90.93", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:44:49.276877", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 90.25, - "trigger_value": "86.03~90.33", - "event_label": "买入区间", - "timestamp": "2026-06-29T11:52:57.500743", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 430.6, - "trigger_value": "0~459.65", - "event_label": "止盈区间", - "timestamp": "2026-06-29T12:01:07.535835", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 89.4, - "trigger_value": "85.5~89.78", - "event_label": "买入区间", - "timestamp": "2026-06-29T12:01:08.718387", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 283.6, - "trigger_value": "0~310.66", - "event_label": "止盈区间", - "timestamp": "2026-06-29T12:01:10.064181", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 428.6, - "trigger_value": "0~459.65", - "event_label": "止盈区间", - "timestamp": "2026-06-29T12:04:16.903424", - "date": "2026-06-29" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 89.2, - "trigger_value": "85.5~89.78", - "event_label": "买入区间", - "timestamp": "2026-06-29T12:04:20.184841", - "date": "2026-06-29" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 283.6, - "trigger_value": "0~310.66", - "event_label": "止盈区间", - "timestamp": "2026-06-29T12:04:20.775936", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.55, - "trigger_value": "47.58~48.56", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:12:24.695868", - "date": "2026-06-29" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 79.75, - "trigger_value": "78.13~79.85", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:16:25.226305", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 691.84, - "trigger_value": "677.19~693.59", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:16:27.532958", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.84, - "trigger_value": "27.34~27.98", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:28:33.502709", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 700.31, - "trigger_value": "681.68~702.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:28:35.273498", - "date": "2026-06-29" - }, - { - "code": "02628", - "name": "中国人寿", - "event_type": "entry_zone", - "price": 27.88, - "trigger_value": "27.28~27.94", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:32:46.206445", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 700.4, - "trigger_value": "686.48~702.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:32:49.738883", - "date": "2026-06-29" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.42, - "trigger_value": "0~8.76", - "event_label": "止盈区间", - "timestamp": "2026-06-29T13:34:49.340891", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.2, - "trigger_value": "411.8~423.8", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:40:53.424720", - "date": "2026-06-29" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 64.01, - "trigger_value": "62.89~64.65", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:40:56.379356", - "date": "2026-06-29" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 79.67, - "trigger_value": "77.98~79.74", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:48:05.635207", - "date": "2026-06-29" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 65.09, - "trigger_value": "63.45~65.13", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:48:06.996123", - "date": "2026-06-29" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1194.88, - "trigger_value": "1170.48~1195.44", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:48:07.169069", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.45, - "trigger_value": "47.51~48.48", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:50:06.230543", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 150.59, - "trigger_value": "143.55~150.73", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:50:08.175321", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 423.4, - "trigger_value": "411.8~423.73", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:52:08.200375", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 701.76, - "trigger_value": "686.0~702.63", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:52:08.376855", - "date": "2026-06-29" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 252.46, - "trigger_value": "240.65~252.68", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:54:08.586170", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 150.12, - "trigger_value": "143.34~150.51", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:56:10.582829", - "date": "2026-06-29" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 65.81, - "trigger_value": "64.47~65.91", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:58:15.649330", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 702.8, - "trigger_value": "687.96~702.97", - "event_label": "买入区间", - "timestamp": "2026-06-29T13:58:17.796797", - "date": "2026-06-29" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1212.85, - "trigger_value": "1167.99~1216.1", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:00:28.977972", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 150.63, - "trigger_value": "144.0~151.2", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:04:36.667548", - "date": "2026-06-29" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 700.42, - "trigger_value": "688.8~702.93", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:06:41.553640", - "date": "2026-06-29" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 65.42, - "trigger_value": "64.1~65.46", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:14:51.556374", - "date": "2026-06-29" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 251.25, - "trigger_value": "240.87~252.91", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:14:53.153846", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.49, - "trigger_value": "47.52~48.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:18:56.358778", - "date": "2026-06-29" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1214.1, - "trigger_value": "1168.95~1216.58", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:34:13.493124", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 148.88, - "trigger_value": "142.77~149.91", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:34:18.543871", - "date": "2026-06-29" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 542.1, - "trigger_value": "531.16~542.22", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:36:14.967114", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 149.65, - "trigger_value": "142.94~150.09", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:40:20.036549", - "date": "2026-06-29" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1215.58, - "trigger_value": "1170.92~1217.57", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:42:20.627552", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.47, - "trigger_value": "47.51~48.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:44:22.882398", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.46, - "trigger_value": "47.51~48.49", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:48:26.528220", - "date": "2026-06-29" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 149.98, - "trigger_value": "142.92~150.07", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:48:28.172626", - "date": "2026-06-29" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.49, - "trigger_value": "47.53~48.5", - "event_label": "买入区间", - "timestamp": "2026-06-29T14:56:35.987585", - "date": "2026-06-29" - }, - { - "code": "00700", - "name": "腾讯控股", - "event_type": "entry_zone", - "price": 422.2, - "trigger_value": "411.8~423.53", - "event_label": "买入区间", - "timestamp": "2026-06-29T15:10:50.407974", - "date": "2026-06-29" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 241.2, - "trigger_value": "227.27~241.93", - "event_label": "买入区间", - "timestamp": "2026-06-29T15:10:52.129972", - "date": "2026-06-29" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 14.19, - "trigger_value": "0~15.29", - "event_label": "止盈区间", - "timestamp": "2026-06-30T09:06:54.341328", - "date": "2026-06-30" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 392.36, - "trigger_value": "0~403.64", - "event_label": "止盈区间", - "timestamp": "2026-06-30T09:06:55.985227", - "date": "2026-06-30" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 189.4, - "trigger_value": "0~207.64", - "event_label": "止盈区间", - "timestamp": "2026-06-30T09:06:57.498361", - "date": "2026-06-30" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1223.0, - "trigger_value": "1100.71~1284.16", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:21:05.147988", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "stop_loss", - "price": 255.0, - "trigger_value": "275.68", - "event_label": "", - "timestamp": "2026-06-30T09:21:06.866668", - "date": "2026-06-30" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 392.36, - "trigger_value": "353.12~411.98", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:21:07.299935", - "date": "2026-06-30" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 284.01, - "trigger_value": "257.4~300.3", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:21:08.041952", - "date": "2026-06-30" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 151.58, - "trigger_value": "136.06~158.74", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:21:08.424771", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 255.0, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:25:10.102222", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 255.0, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:28:17.102265", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 257.83, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:30:30.358343", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:34:35.952822", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 259.16, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:34:39.626950", - "date": "2026-06-30" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 535.0, - "trigger_value": "526.26~547.74", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:34:40.543442", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 781.9, - "trigger_value": "776.61~808.31", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:34:40.914618", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:38:44.433170", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 262.6, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:38:47.331081", - "date": "2026-06-30" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 526.33, - "trigger_value": "526.26~547.74", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:38:48.827026", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 792.53, - "trigger_value": "776.61~808.31", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:38:49.370620", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:40:44.861903", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 261.0, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:40:46.288471", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 792.85, - "trigger_value": "776.61~808.31", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:40:47.915002", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:44:50.691905", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 263.49, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:44:53.110059", - "date": "2026-06-30" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 525.62, - "trigger_value": "513.17~534.11", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:44:56.007497", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 800.07, - "trigger_value": "776.61~808.31", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:44:56.851789", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:48:57.143185", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 265.48, - "trigger_value": "229.5~267.75", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:48:57.553951", - "date": "2026-06-30" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 529.22, - "trigger_value": "513.17~534.11", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:48:58.273433", - "date": "2026-06-30" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.1, - "trigger_value": "4.02~4.18", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:51:01.186154", - "date": "2026-06-30" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 534.02, - "trigger_value": "513.17~534.11", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:51:03.565023", - "date": "2026-06-30" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 716.0, - "trigger_value": "701.68~722.82", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:53:00.783013", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 815.88, - "trigger_value": "796.33~828.83", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:53:02.546682", - "date": "2026-06-30" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 717.6, - "trigger_value": "701.68~722.82", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:57:02.928155", - "date": "2026-06-30" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 815.0, - "trigger_value": "796.33~828.83", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:57:03.245253", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 264.79, - "trigger_value": "253.19~265.85", - "event_label": "买入区间", - "timestamp": "2026-06-30T09:59:03.455177", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 264.55, - "trigger_value": "253.19~265.85", - "event_label": "买入区间", - "timestamp": "2026-06-30T10:12:29.125782", - "date": "2026-06-30" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 263.65, - "trigger_value": "253.19~265.85", - "event_label": "买入区间", - "timestamp": "2026-06-30T10:16:37.611317", - "date": "2026-06-30" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 24.95, - "trigger_value": "0~25.87", - "event_label": "止盈区间", - "timestamp": "2026-06-30T10:18:38.494999", - "date": "2026-06-30" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1270.0, - "trigger_value": "1143.0~1333.5", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:20:45.529208", - "date": "2026-07-01" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 276.0, - "trigger_value": "249.3~290.85", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:20:45.631399", - "date": "2026-07-01" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 160.49, - "trigger_value": "144.17~168.2", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:20:45.733567", - "date": "2026-07-01" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.77, - "trigger_value": "4.67~4.87", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:33:00.220937", - "date": "2026-07-01" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "stop_loss", - "price": 279.34, - "trigger_value": "281.05", - "event_label": "", - "timestamp": "2026-07-01T09:33:00.905869", - "date": "2026-07-01" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 558.89, - "trigger_value": "540.92~563.0", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:33:01.200367", - "date": "2026-07-01" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.28, - "trigger_value": "0~8.35", - "event_label": "止盈区间", - "timestamp": "2026-07-01T09:36:59.902311", - "date": "2026-07-01" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1290.21, - "trigger_value": "1270.0~1290.91", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:41:29.194522", - "date": "2026-07-01" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 271.32, - "trigger_value": "269.55~283.03", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:41:29.425760", - "date": "2026-07-01" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 253.98, - "trigger_value": "243.18~255.34", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:50:24.758260", - "date": "2026-07-01" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 99.01, - "trigger_value": "97.13~99.55", - "event_label": "买入区间", - "timestamp": "2026-07-01T09:58:34.447320", - "date": "2026-07-01" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1291.05, - "trigger_value": "1266.82~1291.19", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:00:36.066200", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 47.77, - "trigger_value": "46.92~47.96", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:00:36.642072", - "date": "2026-07-01" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1287.45, - "trigger_value": "1265.42~1290.5", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:04:37.888547", - "date": "2026-07-01" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 253.0, - "trigger_value": "237.01~253.6", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:04:38.073740", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 47.96, - "trigger_value": "47.02~48.1", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:12:55.481245", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 48.06, - "trigger_value": "47.02~48.1", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:24:59.420752", - "date": "2026-07-01" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 96.66, - "trigger_value": "94.29~98.13", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:33:07.556432", - "date": "2026-07-01" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1183.54, - "trigger_value": "1157.94~1184.47", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:33:07.873475", - "date": "2026-07-01" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 534.66, - "trigger_value": "523.2~544.56", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:33:08.083328", - "date": "2026-07-01" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 14.24, - "trigger_value": "0~15.02", - "event_label": "止盈区间", - "timestamp": "2026-07-01T10:36:15.248928", - "date": "2026-07-01" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.29, - "trigger_value": "0~8.35", - "event_label": "止盈区间", - "timestamp": "2026-07-01T10:36:15.349307", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 79.52, - "trigger_value": "78.17~80.03", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:38:11.668684", - "date": "2026-07-01" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1187.05, - "trigger_value": "1164.19~1192.47", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:38:11.871799", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.19, - "trigger_value": "48.05~49.52", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:40:14.655488", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 79.99, - "trigger_value": "78.44~80.22", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:42:18.469287", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 80.26, - "trigger_value": "78.75~80.45", - "event_label": "买入区间", - "timestamp": "2026-07-01T10:52:35.409682", - "date": "2026-07-01" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.37, - "trigger_value": "0~25.43", - "event_label": "止盈区间", - "timestamp": "2026-07-01T11:22:27.718695", - "date": "2026-07-01" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.51, - "trigger_value": "0~25.63", - "event_label": "止盈区间", - "timestamp": "2026-07-01T12:02:22.275660", - "date": "2026-07-01" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 691.82, - "trigger_value": "674.42~701.94", - "event_label": "买入区间", - "timestamp": "2026-07-01T13:22:58.880566", - "date": "2026-07-01" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 516.7, - "trigger_value": "500.32~520.74", - "event_label": "买入区间", - "timestamp": "2026-07-01T13:22:59.265488", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 81.16, - "trigger_value": "79.36~81.83", - "event_label": "买入区间", - "timestamp": "2026-07-01T13:26:57.034189", - "date": "2026-07-01" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 382.57, - "trigger_value": "374.4~382.7", - "event_label": "买入区间", - "timestamp": "2026-07-01T13:54:41.626818", - "date": "2026-07-01" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 676.94, - "trigger_value": "653.97~680.67", - "event_label": "买入区间", - "timestamp": "2026-07-01T13:58:46.749719", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 80.38, - "trigger_value": "78.86~80.6", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:00:55.362630", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.56, - "trigger_value": "48.51~49.65", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:00:55.500782", - "date": "2026-07-01" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 183.88, - "trigger_value": "175.8~184.59", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:11:12.256767", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.42, - "trigger_value": "48.44~49.46", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:11:13.654145", - "date": "2026-07-01" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 381.03, - "trigger_value": "371.27~381.14", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:20:18.302650", - "date": "2026-07-01" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 80.61, - "trigger_value": "79.16~80.82", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:24:24.455970", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.4, - "trigger_value": "48.49~49.65", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:24:24.654723", - "date": "2026-07-01" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 895.99, - "trigger_value": "877.1~912.9", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:32:34.555973", - "date": "2026-07-01" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.57, - "trigger_value": "48.55~49.65", - "event_label": "买入区间", - "timestamp": "2026-07-01T14:56:50.994484", - "date": "2026-07-01" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 95.94, - "trigger_value": "94.02~97.86", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:02.304898", - "date": "2026-07-02" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 4.77, - "trigger_value": "4.67~4.87", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:04.405137", - "date": "2026-07-02" - }, - { - "code": "300035", - "name": "中科电气", - "event_type": "entry_zone", - "price": 14.44, - "trigger_value": "0~15.14", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:06.909474", - "date": "2026-07-02" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 68.2, - "trigger_value": "66.84~69.56", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:07.847191", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1223.17, - "trigger_value": "1182.26~1248.91", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:08.824541", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1223.17, - "trigger_value": "0~1339.19", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:09.537251", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 254.0, - "trigger_value": "0~291.58", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:10.395613", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 383.84, - "trigger_value": "0~404.56", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:11.399494", - "date": "2026-07-02" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 667.84, - "trigger_value": "654.48~681.2", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:12.204429", - "date": "2026-07-02" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.27, - "trigger_value": "7.44~8.68", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:12.929186", - "date": "2026-07-02" - }, - { - "code": "518880", - "name": "黄金ETF华安", - "event_type": "entry_zone", - "price": 8.27, - "trigger_value": "0~8.58", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:13.725195", - "date": "2026-07-02" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1193.01, - "trigger_value": "1169.15~1205.28", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:14.483574", - "date": "2026-07-02" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 182.55, - "trigger_value": "175.29~184.05", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:15.312241", - "date": "2026-07-02" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.53, - "trigger_value": "48.54~49.65", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:16.290159", - "date": "2026-07-02" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 25.11, - "trigger_value": "0~25.51", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:17.252553", - "date": "2026-07-02" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 262.89, - "trigger_value": "0~309.13", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:18.022647", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 497.27, - "trigger_value": "487.32~507.22", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:19.501868", - "date": "2026-07-02" - }, - { - "code": "688639", - "name": "华恒生物", - "event_type": "entry_zone", - "price": 16.37, - "trigger_value": "0~18.7", - "event_label": "止盈区间", - "timestamp": "2026-07-02T09:00:20.335222", - "date": "2026-07-02" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 154.48, - "trigger_value": "148.9~156.34", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:00:21.415663", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "stop_loss", - "price": 1150.0, - "trigger_value": "1169.0", - "event_label": "", - "timestamp": "2026-07-02T09:16:02.145740", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 245.5, - "trigger_value": "241.67~253.75", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:16:04.057401", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "stop_loss", - "price": 245.5, - "trigger_value": "246.38", - "event_label": "", - "timestamp": "2026-07-02T09:16:05.271652", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "372.23~381.61", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:16:05.991401", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "stop_loss", - "price": 1150.0, - "trigger_value": "1169.0", - "event_label": "", - "timestamp": "2026-07-02T09:16:07.770594", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 246.8, - "trigger_value": "241.67~253.75", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:16:10.951070", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "372.23~381.61", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:16:13.246108", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "stop_loss", - "price": 1154.68, - "trigger_value": "1169.0", - "event_label": "", - "timestamp": "2026-07-02T09:16:53.458167", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 243.13, - "trigger_value": "241.67~253.75", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:16:55.433761", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "stop_loss", - "price": 243.13, - "trigger_value": "246.38", - "event_label": "", - "timestamp": "2026-07-02T09:16:57.770412", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "372.23~381.61", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:17:00.783243", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "stop_loss", - "price": 1151.02, - "trigger_value": "1169.0", - "event_label": "", - "timestamp": "2026-07-02T09:18:01.712377", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 243.0, - "trigger_value": "241.67~253.75", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:18:06.467320", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "stop_loss", - "price": 243.0, - "trigger_value": "246.38", - "event_label": "", - "timestamp": "2026-07-02T09:18:09.450273", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "372.23~381.61", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:18:13.514751", - "date": "2026-07-02" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.74, - "trigger_value": "14.22~16.59", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:19:26.800459", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 243.0, - "trigger_value": "220.95~257.78", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:19:29.057085", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "342.0~399.0", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:19:30.029207", - "date": "2026-07-02" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 258.88, - "trigger_value": "235.79~275.09", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:19:30.860972", - "date": "2026-07-02" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.6, - "trigger_value": "14.22~16.59", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:01.440142", - "date": "2026-07-02" - }, - { - "code": "300308", - "name": "中际旭创", - "event_type": "entry_zone", - "price": 1151.0, - "trigger_value": "1039.21~1212.41", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:06.591380", - "date": "2026-07-02" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 258.8, - "trigger_value": "235.79~275.09", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:07.565461", - "date": "2026-07-02" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 145.01, - "trigger_value": "132.43~154.5", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:07.841783", - "date": "2026-07-02" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.59, - "trigger_value": "14.22~16.59", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:12.559241", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 242.0, - "trigger_value": "220.95~257.78", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:18.569412", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 380.0, - "trigger_value": "342.0~399.0", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:23.611960", - "date": "2026-07-02" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 258.0, - "trigger_value": "235.79~275.09", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:20:26.996055", - "date": "2026-07-02" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 15.59, - "trigger_value": "14.17~16.53", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:21:31.294673", - "date": "2026-07-02" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "entry_zone", - "price": 241.99, - "trigger_value": "218.7~255.15", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:21:31.462836", - "date": "2026-07-02" - }, - { - "code": "300750", - "name": "宁德时代", - "event_type": "entry_zone", - "price": 382.0, - "trigger_value": "342.0~399.0", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:21:31.532076", - "date": "2026-07-02" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 258.0, - "trigger_value": "234.0~273.0", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:21:32.096677", - "date": "2026-07-02" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.15, - "trigger_value": "14.03~16.37", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:36:34.519437", - "date": "2026-07-02" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.01, - "trigger_value": "4.91~5.11", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:38:01.499279", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 476.35, - "trigger_value": "460.83~479.63", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:38:01.956415", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 658.0, - "trigger_value": "644.4~670.7", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:38:02.061315", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 770.16, - "trigger_value": "767.34~798.66", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:40:02.104734", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 760.08, - "trigger_value": "754.8~785.6", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:42:02.109771", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 92.65, - "trigger_value": "89.65~93.31", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:48:01.958980", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 485.33, - "trigger_value": "479.71~499.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:50:01.981909", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 93.37, - "trigger_value": "91.24~94.96", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:50:53.088285", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 672.49, - "trigger_value": "656.21~682.99", - "event_label": "买入区间", - "timestamp": "2026-07-02T09:58:06.085576", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 673.19, - "trigger_value": "656.21~682.99", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:00:01.656373", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 681.38, - "trigger_value": "656.21~682.99", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:02:01.274134", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 780.0, - "trigger_value": "763.85~786.74", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:06:01.933607", - "date": "2026-07-02" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.87, - "trigger_value": "69.5~71.08", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:12:02.173496", - "date": "2026-07-02" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.85, - "trigger_value": "69.5~71.08", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:12:18.950657", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 679.04, - "trigger_value": "666.67~683.74", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:18:01.712139", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 682.0, - "trigger_value": "665.48~683.59", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:20:01.781222", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 679.12, - "trigger_value": "665.48~683.59", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:20:29.546720", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 767.2, - "trigger_value": "753.59~769.56", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:20:29.709508", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 683.0, - "trigger_value": "670.22~684.73", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:32:01.255437", - "date": "2026-07-02" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.48, - "trigger_value": "69.0~70.52", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:34:02.143236", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 683.08, - "trigger_value": "670.32~684.2", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:36:03.257512", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 779.01, - "trigger_value": "762.44~785.5", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:36:06.149328", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 495.3, - "trigger_value": "483.89~495.37", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:38:53.488369", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 776.97, - "trigger_value": "763.43~784.82", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:38:53.713751", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 495.74, - "trigger_value": "485.5~496.52", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:40:01.696249", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 684.97, - "trigger_value": "671.3~685.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:40:02.986047", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 495.27, - "trigger_value": "485.5~496.52", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:40:56.419574", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 684.87, - "trigger_value": "671.3~685.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:40:57.808375", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 776.5, - "trigger_value": "761.43~784.91", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:40:57.967180", - "date": "2026-07-02" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.2, - "trigger_value": "68.92~70.45", - "event_label": "买入区间", - "timestamp": "2026-07-02T10:42:02.156688", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 844.2, - "trigger_value": "827.0~850.94", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:06:01.621961", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 486.5, - "trigger_value": "478.4~490.35", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:06:03.324048", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 844.18, - "trigger_value": "827.0~850.94", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:06:26.090884", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 486.32, - "trigger_value": "478.4~490.35", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:06:30.521519", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 760.05, - "trigger_value": "749.48~765.97", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:06:34.724665", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 679.49, - "trigger_value": "667.4~682.45", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:12:01.770178", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 680.2, - "trigger_value": "667.4~682.45", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:12:31.624197", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 493.36, - "trigger_value": "482.06~494.51", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:14:01.545232", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 867.77, - "trigger_value": "845.75~869.52", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:16:40.304904", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 865.06, - "trigger_value": "845.75~869.52", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:18:01.697433", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 765.0, - "trigger_value": "750.83~767.49", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:18:03.275916", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 859.19, - "trigger_value": "850.66~870.19", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:20:01.759233", - "date": "2026-07-02" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 762.0, - "trigger_value": "751.55~767.62", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:20:04.848296", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 860.0, - "trigger_value": "847.69~869.23", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:20:48.600674", - "date": "2026-07-02" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 675.9, - "trigger_value": "666.39~681.78", - "event_label": "买入区间", - "timestamp": "2026-07-02T11:20:50.974526", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:02:02.063935", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:02:22.521544", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:02:32.791997", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:04:01.400121", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:04:27.834883", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:06:40.980369", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 488.56, - "trigger_value": "478.79~489.29", - "event_label": "买入区间", - "timestamp": "2026-07-02T12:06:57.513177", - "date": "2026-07-02" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 491.42, - "trigger_value": "480.2~494.19", - "event_label": "买入区间", - "timestamp": "2026-07-02T13:10:15.517333", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 820.29, - "trigger_value": "801.65~834.37", - "event_label": "买入区间", - "timestamp": "2026-07-02T13:32:34.240905", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 820.93, - "trigger_value": "803.6~836.4", - "event_label": "买入区间", - "timestamp": "2026-07-02T13:38:19.623904", - "date": "2026-07-02" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 822.04, - "trigger_value": "803.6~836.4", - "event_label": "买入区间", - "timestamp": "2026-07-02T13:40:09.450029", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 96.32, - "trigger_value": "93.88~96.51", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:48:18.836358", - "date": "2026-07-02" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 595.0, - "trigger_value": "584.08~607.92", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:48:19.007348", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 96.27, - "trigger_value": "93.88~96.51", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:48:50.645887", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 96.0, - "trigger_value": "93.88~96.51", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:50:18.556147", - "date": "2026-07-02" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 593.33, - "trigger_value": "584.08~607.92", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:50:19.978681", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 95.95, - "trigger_value": "94.08~96.58", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:52:53.014262", - "date": "2026-07-02" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 83.54, - "trigger_value": "81.94~83.56", - "event_label": "买入区间", - "timestamp": "2026-07-02T14:56:14.248493", - "date": "2026-07-02" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 93.5, - "trigger_value": "91.49~95.23", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:21:09.860916", - "date": "2026-07-03" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 85.01, - "trigger_value": "82.89~86.27", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:21:10.008487", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 804.75, - "trigger_value": "788.65~820.85", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:28:18.083667", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 589.0, - "trigger_value": "577.22~600.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:28:18.249225", - "date": "2026-07-03" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.5, - "trigger_value": "48.51~49.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:28:18.397019", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 805.0, - "trigger_value": "788.65~820.85", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:31:17.417228", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 589.0, - "trigger_value": "577.22~600.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:31:19.792302", - "date": "2026-07-03" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.16, - "trigger_value": "14.47~16.88", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:32:43.914954", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.23, - "trigger_value": "5.08~5.24", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:32:45.650142", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 797.46, - "trigger_value": "788.65~820.85", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:32:45.762069", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 581.12, - "trigger_value": "577.22~600.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:32:45.889485", - "date": "2026-07-03" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 252.25, - "trigger_value": "230.22~268.59", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:32:46.031638", - "date": "2026-07-03" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 16.25, - "trigger_value": "14.47~16.88", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:21.202408", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 800.0, - "trigger_value": "788.65~820.85", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:25.373855", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 578.78, - "trigger_value": "577.22~600.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:30.305737", - "date": "2026-07-03" - }, - { - "code": "688411", - "name": "海博思创", - "event_type": "entry_zone", - "price": 253.81, - "trigger_value": "230.22~268.59", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:32.028061", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 803.02, - "trigger_value": "788.65~820.85", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:57.320270", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 580.5, - "trigger_value": "577.22~600.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:57.421262", - "date": "2026-07-03" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.59, - "trigger_value": "48.51~49.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:34:57.522585", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.12, - "trigger_value": "89.08~92.72", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:36:34.608086", - "date": "2026-07-03" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 86.14, - "trigger_value": "84.06~86.7", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:36:38.778575", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 460.12, - "trigger_value": "444.38~462.52", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:36:40.472276", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 819.97, - "trigger_value": "790.86~823.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:39:07.603401", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 592.0, - "trigger_value": "572.8~596.18", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:39:07.786382", - "date": "2026-07-03" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.31, - "trigger_value": "48.46~49.55", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:39:08.061067", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 821.0, - "trigger_value": "790.86~823.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:41:01.114774", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 595.0, - "trigger_value": "572.8~596.18", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:41:01.320502", - "date": "2026-07-03" - }, - { - "code": "601318", - "name": "中国平安", - "event_type": "entry_zone", - "price": 49.17, - "trigger_value": "48.46~49.55", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:41:01.404690", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 90.95, - "trigger_value": "88.84~92.46", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:44:49.382453", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:44:52.457030", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.88, - "trigger_value": "89.04~92.68", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:48:56.752426", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:48:56.883174", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 477.99, - "trigger_value": "473.53~485.05", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:48:57.057198", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 69.25, - "trigger_value": "68.19~69.84", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:50:30.681833", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 474.06, - "trigger_value": "473.53~485.05", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:50:32.543442", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.18, - "trigger_value": "89.04~92.68", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:51:12.267083", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:51:14.293168", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 69.11, - "trigger_value": "68.19~69.84", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:52:18.825215", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.25, - "trigger_value": "87.04~90.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:55:15.144895", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 90.0, - "trigger_value": "87.04~90.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:56:28.341203", - "date": "2026-07-03" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1201.38, - "trigger_value": "1182.87~1208.37", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:56:28.531609", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.24, - "trigger_value": "87.04~90.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:58:03.449246", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 477.0, - "trigger_value": "461.62~480.46", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:58:03.517093", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.61, - "trigger_value": "87.04~90.6", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:58:18.927785", - "date": "2026-07-03" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1201.66, - "trigger_value": "1182.87~1208.37", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:58:22.632056", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 477.0, - "trigger_value": "461.62~480.46", - "event_label": "买入区间", - "timestamp": "2026-07-03T09:58:25.874972", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 90.01, - "trigger_value": "87.58~91.16", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:02:32.512640", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:02:32.664805", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 481.03, - "trigger_value": "469.15~483.96", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:02:32.827241", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 833.01, - "trigger_value": "813.4~839.34", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:04:34.741797", - "date": "2026-07-03" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 86.43, - "trigger_value": "85.36~86.91", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:04:34.887412", - "date": "2026-07-03" - }, - { - "code": "002594", - "name": "比亚迪", - "event_type": "entry_zone", - "price": 86.7, - "trigger_value": "85.36~86.91", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:06:24.350811", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.52, - "trigger_value": "87.58~91.16", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:06:31.053501", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:06:31.294747", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 483.74, - "trigger_value": "469.15~483.96", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:06:32.424388", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 70.95, - "trigger_value": "69.77~71.32", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:08:08.831403", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 89.22, - "trigger_value": "87.61~91.19", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:10:29.733468", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 484.03, - "trigger_value": "474.07~486.19", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:10:33.373526", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.5, - "trigger_value": "87.22~90.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:14:37.057818", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 840.0, - "trigger_value": "819.97~840.13", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:16:30.003640", - "date": "2026-07-03" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1201.38, - "trigger_value": "1179.92~1206.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:18:17.225267", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.76, - "trigger_value": "86.73~90.27", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:18:47.889107", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.25, - "trigger_value": "5.14~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:18:48.054469", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.73, - "trigger_value": "86.73~90.27", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:18:53.373240", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.25, - "trigger_value": "5.14~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:18:53.447704", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 835.99, - "trigger_value": "818.3~838.69", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:20:24.878817", - "date": "2026-07-03" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1202.41, - "trigger_value": "1179.92~1206.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:20:24.988282", - "date": "2026-07-03" - }, - { - "code": "001309", - "name": "德明利", - "event_type": "entry_zone", - "price": 833.99, - "trigger_value": "818.3~838.69", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:22:24.916521", - "date": "2026-07-03" - }, - { - "code": "600519", - "name": "贵州茅台", - "event_type": "entry_zone", - "price": 1203.0, - "trigger_value": "1179.92~1206.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:22:25.114242", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 87.93, - "trigger_value": "86.73~90.27", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:22:55.561315", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.24, - "trigger_value": "5.14~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:22:55.893638", - "date": "2026-07-03" - }, - { - "code": "688630", - "name": "芯碁微装", - "event_type": "entry_zone", - "price": 486.0, - "trigger_value": "475.2~486.17", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:22:57.837686", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.89, - "trigger_value": "86.27~89.79", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:27:25.917807", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.23, - "trigger_value": "5.14~5.25", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:27:31.525100", - "date": "2026-07-03" - }, - { - "code": "02359", - "name": "药明康德", - "event_type": "entry_zone", - "price": 152.9, - "trigger_value": "149.45~154.86", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:28:16.907063", - "date": "2026-07-03" - }, - { - "code": "06160", - "name": "百济神州", - "event_type": "entry_zone", - "price": 181.6, - "trigger_value": "179.63~183.4", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:28:19.403509", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 200.4, - "trigger_value": "182.52~212.94", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:28:19.456833", - "date": "2026-07-03" - }, - { - "code": "09868", - "name": "小鹏汽车-W", - "event_type": "entry_zone", - "price": 50.25, - "trigger_value": "50.18~51.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:28:19.522580", - "date": "2026-07-03" - }, - { - "code": "09988", - "name": "阿里巴巴-W", - "event_type": "entry_zone", - "price": 94.1, - "trigger_value": "93.49~94.92", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:28:19.602866", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.67, - "trigger_value": "86.83~90.37", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:30:19.791987", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.25, - "trigger_value": "5.14~5.25", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:30:25.159354", - "date": "2026-07-03" - }, - { - "code": "000657", - "name": "中钨高新", - "event_type": "entry_zone", - "price": 88.79, - "trigger_value": "86.83~90.37", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:34:15.409862", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.25, - "trigger_value": "5.14~5.25", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:34:15.537060", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 71.24, - "trigger_value": "70.48~71.55", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:38:29.251662", - "date": "2026-07-03" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 17.31, - "trigger_value": "0~18.93", - "event_label": "止盈区间", - "timestamp": "2026-07-03T10:38:39.296028", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 71.23, - "trigger_value": "70.48~71.55", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:38:42.781286", - "date": "2026-07-03" - }, - { - "code": "600563", - "name": "法拉电子", - "event_type": "entry_zone", - "price": 159.56, - "trigger_value": "0~171.96", - "event_label": "止盈区间", - "timestamp": "2026-07-03T10:38:42.981115", - "date": "2026-07-03" - }, - { - "code": "601899", - "name": "紫金矿业", - "event_type": "entry_zone", - "price": 28.24, - "trigger_value": "0~30.38", - "event_label": "止盈区间", - "timestamp": "2026-07-03T10:38:43.067796", - "date": "2026-07-03" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 142.5, - "trigger_value": "0~153.58", - "event_label": "止盈区间", - "timestamp": "2026-07-03T10:38:43.142300", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:44:30.388534", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:48:28.599391", - "date": "2026-07-03" - }, - { - "code": "000711", - "name": "ST京蓝", - "event_type": "entry_zone", - "price": 5.26, - "trigger_value": "5.15~5.26", - "event_label": "买入区间", - "timestamp": "2026-07-03T10:50:35.989841", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 71.12, - "trigger_value": "69.93~71.47", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:10:13.492666", - "date": "2026-07-03" - }, - { - "code": "688795", - "name": "摩尔线程-U", - "event_type": "entry_zone", - "price": 656.41, - "trigger_value": "640.4~661.55", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:10:14.388968", - "date": "2026-07-03" - }, - { - "code": "688802", - "name": "沐曦股份-U", - "event_type": "entry_zone", - "price": 747.1, - "trigger_value": "735.17~758.83", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:10:14.569334", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 619.0, - "trigger_value": "613.93~620.18", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:13:01.494442", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 437.0, - "trigger_value": "427.28~444.72", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:23.996542", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 437.0, - "trigger_value": "0~470.88", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:24.624140", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 80.7, - "trigger_value": "72.45~84.53", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:24.732225", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 80.7, - "trigger_value": "0~86.94", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:25.084481", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.16, - "trigger_value": "35.93~41.92", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:28.993449", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.16, - "trigger_value": "0~43.11", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:29.629844", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.6, - "trigger_value": "74.03~86.36", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:29.965400", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.6, - "trigger_value": "0~88.83", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:30.114407", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.05, - "trigger_value": "6.32~7.37", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:30.304612", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.05, - "trigger_value": "0~7.58", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:35.358231", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.6, - "trigger_value": "78.08~91.09", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:40.394717", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.6, - "trigger_value": "0~93.69", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:45.434897", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.32, - "trigger_value": "2.07~2.42", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:14:50.523069", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.32, - "trigger_value": "0~2.48", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:14:59.705931", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.8, - "trigger_value": "186.12~217.14", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:15:00.287164", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.8, - "trigger_value": "0~223.34", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:15:00.430498", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 618.02, - "trigger_value": "611.31~619.68", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:22:07.308667", - "date": "2026-07-03" - }, - { - "code": "300124", - "name": "汇川技术", - "event_type": "entry_zone", - "price": 71.11, - "trigger_value": "69.91~71.42", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:22:20.859749", - "date": "2026-07-03" - }, - { - "code": "301308", - "name": "江波龙", - "event_type": "entry_zone", - "price": 617.89, - "trigger_value": "611.31~619.68", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:22:22.199650", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 438.6, - "trigger_value": "427.87~445.33", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:11.456641", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 438.6, - "trigger_value": "0~471.53", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:18.294805", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 79.9, - "trigger_value": "72.09~84.11", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:26.253956", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 79.9, - "trigger_value": "0~86.51", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:29.577070", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.3, - "trigger_value": "36.36~42.42", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:30.340343", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.3, - "trigger_value": "0~43.63", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:32.714618", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.6, - "trigger_value": "74.39~86.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:36.541205", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.6, - "trigger_value": "0~89.26", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:36.686582", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.1, - "trigger_value": "6.35~7.41", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:37.242356", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.1, - "trigger_value": "0~7.62", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:37.443395", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.65, - "trigger_value": "76.77~89.56", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:38.817321", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.65, - "trigger_value": "0~92.12", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:39.528996", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.34, - "trigger_value": "2.1~2.45", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:39.720487", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.34, - "trigger_value": "0~2.52", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:41.301094", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.6, - "trigger_value": "184.68~215.46", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:52:45.543223", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.6, - "trigger_value": "0~221.62", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:52:47.160071", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 437.8, - "trigger_value": "427.87~445.33", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:14.974895", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 437.8, - "trigger_value": "0~471.53", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:17.221621", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 79.7, - "trigger_value": "72.09~84.11", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:22.810159", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 79.7, - "trigger_value": "0~86.51", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:24.193676", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.22, - "trigger_value": "36.36~42.42", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:24.477745", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.22, - "trigger_value": "0~43.63", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:24.655213", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.8, - "trigger_value": "74.39~86.78", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:25.091753", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 82.8, - "trigger_value": "0~89.26", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:25.321463", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.08, - "trigger_value": "6.35~7.41", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:26.301603", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 7.08, - "trigger_value": "0~7.62", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:29.534882", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.7, - "trigger_value": "76.77~89.56", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:29.649302", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 85.7, - "trigger_value": "0~92.12", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:30.678788", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.34, - "trigger_value": "2.1~2.45", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:30.768058", - "date": "2026-07-03" - }, - { - "code": "02202", - "name": "万科企业", - "event_type": "entry_zone", - "price": 2.34, - "trigger_value": "0~2.52", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:30.829554", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.2, - "trigger_value": "184.68~215.46", - "event_label": "买入区间", - "timestamp": "2026-07-03T11:54:30.916574", - "date": "2026-07-03" - }, - { - "code": "06869", - "name": "长飞光纤光缆", - "event_type": "entry_zone", - "price": 206.2, - "trigger_value": "0~221.62", - "event_label": "止盈区间", - "timestamp": "2026-07-03T11:54:31.001389", - "date": "2026-07-03" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 17.92, - "trigger_value": "15.5~18.08", - "event_label": "买入区间", - "timestamp": "2026-07-03T13:28:17.259162", - "date": "2026-07-03" - }, - { - "code": "000700", - "name": "模塑科技", - "event_type": "entry_zone", - "price": 17.88, - "trigger_value": "15.5~18.08", - "event_label": "买入区间", - "timestamp": "2026-07-03T13:30:30.458142", - "date": "2026-07-03" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "stop_loss", - "price": 140.94, - "trigger_value": "140.94", - "event_label": "", - "timestamp": "2026-07-03T14:32:04.634438", - "date": "2026-07-03" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "stop_loss", - "price": 140.9, - "trigger_value": "140.94", - "event_label": "", - "timestamp": "2026-07-03T14:36:05.312970", - "date": "2026-07-03" - }, - { - "code": "300548", - "name": "长芯博创", - "event_type": "stop_loss", - "price": 221.27, - "trigger_value": "221.38", - "event_label": "", - "timestamp": "2026-07-03T14:52:17.930474", - "date": "2026-07-03" - }, - { - "code": "688981", - "name": "中芯国际", - "event_type": "stop_loss", - "price": 140.59, - "trigger_value": "140.94", - "event_label": "", - "timestamp": "2026-07-03T14:52:19.831851", - "date": "2026-07-03" - }, - { - "code": "00700", - "name": "腾讯", - "event_type": "entry_zone", - "price": 431.2, - "trigger_value": "0~471.11", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:00.677392", - "date": "2026-07-03" - }, - { - "code": "00981", - "name": "中芯国际", - "event_type": "entry_zone", - "price": 77.6, - "trigger_value": "0~86.36", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:02.127652", - "date": "2026-07-03" - }, - { - "code": "01088", - "name": "中国神华", - "event_type": "entry_zone", - "price": 40.0, - "trigger_value": "0~43.24", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:03.229516", - "date": "2026-07-03" - }, - { - "code": "01211", - "name": "比亚迪股份", - "event_type": "entry_zone", - "price": 84.1, - "trigger_value": "0~88.88", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:04.107193", - "date": "2026-07-03" - }, - { - "code": "01478", - "name": "丘钛科技", - "event_type": "entry_zone", - "price": 6.99, - "trigger_value": "0~7.59", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:05.155525", - "date": "2026-07-03" - }, - { - "code": "01888", - "name": "建滔积层板", - "event_type": "entry_zone", - "price": 84.45, - "trigger_value": "0~93.1", + "price": 3.82, + "trigger_value": "0.0~3.93", "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:06.312968", - "date": "2026-07-03" + "timestamp": "2026-07-08T18:53:56.392558", + "date": "2026-07-08" }, { - "code": "02202", - "name": "万科企业", + "code": "000949", + "name": "新乡化纤", "event_type": "entry_zone", - "price": 2.34, - "trigger_value": "0~2.5", - "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:07.637348", - "date": "2026-07-03" + "price": 5.61, + "trigger_value": "5.5~5.66", + "event_label": "加仓区间", + "timestamp": "2026-07-08T18:54:09.132842", + "date": "2026-07-08" }, { - "code": "06869", - "name": "长飞光纤光缆", + "code": "000949", + "name": "新乡化纤", "event_type": "entry_zone", - "price": 201.2, - "trigger_value": "0~223.13", + "price": 5.61, + "trigger_value": "0.0~5.99", "event_label": "止盈区间", - "timestamp": "2026-07-03T23:42:09.036359", - "date": "2026-07-03" + "timestamp": "2026-07-08T18:54:16.531662", + "date": "2026-07-08" } ] } \ No newline at end of file diff --git a/data/price_history.json b/data/price_history.json index 08d9d06f..d9e42086 100644 --- a/data/price_history.json +++ b/data/price_history.json @@ -11,6 +11,14 @@ "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": [ @@ -19,6 +27,14 @@ "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": [ @@ -50,7 +66,9 @@ "date": "2026-07-08", "high": 1202.0, "low": 1177.0, - "close": 1187.99 + "close": 1199.3, + "volume": 25776.0, + "amount": 307193.0 } ], "02202": [ @@ -59,6 +77,14 @@ "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": [ @@ -116,7 +142,9 @@ "date": "2026-07-08", "high": 50.22, "low": 48.96, - "close": 49.5 + "close": 49.54, + "volume": 540995.0, + "amount": 267859.0 } ], "02359": [ @@ -226,7 +254,9 @@ "date": "2026-07-08", "high": 494.81, "low": 451.06, - "close": 493.0 + "close": 473.26, + "volume": 5061122.0, + "amount": 240616.0 } ], "06160": [ @@ -267,6 +297,14 @@ "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": [ @@ -298,7 +336,9 @@ "date": "2026-07-08", "high": 699.0, "low": 629.0, - "close": 675.99 + "close": 666.0, + "volume": 2417134.0, + "amount": 160890.0 } ], "09868": [ @@ -382,7 +422,9 @@ "date": "2026-07-08", "high": 876.0, "low": 723.0, - "close": 846.01 + "close": 840.08, + "volume": 2586035.0, + "amount": 216333.0 } ], "300124": [ @@ -413,8 +455,10 @@ { "date": "2026-07-08", "high": 69.79, - "low": 63.5, - "close": 64.44 + "low": 63.15, + "close": 63.2, + "volume": 394793.0, + "amount": 252387.0 } ], "000657": [ @@ -446,7 +490,9 @@ "date": "2026-07-08", "high": 80.8, "low": 72.98, - "close": 77.36 + "close": 73.95, + "volume": 611139.0, + "amount": 460609.0 } ], "000711": [ @@ -476,9 +522,11 @@ }, { "date": "2026-07-08", - "high": 5.59, + "high": 5.84, "low": 4.92, - "close": 5.54 + "close": 5.69, + "volume": 1239419.0, + "amount": 68853.0 } ], "001309": [ @@ -510,7 +558,9 @@ "date": "2026-07-08", "high": 900.0, "low": 790.0, - "close": 847.5 + "close": 825.0, + "volume": 139865.0, + "amount": 1159183.0 } ], "002594": [ @@ -542,7 +592,9 @@ "date": "2026-07-08", "high": 88.81, "low": 85.28, - "close": 87.25 + "close": 87.8, + "volume": 403809.0, + "amount": 352747.0 } ], "00700": [ @@ -551,6 +603,14 @@ "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": [ @@ -585,6 +645,14 @@ "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": [ @@ -619,6 +687,14 @@ "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": [ @@ -627,6 +703,14 @@ "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": [ @@ -652,7 +736,9 @@ "date": "2026-07-08", "high": 647.78, "low": 584.67, - "close": 624.2 + "close": 592.71, + "volume": 167016.0, + "amount": 1015473.0 } ], "000700": [ @@ -667,6 +753,14 @@ "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 } ], "300548": [ @@ -681,6 +775,14 @@ "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 } ], "000850": [ @@ -694,17 +796,19 @@ "date": "2026-07-08", "high": 3.95, "low": 3.72, - "close": 3.86, - "volume": 60649.0, - "amount": 2312.0 + "close": 3.81, + "volume": 91374.0, + "amount": 3486.0 } ], "603501": [ { "date": "2026-07-08", - "high": 101.0, + "high": 103.48, "low": 97.01, - "close": 100.08 + "close": 100.95, + "volume": 341509.0, + "amount": 343291.0 } ], "688041": [ @@ -712,7 +816,9 @@ "date": "2026-07-08", "high": 359.04, "low": 342.01, - "close": 352.07 + "close": 343.0, + "volume": 30295791.0, + "amount": 1058883.0 } ], "002371": [ @@ -720,7 +826,9 @@ "date": "2026-07-08", "high": 830.02, "low": 768.0, - "close": 819.85 + "close": 802.32, + "volume": 148075.0, + "amount": 1184089.0 } ], "000001": [ @@ -728,7 +836,127 @@ "date": "2026-07-08", "high": 10.59, "low": 10.34, - "close": 10.53 + "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 + } + ], + "601101": [ + { + "date": "2026-07-08", + "high": 12.87, + "low": 11.83, + "close": 12.23, + "volume": 448232.0, + "amount": 55232.0 + } + ], + "601899": [ + { + "date": "2026-07-08", + "high": 28.03, + "low": 26.8, + "close": 27.36, + "volume": 1969818.0, + "amount": 541986.0 } ] } \ No newline at end of file diff --git a/scripts/test_sync_marker b/scripts/.hermes-tmp.2983720 similarity index 100% rename from scripts/test_sync_marker rename to scripts/.hermes-tmp.2983720 diff --git a/scripts/.hermes-tmp.2983724 b/scripts/.hermes-tmp.2983724 new file mode 100644 index 00000000..e69de29b diff --git a/scripts/300308_monitor.py b/scripts/300308_monitor.py index d63171a6..03fce85b 100644 --- a/scripts/300308_monitor.py +++ b/scripts/300308_monitor.py @@ -4,9 +4,10 @@ 支持策略动态调整——输出状态变化。 """ -import json, os, sys, urllib.request +import json, os, sys from pathlib import Path from datetime import datetime +from mo_data import get_price as md_get_price STATE_PATH = "/home/hmo/.hermes/300308_monitor_state.json" @@ -22,26 +23,16 @@ LEVEL_WEAK = {"label": "○ 弱信号", "price_min": 1307, "price_breach": 1298, def get_price(): - url = "https://qt.gtimg.cn/q=sz300308" - req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - resp = urllib.request.urlopen(req, timeout=10) - data = resp.read().decode("gbk") - parts = data.split("~") - price = float(parts[3]) - high = float(parts[33]) - low = float(parts[34]) - change_pct = float(parts[32]) - volume = int(parts[6]) - buy_vol = int(parts[7]) if parts[7] else 0 - sell_vol = int(parts[8]) if parts[8] else 0 + """从统一入口获取实时价""" + price, change_pct = md_get_price('300308') return { - "price": price, - "high": high, - "low": low, - "change_pct": change_pct, - "volume": volume, - "buy_vol": buy_vol, - "sell_vol": sell_vol, + "price": price or 0, + "high": 0, + "low": 0, + "change_pct": change_pct or 0, + "volume": 0, + "buy_vol": 0, + "sell_vol": 0, } diff --git a/scripts/branch_scanner.py b/scripts/branch_scanner.py index 62cacaff..ae04a33b 100644 --- a/scripts/branch_scanner.py +++ b/scripts/branch_scanner.py @@ -16,28 +16,21 @@ branch_scanner.py — 分支自成长数据采集器(全静默) import json, sys, re from datetime import datetime -from urllib.request import Request, urlopen from mo_data import read_decisions +from mo_data import get_price as md_get_price from mofin_db import get_conn, write_holding_strategy SCANNER_STATE = "/home/hmo/web-dashboard/data/scanner_state.json" def get_price(code): - # DB 优先 - try: from mofin_db import get_price_from_db; p, _ = get_price_from_db(code); return p if p else 0 - except: pass - # Fallback: 腾讯 - mkt = "sh" if code.startswith("6") or code.startswith("5") else "sz" - url = f"http://qt.gtimg.cn/q={mkt}{code}" - req = Request(url, headers={"User-Agent": "Mozilla/5.0"}) + # 统一走 mo_data.get_price(含 DB 优先 + API 兜底) try: - resp = urlopen(req, timeout=5).read().decode("gbk") - parts = resp.split("~") - if len(parts) > 3: - return float(parts[3]) - except Exception: - return None + p, _ = md_get_price(code) + return p if p else 0 + except: + try: from mofin_db import get_price_from_db; p, _ = get_price_from_db(code); return p if p else 0 + except: return None def get_scenario(): diff --git a/scripts/chip_factors.py b/scripts/chip_factors.py index cdc7f1be..6ee95c0e 100644 --- a/scripts/chip_factors.py +++ b/scripts/chip_factors.py @@ -18,8 +18,7 @@ import json, os, sqlite3, time, urllib.request from datetime import datetime, timedelta -from mo_data import read_decisions -from mo_data import read_decisions +from mo_data import read_decisions, get_price from pathlib import Path DB_PATH = Path("/home/hmo/MoFin/data/mofin.db") @@ -30,17 +29,10 @@ CACHE_DIR = MOFIN_ROOT / "data" / "chip_cache" _last_minute_call = 0 def _fetch_quote(code): - """拉腾讯实时价(清代理)""" - for k in list(os.environ.keys()): - if 'proxy' in k.lower(): - os.environ.pop(k) - prefix = "sh" if code.startswith(('60','68','51','56','50')) else "sz" if code.startswith(('00','30','15')) else "hk" + """拉实时价,统一走 mo_data.get_price""" try: - url = f"http://qt.gtimg.cn/q={prefix}{code}" - req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - resp = urllib.request.urlopen(req, timeout=5).read().decode('gbk') - fields = resp.split('=')[1].strip().strip('"').strip(';').split('~') - return float(fields[3]) if len(fields) > 3 else 0 + price, _ = get_price(code) + return price or 0 except: return 0 diff --git a/scripts/clean_watchlist.py b/scripts/clean_watchlist.py index 8d344cf6..bf24afa5 100644 --- a/scripts/clean_watchlist.py +++ b/scripts/clean_watchlist.py @@ -10,7 +10,8 @@ from mo_data import read_portfolio, read_decisions, read_watchlist from mofin_db import get_conn, write_watchlist_stock, write_holding_strategy WL = "/home/hmo/web-dashboard/data/watchlist.json" # 路径保留用于历史备份兼容,数据实际走DB -DEC = "/home/hmo/web-dashboard/data/decisions.json" # 同上 +# 决策数据全部从DB读取,json文件已移除 +DEC = "/home/hmo/web-dashboard/data/decisions.json" # 保留常量但不再使用,防止引用报错 holding_codes = set() pf = read_portfolio() @@ -67,9 +68,9 @@ if dec_changed: conn.close() # [migrated to DB] — cold backup removed # json.dump(dec, open(DEC, "w"), indent=2, ensure_ascii=False) - print(f"\ndecisions.json: {dec_changed} 只更新标签") + print(f"\ndecisions数据: {dec_changed} 只更新标签") else: - print(f"\ndecisions.json: 无需更新") + print(f"\ndecisions数据: 无需更新") # ── 反过程:清仓股自动加回自选 ── # 找出曾持仓但现已不在 portfolio 的股票 diff --git a/scripts/data_flow_audit.py b/scripts/data_flow_audit.py new file mode 100644 index 00000000..666aa147 --- /dev/null +++ b/scripts/data_flow_audit.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +"""data_flow_audit.py — 数据流架构审计 + +对比实际读写关系 vs 设计意图(预期读写方),标记违规。 +输出给 mofin_health.py 消费,在 Dashboard 数据流 Tab 显示。 +""" +import re, os, json, subprocess +from pathlib import Path + +PROFILE_SCRIPTS = Path("/home/hmo/.hermes/profiles/position-analyst/scripts") +MOFIN_SCRIPTS = Path("/home/hmo/MoFin/scripts") +SCRIPTS_DIR = PROFILE_SCRIPTS if PROFILE_SCRIPTS.exists() else MOFIN_SCRIPTS + +# ── 设计意图注册表 ── +# 每张核心表的预期写入方(谁应该写)+ 预期用途 +DESIGN_INTENT = { + "live_prices": { + "expected_writers": ["price_monitor"], + "policy": "single_writer", + "desc": "实时价格缓存 — 仅price_monitor写入,其他一律读", + "remarks": "违规: 自行拉API会导致并发写+重复请求" + }, + "holdings": { + "expected_writers": ["import_holding_xls", "dad_asset_update"], + "policy": "restricted", + "desc": "持仓数据 — 仅通过成交截图导入或Dad确认更新", + "remarks": "" + }, + "portfolio_summary": { + "expected_writers": ["import_holding_xls", "dad_asset_update", "price_monitor"], + "policy": "restricted", + "desc": "组合汇总 — 持仓导入+价格更新", + "remarks": "" + }, + "cash_log": { + "expected_writers": ["import_holding_xls", "dad_asset_update"], + "policy": "restricted", + "desc": "资金流水 — 仅截图导入或Dad确认", + "remarks": "" + }, + "holding_strategies": { + "expected_writers": ["strategy_review", "strategy_evaluator", "per_stock_reassess"], + "policy": "multi_writer", + "desc": "策略数据 — 多个分析流程可写", + "remarks": "" + }, + "price_events": { + "expected_writers": ["price_monitor"], + "policy": "single_writer", + "desc": "价格触发事件 — 仅price_monitor写入", + "remarks": "" + }, + "sector_snapshots": { + "expected_writers": ["market_watch"], + "policy": "single_writer", + "desc": "板块快照 — 仅market_watch写入", + "remarks": "" + }, +} + +# 直接拉API的价格违规扫描 +API_PATTERNS = [ + r"qt\.gtimg\.cn", + r"tencent.*quote", + r"get_quote", + r"fetch.*price", + r"stock_quote\.", +] + +def scan_price_violations(): + """扫描不走live_prices直接拉API的脚本""" + violations = [] + for py_file in sorted(SCRIPTS_DIR.glob("*.py")): + name = py_file.stem + if name in ("price_monitor", "stock_quote", "mofin_db", "mo_data", "deploy_sync"): + continue # 这些是基础设施/被允许的 + content = py_file.read_text() + for pat in API_PATTERNS: + if re.search(pat, content): + # 找具体行号 + lines = content.split("\n") + for i, line in enumerate(lines, 1): + if re.search(pat, line): + violations.append({ + "script": name, + "line": i, + "code": line.strip()[:80], + }) + break + return violations + + +def audit(): + """读取当前数据流扫描结果,叠加设计意图""" + from mo_data import get_flow + # 这里应该读mofin_health输出的entities + + violations = scan_price_violations() + + result = { + "design_intent": DESIGN_INTENT, + "price_api_violations": violations, + "summary": { + "total_violations": len(violations), + "violating_scripts": list(set(v["script"] for v in violations)), + } + } + + return result + + +if __name__ == "__main__": + import json + result = audit() + print(json.dumps(result, ensure_ascii=False, indent=2)) diff --git a/scripts/divergence_detector.py b/scripts/divergence_detector.py index 66fd6c1b..bc0accfd 100644 --- a/scripts/divergence_detector.py +++ b/scripts/divergence_detector.py @@ -14,8 +14,9 @@ divergence_detector.py — 跨市场背离监测器(no_agent) - 状态文件 macro_divergence_state.json - no_agent: 有信号才出声 """ -import sys, json, re, datetime, os, urllib.request +import sys, json, re, datetime, os +from mo_data import get_price, get_prices_batch from pathlib import Path BASE = Path("/home/hmo/MoFin") @@ -41,45 +42,27 @@ DIVERGENCE_MODERATE = 3.0 # >3% → moderate信号 STREAK_DAYS = 3 # 连涨/连跌3天 → 信号 def fetch_indices(): - """获取所有指数实时数据(指数无 DB 缓存,腾讯 API 是唯一源)""" + """获取所有指数实时数据(通过 mo_data.get_prices_batch)""" symbols = list(INDEX_CODES.values()) - url = f"http://qt.gtimg.cn/q={','.join(symbols)}" try: - r = urllib.request.urlopen(url, timeout=10) - text = r.read().decode("gbk") + raw = get_prices_batch(symbols) + if not raw: + return {} except Exception as e: print(f"[DIVERGE] 采集失败: {e}", file=sys.stderr) return {} indices = {} - for line in text.strip().split("\n"): - line = line.strip() - if not line or "=" not in line: - continue - try: - sym = line.split("=", 1)[0].strip().lstrip("v_") - raw = line.split("=", 1)[1].strip().strip('"').strip(";") - fields = raw.split("~") - if len(fields) < 35: - continue - name = fields[1] - price = float(fields[3]) if fields[3].strip() else 0 - close = float(fields[4]) if fields[4].strip() else 0 - change_pct = ((price - close) / close * 100) if close else 0 - high = float(fields[33]) if fields[33].strip() else 0 - low = float(fields[34]) if fields[34].strip() else 0 - timestamp = fields[30] if len(fields) > 30 else "" - indices[sym] = { - "name": name, - "price": price, - "close": close, - "change_pct": round(change_pct, 2), - "high": high, - "low": low, - "timestamp": timestamp, - } - except Exception: - continue + for sym, (price, change_pct) in raw.items(): + indices[sym] = { + "name": "", + "price": price, + "close": 0, + "change_pct": change_pct, + "high": 0, + "low": 0, + "timestamp": "", + } return indices def load_history(): diff --git a/scripts/intraday_health_check.py b/scripts/intraday_health_check.py index 15800f3b..95ab56af 100644 --- a/scripts/intraday_health_check.py +++ b/scripts/intraday_health_check.py @@ -87,7 +87,7 @@ def check_price_monitor(): 注意:price_events 存储的是区间偏离事件(价格穿过买入区/止损/止盈边界), 不是心跳信号。横盘期/无操作信号时自然不会有新事件。因此不检查event数, - 改为检查 cron 最后运行时间和 portfolio.json 数据新鲜度。 + 改为检查 cron 最后运行时间和 DB 数据新鲜度(read_portfolio() 从 mofin.db 读取)。 """ # 检查cron最近运行记录 cron_ok = False @@ -119,7 +119,7 @@ def check_price_monitor(): log(False, "价格监控cron无最近运行记录(>10分钟未运行)") return - # 检查portfolio.json数据新鲜度 + # 检查 DB 数据新鲜度(read_portfolio() 从 mofin.db 读取) # 兼容 '2026-07-02 10:43'(price_monitor写入,无秒)和 '2026-07-02 10:43:53'(DB写入,有秒) def _parse_updated_at(ts: str) -> datetime | None: for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M"): @@ -141,9 +141,9 @@ def check_price_monitor(): if seconds_ago < 600: # 10分钟内 log(True, f"价格监控运行正常,数据{int(seconds_ago//60)}分钟前更新") else: - log(False, f"价格数据{int(seconds_ago)}秒未更新(portfolio.json)") + log(False, f"价格数据{int(seconds_ago)}秒未更新(来自DB)") else: - log(False, "portfolio.json缺少updated_at字段") + log(False, "DB 价格数据缺少updated_at字段") except Exception as e: log(False, f"价格数据新鲜度检查失败: {e}") diff --git a/scripts/mo_config.py b/scripts/mo_config.py index df1c7b8b..5ab6896e 100644 --- a/scripts/mo_config.py +++ b/scripts/mo_config.py @@ -10,7 +10,7 @@ mo_config.py — MoFin 统一配置管理(单例模式) 用法: from mo_config import config - portfolio_path = config.data_dir / "portfolio.json" + from mo_data import read_portfolio; data = read_portfolio() """ import os @@ -28,7 +28,7 @@ class MoConfig: # 项目根目录 project_dir: Path = field(default_factory=lambda: Path(__file__).parent.resolve()) - # 数据目录(portfolio.json, decisions.json 等) + # 数据目录(mofin.db 等,所有数据只从 DB 读写) data_dir: Path = field(default_factory=lambda: Path( os.environ.get("MOFIN_DATA_DIR", "/home/hmo/web-dashboard/data") )) @@ -46,18 +46,24 @@ class MoConfig: @property def portfolio_path(self) -> Path: - """⚠️ 已废弃!数据在 mofin.db holdings + portfolio_summary 表。""" - return self.data_dir / "portfolio.json" + """⚠️ DEPRECATED: 数据已迁至 mofin.db holdings + portfolio_summary 表。""" + import warnings + warnings.warn("portfolio_path is deprecated — use mo_data.read_portfolio() for DB data", DeprecationWarning, stacklevel=2) + return Path() @property def decisions_path(self) -> Path: - """⚠️ 已废弃!数据在 mofin.db holding_strategies 表。""" - return self.data_dir / "decisions.json" + """⚠️ DEPRECATED: 数据已迁至 mofin.db holding_strategies 表。""" + import warnings + warnings.warn("decisions_path is deprecated — use mo_data.read_decisions() for DB data", DeprecationWarning, stacklevel=2) + return Path() @property def watchlist_path(self) -> Path: - """⚠️ 已废弃!数据在 mofin.db watchlist_stocks 表。""" - return self.data_dir / "watchlist.json" + """⚠️ DEPRECATED: 数据已迁至 mofin.db watchlist_stocks 表。""" + import warnings + warnings.warn("watchlist_path is deprecated — use mo_data.read_watchlist() for DB data", DeprecationWarning, stacklevel=2) + return Path() @property def price_events_path(self) -> Path: @@ -149,10 +155,10 @@ class MoConfig: issues.append(f"数据目录不存在: {self.data_dir}") if not self.portfolio_path.exists(): - issues.append(f"portfolio.json 不存在: {self.portfolio_path}") - + issues.append(f"portfolio_path 不存在(已废弃): {self.portfolio_path}") + if not self.decisions_path.exists(): - issues.append(f"decisions.json 不存在: {self.decisions_path}") + issues.append(f"decisions_path 不存在(已废弃): {self.decisions_path}") return issues @@ -210,8 +216,8 @@ def ensure_dirs(): get_config().ensure_dirs() -# ── 向后兼容:导出常用路径常量 ────────────────────────────────────── -# 让旧代码可以通过熟悉的变量名访问路径 +# ── 向后兼容:导出已废弃的路由常量 ────────────────────────────────── +# PORTFOLIO_PATH / DECISIONS_PATH / WATCHLIST_PATH 均已废弃(数据在 DB)。 def _lazy(attr): """懒加载属性,首次访问时从 config 获取""" diff --git a/scripts/mo_data.py b/scripts/mo_data.py index 85000f73..9627df74 100644 --- a/scripts/mo_data.py +++ b/scripts/mo_data.py @@ -13,10 +13,12 @@ JSON 文件已弃用,仅保留为历史备份。 wl = read_watchlist() # 返回和 watchlist.json 一样的 dict 结构 """ -import sqlite3, json +import sqlite3, json, sys from datetime import datetime +from pathlib import Path DB_PATH = '/home/hmo/MoFin/data/mofin.db' +SCRIPT_DIR = Path('/home/hmo/MoFin/scripts') def _get_db(): @@ -147,6 +149,126 @@ def read_watchlist_json(): return read_watchlist() +# ── 统一价格获取(唯一入口,禁止各脚本自拉API)── + +def get_price(code, max_age_minutes=5, use_stale_fallback=True): + """获取单只股票最新价格。 + + 优先级: live_prices(DB) → stock_quote(API兜底) + - live_prices 有且不超过 max_age_minutes → 直接返回 + - 没有或过期 → 调 stock_quote 拉,写回 live_prices + - 都失败 → 返回 (None, None) + + 返回 (price, change_pct),两值都是 float 或 None。 + """ + from mofin_db import get_price_from_db + from datetime import datetime, timedelta + + # 1. 先读 DB + try: + db_price, db_chg = get_price_from_db(code) + if db_price is not None and db_price > 0: + # 检查时效性 + conn = __import__('sqlite3').connect(str(DB_PATH)) + row = conn.execute( + "SELECT updated_at FROM live_prices WHERE code=?", + (str(code).strip(),) + ).fetchone() + conn.close() + if row and row[0]: + try: + updated = datetime.strptime(row[0], "%Y-%m-%d %H:%M:%S") + age = (datetime.now() - updated).total_seconds() / 60 + if age <= max_age_minutes: + return (db_price, db_chg) + except: + pass + else: + return (db_price, db_chg) + except Exception: + pass + + # 2. DB 没有或过期 → 调 stock_quote + if not use_stale_fallback: + return (None, None) + + try: + import subprocess, json + r = subprocess.run( + [sys.executable, str(SCRIPT_DIR / "stock_quote.py"), str(code)], + capture_output=True, text=True, timeout=15 + ) + if r.returncode == 0: + data = json.loads(r.stdout.strip()) + price = float(data.get("price", 0)) + chg = float(data.get("change_pct", 0)) + if price > 0: + # 写回 live_prices + try: + conn = __import__('sqlite3').connect(str(DB_PATH)) + conn.execute(""" + INSERT OR REPLACE INTO live_prices (code, price, change_pct, updated_at) + VALUES (?, ?, ?, datetime('now','localtime')) + """, (str(code).strip(), price, chg)) + conn.commit() + conn.close() + except: + pass + return (price, chg) + except Exception: + pass + + return (None, None) + + +def get_prices_batch(codes, max_age_minutes=5): + """批量获取价格,返回 {code: (price, change_pct)}""" + from mofin_db import get_prices_batch_from_db + + result = {} + need_api = [] + + # 1. 批量读 DB + try: + db_prices = get_prices_batch_from_db(codes) + for code in codes: + cs = str(code).strip() + if cs in db_prices: + p, c = db_prices[cs] + if p and p > 0: + result[cs] = (p, c) + continue + need_api.append(cs) + except: + need_api = [str(c).strip() for c in codes] + + # 2. 缺失的调 API + if need_api: + try: + import subprocess, json + r = subprocess.run( + [sys.executable, str(SCRIPT_DIR / "stock_quote.py")] + need_api, + capture_output=True, text=True, timeout=30 + ) + if r.returncode == 0: + for line in r.stdout.strip().split("\n"): + if not line: + continue + try: + data = json.loads(line) + code = str(data.get("code", "")).strip() + price = float(data.get("price", 0)) + chg = float(data.get("change_pct", 0)) + if code and price > 0: + result[code] = (price, chg) + except: + pass + except: + pass + + return result + + # ── cash_log 写入 ────────────────────────────────────────────────── def write_cash_log(cash_before, cash_after, frozen_before, frozen_after, diff --git a/scripts/mo_provider.py b/scripts/mo_provider.py index cbee72ba..142e2505 100644 --- a/scripts/mo_provider.py +++ b/scripts/mo_provider.py @@ -141,39 +141,17 @@ class MoDataProvider: return None def _get_tencent_realtime(self, code: str) -> dict | None: - """通过 Tencent API 获取实时行情""" - import urllib.request - from mo_models import normalize_code - - raw = normalize_code(code) - # 判断市场 - if raw[0] in ('0', '1') and len(raw) == 5: - market = "hk" - qt_code = f"hk{raw}" - elif raw.startswith("6"): - market = "sh" - qt_code = f"sh{raw}" - elif raw.startswith(("0", "3")): - market = "sz" - qt_code = f"sz{raw}" - else: - return None - - url = f"https://qt.gtimg.cn/q={qt_code}" - req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - with urllib.request.urlopen(req, timeout=5) as r: - text = r.read().decode("gbk") - - # 解析 Tencent 行情格式 - parts = text.split("~") - if len(parts) > 40: + """通过 mo_data.get_price 获取实时行情(替代原 Tencent API)""" + from mo_data import get_price + price, chg = get_price(code) + if price and price > 0: return { "code": code, - "name": parts[1], - "price": float(parts[3]) if parts[3] else 0, - "change_pct": float(parts[32]) if parts[32] else 0, - "volume": int(parts[6]) if parts[6] else 0, - "market": market, + "name": "", + "price": price, + "change_pct": chg or 0.0, + "volume": 0, + "market": "", } return None diff --git a/scripts/mofin_collect.py b/scripts/mofin_collect.py index 8441844e..904e7bdb 100644 --- a/scripts/mofin_collect.py +++ b/scripts/mofin_collect.py @@ -12,6 +12,7 @@ import subprocess, sys, time, json from pathlib import Path from datetime import datetime +from mo_data import get_price, get_prices_batch BASE = Path(__file__).parent.parent if "hermes" in str(Path(__file__).resolve()) else Path(__file__).parent @@ -159,17 +160,9 @@ try: # 自选股price可能为0(新加入未更新),从实时API获取 if wl_price <= 0: try: - import urllib.request - mkt = "hk" if len(str(code)) == 5 else "sh" if str(code)[0] in "56" else "sz" - url = f"http://qt.gtimg.cn/q={mkt}{code}" - req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) - resp = urllib.request.urlopen(req, timeout=5).read() - text = resp.decode("gbk") - parts = text.split("~") - if len(parts) > 3: - p = float(parts[3]) - if p > 0: - wl_price = p + p, _ = get_price(code) + if p and p > 0: + wl_price = p except Exception: pass # 自选股无cost/shares,传0 diff --git a/scripts/monitor_300308.py b/scripts/monitor_300308.py index 76b418d8..7971eda0 100644 --- a/scripts/monitor_300308.py +++ b/scripts/monitor_300308.py @@ -11,8 +11,9 @@ 发一次信号后就停,不再重复。 """ -import json, os, subprocess, sys, urllib.request +import json, os, subprocess, sys from datetime import datetime +from mo_data import get_price CODE = "300308" NAME = "中际旭创" @@ -40,18 +41,9 @@ def save_state(s): def fetch_price(): - """从腾讯API获取实时价""" - url = f"http://qt.gtimg.cn/q=sz{CODE}" - req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - try: - resp = urllib.request.urlopen(req, timeout=10) - text = resp.read().decode("gbk") - fields = text.split("~") - price = float(fields[3]) if fields[3] else 0 - change_pct = fields[32] if len(fields) > 32 else "0" - return price, change_pct - except Exception as e: - return 0, "0" + """从统一入口获取实时价""" + price, chg = get_price(CODE) + return price or 0, chg or 0 def send_alert(price, change_pct): diff --git a/scripts/multi_timeframe.py b/scripts/multi_timeframe.py index b3607f93..9064475b 100644 --- a/scripts/multi_timeframe.py +++ b/scripts/multi_timeframe.py @@ -18,6 +18,7 @@ from datetime import datetime, date, timedelta from typing import Optional from mofin_db import get_conn +from mo_data import get_price DATA_DIR = "/home/hmo/web-dashboard/data" HISTORY_PATH = os.path.join(DATA_DIR, "price_history.json") @@ -26,9 +27,6 @@ HISTORY_PATH = os.path.join(DATA_DIR, "price_history.json") # 腾讯API K线端点 KLINE_URL = "http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param={market}{code},{period},,,{count},qfq" -# 腾讯实时行情端点(用于市场前缀判断) -QUOTE_URL = "http://qt.gtimg.cn/q={market}{code}" - def _write_klines_to_db(code: str, daily: list, weekly: list, monthly: list, fundamentals: dict = None): """K线数据双写 SQLite(失败不影响缓存写入)""" diff --git a/scripts/per_stock_reassess.py b/scripts/per_stock_reassess.py index 50d1047a..24387b05 100644 --- a/scripts/per_stock_reassess.py +++ b/scripts/per_stock_reassess.py @@ -2,8 +2,8 @@ """ per_stock_reassess.py — 按个股触发重评 -对每只传进来的 code 执行 reassess_strategy(),然后只更新 -decisions.json 中对应的那一条记录。不碰 portfolio.json,不跑全量。 +对每只传进来的 code 执行 reassess_with_context(),然后写入 +DB holding_strategies 表(纯DB模式,已移除JSON依赖)。 """ import sys, json, os, re @@ -12,8 +12,6 @@ sys.path.insert(0, "/home/hmo/MoFin") from strategy_lifecycle import reassess_with_context as reassess_strategy from mo_data import read_decisions, read_portfolio -DECISIONS_PATH = "/home/hmo/web-dashboard/data/decisions.json" - def main(): codes = [a for a in sys.argv[1:] if not a.startswith("-")] @@ -34,7 +32,7 @@ def main(): for code in codes: entry = decisions_map.get(code) if not entry: - # 可能是不在 decisions.json 的自选股 → 从 DB watchlist_stocks 构建entry + # 不在 decisions 中的自选股 → 从 DB watchlist_stocks 构建entry import sqlite3 _db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db') _db.row_factory = sqlite3.Row @@ -58,7 +56,7 @@ def main(): } print(f"[WL] {code} {_wl['name']}: 从自选表构建entry") if not entry: - print(f"[SKIP] {code}: 不在 decisions.json 或 watchlist_stocks 中") + print(f"[SKIP] {code}: 不在 decisions 或 watchlist_stocks 中") errors += 1 continue @@ -83,7 +81,7 @@ def main(): if price > 0: print(f" 实时价: {price} (来自DB)") else: - # fallback to portfolio.json + # fallback to DB portfolio data _pf_data = read_portfolio() for _h in _pf_data.get("holdings", []): if _h["code"] == code_raw: @@ -127,6 +125,40 @@ def main(): act = re.sub(r'止损[\d.]+', f'止损{old_stop}', act) result["action"] = act + # ── 写入 DB holding_strategies 表(替代 decisions.json)── + try: + from mofin_db import get_conn, write_holding_strategy + _conn = get_conn() + _db_entry = { + "code": code, + "name": entry.get("name", ""), + "price": price, + "cost": entry.get("cost", 0), + "shares": entry.get("shares", 0), + "stop_loss": result.get("stop_loss", entry.get("stop_loss")), + "take_profit": result.get("take_profit", entry.get("take_profit")), + "entry_low": result.get("entry_low", entry.get("entry_low")), + "entry_high": result.get("entry_high", entry.get("entry_high")), + "currency": "HKD" if (len(str(code)) == 5 and str(code)[0] in '01') else "CNY", + "strategy_type": "自选策略" if entry.get("type", "") in ("自选策略", "watchlist") else "持仓策略", + "action": result.get("action", ""), + "timing_signal": result.get("timing_signal", entry.get("timing_signal", "")), + "rr_ratio": result.get("rr_ratio", entry.get("rr_ratio", 0)), + "tech_snapshot": result.get("tech_snapshot", entry.get("tech_snapshot", "")), + "stock_category": result.get("stock_category", entry.get("stock_category", "")), + "sector_context": result.get("sector_context", entry.get("sector_context", "")), + "status": result.get("status", "active"), + "source": entry.get("source", "auto"), + "reason": result.get("action_note", ""), + "version": entry.get("version", 1), + } + write_holding_strategy(_conn, code, entry.get("name", ""), _db_entry) + _conn.commit() + _conn.close() + print(f" [DB] holding_strategies 已更新: {code}") + except Exception as _dbe: + print(f" [DB FAIL] holding_strategies 写入失败: {_dbe}", file=sys.stderr) + # 更新 decisions_map 中对应的条目 updated = entry.copy() # 币种标记:HK股保留HKD原始值,A股为CNY @@ -172,8 +204,7 @@ def main(): print(f"[ERROR] {code}: {e}", file=sys.stderr) errors += 1 - # 策略数据已通过DB写入(holding_strategies表),json.dump到decisions.json已废弃 - # 同步自选股更新回 watchlist_stocks 表 + # 同步自选股更新回 watchlist_stocks 表(持仓策略已通过 write_holding_strategy 写入 DB) try: from datetime import datetime as _dt import sqlite3 diff --git a/scripts/pre-flight-check.py b/scripts/pre-flight-check.py index 00e1c61a..e0750e0f 100644 --- a/scripts/pre-flight-check.py +++ b/scripts/pre-flight-check.py @@ -12,8 +12,8 @@ pre-flight-check.py — 策略上线前检查清单的自动化部分 依赖: - /home/hmo/projects/MoFin/data/prompts/registry.json(版本一致性) - - /home/hmo/web-dashboard/data/decisions.json(策略+成本) - - /home/hmo/web-dashboard/data/portfolio.json(持仓数据) + - mofin.db: holding_strategies 表(策略+成本) + - mofin.db: holdings + holding_strategies 表(持仓+策略数据) 输出格式: ✅ 项目名 — 通过 @@ -90,11 +90,11 @@ def check_data_freshness(): # === 检查 5:成本有效 === def check_cost_validity(): - """检查 decisions.json 中所有持仓的成本是否有效""" + """检查所有持仓的成本是否有效""" try: dec = read_decisions() except Exception as e: - return ("⚠️ 成本有效性", f"无法读取 decisions: {e}") + return ("⚠️ 成本有效性", f"无法读取策略数据: {e}") stocks = dec.get("stocks", dec.get("holdings", dec.get("strategies", []))) if not stocks: @@ -130,7 +130,7 @@ def check_stop_technical(code): try: dec = read_decisions() except Exception as e: - return ("⚠️ 止损技术位", f"无法读取 decisions: {e}") + return ("⚠️ 止损技术位", f"无法读取策略数据: {e}") stocks = dec.get("stocks", dec.get("strategies", [])) for s in stocks: @@ -149,7 +149,7 @@ def check_stop_technical(code): f"检查是否用了固定百分比而非技术位") return ("✅ 止损技术位", f"{code} 止损{stop},需要人工确认是否基于支撑位") - return ("⚠️ 止损技术位", f"代码 {code} 未在 decisions.json 中找到") + return ("⚠️ 止损技术位", f"代码 {code} 未在策略数据中找到") # === 检查 4(单股):R/R 达标 === @@ -158,7 +158,7 @@ def check_rr(code, price=None): try: dec = read_decisions() except Exception as e: - return ("⚠️ R/R 达标", f"无法读取 decisions: {e}") + return ("⚠️ R/R 达标", f"无法读取策略数据: {e}") stocks = dec.get("stocks", dec.get("strategies", [])) for s in stocks: @@ -186,7 +186,7 @@ def check_rr(code, price=None): else: return ("❌ R/R 达标", f"{code} R/R={rr:.2f} < {min_rr}") - return ("⚠️ R/R 达标", f"代码 {code} 未在 decisions.json 中找到") + return ("⚠️ R/R 达标", f"代码 {code} 未在策略数据中找到") def main(): diff --git a/scripts/price_data_inject.py b/scripts/price_data_inject.py index 004a98b3..0f3c5485 100755 --- a/scripts/price_data_inject.py +++ b/scripts/price_data_inject.py @@ -8,8 +8,10 @@ import os from mo_data import read_portfolio, read_watchlist -PORTFOLIO_PATH = "/home/hmo/web-dashboard/data/portfolio.json" -WATCHLIST_PATH = "/home/hmo/web-dashboard/data/watchlist.json" +# PORTFOLIO_PATH / WATCHLIST_PATH 均已废弃,数据在 mofin.db。 +# 保留常量仅防止引用报错,新代码请用 mo_data.read_portfolio() / read_watchlist()。 +PORTFOLIO_PATH = "/home/hmo/web-dashboard/data/portfolio.json" # 废弃 +WATCHLIST_PATH = "/home/hmo/web-dashboard/data/watchlist.json" # 废弃 MTF_CACHE_PATH = "/home/hmo/web-dashboard/data/multi_tf_cache.json" diff --git a/scripts/refresh_macro_context.py b/scripts/refresh_macro_context.py index 5d96a292..f9facc1a 100644 --- a/scripts/refresh_macro_context.py +++ b/scripts/refresh_macro_context.py @@ -6,31 +6,25 @@ 每30分钟跑一次(交易日) """ -import json, sqlite3, urllib.request, re, sys +import json, sqlite3, sys from pathlib import Path from datetime import datetime +from mo_data import get_price DB = Path("/home/hmo/MoFin/data/mofin.db") def fetch_index(code, name): - """从腾讯API拿指数行情""" + """从统一入口获取指数行情""" try: - url = f"http://qt.gtimg.cn/q={code}" - req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - resp = urllib.request.urlopen(req, timeout=5) - text = resp.read().decode("gbk") - m = re.search(r'~([^~]*)~([^~]*)~([\d.]+)~([\d.]+)~([\d.]+)~([\d.]+)', text) - if m: - _, _, price, prev_close, open_p, high_low = m.groups() - high = high_low.split("~")[0] if "~" in high_low else high_low[:8] - low = high_low.split("~")[1] if "~" in high_low else "0" - change_pct = (float(price) - float(prev_close)) / float(prev_close) * 100 if float(prev_close) else 0 + price, change_pct = get_price(code) + if price is not None: return { - "price": float(price), - "change_pct": round(change_pct, 2), - "high": float(high) if high else float(price), - "low": float(low) if low else float(price) + "price": price, + "change_pct": round(change_pct or 0, 2), + "high": price, + "low": price, } + return None except: return None diff --git a/scripts/stale_detector.py b/scripts/stale_detector.py index 5d442488..ffa70feb 100644 --- a/scripts/stale_detector.py +++ b/scripts/stale_detector.py @@ -15,7 +15,7 @@ import sys import os from datetime import datetime, timezone sys.path.insert(0, '/home/hmo/MoFin') -from mo_data import read_portfolio, read_decisions, read_watchlist +from mo_data import read_portfolio, read_decisions, read_watchlist, get_price, get_prices_batch def fetch_prices(codes): @@ -54,45 +54,14 @@ def fetch_prices(codes): except Exception as e: print(f"[STALE] stock_quote.py 回退: {e}", file=sys.stderr) - # 兜底:腾讯API(不应依赖,仅作为最后手段) - import urllib.request - symbols, code_map = [], {} - for c in codes: - c = str(c).strip() - p = "sh" if (len(c) == 6 and c[0] in "569") else "sz" if len(c) == 6 else "hk" - sym = f"{p}{c}" - symbols.append(sym) - code_map[sym] = c + # 兜底:mo_data.get_prices_batch try: - req = urllib.request.Request( - f"http://qt.gtimg.cn/q={','.join(symbols)}", - headers={"User-Agent": "curl/7.81"}, - ) - with urllib.request.urlopen(req, timeout=10) as r: - text = r.read().decode("gbk") + raw = get_prices_batch(codes) + if raw: + return {code: (p, chg) for code, (p, chg) in raw.items()} except Exception as e: print(f"FETCH_FAIL (fallback): {e}", file=sys.stderr) - return {} - - results = {} - for line in text.strip().split("\n"): - if "=" not in line: - continue - try: - raw = line.split("=", 1)[1].strip().strip('"').strip(";") - fld = raw.split("~") - if len(fld) < 6: - continue - sym = line.split("=", 1)[0].strip().lstrip("v_") - oc = code_map.get(sym) - if not oc: - continue - p = float(fld[3]) if fld[3] else 0 - c = fld[32] if len(fld) > 32 else "0" - results[oc] = (p, c) - except (ValueError, IndexError): - continue - return results + return {} def main(): @@ -103,6 +72,49 @@ def main(): # 只保留有买入区的条目,排除已关闭的(inactive/closed) EXCLUDED_STATUSES = ("closed", "inactive") 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] + + # ----- 合并 DB watchlist_stocks 自选股 ----- + try: + import sqlite3 + db = sqlite3.connect('/home/hmo/MoFin/data/mofin.db') + db.row_factory = sqlite3.Row + wl_rows = db.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() + db.close() + existing_codes = {d["code"] for d in to_check} + for row in wl_rows: + code = str(row["code"]) + if code in existing_codes: + 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 = {} + aj = row["analysis_json"] + if aj: + try: + analysis = json.loads(aj) + 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"[WATCHLIST_MERGE FAIL] {e}", file=sys.stderr) + if not to_check: print("[SILENT] 无需要检查的策略") return 0 diff --git a/scripts/stale_push_wlin.py b/scripts/stale_push_wlin.py index e8cfe984..da66822e 100644 --- a/scripts/stale_push_wlin.py +++ b/scripts/stale_push_wlin.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -stale_push_wlin.py — 按5步逻辑推送自选股买入区提醒 + 自动触发重评 +stale_push_wlin.py — 按5步逻辑推送自选股买入区提醒 + 自动触发重评(全DB模式) 5步逻辑: 1. 筛选 is_watchlist=true 且价在买入区 @@ -8,6 +8,8 @@ stale_push_wlin.py — 按5步逻辑推送自选股买入区提醒 + 自动触 3. 可推的:计算每手买入金额和现金占比 4. 发现 STRATEGY_STALE → 后台跑 per_stock_reassess.py 自动重评 +所有持仓/策略/现金数据均从DB读取,不再依赖JSON文件。 +宏现上下文和冷却状态仍保留JSON fallback。 no_agent模式:有推送→输出;无→静默 搭配 cron: no_agent=True, 交易日每30分跑一次 """ @@ -19,7 +21,7 @@ import os import threading import time from datetime import datetime, time -from mo_data import read_portfolio, read_decisions +from mo_data import read_portfolio, read_decisions, get_price from mofin_db import get_conn # ── MoFin unified model ────────────────────────────────────────────── @@ -139,7 +141,6 @@ XMPP_USER = "hmo@yoin.fun" STALENESS_REPORT = "/home/hmo/web-dashboard/data/strategy_staleness_report.json" DETECTOR = "/home/hmo/.hermes/profiles/position-analyst/scripts/stale_detector.py" -PORTFOLIO_PATH = "/home/hmo/web-dashboard/data/portfolio.json" REGEN_SCRIPT = "/home/hmo/.hermes/profiles/position-analyst/scripts/per_stock_reassess.py" REGEN_LOCK = "/tmp/.stale_push_wlin_regen.lock" MACRO_CTX = "/home/hmo/web-dashboard/data/macro_context.json" @@ -171,7 +172,7 @@ def load_macro_line(): elif overall == "bullish": parts.append("大盘偏强") elif desc: - parts.append(f"大盘{desc}") + parts.append(f"大盘{desc}" if not desc.startswith("大盘") else desc) except Exception: try: with open(MACRO_CTX) as f: @@ -183,7 +184,7 @@ def load_macro_line(): elif overall == "bullish": parts.append("大盘偏强") elif desc: - parts.append(f"大盘{desc}") + parts.append(f"大盘{desc}" if not desc.startswith("大盘") else desc) except Exception: pass try: @@ -223,7 +224,7 @@ def trigger_regen_sync(stock_codes=None): def load_cash(): - """从 portfolio.json 实时读可用现金(可用 ≈ 实时买力),不硬编码""" + """从DB实时读可用现金(可用 ≈ 实时买力),不硬编码""" try: data = read_portfolio() if isinstance(data, dict): @@ -239,19 +240,14 @@ def load_cash(): _HK_LOT_CACHE = {} def hk_lot_size(code): - """从腾讯行情API获取港股实际每手股数(字段[60]),带缓存""" + """从统一入口获取港股实际每手股数,get_price 不提供该字段,默认1000""" if code in _HK_LOT_CACHE: return _HK_LOT_CACHE[code] try: - url = f"http://qt.gtimg.cn/q=hk{code}" - req = Request(url, headers={"User-Agent": "curl/7.81"}) - with urlopen(req, timeout=5) as r: - text = r.read().decode("gbk") - raw = text.split("=", 1)[1].strip().strip('"').strip(";") - fld = raw.split("~") - lot = int(fld[60]) if len(fld) > 60 and fld[60] else 1000 - _HK_LOT_CACHE[code] = lot - return lot + # 尝试用 get_price 取价,无法获取每手股数,默认1000 + price, chg = get_price(code) + _HK_LOT_CACHE[code] = 1000 + return 1000 except Exception: _HK_LOT_CACHE[code] = 1000 return 1000 @@ -333,14 +329,47 @@ def main(): cooldown = load_cooldown() now_ts = datetime.now().timestamp() - # 读 decisions.json 获取完整策略数据 + # ── 从DB读取策略数据 ── code_data = {} try: dec = read_decisions() for e in dec.get("decisions", []): code_data[e["code"]] = e - except Exception: - pass + # 补充watchlist_stocks中不在holding_strategies的自选股 + import sqlite3 as _sq3 + _wl_db = _sq3.connect('/home/hmo/MoFin/data/mofin.db') + _wl_db.row_factory = _sq3.Row + _wl_rows = _wl_db.execute( + "SELECT code, name, entry_low, entry_high, stop_loss, analysis_json " + "FROM watchlist_stocks WHERE is_active=1 AND entry_low > 0" + ).fetchall() + _wl_db.close() + for _w in _wl_rows: + _c = str(_w["code"]) + if _c in code_data: + continue + _aj = json.loads(_w["analysis_json"]) if _w["analysis_json"] else {} + code_data[_c] = { + "code": _c, + "name": _w["name"] or "", + "price": 0, + "entry_low": _w["entry_low"], + "entry_high": _w["entry_high"], + "stop_loss": _w["stop_loss"] or 0, + "take_profit": _aj.get("take_profit", 0), + "rr_ratio": _aj.get("rr", 0), + "tech_snapshot": _aj.get("tech_snapshot", ""), + "timing_signal": _aj.get("action", ""), + "stock_category": "", + "sector_context": "", + "signal_factors": [], + "name": _w["name"] or "", + "shares": 0, + "cost": 0, + "price": 0, + } + except Exception as _e: + print(f"[DB_LOAD FAIL] {_e}", file=sys.stderr) cash = load_cash() stocks = [] @@ -369,6 +398,15 @@ def main(): stale_list.append((name, code, price, buy_low, buy_high, cur)) continue + # 策略不完整(RR=0 或无止损/无止盈)的跳过 + d = code_data.get(code, {}) + rr = d.get("rr_ratio", 0) or 0 + sl = d.get("stop_loss", 0) or 0 + tp = d.get("take_profit", 0) or 0 + if rr <= 0 or sl <= 0 or tp <= 0: + stale_list.append((name, code, price, buy_low, buy_high, cur)) + continue + lot = lot_cost(code, price) ratio = lot / cash if cash > 0 else 999 stocks.append((name, code, price, buy_low, buy_high, lot, ratio)) @@ -389,7 +427,7 @@ def main(): to_reassess = list(set(s[1] for s in stocks) | set(s[1] for s in stale_list)) if to_reassess: trigger_regen_sync(to_reassess) - # 重评完成,re-read decisions.json 获取最新策略 + # 重评完成,re-read 最新策略(从DB) code_data = {} try: dec = read_decisions() @@ -406,6 +444,13 @@ def main(): sig = code_data.get(code, {}).get("timing_signal", "") if not is_actionable(cur, sig): continue + # 策略不完整(RR=0 或无止损/无止盈)的不推 + d = code_data.get(code, {}) + rr = d.get("rr_ratio", 0) or 0 + sl = d.get("stop_loss", 0) or 0 + tp = d.get("take_profit", 0) or 0 + if rr <= 0 or sl <= 0 or tp <= 0: + continue lot = lot_cost(code, price) ratio = lot / cash if cash > 0 else 999 stocks.append((name, code, price, buy_low, buy_high, lot, ratio)) @@ -443,6 +488,13 @@ def main(): # 信号必须含买入/加仓才推荐——其他非操作信号跳过 if not any(kw in sig for kw in ["买入", "加仓"]): continue + # RR完整性检查:买入/加仓信号必须RR>0(策略数据要完整) + cd = code_data.get(s[1], {}) + rr = cd.get("rr_ratio", 0) or 0 + tp = cd.get("take_profit", 0) or 0 + if rr <= 0 or tp <= 0: + # 策略数据不完整(缺止盈/RR),不推 + continue # 趋势检查:必须不是空头排列(价格在MA5以下且MA5 cash: + continue + actionable.append(s) if not actionable: @@ -482,14 +538,14 @@ def main(): except Exception: pass - # 仓位计算:从holding.xls导入的portfolio.json读取总资产和现金 + # 仓位计算:从DB读取总资产和现金 n = len(actionable) total_assets = 0 available_cash = 0 try: pf = read_portfolio() available_cash = pf.get("cash_available", pf.get("cash", 0)) or 0 - # 直接取 portfolio.json 的总资产(导入时已做港币→人民币换算) + # 直接取 portfolio 的总资产(导入时已做港币→人民币换算) total_assets = pf.get("total_assets", 0) or 0 if total_assets <= 0: # fallback: use unified calc_total_assets from mo_models diff --git a/scripts/stock_profile.py b/scripts/stock_profile.py index 1a43e181..259ed456 100644 --- a/scripts/stock_profile.py +++ b/scripts/stock_profile.py @@ -7,114 +7,41 @@ import json import os -import urllib.request from datetime import datetime from typing import Optional -from mo_data import read_portfolio, read_decisions, read_watchlist +from mo_data import read_portfolio, read_decisions, read_watchlist, get_price DATA_DIR = "/home/hmo/web-dashboard/data" MTF_CACHE_PATH = os.path.join(DATA_DIR, "multi_tf_cache.json") MACRO_PATH = os.path.join(DATA_DIR, "macro_context.json") PORTFOLIO_PATH = os.path.join(DATA_DIR, "portfolio.json") -# 腾讯API字段索引(quote批量接口) -F = { - "name": 1, "code": 2, "price": 3, "close_yest": 4, "open": 5, - "volume": 6, "outer_vol": 7, "inner_vol": 8, - "timestamp": 30, "change": 31, "change_pct": 32, - "high": 33, "low": 34, - "turnover": 37, "turnover_rate": 38, "pe": 39, - "high_limit": 41, "low_limit": 42, "amplitude": 43, - "market_cap_流通": 44, "market_cap_总": 45, "pb": 46, - "ep": 47, "es": 48, "eps": 49, - "avg_price": 51, - "sector_tag": 60, "sector": 61, - "high_52w": 67, "low_52w": 68, -} - -# 港股字段偏移不同 -F_HK = { - "name": 1, "code": 2, "price": 3, "close_yest": 4, - "change": 31, "change_pct": 32, - "high": 33, "low": 34, "high_limit": 48, "low_limit": 49, - "pe": 57, "pb": 58, "eps": 72, "market_cap_总": 45, - "turnover": 37, -} - - def get_quote(code: str) -> dict: - """获取腾讯API实时行情+基本面""" - raw = str(code).split("_")[0] - if len(raw) == 5 and raw.isdigit(): - prefix = "hk" - fields = F_HK - elif raw.startswith("6") or raw.startswith("5"): - prefix = "sh" - fields = F - else: - prefix = "sz" - fields = F - - # DB 优先 - try: - from mofin_db import get_price_from_db - p, chg = get_price_from_db(raw) - if p: return {"price": p, "name": name, "code": raw, "change_pct": chg or 0} - except: pass - # Fallback: 腾讯 - url = f"http://qt.gtimg.cn/q={prefix}{raw}" - try: - req = urllib.request.Request(url, headers={ - "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" - }) - with urllib.request.urlopen(req, timeout=5) as resp: - raw_text = resp.read().decode("gbk") - fields_raw = raw_text.split('"')[1].split("~") - except Exception as e: - return {"code": code, "error": str(e)} - - def get(idx): - try: - v = fields_raw[idx].strip() - return float(v) if v else None - except (IndexError, ValueError): - return None - - def get_str(idx): - try: - return fields_raw[idx].strip() - except IndexError: - return "" - - is_hk = prefix == "hk" + """获取实时行情。使用 mo_data.get_price 统一入口,保持dict格式兼容""" + price, change_pct = get_price(code) + if price is None: + return {"code": code, "error": "价格获取失败"} result = { - "code": raw, - "name": get_str(fields["name"]), - "price": get(fields["price"]), - "change_pct": get(fields["change_pct"]), - "high": get(fields["high"]), - "low": get(fields["low"]), - "pe": get(fields["pe"]), - "pb": get(fields["pb"]), - "eps": get(fields["eps"]), + "code": code, + "name": "", + "price": price, + "change_pct": change_pct or 0, + "high": None, + "low": None, + "pe": None, + "pb": None, + "eps": None, + "market_cap": None, + "market_cap_流通": None, + "high_52w": None, + "low_52w": None, + "turnover_rate": None, + "amplitude": None, + "sector": None, + "outer_vol": None, + "inner_vol": None, } - - if is_hk: - result["market_cap"] = get(fields["market_cap_总"]) - result["high_52w"] = get(fields["high_limit"]) - result["low_52w"] = get(fields["low_limit"]) - else: - result["market_cap"] = get(fields["market_cap_总"]) - result["market_cap_流通"] = get(fields["market_cap_流通"]) - result["high_52w"] = get(fields["high_52w"]) - result["low_52w"] = get(fields["low_52w"]) - result["turnover_rate"] = get(fields["turnover_rate"]) - result["amplitude"] = get(fields["amplitude"]) - result["sector"] = get_str(fields["sector"]) - result["outer_vol"] = get(fields["outer_vol"]) - result["inner_vol"] = get(fields["inner_vol"]) - return result diff --git a/scripts/stock_quote.py b/scripts/stock_quote.py index 55b461c4..951e5dde 100644 --- a/scripts/stock_quote.py +++ b/scripts/stock_quote.py @@ -286,7 +286,7 @@ def get_quotes_batch(codes, max_workers=5): return results -# ── 名称缓存(从portfolio.json/decisions.json补充) ── +# ── 名称缓存(从DB holdings / watchlist_stocks 补充) ── def _get_name_from_cache(code): """从本地数据文件补充股票名称(东财API不返回名称时用)""" @@ -299,13 +299,15 @@ def _get_name_from_cache(code): return h.get("name", "") except Exception: pass + # 从 DB watchlist_stocks 中查找名称 try: - wl = DATA_DIR / "watchlist.json" - if wl.exists(): - d = json.loads(wl.read_text()) - for item in d if isinstance(d, list) else d.get("stocks", []): - if str(item.get("code", "")) == str(code): - return item.get("name", "") + import sqlite3 + _db = sqlite3.connect(str(DATA_DIR / "mofin.db")) + _db.row_factory = sqlite3.Row + row = _db.execute("SELECT name FROM watchlist_stocks WHERE code=? AND is_active=1", (code,)).fetchone() + _db.close() + if row: + return row["name"] except Exception: pass return "" diff --git a/scripts/strategy-staleness-check.py b/scripts/strategy-staleness-check.py index a77bf060..db5c9ea3 100644 --- a/scripts/strategy-staleness-check.py +++ b/scripts/strategy-staleness-check.py @@ -13,7 +13,7 @@ import json, sys, os, re, urllib.request, sqlite3 sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from datetime import datetime -from mo_data import read_decisions, read_portfolio +from mo_data import read_decisions, read_portfolio, get_price DB_PATH = '/home/hmo/web-dashboard/data/mofin.db' OUTPUT_PATH = "/home/hmo/web-dashboard/data/strategy_staleness_report.json" @@ -23,25 +23,7 @@ CRITICAL_DAYS = 21 # 超过21天→严重警告 DIVERGENCE_WARN = 30 # 偏离买入区>30%→警告 DIVERGENCE_CRIT = 50 # 偏离>50%→严重 -def get_price(code): - """从腾讯API获取当前价""" - try: - market = "sh" if code.startswith("6") else "sz" if code.startswith("0") or code.startswith("3") else "" - if code.startswith(("00", "30")) or code.startswith("68"): - market = "sh" if code.startswith("6") else "sz" - elif code.startswith(("01", "02", "03")): - market = "sz" - url = f"http://qt.gtimg.cn/q={market}{code}" - req = urllib.request.Request(url, headers={"User-Agent": "curl/7.81"}) - with urllib.request.urlopen(req, timeout=5) as resp: - raw = resp.read().decode("gbk") - parts = raw.split("~") - if len(parts) > 3: - price = float(parts[3]) if parts[3] else 0 - chg = float(parts[32]) if parts[32] else 0 - return price, chg if price > 0 else (None, None) - except: pass - return None, None +# ── 使用 mo_data.get_price 统一获取价格 ── def parse_buy_zone(current): """从策略current字段提取买入区间最低和最高""" diff --git a/scripts/strategy_evaluator.py b/scripts/strategy_evaluator.py index 28ca583e..feb76263 100644 --- a/scripts/strategy_evaluator.py +++ b/scripts/strategy_evaluator.py @@ -14,20 +14,17 @@ 输出:写入 decisions.json 的 evaluation 字段 + accuracy_stats.json """ import json -import urllib.request import os import sys import re from datetime import datetime, timedelta from pathlib import Path -from mo_data import read_decisions, read_portfolio +from mo_data import read_decisions, read_portfolio, get_price, get_prices_batch from mofin_db import get_conn, write_holding_strategy DATA_DIR = Path(__file__).parent.parent / "data" ACCURACY_PATH = DATA_DIR / "accuracy_stats.json" -UA = "Mozilla/5.0" - def load_json(path, default=None): try: @@ -58,43 +55,15 @@ def fetch_prices(codes): except Exception: pass - # Fallback: 腾讯 API - symbols = [] - code_map = {} - for c in codes: - sym = f"hk{c}" if len(c) == 5 else f"sh{c}" if c.startswith(("5", "6", "9")) else f"sz{c}" - symbols.append(sym) - code_map[sym] = c - url = f"http://qt.gtimg.cn/q={','.join(symbols)}" + # Fallback: mo_data.get_prices_batch try: - req = urllib.request.Request(url, headers={"User-Agent": UA}) - resp = urllib.request.urlopen(req, timeout=10) - text = resp.read().decode("gbk") + raw = get_prices_batch(codes) + if raw: + return {code: {"name": "", "price": p, "prev_close": 0, "change_pct": chg or 0, + "high": 0, "low": 0} for code, (p, chg) in raw.items()} except Exception as e: print(f"行情拉取失败: {e}", file=sys.stderr) - return {} - prices = {} - for line in text.strip().split("\n"): - line = line.strip() - if not line or "=" not in line: - continue - raw = line.split("=", 1)[1].strip().strip('"').strip(";") - fields = raw.split("~") - if len(fields) < 33: - continue - sym = line.split("=", 1)[0].strip().lstrip("v_") - orig = code_map.get(sym) - if not orig: - continue - prices[orig] = { - "name": fields[1], - "price": float(fields[3]) if fields[3] else 0, - "prev_close": float(fields[4]) if fields[4] else 0, - "change_pct": float(fields[32]) if fields[32] else 0, - "high": float(fields[33]) if fields[33] else 0, - "low": float(fields[34]) if fields[34] else 0, - } - return prices + return {} def parse_tech_snapshot(decision): diff --git a/scripts/strategy_lifecycle.py b/scripts/strategy_lifecycle.py index 12dce8e9..dfc0a108 100644 --- a/scripts/strategy_lifecycle.py +++ b/scripts/strategy_lifecycle.py @@ -1,2592 +1,2525 @@ -#!/usr/bin/env python3 -"""策略生命周期管理系统 — 技术面驱动版本 v2 - -核心原则: -1. 止损放在合理的技术位,不拍数字 -2. 新买入推荐:止损=弱支撑(约3%跌幅),止盈=强压力,盈亏比≥2:1 -3. 已持仓:止损=强支撑(约5-8%跌幅),目标=强压力 -4. 买入区间:弱支撑~弱压力之间 -5. 买入时机:量价齐跌不买,缩量至支撑买,量价齐升追买 -""" - -import json -import urllib.request -import os -import sys -import re -from datetime import datetime -import technical_analysis as ta -import multi_timeframe as mtf -from mo_data import read_portfolio, read_decisions, read_watchlist -from mo_models import is_hk_stock, to_cny, get_hk_rate -from strategy_tree import detect_scenario - -# ─── 策略准入门禁 — 硬性质量红线 ─────────────────────────────── -# 每一条策略写入前必须过此门禁。不过的不得写入DB/JSON, -# 必须触发重评修复。代码层面硬拦截,不依赖prompt或文档。 -# -# 规则列表 + 严重程度 + 修复建议 -STRATEGY_QUALITY_GATES = [ - { - "id": "GATE_LOSS_EXISTS", - "desc": "止损必须存在且>0", - "check": lambda d: (d.get("stop_loss") or 0) > 0, - "severity": "CRITICAL", - "fix": "调用 technical_analysis 计算支撑位设置止损" - }, - { - "id": "GATE_PROFIT_EXISTS", - "desc": "止盈必须存在且>0(纯自选股可放宽)", - "check": lambda d: (d.get("take_profit") or 0) > 0, - "severity": "CRITICAL", - "fix": "调用 technical_analysis 计算阻力位设置止盈目标" - }, - { - "id": "GATE_SL_GTE_LOW", - "desc": "止损必须 ≤ 买入区下沿", - "check": lambda d: (d.get("stop_loss") or 0) <= (d.get("entry_low") or 99999), - "severity": "HIGH", - "fix": "止损不能高于买入区,调整止损至买入区以下" - }, - { - "id": "GATE_ENTRY_RANGE", - "desc": "买入区下沿 < 上沿", - "check": lambda d: (d.get("entry_low") or 0) < (d.get("entry_high") or 0), - "severity": "CRITICAL", - "fix": "entry_low=现价×0.95, entry_high=现价×1.05 取近似区间" - }, - { - "id": "GATE_RR_COMPUTED", - "desc": "买入推荐必须含RR", - "check": lambda d: not ("买入" in (d.get("timing_signal") or "") or "加仓" in (d.get("timing_signal") or "")) or (d.get("rr_ratio") or 0) > 0, - "severity": "HIGH", - "fix": "RR = (止盈-现价)/(现价-止损),数据齐全后自动算" - }, - { - "id": "GATE_RR_MINIMUM", - "desc": "买入推荐RR≥1.5(非买入信号跳过)", - "check": lambda d: not ("买入" in (d.get("timing_signal") or "") or "加仓" in (d.get("timing_signal") or "")) or (d.get("rr_ratio") or 0) >= 1.5, - "severity": "HIGH", - "fix": "RR不足→signal降级为'信号不充分',不进推荐区" - }, - { - "id": "GATE_SIGNAL_SHORT", - "desc": "timing_signal 必须是短词(2-4字)", - "check": lambda d: len((d.get("timing_signal") or "").strip().split()) <= 4 and (d.get("timing_signal") or "") not in ("neutral", ""), - "severity": "MEDIUM", - "fix": "使用短词:买入/加仓/观望/持有/关注/信号不充分" - }, - { - "id": "GATE_TECH_SNAPSHOT", - "desc": "tech_snapshot 必须包含技术位数值", - "check": lambda d: bool(d.get("tech_snapshot")) and any(c in d["tech_snapshot"] for c in "支撑阻力压强"), - "severity": "MEDIUM", - "fix": "tech_snapshot 包含强撑/弱撑/弱压/强压至少3个数值" - }, - { - "id": "GATE_CURRENCY_SET", - "desc": "港股必须标 currency=HKD(个股存原币种,汇总时由calc_total_assets转CNY)", - "check": lambda d: not is_hk_stock(d.get("code","")) or d.get("currency") == "HKD", - "severity": "HIGH", - "fix": "设置 d['currency']='HKD'" - }, - # --- 第4条 CRITICAL 红线:9维交叉验证 (2026-07-02 Dad要求) --- - # 策略不能只有价格数字,必须有证据经过了多维分析: - # 横切面: 大盘+行业+个股 | 纵切面: 基本面+消息面+技术面+资金流 - # 代码层面可验证: sector_context(行业) + signal_factors(多因子) 或 tech_snapshot - { - "id": "GATE_9D_ANALYSIS", - "desc": "策略必须经过多维分析(sector_context + signal_factors)", - "check": lambda d: ( - bool(d.get("sector_context") and str(d.get("sector_context","")).strip() not in ("neutral","","N/A","-")) - and ( - bool(d.get("signal_factors") and isinstance(d.get("signal_factors"), (list,tuple)) and len(d["signal_factors"]) >= 1) - or bool(d.get("tech_snapshot") and any(c in str(d.get("tech_snapshot","")) for c in "支撑阻力压强")) - ) - ), - "severity": "CRITICAL", - "fix": "重新运行 reassess_with_context() 完整重评确保 sector_context/signal_factors/tech_snapshot 均已填充" - }, -] - - -def _hk_stock(code): - return bool(len(str(code)) == 5 and str(code)[0] in ('0','1')) - -def _is_buy_signal_str(signal): - """买入/加仓/建仓类信号""" - if not signal: - return False - return any(kw in signal for kw in ["买入", "加仓", "建仓"]) - -# _is_buy_signal is defined later in this file (~line 1240) - -def validate_strategy(d, debug=True): - """策略评审:硬性门禁检查 - - 返回 (passed: bool, failures: list) - 任一 CRITICAL 失败 → 拒绝写入,标记 TODO 触发重评 - 任一 HIGH 失败 → 标记 quality_check=failed,写入但不出现在推荐区 - MEDIUM 失败 → 记录但不拦截 - """ - failures = [] - for gate in STRATEGY_QUALITY_GATES: - try: - ok = gate["check"](d) - except Exception as e: - ok = False - if debug: - print(f" [VALIDATE] {gate['id']} 检查异常: {e}", flush=True) - if not ok: - failures.append(gate) - if debug: - print(f" [VALIDATE] ✗ {gate['id']} ({gate['severity']}): {gate['desc']}", flush=True) - - passed = all(f["severity"] != "CRITICAL" for f in failures) - - if debug: - criticals = [f for f in failures if f["severity"] == "CRITICAL"] - highs = [f for f in failures if f["severity"] == "HIGH"] - if passed: - print(f" [VALIDATE] ✅ 通过 ({len(failures)}条警告)" if failures else " [VALIDATE] ✅ 全通过", flush=True) - else: - print(f" [VALIDATE] ❌ {len(criticals)}条CRITICAL未通过 → 拒绝写入", flush=True) - - return passed, failures - - -def enforce_strategy_quality(code, name, result): - """策略写入前的强制质量门禁 - - 三段自动修复: - - Round 1: 技术分析(ta.full_analysis/chip_sr) - - Round 2: DB + 价格百分比推算 - - Round 3: 最低可用策略标记强推 - 3轮全不过 → review_needed - """ - price = result.get("price", 0) or result.get("current", 0) or result.get("last_price", 0) - code_str = str(code) - import sqlite3 # 本函数多处使用 - - def _db_sector(): - """从 DB 取行业名""" - try: - _db = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) - r = _db.execute("SELECT sector_name FROM stock_sectors WHERE code=?", (code_str,)).fetchone() - _db.close() - return r[0] if r else None - except: - return None - - def _fix_one(gate_id, round_num): - """对单个门禁执行修复。round_num越大修复越激进。""" - if gate_id == "GATE_LOSS_EXISTS" and (result.get("stop_loss") or 0) <= 0: - if round_num <= 2: - # Round 1-2: 技术分析算支撑 - tech = ta.full_analysis(code) - if tech and "support_resistance" in tech: - sr = tech["support_resistance"] - ws = sr.get("weak_support") - ss = sr.get("strong_support") - if ws and ws > 0: - result["stop_loss"] = round(ws, 2) - elif ss and ss > 0: - result["stop_loss"] = round(ss, 2) - elif price > 0: - result["stop_loss"] = round(price * 0.95, 2) - elif price > 0: - result["stop_loss"] = round(price * 0.95, 2) - else: - # Round 3: 强制fallback - if price > 0: - result["stop_loss"] = round(price * 0.90, 2) # 更宽 - else: - result["stop_loss"] = 1 - print(f" R{round_num} 止损={result.get('stop_loss',0)}", flush=True) - - if gate_id == "GATE_PROFIT_EXISTS" and (result.get("take_profit") or 0) <= 0: - if round_num <= 2: - tech = ta.full_analysis(code) - if tech and "support_resistance" in tech: - sr = tech["support_resistance"] - wr = sr.get("weak_resist") - sr_resist = sr.get("strong_resist") - if sr_resist and sr_resist > 0: - result["take_profit"] = round(sr_resist, 2) - elif wr and wr > 0: - result["take_profit"] = round(wr, 2) - elif price > 0: - result["take_profit"] = round(price * 1.08, 2) - elif price > 0: - result["take_profit"] = round(price * 1.08, 2) - else: - if price > 0: - result["take_profit"] = round(price * 1.20, 2) # 更宽 - else: - result["take_profit"] = 2 - print(f" R{round_num} 止盈={result.get('take_profit',0)}", flush=True) - - if gate_id == "GATE_ENTRY_RANGE" and ((result.get("entry_low") or 0) >= (result.get("entry_high") or 0) or (result.get("entry_low") or 0) <= 0): - p = price or 100 - sl = result.get("stop_loss", 0) - tp = result.get("take_profit", 0) - if round_num <= 2: - if sl > 0 and tp > 0 and sl < tp: - result["entry_low"] = round(sl * 1.02, 2) - result["entry_high"] = round(tp * 0.85, 2) - if result["entry_low"] >= result["entry_high"]: - result["entry_low"] = round(p * 0.95, 2) - result["entry_high"] = round(p * 0.99, 2) - else: - result["entry_low"] = round(p * 0.93, 2) - result["entry_high"] = round(p * 1.02, 2) - else: - result["entry_low"] = round(p * 0.90, 2) - result["entry_high"] = round(p * 1.10, 2) - print(f" R{round_num} 买入区={result['entry_low']}~{result['entry_high']}", flush=True) - - if gate_id == "GATE_9D_ANALYSIS": - # 行业 - if not result.get("sector_context") or str(result.get("sector_context","")).strip() in ("neutral","","N/A","-"): - sec = _db_sector() - if sec: - result["sector_context"] = sec - elif round_num >= 2: - result["sector_context"] = f"自选(未分类)" - else: - result["sector_context"] = f"{name}所属行业(待补充)" - # signal_factors - if not result.get("signal_factors") or (isinstance(result.get("signal_factors"), list) and len(result["signal_factors"]) == 0): - factors = [] - if result.get("timing_signal"): - factors.append(f"信号:{result['timing_signal']}") - if result.get("rr_ratio", 0) > 0: - factors.append(f"RR:{result['rr_ratio']}") - if result.get("stop_loss", 0) > 0 and result.get("take_profit", 0) > 0: - factors.append(f"损{result['stop_loss']}盈{result['take_profit']}") - if not factors: - if round_num >= 2: - factors.append("自动填充") - else: - # Round 1: 留空等重检,不硬填 - pass - if factors: - result["signal_factors"] = factors - # tech_snapshot - if not result.get("tech_snapshot") or not any(c in str(result.get("tech_snapshot","")) for c in "支撑阻力压强"): - sl = result.get("stop_loss", 0) - tp = result.get("take_profit", 0) - if sl > 0 and tp > 0: - result["tech_snapshot"] = f"自动:损{sl}盈{tp}" - elif price: - result["tech_snapshot"] = f"自动:价{price}" - elif round_num >= 2: - result["tech_snapshot"] = "自动生成(未补全技术位)" - print(f" R{round_num} 9维分析: sector={result.get('sector_context','')[:20]} factors={result.get('signal_factors',[])}", flush=True) - - # 循环重试 - MAX_RETRIES = 3 - passed, failures = validate_strategy(result) - retry_count = 0 - - for _retry_num in range(1, MAX_RETRIES + 1): - if passed: - break - - critical_issues = [f["id"] for f in failures if f["severity"] == "CRITICAL"] - if not critical_issues: - # 没有CRITICAL了,只有HIGH/MEDIUM → 可以放行 - passed = True - break - - retry_count = _retry_num - print(f" [RETRY {retry_count}/{MAX_RETRIES}] {name}({code}) → 修复: {critical_issues}", flush=True) - - for gate_id in critical_issues: - _fix_one(gate_id, retry_count) - - # 重检 - passed, failures = validate_strategy(result) - - # --- 最终结果 --- - if passed: - print(f" ✅ {name}({code}) 质量门禁通过 ({retry_count}轮重试)", flush=True) - result["quality_check"] = "passed" - result["quality_checked_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") - - # HIGH 级别警告(已通过但仍有非CRITICAL失败) - high_fails = [f for f in failures if f["severity"] == "HIGH"] - if high_fails: - result["quality_check"] = "warning" - result["quality_issues"] = {"high": [f["id"] for f in high_fails]} - print(f" ⚠️ {name}({code}) 有{len(high_fails)}条HIGH警告", flush=True) - - # 记录 changelog - if "critical_issues" in dir(): - cl = result.setdefault("changelog", []) - cl.append({ - "time": datetime.now().strftime("%Y-%m-%d %H:%M"), - "event": f"质量门禁通过 (重试{retry_count}轮)", - }) - - result["status"] = "active" - return True - else: - # 3轮全不过 → review_needed - remaining_critical = [f["id"] for f in failures if f["severity"] == "CRITICAL"] - result["quality_check"] = "failed" - result["quality_issues"] = { - "critical": remaining_critical, - "all": [f["id"] for f in failures], - } - result["quality_checked_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") - result["status"] = "review_needed" - result["timing_signal"] = "信号不充分" - - cl = result.setdefault("changelog", []) - cl.append({ - "time": datetime.now().strftime("%Y-%m-%d %H:%M"), - "event": f"质量门禁3轮全拒 → review_needed ({remaining_critical})", - }) - - print(f" 🚫 {name}({code}) 3轮修复后仍有 {remaining_critical} → review_needed", flush=True) - return False - - -# is_hk_stock 已从 mo_models 导入(见文件头部 import),不再在此复写。 - - -def calc_atr(code, period=14): - """从腾讯API K线数据计算ATR(period),返回ATR值或None""" - try: - url = f"http://ifzq.gtimg.cn/appstock/app/fqkline/get?param=hk{code},day,,,60,qfq" - req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) - resp = urllib.request.urlopen(req, timeout=5).read().decode('utf-8') - data = json.loads(resp) - bars = data.get('data', {}).get(f'hk{code}', {}).get('day', []) - if len(bars) < period + 1: - return None - trs = [] - for i in range(1, min(len(bars), period + 1)): - try: - high = float(bars[i][2]) - low = float(bars[i][3]) - prev_close = float(bars[i-1][4]) if len(bars[i-1]) > 4 else float(bars[i-1][3]) - tr = max(high - low, abs(high - prev_close), abs(low - prev_close)) - trs.append(tr) - except (ValueError, IndexError): - continue - if not trs: - return None - return round(sum(trs) / len(trs), 2) - except Exception: - return None - - -def calc_chip_sr(code, price): - """从筹码分布计算支撑/阻力位。 - - 返回: {"chip_ss": 筹码强支撑, "chip_sr": 筹码强阻力} 或 None - 筹码强支撑 = 当前价下方成交量最大的价格区间 - 筹码强阻力 = 当前价上方成交量最大的价格区间 - - 用法: - sr = calc_chip_sr("600519", 1193) - if sr: - print(f"筹码支撑{sr['chip_ss']} 筹码阻力{sr['chip_sr']}") - """ - if not price or price <= 0: - return None - try: - # 复用chip_factors的筹码分布构建 - import sys as _sys - _sys.path.insert(0, "/home/hmo/MoFin/scripts") - from chip_factors import ChipFactors - cf = ChipFactors() - chip = cf._build_chip_distribution(code) - if not chip: - return None - total = sum(chip.values()) - if total <= 0: - return None - # 2%区间聚合 - step = max(round(price * 0.02, 2), 1.0) - bins = {} - for p, v in chip.items(): - k = round(p / step) * step - bins[k] = bins.get(k, 0) + v - sb = sorted(bins.items()) - below = [(p, v) for p, v in sb if p < price] - above = [(p, v) for p, v in sb if p >= price] - if not below or not above: - return None - - # 支撑 = 下方成交量最大的密集区 - chip_ss = max(below, key=lambda x: x[1])[0] - # 阻力 = 上方成交量最大的密集区 - chip_sr = max(above, key=lambda x: x[1])[0] - - return {"chip_ss": chip_ss, "chip_sr": chip_sr} - except Exception as e: - print(f" ⚠️ 筹码S/R计算失败: {e}", file=sys.stderr) - return None - -# 提示词版本追踪 -try: - from prompt_manager.tracking import record_strategy_generation - HAS_PROMPT_TRACKING = True -except ImportError: - HAS_PROMPT_TRACKING = False - -def safe_json_load(path, default=None): - """安全加载 JSON,遇到坏数据自动修复""" - if not os.path.exists(path): - return default if default is not None else {} - try: - with open(path, "r", encoding="utf-8") as f: - return json.load(f) - except json.JSONDecodeError: - # 尝试修复:替换字符串内未转义的换行符,去多余括号 - with open(path, "r", encoding="utf-8") as f: - raw = f.read() - fixed = raw - - # 修复1: 字符串内未转义的换行 -> \\n - result = [] - in_str = False - for ch in fixed: - if ch == '"': - in_str = not in_str - result.append(ch) - elif in_str and ch in '\n\r': - result.append('\\n') - else: - result.append(ch) - fixed = ''.join(result) - - # 修复2: 去掉多余的尾部括号 - fixed = fixed.rstrip('}') - # 补回正确的闭合 - if not fixed.endswith('}'): - fixed += '}' - - try: - return json.loads(fixed) - except json.JSONDecodeError as e: - print(f"[WARN] watchlist.json 自动修复失败: {e}", file=sys.stderr) - return default if default is not None else {} -KNOWLEDGE_LOG = "/home/hmo/Obsidian/knowledge/finance/analyst-knowledge-log.md" -MACRO_CONTEXT_PATH = "/home/hmo/web-dashboard/data/macro_context.json" -MARKET_CONTEXT_PATH = "/home/hmo/web-dashboard/data/market.json" -STOCK_SECTOR_MAP_PATH = "/home/hmo/web-dashboard/data/stock_sector_map.json" - - -def load_stock_sector_map(): - """读取个股归属行业映射 - - stock_sector_map.json 格式: {code: [sector1, sector2, ...]} - 跳过 _note, _created_at 等元数据键。 - """ - # 优先从 SQLite 读取 - try: - from mofin_db import get_conn, query_sector_stocks - conn = get_conn() - # 从 stock_sectors 表反向构建 code→[sectors] 映射 - rows = conn.execute("SELECT code, sector_name FROM stock_sectors ORDER BY code").fetchall() - conn.close() - code_to_sectors = {} - for code, sector in rows: - if code not in code_to_sectors: - code_to_sectors[code] = [] - code_to_sectors[code].append(sector) - return code_to_sectors - except Exception: - pass - try: - with open(STOCK_SECTOR_MAP_PATH) as f: - data = json.load(f) - code_to_sectors = {} - for key, value in data.items(): - if key.startswith("_"): - continue - if isinstance(value, list): - code_to_sectors[key] = value - return code_to_sectors - except Exception: - return {} - - -def load_market_context(): - """读取市场上下文,优先 SQLite,回退 market.json""" - # 优先从 SQLite 读取 - try: - from mofin_db import get_conn, query_latest_market - conn = get_conn() - market = query_latest_market(conn) - conn.close() - if market and market.get("sectors"): - sector_perf = {} - for s in market["sectors"]: - name = s.get("name", "") - if name: - sector_perf[name] = { - "change": s.get("change_pct", 0), - "up_count": s.get("up_count", 0), - "down_count": s.get("down_count", 0), - "net_inflow": s.get("net_inflow", 0), - "lead_stock": s.get("lead_stock", ""), - "lead_stock_change": s.get("lead_stock_change", 0), - } - return { - "sector_perf": sector_perf, - "breadth": market.get("up_ratio", 50), - "mood": market.get("mood", "neutral"), - "top_gainers": {g["name"]: g["change_pct"] for g in market.get("top_gainers", [])}, - "top_losers": {g["name"]: g["change_pct"] for g in market.get("top_losers", [])}, - "total_sectors": len(market["sectors"]), - "market_timestamp": market.get("timestamp", ""), - } - except Exception: - pass - try: - with open(MARKET_CONTEXT_PATH) as f: - market = json.load(f) - sectors = market.get("sectors", []) - sector_perf = {} - for s in sectors: - name = s.get("name", "") - if name: - sector_perf[name] = { - "change": s.get("change", 0), - "up_count": s.get("up_count", 0), - "down_count": s.get("down_count", 0), - "net_inflow": s.get("net_inflow", 0), - "lead_stock": s.get("lead_stock", ""), - "lead_stock_change": s.get("lead_stock_change", 0), - } - top_gainers = {s.get("name", ""): s.get("change", 0) - for s in market.get("top_gainers", [])} - top_losers = {s.get("name", ""): s.get("change", 0) - for s in market.get("top_losers", [])} - return { - "sector_perf": sector_perf, - "breadth": market.get("up_ratio", 50), - "mood": market.get("mood", "neutral"), - "top_gainers": top_gainers, - "top_losers": top_losers, - "total_sectors": market.get("total_sectors", 0), - "market_timestamp": market.get("timestamp", ""), - } - except Exception: - return { - "sector_perf": {}, - "breadth": 50, - "mood": "neutral", - "top_gainers": {}, - "top_losers": {}, - "total_sectors": 0, - "market_timestamp": "", - } - - -def compute_sector_adjustment(code, market_ctx, stock_sector_map): - """根据个股所属行业的市场表现+小果情感,返回调整系数 - - 返回 dict: - stop_bias: 止损调整系数(<1.0收紧, >1.0放宽) - target_bias: 止盈调整系数 - note: 行业背景一句话 - sector_name: 匹配到的行业名称 - sector_change: 行业涨跌幅 - """ - # 默认无调整 - adj = {"stop_bias": 1.0, "target_bias": 1.0, "note": "", - "sector_name": "", "sector_change": 0} - - sectors_for_code = stock_sector_map.get(code, []) - if not sectors_for_code: - return adj - - sector_perf = market_ctx.get("sector_perf", {}) - breadth = market_ctx.get("breadth", 50) - - # 找第一个能匹配到的行业 - for sec in sectors_for_code: - if sec in sector_perf: - perf = sector_perf[sec] - chg = perf.get("change", 0) - adj["sector_name"] = sec - adj["sector_change"] = chg - - # 行业暴跌 > 3% - if chg <= -3: - adj["stop_bias"] = 0.92 # 止损收紧8% - adj["target_bias"] = 0.90 # 止盈下调10% - adj["note"] = f"行业{sec}大跌{chg:+.1f}%,收紧止损" - # 行业大跌 1~3% - elif chg <= -1: - adj["stop_bias"] = 0.96 - adj["target_bias"] = 0.95 - adj["note"] = f"行业{sec}下跌{chg:+.1f}%,适度防御" - # 行业大涨 > 3% - elif chg >= 3: - adj["stop_bias"] = 1.05 # 止损放宽5%(给趋势空间) - adj["target_bias"] = 1.03 - adj["note"] = f"行业{sec}大涨{chg:+.1f}%,可适度积极" - # 行业上涨 1~3% - elif chg >= 1: - adj["stop_bias"] = 1.02 - adj["note"] = f"行业{sec}上涨{chg:+.1f}%,正常" - else: - adj["note"] = f"行业{sec}{chg:+.1f}%,中性" - break - # 尝试处理命名差异:market.json中的行业名可能多了"板块"后缀 - for market_sec_name in sector_perf: - if sec in market_sec_name or market_sec_name in sec: - perf = sector_perf[market_sec_name] - chg = perf.get("change", 0) - adj["sector_name"] = market_sec_name - adj["sector_change"] = chg - if chg <= -3: - adj["stop_bias"] = 0.92 - adj["target_bias"] = 0.90 - adj["note"] = f"行业{market_sec_name}大跌{chg:+.1f}%,收紧止损" - elif chg <= -1: - adj["stop_bias"] = 0.96 - adj["target_bias"] = 0.95 - adj["note"] = f"行业{market_sec_name}下跌{chg:+.1f}%,适度防御" - elif chg >= 3: - adj["stop_bias"] = 1.05 - adj["target_bias"] = 1.03 - adj["note"] = f"行业{market_sec_name}大涨{chg:+.1f}%,可适度积极" - elif chg >= 1: - adj["stop_bias"] = 1.02 - adj["note"] = f"行业{market_sec_name}上涨{chg:+.1f}%,正常" - else: - adj["note"] = f"行业{market_sec_name}{chg:+.1f}%,中性" - break - - # 如果breath<30% (大盘极弱),再加一层收紧 - if breadth < 30: - adj["stop_bias"] *= 0.97 # 再收紧3% - breadth_note = "大盘仅{}%个股上涨".format(int(breadth)) - adj["note"] = (adj["note"] + " | " + breadth_note) if adj["note"] else breadth_note - elif breadth < 40: - adj["stop_bias"] *= 0.99 - breadth_note = "大盘偏弱({}%上涨)".format(int(breadth)) - adj["note"] = (adj["note"] + " | " + breadth_note) if adj["note"] else breadth_note - - # 小果情感约束:利空置信度>80%时收紧止损 - try: - xiaoguo_path = "/home/hmo/web-dashboard/data/xiaoguo_sentiment.json" - if os.path.exists(xiaoguo_path): - xg = json.load(open(xiaoguo_path)) - stock_sentiment = xg.get("stocks", {}).get(code, {}) - if stock_sentiment: - sentiment = stock_sentiment.get("sentiment", "") - confidence = stock_sentiment.get("confidence", 0) - summary = stock_sentiment.get("summary", "") - if sentiment == "negative" and confidence > 0.8: - adj["stop_bias"] = min(adj["stop_bias"], 0.95) - adj["note"] += f" | 小果利空{confidence:.0%}:{summary[:30]}" - except Exception: - pass - - return adj - - -def load_macro_context(): - """读取宏观上下文,返回 (bias, desc),优先 DB,回退 JSON""" - try: - import sqlite3 - from pathlib import Path - conn = sqlite3.connect(str(Path(__file__).parent.parent / "data" / "mofin.db")) - row = conn.execute( - "SELECT indices, structure FROM macro_context_log " - "WHERE has_valid_data=1 ORDER BY created_at DESC LIMIT 1" - ).fetchone() - conn.close() - if row: - indices = json.loads(row[0]) if row[0] else {} - structure = json.loads(row[1]) if row[1] else {} - overall = structure.get("overall", "neutral") - desc = structure.get("description", "") - else: - raise ValueError("no db data") - except Exception: - try: - with open(MACRO_CONTEXT_PATH) as f: - ctx = json.load(f) - overall = ctx.get("structure", {}).get("overall", "neutral") - desc = ctx.get("structure", {}).get("description", "") - except Exception: - return 1.0, "宏观未加载" - if "bearish" in overall: - return 0.8, f"宏观{desc}" - elif overall == "bullish": - return 1.05, f"宏观{desc}" - elif overall == "strong_bullish": - return 1.1, f"宏观{desc}" - else: - return 1.0, f"宏观{desc}" - - -def batch_fetch_prices(codes): - """获取实时价格。优先从 DB 读取(price_monitor 每 2 分钟更新),失败才拉腾讯 API。""" - if not codes: - return {} - - all_results = {} - - # 主通道:从 DB 读取(price_monitor 唯一价格入口) - try: - import sqlite3 - db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db') - db.row_factory = sqlite3.Row - for raw_code in codes: - raw_code = str(raw_code).split('_')[0] - if not raw_code: continue - row = db.execute( - "SELECT price, change_pct FROM holdings WHERE code=? AND is_active=1", (raw_code,) - ).fetchone() - if not row: - row = db.execute( - "SELECT price, change_pct FROM holding_strategies WHERE code=? AND status='active' ORDER BY updated_at DESC LIMIT 1", (raw_code,) - ).fetchone() - if row and row['price']: - all_results[raw_code] = { - "price": row['price'], - "close": row['price'], # 用现价近似昨收,仅用于sentiment计算 - "high": row['price'], - "low": row['price'], - "code": raw_code, - } - db.close() - if all_results: - return all_results - except Exception: - pass - - # Fallback: 腾讯 API(仅当 DB 无数据时) - batch_size = 15 - for batch_start in range(0, len(codes), batch_size): - batch = codes[batch_start:batch_start + batch_size] - symbols = [] - code_map = {} - for raw_code in batch: - raw_code = str(raw_code).split('_')[0] - if not raw_code: - continue - if len(raw_code) == 5 and raw_code.isdigit(): - prefix = "hk" - elif raw_code.startswith(("6", "5")): - prefix = "sh" - else: - prefix = "sz" - sym = f"{prefix}{raw_code}" - symbols.append(sym) - code_map[sym] = raw_code - if not symbols: - continue - - url = f"http://qt.gtimg.cn/q={','.join(symbols)}" - max_retries = 2 - for attempt in range(max_retries + 1): - try: - r = urllib.request.urlopen(url, timeout=10) - text = r.read().decode("gbk") - except Exception as e: - if attempt < max_retries: - continue - print(f" batch_fetch_prices error: {e}", file=sys.stderr) - continue - - for line in text.strip().split("\n"): - line = line.strip() - if not line or "=" not in line: - continue - try: - sym = line.split("=", 1)[0].strip().lstrip("v_") - raw_value = line.split("=", 1)[1].strip().strip('"').strip(";") - fields = raw_value.split("~") - if len(fields) < 35: - continue - orig_code = code_map.get(sym) - if not orig_code: - continue - def f(i): - try: - return float(fields[i]) if fields[i].strip() else 0.0 - except: - return 0.0 - price_raw = f(3) - # 港股:腾讯 API 返回 HKD,需转 CNY - if is_hk_stock(orig_code) and price_raw > 0: - price_raw = to_cny(price_raw) - all_results[orig_code] = { - "price": price_raw, "close": f(4), "high": f(33), "low": f(34), - "code": orig_code, - } - except Exception: - continue - break # Success - break retry loop - - return all_results - - -def get_price_tencent(code): - """获取实时价格。优先 DB(price_monitor 维护),失败才拉腾讯。港股价格已是 CNY。""" - raw_code = str(code).split('_')[0] - if not raw_code: - return None - - # 主通道: DB - try: - import sqlite3 - db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db') - db.row_factory = sqlite3.Row - row = db.execute("SELECT price FROM holdings WHERE code=? AND is_active=1", (raw_code,)).fetchone() - if not row: - row = db.execute("SELECT price FROM holding_strategies WHERE code=? AND status='active' ORDER BY updated_at DESC LIMIT 1", (raw_code,)).fetchone() - if row and row['price']: - db.close() - return row['price'] - db.close() - except Exception: - pass - - # Fallback: 腾讯 API - try: - from mo_models import to_cny, is_hk_stock - except ImportError: - to_cny = lambda v, r=None: v - is_hk_stock = lambda c: len(str(c).strip()) == 5 and str(c).strip().isdigit() - try: - if is_hk_stock(raw_code): - prefix = "hk" - elif raw_code.startswith("6") or raw_code.startswith("5"): - prefix = "sh" - else: - prefix = "sz" - url = f"http://qt.gtimg.cn/q={prefix}{raw_code}" - r = urllib.request.urlopen(url, timeout=5) - fields = r.read().decode("gbk").split('"')[1].split("~") - def f(i): - try: - return float(fields[i]) if fields[i].strip() else 0.0 - except: - return 0.0 - price = f(3) - if is_hk_stock(raw_code) and price > 0: - price = to_cny(price) - return { - "price": price, "close": f(4), "high": f(33), "low": f(34), - "code": raw_code, - } - except Exception as e: - print(f" get_price error {code}: {e}", file=sys.stderr) - return None - - -def reassess_strategy(code, name, price, cost, shares, current_action, - volume_signal="", sentiment="neutral", - is_watchlist=False): - """根据技术分析重评策略""" - - tech = ta.full_analysis(code) - if tech and "support_resistance" in tech: - sr = tech["support_resistance"] - candle = tech.get("candlestick", {}) - vol = tech.get("volume", {}) - vol_deep = tech.get("volume_deep", {}) - ss = sr.get("strong_support") - ws = sr.get("weak_support") - wr = sr.get("weak_resist") - sr_resist = sr.get("strong_resist") - pivot = sr.get("pivot") - effective_range = sr.get("effective_range") - print(f" TECH: 强撑={ss} 弱撑={ws} 枢轴={pivot} 弱压={wr} 强压={sr_resist} 有效区间={effective_range}") - else: - print(f" ⚠️ 技术分析不可用", file=sys.stderr) - ss = ws = wr = sr_resist = pivot = None - candle = {} - vol = {} - - # ----- 多周期技术分析(周线/月线/均线) ----- - mtf_analysis = {} - mtf_adj = {} - try: - mtf_result = mtf.full_multi_tf_analysis(code) - if mtf_result.get("daily") and mtf_result["daily"].get("count", 0) >= 5: - mtf_analysis = mtf_result - mtf_adj = mtf_result.get("strategy_adjustment", {}) - daily_mas = mtf_result.get("daily", {}).get("mas", {}) - weekly = mtf_result.get("weekly", {}) - monthly = mtf_result.get("monthly", {}) - trend_align = mtf_adj.get("trend_alignment", "未知") - print(f" 多周期: {trend_align} | " - f"MA5={daily_mas.get('ma5','?')} MA20={daily_mas.get('ma20','?')} MA60={daily_mas.get('ma60','?')} | " - f"周线{weekly.get('trend',{}).get('description','?')} 月线{monthly.get('trend',{}).get('description','?')}") - except Exception as e: - print(f" 多周期分析失败: {e}", file=sys.stderr) - - # ----- 筹码分布支撑/阻力(中长线参考,加情景权重) ----- - chip_sr = None - chip_weight = 0.5 # 默认中等权重 - regime = detect_scenario() - regime_id = regime.get("id", "weak_consolidation") - - # 情景决定筹码因子权重 - if regime_id == "weak_consolidation": - chip_weight = 0.9 # 震荡市筹码最准 - elif regime_id == "bullish_recovery": - chip_weight = 0.4 # 上涨趋势筹码阻力可能被突破 - elif regime_id == "sharp_decline": - chip_weight = 0.2 # 急跌中筹码支撑可能失效 - elif regime_id == "sector_rotation": - chip_weight = 0.6 # 轮动市中筹码有一定参考 - - try: - chip_sr = calc_chip_sr(code, price) - if chip_sr: - print(f" 筹码: 撑={chip_sr['chip_ss']:.0f} 阻={chip_sr['chip_sr']:.0f} | 情景={regime_id} 权重={chip_weight:.1f}") - # 与枢轴点对比 - if ss and ws and pivot and chip_sr['chip_ss'] > 0 and chip_sr['chip_sr'] > 0: - chip_ss_pct = (price - chip_sr['chip_ss']) / price * 100 - chip_sr_pct = (chip_sr['chip_sr'] - price) / price * 100 - - # 共振检测:筹码支撑 vs 枢轴弱支撑(都是最近支撑位) - if ws and ws > 0: - resonance_ss = abs(chip_ss_pct - ((price - ws) / price * 100)) < 3 - else: - resonance_ss = False - # 共振检测:筹码阻力 vs 枢轴弱阻力(都是最近阻力位) - if wr and wr > 0: - resonance_sr = abs(chip_sr_pct - ((wr - price) / price * 100)) < 3 - else: - resonance_sr = False - - if resonance_ss and chip_weight >= 0.5: - print(f" ⚡ 支撑共振({chip_weight:.0f}): 筹码+枢轴均指向{chip_sr['chip_ss']:.0f}") - elif chip_weight < 0.5: - print(f" 📎 支撑一致但权重低({chip_weight:.1f}): {regime_id}下筹码支撑不可靠") - - if resonance_sr and chip_weight >= 0.5: - print(f" ⚡ 阻力共振({chip_weight:.0f}): 筹码+枢轴均指向{chip_sr['chip_sr']:.0f}") - elif chip_weight < 0.5: - print(f" 📎 阻力一致但权重低({chip_weight:.1f}): {regime_id}下筹码阻力不可靠") - except Exception: - pass - - profit_pct = (price - cost) / cost * 100 if cost else 0 - is_new_entry = (cost == 0) or (shares == 0) - is_deep_loss = profit_pct < -20 - - # ----- 股票分类(短炒/中短线/中长线/弱势/深套) ----- - stock_category = "中短线" - time_horizon = "2周~3月" - position_advice = "中等仓位" - try: - mtf_cache = mtf._load_mtf_cache() - stock_data = mtf_cache.get(code, {}) - daily_klines = stock_data.get("daily", []) - fund = stock_data.get("fundamentals", {}) - closes = [d["close"] for d in daily_klines] if daily_klines else [] - - if len(closes) >= 10: - cur = closes[-1] - ma20 = sum(closes[-20:])/20 if len(closes)>=20 else 0 - ma60 = sum(closes[-60:])/60 if len(closes)>=60 else 0 - highs = [d["high"] for d in daily_klines[-20:]] - lows = [d["low"] for d in daily_klines[-20:]] - volatility = ((max(highs)-min(lows))/min(lows)*100) if min(lows)>0 else 0 - pe = fund.get("pe") or 0 - eps = fund.get("eps") or 0 - mcap = fund.get("mcap_total") or 0 - is_high_vol = volatility > 30 - is_high_pe = pe > 100 or pe < 0 - is_value = 0 < pe < 20 and eps > 0.5 - - if is_deep_loss: - stock_category = "深套" - time_horizon = "长期" - position_advice = "不补不割" - elif is_high_vol and is_high_pe: - stock_category = "短炒" - time_horizon = "数日~2周" - position_advice = "小仓快进快出" - elif cur < ma20 and cur < ma60 and ma20 > 0: - stock_category = "弱势" - time_horizon = "观望" - position_advice = "减仓或观望" - elif (is_value or mcap > 1000) and cur > ma20: - stock_category = "中长线" - time_horizon = "数月~1年" - position_advice = "正常配置" - elif volatility > 20: - stock_category = "中短线" - time_horizon = "2~6周" - position_advice = "中等仓位" - except Exception: - pass - - print(f" 分类: {stock_category} | {time_horizon} | {position_advice}") - - # ----- 短炒+强趋势检测:短炒分类但多周期多头时用移动止损代替弱支撑止损 ----- - is_short_term_strong_trend = False - if stock_category == "短炒": - trend_align = mtf_adj.get("trend_alignment", "") - strong_trend_indicators = ["多周期看多", "多周期多头", "上升"] - if any(ind in trend_align for ind in strong_trend_indicators): - is_short_term_strong_trend = True - print(f" ⚡ 短炒+强趋势检测: 趋势={trend_align} → 启用移动止损, 不止盈") - position_advice = "小仓强趋势让利润跑" - - # ----- 止损设置(含最小距离3%保护) ----- - if is_new_entry: - # 新买入推荐:止损 = 弱支撑(约2-3%跌幅,合理可控) - if ws and ws > 0: - new_stop = round(ws, 2) - else: - new_stop = round(price * 0.96, 2) - elif is_deep_loss: - # 深套:止损 = 强支撑再下移(不轻易割) - if ss and ss > 0: - new_stop = round(min(ss, price * 0.85), 2) - else: - new_stop = round(price * 0.85, 2) - else: - # 已持仓正常:止损 = 强支撑 - if is_short_term_strong_trend: - # 短炒+强趋势:用移动止损(距现价-5%),不止盈让利润跑 - trailing_sl = round(max(ws or 0, price * 0.95), 2) if ws else round(price * 0.95, 2) - new_stop = trailing_sl - print(f" 短炒强趋势移动止损: {new_stop} (距现价-{(1-new_stop/price)*100:.1f}%)") - elif ss and ss > 0: - new_stop = round(ss, 2) - else: - new_stop = round(price * 0.88, 2) - - # 已盈利仓位(>5%):用较紧的移动止损保护利润,但不超过成本线 - if profit_pct > 5 and not is_new_entry and not is_deep_loss: - # 取 max(弱支撑, 成本线, 当前价×0.95) 作为止损 - cost_protect = cost if cost > 0 else 0 - trailing_stop = round(max(ws or 0, cost_protect, price * 0.95), 2) - if trailing_stop > new_stop: - new_stop = trailing_stop - print(f" 已启用移动止损: {new_stop} (保护+{profit_pct:.1f}%利润)", file=sys.stderr) - - # 最小止损距离 —— 随趋势强度调整(2026-06-23 震度保护规则) - # 强趋势(多周期看多 + MA多头排列):最小1.5%下行空间 - # 普通/弱势:最小3%下行空间 - is_strong_trend = False - trend_align = mtf_adj.get("trend_alignment", "") - strong_trend_indicators = ["多周期看多", "多周期多头", "上升"] - try: - if any(ind in trend_align for ind in strong_trend_indicators) and ma20 > ma60 and cur >= ma20: - is_strong_trend = True - except (NameError, TypeError): - pass # ma20/ma60/cur may be unbound if MTF data insufficient - - if is_strong_trend: - min_stop_gap = 0.015 # 1.5% - else: - min_stop_gap = 0.03 # 3% - - min_stop = round(price * (1 - min_stop_gap), 2) - if new_stop > min_stop and not is_deep_loss: - old_stop = new_stop - new_stop = min_stop - if old_stop != new_stop: - print(f" 最小止损 {round(min_stop_gap*100)}%间距约束: {old_stop}→{new_stop} (趋势{'强' if is_strong_trend else '普通'})") - - # 港股附加:ATR波动率校验 — 止损距现价不得小于 1×ATR(14) - if is_hk_stock(code): - atr = calc_atr(code) - if atr and atr > 0: - min_atr_stop = round(price - atr, 2) - if new_stop > min_atr_stop: - old_stop_val = new_stop - new_stop = min_atr_stop - print(f" 港股ATR波动率校验({atr:.2f}): 止损 {old_stop_val}→{new_stop} (1×ATR间距)") - - # ----- 止盈设置 ----- - if is_short_term_strong_trend and not is_new_entry: - # 短炒+强趋势:不止盈让利润跑 - mtf_tp = mtf_adj.get("take_profit_reference", {}) - if mtf_tp and mtf_tp.get("level", 0) > price * 1.2: - new_target = round(mtf_tp["level"], 2) - else: - new_target = 0 # 无多周期阻力时不编造止盈 - print(f" 短炒强趋势不止盈: 止盈设为{new_target} (+{(new_target/price-1)*100:.0f}%)") - elif sr_resist and sr_resist > 0: - new_target = round(sr_resist, 2) - else: - new_target = 0 # 无技术面数据时不编造止盈 - - # ----- 风险回报比校验 ----- - stop_distance = price - new_stop if price > new_stop else price * 0.02 - target_distance = new_target - price if new_target > price else 0 - - # 1:2 检查 - min_target_distance = stop_distance * 2.0 - if target_distance < min_target_distance: - # 尝试更高的阻力位,但不超过下一个真实压力位 - candidate_targets = [] - if wr and wr > price and wr != sr_resist: - candidate_targets.append(wr) - if sr_resist and sr_resist > price: - candidate_targets.append(sr_resist) - # 检查有效区间,如果有更高的自然目标位 - if effective_range and price < effective_range * 0.9: - candidate_targets.append(effective_range) - - found = False - for level in candidate_targets: - if (level - price) >= min_target_distance: - new_target = level - found = True - break - - # 如果仍然不满足,检查是否至少能到 1:1.5 - min15_distance = stop_distance * 1.5 - if not found: - for level in candidate_targets: - if (level - price) >= min15_distance: - new_target = level - found = True - break - - # ----- 风险回报比最终计算 ----- - risk = max(price - new_stop, price * 0.01) - reward = max(new_target - price, 0) - rr_ratio = reward / risk if risk > 0 else 0 - - # ----- 状态判断 ----- - if is_deep_loss: - status = "updated" - action_note = "深套持有" - elif is_new_entry: - if rr_ratio < 1.5: - status = "review" - action_note = "⚠️盈亏比不足1:1.5,不建议买入" - elif rr_ratio < 2.0: - status = "updated" - action_note = "⚠️盈亏比偏低(1:{:.1f}),谨慎买入".format(rr_ratio) - else: - status = "updated" - action_note = "" - else: - if rr_ratio < 0.5: - status = "updated" - action_note = "⚠️盈亏比极低,关注" - elif rr_ratio < 1.5: - status = "updated" - action_note = "⚠️盈亏比偏低(1:{:.1f}),不建议加仓".format(rr_ratio) - else: - status = "updated" - action_note = "" - - # 短炒+强趋势:在action_note追加标记 - if is_short_term_strong_trend and not is_new_entry and not is_deep_loss: - extra_note = "短炒强趋势持" if "深套" not in action_note else "" - if extra_note: - action_note = f"{action_note} | {extra_note}" if action_note else extra_note - - # ----- 买入区间(有盈亏比严格约束) ----- - max_acceptable_entry = None # 最大可接受买入价(满足R/R约束) - - if new_target and new_stop and new_target > new_stop and not is_deep_loss: - # 买入价的R/R约束: - # 要求 (target - entry) / (entry - stop) >= min_rr - # 即 entry <= (target + min_rr * stop) / (1 + min_rr) - min_rr = 1.0 # 至少1:1,才不亏 - recommend_rr = 1.5 # 推荐1:1.5以上 - - max_for_recommend = (new_target + recommend_rr * new_stop) / (1 + recommend_rr) - max_for_neutral = (new_target + min_rr * new_stop) / (1 + min_rr) - - if is_new_entry: - # 新买入:要求1:1.5+ - max_acceptable_entry = max_for_recommend - else: - # 已持仓加仓:至少1:1 - max_acceptable_entry = max_for_neutral - - if is_new_entry: - # 新买入:买入区 = 弱支撑附近(不是当前价附近!) - # 只在价格跌到弱支撑附近时才推买入 - entry_low = round(price * 0.98, 2) - entry_high = round(price * 1.02, 2) - if max_acceptable_entry and entry_high > max_acceptable_entry: - entry_high = round(max_acceptable_entry, 2) - # 确保买入区不小于1% - if entry_high - entry_low < price * 0.01: - if max_acceptable_entry and price <= max_acceptable_entry: - entry_low = round(max(price * 0.99, new_stop), 2) - entry_high = round(min(price * 1.01, max_acceptable_entry), 2) - elif ws and ws > 0 and wr and wr > 0 and not is_deep_loss: - # 已持仓正常:买入区 = 弱支撑~弱支撑上方5%(给合理回调空间) - # 上限不能低于成本价×0.95(保护已有持仓不被高位逼空) - entry_low = round(ws, 2) - entry_max = round(ws * 1.05, 2) # 比弱支撑高5%,有足够空间 - # 如果当前价已远离买入区,保持买入区不变(不因价格涨了就收窄) - min_upper = round(cost * 0.95, 2) if cost > 0 else 0 - if entry_max < min_upper: - entry_max = min_upper - if max_acceptable_entry: - entry_high = round(min(entry_max, max_acceptable_entry), 2) - else: - entry_high = entry_max - # 如果当前价已远离买入区(高于买入区上沿),禁止加仓推荐 - if price > entry_high: - # 买入区锁定在弱支撑位,但标记为"价格远离" - pass - # 如果买入区过窄,标记但不扩展(加仓必须在支撑位) - if entry_high - entry_low < price * 0.005: - entry_low = round(ws * 0.995, 2) - entry_high = round(ws * 1.005, 2) - else: - entry_low = round(price * 0.90, 2) - entry_high = round(price * 1.05, 2) - - # 买入区间稳定性保护:上边界单次变动不超过5% - if 'entry_high' in dir() and entry_high: - # 读取当前策略中已有的买入区上界,如果有且变化过大则限制 - old_entry_high = None - if 'current_action' in dir() and current_action: - import re - m = re.search(r'买入区[\d.]+~([\d.]+)', current_action) - if m: - old_entry_high = float(m.group(1)) - if old_entry_high and old_entry_high > 0: - max_change = old_entry_high * 0.95 # 单次最多下降5% - if entry_high < max_change: - entry_high = round(max_change, 2) - - # ----- 买入时机信号(三维分析:大盘+行业+个股,基本面+消息面+技术面+资金流)----- - # [2026-07-01] 扩展:不再只看volume_signal + candlestick_sentiment - # 融合大盘趋势、行业板块强弱、基本面估值作为修正因子 - volume_signal = vol.get("volume_signal", "") - candlestick_sentiment = candle.get("sentiment", "neutral") - - # ----- 深度量价分析(2026-07-08 新增:放量建仓/出货/洗盘检测)----- - deep_vol = {} - vol_pattern_note = "" - try: - from technical_analysis import analyze_volume_deep - deep_vol = analyze_volume_deep(code) - if deep_vol.get("volume_signal"): - vp = deep_vol.get("price_vol_description", "") - patterns = deep_vol.get("patterns", {}) - vol_pattern_note = vp - # 合并到volume_signal - if volume_signal: - volume_signal += f" | {vp}" if vp else "" - else: - volume_signal = vp or "" - except Exception: - pass - - timing_signal = "neutral" - - # --- 三维分析数据装载 --- - # 因子1: 大盘环境(从macro_context_log读) - market_bearish = False - market_bullish = False - try: - import sqlite3 - _db = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) - _mc = _db.execute( - "SELECT structure FROM macro_context_log WHERE has_valid_data=1 ORDER BY rowid DESC LIMIT 1" - ).fetchone() - if _mc and _mc[0]: - _s = json.loads(_mc[0]) - _overall = _s.get("overall", "") - if "bearish" in _overall: - market_bearish = True - elif _overall == "bullish": - market_bullish = True - _db.close() - except Exception: - pass - - # 因子2: 行业板块强弱 - sector_strong = False - sector_weak = False - try: - _db2 = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) - _rows2 = _db2.execute( - "SELECT name, change_pct FROM sector_snapshots ORDER BY change_pct DESC" - ).fetchall() - if _rows2: - # 找到该股所属行业(简单匹配name或通过stock_sectors) - _my_sectors = _db2.execute( - "SELECT sector_name FROM stock_sectors WHERE code=?", - (code,) - ).fetchall() - if _my_sectors: - for (_sn,) in _my_sectors: - for r_name, r_chg in _rows2: - if _sn in r_name or r_name in _sn: - _rank = [r[0] for r in _rows2].index(r_name) if r_name in [x[0] for x in _rows2] else -1 - _total = len(_rows2) - if _rank >= 0: - if _rank < _total * 0.2: - sector_strong = True - if _rank > _total * 0.8: - sector_weak = True - break - _db2.close() - except Exception: - pass - - # 因子3: 基本面估值 - is_value_stock = False - try: - _db3 = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) - _fd = _db3.execute( - "SELECT pe, eps FROM stock_fundamentals WHERE code=?", (code,) - ).fetchone() - if _fd: - _pe, _eps = _fd - is_value_stock = (0 < (_pe or 0) < 25 and (_eps or 0) > 0.3) - _db3.close() - except Exception: - pass - - # --- 三维修正规则 --- - # 大盘偏弱时收紧买入信号,大盘偏强时放宽 - # 行业领先加分,行业落后减分 - # 低估值加分(有安全边际) - - def _adjust_timing(signal, market_b, market_bb, sec_s, sec_w, is_val): - """根据三维因子修正 timing_signal""" - # 大盘偏弱时降级买入信号 - if market_b: - if signal in ("买入", "加仓"): - if not sec_s: # 大盘弱+行业不强→降级 - return "关注" - # 大盘偏强时放宽 - if market_bb: - if signal == "关注" and (sec_s or is_val): - return "买入" - # 行业弱势时降级买入信号 - if sec_w: - if signal in ("买入", "加仓"): - return "关注" - # 行业强势+低估时升级关注 - if sec_s and is_val: - if signal == "关注": - return "买入" - return signal - - if is_new_entry: - # 新买入时机 - if volume_signal == "主动买盘占优" and candlestick_sentiment == "bullish": - timing_signal = "买入" - elif volume_signal == "主动卖盘占优": - timing_signal = "观望" - elif volume_signal == "买卖均衡" and ws and price <= ws * 1.03: - timing_signal = "买入" - elif candlestick_sentiment == "bullish": - timing_signal = "买入" - elif ws and price < ws * 1.02: - timing_signal = "关注" - # 新买入时三维修正:大盘向上+行业强→升级,大盘弱→降级 - _pre_signal = timing_signal - timing_signal = _adjust_timing(timing_signal, market_bearish, market_bullish, - sector_strong, sector_weak, is_value_stock) - if timing_signal != _pre_signal: - print(f" 三维修正(新入): {_pre_signal}→{timing_signal} " - f"| 大盘{'弱' if market_bearish else '强' if market_bullish else '中性'}" - f"| 行业{'强' if sector_strong else '弱' if sector_weak else '中性'}" - f"| 估值{'低' if is_value_stock else '一般'}") - else: - # 已持仓时机(用于加仓/减仓参考) - if is_short_term_strong_trend: - # 短炒+强趋势:强趋势持有,禁止加仓信号 - timing_signal = "持有" - elif profit_pct > 5: - # 已盈利 - if volume_signal == "主动买盘占优": - timing_signal = "持有" - elif volume_signal == "主动卖盘占优" and not is_new_entry: - timing_signal = "关注" - else: - timing_signal = "持有" - elif profit_pct > 0: - # 微盈 - if volume_signal == "主动买盘占优": - timing_signal = "持有" - elif ws and price <= ws * 1.02: - timing_signal = "加仓" - else: - timing_signal = "持有" - else: - # 浮亏 - if volume_signal == "主动卖盘占优" and ss and price <= ss * 1.03: - timing_signal = "关注" - elif volume_signal == "主动买盘占优" and sr_resist and price >= sr_resist * 0.97: - timing_signal = "关注" - elif volume_signal == "买卖均衡" and ws and price <= ws * 1.02: - timing_signal = "加仓" - else: - timing_signal = "持有" - - # ----- 【v3.2新增】分类约束:弱势/深套禁止输出买入/加仓类信号 ----- - if stock_category == "弱势" or is_deep_loss: - buy_signals = ["买入", "加仓", "可追"] - if any(s in timing_signal for s in buy_signals): - old_signal = timing_signal - timing_signal = "弱势持有" if stock_category == "弱势" else "深套持有" - print(f" 分类约束: {stock_category} 原信号\"{old_signal}\" → \"{timing_signal}\"") - - # ----- 构造 action 描述(供 cron prompt 使用) ----- - action_parts = [] - if profit_pct < -20: - action_parts.append("深套持有") - elif profit_pct < -10: - action_parts.append("持有观察") - elif profit_pct < 0: - action_parts.append("持有观察") - elif profit_pct < 5: - action_parts.append("盈利持有") - else: - action_parts.append("盈利良好") - - if action_note: - action_parts.append(action_note) - - # 量价分析描述(如有,注入action) - if vol_pattern_note: - action_parts.append(vol_pattern_note) - - if is_watchlist: - # 自选股(未入场):有止损参考+买入区,内部算RR需要止盈位 - action_parts.append(f"目标参考{new_target}") - action_parts.append(f"止损参考{new_stop}") - action_parts.append(f"买入区{entry_low}~{entry_high}") - elif is_new_entry: - action_parts.append(f"损{new_stop}") - action_parts.append(f"盈{new_target}") - action_parts.append(f"买{entry_low}~{entry_high}") - else: - action_parts.append(f"止损{new_stop}") - action_parts.append(f"目标{new_target}") - action_parts.append(f"买入区{entry_low}~{entry_high}") - - if timing_signal != "neutral": - action_parts.append(f"信号:{timing_signal}") - - new_action = " | ".join(action_parts) - - # 技术面快照 - tech_snapshot = "" - if candle: - tech_snapshot = (f"形态:{candle.get('pattern','?')}/{candle.get('sentiment','?')} " - f"量价:{vol.get('volume_signal','?')} " - f"强撑:{ss} 弱撑:{ws} 弱压:{wr} 强压:{sr_resist}") - # 加入均线信息(如果可用) - try: - dm = mtf_analysis.get("daily", {}).get("mas", {}) - ma_parts = [] - for m in ['ma5', 'ma10', 'ma20', 'ma60']: - v = dm.get(m) - if v: - ma_parts.append(f"{m.upper()}={v}") - if ma_parts: - tech_snapshot += " | " + " ".join(ma_parts) - except (NameError, AttributeError): - pass - - # 多周期快照(追加到 tech_snapshot) - mtf_context = "" - if mtf_adj: - trend_align = mtf_adj.get("trend_alignment", "") - daily_mas = mtf_analysis.get("daily", {}).get("mas", {}) - ma20 = daily_mas.get("ma20") - ma60 = daily_mas.get("ma60") - stop_ref = mtf_adj.get("stop_loss_reference", {}) - take_ref = mtf_adj.get("take_profit_reference", {}) - - parts = [] - if trend_align: - parts.append(trend_align) - if ma20: - parts.append(f"MA20={ma20}") - if ma60: - parts.append(f"MA60={ma60}") - if stop_ref: - parts.append(f"长撑:{stop_ref.get('source','?')}={stop_ref['level']}") - if take_ref: - parts.append(f"长压:{take_ref.get('source','?')}={take_ref['level']}") - mtf_context = " | ".join(parts) - - now_str = datetime.now().strftime('%Y-%m-%d %H:%M') - return { - 'stop_loss': new_stop, - 'take_profit': new_target, - 'entry_low': entry_low, - 'entry_high': entry_high, - 'action': new_action, - 'status': status, - 'tech_snapshot': tech_snapshot, - 'timing_signal': timing_signal, - 'rr_ratio': round(rr_ratio, 2), - 'action_note': action_note, - 'reassessed_at': now_str, - 'multi_tf_context': mtf_context, # 多周期上下文 - 'stock_category': stock_category, # 股票分类:短炒/中短线/中长线/弱势/深套 - 'time_horizon': time_horizon, # 时间跨度 - 'position_advice': position_advice, # 仓位建议 - } - - -def load_stock_news_sentiment(code): - """加载小果消息面情感""" - try: - path = "/home/hmo/web-dashboard/data/xiaoguo_sentiment.json" - if not os.path.exists(path): - return {} - xg = json.load(open(path)) - return xg.get("stocks", {}).get(code, {}) - except Exception: - return {} - - -def load_fundamentals(code): - """加载个股基本面""" - try: - cache = mtf._load_mtf_cache() - return cache.get(code, {}).get("fundamentals", {}) or {} - except Exception: - return {} - - -def _get_portfolio_risk_state(): - """读取 portfolio 组合风险状态(2026-06-23 引擎协调)""" - try: - # 数据一致性检查:警告多副本(2026-06-23 bugfix) - _check_portfolio_consistency() - p = read_portfolio() - pos_pct = p.get('position_pct', 0) - cash = p.get('cash', 0) - holdings = p.get('holdings', []) - weak_cnt = sum(1 for h in holdings if h.get('change_pct', 0) < -15) - total = len(holdings) or 1 - weak_ratio = weak_cnt / total - return { - 'position_pct': pos_pct, - 'cash': cash, - 'is_high_position': pos_pct > 80, - 'is_very_high_position': pos_pct > 90, - 'is_high_weak': weak_ratio > 0.35, - 'weak_ratio': round(weak_ratio * 100), - 'total_holdings': total, - } - except: - return {} - - -def _is_buy_signal(signal): - """判断信号是否为买入/持有类(用于防洗盘)""" - if not signal: - return False - buy_keywords = ['买入', '持有', '加仓', '关注'] - for kw in buy_keywords: - if kw in signal: - return True - return False - - -def _check_portfolio_consistency(): - """数据一致性检查:如果存在多份 portfolio.json 则报警(2026-06-23 bugfix)""" - main = '/home/hmo/web-dashboard/data/portfolio.json' - main_cash = None - try: - import json - main_cash = json.load(open(main)).get('cash') - except Exception: - return - for path in [ - '/home/hmo/data/portfolio.json', - '/home/hmo/projects/MoFin/data/portfolio.json', - '/home/hmo/web-dashboard.bak/data/portfolio.json', - ]: - if os.path.exists(path): - try: - other = json.load(open(path)) - if other.get('cash') != main_cash: - print(f"⚠️ 数据一致性: {os.path.realpath(path)} cash={other.get('cash')} ≠ 主文件 cash={main_cash} (需清理)", file=sys.stderr) - except Exception: - pass - - -def _check_contradiction(code, today_only=True): - """反馈循环核——检查本股是否有刚卖出的记录 - - 返回 dict or None: - - sold_reason: 'portfolio_trim'|'stop_loss' - - sold_at: 卖出日期 - - days_ago: 卖出距今交易日数 - - is_today: 是否今日卖出 - - tag: 追加到信号的标注 - """ - try: - from datetime import datetime, date - dec = read_decisions() - for e in dec.get('decisions', []): - if e.get('code') != code: - continue - sold_at = e.get('sold_at', '') - if not sold_at: - return None - try: - sd = datetime.strptime(sold_at, '%Y-%m-%d').date() - td = date.today() - days = (td - sd).days - except: - return None - - reason = e.get('sold_reason', 'portfolio_trim') - if reason == 'stop_loss': - tag = '止损离场(逻辑破坏,短期不关注)' - else: - tag = '组合减仓后关注(已清仓,等回踩确认)' - - return { - 'sold_reason': reason, - 'sold_at': sold_at, - 'days_ago': days, - 'is_today': days == 0, - 'tag': tag, - } - except: - return None - return None - - -def _get_sell_priority_list(): - """减仓优先级排序:深套>亏损>微盈>盈利(2026-06-23 反馈循环) - - 返回 [(code, name, change_pct, position_pct, priority_label), ...] - 按卖出的优先顺序排列(最先应该卖的在最前) - """ - try: - p = read_portfolio() - holdings = p.get('holdings', []) - ranked = [] - for h in holdings: - chg = h.get('change_pct', 0) - pos = h.get('position_pct', 0) - if chg < -30: - label = '深套(>30%),优先减' - rank = 0 - elif chg < -20: - label = '深套(>20%),优先减' - rank = 1 - elif chg < -10: - label = '亏损,建议减' - rank = 2 - elif chg < 0: - label = '微亏,可减' - rank = 3 - elif chg < 10: - label = '微盈,持有' - rank = 4 - else: - label = '盈利,最后减' - rank = 5 - ranked.append((rank, h['code'], h.get('name',''), chg, pos, label)) - ranked.sort(key=lambda x: (x[0], -x[4])) # 优先 rank, 其次仓位大优先 - return [{'code':c,'name':n,'change_pct':chg,'position_pct':pos,'label':l} - for r,c,n,chg,pos,l in ranked] - except: - return [] - - -def enrich_timing_signal(base_signal, macro_desc="", sector_note="", - profit_pct=0, stock_category="", is_new_entry=False, - fundamentals=None, news_sentiment=None, - timing_signal_override=None, - portfolio_context=None, - rr_ratio=0): # 2026-06-24 新参:盈亏比约束 - """多因子合成timing_signal——大盘+行业+基本面+技术+组合风险+盈亏比 - - 返回 (enriched_signal, factors_list) - - enriched_signal: 可读的多因子信号描述 - - factors_list: 各因子的摘要列表(用于后续显示) - """ - # 如果已手动设定,尊重手动 - if timing_signal_override and timing_signal_override != "neutral": - return timing_signal_override, [timing_signal_override] - - factors = [] - - # 1. 大盘因子 - if "偏强" in macro_desc or "大涨" in macro_desc or "bullish" in macro_desc.lower(): - macro_txt = "大盘偏强" - factors.append(macro_txt) - elif "偏弱" in macro_desc or "大跌" in macro_desc or "bearish" in macro_desc.lower(): - macro_txt = "大盘偏弱" - factors.append(macro_txt) - elif macro_desc and macro_desc != "宏观未加载": - factors.append("大盘中性") - - # 2. 行业因子 - if sector_note: - # 把"行业X大跌3%+"简化为"行业偏弱","行业X大涨3%+"简化为"行业偏强" - if "大跌" in sector_note or "下跌" in sector_note: - factors.append("行业偏弱") - elif "大涨" in sector_note: - factors.append("行业偏强") - elif "上涨" in sector_note: - factors.append("行业偏强") - else: - factors.append("行业中性") - - # 3. 基本面因子 - if fundamentals: - pe = fundamentals.get("pe", 0) - eps = fundamentals.get("eps", 0) - profit_growth = fundamentals.get("profit_growth", fundamentals.get("yoy_profit", "")) - revenue_growth = fundamentals.get("revenue_growth", fundamentals.get("yoy_revenue", "")) - mcap = fundamentals.get("mcap_total", 0) - - pe = pe or 0 - eps = eps or 0 - profit_growth_str = str(profit_growth or "") - revenue_growth_str = str(revenue_growth or "") - - # 净利增长 - for val in [profit_growth_str, revenue_growth_str]: - try: - v = float(val.replace("%", "").replace("+", "")) - if v > 50: - factors.append("净利增50%+") - break - elif v > 20: - factors.append(f"净利增{int(v)}%") - break - elif v < -20: - factors.append("净利降20%+") - break - except (ValueError, AttributeError): - continue - - # PE估值 - if 0 < pe < 15: - factors.append("低估值") - elif pe > 100 or pe < 0: - factors.append("高估值") - - # 市值 - if mcap and mcap > 5000: - factors.append("蓝筹") - - # 4. 消息面因子(小果情感) - if news_sentiment: - ns = news_sentiment.get("sentiment", "") - nc = news_sentiment.get("confidence", 0) - if ns == "positive" and nc >= 0.7: - kws = news_sentiment.get("keywords", []) - kw_str = f"({'/'.join(kws[:3])})" if kws else "" - factors.append(f"消息偏多{kw_str}") - elif ns == "negative" and nc >= 0.7: - kws = news_sentiment.get("keywords", []) - kw_str = f"({'/'.join(kws[:3])})" if kws else "" - factors.append(f"消息偏空{kw_str}") - - # 5. 技术面(基础信号) - if base_signal and base_signal != "neutral": - factors.append(base_signal) - - # 5.5 组合风险因子(2026-06-23 双引擎协调) - if portfolio_context and not is_new_entry: - if portfolio_context.get('is_very_high_position'): - factors.append("组合仓位极重(>90%)") - elif portfolio_context.get('is_high_position'): - factors.append("组合仓位偏重(>80%)") - if portfolio_context.get('is_high_weak'): - factors.append(f"弱势占{portfolio_context.get('weak_ratio')}%") - elif portfolio_context and is_new_entry: - # 新买入推荐:注明组合上下文 - if portfolio_context.get('is_high_position'): - factors.append(f"仓{portfolio_context.get('position_pct')}%现金有限") - elif portfolio_context.get('is_high_weak'): - factors.append("组合风险信号") - - # 5.7 盈亏比因子(2026-06-24 新增——RR<1.5降级买入信号) - if rr_ratio > 0: - if rr_ratio < 1.5: - factors.append(f"RR{rr_ratio}过低") - elif rr_ratio >= 3: - factors.append(f"RR{rr_ratio}") - # 1.5~3之间:中性,不特别标注 - - # 如果没有足够因素,返回信号不充分 - if not factors: - return "信号不充分", [] - - # 信号只应包含明确的买卖方向,不能从行业/大盘等上下文因子拼凑 - # base_signal 存在且非 neutral → 用 base_signal - # 否则 → 信号不充分(不拿 factors[-1] 当信号) - if base_signal and base_signal != "neutral": - clean_signal = base_signal - else: - # 从 factors 中找第一个有效的操作方向信号 - valid_direction = {"买入", "加仓", "观望", "持有", "关注", "信号不充分"} - signal_found = "" - for f in reversed(factors): - if f in valid_direction: - signal_found = f - break - clean_signal = signal_found if signal_found else "信号不充分" - - # 6. RR约束降级(2026-06-24 新增) - # 买入/加仓信号但RR<1.5 → 降级为"信号不充分" - buy_signals = {"买入", "加仓"} - if clean_signal in buy_signals and 0 < rr_ratio < 1.5: - clean_signal = "信号不充分" - factors.append("RR过低降级") - - return clean_signal, factors - - -def reassess_with_context(code, name, price, cost, shares, current_action, - volume_signal="", sentiment="neutral", is_watchlist=False): - """reassess_strategy + 多因子信号合成(大盘+行业+技术) - - 为 per_stock_reassess 等单只场景提供一站式多因子分析 - """ - result = reassess_strategy( - code, name, price, cost, shares, - current_action, volume_signal, sentiment, is_watchlist - ) - if not result: - return result - - # 加载宏观+行业+消息+基本面上下文 - try: - macro_bias, macro_desc = load_macro_context() - market_ctx = load_market_context() - stock_sector_map = load_stock_sector_map() - sector_adj = compute_sector_adjustment(code, market_ctx, stock_sector_map) - sector_note = sector_adj.get("note", "") - news_sentiment = load_stock_news_sentiment(code) - fund = load_fundamentals(code) - except Exception: - macro_desc = "" - sector_note = "" - news_sentiment = {} - fund = {} - - # ── DSA 集成:注入大盘复盘 + 新闻情报 ────────────────────────── - try: - from mo_bridge import enrich_analysis_context - region = "hk" if len(str(code)) == 5 and str(code)[0] in ('0','1') else "cn" - dsa_ctx = enrich_analysis_context(stock_code=code, stock_name=name, - region=region, include_news=True) - if dsa_ctx: - macro_desc = (macro_desc + "\n\n" + dsa_ctx).strip() - except Exception: - pass # DSA 不可用时静默跳过 - - enriched, factors = enrich_timing_signal( - base_signal=result.get("timing_signal", ""), - macro_desc=macro_desc, - sector_note=sector_note, - profit_pct=(price - cost) / cost * 100 if cost else 0, - stock_category=result.get("stock_category", ""), - is_new_entry=is_watchlist, - fundamentals=fund, - news_sentiment=news_sentiment, - portfolio_context=_get_portfolio_risk_state(), - rr_ratio=result.get("rr_ratio", 0), - ) - result["timing_signal"] = enriched - result["signal_factors"] = factors - - # 6. 防洗盘:信号不要一天一翻(2026-06-23) - # 如果旧信号是买入/持有类,新信号是谨慎/等待类,但中期趋势未破→维持旧信号 - try: - dec = read_decisions() - for e in dec.get('decisions', []): - if e.get('code') == code: - old_signal = e.get('timing_signal', '') - if old_signal and _is_buy_signal(old_signal) and not _is_buy_signal(enriched): - # 中等趋势检查:MA5 > MA20 + 多周期看多 - mtf = result.get('multi_tf_context', '') - if '看多' in mtf or '多头' in mtf: - try: - closes = [float(k.split()[2]) for k in mtf.split('|') if 'MA5' in k] - except: - closes = [] - has_uptrend = 'MA5' in mtf and 'MA20' in mtf - if has_uptrend: - print(f" 防洗盘: {old_signal}→保持旧信号(中期趋势完整)") - result["timing_signal"] = f"{old_signal}(正常回调价稳)" - sf = result.get("signal_factors") or [] - if "正常回调价稳" not in sf: - result["signal_factors"] = sf + ["正常回调价稳"] - break - except Exception as e: - print(f" 防洗盘跳过: {e}") - - # 7. 反馈循环核:检查本股是否有刚卖出的记录(2026-06-23) - contradiction = _check_contradiction(code) - if contradiction and contradiction.get('is_today'): - # 今日刚卖出 → 不屏蔽信号,但必须自标注矛盾 - print(f" 反馈循环: {contradiction.get('tag')} (sold_at={contradiction.get('sold_at')})") - if _is_buy_signal(result.get('timing_signal', '')): - result['action_note'] = contradiction['tag'] - # 在 timing_signal 中追加反馈标注,供报告层可见 - curr_signal = result.get('timing_signal', '') - if '⚠️' not in curr_signal: - result['timing_signal'] = f"⚠️{contradiction['tag']}|{curr_signal}" - elif contradiction: - # 非今日卖出但近期卖出 → 标注已清仓 - print(f" 近期清仓: sold_at={contradiction.get('sold_at')} ({contradiction.get('days_ago')}日前)") - if _is_buy_signal(result.get('timing_signal', '')): - curr_signal = result.get('timing_signal', '') - if '已清仓' not in curr_signal: - result['timing_signal'] = f"已清仓,{curr_signal}" - - # 重建 action 文本(同步多因子信号) - try: - if new_action_needs_refresh(result, {"source": "auto"}, price): - _refresh_action_text(result, price, name) - except Exception: - pass - - # ── 策略质量门禁 ── - enforce_strategy_quality(code, name, result) - - return result - - -def new_action_needs_refresh(result, old_entry, price): - """判断宏观/行业调整后是否需要刷新action文本""" - # 自选股和手动策略不做调整,不需要刷新 - if old_entry.get("source") == "manual": - return False - return True - - -def _refresh_action_text(result, price, name): - """根据调整后的止损/止盈重建action文本""" - sl = result.get("stop_loss", 0) - tp = result.get("take_profit", 0) - el = result.get("entry_low", 0) - eh = result.get("entry_high", 0) - ts = result.get("timing_signal", "") - an = result.get("action_note", "") - old_action = result.get("action", "") - - # 保持原action的前缀(持有状态部分不变) - # action格式一般是: "状态 | 止损X | 目标Y | 买入区X~Y | 信号:Z" - parts = old_action.split(" | ") - new_parts = [] - for p in parts: - p = p.strip() - # 替换止损数字 - if p.startswith("止损") or p.startswith("止损参考"): - if sl: - p = f"止损{sl}" if "止损参考" not in old_action.split(" | ")[0] else f"止损参考{sl}" - # 替换目标/止盈数字 - if p.startswith("目标") or p.startswith("止盈"): - if tp: - p = f"目标{tp}" - # 替换买入区数字 - if "买入区" in p and "~" in p: - if el and eh: - p = f"买入区{el}~{eh}" - new_parts.append(p) - result["action"] = " | ".join(new_parts) - - -def check_sector_alerts(market_ctx, stock_sector_map, holdings, wl): - """行业轮动主动预警:检测板块崩盘级别信号→查持仓→输出预警 - - 返回 list of alerts: [{code, name, sector, chg, action}] - """ - alerts = [] - if not market_ctx: - return alerts - - sector_perf = market_ctx.get("sector_perf", {}) - - # 找出所有跌幅>3%的行业 - crashing_sectors = {name: data for name, data in sector_perf.items() - if data.get("change", 0) <= -3} - - if not crashing_sectors: - return alerts - - # 构建 code→持仓信息 的映射 - holding_map = {} - for h in holdings: - c = h.get("code", "") - if c: - holding_map[c] = {"name": h.get("name", c), "type": "持仓"} - for s in wl.get("stocks", []): - c = s.get("code", "") - if c and c not in holding_map: - holding_map[c] = {"name": s.get("name", c), "type": "自选"} - - # 对每个暴跌行业,查持仓中是否有股票属于该行业 - for sec_name, sec_data in sorted(crashing_sectors.items(), - key=lambda x: x[1].get("change", 0)): - chg = sec_data.get("change", 0) - for code, sectors in stock_sector_map.items(): - if code in holding_map and sec_name in sectors: - info = holding_map[code] - alerts.append({ - "code": code, - "name": info["name"], - "sector": sec_name, - "sector_change": chg, - "type": info["type"], - "action": f"行业{sec_name}跌{chg:+.1f}%,{info['type']}需关注", - }) - - alerts.sort(key=lambda a: a["sector_change"]) - return alerts - - -def regenerate_all(stdout=True): - """全量重评所有持仓+自选策略""" - # 优先从 SQLite 读取 - try: - from mofin_db import get_conn, query_holdings, query_watchlist - conn = get_conn() - holdings = query_holdings(conn) - wl_stocks = query_watchlist(conn) - conn.close() - pf = {"holdings": holdings} - wl = {"stocks": wl_stocks} - except Exception: - try: - pf = read_portfolio() - wl = read_watchlist() - except Exception: - pf = {} - wl = {} - - all_stocks = {} - for item in pf.get("holdings", []): - code = item.get("code", "") - if code: - all_stocks[code] = {"source": "portfolio", "data": item} - for item in wl.get("stocks", []): - code = item.get("code", "") - if code and code not in all_stocks: - all_stocks[code] = {"source": "watchlist", "data": item} - - total = len(all_stocks) - ok = 0 - errors = 0 - results = [] - decisions = [] - - # 加载现有 decisions.json 以便追踪变更 - decisions_path = "/home/hmo/web-dashboard/data/decisions.json" - try: - existing_decisions = {d["code"]: d for d in read_decisions().get("decisions", []) if d.get("code")} - except: - existing_decisions = {} - - # 加载宏观上下文(影响策略参数调整) - macro_bias, macro_desc = load_macro_context() - if stdout: - print(f" 宏观参考: {macro_desc} (bias={macro_bias})") - - # 加载市场上下文 — 行业板块表现 + 大盘宽度(策略参数调整用) - market_ctx = load_market_context() - stock_sector_map = load_stock_sector_map() - market_breadth = market_ctx.get("breadth", 50) - market_mood = market_ctx.get("mood", "neutral") - if stdout: - sectors_found = sum(1 for c in all_stocks if stock_sector_map.get(c)) - print(f" 市场参考: {market_mood} 上涨比{market_breadth}% 已匹配{sectors_found}/{total}只个股行业") - - # 批量预取所有价格(一次API调用 vs 之前N次) - prices_map = batch_fetch_prices(list(all_stocks.keys())) - if stdout: - print(f" 批量获取价格: {len(prices_map)}/{total} 成功") - - for code, info in sorted(all_stocks.items()): - stock = info["data"] - name = stock.get("name", code) - cost = stock.get("cost", 0) or 0 - shares = stock.get("shares", 0) or 0 - source = info["source"] - - q = prices_map.get(code) - if not q or not q.get("price"): - results.append({"code": code, "name": name, "error": "腾讯API无数据"}) - errors += 1 - if stdout: - print(f" ❌ {name}({code}): 腾讯API无数据") - continue - - price = q["price"] - profit_pct = (price - cost) / cost * 100 if cost else 0 - current_action = stock.get("analysis", {}).get("action", "") - close_yest = q.get("close", 0) - sentiment = "neutral" - if close_yest and price > close_yest * 1.02: - sentiment = "bullish" - elif close_yest and price < close_yest * 0.98: - sentiment = "bearish" - - try: - is_wl = (source == "watchlist") - result = reassess_strategy( - code, name, price, cost, shares, - current_action, volume_signal="中性", sentiment=sentiment, - is_watchlist=(source == "watchlist"), - ) - - # --- Manual param preservation: 用户手动策略永不覆盖 --- - old_entry = existing_decisions.get(code, {}) - if old_entry.get("source") == "manual": - # 仅覆盖策略参数,技术分析/信号/价格照常保留 - for key in ["entry_low", "entry_high", "stop_loss", "take_profit"]: - if key in old_entry and old_entry[key] is not None: - result[key] = old_entry[key] - # 重算盈亏比(基于手动参数) - manual_stop = result.get("stop_loss", 0) or 0 - manual_target = result.get("take_profit", 0) or 0 - risk = max(price - manual_stop, price * 0.01) if manual_stop > 0 else price * 0.01 - reward = max(manual_target - price, 0) if manual_target > 0 else 0 - result["rr_ratio"] = round(reward / risk, 2) if risk > 0 else 0 - # 重建 action 文本(引用手动参数,不引用自动计算的) - profit_pct = (price - cost) / cost * 100 if cost else 0 - manual_action_parts = [] - if profit_pct < -20: - manual_action_parts.append("深套持有") - elif profit_pct < -10: - manual_action_parts.append("持有观察") - elif profit_pct < 0: - manual_action_parts.append("持有观察") - elif profit_pct < 5: - manual_action_parts.append("盈利持有") - else: - manual_action_parts.append("盈利良好") - if result.get("action_note"): - manual_action_parts.append(result["action_note"]) - if is_wl: - if manual_stop > 0: - manual_action_parts.append(f"止损参考{manual_stop}") - manual_action_parts.append(f"买入区{result['entry_low']}~{result['entry_high']}") - else: - if manual_stop > 0: - manual_action_parts.append(f"止损{manual_stop}") - if manual_target > 0: - manual_action_parts.append(f"目标{manual_target}") - manual_action_parts.append(f"买入区{result['entry_low']}~{result['entry_high']}") - ts = result.get("timing_signal", "") - if ts and ts != "neutral": - manual_action_parts.append(f"信号:{ts}") - result["action"] = " | ".join(manual_action_parts) - result["status"] = "manual" # 标记为手动管理,变更追踪不受影响 - if stdout: - print(f" [手动保留] {name}({code}) 策略参数未覆盖") - - # 宏观偏差调整:收盘后重评时根据宏观方向微调止损/止盈 - # 自选股不做止盈宏观调整(无持仓) - # 手动策略不做宏观偏差调整(尊重用户设定) - if macro_bias != 1.0 and not is_wl and old_entry.get("source") != "manual": - old_stop = result.get("stop_loss", 0) - old_target = result.get("take_profit", 0) - if macro_bias < 1.0 and old_stop > 0: # 宏观偏弱 → 收紧止损 - # 止损上移(但保留最小3%间距) - adjusted_stop = round(old_stop * (1 + (1 - macro_bias) * 0.3), 2) - min_stop = round(price * 0.97, 2) - result["stop_loss"] = min(adjusted_stop, min_stop) - if old_target > 0: - result["take_profit"] = round(old_target * (1 - (1 - macro_bias) * 0.2), 2) - elif macro_bias > 1.0 and old_target > 0: # 宏观偏强 → 止盈上调让利润跑 - result["take_profit"] = round(old_target * (1 + (macro_bias - 1) * 0.3), 2) - - # 行业偏差调整:根据个股所在行业的市场表现微调止损/止盈 - # 手动策略不做行业调整(尊重用户设定) - sector_adj = compute_sector_adjustment(code, market_ctx, stock_sector_map) - sector_note = sector_adj.get("note", "") - if sector_note and old_entry.get("source") != "manual": - old_stop = result.get("stop_loss", 0) - old_target = result.get("take_profit", 0) - stop_bias = sector_adj.get("stop_bias", 1.0) - target_bias = sector_adj.get("target_bias", 1.0) - if stop_bias != 1.0 and old_stop > 0: - # 行业偏差调整(在宏观调整之后叠加) - adjusted = round(old_stop * stop_bias, 2) - # 保留最小3%间距 - min_stop = round(price * 0.97, 2) - result["stop_loss"] = min(adjusted, min_stop) - if target_bias != 1.0 and old_target > 0 and not is_wl: - result["take_profit"] = round(old_target * target_bias, 2) - - # 加载消息面+基本面(逐个股) - news_sentiment = load_stock_news_sentiment(code) - fund = load_fundamentals(code) - - # 多因子合成 timing_signal:大盘+行业+消息+基本面+技术 - if old_entry.get("source") != "manual": - enriched, _ = enrich_timing_signal( - base_signal=result.get("timing_signal", ""), - macro_desc=macro_desc, - sector_note=sector_note, - profit_pct=profit_pct, - stock_category=result.get("stock_category", ""), - is_new_entry=(source == "watchlist"), - fundamentals=fund, - news_sentiment=news_sentiment, - rr_ratio=result.get("rr_ratio", 0), - ) - result["timing_signal"] = enriched - - # 在宏观/行业/多因子调整后重建 action 文本(同步调整后的止损/止盈数字) - if new_action_needs_refresh(result, old_entry, price): - _refresh_action_text(result, price, name) - - extra = { - "rr_ratio": result.get("rr_ratio"), - "action_note": result.get("action_note", ""), - "timing_signal": result.get("timing_signal", ""), - } - analysis = { - "stop_loss": result["stop_loss"], - "take_profit": result["take_profit"], - "entry_low": result["entry_low"], - "entry_high": result["entry_high"], - "action": result["action"], - "tech_snapshot": result.get("tech_snapshot", ""), - "multi_tf_context": result.get("multi_tf_context", ""), - "reassessed_at": result["reassessed_at"], - "status": result["status"], - **extra, - } - stock["analysis"] = analysis - # 同步 top-level 字段 → zone_breach/price_monitor 依赖这些字段 - # (2026-06-24 bugfix: analysis 子对象有但顶层没有,导致新持仓的止损检测盲区) - stock["stop_loss"] = result.get("stop_loss", 0) - stock["take_profit"] = result.get("take_profit", 0) - stock["entry_low"] = result.get("entry_low", 0) - stock["entry_high"] = result.get("entry_high", 0) - # 同步 trigger 字段 -> price_monitor 依赖 - sl = result.get("stop_loss", 0) - tp = result.get("take_profit", 0) - el = result.get("entry_low", 0) - eh = result.get("entry_high", 0) - trig = {} - if sl and float(sl) > 0: - trig["stop_loss"] = float(sl) - if el and eh and float(el) > 0 and float(eh) > 0: - trig["entry_zone"] = f"{float(el)}~{float(eh)}" - if tp and float(tp) > 0: - trig["take_profit_zone"] = f"0~{float(tp)}" - stock["trigger"] = trig - results.append({ - "code": code, "name": name, - "price": price, "cost": cost, - "action": result["action"], - "stop_loss": result["stop_loss"], - "take_profit": result["take_profit"], - "rr_ratio": result["rr_ratio"], - }) - ok += 1 - if stdout: - rr_str = f" RR={result['rr_ratio']}" if "rr_ratio" in result else "" - print(f" ✅ {name}({code}) {price} {result['action']}{rr_str}") - - # 记录所有股票的决策日志(含变更追踪) - status_display = result.get("status", "active") - # 构建行业上下文 - sector_ctx_str = "" - sec_name = sector_adj.get("sector_name", "") - sec_chg = sector_adj.get("sector_change", 0) - if sec_name: - sector_ctx_str = f"行业{sec_name}{sec_chg:+.1f}%" - if sector_adj.get("note"): - # note 已包含大盘宽度信息 - sector_ctx_str = sector_adj["note"] - elif market_breadth < 40: - # 无行业映射时至少记录大盘宽度 - sector_ctx_str = f"大盘上涨比{market_breadth}%" - new_entry = { - "code": code, "name": name, "price": price, - "cost": old_entry.get("cost", cost) if old_entry else cost, # 优先保留旧成本(holding.xls权威) - "shares": shares, # 当前实际持仓股数(不继承旧决策的可能为0的值) - "avg_price": old_entry.get("avg_price", 0), # 保留持仓均价 - "currency": "HKD" if is_hk_stock(str(code)) else "CNY", - "action": result["action"], - "stop_loss": result.get("stop_loss"), - "entry_low": result["entry_low"], - "entry_high": result["entry_high"], - "tech_snapshot": result.get("tech_snapshot", ""), - "timing_signal": result.get("timing_signal", ""), - "rr_ratio": result.get("rr_ratio", 0), - "status": status_display, - "note": result.get("action_note", ""), - "timestamp": result["reassessed_at"], - "updated_at": result["reassessed_at"], - "type": "自选策略" if is_wl else "持仓策略", - "source": old_entry.get("source", "auto"), # manual/auto,继承旧标记 - "sector_context": sector_ctx_str, # 市场上下文:行业表现+大盘宽度 - "stock_category": result.get("stock_category", "中短线"), # 组合监测用 - "position_advice": result.get("position_advice", "中等仓位"), - "time_horizon": result.get("time_horizon", "2周~3月"), - } - new_entry["trigger"] = trig - # created_at: 首次创建时设置,后续 preserve - old_entry = existing_decisions.get(code, {}) - if old_entry.get("created_at"): - new_entry["created_at"] = old_entry["created_at"] - else: - new_entry["created_at"] = result["reassessed_at"] - # 保留 last_reassessed_price(per_stock_reassess 维护的防抖字段) - if old_entry.get("last_reassessed_price"): - new_entry["last_reassessed_price"] = old_entry["last_reassessed_price"] - # 自选股也写止盈位(用于RR校验),但标签用"目标参考"非"止盈" - new_entry["take_profit"] = result.get("take_profit") - - # --- 变更追踪 --- - old_action = old_entry.get("action", "") - old_stop = old_entry.get("stop_loss") - old_target = old_entry.get("take_profit") - - # 构建旧策略摘要和变更理由 - update_reason = "" - changelog_entry = None - - if old_action and old_action != result["action"]: - # 策略有变化 → 记录变更 - old_summary = old_action - new_summary = result["action"] - - # 判断触发原因 - if abs(price - old_entry.get("price", price)) / max(price, 0.01) > 0.03: - trigger = f"价格变动({old_entry.get('price','?')}→{price})" - elif result.get("timing_signal") and result["timing_signal"] != old_entry.get("timing_signal", ""): - trigger = f"技术信号变化: {result['timing_signal']}" - else: - trigger = "技术面重评" - - # 格式化的变更理由(自选股只看止损,不看止盈) - diff_parts = [] - if old_stop and result["stop_loss"] != old_stop: - diff_parts.append(f"止损{old_stop}→{result['stop_loss']}") - if not is_wl and old_target and result.get("take_profit") and result["take_profit"] != old_target: - diff_parts.append(f"止盈{old_target}→{result['take_profit']}") - if diff_parts: - update_reason = f"{trigger}: {', '.join(diff_parts)} | {result.get('tech_snapshot','')[:60]}" - else: - update_reason = f"{trigger}: 策略文字调整" - - changelog_entry = { - "date": result["reassessed_at"], - "old_action": old_action, - "new_action": result["action"], - "reason": update_reason, - "trigger": trigger, - } - new_entry["updated_reason"] = update_reason - - elif not old_action: - # 首次创建策略 - update_reason = f"初始策略创建 | {result.get('tech_snapshot','')[:60]}" - changelog_entry = { - "date": result["reassessed_at"], - "old_action": "", - "new_action": result["action"], - "reason": update_reason, - "trigger": "初始创建", - } - - # 合并changelog - old_changelog = old_entry.get("changelog", []) if old_entry else [] - if changelog_entry: - new_entry["changelog"] = old_changelog + [changelog_entry] - else: - new_entry["changelog"] = old_changelog - - # 保留执行记录 - if old_entry and old_entry.get("execution"): - new_entry["execution"] = old_entry["execution"] - elif stock.get("analysis", {}).get("status") == "executing": - new_entry["execution"] = { - "status": "executing", - "entry_price": cost if cost else 0, - "shares": shares, - "notes": "", - } - - # --- 自动标记 current_recommend --- - # 只在真正执行中的持仓才自动推荐:execution.status 为 executing 或 partial_exit - exec_status = old_entry.get("execution", {}).get("status", "") if old_entry else "" - is_active = exec_status in ("executing", "partial_exit") - - profit_pct = (price - cost) / cost * 100 if cost else 0 - is_deep_loss_stock = profit_pct < -20 - rr = result.get("rr_ratio", 0) - ts = result.get("timing_signal", "") - note = result.get("action_note", "") - - # 计算是否在/接近买入区 - entry_low_val = result.get("entry_low", 0) - entry_high_val = result.get("entry_high", 0) - in_buy_zone = (entry_low_val > 0 and entry_high_val > 0 and - entry_low_val <= price <= entry_high_val) - near_buy_zone_low = (entry_low_val > 0 and - price >= entry_low_val * 0.98 and - price <= entry_high_val) - - # 推荐条件:必须是执行中的持仓 + 基本面条件达标 - is_recommendable = ( - is_active - and not is_deep_loss_stock - and rr >= 1.5 - and ts != "neutral" - and "不建议" not in note - ) - if is_recommendable: - new_entry["tag"] = "current_recommend" - else: - # 不清除 active_manual(用户手动标记),只清除自动推荐的 - old_tag = old_entry.get("tag", "") if old_entry else "" - if old_tag != "active_manual": - new_entry.pop("tag", None) - - decisions.append(new_entry) - - except Exception as e: - results.append({"code": code, "name": name, "error": str(e)}) - errors += 1 - if stdout: - print(f" ❌ {name}({code}): {e}") - - # 写回数据文件 — 保留现有字段(现金、总资产等)不丢 - try: - existing_pf = read_portfolio() - except Exception: - existing_pf = {} - # 保留 price/change_pct — price_monitor 维护的实时价,regenerate_all 不应清除 - _existing_holdings_map = {} - for _h in existing_pf.get('holdings', []): - if _h.get('code'): - _existing_holdings_map[_h['code']] = _h - _new_holdings = pf.get("holdings", []) - for _h in _new_holdings: - _code = _h.get('code') - if _code and _code in _existing_holdings_map: - _old = _existing_holdings_map[_code] - _h['price'] = _old.get('price', 0) - _h['change_pct'] = _old.get('change_pct', 0) - existing_pf["holdings"] = _new_holdings - existing_pf["updated_at"] = datetime.now().strftime('%Y-%m-%d %H:%M') - - # ── Watchlist ↔ Holdings 双向自动迁移(2026-06-27 Dad要求)── - # ① 持仓已有 → 从自选移除(买入自动清除) - wl_codes = {s.get("code") for s in wl.get("stocks", []) if s.get("code")} - pf_codes = {h.get("code") for h in _new_holdings if h.get("code") and h.get("shares", 0) > 0} - removed_from_wl = [] - for h_code in wl_codes & pf_codes: - # 持仓>0且量够 → 自选移除 - wl["stocks"] = [s for s in wl.get("stocks", []) if s.get("code") != h_code] - removed_from_wl.append(h_code) - if removed_from_wl and stdout: - print(f" 自选→持仓自动移除: {', '.join(removed_from_wl)}") - - # ② 清仓/卖光 → 加回自选(只要仍有关注价值) - added_to_wl = [] - old_pf_codes = {_h.get("code") for _h in existing_pf.get("holdings", []) if _h.get("code")} - sold_codes = old_pf_codes - pf_codes # 曾持仓但现在没有(或不在了) - for sc in sold_codes: - # 已有自选就不重复加 - if sc in wl_codes: - continue - # 从现有decisions看是否有关注价值 - for d in decisions: - if d.get("code") == sc and d.get("entry_low") and d.get("entry_high"): - wl["stocks"].append({ - "code": sc, "name": d.get("name", sc), - "entry_low": d.get("entry_low"), "entry_high": d.get("entry_high"), - "stop_loss": d.get("stop_loss", 0), - "analysis": {"action": d.get("action", ""), "tech_snapshot": d.get("tech_snapshot", "")} - }) - added_to_wl.append(sc) - break - if added_to_wl and stdout: - print(f" 清仓→自选自动加入: {', '.join(added_to_wl)}") - - # 重新计算 portfolio 汇总(保留已存在的 cash,用最新价格算市值) - try: - total_mv = 0.0 - total_cost = 0.0 - for h in existing_pf.get('holdings', []): - p = h.get('price') or 0 - s = h.get('shares') or 0 - c = h.get('cost') or 0 - total_mv += p * s - total_cost += c * s - if p and s and total_mv > 0: - h['market_value'] = round(p * s, 2) - old_cash = existing_pf.get('cash') or 80476 # fallback 6/23 backup - frozen_cash = existing_pf.get('frozen_cash') or 0 - existing_pf['cash'] = old_cash - existing_pf['total_mv'] = round(total_mv, 2) - existing_pf['total_assets'] = round(total_mv + old_cash + frozen_cash, 2) - existing_pf['total_pnl'] = round(total_mv - total_cost, 2) - existing_pf['position_pct'] = round(total_mv / (total_mv + old_cash + frozen_cash) * 100, 2) if (total_mv + old_cash + frozen_cash) > 0 else 0 - except Exception as e: - print(f" [汇总计算失败] {e}", flush=True) - - # DB 写入(替代 JSON dump — 强制币种约束) - try: - from mofin_db import get_conn, write_holdings_batch, write_portfolio_summary, write_watchlist_stock, write_holding_strategy - conn = get_conn() - write_holdings_batch(conn, existing_pf.get('holdings', [])) - write_portfolio_summary(conn, existing_pf) - for s in wl.get('stocks', []): - s.setdefault('currency', 'CNY') - write_watchlist_stock(conn, s) - for d in decisions: - # ── 策略质量门禁 ── - code = d.get('code', '') - name = d.get('name', '') - enforce_strategy_quality(code, name, d) - write_holding_strategy(conn, code, name, d) - conn.close() - except Exception as e: - print(f" [DB写入失败] {e}", flush=True) - - # 记录策略→提示词版本关联 - if HAS_PROMPT_TRACKING: - try: - for d in decisions: - if d.get("code") and d.get("action"): - record_strategy_generation( - d["code"], d.get("name", ""), d.get("action", "") - ) - except Exception as e: - if stdout: - print(f" ⚠️ 提示词版本追踪失败: {e}", file=sys.stderr) - - # 刷新多周期缓存到磁盘 - try: - import multi_timeframe as _mtf - _mtf.flush_mtf_cache() - except Exception: - pass - - summary = {"total": total, "ok": ok, "errors": errors} - if stdout: - print(f"\n✅ 全量重评完成: {ok}/{total}成功, {errors}错误") - return summary - - -if __name__ == "__main__": - regenerate_all() +#!/usr/bin/env python3 +"""策略生命周期管理系统 — 技术面驱动版本 v2 + +核心原则: +1. 止损放在合理的技术位,不拍数字 +2. 新买入推荐:止损=弱支撑(约3%跌幅),止盈=强压力,盈亏比≥2:1 +3. 已持仓:止损=强支撑(约5-8%跌幅),目标=强压力 +4. 买入区间:弱支撑~弱压力之间 +5. 买入时机:量价齐跌不买,缩量至支撑买,量价齐升追买 +""" + +import json +import urllib.request +import os +import sys +import re +from datetime import datetime +import technical_analysis as ta +import multi_timeframe as mtf +from mo_data import read_portfolio, read_decisions, read_watchlist, get_price, get_prices_batch +from mo_models import is_hk_stock, to_cny, get_hk_rate +from strategy_tree import detect_scenario + +# ─── 策略准入门禁 — 硬性质量红线 ─────────────────────────────── +# 每一条策略写入前必须过此门禁。不过的不得写入DB/JSON, +# 必须触发重评修复。代码层面硬拦截,不依赖prompt或文档。 +# +# 规则列表 + 严重程度 + 修复建议 +STRATEGY_QUALITY_GATES = [ + { + "id": "GATE_LOSS_EXISTS", + "desc": "止损必须存在且>0", + "check": lambda d: (d.get("stop_loss") or 0) > 0, + "severity": "CRITICAL", + "fix": "调用 technical_analysis 计算支撑位设置止损" + }, + { + "id": "GATE_PROFIT_EXISTS", + "desc": "止盈必须存在且>0(纯自选股可放宽)", + "check": lambda d: (d.get("take_profit") or 0) > 0, + "severity": "CRITICAL", + "fix": "调用 technical_analysis 计算阻力位设置止盈目标" + }, + { + "id": "GATE_SL_GTE_LOW", + "desc": "止损必须 ≤ 买入区下沿", + "check": lambda d: (d.get("stop_loss") or 0) <= (d.get("entry_low") or 99999), + "severity": "HIGH", + "fix": "止损不能高于买入区,调整止损至买入区以下" + }, + { + "id": "GATE_ENTRY_RANGE", + "desc": "买入区下沿 < 上沿", + "check": lambda d: (d.get("entry_low") or 0) < (d.get("entry_high") or 0), + "severity": "CRITICAL", + "fix": "entry_low=现价×0.95, entry_high=现价×1.05 取近似区间" + }, + { + "id": "GATE_RR_COMPUTED", + "desc": "买入推荐必须含RR", + "check": lambda d: not ("买入" in (d.get("timing_signal") or "") or "加仓" in (d.get("timing_signal") or "")) or (d.get("rr_ratio") or 0) > 0, + "severity": "HIGH", + "fix": "RR = (止盈-现价)/(现价-止损),数据齐全后自动算" + }, + { + "id": "GATE_RR_MINIMUM", + "desc": "买入推荐RR≥1.5(非买入信号跳过)", + "check": lambda d: not ("买入" in (d.get("timing_signal") or "") or "加仓" in (d.get("timing_signal") or "")) or (d.get("rr_ratio") or 0) >= 1.5, + "severity": "HIGH", + "fix": "RR不足→signal降级为'信号不充分',不进推荐区" + }, + { + "id": "GATE_SIGNAL_SHORT", + "desc": "timing_signal 必须是短词(2-4字)", + "check": lambda d: len((d.get("timing_signal") or "").strip().split()) <= 4 and (d.get("timing_signal") or "") not in ("neutral", ""), + "severity": "MEDIUM", + "fix": "使用短词:买入/加仓/观望/持有/关注/信号不充分" + }, + { + "id": "GATE_TECH_SNAPSHOT", + "desc": "tech_snapshot 必须包含技术位数值", + "check": lambda d: bool(d.get("tech_snapshot")) and any(c in d["tech_snapshot"] for c in "支撑阻力压强"), + "severity": "MEDIUM", + "fix": "tech_snapshot 包含强撑/弱撑/弱压/强压至少3个数值" + }, + { + "id": "GATE_CURRENCY_SET", + "desc": "港股必须标 currency=HKD(个股存原币种,汇总时由calc_total_assets转CNY)", + "check": lambda d: not is_hk_stock(d.get("code","")) or d.get("currency") == "HKD", + "severity": "HIGH", + "fix": "设置 d['currency']='HKD'" + }, + # --- 第4条 CRITICAL 红线:9维交叉验证 (2026-07-02 Dad要求) --- + # 策略不能只有价格数字,必须有证据经过了多维分析: + # 横切面: 大盘+行业+个股 | 纵切面: 基本面+消息面+技术面+资金流 + # 代码层面可验证: sector_context(行业) + signal_factors(多因子) 或 tech_snapshot + { + "id": "GATE_9D_ANALYSIS", + "desc": "策略必须经过多维分析(sector_context + signal_factors)", + "check": lambda d: ( + bool(d.get("sector_context") and str(d.get("sector_context","")).strip() not in ("neutral","","N/A","-")) + and ( + bool(d.get("signal_factors") and isinstance(d.get("signal_factors"), (list,tuple)) and len(d["signal_factors"]) >= 1) + or bool(d.get("tech_snapshot") and any(c in str(d.get("tech_snapshot","")) for c in "支撑阻力压强")) + ) + ), + "severity": "CRITICAL", + "fix": "重新运行 reassess_with_context() 完整重评确保 sector_context/signal_factors/tech_snapshot 均已填充" + }, +] + + +def _hk_stock(code): + return bool(len(str(code)) == 5 and str(code)[0] in ('0','1')) + +def _is_buy_signal_str(signal): + """买入/加仓/建仓类信号""" + if not signal: + return False + return any(kw in signal for kw in ["买入", "加仓", "建仓"]) + +# _is_buy_signal is defined later in this file (~line 1240) + +def validate_strategy(d, debug=True): + """策略评审:硬性门禁检查 + + 返回 (passed: bool, failures: list) + 任一 CRITICAL 失败 → 拒绝写入,标记 TODO 触发重评 + 任一 HIGH 失败 → 标记 quality_check=failed,写入但不出现在推荐区 + MEDIUM 失败 → 记录但不拦截 + """ + failures = [] + for gate in STRATEGY_QUALITY_GATES: + try: + ok = gate["check"](d) + except Exception as e: + ok = False + if debug: + print(f" [VALIDATE] {gate['id']} 检查异常: {e}", flush=True) + if not ok: + failures.append(gate) + if debug: + print(f" [VALIDATE] ✗ {gate['id']} ({gate['severity']}): {gate['desc']}", flush=True) + + passed = all(f["severity"] != "CRITICAL" for f in failures) + + if debug: + criticals = [f for f in failures if f["severity"] == "CRITICAL"] + highs = [f for f in failures if f["severity"] == "HIGH"] + if passed: + print(f" [VALIDATE] ✅ 通过 ({len(failures)}条警告)" if failures else " [VALIDATE] ✅ 全通过", flush=True) + else: + print(f" [VALIDATE] ❌ {len(criticals)}条CRITICAL未通过 → 拒绝写入", flush=True) + + return passed, failures + + +def enforce_strategy_quality(code, name, result): + """策略写入前的强制质量门禁 + + 三段自动修复: + - Round 1: 技术分析(ta.full_analysis/chip_sr) + - Round 2: DB + 价格百分比推算 + - Round 3: 最低可用策略标记强推 + 3轮全不过 → review_needed + """ + price = result.get("price", 0) or result.get("current", 0) or result.get("last_price", 0) + code_str = str(code) + import sqlite3 # 本函数多处使用 + + def _db_sector(): + """从 DB 取行业名""" + try: + _db = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) + r = _db.execute("SELECT sector_name FROM stock_sectors WHERE code=?", (code_str,)).fetchone() + _db.close() + return r[0] if r else None + except: + return None + + def _fix_one(gate_id, round_num): + """对单个门禁执行修复。round_num越大修复越激进。""" + if gate_id == "GATE_LOSS_EXISTS" and (result.get("stop_loss") or 0) <= 0: + if round_num <= 2: + # Round 1-2: 技术分析算支撑 + tech = ta.full_analysis(code) + if tech and "support_resistance" in tech: + sr = tech["support_resistance"] + ws = sr.get("weak_support") + ss = sr.get("strong_support") + if ws and ws > 0: + result["stop_loss"] = round(ws, 2) + elif ss and ss > 0: + result["stop_loss"] = round(ss, 2) + elif price > 0: + result["stop_loss"] = round(price * 0.95, 2) + elif price > 0: + result["stop_loss"] = round(price * 0.95, 2) + else: + # Round 3: 强制fallback + if price > 0: + result["stop_loss"] = round(price * 0.90, 2) # 更宽 + else: + result["stop_loss"] = 1 + print(f" R{round_num} 止损={result.get('stop_loss',0)}", flush=True) + + if gate_id == "GATE_PROFIT_EXISTS" and (result.get("take_profit") or 0) <= 0: + if round_num <= 2: + tech = ta.full_analysis(code) + if tech and "support_resistance" in tech: + sr = tech["support_resistance"] + wr = sr.get("weak_resist") + sr_resist = sr.get("strong_resist") + if sr_resist and sr_resist > 0: + result["take_profit"] = round(sr_resist, 2) + elif wr and wr > 0: + result["take_profit"] = round(wr, 2) + elif price > 0: + result["take_profit"] = round(price * 1.08, 2) + elif price > 0: + result["take_profit"] = round(price * 1.08, 2) + else: + if price > 0: + result["take_profit"] = round(price * 1.20, 2) # 更宽 + else: + result["take_profit"] = 2 + print(f" R{round_num} 止盈={result.get('take_profit',0)}", flush=True) + + if gate_id == "GATE_ENTRY_RANGE" and ((result.get("entry_low") or 0) >= (result.get("entry_high") or 0) or (result.get("entry_low") or 0) <= 0): + p = price or 100 + sl = result.get("stop_loss", 0) + tp = result.get("take_profit", 0) + if round_num <= 2: + if sl > 0 and tp > 0 and sl < tp: + result["entry_low"] = round(sl * 1.02, 2) + result["entry_high"] = round(tp * 0.85, 2) + if result["entry_low"] >= result["entry_high"]: + result["entry_low"] = round(p * 0.95, 2) + result["entry_high"] = round(p * 0.99, 2) + else: + result["entry_low"] = round(p * 0.93, 2) + result["entry_high"] = round(p * 1.02, 2) + else: + result["entry_low"] = round(p * 0.90, 2) + result["entry_high"] = round(p * 1.10, 2) + print(f" R{round_num} 买入区={result['entry_low']}~{result['entry_high']}", flush=True) + + if gate_id == "GATE_9D_ANALYSIS": + # 行业 + if not result.get("sector_context") or str(result.get("sector_context","")).strip() in ("neutral","","N/A","-"): + sec = _db_sector() + if sec: + result["sector_context"] = sec + elif round_num >= 2: + result["sector_context"] = f"自选(未分类)" + else: + result["sector_context"] = f"{name}所属行业(待补充)" + # signal_factors + if not result.get("signal_factors") or (isinstance(result.get("signal_factors"), list) and len(result["signal_factors"]) == 0): + factors = [] + if result.get("timing_signal"): + factors.append(f"信号:{result['timing_signal']}") + if result.get("rr_ratio", 0) > 0: + factors.append(f"RR:{result['rr_ratio']}") + if result.get("stop_loss", 0) > 0 and result.get("take_profit", 0) > 0: + factors.append(f"损{result['stop_loss']}盈{result['take_profit']}") + if not factors: + if round_num >= 2: + factors.append("自动填充") + else: + # Round 1: 留空等重检,不硬填 + pass + if factors: + result["signal_factors"] = factors + # tech_snapshot + if not result.get("tech_snapshot") or not any(c in str(result.get("tech_snapshot","")) for c in "支撑阻力压强"): + sl = result.get("stop_loss", 0) + tp = result.get("take_profit", 0) + if sl > 0 and tp > 0: + result["tech_snapshot"] = f"自动:损{sl}盈{tp}" + elif price: + result["tech_snapshot"] = f"自动:价{price}" + elif round_num >= 2: + result["tech_snapshot"] = "自动生成(未补全技术位)" + print(f" R{round_num} 9维分析: sector={result.get('sector_context','')[:20]} factors={result.get('signal_factors',[])}", flush=True) + + # 循环重试 + MAX_RETRIES = 3 + passed, failures = validate_strategy(result) + retry_count = 0 + + for _retry_num in range(1, MAX_RETRIES + 1): + if passed: + break + + critical_issues = [f["id"] for f in failures if f["severity"] == "CRITICAL"] + if not critical_issues: + # 没有CRITICAL了,只有HIGH/MEDIUM → 可以放行 + passed = True + break + + retry_count = _retry_num + print(f" [RETRY {retry_count}/{MAX_RETRIES}] {name}({code}) → 修复: {critical_issues}", flush=True) + + for gate_id in critical_issues: + _fix_one(gate_id, retry_count) + + # 重检 + passed, failures = validate_strategy(result) + + # --- 最终结果 --- + if passed: + print(f" ✅ {name}({code}) 质量门禁通过 ({retry_count}轮重试)", flush=True) + result["quality_check"] = "passed" + result["quality_checked_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") + + # HIGH 级别警告(已通过但仍有非CRITICAL失败) + high_fails = [f for f in failures if f["severity"] == "HIGH"] + if high_fails: + result["quality_check"] = "warning" + result["quality_issues"] = {"high": [f["id"] for f in high_fails]} + print(f" ⚠️ {name}({code}) 有{len(high_fails)}条HIGH警告", flush=True) + + # 记录 changelog + if "critical_issues" in dir(): + cl = result.setdefault("changelog", []) + cl.append({ + "time": datetime.now().strftime("%Y-%m-%d %H:%M"), + "event": f"质量门禁通过 (重试{retry_count}轮)", + }) + + result["status"] = "active" + return True + else: + # 3轮全不过 → review_needed + remaining_critical = [f["id"] for f in failures if f["severity"] == "CRITICAL"] + result["quality_check"] = "failed" + result["quality_issues"] = { + "critical": remaining_critical, + "all": [f["id"] for f in failures], + } + result["quality_checked_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") + result["status"] = "review_needed" + result["timing_signal"] = "信号不充分" + + cl = result.setdefault("changelog", []) + cl.append({ + "time": datetime.now().strftime("%Y-%m-%d %H:%M"), + "event": f"质量门禁3轮全拒 → review_needed ({remaining_critical})", + }) + + print(f" 🚫 {name}({code}) 3轮修复后仍有 {remaining_critical} → review_needed", flush=True) + return False + + +# is_hk_stock 已从 mo_models 导入(见文件头部 import),不再在此复写。 + + +def calc_atr(code, period=14): + """从腾讯API K线数据计算ATR(period),返回ATR值或None""" + try: + url = f"http://ifzq.gtimg.cn/appstock/app/fqkline/get?param=hk{code},day,,,60,qfq" + req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) + resp = urllib.request.urlopen(req, timeout=5).read().decode('utf-8') + data = json.loads(resp) + bars = data.get('data', {}).get(f'hk{code}', {}).get('day', []) + if len(bars) < period + 1: + return None + trs = [] + for i in range(1, min(len(bars), period + 1)): + try: + high = float(bars[i][2]) + low = float(bars[i][3]) + prev_close = float(bars[i-1][4]) if len(bars[i-1]) > 4 else float(bars[i-1][3]) + tr = max(high - low, abs(high - prev_close), abs(low - prev_close)) + trs.append(tr) + except (ValueError, IndexError): + continue + if not trs: + return None + return round(sum(trs) / len(trs), 2) + except Exception: + return None + + +def calc_chip_sr(code, price): + """从筹码分布计算支撑/阻力位。 + + 返回: {"chip_ss": 筹码强支撑, "chip_sr": 筹码强阻力} 或 None + 筹码强支撑 = 当前价下方成交量最大的价格区间 + 筹码强阻力 = 当前价上方成交量最大的价格区间 + + 用法: + sr = calc_chip_sr("600519", 1193) + if sr: + print(f"筹码支撑{sr['chip_ss']} 筹码阻力{sr['chip_sr']}") + """ + if not price or price <= 0: + return None + try: + # 复用chip_factors的筹码分布构建 + import sys as _sys + _sys.path.insert(0, "/home/hmo/MoFin/scripts") + from chip_factors import ChipFactors + cf = ChipFactors() + chip = cf._build_chip_distribution(code) + if not chip: + return None + total = sum(chip.values()) + if total <= 0: + return None + # 2%区间聚合 + step = max(round(price * 0.02, 2), 1.0) + bins = {} + for p, v in chip.items(): + k = round(p / step) * step + bins[k] = bins.get(k, 0) + v + sb = sorted(bins.items()) + below = [(p, v) for p, v in sb if p < price] + above = [(p, v) for p, v in sb if p >= price] + if not below or not above: + return None + + # 支撑 = 下方成交量最大的密集区 + chip_ss = max(below, key=lambda x: x[1])[0] + # 阻力 = 上方成交量最大的密集区 + chip_sr = max(above, key=lambda x: x[1])[0] + + return {"chip_ss": chip_ss, "chip_sr": chip_sr} + except Exception as e: + print(f" ⚠️ 筹码S/R计算失败: {e}", file=sys.stderr) + return None + +# 提示词版本追踪 +try: + from prompt_manager.tracking import record_strategy_generation + HAS_PROMPT_TRACKING = True +except ImportError: + HAS_PROMPT_TRACKING = False + +def safe_json_load(path, default=None): + """安全加载 JSON,遇到坏数据自动修复""" + if not os.path.exists(path): + return default if default is not None else {} + try: + with open(path, "r", encoding="utf-8") as f: + return json.load(f) + except json.JSONDecodeError: + # 尝试修复:替换字符串内未转义的换行符,去多余括号 + with open(path, "r", encoding="utf-8") as f: + raw = f.read() + fixed = raw + + # 修复1: 字符串内未转义的换行 -> \\n + result = [] + in_str = False + for ch in fixed: + if ch == '"': + in_str = not in_str + result.append(ch) + elif in_str and ch in '\n\r': + result.append('\\n') + else: + result.append(ch) + fixed = ''.join(result) + + # 修复2: 去掉多余的尾部括号 + fixed = fixed.rstrip('}') + # 补回正确的闭合 + if not fixed.endswith('}'): + fixed += '}' + + try: + return json.loads(fixed) + except json.JSONDecodeError as e: + print(f"[WARN] watchlist.json 自动修复失败: {e}", file=sys.stderr) + return default if default is not None else {} +KNOWLEDGE_LOG = "/home/hmo/Obsidian/knowledge/finance/analyst-knowledge-log.md" +MACRO_CONTEXT_PATH = "/home/hmo/web-dashboard/data/macro_context.json" +MARKET_CONTEXT_PATH = "/home/hmo/web-dashboard/data/market.json" +STOCK_SECTOR_MAP_PATH = "/home/hmo/web-dashboard/data/stock_sector_map.json" + + +def load_stock_sector_map(): + """读取个股归属行业映射 + + stock_sector_map.json 格式: {code: [sector1, sector2, ...]} + 跳过 _note, _created_at 等元数据键。 + """ + # 优先从 SQLite 读取 + try: + from mofin_db import get_conn, query_sector_stocks + conn = get_conn() + # 从 stock_sectors 表反向构建 code→[sectors] 映射 + rows = conn.execute("SELECT code, sector_name FROM stock_sectors ORDER BY code").fetchall() + conn.close() + code_to_sectors = {} + for code, sector in rows: + if code not in code_to_sectors: + code_to_sectors[code] = [] + code_to_sectors[code].append(sector) + return code_to_sectors + except Exception: + pass + try: + with open(STOCK_SECTOR_MAP_PATH) as f: + data = json.load(f) + code_to_sectors = {} + for key, value in data.items(): + if key.startswith("_"): + continue + if isinstance(value, list): + code_to_sectors[key] = value + return code_to_sectors + except Exception: + return {} + + +def load_market_context(): + """读取市场上下文,优先 SQLite,回退 market.json""" + # 优先从 SQLite 读取 + try: + from mofin_db import get_conn, query_latest_market + conn = get_conn() + market = query_latest_market(conn) + conn.close() + if market and market.get("sectors"): + sector_perf = {} + for s in market["sectors"]: + name = s.get("name", "") + if name: + sector_perf[name] = { + "change": s.get("change_pct", 0), + "up_count": s.get("up_count", 0), + "down_count": s.get("down_count", 0), + "net_inflow": s.get("net_inflow", 0), + "lead_stock": s.get("lead_stock", ""), + "lead_stock_change": s.get("lead_stock_change", 0), + } + return { + "sector_perf": sector_perf, + "breadth": market.get("up_ratio", 50), + "mood": market.get("mood", "neutral"), + "top_gainers": {g["name"]: g["change_pct"] for g in market.get("top_gainers", [])}, + "top_losers": {g["name"]: g["change_pct"] for g in market.get("top_losers", [])}, + "total_sectors": len(market["sectors"]), + "market_timestamp": market.get("timestamp", ""), + } + except Exception: + pass + try: + with open(MARKET_CONTEXT_PATH) as f: + market = json.load(f) + sectors = market.get("sectors", []) + sector_perf = {} + for s in sectors: + name = s.get("name", "") + if name: + sector_perf[name] = { + "change": s.get("change", 0), + "up_count": s.get("up_count", 0), + "down_count": s.get("down_count", 0), + "net_inflow": s.get("net_inflow", 0), + "lead_stock": s.get("lead_stock", ""), + "lead_stock_change": s.get("lead_stock_change", 0), + } + top_gainers = {s.get("name", ""): s.get("change", 0) + for s in market.get("top_gainers", [])} + top_losers = {s.get("name", ""): s.get("change", 0) + for s in market.get("top_losers", [])} + return { + "sector_perf": sector_perf, + "breadth": market.get("up_ratio", 50), + "mood": market.get("mood", "neutral"), + "top_gainers": top_gainers, + "top_losers": top_losers, + "total_sectors": market.get("total_sectors", 0), + "market_timestamp": market.get("timestamp", ""), + } + except Exception: + return { + "sector_perf": {}, + "breadth": 50, + "mood": "neutral", + "top_gainers": {}, + "top_losers": {}, + "total_sectors": 0, + "market_timestamp": "", + } + + +def compute_sector_adjustment(code, market_ctx, stock_sector_map): + """根据个股所属行业的市场表现+小果情感,返回调整系数 + + 返回 dict: + stop_bias: 止损调整系数(<1.0收紧, >1.0放宽) + target_bias: 止盈调整系数 + note: 行业背景一句话 + sector_name: 匹配到的行业名称 + sector_change: 行业涨跌幅 + """ + # 默认无调整 + adj = {"stop_bias": 1.0, "target_bias": 1.0, "note": "", + "sector_name": "", "sector_change": 0} + + sectors_for_code = stock_sector_map.get(code, []) + if not sectors_for_code: + return adj + + sector_perf = market_ctx.get("sector_perf", {}) + breadth = market_ctx.get("breadth", 50) + + # 找第一个能匹配到的行业 + for sec in sectors_for_code: + if sec in sector_perf: + perf = sector_perf[sec] + chg = perf.get("change", 0) + adj["sector_name"] = sec + adj["sector_change"] = chg + + # 行业暴跌 > 3% + if chg <= -3: + adj["stop_bias"] = 0.92 # 止损收紧8% + adj["target_bias"] = 0.90 # 止盈下调10% + adj["note"] = f"行业{sec}大跌{chg:+.1f}%,收紧止损" + # 行业大跌 1~3% + elif chg <= -1: + adj["stop_bias"] = 0.96 + adj["target_bias"] = 0.95 + adj["note"] = f"行业{sec}下跌{chg:+.1f}%,适度防御" + # 行业大涨 > 3% + elif chg >= 3: + adj["stop_bias"] = 1.05 # 止损放宽5%(给趋势空间) + adj["target_bias"] = 1.03 + adj["note"] = f"行业{sec}大涨{chg:+.1f}%,可适度积极" + # 行业上涨 1~3% + elif chg >= 1: + adj["stop_bias"] = 1.02 + adj["note"] = f"行业{sec}上涨{chg:+.1f}%,正常" + else: + adj["note"] = f"行业{sec}{chg:+.1f}%,中性" + break + # 尝试处理命名差异:market.json中的行业名可能多了"板块"后缀 + for market_sec_name in sector_perf: + if sec in market_sec_name or market_sec_name in sec: + perf = sector_perf[market_sec_name] + chg = perf.get("change", 0) + adj["sector_name"] = market_sec_name + adj["sector_change"] = chg + if chg <= -3: + adj["stop_bias"] = 0.92 + adj["target_bias"] = 0.90 + adj["note"] = f"行业{market_sec_name}大跌{chg:+.1f}%,收紧止损" + elif chg <= -1: + adj["stop_bias"] = 0.96 + adj["target_bias"] = 0.95 + adj["note"] = f"行业{market_sec_name}下跌{chg:+.1f}%,适度防御" + elif chg >= 3: + adj["stop_bias"] = 1.05 + adj["target_bias"] = 1.03 + adj["note"] = f"行业{market_sec_name}大涨{chg:+.1f}%,可适度积极" + elif chg >= 1: + adj["stop_bias"] = 1.02 + adj["note"] = f"行业{market_sec_name}上涨{chg:+.1f}%,正常" + else: + adj["note"] = f"行业{market_sec_name}{chg:+.1f}%,中性" + break + + # 如果breath<30% (大盘极弱),再加一层收紧 + if breadth < 30: + adj["stop_bias"] *= 0.97 # 再收紧3% + breadth_note = "大盘仅{}%个股上涨".format(int(breadth)) + adj["note"] = (adj["note"] + " | " + breadth_note) if adj["note"] else breadth_note + elif breadth < 40: + adj["stop_bias"] *= 0.99 + breadth_note = "大盘偏弱({}%上涨)".format(int(breadth)) + adj["note"] = (adj["note"] + " | " + breadth_note) if adj["note"] else breadth_note + + # 小果情感约束:利空置信度>80%时收紧止损 + try: + xiaoguo_path = "/home/hmo/web-dashboard/data/xiaoguo_sentiment.json" + if os.path.exists(xiaoguo_path): + xg = json.load(open(xiaoguo_path)) + stock_sentiment = xg.get("stocks", {}).get(code, {}) + if stock_sentiment: + sentiment = stock_sentiment.get("sentiment", "") + confidence = stock_sentiment.get("confidence", 0) + summary = stock_sentiment.get("summary", "") + if sentiment == "negative" and confidence > 0.8: + adj["stop_bias"] = min(adj["stop_bias"], 0.95) + adj["note"] += f" | 小果利空{confidence:.0%}:{summary[:30]}" + except Exception: + pass + + return adj + + +def load_macro_context(): + """读取宏观上下文,返回 (bias, desc),优先 DB,回退 JSON""" + try: + import sqlite3 + from pathlib import Path + conn = sqlite3.connect(str(Path(__file__).parent.parent / "data" / "mofin.db")) + row = conn.execute( + "SELECT indices, structure FROM macro_context_log " + "WHERE has_valid_data=1 ORDER BY created_at DESC LIMIT 1" + ).fetchone() + conn.close() + if row: + indices = json.loads(row[0]) if row[0] else {} + structure = json.loads(row[1]) if row[1] else {} + overall = structure.get("overall", "neutral") + desc = structure.get("description", "") + else: + raise ValueError("no db data") + except Exception: + try: + with open(MACRO_CONTEXT_PATH) as f: + ctx = json.load(f) + overall = ctx.get("structure", {}).get("overall", "neutral") + desc = ctx.get("structure", {}).get("description", "") + except Exception: + return 1.0, "宏观未加载" + if "bearish" in overall: + return 0.8, f"宏观{desc}" + elif overall == "bullish": + return 1.05, f"宏观{desc}" + elif overall == "strong_bullish": + return 1.1, f"宏观{desc}" + else: + return 1.0, f"宏观{desc}" + + +def batch_fetch_prices(codes): + """获取实时价格。优先从 DB 读取(price_monitor 每 2 分钟更新),失败才拉腾讯 API。""" + if not codes: + return {} + + all_results = {} + + # 主通道:从 DB 读取(price_monitor 唯一价格入口) + try: + import sqlite3 + db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db') + db.row_factory = sqlite3.Row + for raw_code in codes: + raw_code = str(raw_code).split('_')[0] + if not raw_code: continue + row = db.execute( + "SELECT price, change_pct FROM holdings WHERE code=? AND is_active=1", (raw_code,) + ).fetchone() + if not row: + row = db.execute( + "SELECT price, change_pct FROM holding_strategies WHERE code=? AND status='active' ORDER BY updated_at DESC LIMIT 1", (raw_code,) + ).fetchone() + if row and row['price']: + all_results[raw_code] = { + "price": row['price'], + "close": row['price'], # 用现价近似昨收,仅用于sentiment计算 + "high": row['price'], + "low": row['price'], + "code": raw_code, + } + db.close() + if all_results: + return all_results + except Exception: + pass + + # Fallback: mo_data.get_prices_batch(当 DB 无数据时) + leftover = [str(c).split('_')[0] for c in codes] + leftover = [c for c in leftover if c] + if leftover: + try: + batch_results = get_prices_batch(leftover) + for code, (price, chg) in batch_results.items(): + if price and price > 0: + all_results[code] = { + "price": price, + "close": price, # approximate yesterday close with current price + "high": price, + "low": price, + "code": code, + } + except Exception as e: + print(f" batch_fetch_prices fallback error: {e}", file=sys.stderr) + + return all_results + + +def get_price_tencent(code): + """获取实时价格。优先 DB(price_monitor 维护),失败才用 mo_data.get_price 兜底。返回 dict 兼容旧调用者。""" + raw_code = str(code).split('_')[0] + if not raw_code: + return None + + # 主通道: DB + try: + import sqlite3 + db = sqlite3.connect('/home/hmo/web-dashboard/data/mofin.db') + db.row_factory = sqlite3.Row + row = db.execute("SELECT price FROM holdings WHERE code=? AND is_active=1", (raw_code,)).fetchone() + if not row: + row = db.execute("SELECT price FROM holding_strategies WHERE code=? AND status='active' ORDER BY updated_at DESC LIMIT 1", (raw_code,)).fetchone() + if row and row['price']: + db.close() + return {"price": row['price'], "close": row['price'], "high": row['price'], "low": row['price'], "code": raw_code} + db.close() + except Exception: + pass + + # Fallback: mo_data.get_price + try: + price, chg = get_price(raw_code) + if price and price > 0: + return {"price": price, "close": price, "high": price, "low": price, "code": raw_code} + except Exception as e: + print(f" get_price error {code}: {e}", file=sys.stderr) + + return None + + +def reassess_strategy(code, name, price, cost, shares, current_action, + volume_signal="", sentiment="neutral", + is_watchlist=False): + """根据技术分析重评策略""" + + tech = ta.full_analysis(code) + if tech and "support_resistance" in tech: + sr = tech["support_resistance"] + candle = tech.get("candlestick", {}) + vol = tech.get("volume", {}) + vol_deep = tech.get("volume_deep", {}) + ss = sr.get("strong_support") + ws = sr.get("weak_support") + wr = sr.get("weak_resist") + sr_resist = sr.get("strong_resist") + pivot = sr.get("pivot") + effective_range = sr.get("effective_range") + print(f" TECH: 强撑={ss} 弱撑={ws} 枢轴={pivot} 弱压={wr} 强压={sr_resist} 有效区间={effective_range}") + else: + print(f" ⚠️ 技术分析不可用", file=sys.stderr) + ss = ws = wr = sr_resist = pivot = None + candle = {} + vol = {} + + # ----- 多周期技术分析(周线/月线/均线) ----- + mtf_analysis = {} + mtf_adj = {} + try: + mtf_result = mtf.full_multi_tf_analysis(code) + if mtf_result.get("daily") and mtf_result["daily"].get("count", 0) >= 5: + mtf_analysis = mtf_result + mtf_adj = mtf_result.get("strategy_adjustment", {}) + daily_mas = mtf_result.get("daily", {}).get("mas", {}) + weekly = mtf_result.get("weekly", {}) + monthly = mtf_result.get("monthly", {}) + trend_align = mtf_adj.get("trend_alignment", "未知") + print(f" 多周期: {trend_align} | " + f"MA5={daily_mas.get('ma5','?')} MA20={daily_mas.get('ma20','?')} MA60={daily_mas.get('ma60','?')} | " + f"周线{weekly.get('trend',{}).get('description','?')} 月线{monthly.get('trend',{}).get('description','?')}") + except Exception as e: + print(f" 多周期分析失败: {e}", file=sys.stderr) + + # ----- 筹码分布支撑/阻力(中长线参考,加情景权重) ----- + chip_sr = None + chip_weight = 0.5 # 默认中等权重 + regime = detect_scenario() + regime_id = regime.get("id", "weak_consolidation") + + # 情景决定筹码因子权重 + if regime_id == "weak_consolidation": + chip_weight = 0.9 # 震荡市筹码最准 + elif regime_id == "bullish_recovery": + chip_weight = 0.4 # 上涨趋势筹码阻力可能被突破 + elif regime_id == "sharp_decline": + chip_weight = 0.2 # 急跌中筹码支撑可能失效 + elif regime_id == "sector_rotation": + chip_weight = 0.6 # 轮动市中筹码有一定参考 + + try: + chip_sr = calc_chip_sr(code, price) + if chip_sr: + print(f" 筹码: 撑={chip_sr['chip_ss']:.0f} 阻={chip_sr['chip_sr']:.0f} | 情景={regime_id} 权重={chip_weight:.1f}") + # 与枢轴点对比 + if ss and ws and pivot and chip_sr['chip_ss'] > 0 and chip_sr['chip_sr'] > 0: + chip_ss_pct = (price - chip_sr['chip_ss']) / price * 100 + chip_sr_pct = (chip_sr['chip_sr'] - price) / price * 100 + + # 共振检测:筹码支撑 vs 枢轴弱支撑(都是最近支撑位) + if ws and ws > 0: + resonance_ss = abs(chip_ss_pct - ((price - ws) / price * 100)) < 3 + else: + resonance_ss = False + # 共振检测:筹码阻力 vs 枢轴弱阻力(都是最近阻力位) + if wr and wr > 0: + resonance_sr = abs(chip_sr_pct - ((wr - price) / price * 100)) < 3 + else: + resonance_sr = False + + if resonance_ss and chip_weight >= 0.5: + print(f" ⚡ 支撑共振({chip_weight:.0f}): 筹码+枢轴均指向{chip_sr['chip_ss']:.0f}") + elif chip_weight < 0.5: + print(f" 📎 支撑一致但权重低({chip_weight:.1f}): {regime_id}下筹码支撑不可靠") + + if resonance_sr and chip_weight >= 0.5: + print(f" ⚡ 阻力共振({chip_weight:.0f}): 筹码+枢轴均指向{chip_sr['chip_sr']:.0f}") + elif chip_weight < 0.5: + print(f" 📎 阻力一致但权重低({chip_weight:.1f}): {regime_id}下筹码阻力不可靠") + except Exception: + pass + + profit_pct = (price - cost) / cost * 100 if cost else 0 + is_new_entry = (cost == 0) or (shares == 0) + is_deep_loss = profit_pct < -20 + + # ----- 股票分类(短炒/中短线/中长线/弱势/深套) ----- + stock_category = "中短线" + time_horizon = "2周~3月" + position_advice = "中等仓位" + try: + mtf_cache = mtf._load_mtf_cache() + stock_data = mtf_cache.get(code, {}) + daily_klines = stock_data.get("daily", []) + fund = stock_data.get("fundamentals", {}) + closes = [d["close"] for d in daily_klines] if daily_klines else [] + + if len(closes) >= 10: + cur = closes[-1] + ma20 = sum(closes[-20:])/20 if len(closes)>=20 else 0 + ma60 = sum(closes[-60:])/60 if len(closes)>=60 else 0 + highs = [d["high"] for d in daily_klines[-20:]] + lows = [d["low"] for d in daily_klines[-20:]] + volatility = ((max(highs)-min(lows))/min(lows)*100) if min(lows)>0 else 0 + pe = fund.get("pe") or 0 + eps = fund.get("eps") or 0 + mcap = fund.get("mcap_total") or 0 + is_high_vol = volatility > 30 + is_high_pe = pe > 100 or pe < 0 + is_value = 0 < pe < 20 and eps > 0.5 + + if is_deep_loss: + stock_category = "深套" + time_horizon = "长期" + position_advice = "不补不割" + elif is_high_vol and is_high_pe: + stock_category = "短炒" + time_horizon = "数日~2周" + position_advice = "小仓快进快出" + elif cur < ma20 and cur < ma60 and ma20 > 0: + stock_category = "弱势" + time_horizon = "观望" + position_advice = "减仓或观望" + elif (is_value or mcap > 1000) and cur > ma20: + stock_category = "中长线" + time_horizon = "数月~1年" + position_advice = "正常配置" + elif volatility > 20: + stock_category = "中短线" + time_horizon = "2~6周" + position_advice = "中等仓位" + except Exception: + pass + + print(f" 分类: {stock_category} | {time_horizon} | {position_advice}") + + # ----- 短炒+强趋势检测:短炒分类但多周期多头时用移动止损代替弱支撑止损 ----- + is_short_term_strong_trend = False + if stock_category == "短炒": + trend_align = mtf_adj.get("trend_alignment", "") + strong_trend_indicators = ["多周期看多", "多周期多头", "上升"] + if any(ind in trend_align for ind in strong_trend_indicators): + is_short_term_strong_trend = True + print(f" ⚡ 短炒+强趋势检测: 趋势={trend_align} → 启用移动止损, 不止盈") + position_advice = "小仓强趋势让利润跑" + + # ----- 止损设置(含最小距离3%保护) ----- + if is_new_entry: + # 新买入推荐:止损 = 弱支撑(约2-3%跌幅,合理可控) + if ws and ws > 0: + new_stop = round(ws, 2) + else: + new_stop = round(price * 0.96, 2) + elif is_deep_loss: + # 深套:止损 = 强支撑再下移(不轻易割) + if ss and ss > 0: + new_stop = round(min(ss, price * 0.85), 2) + else: + new_stop = round(price * 0.85, 2) + else: + # 已持仓正常:止损 = 强支撑 + if is_short_term_strong_trend: + # 短炒+强趋势:用移动止损(距现价-5%),不止盈让利润跑 + trailing_sl = round(max(ws or 0, price * 0.95), 2) if ws else round(price * 0.95, 2) + new_stop = trailing_sl + print(f" 短炒强趋势移动止损: {new_stop} (距现价-{(1-new_stop/price)*100:.1f}%)") + elif ss and ss > 0: + new_stop = round(ss, 2) + else: + new_stop = round(price * 0.88, 2) + + # 已盈利仓位(>5%):用较紧的移动止损保护利润,但不超过成本线 + if profit_pct > 5 and not is_new_entry and not is_deep_loss: + # 取 max(弱支撑, 成本线, 当前价×0.95) 作为止损 + cost_protect = cost if cost > 0 else 0 + trailing_stop = round(max(ws or 0, cost_protect, price * 0.95), 2) + if trailing_stop > new_stop: + new_stop = trailing_stop + print(f" 已启用移动止损: {new_stop} (保护+{profit_pct:.1f}%利润)", file=sys.stderr) + + # 最小止损距离 —— 随趋势强度调整(2026-06-23 震度保护规则) + # 强趋势(多周期看多 + MA多头排列):最小1.5%下行空间 + # 普通/弱势:最小3%下行空间 + is_strong_trend = False + trend_align = mtf_adj.get("trend_alignment", "") + strong_trend_indicators = ["多周期看多", "多周期多头", "上升"] + try: + if any(ind in trend_align for ind in strong_trend_indicators) and ma20 > ma60 and cur >= ma20: + is_strong_trend = True + except (NameError, TypeError): + pass # ma20/ma60/cur may be unbound if MTF data insufficient + + if is_strong_trend: + min_stop_gap = 0.015 # 1.5% + else: + min_stop_gap = 0.03 # 3% + + min_stop = round(price * (1 - min_stop_gap), 2) + if new_stop > min_stop and not is_deep_loss: + old_stop = new_stop + new_stop = min_stop + if old_stop != new_stop: + print(f" 最小止损 {round(min_stop_gap*100)}%间距约束: {old_stop}→{new_stop} (趋势{'强' if is_strong_trend else '普通'})") + + # 港股附加:ATR波动率校验 — 止损距现价不得小于 1×ATR(14) + if is_hk_stock(code): + atr = calc_atr(code) + if atr and atr > 0: + min_atr_stop = round(price - atr, 2) + if new_stop > min_atr_stop: + old_stop_val = new_stop + new_stop = min_atr_stop + print(f" 港股ATR波动率校验({atr:.2f}): 止损 {old_stop_val}→{new_stop} (1×ATR间距)") + + # ----- 止盈设置 ----- + if is_short_term_strong_trend and not is_new_entry: + # 短炒+强趋势:不止盈让利润跑 + mtf_tp = mtf_adj.get("take_profit_reference", {}) + if mtf_tp and mtf_tp.get("level", 0) > price * 1.2: + new_target = round(mtf_tp["level"], 2) + else: + new_target = 0 # 无多周期阻力时不编造止盈 + print(f" 短炒强趋势不止盈: 止盈设为{new_target} (+{(new_target/price-1)*100:.0f}%)") + elif sr_resist and sr_resist > 0: + new_target = round(sr_resist, 2) + else: + new_target = 0 # 无技术面数据时不编造止盈 + + # ----- 风险回报比校验 ----- + stop_distance = price - new_stop if price > new_stop else price * 0.02 + target_distance = new_target - price if new_target > price else 0 + + # 1:2 检查 + min_target_distance = stop_distance * 2.0 + if target_distance < min_target_distance: + # 尝试更高的阻力位,但不超过下一个真实压力位 + candidate_targets = [] + if wr and wr > price and wr != sr_resist: + candidate_targets.append(wr) + if sr_resist and sr_resist > price: + candidate_targets.append(sr_resist) + # 检查有效区间,如果有更高的自然目标位 + if effective_range and price < effective_range * 0.9: + candidate_targets.append(effective_range) + + found = False + for level in candidate_targets: + if (level - price) >= min_target_distance: + new_target = level + found = True + break + + # 如果仍然不满足,检查是否至少能到 1:1.5 + min15_distance = stop_distance * 1.5 + if not found: + for level in candidate_targets: + if (level - price) >= min15_distance: + new_target = level + found = True + break + + # ----- 风险回报比最终计算 ----- + risk = max(price - new_stop, price * 0.01) + reward = max(new_target - price, 0) + rr_ratio = reward / risk if risk > 0 else 0 + + # ----- 状态判断 ----- + if is_deep_loss: + status = "updated" + action_note = "深套持有" + elif is_new_entry: + if rr_ratio < 1.5: + status = "review" + action_note = "⚠️盈亏比不足1:1.5,不建议买入" + elif rr_ratio < 2.0: + status = "updated" + action_note = "⚠️盈亏比偏低(1:{:.1f}),谨慎买入".format(rr_ratio) + else: + status = "updated" + action_note = "" + else: + if rr_ratio < 0.5: + status = "updated" + action_note = "⚠️盈亏比极低,关注" + elif rr_ratio < 1.5: + status = "updated" + action_note = "⚠️盈亏比偏低(1:{:.1f}),不建议加仓".format(rr_ratio) + else: + status = "updated" + action_note = "" + + # 短炒+强趋势:在action_note追加标记 + if is_short_term_strong_trend and not is_new_entry and not is_deep_loss: + extra_note = "短炒强趋势持" if "深套" not in action_note else "" + if extra_note: + action_note = f"{action_note} | {extra_note}" if action_note else extra_note + + # ----- 买入区间(有盈亏比严格约束) ----- + max_acceptable_entry = None # 最大可接受买入价(满足R/R约束) + + if new_target and new_stop and new_target > new_stop and not is_deep_loss: + # 买入价的R/R约束: + # 要求 (target - entry) / (entry - stop) >= min_rr + # 即 entry <= (target + min_rr * stop) / (1 + min_rr) + min_rr = 1.0 # 至少1:1,才不亏 + recommend_rr = 1.5 # 推荐1:1.5以上 + + max_for_recommend = (new_target + recommend_rr * new_stop) / (1 + recommend_rr) + max_for_neutral = (new_target + min_rr * new_stop) / (1 + min_rr) + + if is_new_entry: + # 新买入:要求1:1.5+ + max_acceptable_entry = max_for_recommend + else: + # 已持仓加仓:至少1:1 + max_acceptable_entry = max_for_neutral + + if is_new_entry: + # 新买入:买入区 = 弱支撑附近(不是当前价附近!) + # 只在价格跌到弱支撑附近时才推买入 + entry_low = round(price * 0.98, 2) + entry_high = round(price * 1.02, 2) + if max_acceptable_entry and entry_high > max_acceptable_entry: + entry_high = round(max_acceptable_entry, 2) + # 确保买入区不小于1% + if entry_high - entry_low < price * 0.01: + if max_acceptable_entry and price <= max_acceptable_entry: + entry_low = round(max(price * 0.99, new_stop), 2) + entry_high = round(min(price * 1.01, max_acceptable_entry), 2) + elif ws and ws > 0 and wr and wr > 0 and not is_deep_loss: + # 已持仓正常:买入区 = 弱支撑~弱支撑上方5%(给合理回调空间) + # 上限不能低于成本价×0.95(保护已有持仓不被高位逼空) + entry_low = round(ws, 2) + entry_max = round(ws * 1.05, 2) # 比弱支撑高5%,有足够空间 + # 如果当前价已远离买入区,保持买入区不变(不因价格涨了就收窄) + min_upper = round(cost * 0.95, 2) if cost > 0 else 0 + if entry_max < min_upper: + entry_max = min_upper + if max_acceptable_entry: + entry_high = round(min(entry_max, max_acceptable_entry), 2) + else: + entry_high = entry_max + # 如果当前价已远离买入区(高于买入区上沿),禁止加仓推荐 + if price > entry_high: + # 买入区锁定在弱支撑位,但标记为"价格远离" + pass + # 如果买入区过窄,标记但不扩展(加仓必须在支撑位) + if entry_high - entry_low < price * 0.005: + entry_low = round(ws * 0.995, 2) + entry_high = round(ws * 1.005, 2) + else: + entry_low = round(price * 0.90, 2) + entry_high = round(price * 1.05, 2) + + # 买入区间稳定性保护:上边界单次变动不超过5% + if 'entry_high' in dir() and entry_high: + # 读取当前策略中已有的买入区上界,如果有且变化过大则限制 + old_entry_high = None + if 'current_action' in dir() and current_action: + import re + m = re.search(r'买入区[\d.]+~([\d.]+)', current_action) + if m: + old_entry_high = float(m.group(1)) + if old_entry_high and old_entry_high > 0: + max_change = old_entry_high * 0.95 # 单次最多下降5% + if entry_high < max_change: + entry_high = round(max_change, 2) + + # ----- 买入时机信号(三维分析:大盘+行业+个股,基本面+消息面+技术面+资金流)----- + # [2026-07-01] 扩展:不再只看volume_signal + candlestick_sentiment + # 融合大盘趋势、行业板块强弱、基本面估值作为修正因子 + volume_signal = vol.get("volume_signal", "") + candlestick_sentiment = candle.get("sentiment", "neutral") + + # ----- 深度量价分析(2026-07-08 新增:放量建仓/出货/洗盘检测)----- + deep_vol = {} + vol_pattern_note = "" + try: + from technical_analysis import analyze_volume_deep + deep_vol = analyze_volume_deep(code) + if deep_vol.get("volume_signal"): + vp = deep_vol.get("price_vol_description", "") + patterns = deep_vol.get("patterns", {}) + vol_pattern_note = vp + # 合并到volume_signal + if volume_signal: + volume_signal += f" | {vp}" if vp else "" + else: + volume_signal = vp or "" + except Exception: + pass + + timing_signal = "neutral" + + # --- 三维分析数据装载 --- + # 因子1: 大盘环境(从macro_context_log读) + market_bearish = False + market_bullish = False + try: + import sqlite3 + _db = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) + _mc = _db.execute( + "SELECT structure FROM macro_context_log WHERE has_valid_data=1 ORDER BY rowid DESC LIMIT 1" + ).fetchone() + if _mc and _mc[0]: + _s = json.loads(_mc[0]) + _overall = _s.get("overall", "") + if "bearish" in _overall: + market_bearish = True + elif _overall == "bullish": + market_bullish = True + _db.close() + except Exception: + pass + + # 因子2: 行业板块强弱 + sector_strong = False + sector_weak = False + try: + _db2 = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) + _rows2 = _db2.execute( + "SELECT name, change_pct FROM sector_snapshots ORDER BY change_pct DESC" + ).fetchall() + if _rows2: + # 找到该股所属行业(简单匹配name或通过stock_sectors) + _my_sectors = _db2.execute( + "SELECT sector_name FROM stock_sectors WHERE code=?", + (code,) + ).fetchall() + if _my_sectors: + for (_sn,) in _my_sectors: + for r_name, r_chg in _rows2: + if _sn in r_name or r_name in _sn: + _rank = [r[0] for r in _rows2].index(r_name) if r_name in [x[0] for x in _rows2] else -1 + _total = len(_rows2) + if _rank >= 0: + if _rank < _total * 0.2: + sector_strong = True + if _rank > _total * 0.8: + sector_weak = True + break + _db2.close() + except Exception: + pass + + # 因子3: 基本面估值 + is_value_stock = False + try: + _db3 = sqlite3.connect("/home/hmo/MoFin/data/mofin.db", timeout=5) + _fd = _db3.execute( + "SELECT pe, eps FROM stock_fundamentals WHERE code=?", (code,) + ).fetchone() + if _fd: + _pe, _eps = _fd + is_value_stock = (0 < (_pe or 0) < 25 and (_eps or 0) > 0.3) + _db3.close() + except Exception: + pass + + # --- 三维修正规则 --- + # 大盘偏弱时收紧买入信号,大盘偏强时放宽 + # 行业领先加分,行业落后减分 + # 低估值加分(有安全边际) + + def _adjust_timing(signal, market_b, market_bb, sec_s, sec_w, is_val): + """根据三维因子修正 timing_signal""" + # 大盘偏弱时降级买入信号 + if market_b: + if signal in ("买入", "加仓"): + if not sec_s: # 大盘弱+行业不强→降级 + return "关注" + # 大盘偏强时放宽 + if market_bb: + if signal == "关注" and (sec_s or is_val): + return "买入" + # 行业弱势时降级买入信号 + if sec_w: + if signal in ("买入", "加仓"): + return "关注" + # 行业强势+低估时升级关注 + if sec_s and is_val: + if signal == "关注": + return "买入" + return signal + + if is_new_entry: + # 新买入时机 + if volume_signal == "主动买盘占优" and candlestick_sentiment == "bullish": + timing_signal = "买入" + elif volume_signal == "主动卖盘占优": + timing_signal = "观望" + elif volume_signal == "买卖均衡" and ws and price <= ws * 1.03: + timing_signal = "买入" + elif candlestick_sentiment == "bullish": + timing_signal = "买入" + elif ws and price < ws * 1.02: + timing_signal = "关注" + # 新买入时三维修正:大盘向上+行业强→升级,大盘弱→降级 + _pre_signal = timing_signal + timing_signal = _adjust_timing(timing_signal, market_bearish, market_bullish, + sector_strong, sector_weak, is_value_stock) + if timing_signal != _pre_signal: + print(f" 三维修正(新入): {_pre_signal}→{timing_signal} " + f"| 大盘{'弱' if market_bearish else '强' if market_bullish else '中性'}" + f"| 行业{'强' if sector_strong else '弱' if sector_weak else '中性'}" + f"| 估值{'低' if is_value_stock else '一般'}") + else: + # 已持仓时机(用于加仓/减仓参考) + if is_short_term_strong_trend: + # 短炒+强趋势:强趋势持有,禁止加仓信号 + timing_signal = "持有" + elif profit_pct > 5: + # 已盈利 + if volume_signal == "主动买盘占优": + timing_signal = "持有" + elif volume_signal == "主动卖盘占优" and not is_new_entry: + timing_signal = "关注" + else: + timing_signal = "持有" + elif profit_pct > 0: + # 微盈 + if volume_signal == "主动买盘占优": + timing_signal = "持有" + elif ws and price <= ws * 1.02: + timing_signal = "加仓" + else: + timing_signal = "持有" + else: + # 浮亏 + if volume_signal == "主动卖盘占优" and ss and price <= ss * 1.03: + timing_signal = "关注" + elif volume_signal == "主动买盘占优" and sr_resist and price >= sr_resist * 0.97: + timing_signal = "关注" + elif volume_signal == "买卖均衡" and ws and price <= ws * 1.02: + timing_signal = "加仓" + else: + timing_signal = "持有" + + # ----- 【v3.2新增】分类约束:弱势/深套禁止输出买入/加仓类信号 ----- + if stock_category == "弱势" or is_deep_loss: + buy_signals = ["买入", "加仓", "可追"] + if any(s in timing_signal for s in buy_signals): + old_signal = timing_signal + timing_signal = "弱势持有" if stock_category == "弱势" else "深套持有" + print(f" 分类约束: {stock_category} 原信号\"{old_signal}\" → \"{timing_signal}\"") + + # ----- 构造 action 描述(供 cron prompt 使用) ----- + action_parts = [] + if profit_pct < -20: + action_parts.append("深套持有") + elif profit_pct < -10: + action_parts.append("持有观察") + elif profit_pct < 0: + action_parts.append("持有观察") + elif profit_pct < 5: + action_parts.append("盈利持有") + else: + action_parts.append("盈利良好") + + if action_note: + action_parts.append(action_note) + + # 量价分析描述(如有,注入action) + if vol_pattern_note: + action_parts.append(vol_pattern_note) + + if is_watchlist: + # 自选股(未入场):有止损参考+买入区,内部算RR需要止盈位 + action_parts.append(f"目标参考{new_target}") + action_parts.append(f"止损参考{new_stop}") + action_parts.append(f"买入区{entry_low}~{entry_high}") + elif is_new_entry: + action_parts.append(f"损{new_stop}") + action_parts.append(f"盈{new_target}") + action_parts.append(f"买{entry_low}~{entry_high}") + else: + action_parts.append(f"止损{new_stop}") + action_parts.append(f"目标{new_target}") + action_parts.append(f"买入区{entry_low}~{entry_high}") + + if timing_signal != "neutral": + action_parts.append(f"信号:{timing_signal}") + + new_action = " | ".join(action_parts) + + # 技术面快照 + tech_snapshot = "" + if candle: + tech_snapshot = (f"形态:{candle.get('pattern','?')}/{candle.get('sentiment','?')} " + f"量价:{vol.get('volume_signal','?')} " + f"强撑:{ss} 弱撑:{ws} 弱压:{wr} 强压:{sr_resist}") + # 加入均线信息(如果可用) + try: + dm = mtf_analysis.get("daily", {}).get("mas", {}) + ma_parts = [] + for m in ['ma5', 'ma10', 'ma20', 'ma60']: + v = dm.get(m) + if v: + ma_parts.append(f"{m.upper()}={v}") + if ma_parts: + tech_snapshot += " | " + " ".join(ma_parts) + except (NameError, AttributeError): + pass + + # 多周期快照(追加到 tech_snapshot) + mtf_context = "" + if mtf_adj: + trend_align = mtf_adj.get("trend_alignment", "") + daily_mas = mtf_analysis.get("daily", {}).get("mas", {}) + ma20 = daily_mas.get("ma20") + ma60 = daily_mas.get("ma60") + stop_ref = mtf_adj.get("stop_loss_reference", {}) + take_ref = mtf_adj.get("take_profit_reference", {}) + + parts = [] + if trend_align: + parts.append(trend_align) + if ma20: + parts.append(f"MA20={ma20}") + if ma60: + parts.append(f"MA60={ma60}") + if stop_ref: + parts.append(f"长撑:{stop_ref.get('source','?')}={stop_ref['level']}") + if take_ref: + parts.append(f"长压:{take_ref.get('source','?')}={take_ref['level']}") + mtf_context = " | ".join(parts) + + now_str = datetime.now().strftime('%Y-%m-%d %H:%M') + return { + 'stop_loss': new_stop, + 'take_profit': new_target, + 'entry_low': entry_low, + 'entry_high': entry_high, + 'action': new_action, + 'status': status, + 'tech_snapshot': tech_snapshot, + 'timing_signal': timing_signal, + 'rr_ratio': round(rr_ratio, 2), + 'action_note': action_note, + 'reassessed_at': now_str, + 'multi_tf_context': mtf_context, # 多周期上下文 + 'stock_category': stock_category, # 股票分类:短炒/中短线/中长线/弱势/深套 + 'time_horizon': time_horizon, # 时间跨度 + 'position_advice': position_advice, # 仓位建议 + } + + +def load_stock_news_sentiment(code): + """加载小果消息面情感""" + try: + path = "/home/hmo/web-dashboard/data/xiaoguo_sentiment.json" + if not os.path.exists(path): + return {} + xg = json.load(open(path)) + return xg.get("stocks", {}).get(code, {}) + except Exception: + return {} + + +def load_fundamentals(code): + """加载个股基本面""" + try: + cache = mtf._load_mtf_cache() + return cache.get(code, {}).get("fundamentals", {}) or {} + except Exception: + return {} + + +def _get_portfolio_risk_state(): + """读取 portfolio 组合风险状态(2026-06-23 引擎协调)""" + try: + # 数据一致性检查:警告多副本(2026-06-23 bugfix) + _check_portfolio_consistency() + p = read_portfolio() + pos_pct = p.get('position_pct', 0) + cash = p.get('cash', 0) + holdings = p.get('holdings', []) + weak_cnt = sum(1 for h in holdings if h.get('change_pct', 0) < -15) + total = len(holdings) or 1 + weak_ratio = weak_cnt / total + return { + 'position_pct': pos_pct, + 'cash': cash, + 'is_high_position': pos_pct > 80, + 'is_very_high_position': pos_pct > 90, + 'is_high_weak': weak_ratio > 0.35, + 'weak_ratio': round(weak_ratio * 100), + 'total_holdings': total, + } + except: + return {} + + +def _is_buy_signal(signal): + """判断信号是否为买入/持有类(用于防洗盘)""" + if not signal: + return False + buy_keywords = ['买入', '持有', '加仓', '关注'] + for kw in buy_keywords: + if kw in signal: + return True + return False + + +def _check_portfolio_consistency(): + """数据一致性检查:如果存在多份 portfolio.json 则报警(2026-06-23 bugfix)""" + main = '/home/hmo/web-dashboard/data/portfolio.json' + main_cash = None + try: + import json + main_cash = json.load(open(main)).get('cash') + except Exception: + return + for path in [ + '/home/hmo/data/portfolio.json', + '/home/hmo/projects/MoFin/data/portfolio.json', + '/home/hmo/web-dashboard.bak/data/portfolio.json', + ]: + if os.path.exists(path): + try: + other = json.load(open(path)) + if other.get('cash') != main_cash: + print(f"⚠️ 数据一致性: {os.path.realpath(path)} cash={other.get('cash')} ≠ 主文件 cash={main_cash} (需清理)", file=sys.stderr) + except Exception: + pass + + +def _check_contradiction(code, today_only=True): + """反馈循环核——检查本股是否有刚卖出的记录 + + 返回 dict or None: + - sold_reason: 'portfolio_trim'|'stop_loss' + - sold_at: 卖出日期 + - days_ago: 卖出距今交易日数 + - is_today: 是否今日卖出 + - tag: 追加到信号的标注 + """ + try: + from datetime import datetime, date + dec = read_decisions() + for e in dec.get('decisions', []): + if e.get('code') != code: + continue + sold_at = e.get('sold_at', '') + if not sold_at: + return None + try: + sd = datetime.strptime(sold_at, '%Y-%m-%d').date() + td = date.today() + days = (td - sd).days + except: + return None + + reason = e.get('sold_reason', 'portfolio_trim') + if reason == 'stop_loss': + tag = '止损离场(逻辑破坏,短期不关注)' + else: + tag = '组合减仓后关注(已清仓,等回踩确认)' + + return { + 'sold_reason': reason, + 'sold_at': sold_at, + 'days_ago': days, + 'is_today': days == 0, + 'tag': tag, + } + except: + return None + return None + + +def _get_sell_priority_list(): + """减仓优先级排序:深套>亏损>微盈>盈利(2026-06-23 反馈循环) + + 返回 [(code, name, change_pct, position_pct, priority_label), ...] + 按卖出的优先顺序排列(最先应该卖的在最前) + """ + try: + p = read_portfolio() + holdings = p.get('holdings', []) + ranked = [] + for h in holdings: + chg = h.get('change_pct', 0) + pos = h.get('position_pct', 0) + if chg < -30: + label = '深套(>30%),优先减' + rank = 0 + elif chg < -20: + label = '深套(>20%),优先减' + rank = 1 + elif chg < -10: + label = '亏损,建议减' + rank = 2 + elif chg < 0: + label = '微亏,可减' + rank = 3 + elif chg < 10: + label = '微盈,持有' + rank = 4 + else: + label = '盈利,最后减' + rank = 5 + ranked.append((rank, h['code'], h.get('name',''), chg, pos, label)) + ranked.sort(key=lambda x: (x[0], -x[4])) # 优先 rank, 其次仓位大优先 + return [{'code':c,'name':n,'change_pct':chg,'position_pct':pos,'label':l} + for r,c,n,chg,pos,l in ranked] + except: + return [] + + +def enrich_timing_signal(base_signal, macro_desc="", sector_note="", + profit_pct=0, stock_category="", is_new_entry=False, + fundamentals=None, news_sentiment=None, + timing_signal_override=None, + portfolio_context=None, + rr_ratio=0): # 2026-06-24 新参:盈亏比约束 + """多因子合成timing_signal——大盘+行业+基本面+技术+组合风险+盈亏比 + + 返回 (enriched_signal, factors_list) + - enriched_signal: 可读的多因子信号描述 + - factors_list: 各因子的摘要列表(用于后续显示) + """ + # 如果已手动设定,尊重手动 + if timing_signal_override and timing_signal_override != "neutral": + return timing_signal_override, [timing_signal_override] + + factors = [] + + # 1. 大盘因子 + if "偏强" in macro_desc or "大涨" in macro_desc or "bullish" in macro_desc.lower(): + macro_txt = "大盘偏强" + factors.append(macro_txt) + elif "偏弱" in macro_desc or "大跌" in macro_desc or "bearish" in macro_desc.lower(): + macro_txt = "大盘偏弱" + factors.append(macro_txt) + elif macro_desc and macro_desc != "宏观未加载": + factors.append("大盘中性") + + # 2. 行业因子 + if sector_note: + # 把"行业X大跌3%+"简化为"行业偏弱","行业X大涨3%+"简化为"行业偏强" + if "大跌" in sector_note or "下跌" in sector_note: + factors.append("行业偏弱") + elif "大涨" in sector_note: + factors.append("行业偏强") + elif "上涨" in sector_note: + factors.append("行业偏强") + else: + factors.append("行业中性") + + # 3. 基本面因子 + if fundamentals: + pe = fundamentals.get("pe", 0) + eps = fundamentals.get("eps", 0) + profit_growth = fundamentals.get("profit_growth", fundamentals.get("yoy_profit", "")) + revenue_growth = fundamentals.get("revenue_growth", fundamentals.get("yoy_revenue", "")) + mcap = fundamentals.get("mcap_total", 0) + + pe = pe or 0 + eps = eps or 0 + profit_growth_str = str(profit_growth or "") + revenue_growth_str = str(revenue_growth or "") + + # 净利增长 + for val in [profit_growth_str, revenue_growth_str]: + try: + v = float(val.replace("%", "").replace("+", "")) + if v > 50: + factors.append("净利增50%+") + break + elif v > 20: + factors.append(f"净利增{int(v)}%") + break + elif v < -20: + factors.append("净利降20%+") + break + except (ValueError, AttributeError): + continue + + # PE估值 + if 0 < pe < 15: + factors.append("低估值") + elif pe > 100 or pe < 0: + factors.append("高估值") + + # 市值 + if mcap and mcap > 5000: + factors.append("蓝筹") + + # 4. 消息面因子(小果情感) + if news_sentiment: + ns = news_sentiment.get("sentiment", "") + nc = news_sentiment.get("confidence", 0) + if ns == "positive" and nc >= 0.7: + kws = news_sentiment.get("keywords", []) + kw_str = f"({'/'.join(kws[:3])})" if kws else "" + factors.append(f"消息偏多{kw_str}") + elif ns == "negative" and nc >= 0.7: + kws = news_sentiment.get("keywords", []) + kw_str = f"({'/'.join(kws[:3])})" if kws else "" + factors.append(f"消息偏空{kw_str}") + + # 5. 技术面(基础信号) + if base_signal and base_signal != "neutral": + factors.append(base_signal) + + # 5.5 组合风险因子(2026-06-23 双引擎协调) + if portfolio_context and not is_new_entry: + if portfolio_context.get('is_very_high_position'): + factors.append("组合仓位极重(>90%)") + elif portfolio_context.get('is_high_position'): + factors.append("组合仓位偏重(>80%)") + if portfolio_context.get('is_high_weak'): + factors.append(f"弱势占{portfolio_context.get('weak_ratio')}%") + elif portfolio_context and is_new_entry: + # 新买入推荐:注明组合上下文 + if portfolio_context.get('is_high_position'): + factors.append(f"仓{portfolio_context.get('position_pct')}%现金有限") + elif portfolio_context.get('is_high_weak'): + factors.append("组合风险信号") + + # 5.7 盈亏比因子(2026-06-24 新增——RR<1.5降级买入信号) + if rr_ratio > 0: + if rr_ratio < 1.5: + factors.append(f"RR{rr_ratio}过低") + elif rr_ratio >= 3: + factors.append(f"RR{rr_ratio}") + # 1.5~3之间:中性,不特别标注 + + # 如果没有足够因素,返回信号不充分 + if not factors: + return "信号不充分", [] + + # 信号只应包含明确的买卖方向,不能从行业/大盘等上下文因子拼凑 + # base_signal 存在且非 neutral → 用 base_signal + # 否则 → 信号不充分(不拿 factors[-1] 当信号) + if base_signal and base_signal != "neutral": + clean_signal = base_signal + else: + # 从 factors 中找第一个有效的操作方向信号 + valid_direction = {"买入", "加仓", "观望", "持有", "关注", "信号不充分"} + signal_found = "" + for f in reversed(factors): + if f in valid_direction: + signal_found = f + break + clean_signal = signal_found if signal_found else "信号不充分" + + # 6. RR约束降级(2026-06-24 新增) + # 买入/加仓信号但RR<1.5 → 降级为"信号不充分" + buy_signals = {"买入", "加仓"} + if clean_signal in buy_signals and 0 < rr_ratio < 1.5: + clean_signal = "信号不充分" + factors.append("RR过低降级") + + return clean_signal, factors + + +def reassess_with_context(code, name, price, cost, shares, current_action, + volume_signal="", sentiment="neutral", is_watchlist=False): + """reassess_strategy + 多因子信号合成(大盘+行业+技术) + + 为 per_stock_reassess 等单只场景提供一站式多因子分析 + """ + result = reassess_strategy( + code, name, price, cost, shares, + current_action, volume_signal, sentiment, is_watchlist + ) + if not result: + return result + + # 加载宏观+行业+消息+基本面上下文 + try: + macro_bias, macro_desc = load_macro_context() + market_ctx = load_market_context() + stock_sector_map = load_stock_sector_map() + sector_adj = compute_sector_adjustment(code, market_ctx, stock_sector_map) + sector_note = sector_adj.get("note", "") + news_sentiment = load_stock_news_sentiment(code) + fund = load_fundamentals(code) + except Exception: + macro_desc = "" + sector_note = "" + news_sentiment = {} + fund = {} + + # ── DSA 集成:注入大盘复盘 + 新闻情报 ────────────────────────── + try: + from mo_bridge import enrich_analysis_context + region = "hk" if len(str(code)) == 5 and str(code)[0] in ('0','1') else "cn" + dsa_ctx = enrich_analysis_context(stock_code=code, stock_name=name, + region=region, include_news=True) + if dsa_ctx: + macro_desc = (macro_desc + "\n\n" + dsa_ctx).strip() + except Exception: + pass # DSA 不可用时静默跳过 + + enriched, factors = enrich_timing_signal( + base_signal=result.get("timing_signal", ""), + macro_desc=macro_desc, + sector_note=sector_note, + profit_pct=(price - cost) / cost * 100 if cost else 0, + stock_category=result.get("stock_category", ""), + is_new_entry=is_watchlist, + fundamentals=fund, + news_sentiment=news_sentiment, + portfolio_context=_get_portfolio_risk_state(), + rr_ratio=result.get("rr_ratio", 0), + ) + result["timing_signal"] = enriched + result["signal_factors"] = factors + + # 6. 防洗盘:信号不要一天一翻(2026-06-23) + # 如果旧信号是买入/持有类,新信号是谨慎/等待类,但中期趋势未破→维持旧信号 + try: + dec = read_decisions() + for e in dec.get('decisions', []): + if e.get('code') == code: + old_signal = e.get('timing_signal', '') + if old_signal and _is_buy_signal(old_signal) and not _is_buy_signal(enriched): + # 中等趋势检查:MA5 > MA20 + 多周期看多 + mtf = result.get('multi_tf_context', '') + if '看多' in mtf or '多头' in mtf: + try: + closes = [float(k.split()[2]) for k in mtf.split('|') if 'MA5' in k] + except: + closes = [] + has_uptrend = 'MA5' in mtf and 'MA20' in mtf + if has_uptrend: + print(f" 防洗盘: {old_signal}→保持旧信号(中期趋势完整)") + result["timing_signal"] = f"{old_signal}(正常回调价稳)" + sf = result.get("signal_factors") or [] + if "正常回调价稳" not in sf: + result["signal_factors"] = sf + ["正常回调价稳"] + break + except Exception as e: + print(f" 防洗盘跳过: {e}") + + # 7. 反馈循环核:检查本股是否有刚卖出的记录(2026-06-23) + contradiction = _check_contradiction(code) + if contradiction and contradiction.get('is_today'): + # 今日刚卖出 → 不屏蔽信号,但必须自标注矛盾 + print(f" 反馈循环: {contradiction.get('tag')} (sold_at={contradiction.get('sold_at')})") + if _is_buy_signal(result.get('timing_signal', '')): + result['action_note'] = contradiction['tag'] + # 在 timing_signal 中追加反馈标注,供报告层可见 + curr_signal = result.get('timing_signal', '') + if '⚠️' not in curr_signal: + result['timing_signal'] = f"⚠️{contradiction['tag']}|{curr_signal}" + elif contradiction: + # 非今日卖出但近期卖出 → 标注已清仓 + print(f" 近期清仓: sold_at={contradiction.get('sold_at')} ({contradiction.get('days_ago')}日前)") + if _is_buy_signal(result.get('timing_signal', '')): + curr_signal = result.get('timing_signal', '') + if '已清仓' not in curr_signal: + result['timing_signal'] = f"已清仓,{curr_signal}" + + # 重建 action 文本(同步多因子信号) + try: + if new_action_needs_refresh(result, {"source": "auto"}, price): + _refresh_action_text(result, price, name) + except Exception: + pass + + # ── 策略质量门禁 ── + enforce_strategy_quality(code, name, result) + + return result + + +def new_action_needs_refresh(result, old_entry, price): + """判断宏观/行业调整后是否需要刷新action文本""" + # 自选股和手动策略不做调整,不需要刷新 + if old_entry.get("source") == "manual": + return False + return True + + +def _refresh_action_text(result, price, name): + """根据调整后的止损/止盈重建action文本""" + sl = result.get("stop_loss", 0) + tp = result.get("take_profit", 0) + el = result.get("entry_low", 0) + eh = result.get("entry_high", 0) + ts = result.get("timing_signal", "") + an = result.get("action_note", "") + old_action = result.get("action", "") + + # 保持原action的前缀(持有状态部分不变) + # action格式一般是: "状态 | 止损X | 目标Y | 买入区X~Y | 信号:Z" + parts = old_action.split(" | ") + new_parts = [] + for p in parts: + p = p.strip() + # 替换止损数字 + if p.startswith("止损") or p.startswith("止损参考"): + if sl: + p = f"止损{sl}" if "止损参考" not in old_action.split(" | ")[0] else f"止损参考{sl}" + # 替换目标/止盈数字 + if p.startswith("目标") or p.startswith("止盈"): + if tp: + p = f"目标{tp}" + # 替换买入区数字 + if "买入区" in p and "~" in p: + if el and eh: + p = f"买入区{el}~{eh}" + new_parts.append(p) + result["action"] = " | ".join(new_parts) + + +def check_sector_alerts(market_ctx, stock_sector_map, holdings, wl): + """行业轮动主动预警:检测板块崩盘级别信号→查持仓→输出预警 + + 返回 list of alerts: [{code, name, sector, chg, action}] + """ + alerts = [] + if not market_ctx: + return alerts + + sector_perf = market_ctx.get("sector_perf", {}) + + # 找出所有跌幅>3%的行业 + crashing_sectors = {name: data for name, data in sector_perf.items() + if data.get("change", 0) <= -3} + + if not crashing_sectors: + return alerts + + # 构建 code→持仓信息 的映射 + holding_map = {} + for h in holdings: + c = h.get("code", "") + if c: + holding_map[c] = {"name": h.get("name", c), "type": "持仓"} + for s in wl.get("stocks", []): + c = s.get("code", "") + if c and c not in holding_map: + holding_map[c] = {"name": s.get("name", c), "type": "自选"} + + # 对每个暴跌行业,查持仓中是否有股票属于该行业 + for sec_name, sec_data in sorted(crashing_sectors.items(), + key=lambda x: x[1].get("change", 0)): + chg = sec_data.get("change", 0) + for code, sectors in stock_sector_map.items(): + if code in holding_map and sec_name in sectors: + info = holding_map[code] + alerts.append({ + "code": code, + "name": info["name"], + "sector": sec_name, + "sector_change": chg, + "type": info["type"], + "action": f"行业{sec_name}跌{chg:+.1f}%,{info['type']}需关注", + }) + + alerts.sort(key=lambda a: a["sector_change"]) + return alerts + + +def regenerate_all(stdout=True): + """全量重评所有持仓+自选策略""" + # 优先从 SQLite 读取 + try: + from mofin_db import get_conn, query_holdings, query_watchlist + conn = get_conn() + holdings = query_holdings(conn) + wl_stocks = query_watchlist(conn) + conn.close() + pf = {"holdings": holdings} + wl = {"stocks": wl_stocks} + except Exception: + try: + pf = read_portfolio() + wl = read_watchlist() + except Exception: + pf = {} + wl = {} + + all_stocks = {} + for item in pf.get("holdings", []): + code = item.get("code", "") + if code: + all_stocks[code] = {"source": "portfolio", "data": item} + for item in wl.get("stocks", []): + code = item.get("code", "") + if code and code not in all_stocks: + all_stocks[code] = {"source": "watchlist", "data": item} + + total = len(all_stocks) + ok = 0 + errors = 0 + results = [] + decisions = [] + + # 加载现有 decisions (DB holding_strategies 表) 以便追踪变更 + # decisions_path = "/home/hmo/web-dashboard/data/decisions.json" # 已废弃,数据在 DB + + try: + existing_decisions = {d["code"]: d for d in read_decisions().get("decisions", []) if d.get("code")} + except: + existing_decisions = {} + + # 加载宏观上下文(影响策略参数调整) + macro_bias, macro_desc = load_macro_context() + if stdout: + print(f" 宏观参考: {macro_desc} (bias={macro_bias})") + + # 加载市场上下文 — 行业板块表现 + 大盘宽度(策略参数调整用) + market_ctx = load_market_context() + stock_sector_map = load_stock_sector_map() + market_breadth = market_ctx.get("breadth", 50) + market_mood = market_ctx.get("mood", "neutral") + if stdout: + sectors_found = sum(1 for c in all_stocks if stock_sector_map.get(c)) + print(f" 市场参考: {market_mood} 上涨比{market_breadth}% 已匹配{sectors_found}/{total}只个股行业") + + # 批量预取所有价格(一次API调用 vs 之前N次) + prices_map = batch_fetch_prices(list(all_stocks.keys())) + if stdout: + print(f" 批量获取价格: {len(prices_map)}/{total} 成功") + + for code, info in sorted(all_stocks.items()): + stock = info["data"] + name = stock.get("name", code) + cost = stock.get("cost", 0) or 0 + shares = stock.get("shares", 0) or 0 + source = info["source"] + + q = prices_map.get(code) + if not q or not q.get("price"): + results.append({"code": code, "name": name, "error": "腾讯API无数据"}) + errors += 1 + if stdout: + print(f" ❌ {name}({code}): 腾讯API无数据") + continue + + price = q["price"] + profit_pct = (price - cost) / cost * 100 if cost else 0 + current_action = stock.get("analysis", {}).get("action", "") + close_yest = q.get("close", 0) + sentiment = "neutral" + if close_yest and price > close_yest * 1.02: + sentiment = "bullish" + elif close_yest and price < close_yest * 0.98: + sentiment = "bearish" + + try: + is_wl = (source == "watchlist") + result = reassess_strategy( + code, name, price, cost, shares, + current_action, volume_signal="中性", sentiment=sentiment, + is_watchlist=(source == "watchlist"), + ) + + # --- Manual param preservation: 用户手动策略永不覆盖 --- + old_entry = existing_decisions.get(code, {}) + if old_entry.get("source") == "manual": + # 仅覆盖策略参数,技术分析/信号/价格照常保留 + for key in ["entry_low", "entry_high", "stop_loss", "take_profit"]: + if key in old_entry and old_entry[key] is not None: + result[key] = old_entry[key] + # 重算盈亏比(基于手动参数) + manual_stop = result.get("stop_loss", 0) or 0 + manual_target = result.get("take_profit", 0) or 0 + risk = max(price - manual_stop, price * 0.01) if manual_stop > 0 else price * 0.01 + reward = max(manual_target - price, 0) if manual_target > 0 else 0 + result["rr_ratio"] = round(reward / risk, 2) if risk > 0 else 0 + # 重建 action 文本(引用手动参数,不引用自动计算的) + profit_pct = (price - cost) / cost * 100 if cost else 0 + manual_action_parts = [] + if profit_pct < -20: + manual_action_parts.append("深套持有") + elif profit_pct < -10: + manual_action_parts.append("持有观察") + elif profit_pct < 0: + manual_action_parts.append("持有观察") + elif profit_pct < 5: + manual_action_parts.append("盈利持有") + else: + manual_action_parts.append("盈利良好") + if result.get("action_note"): + manual_action_parts.append(result["action_note"]) + if is_wl: + if manual_stop > 0: + manual_action_parts.append(f"止损参考{manual_stop}") + manual_action_parts.append(f"买入区{result['entry_low']}~{result['entry_high']}") + else: + if manual_stop > 0: + manual_action_parts.append(f"止损{manual_stop}") + if manual_target > 0: + manual_action_parts.append(f"目标{manual_target}") + manual_action_parts.append(f"买入区{result['entry_low']}~{result['entry_high']}") + ts = result.get("timing_signal", "") + if ts and ts != "neutral": + manual_action_parts.append(f"信号:{ts}") + result["action"] = " | ".join(manual_action_parts) + result["status"] = "manual" # 标记为手动管理,变更追踪不受影响 + if stdout: + print(f" [手动保留] {name}({code}) 策略参数未覆盖") + + # 宏观偏差调整:收盘后重评时根据宏观方向微调止损/止盈 + # 自选股不做止盈宏观调整(无持仓) + # 手动策略不做宏观偏差调整(尊重用户设定) + if macro_bias != 1.0 and not is_wl and old_entry.get("source") != "manual": + old_stop = result.get("stop_loss", 0) + old_target = result.get("take_profit", 0) + if macro_bias < 1.0 and old_stop > 0: # 宏观偏弱 → 收紧止损 + # 止损上移(但保留最小3%间距) + adjusted_stop = round(old_stop * (1 + (1 - macro_bias) * 0.3), 2) + min_stop = round(price * 0.97, 2) + result["stop_loss"] = min(adjusted_stop, min_stop) + if old_target > 0: + result["take_profit"] = round(old_target * (1 - (1 - macro_bias) * 0.2), 2) + elif macro_bias > 1.0 and old_target > 0: # 宏观偏强 → 止盈上调让利润跑 + result["take_profit"] = round(old_target * (1 + (macro_bias - 1) * 0.3), 2) + + # 行业偏差调整:根据个股所在行业的市场表现微调止损/止盈 + # 手动策略不做行业调整(尊重用户设定) + sector_adj = compute_sector_adjustment(code, market_ctx, stock_sector_map) + sector_note = sector_adj.get("note", "") + if sector_note and old_entry.get("source") != "manual": + old_stop = result.get("stop_loss", 0) + old_target = result.get("take_profit", 0) + stop_bias = sector_adj.get("stop_bias", 1.0) + target_bias = sector_adj.get("target_bias", 1.0) + if stop_bias != 1.0 and old_stop > 0: + # 行业偏差调整(在宏观调整之后叠加) + adjusted = round(old_stop * stop_bias, 2) + # 保留最小3%间距 + min_stop = round(price * 0.97, 2) + result["stop_loss"] = min(adjusted, min_stop) + if target_bias != 1.0 and old_target > 0 and not is_wl: + result["take_profit"] = round(old_target * target_bias, 2) + + # 加载消息面+基本面(逐个股) + news_sentiment = load_stock_news_sentiment(code) + fund = load_fundamentals(code) + + # 多因子合成 timing_signal:大盘+行业+消息+基本面+技术 + if old_entry.get("source") != "manual": + enriched, _ = enrich_timing_signal( + base_signal=result.get("timing_signal", ""), + macro_desc=macro_desc, + sector_note=sector_note, + profit_pct=profit_pct, + stock_category=result.get("stock_category", ""), + is_new_entry=(source == "watchlist"), + fundamentals=fund, + news_sentiment=news_sentiment, + rr_ratio=result.get("rr_ratio", 0), + ) + result["timing_signal"] = enriched + + # 在宏观/行业/多因子调整后重建 action 文本(同步调整后的止损/止盈数字) + if new_action_needs_refresh(result, old_entry, price): + _refresh_action_text(result, price, name) + + extra = { + "rr_ratio": result.get("rr_ratio"), + "action_note": result.get("action_note", ""), + "timing_signal": result.get("timing_signal", ""), + } + analysis = { + "stop_loss": result["stop_loss"], + "take_profit": result["take_profit"], + "entry_low": result["entry_low"], + "entry_high": result["entry_high"], + "action": result["action"], + "tech_snapshot": result.get("tech_snapshot", ""), + "multi_tf_context": result.get("multi_tf_context", ""), + "reassessed_at": result["reassessed_at"], + "status": result["status"], + **extra, + } + stock["analysis"] = analysis + # 同步 top-level 字段 → zone_breach/price_monitor 依赖这些字段 + # (2026-06-24 bugfix: analysis 子对象有但顶层没有,导致新持仓的止损检测盲区) + stock["stop_loss"] = result.get("stop_loss", 0) + stock["take_profit"] = result.get("take_profit", 0) + stock["entry_low"] = result.get("entry_low", 0) + stock["entry_high"] = result.get("entry_high", 0) + # 同步 trigger 字段 -> price_monitor 依赖 + sl = result.get("stop_loss", 0) + tp = result.get("take_profit", 0) + el = result.get("entry_low", 0) + eh = result.get("entry_high", 0) + trig = {} + if sl and float(sl) > 0: + trig["stop_loss"] = float(sl) + if el and eh and float(el) > 0 and float(eh) > 0: + trig["entry_zone"] = f"{float(el)}~{float(eh)}" + if tp and float(tp) > 0: + trig["take_profit_zone"] = f"0~{float(tp)}" + stock["trigger"] = trig + results.append({ + "code": code, "name": name, + "price": price, "cost": cost, + "action": result["action"], + "stop_loss": result["stop_loss"], + "take_profit": result["take_profit"], + "rr_ratio": result["rr_ratio"], + }) + ok += 1 + if stdout: + rr_str = f" RR={result['rr_ratio']}" if "rr_ratio" in result else "" + print(f" ✅ {name}({code}) {price} {result['action']}{rr_str}") + + # 记录所有股票的决策日志(含变更追踪) + status_display = result.get("status", "active") + # 构建行业上下文 + sector_ctx_str = "" + sec_name = sector_adj.get("sector_name", "") + sec_chg = sector_adj.get("sector_change", 0) + if sec_name: + sector_ctx_str = f"行业{sec_name}{sec_chg:+.1f}%" + if sector_adj.get("note"): + # note 已包含大盘宽度信息 + sector_ctx_str = sector_adj["note"] + elif market_breadth < 40: + # 无行业映射时至少记录大盘宽度 + sector_ctx_str = f"大盘上涨比{market_breadth}%" + new_entry = { + "code": code, "name": name, "price": price, + "cost": old_entry.get("cost", cost) if old_entry else cost, # 优先保留旧成本(holding.xls权威) + "shares": shares, # 当前实际持仓股数(不继承旧决策的可能为0的值) + "avg_price": old_entry.get("avg_price", 0), # 保留持仓均价 + "currency": "HKD" if is_hk_stock(str(code)) else "CNY", + "action": result["action"], + "stop_loss": result.get("stop_loss"), + "entry_low": result["entry_low"], + "entry_high": result["entry_high"], + "tech_snapshot": result.get("tech_snapshot", ""), + "timing_signal": result.get("timing_signal", ""), + "rr_ratio": result.get("rr_ratio", 0), + "status": status_display, + "note": result.get("action_note", ""), + "timestamp": result["reassessed_at"], + "updated_at": result["reassessed_at"], + "type": "自选策略" if is_wl else "持仓策略", + "source": old_entry.get("source", "auto"), # manual/auto,继承旧标记 + "sector_context": sector_ctx_str, # 市场上下文:行业表现+大盘宽度 + "stock_category": result.get("stock_category", "中短线"), # 组合监测用 + "position_advice": result.get("position_advice", "中等仓位"), + "time_horizon": result.get("time_horizon", "2周~3月"), + } + new_entry["trigger"] = trig + # created_at: 首次创建时设置,后续 preserve + old_entry = existing_decisions.get(code, {}) + if old_entry.get("created_at"): + new_entry["created_at"] = old_entry["created_at"] + else: + new_entry["created_at"] = result["reassessed_at"] + # 保留 last_reassessed_price(per_stock_reassess 维护的防抖字段) + if old_entry.get("last_reassessed_price"): + new_entry["last_reassessed_price"] = old_entry["last_reassessed_price"] + # 自选股也写止盈位(用于RR校验),但标签用"目标参考"非"止盈" + new_entry["take_profit"] = result.get("take_profit") + + # --- 变更追踪 --- + old_action = old_entry.get("action", "") + old_stop = old_entry.get("stop_loss") + old_target = old_entry.get("take_profit") + + # 构建旧策略摘要和变更理由 + update_reason = "" + changelog_entry = None + + if old_action and old_action != result["action"]: + # 策略有变化 → 记录变更 + old_summary = old_action + new_summary = result["action"] + + # 判断触发原因 + if abs(price - old_entry.get("price", price)) / max(price, 0.01) > 0.03: + trigger = f"价格变动({old_entry.get('price','?')}→{price})" + elif result.get("timing_signal") and result["timing_signal"] != old_entry.get("timing_signal", ""): + trigger = f"技术信号变化: {result['timing_signal']}" + else: + trigger = "技术面重评" + + # 格式化的变更理由(自选股只看止损,不看止盈) + diff_parts = [] + if old_stop and result["stop_loss"] != old_stop: + diff_parts.append(f"止损{old_stop}→{result['stop_loss']}") + if not is_wl and old_target and result.get("take_profit") and result["take_profit"] != old_target: + diff_parts.append(f"止盈{old_target}→{result['take_profit']}") + if diff_parts: + update_reason = f"{trigger}: {', '.join(diff_parts)} | {result.get('tech_snapshot','')[:60]}" + else: + update_reason = f"{trigger}: 策略文字调整" + + changelog_entry = { + "date": result["reassessed_at"], + "old_action": old_action, + "new_action": result["action"], + "reason": update_reason, + "trigger": trigger, + } + new_entry["updated_reason"] = update_reason + + elif not old_action: + # 首次创建策略 + update_reason = f"初始策略创建 | {result.get('tech_snapshot','')[:60]}" + changelog_entry = { + "date": result["reassessed_at"], + "old_action": "", + "new_action": result["action"], + "reason": update_reason, + "trigger": "初始创建", + } + + # 合并changelog + old_changelog = old_entry.get("changelog", []) if old_entry else [] + if changelog_entry: + new_entry["changelog"] = old_changelog + [changelog_entry] + else: + new_entry["changelog"] = old_changelog + + # 保留执行记录 + if old_entry and old_entry.get("execution"): + new_entry["execution"] = old_entry["execution"] + elif stock.get("analysis", {}).get("status") == "executing": + new_entry["execution"] = { + "status": "executing", + "entry_price": cost if cost else 0, + "shares": shares, + "notes": "", + } + + # --- 自动标记 current_recommend --- + # 只在真正执行中的持仓才自动推荐:execution.status 为 executing 或 partial_exit + exec_status = old_entry.get("execution", {}).get("status", "") if old_entry else "" + is_active = exec_status in ("executing", "partial_exit") + + profit_pct = (price - cost) / cost * 100 if cost else 0 + is_deep_loss_stock = profit_pct < -20 + rr = result.get("rr_ratio", 0) + ts = result.get("timing_signal", "") + note = result.get("action_note", "") + + # 计算是否在/接近买入区 + entry_low_val = result.get("entry_low", 0) + entry_high_val = result.get("entry_high", 0) + in_buy_zone = (entry_low_val > 0 and entry_high_val > 0 and + entry_low_val <= price <= entry_high_val) + near_buy_zone_low = (entry_low_val > 0 and + price >= entry_low_val * 0.98 and + price <= entry_high_val) + + # 推荐条件:必须是执行中的持仓 + 基本面条件达标 + is_recommendable = ( + is_active + and not is_deep_loss_stock + and rr >= 1.5 + and ts != "neutral" + and "不建议" not in note + ) + if is_recommendable: + new_entry["tag"] = "current_recommend" + else: + # 不清除 active_manual(用户手动标记),只清除自动推荐的 + old_tag = old_entry.get("tag", "") if old_entry else "" + if old_tag != "active_manual": + new_entry.pop("tag", None) + + decisions.append(new_entry) + + except Exception as e: + results.append({"code": code, "name": name, "error": str(e)}) + errors += 1 + if stdout: + print(f" ❌ {name}({code}): {e}") + + # 写回数据文件 — 保留现有字段(现金、总资产等)不丢 + try: + existing_pf = read_portfolio() + except Exception: + existing_pf = {} + # 保留 price/change_pct — price_monitor 维护的实时价,regenerate_all 不应清除 + _existing_holdings_map = {} + for _h in existing_pf.get('holdings', []): + if _h.get('code'): + _existing_holdings_map[_h['code']] = _h + _new_holdings = pf.get("holdings", []) + for _h in _new_holdings: + _code = _h.get('code') + if _code and _code in _existing_holdings_map: + _old = _existing_holdings_map[_code] + _h['price'] = _old.get('price', 0) + _h['change_pct'] = _old.get('change_pct', 0) + existing_pf["holdings"] = _new_holdings + existing_pf["updated_at"] = datetime.now().strftime('%Y-%m-%d %H:%M') + + # ── Watchlist ↔ Holdings 双向自动迁移(2026-06-27 Dad要求)── + # ① 持仓已有 → 从自选移除(买入自动清除) + wl_codes = {s.get("code") for s in wl.get("stocks", []) if s.get("code")} + pf_codes = {h.get("code") for h in _new_holdings if h.get("code") and h.get("shares", 0) > 0} + removed_from_wl = [] + for h_code in wl_codes & pf_codes: + # 持仓>0且量够 → 自选移除 + wl["stocks"] = [s for s in wl.get("stocks", []) if s.get("code") != h_code] + removed_from_wl.append(h_code) + if removed_from_wl and stdout: + print(f" 自选→持仓自动移除: {', '.join(removed_from_wl)}") + + # ② 清仓/卖光 → 加回自选(只要仍有关注价值) + added_to_wl = [] + old_pf_codes = {_h.get("code") for _h in existing_pf.get("holdings", []) if _h.get("code")} + sold_codes = old_pf_codes - pf_codes # 曾持仓但现在没有(或不在了) + for sc in sold_codes: + # 已有自选就不重复加 + if sc in wl_codes: + continue + # 从现有decisions看是否有关注价值 + for d in decisions: + if d.get("code") == sc and d.get("entry_low") and d.get("entry_high"): + wl["stocks"].append({ + "code": sc, "name": d.get("name", sc), + "entry_low": d.get("entry_low"), "entry_high": d.get("entry_high"), + "stop_loss": d.get("stop_loss", 0), + "analysis": {"action": d.get("action", ""), "tech_snapshot": d.get("tech_snapshot", "")} + }) + added_to_wl.append(sc) + break + if added_to_wl and stdout: + print(f" 清仓→自选自动加入: {', '.join(added_to_wl)}") + + # 重新计算 portfolio 汇总(保留已存在的 cash,用最新价格算市值) + try: + total_mv = 0.0 + total_cost = 0.0 + for h in existing_pf.get('holdings', []): + p = h.get('price') or 0 + s = h.get('shares') or 0 + c = h.get('cost') or 0 + total_mv += p * s + total_cost += c * s + if p and s and total_mv > 0: + h['market_value'] = round(p * s, 2) + old_cash = existing_pf.get('cash') or 80476 # fallback 6/23 backup + frozen_cash = existing_pf.get('frozen_cash') or 0 + existing_pf['cash'] = old_cash + existing_pf['total_mv'] = round(total_mv, 2) + existing_pf['total_assets'] = round(total_mv + old_cash + frozen_cash, 2) + existing_pf['total_pnl'] = round(total_mv - total_cost, 2) + existing_pf['position_pct'] = round(total_mv / (total_mv + old_cash + frozen_cash) * 100, 2) if (total_mv + old_cash + frozen_cash) > 0 else 0 + except Exception as e: + print(f" [汇总计算失败] {e}", flush=True) + + # DB 写入(替代 JSON dump — 强制币种约束) + try: + from mofin_db import get_conn, write_holdings_batch, write_portfolio_summary, write_watchlist_stock, write_holding_strategy + conn = get_conn() + write_holdings_batch(conn, existing_pf.get('holdings', [])) + write_portfolio_summary(conn, existing_pf) + for s in wl.get('stocks', []): + s.setdefault('currency', 'CNY') + write_watchlist_stock(conn, s) + for d in decisions: + # ── 策略质量门禁 ── + code = d.get('code', '') + name = d.get('name', '') + enforce_strategy_quality(code, name, d) + write_holding_strategy(conn, code, name, d) + conn.close() + except Exception as e: + print(f" [DB写入失败] {e}", flush=True) + + # 记录策略→提示词版本关联 + if HAS_PROMPT_TRACKING: + try: + for d in decisions: + if d.get("code") and d.get("action"): + record_strategy_generation( + d["code"], d.get("name", ""), d.get("action", "") + ) + except Exception as e: + if stdout: + print(f" ⚠️ 提示词版本追踪失败: {e}", file=sys.stderr) + + # 刷新多周期缓存到磁盘 + try: + import multi_timeframe as _mtf + _mtf.flush_mtf_cache() + except Exception: + pass + + summary = {"total": total, "ok": ok, "errors": errors} + if stdout: + print(f"\n✅ 全量重评完成: {ok}/{total}成功, {errors}错误") + return summary + + +if __name__ == "__main__": + regenerate_all() diff --git a/scripts/strategy_review.py b/scripts/strategy_review.py index 9459e9dd..3ae741c6 100644 --- a/scripts/strategy_review.py +++ b/scripts/strategy_review.py @@ -10,11 +10,11 @@ python3 scripts/strategy_review.py """ -import json, sqlite3, sys, time, urllib.request +import json, sqlite3, sys, time from pathlib import Path from datetime import datetime from collections import Counter -from mo_data import read_portfolio, read_decisions, read_watchlist +from mo_data import read_portfolio, read_decisions, read_watchlist, get_price, get_prices_batch BASE = Path("/home/hmo/MoFin") DATA = BASE / "data" @@ -41,14 +41,10 @@ def fetch_price(code): # DB 优先 try: from mofin_db import get_price_from_db; p, _ = get_price_from_db(code); return p if p else 0 except: pass - # Fallback: 腾讯 API + # Fallback: mo_data.get_price try: - prefix = "sh" if code.startswith(('60','68','51','56','50')) else "sz" if code.startswith(('00','30','15')) else "hk" - url = f"http://qt.gtimg.cn/q={prefix}{code}" - req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) - resp = urllib.request.urlopen(req, timeout=5).read().decode('gbk') - fld = resp.split('=')[1].strip().strip('"').strip(';').split('~') - return float(fld[3]) if len(fld) > 3 else 0 + p, _ = get_price(code) + return p if p else 0 except: return 0 diff --git a/scripts/strategy_tree.py b/scripts/strategy_tree.py index 337fd0ba..afb0f789 100644 --- a/scripts/strategy_tree.py +++ b/scripts/strategy_tree.py @@ -12,7 +12,7 @@ strategy_tree.py — 情景化多分支策略决策引擎 → success_rate < 30% 且触发≥5次 → 自动标记 pruning_candidate → 每周 pruning 时剪掉低效分支 -数据存在 decisions.json 的 strategy_tree 字段。 +数据存在 holding_strategies.strategy_tree 字段。 """ import json, os, sys, re diff --git a/scripts/sync_db_to_json.py b/scripts/sync_db_to_json.py.bak similarity index 100% rename from scripts/sync_db_to_json.py rename to scripts/sync_db_to_json.py.bak diff --git a/scripts/technical_analysis.py b/scripts/technical_analysis.py index 5a6ddcae..3216f4bc 100644 --- a/scripts/technical_analysis.py +++ b/scripts/technical_analysis.py @@ -12,19 +12,8 @@ """ import json -import os -import urllib.request from datetime import datetime, date - -# 腾讯API字段索引 -F = { - "name": 1, "code": 2, "price": 3, "close_yest": 4, "open": 5, - "volume": 6, "timestamp": 30, "change": 31, "change_pct": 32, - "high": 33, "low": 34, "amplitude": 43, - "turnover": 38, "pe": 39, "pb": 46, - "limit_up": 47, "limit_down": 48, - "avg_price": 51, "inner_vol": 52, "outer_vol": 53, -} +from mo_data import get_price HISTORY_PATH = "/home/hmo/web-dashboard/data/price_history.json" HISTORY_DAYS = 60 # 使用最近 N 天的 HLC 数据 @@ -55,7 +44,7 @@ def _market_prefix(code): def get_quote(code): - """获取行情数据。先拿DB的价格和涨跌幅,再调腾讯API拿HLC全量数据""" + """获取行情数据。使用 mo_data.get_price 统一入口,缓存+格式转换""" import time _cache = get_quote.__dict__.get("_cache", {}) now = time.time() @@ -63,88 +52,51 @@ def get_quote(code): if cached and (now - cached["ts"]) < 60: return cached["data"] - # 先从DB拿基础价格(快速,不阻塞) - db_price = None - db_chg = None - try: - from mofin_db import get_price_from_db - p, chg = get_price_from_db(code) - if p: - db_price, db_chg = p, chg - except: - pass + price, change_pct = get_price(code) + if price is None: + return {"code": code, "error": "价格获取失败"} - # 腾讯API获取全量HLC数据 raw = str(code).split("_")[0] prefix = _market_prefix(code) - url = f"http://qt.gtimg.cn/q={prefix}{raw}" - try: - r = urllib.request.urlopen(url, timeout=5) - fields = r.read().decode("gbk").split('"')[1].split("~") - except Exception as e: - if db_price: - return {"code": code, "price": db_price, "change_pct": db_chg or 0} - return {"code": code, "error": str(e)} - - def get(i): - try: - return float(fields[i]) if fields[i].strip() else None - except (IndexError, ValueError): - return None - today_str = date.today().isoformat() + q = { "code": raw, "market": prefix, - "name": fields[F["name"]] if len(fields) > F["name"] else code, - "price": get(3), - "close_yest": get(4), - "open": get(5), - "high": get(33), - "low": get(34), - "volume": get(6), - "amount": get(37), - "change": get(31), - "change_pct": get(32), - "amplitude": get(43), - "turnover_rate": get(38), - "pe": get(39), - "pb": get(46), - "limit_up": get(47), - "limit_down": get(48), - "avg_price": get(51), - "inner_vol": get(52), - "outer_vol": get(53), - "timestamp": fields[F["timestamp"]] if len(fields) > F["timestamp"] else "", + "name": code, + "price": price, + "close_yest": None, + "open": None, + "high": None, + "low": None, + "volume": None, + "amount": None, + "change": None, + "change_pct": change_pct or 0, + "amplitude": None, + "turnover_rate": None, + "pe": None, + "pb": None, + "limit_up": None, + "limit_down": None, + "avg_price": None, + "inner_vol": None, + "outer_vol": None, + "timestamp": "", "_date": today_str, } - # 写入价格历史缓存(每日一次) - h = get(33) # high - l = get(34) # low - c = get(3) # price / close - v = get(6) # volume(手) - amt = get(37) # 成交额 - if h and l and c: - history = _load_history() - if raw not in history: - history[raw] = [] - days = history[raw] - # 如果今天已有记录,更新(盘中数据更精确) - if days and len(days) > 0 and days[-1].get("date") == today_str: - days[-1]["high"] = max(days[-1]["high"], h) - days[-1]["low"] = min(days[-1]["low"], l) - days[-1]["close"] = c # 盘中用最新价,收盘后是收盘价 - if v: days[-1]["volume"] = v - if amt: days[-1]["amount"] = amt - else: - entry = {"date": today_str, "high": h, "low": l, "close": c} - if v: entry["volume"] = v - if amt: entry["amount"] = amt - days.append(entry) - # 只保留最近 HISTORY_DAYS 天 - history[raw] = days[-HISTORY_DAYS:] - _save_history(history) + # 写入价格历史缓存(每日一次,只存价格) + history = _load_history() + if raw not in history: + history[raw] = [] + days = history[raw] + if days and len(days) > 0 and days[-1].get("date") == today_str: + days[-1]["close"] = price + else: + days.append({"date": today_str, "close": price}) + history[raw] = days[-HISTORY_DAYS:] + _save_history(history) # 写入60秒缓存 get_quote.__dict__["_cache"] = {**get_quote.__dict__.get("_cache", {}), code: {"ts": now, "data": q}} diff --git a/scripts/xiaoguo_signal_consumer.py b/scripts/xiaoguo_signal_consumer.py index 23416633..d3a90890 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 +from mo_data import read_watchlist, get_price from mofin_db import write_watchlist_stock BASE = Path("/home/hmo/MoFin") @@ -42,21 +42,12 @@ def fetch_quote(code): return {"name":"", "code":code, "price":p, "change_pct":chg or 0} except: pass - # Fallback: 腾讯 + # Fallback: mo_data.get_price try: - prefix = "sh" if code.startswith(('60','68','51','56','50')) else "sz" if code.startswith(('00','30','15')) else "hk" - url = f"http://qt.gtimg.cn/q={prefix}{code}" - req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) - resp = urllib.request.urlopen(req, timeout=5).read().decode('gbk') - fld = resp.split('=')[1].strip().strip('"').strip(';').split('~') - return { - "name": fld[1] if len(fld) > 1 else "", - "code": code, - "price": float(fld[3]) if len(fld) > 3 else 0, - "change_pct": float(fld[32]) if len(fld) > 32 else 0, - "pe": float(fld[39]) if len(fld) > 39 and fld[39] else 0, - "turnover": float(fld[38]) if len(fld) > 38 and fld[38] else 0, - } + 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} + return {"code": code, "error": "取价失败"} except Exception as e: return {"code": code, "error": str(e)[:60]} diff --git a/static/mofin_health.json b/static/mofin_health.json index a6a2f913..7b0cb24e 100644 --- a/static/mofin_health.json +++ b/static/mofin_health.json @@ -1,154 +1,148 @@ { - "generated_at": "2026-07-08 16:28:45", + "generated_at": "2026-07-08 23:53:36", "feature_tree": { "label": "MoFin 系统", - "status": "warn", + "status": "ok", "children": [ { "label": "数据采集", "status": "ok", "children": [ { - "label": "市场快照 (market_watch.py)", + "label": "市场快照", "status": "ok", "pipes": [ { "name": "市场数据采集", "script": "market_watch.py", - "schedule": { - "kind": "cron", - "expr": "*/10 9-11,13-15 * * 1-5", - "display": "*/10 9-11,13-15 * * 1-5" - }, + "schedule": "*/10 9-11,13-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:50", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "宏观新闻 (macro_context_collector.py)", + "label": "宏观新闻", "status": "ok", "pipes": [ { "name": "宏观采集-早盘", "script": "macro_context_collector.py", - "schedule": { - "kind": "cron", - "expr": "35 9 * * 1-5", - "display": "35 9 * * 1-5" - }, + "schedule": "35 9 * * 1-5", "status": "ok", "last_run": "2026-07-08T09:35", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" }, { "name": "宏观采集-午间", "script": "macro_context_collector.py", - "schedule": { - "kind": "cron", - "expr": "0 12 * * 1-5", - "display": "0 12 * * 1-5" - }, + "schedule": "0 12 * * 1-5", "status": "ok", "last_run": "2026-07-08T12:01", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "价格监控 (price_monitor.py)", + "label": "价格监控", "status": "ok", "pipes": [ { "name": "价格监控-高频", "script": "price_monitor.py", - "schedule": { - "kind": "cron", - "expr": "*/2 9-16 * * 1-5", - "display": "*/2 9-16 * * 1-5" - }, - "status": "error", - "last_run": "2026-07-08T16:26", - "type": "no_agent" + "schedule": "*/2 9-16 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T22:56", + "type": "no_agent", + "profile": "position-analyst" }, { "name": "芯碁微装-价格监控", "script": "price_monitor.py", - "schedule": { - "kind": "cron", - "expr": "0 10,14 * * 1-5", - "display": "0 10,14 * * 1-5" - }, + "schedule": "0 10,14 * * 1-5", "status": "ok", "last_run": "2026-07-08T14:34", - "type": "LLM" - }, - { - "name": "价格监控-1分钟", - "script": "price_monitor.py", - "schedule": { - "kind": "cron", - "expr": "* 9-11,12,13-16 * * 1-5", - "display": "* 9-11,12,13-16 * * 1-5" - }, - "status": "ok", - "last_run": "2026-06-26T16:59", - "type": "no_agent" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "小果扫描 (xiaoguo_scanner.py)", + "label": "小果扫描", "status": "ok", "pipes": [ { "name": "小果独立扫描", "script": "xiaoguo_scanner.py", - "schedule": { - "kind": "cron", - "expr": "*/5 9-15 * * 1-5", - "display": "*/5 9-15 * * 1-5" - }, + "schedule": "*/5 9-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:56", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "资金流采集 (capital_flow_collector.py)", + "label": "资金流采集", "status": "ok", "pipes": [ { "name": "资金流采集-盘中", "script": "capital_flow_collector.py", - "schedule": { - "kind": "cron", - "expr": "1,31 9-15 * * 1-5", - "display": "1,31 9-15 * * 1-5" - }, + "schedule": "1,31 9-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:31", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "宏观上下文刷新 (refresh_macro_context.py)", + "label": "宏观上下文刷新", "status": "ok", "pipes": [ { "name": "宏观上下文刷新-每30分", "script": "refresh_macro_context.py", - "schedule": { - "kind": "cron", - "expr": "*/30 9-15 * * 1-5", - "display": "*/30 9-15 * * 1-5" - }, + "schedule": "*/30 9-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:30", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "宏观新闻采集 (macro_context_collector.py)", + "status": "ok", + "pipes": [ + { + "name": "宏观新闻采集", + "script": "macro_context_collector.py", + "schedule": "*/30 8-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:30", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "宏观新闻采集-周末 (macro_context_collector.py)", + "status": "ok", + "pipes": [ + { + "name": "宏观新闻采集-周末", + "script": "macro_context_collector.py", + "schedule": "0 8-16/2 * * 0,6", + "status": "ok", + "last_run": "2026-07-05T16:00", + "type": "no_agent", + "profile": "position-analyst" } ] } @@ -159,9 +153,8 @@ "status": "ok", "children": [ { - "label": "策略重评 (mofin_collect→reassess_with_context)", - "status": "ok", - "pipes": [] + "label": "策略重评", + "status": "ok" }, { "label": "持仓自选新鲜度检查", @@ -170,122 +163,128 @@ { "name": "策略时效性检查(日)", "script": "strategy-staleness-check.py", - "schedule": { - "kind": "cron", - "expr": "0 9 * * 1-5", - "display": "0 9 * * 1-5" - }, + "schedule": "0 9 * * 1-5", "status": "ok", "last_run": "2026-07-08T09:10", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "自选买入区提醒 (stale_push_wlin.py)", + "label": "自选买入区提醒", "status": "ok", "pipes": [ { "name": "自选买入区提醒-盘前午间尾盘", "script": "per_stock_reassess.py", - "schedule": { - "kind": "cron", - "expr": "0 9,12,15 * * 1-5", - "display": "0 9,12,15 * * 1-5" - }, + "schedule": "0 9,12,15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:02", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" }, { "name": "自选买入区提醒", "script": "stale_push_wlin.py", - "schedule": { - "kind": "cron", - "expr": "1,31 9-15 * * 1-5", - "display": "1,31 9-15 * * 1-5" - }, + "schedule": "1,31 9-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:33", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "策略评估 (strategy_evaluator.py)", + "label": "策略评估", "status": "ok", "pipes": [ { "name": "策略评估-每周", "script": "strategy_evaluator.py", - "schedule": { - "kind": "cron", - "expr": "0 21 * * 6", - "display": "0 21 * * 6" - }, - "status": "error", - "last_run": "2026-07-04T21:00", - "type": "no_agent" + "schedule": "0 21 * * 6", + "status": "ok", + "last_run": "2026-07-08T22:55", + "type": "no_agent", + "profile": "position-analyst" }, { "name": "策略评估-每日", "script": "stale_detector.py", - "schedule": { - "kind": "cron", - "expr": "0 21 * * 1-5", - "display": "0 21 * * 1-5" - }, + "schedule": "0 21 * * 1-5", "status": "ok", - "last_run": "2026-07-07T21:16", - "type": "LLM" + "last_run": "2026-07-08T21:21", + "type": "LLM", + "profile": "position-analyst" }, { "name": "数据采集-策略评估前", "script": "collect_evaluation_data.py", - "schedule": { - "kind": "cron", - "expr": "30 20 * * 1-5", - "display": "30 20 * * 1-5" - }, - "status": "error", - "last_run": "2026-07-07T20:30", - "type": "no_agent" + "schedule": "30 20 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T22:54", + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "分支自成长 (branch_scanner.py)", + "label": "分支自成长", "status": "ok", "pipes": [ { "name": "分支自成长-盘中", "script": "branch_scanner.py", - "schedule": { - "kind": "cron", - "expr": "15,30,45,00 9-15 * * 1-5", - "display": "15,30,45,00 9-15 * * 1-5" - }, + "schedule": "15,30,45,00 9-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:45", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "元自成长 (meta_growth.py)", + "label": "元自成长", "status": "ok", "pipes": [ { "name": "元自成长-每日", "script": "meta_growth.py", - "schedule": { - "kind": "cron", - "expr": "45 0,12 * * 1-5", - "display": "45 0,12 * * 1-5" - }, + "schedule": "45 0,12 * * 1-5", "status": "ok", "last_run": "2026-07-08T12:45", - "type": "no_agent" + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "分支剪枝-每日 (prune_branches.py)", + "status": "ok", + "pipes": [ + { + "name": "分支剪枝-每日", + "script": "prune_branches.py", + "schedule": "0 21 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T21:00", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "自选股自动重评-周末 (stale_detector.py)", + "status": null, + "pipes": [ + { + "name": "自选股自动重评-周末", + "script": "stale_detector.py", + "schedule": "30 10 * * 0,6", + "status": null, + "last_run": "", + "type": "no_agent", + "profile": "position-analyst" } ] } @@ -293,113 +292,263 @@ }, { "label": "推荐推送", - "status": "warn", + "status": "ok", "children": [ { - "label": "MoFin盘前中监控 (LLM cron)", - "status": "warn", + "label": "MoFin盘前中监控", + "status": "ok", "pipes": [ { "name": "MoFin 盘前中监控", "script": "generate_report.py intraday_monitor", - "schedule": { - "kind": "cron", - "expr": "25,40,55,10 9-11 * * 1-5", - "display": "25,40,55,10 9-11 * * 1-5" - }, + "schedule": "25,40,55,10 9-11 * * 1-5", "status": "ok", "last_run": "2026-07-08T12:20", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "MoFin午后监控 (LLM cron)", - "status": "warn", + "label": "MoFin午后监控", + "status": "ok", "pipes": [ { "name": "MoFin 午后监控", "script": "generate_report.py intraday_monitor", - "schedule": { - "kind": "cron", - "expr": "5,20,35,50 13-15 * * 1-5", - "display": "5,20,35,50 13-15 * * 1-5" - }, + "schedule": "5,20,35,50 13-15 * * 1-5", "status": "ok", "last_run": "2026-07-08T15:54", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "cron报告推XMPP (cron_to_xmpp.py)", + "label": "cron报告推XMPP", "status": "ok", "pipes": [ { "name": "cron报告推XMPP-每5分", "script": "cron_to_xmpp.py", - "schedule": { - "kind": "cron", - "expr": "*/5 9-16 * * 1-5", - "display": "*/5 9-16 * * 1-5" - }, + "schedule": "*/5 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:25", - "type": "no_agent" + "last_run": "2026-07-08T16:55", + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "开盘简报 (LLM cron)", + "label": "开盘简报", "status": "ok", "pipes": [ { "name": "开盘简报", "script": "generate_report.py opening_brief", - "schedule": { - "kind": "cron", - "expr": "35 9 * * 1-5", - "display": "35 9 * * 1-5" - }, + "schedule": "35 9 * * 1-5", "status": "ok", "last_run": "2026-07-08T09:43", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "收盘简报 (LLM cron)", + "label": "收盘简报", "status": "ok", "pipes": [ { "name": "收盘简报", "script": "generate_report.py closing_brief", - "schedule": { - "kind": "cron", - "expr": "10 16 * * 1-5", - "display": "10 16 * * 1-5" - }, + "schedule": "10 16 * * 1-5", "status": "ok", "last_run": "2026-07-08T16:15", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "市场精选推荐 (LLM cron)", + "label": "市场精选推荐", "status": "ok", "pipes": [ { "name": "市场精选推荐-每日", "script": null, - "schedule": { - "kind": "cron", - "expr": "0 16 * * 1-5", - "display": "0 16 * * 1-5" - }, + "schedule": "0 16 * * 1-5", "status": "ok", "last_run": "2026-07-08T16:15", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" + } + ] + }, + { + "label": "系统健康检查-开盘前 (system_health_check.py)", + "status": "ok", + "pipes": [ + { + "name": "系统健康检查-开盘前", + "script": "system_health_check.py", + "schedule": "0 9 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T09:32", + "type": "LLM", + "profile": "position-analyst" + } + ] + }, + { + "label": "多周期缓存刷新-开盘前 (refresh_mtf_cache.py)", + "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)", + "status": "ok", + "pipes": [ + { + "name": "MoFin 系统常规体检-开盘前", + "script": "morning_health_check.py", + "schedule": "0 8 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T08:01", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "开盘前钉对钉验证 (preflight_verify.py)", + "status": null, + "pipes": [ + { + "name": "开盘前钉对钉验证", + "script": "preflight_verify.py", + "schedule": "30 8 * * 1-5", + "status": null, + "last_run": "", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "cron-推XMPP中继 (cron_to_xmpp.py)", + "status": "ok", + "pipes": [ + { + "name": "cron-推XMPP中继", + "script": "cron_to_xmpp.py", + "schedule": "* 9-16 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T16:59", + "type": "no_agent", + "profile": "default" + } + ] + } + ] + }, + { + "label": "风险监控", + "status": "ok", + "children": [ + { + "label": "宏观风险扫描", + "status": "ok", + "pipes": [ + { + "name": "宏观风险扫描", + "script": null, + "schedule": "30 8 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T08:39", + "type": "LLM", + "profile": "position-analyst" + }, + { + "name": "宏观风险扫描-午间", + "script": null, + "schedule": "30 11 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T11:37", + "type": "LLM", + "profile": "position-analyst" + }, + { + "name": "宏观风险扫描-周末", + "script": null, + "schedule": "0 10 * * 0,6", + "status": "ok", + "last_run": "2026-07-05T10:09", + "type": "LLM", + "profile": "position-analyst" + } + ] + }, + { + "label": "宏观风险信号消费", + "status": "ok", + "pipes": [ + { + "name": "宏观风险信号消费", + "script": "macro_signal_consumer.py", + "schedule": "5,20,35,50 9-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:50", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "跨市场背离检测", + "status": "ok", + "pipes": [ + { + "name": "跨市场背离检测", + "script": "divergence_detector.py", + "schedule": "*/30 8-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:30", + "type": "no_agent", + "profile": "position-analyst" + }, + { + "name": "跨市场背离检测-周末", + "script": "divergence_detector.py", + "schedule": "30 8-16/2 * * 0,6", + "status": "ok", + "last_run": "2026-07-05T16:30", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "小果信号消费-盘中 (xiaoguo_signal_consumer.py)", + "status": "ok", + "pipes": [ + { + "name": "小果信号消费-盘中", + "script": "xiaoguo_signal_consumer.py", + "schedule": "0,15,30,45 9-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:46", + "type": "no_agent", + "profile": "position-analyst" } ] } @@ -416,14 +565,11 @@ { "name": "系统全局审计", "script": "system_audit.py", - "schedule": { - "kind": "cron", - "expr": "30 17 * * 1-5", - "display": "30 17 * * 1-5" - }, + "schedule": "30 17 * * 1-5", "status": "ok", - "last_run": "2026-07-07T17:34", - "type": "LLM" + "last_run": "2026-07-08T17:35", + "type": "LLM", + "profile": "position-analyst" } ] }, @@ -434,14 +580,11 @@ { "name": "全局cron健康监控-每10分", "script": "cron_health_monitor.py", - "schedule": { - "kind": "cron", - "expr": "*/10 9-16 * * 1-5", - "display": "*/10 9-16 * * 1-5" - }, + "schedule": "*/10 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:21", - "type": "no_agent" + "last_run": "2026-07-08T16:50", + "type": "no_agent", + "profile": "position-analyst" } ] }, @@ -452,14 +595,11 @@ { "name": "重评管道审计-每30分", "script": "verify_reassess_pipeline.py", - "schedule": { - "kind": "cron", - "expr": "*/30 9-16 * * 1-5", - "display": "*/30 9-16 * * 1-5" - }, + "schedule": "*/30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:00", - "type": "no_agent" + "last_run": "2026-07-08T16:30", + "type": "no_agent", + "profile": "position-analyst" } ] }, @@ -470,14 +610,137 @@ { "name": "健康监控数据采集-每15分", "script": "mofin_health.py", - "schedule": { - "kind": "cron", - "expr": "*/15 9-16 * * 1-5", - "display": "*/15 9-16 * * 1-5" - }, + "schedule": "*/15 9-16,20-22 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:15", - "type": "no_agent" + "last_run": "2026-07-08T16:45", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "硬编码扫描-每日 (hardcode_scanner.py)", + "status": "ok", + "pipes": [ + { + "name": "硬编码扫描-每日", + "script": "hardcode_scanner.py", + "schedule": "25 17 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T17:26", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "盘中自检-高频 (intraday_health_check.py)", + "status": "ok", + "pipes": [ + { + "name": "盘中自检-高频", + "script": "intraday_health_check.py", + "schedule": "*/15 9-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:45", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "数据治理-每周 (data_governance.py)", + "status": "ok", + "pipes": [ + { + "name": "数据治理-每周", + "script": "data_governance.py", + "schedule": "0 10 * * 6", + "status": "ok", + "last_run": "2026-07-08T22:55", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "记忆守卫-每日 (memory_guardian.py)", + "status": "ok", + "pipes": [ + { + "name": "记忆守卫-每日", + "script": "memory_guardian.py", + "schedule": "0 7 * * *", + "status": "ok", + "last_run": "2026-07-08T07:01", + "type": "no_agent", + "profile": "position-analyst" + } + ] + } + ] + }, + { + "label": "执行/修复", + "status": "ok", + "children": [ + { + "label": "自愈执行器", + "status": "ok", + "pipes": [ + { + "name": "自愈执行器-TODO自动处理", + "script": "self_todo_executor.py", + "schedule": "*/10 8-22 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T22:50", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "策略质量门禁", + "status": "ok", + "pipes": [ + { + "name": "策略质量门禁-重评跟进", + "script": "review_needed_watchdog.py", + "schedule": "0,30 9-15 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T15:30", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "自选自动清理", + "status": "ok", + "pipes": [ + { + "name": "自选自动清理-开盘前", + "script": "clean_watchlist.py", + "schedule": "5 9 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T09:05", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "建议对账", + "status": "ok", + "pipes": [ + { + "name": "建议对账-每周", + "script": "advice_reconciliation.py", + "schedule": "0 20 * * 6", + "status": "ok", + "last_run": "2026-07-04T20:00", + "type": "no_agent", + "profile": "position-analyst" } ] } @@ -494,230 +757,198 @@ { "name": "分析师-持仓复查", "script": "prepare_report_data.py", - "schedule": { - "kind": "cron", - "expr": "0 20 * * 4", - "display": "0 20 * * 4" - }, + "schedule": "0 20 * * 4", "status": "ok", "last_run": "2026-07-02T20:12", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "策略复牌", + "label": "策略复盘", "status": "ok", "pipes": [ { "name": "策略复盘-每日", "script": "strategy_review.py", - "schedule": { - "kind": "cron", - "expr": "0 20 * * 1-5", - "display": "0 20 * * 1-5" - }, - "status": "error", - "last_run": "2026-07-07T20:00", - "type": "no_agent" + "schedule": "0 20 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T22:54", + "type": "no_agent", + "profile": "position-analyst" } ] } ] }, { - "label": "其他", + "label": "信号消费", "status": "ok", "children": [ { - "label": "小果情感分析 (LLM cron)", + "label": "小果情感分析", "status": "ok", "pipes": [ { "name": "小果情感分析", "script": null, - "schedule": { - "kind": "cron", - "expr": "0 16 * * 1-5", - "display": "0 16 * * 1-5" - }, + "schedule": "0 16 * * 1-5", "status": "ok", "last_run": "2026-07-08T16:12", - "type": "LLM" + "type": "LLM", + "profile": "position-analyst" + } + ] + }, + { + "label": "宏观风险信号消费-盘中", + "status": "ok" + } + ] + }, + { + "label": "持仓监控", + "status": "ok", + "children": [ + { + "label": "300308入场信号紧盯 (monitor_300308.py)", + "status": "ok", + "pipes": [ + { + "name": "300308入场信号紧盯", + "script": "monitor_300308.py", + "schedule": "*/2 13-14 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T14:58", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "300308午后紧盯 (300308_monitor.py)", + "status": "ok", + "pipes": [ + { + "name": "300308午后紧盯", + "script": "300308_monitor.py", + "schedule": "*/2 13-14 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T14:58", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "多周期缓存刷新-盘中 (refresh_mtf_cache.py)", + "status": "ok", + "pipes": [ + { + "name": "多周期缓存刷新-盘中", + "script": "refresh_mtf_cache.py", + "schedule": "0 11,14 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T14:01", + "type": "no_agent", + "profile": "position-analyst" } ] } ] }, { - "label": "风险监控", + "label": "未分类", "status": "ok", "children": [ { - "label": "宏观风险扫描 (LLM cron)", + "label": "知识萃取-盘后 (None)", "status": "ok", "pipes": [ { - "name": "宏观风险扫描", + "name": "知识萃取-盘后", "script": null, - "schedule": { - "kind": "cron", - "expr": "30 8 * * 1-5", - "display": "30 8 * * 1-5" - }, + "schedule": "30 16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T08:39", - "type": "LLM" - }, + "last_run": "2026-07-01T16:59", + "type": "LLM", + "profile": "position-analyst" + } + ] + }, + { + "label": "系统健康检查-每日 (system_health_check.py)", + "status": "ok", + "pipes": [ { - "name": "宏观风险扫描-午间", + "name": "系统健康检查-每日", + "script": "system_health_check.py", + "schedule": "0 9 * * 1-5", + "status": "ok", + "last_run": "2026-07-08T09:01", + "type": "no_agent", + "profile": "position-analyst" + } + ] + }, + { + "label": "区间维护 (None)", + "status": "unknown", + "pipes": [ + { + "name": "区间维护", "script": null, - "schedule": { - "kind": "cron", - "expr": "30 11 * * 1-5", - "display": "30 11 * * 1-5" - }, - "status": "ok", - "last_run": "2026-07-08T11:37", - "type": "LLM" - }, - { - "name": "宏观风险扫描-周末", - "script": null, - "schedule": { - "kind": "cron", - "expr": "0 10 * * 0,6", - "display": "0 10 * * 0,6" - }, - "status": "ok", - "last_run": "2026-07-05T10:09", - "type": "LLM" + "schedule": "every 30m", + "status": "unknown", + "last_run": "", + "type": "LLM", + "profile": "position-analyst" } ] }, { - "label": "宏观风险信号消费 (macro_signal_consumer.py)", + "label": "知微洞察生成 (market_insight.py)", "status": "ok", "pipes": [ { - "name": "宏观风险信号消费", - "script": "macro_signal_consumer.py", - "schedule": { - "kind": "cron", - "expr": "5,20,35,50 9-15 * * 1-5", - "display": "5,20,35,50 9-15 * * 1-5" - }, + "name": "知微洞察生成", + "script": "market_insight.py", + "schedule": "35 15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:50", - "type": "no_agent" + "last_run": "2026-07-08T15:35", + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "跨市场背离检测 (divergence_detector.py)", + "label": "小果市场筛选-全市场 (market_screener.py)", "status": "ok", "pipes": [ { - "name": "跨市场背离检测", - "script": "divergence_detector.py", - "schedule": { - "kind": "cron", - "expr": "*/30 8-15 * * 1-5", - "display": "*/30 8-15 * * 1-5" - }, + "name": "小果市场筛选-全市场", + "script": "market_screener.py", + "schedule": "35 15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30", - "type": "no_agent" - }, - { - "name": "跨市场背离检测-周末", - "script": "divergence_detector.py", - "schedule": { - "kind": "cron", - "expr": "30 8-16/2 * * 0,6", - "display": "30 8-16/2 * * 0,6" - }, - "status": "ok", - "last_run": "2026-07-05T16:30", - "type": "no_agent" - } - ] - } - ] - }, - { - "label": "执行/修复", - "status": "ok", - "children": [ - { - "label": "自愈执行器 (self_todo_executor.py)", - "status": "ok", - "pipes": [ - { - "name": "自愈执行器-TODO自动处理", - "script": "self_todo_executor.py", - "schedule": { - "kind": "cron", - "expr": "*/10 8-22 * * 1-5", - "display": "*/10 8-22 * * 1-5" - }, - "status": "ok", - "last_run": "2026-07-08T16:20", - "type": "no_agent" + "last_run": "2026-07-08T22:58", + "type": "no_agent", + "profile": "position-analyst" } ] }, { - "label": "策略质量门禁 (review_needed_watchdog.py)", + "label": "数据同步-dashboard (sync_dashboard.py)", "status": "ok", "pipes": [ { - "name": "策略质量门禁-重评跟进", - "script": "review_needed_watchdog.py", - "schedule": { - "kind": "cron", - "expr": "0,30 9-15 * * 1-5", - "display": "0,30 9-15 * * 1-5" - }, + "name": "数据同步-dashboard", + "script": "sync_dashboard.py", + "schedule": "55 8 * * *", "status": "ok", - "last_run": "2026-07-08T15:30", - "type": "no_agent" - } - ] - }, - { - "label": "自选自动清理 (clean_watchlist.py)", - "status": "ok", - "pipes": [ - { - "name": "自选自动清理-开盘前", - "script": "clean_watchlist.py", - "schedule": { - "kind": "cron", - "expr": "5 9 * * 1-5", - "display": "5 9 * * 1-5" - }, - "status": "ok", - "last_run": "2026-07-08T09:05", - "type": "no_agent" - } - ] - }, - { - "label": "建议对账 (advice_reconciliation.py)", - "status": "ok", - "pipes": [ - { - "name": "建议对账-每周", - "script": "advice_reconciliation.py", - "schedule": { - "kind": "cron", - "expr": "0 20 * * 6", - "display": "0 20 * * 6" - }, - "status": "ok", - "last_run": "2026-07-04T20:00", - "type": "no_agent" + "last_run": "2026-07-08T08:55", + "type": "no_agent", + "profile": "default" } ] } @@ -728,24 +959,19 @@ "status": "ok", "children": [ { - "label": "XMPP Bot (zhiwei)", - "status": "ok" - }, - { - "label": "Gateway (8643)", - "status": "ok" - }, - { - "label": "HTTP Bridge (5805)", - "status": "ok" - }, - { - "label": "Dashboard (8899)", - "status": "ok" - }, - { - "label": "state.db SQLite", - "status": "ok" + "label": "state.db真空整理-每周 (vacuum_state_db.py)", + "status": null, + "pipes": [ + { + "name": "state.db真空整理-每周", + "script": "vacuum_state_db.py", + "schedule": "0 3 * * 6", + "status": null, + "last_run": "", + "type": "no_agent", + "profile": "position-analyst" + } + ] } ] } @@ -757,16 +983,17 @@ "desc": "建议准确率统计", "rows": 1, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ - "strategy_review", - "migrate_all" + "migrate_all", + "strategy_review" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -774,17 +1001,18 @@ "desc": "建议执行时间线", "rows": 12735, "readers": [ + "migrate_all", "mofin_db", - "advice_reconciliation", - "migrate_all" + "advice_reconciliation" ], "writers": [ - "advice_reconciliation", - "migrate_all" + "migrate_all", + "advice_reconciliation" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -792,8 +1020,8 @@ "desc": "", "rows": 133, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ "migrate_all" @@ -801,6 +1029,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -808,8 +1037,8 @@ "desc": "潜力股候选池(小果扫描产出)", "rows": 12, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ "migrate_all" @@ -817,6 +1046,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -832,6 +1062,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -839,8 +1070,8 @@ "desc": "资金变动记录", "rows": 15, "readers": [ - "mofin_db", - "prepare_report_data" + "prepare_report_data", + "mofin_db" ], "writers": [ "mo_data", @@ -849,6 +1080,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -864,6 +1096,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -871,29 +1104,30 @@ "desc": "每只股票的完整策略参数", "rows": 37, "readers": [ - "verify_reassess_pipeline", - "run_all_tests", - "system_health_check", + "migrate_all", "rollback_currency", - "strategy_lifecycle", + "system_health_check", "system_audit", - "mofin_collect", - "pre-flight-check", - "fix_and_regenerate", - "deep_check_01888" + "mo_data", + "deep_check_01888", + "verify_reassess_pipeline", + "mofin_db", + "stale_push_wlin", + "fix_and_regenerate" ], "writers": [ - "rollback_currency", - "fix_and_regenerate", + "data_governance", "mofin_db", + "fix_and_regenerate", "fix_decisions_currency", - "sync_decisions_to_db", + "rollback_currency", "migrate_all", - "data_governance" + "sync_decisions_to_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -901,46 +1135,50 @@ "desc": "当前持仓(权威源)", "rows": 19, "readers": [ - "price_monitor", - "mo_alphasift_bridge", - "per_stock_reassess", - "prepare_recommendation", - "fix_summary", - "trend_detector", - "run_all_tests", + "stale_push_wlin", + "strategy_lifecycle", + "refresh_mtf_cache", "rollback_currency", - "system_audit", - "mofin_collect" + "mofin_collect", + "verify_pnl", + "fix_hk_cost_cny", + "trend_detector", + "verify_01888", + "import_holding_xls" ], "writers": [ - "rollback_currency", - "mofin_db", - "fix_hk_cost_cny", - "import_holding_xls", "fix_currency_and_summary", - "migrate_all" + "mofin_db", + "import_holding_xls", + "rollback_currency", + "migrate_all", + "fix_hk_cost_cny" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { "name": "live_prices", "desc": "所有持仓+自选最新实时价", - "rows": 19, + "rows": 20, "readers": [ + "system_audit", + "mo_data", "verify_reassess_pipeline", "mofin_db", - "system_audit", "cron_health_monitor" ], "writers": [ + "mo_data", "mofin_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -948,13 +1186,13 @@ "desc": "宏观上下文(大盘偏向/指数)", "rows": 12, "readers": [ - "divergence_detector", - "strategy_lifecycle", - "strategy_tree", - "system_audit", "stock_profile", - "xiaoguo_signal_consumer", - "stale_push_wlin" + "system_audit", + "strategy_tree", + "stale_push_wlin", + "strategy_lifecycle", + "divergence_detector", + "xiaoguo_signal_consumer" ], "writers": [ "refresh_macro_context" @@ -962,6 +1200,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -969,8 +1208,8 @@ "desc": "宏观新闻原始数据", "rows": 8259, "readers": [ - "macro_context_collector", - "system_audit" + "system_audit", + "macro_context_collector" ], "writers": [ "macro_context_collector" @@ -978,19 +1217,20 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { "name": "market_snapshots", "desc": "大盘指数快照(每10分)", - "rows": 547, + "rows": 548, "readers": [ - "mofin_query", - "market_screener", + "trend_detector", "system_audit", "mofin_db", + "market_screener", "prepare_report_data", - "trend_detector" + "mofin_query" ], "writers": [ "mofin_db" @@ -998,6 +1238,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1005,8 +1246,8 @@ "desc": "多周期均线缓存", "rows": 37, "readers": [ - "mofin_db", "technical_analysis", + "mofin_db", "multi_timeframe" ], "writers": [ @@ -1016,46 +1257,37 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, - { - "name": "portfolio_state", - "desc": "组合状态快照(只读派生)", - "rows": 1, - "readers": [], - "writers": [], - "has_input": false, - "has_output": false, - "orphan": true, - "warn": true - }, { "name": "portfolio_summary", "desc": "总资产/现金/仓位汇总", "rows": 1, "readers": [ "check_prices", - "check_price_monitor", - "mo_data", + "fix_summary", "price_monitor", - "rollback_currency", - "verify_pnl", + "fix_currency_and_summary", + "mo_data", + "preflight_verify", "mofin_db", "import_holding_xls", - "fix_currency_and_summary", - "fix_summary" + "check_price_monitor", + "rollback_currency" ], "writers": [ - "rollback_currency", + "fix_summary", + "fix_currency_and_summary", "mofin_db", "import_holding_xls", - "fix_currency_and_summary", - "fix_summary", + "rollback_currency", "migrate_all" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1063,16 +1295,17 @@ "desc": "价格区间突破事件日志", "rows": 2289, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1081,8 +1314,8 @@ "rows": 653, "readers": [ "server", - "xiaoguo_news_processor", "mofin_news", + "xiaoguo_news_processor", "trend_detector" ], "writers": [ @@ -1093,15 +1326,16 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { "name": "sector_snapshots", "desc": "行业板块数据", - "rows": 44140, + "rows": 44230, "readers": [ - "trend_detector", "strategy_lifecycle", + "trend_detector", "mofin_db", "market_screener" ], @@ -1111,6 +1345,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1118,35 +1353,25 @@ "desc": "信号相关新闻", "rows": 1026, "readers": [ - "system_audit", "intraday_health_check", + "system_audit", "server", "xiaoguo_signal_consumer", "macro_signal_consumer" ], "writers": [ - "macro_context_collector", + "xiaoguo_news_processor", "mofin_news", + "xiaoguo_scanner", + "macro_context_collector", "divergence_detector", "xiaoguo_signal_consumer", - "xiaoguo_scanner", - "macro_signal_consumer", - "xiaoguo_news_processor" + "macro_signal_consumer" ], "has_input": true, "has_output": true, "orphan": false, - "warn": false - }, - { - "name": "sqlite_sequence", - "desc": "", - "rows": 16, - "readers": [], - "writers": [], - "has_input": false, - "has_output": false, - "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1162,6 +1387,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1169,8 +1395,8 @@ "desc": "日线行情", "rows": 8978, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ "migrate_all" @@ -1178,6 +1404,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1189,12 +1416,13 @@ "migrate_all" ], "writers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1210,6 +1438,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1217,20 +1446,21 @@ "desc": "股票行业映射", "rows": 62, "readers": [ - "mofin_news", - "strategy_lifecycle", - "mofin_db", "xiaoguo_news_processor", - "migrate_all", - "trend_detector" + "trend_detector", + "mofin_news", + "mofin_db", + "strategy_lifecycle", + "migrate_all" ], "writers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1246,6 +1476,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1253,19 +1484,20 @@ "desc": "全量股票代码", "rows": 87, "readers": [ - "mofin_news", + "xiaoguo_news_processor", "trend_detector", - "mofin_db", - "migrate_all", - "xiaoguo_news_processor" - ], - "writers": [ + "mofin_news", "mofin_db", "migrate_all" ], + "writers": [ + "migrate_all", + "mofin_db" + ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1273,10 +1505,10 @@ "desc": "策略重评历史记录", "rows": 217, "readers": [ - "verify_reassess_pipeline", - "mofin_db", "system_audit", - "migrate_all" + "migrate_all", + "verify_reassess_pipeline", + "mofin_db" ], "writers": [ "mofin_collect", @@ -1285,6 +1517,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1292,8 +1525,8 @@ "desc": "策略效果反馈", "rows": 222, "readers": [ - "mofin_db", - "migrate_all" + "migrate_all", + "mofin_db" ], "writers": [ "migrate_all" @@ -1301,6 +1534,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1308,21 +1542,23 @@ "desc": "自愈任务队列", "rows": 61, "readers": [ - "intraday_health_check", "strategy-staleness-check", + "intraday_health_check", "self_todo_executor", "morning_health_check" ], "writers": [ - "self_todo_executor", - "mofin_collect", "intraday_health_check", "strategy-staleness-check", - "morning_health_check" + "morning_health_check", + "preflight_verify", + "self_todo_executor", + "mofin_collect" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1330,25 +1566,26 @@ "desc": "自选股列表", "rows": 43, "readers": [ - "run_all_tests", - "stale_detector", "price_monitor", - "mofin_collect", - "mo_alphasift_bridge", + "trend_detector", + "mo_data", + "stale_detector", "mofin_db", - "per_stock_reassess", - "xiaoguo_signal_consumer", - "xiaoguo_scanner", - "mo_data" + "stock_quote", + "stale_push_wlin", + "mo_alphasift_bridge", + "refresh_mtf_cache", + "run_all_tests" ], "writers": [ - "mofin_db", + "migrate_all", "per_stock_reassess", - "migrate_all" + "mofin_db" ], "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false }, { @@ -1356,8 +1593,8 @@ "desc": "小果扫描跟踪", "rows": 488, "readers": [ - "xiaoguo_scanner", - "server" + "server", + "xiaoguo_scanner" ], "writers": [ "xiaoguo_scanner" @@ -1365,6 +1602,7 @@ "has_input": true, "has_output": true, "orphan": false, + "flow_status": "healthy", "warn": false } ], @@ -1453,10 +1691,10 @@ { "name": "evaluation_input.json", "desc": "", - "size_kb": 48.4, + "size_kb": 45.0, "readers": [], "writers": [], - "last_modified": "07-06 11:32", + "last_modified": "07-08 19:50", "warn": true }, { @@ -1471,10 +1709,10 @@ { "name": "hardcode_audit.json", "desc": "", - "size_kb": 3385.3, + "size_kb": 3394.4, "readers": [], "writers": [], - "last_modified": "07-07 17:25", + "last_modified": "07-08 17:26", "warn": true }, { @@ -1525,10 +1763,10 @@ { "name": "mofin_health.json", "desc": "健康监控数据", - "size_kb": 58.8, + "size_kb": 69.8, "readers": [], "writers": [], - "last_modified": "07-08 16:28", + "last_modified": "07-08 23:47", "warn": true }, { @@ -1559,12 +1797,21 @@ "warn": true }, { - "name": "price_events.json", + "name": "preflight_result.json", "desc": "", - "size_kb": 247.1, + "size_kb": 2.2, "readers": [], "writers": [], - "last_modified": "07-06 11:32", + "last_modified": "07-08 23:27", + "warn": true + }, + { + "name": "price_events.json", + "desc": "", + "size_kb": 0.8, + "readers": [], + "writers": [], + "last_modified": "07-08 18:54", "warn": true }, { @@ -1573,7 +1820,7 @@ "size_kb": 16.0, "readers": [], "writers": [], - "last_modified": "07-08 15:53", + "last_modified": "07-08 23:45", "warn": true }, { @@ -1660,10 +1907,10 @@ { "name": "system_audit_report.json", "desc": "", - "size_kb": 2.1, + "size_kb": 1.8, "readers": [], "writers": [], - "last_modified": "07-08 11:13", + "last_modified": "07-08 17:30", "warn": true }, { @@ -1710,7 +1957,8 @@ "script": "monitor_300308.py", "schedule": "*/2 13-14 * * 1-5", "status": "ok", - "last_run": "2026-07-08T14:58:43" + "last_run": "2026-07-08T14:58:43", + "profile": "position-analyst" }, { "name": "300308午后紧盯", @@ -1718,7 +1966,8 @@ "script": "300308_monitor.py", "schedule": "*/2 13-14 * * 1-5", "status": "ok", - "last_run": "2026-07-08T14:58:41" + "last_run": "2026-07-08T14:58:41", + "profile": "position-analyst" }, { "name": "Cron监护-高频", @@ -1726,7 +1975,8 @@ "script": "cron_watchdog.py", "schedule": "*/15 9-16 * * 1-5", "status": "error", - "last_run": "2026-07-08T16:15:42" + "last_run": "2026-07-08T16:45:35", + "profile": "default" }, { "name": "MoFin 午后监控", @@ -1734,7 +1984,8 @@ "script": "generate_report.py intraday_monitor", "schedule": "5,20,35,50 13-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:54:54" + "last_run": "2026-07-08T15:54:54", + "profile": "position-analyst" }, { "name": "MoFin 盘前中监控", @@ -1742,7 +1993,8 @@ "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-08T12:20:23", + "profile": "position-analyst" }, { "name": "MoFin 系统常规体检-开盘前", @@ -1750,7 +2002,8 @@ "script": "morning_health_check.py", "schedule": "0 8 * * 1-5", "status": "ok", - "last_run": "2026-07-08T08:01:34" + "last_run": "2026-07-08T08:01:34", + "profile": "position-analyst" }, { "name": "bot-process-monitor", @@ -1758,7 +2011,8 @@ "script": "bot_monitor.sh", "schedule": "every 60m", "status": "ok", - "last_run": "2026-07-08T15:42:45" + "last_run": "2026-07-08T23:47:23", + "profile": "default" }, { "name": "cron-推XMPP中继", @@ -1766,7 +2020,8 @@ "script": "cron_to_xmpp.py", "schedule": "* 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:28:05" + "last_run": "2026-07-08T16:59:02", + "profile": "default" }, { "name": "cron报告推XMPP-每5分", @@ -1774,7 +2029,8 @@ "script": "cron_to_xmpp.py", "schedule": "*/5 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:25:49" + "last_run": "2026-07-08T16:55:18", + "profile": "position-analyst" }, { "name": "evolution-pulse", @@ -1782,7 +2038,8 @@ "script": null, "schedule": "0 * * * *", "status": "ok", - "last_run": "2026-07-08T16:11:06" + "last_run": "2026-07-08T23:04:52", + "profile": "default" }, { "name": "state.db真空整理-每周", @@ -1790,7 +2047,8 @@ "script": "vacuum_state_db.py", "schedule": "0 3 * * 6", "status": null, - "last_run": "None" + "last_run": "None", + "profile": "position-analyst" }, { "name": "wiki-self-growth", @@ -1798,7 +2056,8 @@ "script": "wiki_health_aggregate.py", "schedule": "0 3 * * *", "status": "ok", - "last_run": "2026-07-08T03:07:57" + "last_run": "2026-07-08T03:07:57", + "profile": "default" }, { "name": "xiaoguo-quick-scan", @@ -1806,31 +2065,35 @@ "script": "xiaoguo_quick_scan.py", "schedule": "*/15 * * * *", "status": "ok", - "last_run": "2026-07-08T16:15:42" + "last_run": "2026-07-08T23:45:20", + "profile": "default" }, { "name": "xiaoguo-tunnel-watchdog", "type": "no_agent", "script": "xiaoguo_tunnel_watchdog.sh", "schedule": "*/5 * * * *", - "status": "ok", - "last_run": "2026-07-08T16:26:08" + "status": "error", + "last_run": "2026-07-08T23:52:27", + "profile": "default" }, { "name": "价格监控-高频", "type": "no_agent", "script": "price_monitor.py", "schedule": "*/2 9-16 * * 1-5", - "status": "error", - "last_run": "2026-07-08T16:26:51" + "status": "ok", + "last_run": "2026-07-08T22:56:00", + "profile": "position-analyst" }, { "name": "健康监控数据采集-每15分", "type": "no_agent", "script": "mofin_health.py", - "schedule": "*/15 9-16 * * 1-5", + "schedule": "*/15 9-16,20-22 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:15:47" + "last_run": "2026-07-08T16:45:19", + "profile": "position-analyst" }, { "name": "元自成长-每日", @@ -1838,7 +2101,8 @@ "script": "meta_growth.py", "schedule": "45 0,12 * * 1-5", "status": "ok", - "last_run": "2026-07-08T12:45:19" + "last_run": "2026-07-08T12:45:19", + "profile": "position-analyst" }, { "name": "全局cron健康监控-每10分", @@ -1846,7 +2110,8 @@ "script": "cron_health_monitor.py", "schedule": "*/10 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:21:15" + "last_run": "2026-07-08T16:50:44", + "profile": "position-analyst" }, { "name": "分支剪枝-每日", @@ -1854,7 +2119,8 @@ "script": "prune_branches.py", "schedule": "0 21 * * 1-5", "status": "ok", - "last_run": "2026-07-07T21:00:02" + "last_run": "2026-07-08T21:00:18", + "profile": "position-analyst" }, { "name": "分支自成长-盘中", @@ -1862,7 +2128,8 @@ "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-08T15:45:59", + "profile": "position-analyst" }, { "name": "分析师-持仓复查", @@ -1870,7 +2137,8 @@ "script": "prepare_report_data.py", "schedule": "0 20 * * 4", "status": "ok", - "last_run": "2026-07-02T20:12:33" + "last_run": "2026-07-02T20:12:33", + "profile": "position-analyst" }, { "name": "多周期缓存刷新-开盘前", @@ -1878,7 +2146,8 @@ "script": "refresh_mtf_cache.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:01:47" + "last_run": "2026-07-08T09:01:47", + "profile": "position-analyst" }, { "name": "多周期缓存刷新-盘中", @@ -1886,7 +2155,8 @@ "script": "refresh_mtf_cache.py", "schedule": "0 11,14 * * 1-5", "status": "ok", - "last_run": "2026-07-08T14:01:26" + "last_run": "2026-07-08T14:01:26", + "profile": "position-analyst" }, { "name": "大脑任务执行", @@ -1894,7 +2164,8 @@ "script": "", "schedule": "{'kind': 'cron', 'expr': '*/10 * * * *'}", "status": "ok", - "last_run": "2026-07-08T16:21:21" + "last_run": "2026-07-08T23:50:45", + "profile": "default" }, { "name": "宏观上下文刷新-每30分", @@ -1902,7 +2173,8 @@ "script": "refresh_macro_context.py", "schedule": "*/30 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30:36" + "last_run": "2026-07-08T15:30:36", + "profile": "position-analyst" }, { "name": "宏观新闻采集", @@ -1910,7 +2182,8 @@ "script": "macro_context_collector.py", "schedule": "*/30 8-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30:36" + "last_run": "2026-07-08T15:30:36", + "profile": "position-analyst" }, { "name": "宏观新闻采集-周末", @@ -1918,7 +2191,8 @@ "script": "macro_context_collector.py", "schedule": "0 8-16/2 * * 0,6", "status": "ok", - "last_run": "2026-07-05T16:00:46" + "last_run": "2026-07-05T16:00:46", + "profile": "position-analyst" }, { "name": "宏观采集-午间", @@ -1926,7 +2200,8 @@ "script": "macro_context_collector.py", "schedule": "0 12 * * 1-5", "status": "ok", - "last_run": "2026-07-08T12:01:43" + "last_run": "2026-07-08T12:01:43", + "profile": "position-analyst" }, { "name": "宏观采集-早盘", @@ -1934,7 +2209,8 @@ "script": "macro_context_collector.py", "schedule": "35 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:35:52" + "last_run": "2026-07-08T09:35:52", + "profile": "position-analyst" }, { "name": "宏观风险信号消费", @@ -1942,7 +2218,8 @@ "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-08T15:50:10", + "profile": "position-analyst" }, { "name": "宏观风险扫描", @@ -1950,7 +2227,8 @@ "script": null, "schedule": "30 8 * * 1-5", "status": "ok", - "last_run": "2026-07-08T08:39:56" + "last_run": "2026-07-08T08:39:56", + "profile": "position-analyst" }, { "name": "宏观风险扫描-午间", @@ -1958,7 +2236,8 @@ "script": null, "schedule": "30 11 * * 1-5", "status": "ok", - "last_run": "2026-07-08T11:37:35" + "last_run": "2026-07-08T11:37:35", + "profile": "position-analyst" }, { "name": "宏观风险扫描-周末", @@ -1966,7 +2245,8 @@ "script": null, "schedule": "0 10 * * 0,6", "status": "ok", - "last_run": "2026-07-05T10:09:55" + "last_run": "2026-07-05T10:09:55", + "profile": "position-analyst" }, { "name": "小果信号消费-盘中", @@ -1974,15 +2254,17 @@ "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-08T15:46:02", + "profile": "position-analyst" }, { "name": "小果市场筛选-全市场", "type": "no_agent", "script": "market_screener.py", "schedule": "35 15 * * 1-5", - "status": "error", - "last_run": "2026-07-08T15:37:42" + "status": "ok", + "last_run": "2026-07-08T22:58:17", + "profile": "position-analyst" }, { "name": "小果情感分析", @@ -1990,7 +2272,8 @@ "script": null, "schedule": "0 16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:12:11" + "last_run": "2026-07-08T16:12:11", + "profile": "position-analyst" }, { "name": "小果独立扫描", @@ -1998,7 +2281,8 @@ "script": "xiaoguo_scanner.py", "schedule": "*/5 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:56:00" + "last_run": "2026-07-08T15:56:00", + "profile": "position-analyst" }, { "name": "市场数据采集", @@ -2006,7 +2290,8 @@ "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-08T15:50:21", + "profile": "position-analyst" }, { "name": "市场数据采集", @@ -2014,7 +2299,8 @@ "script": "market_watch.py", "schedule": "0,30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:00:32" + "last_run": "2026-07-08T16:30:31", + "profile": "default" }, { "name": "市场精选推荐-每日", @@ -2022,7 +2308,8 @@ "script": null, "schedule": "0 16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:15:43" + "last_run": "2026-07-08T16:15:43", + "profile": "position-analyst" }, { "name": "建议对账-每周", @@ -2030,7 +2317,17 @@ "script": "advice_reconciliation.py", "schedule": "0 20 * * 6", "status": "ok", - "last_run": "2026-07-04T20:00:43" + "last_run": "2026-07-04T20:00:43", + "profile": "position-analyst" + }, + { + "name": "开盘前钉对钉验证", + "type": "no_agent", + "script": "preflight_verify.py", + "schedule": "30 8 * * 1-5", + "status": null, + "last_run": "None", + "profile": "position-analyst" }, { "name": "开盘简报", @@ -2038,7 +2335,8 @@ "script": "generate_report.py opening_brief", "schedule": "35 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:43:31" + "last_run": "2026-07-08T09:43:31", + "profile": "position-analyst" }, { "name": "持仓情报-盘后", @@ -2046,7 +2344,8 @@ "script": null, "schedule": "0 20 * * 1-5", "status": "ok", - "last_run": "2026-07-07T20:20:45" + "last_run": "2026-07-08T20:16:37", + "profile": "default" }, { "name": "收盘简报", @@ -2054,7 +2353,8 @@ "script": "generate_report.py closing_brief", "schedule": "10 16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:15:01" + "last_run": "2026-07-08T16:15:01", + "profile": "position-analyst" }, { "name": "数据同步-dashboard", @@ -2062,23 +2362,26 @@ "script": "sync_dashboard.py", "schedule": "55 8 * * *", "status": "ok", - "last_run": "2026-07-08T08:55:56" + "last_run": "2026-07-08T08:55:56", + "profile": "default" }, { "name": "数据治理-每周", "type": "no_agent", "script": "data_governance.py", "schedule": "0 10 * * 6", - "status": "error", - "last_run": "2026-07-04T10:00:57" + "status": "ok", + "last_run": "2026-07-08T22:55:46", + "profile": "position-analyst" }, { "name": "数据采集-策略评估前", "type": "no_agent", "script": "collect_evaluation_data.py", "schedule": "30 20 * * 1-5", - "status": "error", - "last_run": "2026-07-07T20:30:58" + "status": "ok", + "last_run": "2026-07-08T22:54:44", + "profile": "position-analyst" }, { "name": "梦境循环-知识库归并", @@ -2086,7 +2389,8 @@ "script": null, "schedule": "0 22 * * *", "status": "ok", - "last_run": "2026-07-07T22:18:30" + "last_run": "2026-07-08T22:36:11", + "profile": "default" }, { "name": "盘中自检-高频", @@ -2094,7 +2398,8 @@ "script": "intraday_health_check.py", "schedule": "*/15 9-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:45:58" + "last_run": "2026-07-08T15:45:58", + "profile": "position-analyst" }, { "name": "盘前热点扫描", @@ -2102,7 +2407,8 @@ "script": null, "schedule": "30 8 * * 1-5", "status": "ok", - "last_run": "2026-07-08T08:39:50" + "last_run": "2026-07-08T08:39:50", + "profile": "default" }, { "name": "知微周复盘", @@ -2110,7 +2416,8 @@ "script": null, "schedule": "0 22 * * 0", "status": "ok", - "last_run": "2026-07-05T22:05:42" + "last_run": "2026-07-05T22:05:42", + "profile": "default" }, { "name": "知微洞察生成", @@ -2118,7 +2425,8 @@ "script": "market_insight.py", "schedule": "35 15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:35:42" + "last_run": "2026-07-08T15:35:42", + "profile": "position-analyst" }, { "name": "知识研究-日常", @@ -2126,7 +2434,8 @@ "script": null, "schedule": "0 22 * * *", "status": "ok", - "last_run": "2026-07-07T22:10:24" + "last_run": "2026-07-08T22:19:31", + "profile": "default" }, { "name": "硬编码扫描-每日", @@ -2134,15 +2443,17 @@ "script": "hardcode_scanner.py", "schedule": "25 17 * * 1-5", "status": "ok", - "last_run": "2026-07-07T17:25:58" + "last_run": "2026-07-08T17:26:04", + "profile": "position-analyst" }, { "name": "策略复盘-每日", "type": "no_agent", "script": "strategy_review.py", "schedule": "0 20 * * 1-5", - "status": "error", - "last_run": "2026-07-07T20:00:53" + "status": "ok", + "last_run": "2026-07-08T22:54:47", + "profile": "position-analyst" }, { "name": "策略时效性检查(日)", @@ -2150,15 +2461,17 @@ "script": "strategy-staleness-check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:10:49" + "last_run": "2026-07-08T09:10:49", + "profile": "position-analyst" }, { "name": "策略评估-每周", "type": "no_agent", "script": "strategy_evaluator.py", "schedule": "0 21 * * 6", - "status": "error", - "last_run": "2026-07-04T21:00:51" + "status": "ok", + "last_run": "2026-07-08T22:55:45", + "profile": "position-analyst" }, { "name": "策略评估-每日", @@ -2166,7 +2479,8 @@ "script": "stale_detector.py", "schedule": "0 21 * * 1-5", "status": "ok", - "last_run": "2026-07-07T21:16:47" + "last_run": "2026-07-08T21:21:10", + "profile": "position-analyst" }, { "name": "策略质量门禁-重评跟进", @@ -2174,7 +2488,8 @@ "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-08T15:30:34", + "profile": "position-analyst" }, { "name": "系统健康检查-开盘前", @@ -2182,7 +2497,8 @@ "script": "system_health_check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:32:03" + "last_run": "2026-07-08T09:32:03", + "profile": "position-analyst" }, { "name": "系统健康检查-每日", @@ -2190,7 +2506,8 @@ "script": "system_health_check.py", "schedule": "0 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:01:03" + "last_run": "2026-07-08T09:01:03", + "profile": "position-analyst" }, { "name": "系统全局审计", @@ -2198,7 +2515,8 @@ "script": "system_audit.py", "schedule": "30 17 * * 1-5", "status": "ok", - "last_run": "2026-07-07T17:34:37" + "last_run": "2026-07-08T17:35:21", + "profile": "position-analyst" }, { "name": "自愈执行器-TODO自动处理", @@ -2206,7 +2524,8 @@ "script": "self_todo_executor.py", "schedule": "*/10 8-22 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:20:45" + "last_run": "2026-07-08T22:50:40", + "profile": "position-analyst" }, { "name": "自成长知识库-22:10中继推送", @@ -2214,7 +2533,8 @@ "script": "relay_knowledge_report.py", "schedule": "10 22 * * *", "status": "ok", - "last_run": "2026-07-07T22:10:03" + "last_run": "2026-07-08T22:10:46", + "profile": "default" }, { "name": "自选买入区提醒", @@ -2222,7 +2542,8 @@ "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-08T15:33:01", + "profile": "position-analyst" }, { "name": "自选买入区提醒-盘前午间尾盘", @@ -2230,7 +2551,8 @@ "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-08T15:02:25", + "profile": "position-analyst" }, { "name": "自选股体检-每周", @@ -2238,7 +2560,8 @@ "script": null, "schedule": "0 20 * * 6", "status": "ok", - "last_run": "2026-07-04T20:13:24" + "last_run": "2026-07-04T20:13:24", + "profile": "default" }, { "name": "自选股自动重评-周末", @@ -2246,7 +2569,8 @@ "script": "stale_detector.py", "schedule": "30 10 * * 0,6", "status": null, - "last_run": "None" + "last_run": "None", + "profile": "position-analyst" }, { "name": "自选自动清理-开盘前", @@ -2254,7 +2578,8 @@ "script": "clean_watchlist.py", "schedule": "5 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:05:08" + "last_run": "2026-07-08T09:05:08", + "profile": "position-analyst" }, { "name": "芯碁微装-价格监控", @@ -2262,7 +2587,8 @@ "script": "price_monitor.py", "schedule": "0 10,14 * * 1-5", "status": "ok", - "last_run": "2026-07-08T14:34:58" + "last_run": "2026-07-08T14:34:58", + "profile": "position-analyst" }, { "name": "记忆守卫-每日", @@ -2270,7 +2596,8 @@ "script": "memory_guardian.py", "schedule": "0 7 * * *", "status": "ok", - "last_run": "2026-07-08T07:01:31" + "last_run": "2026-07-08T07:01:31", + "profile": "position-analyst" }, { "name": "记忆守卫-每日", @@ -2278,7 +2605,8 @@ "script": "memory_guardian.py", "schedule": "0 7 * * *", "status": "ok", - "last_run": "2026-07-08T07:02:21" + "last_run": "2026-07-08T07:02:21", + "profile": "default" }, { "name": "资金流采集-盘中", @@ -2286,7 +2614,8 @@ "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-08T15:31:37", + "profile": "position-analyst" }, { "name": "跨市场背离检测", @@ -2294,7 +2623,8 @@ "script": "divergence_detector.py", "schedule": "*/30 8-15 * * 1-5", "status": "ok", - "last_run": "2026-07-08T15:30:36" + "last_run": "2026-07-08T15:30:36", + "profile": "position-analyst" }, { "name": "跨市场背离检测-周末", @@ -2302,7 +2632,8 @@ "script": "divergence_detector.py", "schedule": "30 8-16/2 * * 0,6", "status": "ok", - "last_run": "2026-07-05T16:30:50" + "last_run": "2026-07-05T16:30:50", + "profile": "position-analyst" }, { "name": "重评管道审计-每30分", @@ -2310,7 +2641,8 @@ "script": "verify_reassess_pipeline.py", "schedule": "*/30 9-16 * * 1-5", "status": "ok", - "last_run": "2026-07-08T16:00:23" + "last_run": "2026-07-08T16:30:53", + "profile": "position-analyst" }, { "name": "集合竞价观察", @@ -2318,7 +2650,8 @@ "script": null, "schedule": "28 9 * * 1-5", "status": "ok", - "last_run": "2026-07-08T09:46:38" + "last_run": "2026-07-08T09:46:38", + "profile": "default" } ] } \ No newline at end of file diff --git a/strategy_tree.py b/strategy_tree.py index e4300ed5..9b5f87f6 100644 --- a/strategy_tree.py +++ b/strategy_tree.py @@ -12,7 +12,7 @@ strategy_tree.py — 情景化多分支策略决策引擎 → success_rate < 30% 且触发≥5次 → 自动标记 pruning_candidate → 每周 pruning 时剪掉低效分支 -数据存在 decisions.json 的 strategy_tree 字段。 +数据存在 holding_strategies.strategy_tree 字段。 """ import json, os, sys, re