fix: xiaoguo_scanner 榜单更新+看空榜持仓预警

- 修bug:stock_rank_cxd_ths 实为'创新低',改为 stock_rank_lxsz_ths '连续上涨'
- 新增6个看多榜(险资举牌)+ 5个看空榜(创新低/持续缩量/量价齐跌/连续下跌/向下突破)
- 看空榜自动比对持仓,命中写入 xiaoguo_risk 信号
- 东财热榜静默降级(502不可修)
- 看空榜不跳过已扫描,每轮全检
This commit is contained in:
知微
2026-06-22 19:13:55 +08:00
parent 774c2e885d
commit ce687a4216
13 changed files with 8331 additions and 33663 deletions
Binary file not shown.
+54 -79
View File
@@ -1,92 +1,67 @@
{ {
"updated_at": "2026-06-18T20:51:54.353134", "updated_at": "2026-06-22T11:20:27.385259",
"phase1": { "phase1": {
"correct": 0, "correct": 0,
"wrong": 0, "wrong": 3,
"pending": 37, "pending": 46,
"accuracy_pct": 0.0 "accuracy_pct": 0.0
}, },
"phase2": { "phase2": {
"correct": 0, "correct": 0,
"wrong": 0, "wrong": 0,
"pending": 37, "pending": 0,
"accuracy_pct": 0.0 "accuracy_pct": 0.0
}, },
"total_evaluated": 74, "total_evaluated": 49,
"details": [ "details": [
"模塑科技(000700) | 损14.99(技术面弱支撑15.21(距1.4%)/盈None(未设定止盈价) | 现价15.45(-3.20%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "模塑科技(000700) | 损14.54/盈None | 现价14.81(-4.14%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"模塑科技(000700) 新止损14.99 未触及 现价15.45", "ST京蓝(000711) | 损4.89/盈None | 现价5.43(+4.42%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"ST京蓝(000711) | 损5.04(技术面弱支撑5.05(距0.2%)/盈None(未设定止盈价) | 现价5.2(-4.06%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "德明利(001309) | 损683.32/盈None | 现价712.9(+0.13%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"ST京蓝(000711) 新止损5.04 未触及 现价5.2", "比亚迪(002594) | 损79.61/盈None | 现价85.17(-3.36%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"德明利(001309) | 损690.64(技术面弱支撑694.72(距0.6%)/盈None(未设定止盈价) | 现价712.0(+0.34%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "腾讯控股(00700) | 损387.49/盈496.33 | 现价436.2(-0.91%) | 距损11.17%/距盈13.78% | RR=1.23 | R/R可接受 | 理+13.3%实-2.1%",
"德明利(001309) 新止损690.64 未触及 现价712.0", "信义光能(00968) | 损2.03/盈None | 现价2.22(-5.53%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"比亚迪(002594) | 损85.49(技术面弱支撑86.36(距1.0%)/盈None(未设定止盈价) | 现价88.13(+0.75%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "中芯国际(00981) | 损67.69/盈87.26 | 现价78.25(+2.29%) | 距损13.5%/距盈11.51% | RR=0.85 | ⚠️R/R偏低 | 理+16.2%实+2.4%",
"比亚迪(002594) 新止损85.49 未触及 现价88.13", "TCL电子(01070) | 损12.96/盈None | 现价12.99(-3.85%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"腾讯控股(00700) | 损399.47(技术面强支撑399.47(距0.0%)/盈489.1(技术面强压力481.87(距1.5%) | 现价440.2(-1.17%) | 距损9.25%/距盈11.11% | RR=1.2 | R/R可接受 | 理+11.7%实-1.2%", "中国神华(01088) | 损35.09/盈42.9 | 现价42.42(+0.19%) | 距损17.28%/距盈1.13% | RR=0.07 | ⚠️R/R极低 | 理+1.6%实-8.1%",
"腾讯控股(00700) 新止损399.47 未触及 现价440.2", "比亚迪股份(01211) | 损63.99/盈87.07 | 现价77.7(-3.90%) | 距损17.64%/距盈12.06% | RR=0.68 | 深套持有 | 理+10.5%实-26.3%",
"信义光能(00968) | 损2.28(技术面弱支撑2.32(距1.7%)/盈None(未设定止盈价) | 现价2.35(-2.08%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "丘钛科技(01478) | 损7.33/盈10.39 | 现价8.36(-4.46%) | 距损12.32%/距盈24.28% | RR=1.97 | 深套持有 | 理+21.7%实-39.7%",
"信义光能(00968) 新止损2.28 未触及 现价2.35", "建滔积层板(01888) | 损86.34/盈141.9 | 现价90.0(-2.01%) | 距损4.07%/距盈57.67% | RR=14.17 | R/R合理 | 理+61.3%实+1.4%",
"中芯国际(00981) | 损68.42(技术面强支撑68.42(距0.0%)/盈85.99(技术面强压力84.72(距1.5%) | 现价76.5(+0.99%) | 距损10.56%/距盈12.41% | RR=1.18 | ⚠️R/R偏低 | 理+14.5%实+0.1%", "万科企业(02202) | 损2.0/盈2.85 | 现价2.39(-1.24%) | 距损16.32%/距盈19.25% | RR=1.18 | 深套持有 | 理+20.8%实-49.1%",
"中芯国际(00981) 新止损68.42 未触及 现价76.5", "中国平安(02318) | 损46.61/盈None | 现价54.45(+1.11%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"TCL电子(01070) | 损13.1(技术面弱支撑13.16(距0.5%)/盈None(未设定止盈价) | 现价13.51(-6.25%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "药明康德(02359) | 损121.2/盈None | 现价128.8(+0.08%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"TCL电子(01070) 新止损13.1 未触及 现价13.51", "中银香港(02388) | 损43.49/盈50.1 | 现价47.26(-1.83%) | 距损7.98%/距盈6.01% | RR=0.75 | ⚠️R/R偏低 | 理+3.9%实+7.5%",
"中国神华(01088) | 损41.07(技术面弱支撑41.66(距1.4%)/盈None(未设定止盈价) | 现价42.34(-1.76%) | 距损None%/距盈None% | RR=None | | 理+0.0%实-8.3%", "中国人寿(02628) | 损24.26/盈None | 现价29.12(+3.93%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"中国神华(01088) 新止损41.07 未触及 现价42.34", "百济神州(06160) | 损155.73/盈None | 现价159.0(-2.87%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"比亚迪股份(01211) | 损68.72(低于技术面强撑73.787.4%(深套宽止损))/盈90.31(技术面强压力88.98(距1.5%) | 现价80.85(-1.28%) | 距损15.0%/距盈11.7% | RR=0.78 | 深套持有 | 理+14.6%实-23.4%", "长飞光纤(06869) | 损209.03/盈None | 现价275.4(+26.45%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"比亚迪股份(01211) 新止损68.72 未触及 现价80.85", "小鹏汽车-W(09868) | 损46.51/盈None | 现价49.46(-3.96%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"丘钛科技(01478) | 损7.41(技术面强支撑7.41(距0.0%)/盈10.24(技术面强压力10.09(距1.5%) | 现价8.75(-1.80%) | 距损15.31%/距盈17.03% | RR=1.11 | 深套持有 | 理+20.0%实-36.9%", "阿里巴巴-W(09988) | 损90.82/盈118.69 | 现价102.2(-2.57%) | 距损11.14%/距盈16.14% | RR=1.45 | R/R可接受 | 理+14.5%实-19.3%",
"丘钛科技(01478) 新止损7.41 未触及 现价8.75", "中科电气(300035) | 损13.74/盈19.0 | 现价16.83(-3.11%) | 距损18.36%/距盈12.89% | RR=0.7 | 深套持有 | 理+12.2%实-24.5%",
"建滔积层板(01888) | 损60.48(技术面强支撑60.48(距0.0%)/盈118.94(技术面强压力117.18(距1.5%) | 现价91.85(+3.73%) | 距损34.15%/距盈29.49% | RR=0.86 | ⚠️R/R偏低 | 理+36.2%实+3.5%", "汇川技术(300124) | 损68.31/盈None | 现价66.93(-5.97%) | 距损None%/距盈None% | RR=None | 已跌破止损 | 理+0.0%实+0.0%",
"建滔积层板(01888) 新止损60.48 未触及 现价91.85", "长芯博创(300548) | 损251.24/盈413.9 | 现价298.67(+5.92%) | 距损15.88%/距盈38.58% | RR=2.43 | R/R合理 | 理+49.7%实+29.0%",
"万科企业(02202) | 损2.06(低于技术面强撑2.154.4%(深套宽止损))/盈2.81(技术面强压力2.77(距1.4%) | 现价2.42(-4.72%) | 距损14.88%/距盈16.12% | RR=1.08 | 深套持有 | 理+19.1%实-48.5%", "双一科技(300690) | 损22.1/盈25.93 | 现价23.41(-1.97%) | 距损5.6%/距盈10.76% | RR=1.92 | R/R可接受 | 理+9.1%实-13.9%",
"万科企业(02202) 新止损2.06 未触及 现价2.42", "宁德时代(300750) | 损345.04/盈414.6 | 现价405.93(+3.67%) | 距损15.0%/距盈2.14% | RR=0.14 | ⚠️R/R极低 | 理+6.1%实+1.0%",
"中国平安(02318) | 损52.23(技术面弱支撑52.68(距0.9%)/盈None(未设定止盈价) | 现价53.85(-4.01%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "黄金ETF华安(518880) | 损7.05/盈9.17 | 现价8.661(-2.77%) | 距损18.6%/距盈5.88% | RR=0.32 | 深套持有 | 理+5.6%实-29.0%",
"中国平安(02318) 新止损52.23 未触及 现价53.85", "招商银行(600036) | 损32.21/盈39.68 | 现价37.36(+0.27%) | 距损13.78%/距盈6.21% | RR=0.45 | ⚠️R/R极低 | 理+6.5%实-2.1%",
"药明康德(02359) | 损122.5(技术面弱支撑122.5(距0.0%)/盈None(未设定止盈价) | 现价128.7(+5.06%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "法拉电子(600563) | 损161.41/盈192.67 | 现价168.44(+0.15%) | 距损4.17%/距盈14.38% | RR=3.45 | R/R合理 | 理+13.6%实+8.3%",
"药明康德(02359) 新止损122.5 未触及 现价128.7", "辽宁成大(600739) | 损9.1/盈11.19 | 现价10.48(+3.87%) | 距损13.17%/距盈6.77% | RR=0.51 | ⚠️R/R不足 | 理+11.2%实-14.7%",
"中银香港(02388) | 损46.7(技术面弱支撑47.51(距1.7%)/盈51.97(技术面强压力51.2(距1.5%) | 现价48.14(+0.08%) | 距损2.99%/距盈7.96% | RR=2.66 | R/R合理 | 理+7.8%实+9.5%", "紫金矿业(601899) | 损24.48/盈34.47 | 现价29.55(-0.47%) | 距损17.16%/距盈16.65% | RR=0.97 | 深套持有 | 理+19.1%实-26.6%",
"中银香港(02388) 新止损46.7 未触及 现价48.14", "药明康德(603259) | 损97.16/盈111.26 | 现价103.45(+0.71%) | 距损6.08%/距盈7.55% | RR=1.24 | ⚠️R/R偏低 | 理+10.5%实+7.5%",
"中国人寿(02628) | 损27.18(技术面弱支撑27.27(距0.3%)/盈None(未设定止盈价) | 现价28.02(-6.60%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "海博思创(688411) | 损253.82/盈316.5 | 现价279.66(-0.48%) | 距损9.24%/距盈13.17% | RR=1.43 | ⚠️R/R偏低 | 理+13.0%实+8.1%",
"中国人寿(02628) 新止损27.18 未触及 现价28.02", "芯碁微装(688630) | 损470.73/盈None | 现价469.5(-6.47%) | 距损None%/距盈None% | RR=None | 已跌破止损 | 理+0.0%实+0.0%",
"百济神州(06160) | 损157.4(技术面弱支撑157.4(距0.0%)/盈None(未设定止盈价) | 现价163.7(+4.00%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "华恒生物(688639) | 损20.03/盈None | 现价20.34(-2.54%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"百济神州(06160) 新止损157.4 未触及 现价163.7", "摩尔线程-U(688795) | 损632.23/盈None | 现价640.7(-4.23%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"长飞光纤(06869) | 损211.27(技术面弱支撑211.93(距0.3%)/盈None(未设定止盈价) | 现价217.8(-4.14%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "沐曦股份-U(688802) | 损724.74/盈None | 现价720.11(-6.47%) | 距损None%/距盈None% | RR=None | 已跌破止损 | 理+0.0%实+0.0%",
"长飞光纤(06869) 新止损211.27 未触及 现价217.8", "中芯国际(688981) | 损132.76/盈164.45 | 现价141.5(+0.57%) | 距损6.18%/距盈16.22% | RR=2.62 | R/R合理 | 理+19.6%实+12.2%",
"小鹏汽车-W(09868) | 损49.95(技术面弱支撑50.77(距1.6%)/盈None(未设定止盈价) | 现价51.5(-3.47%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "(002714) | 损None/盈None | 现价33.61(-0.06%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"小鹏汽车-W(09868) 新止损49.95 未触及 现价51.5", "(002920) | 损None/盈None | 现价84.38(-3.84%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"阿里巴巴-W(09988) | 损93.63(技术面强支撑93.63(距0.0%)/盈116.96(技术面强压力115.23(距1.5%) | 现价104.9(-1.87%) | 距损10.74%/距盈11.5% | RR=1.07 | R/R可接受 | 理+12.8%实-17.2%", "(01347) | 损None/盈None | 现价164.1(-2.38%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"阿里巴巴-W(09988) 新止损93.63 未触及 现价104.9", "(09880) | 损None/盈None | 现价104.6(-3.42%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"中科电气(300035) | 损14.76(低于技术面强撑15.646.0%(深套宽止损))/盈19.71(技术面强压力19.42(距1.5%) | 现价17.37(-1.75%) | 距损15.03%/距盈13.47% | RR=0.9 | 深套持有 | 理+16.4%实-22.1%", "(301628) | 损None/盈None | 现价114.53(-5.14%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"中科电气(300035) 新止损14.76 未触及 现价17.37", "(600110) | 损None/盈None | 现价16.61(-5.46%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"汇川技术(300124) | 损69.04(技术面弱支撑69.5(距0.7%)/盈None(未设定止盈价) | 现价71.18(+2.05%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%", "(600188) | 损None/盈None | 现价19.77(+2.01%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"汇川技术(300124) 新止损69.04 未触及 现价71.18", "(688403) | 损None/盈None | 现价29.11(-3.13%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"博创科技(300548) | 损269.8(技术面弱支撑269.8(距0.0%)/盈328.72(技术面强压力323.86(距1.5%) | 现价281.99(+4.49%) | 距损4.32%/距盈16.57% | RR=3.84 | R/R合理 | 理+18.9%实+21.8%", "(688668) | 损None/盈None | 现价395.32(-8.04%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"博创科技(300548) 新止损269.8 未触及 现价281.99", "中际旭创(300308) | 损1169.0/盈1500.0 | 现价1344.0(-1.75%) | 距损13.02%/距盈11.61% | RR=0.89 | ⚠️盈亏比不足 | 理+20.0%实+0.0%",
"宁德时代(300750) | 损370.53(技术面强支撑370.53(距0.0%)/盈430.07(技术面强压力423.71(距1.5%) | 现价391.55(-1.87%) | 距损5.37%/距盈9.84% | RR=1.83 | R/R可接受 | 理+10.1%实-2.5%", "贵州茅台(600519) | 损1169.0/盈1350.0 | 现价1226.02(+0.91%) | 距损4.65%/距盈10.11% | RR=2.17 | R/R达标 | 理+10.7%实+0.0%"
"宁德时代(300750) 新止损370.53 未触及 现价391.55",
"黄金ETF华安(518880) | 损7.57(低于技术面强撑8.4812.0%(深套宽止损))/盈9.51(技术面强压力9.37(距1.5%) | 现价8.908(-0.55%) | 距损15.02%/距盈6.76% | RR=0.45 | 深套持有 | 理+9.5%实-26.9%",
"黄金ETF华安(518880) 新止损7.57 未触及 现价8.908",
"招商银行(600036) | 损34.59(技术面强支撑34.59(距0.0%)/盈41.16(技术面强压力40.55(距1.5%) | 现价37.26(-2.54%) | 距损7.17%/距盈10.47% | RR=1.46 | R/R可接受 | 理+10.5%实-2.4%",
"招商银行(600036) 新止损34.59 未触及 现价37.26",
"法拉电子(600563) | 损163.14(技术面弱支撑165.51(距1.4%)/盈189.87(技术面强压力187.06(距1.5%) | 现价168.19(-1.09%) | 距损3.0%/距盈12.89% | RR=4.3 | R/R合理 | 理+11.9%实+8.2%",
"法拉电子(600563) 新止损163.14 未触及 现价168.19",
"辽宁成大(600739) | 损9.38(技术面强支撑9.38(距0.0%)/盈11.02(技术面强压力10.86(距1.5%) | 现价10.09(-1.46%) | 距损7.04%/距盈9.22% | RR=1.31 | R/R可接受 | 理+9.5%实-17.9%",
"辽宁成大(600739) 新止损9.38 未触及 现价10.09",
"紫金矿业(601899) | 损25.24(低于技术面强撑27.398.5%(深套宽止损))/盈33.97(技术面强压力33.47(距1.5%) | 现价29.69(-2.43%) | 距损14.99%/距盈14.42% | RR=0.96 | 深套持有 | 理+17.4%实-26.3%",
"紫金矿业(601899) 新止损25.24 未触及 现价29.69",
"药明康德(603259) | 损98.2(技术面弱支撑98.2(距0.0%)/盈109.64(技术面强压力108.02(距1.5%) | 现价102.72(+4.60%) | 距损4.4%/距盈6.74% | RR=1.53 | R/R合理 | 理+8.9%实+6.8%",
"药明康德(603259) 新止损98.2 未触及 现价102.72",
"海博思创(688411) | 损272.57(技术面弱支撑273.21(距0.2%)/盈328.31(技术面强压力323.46(距1.5%) | 现价281.0(+1.53%) | 距损3.0%/距盈16.84% | RR=5.61 | R/R合理 | 理+17.2%实+8.7%",
"海博思创(688411) 新止损272.57 未触及 现价281.0",
"芯碁微装(688630) | 损475.77(技术面弱支撑475.77(距0.0%)/盈None(未设定止盈价) | 现价502.0(+5.51%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"芯碁微装(688630) 新止损475.77 未触及 现价502.0",
"华恒生物(688639) | 损20.24(技术面弱支撑20.42(距0.9%)/盈None(未设定止盈价) | 现价20.87(+0.87%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"华恒生物(688639) 新止损20.24 未触及 现价20.87",
"摩尔线程-U(688795) | 损639.0(技术面弱支撑639.0(距0.0%)/盈None(未设定止盈价) | 现价669.0(+4.69%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"摩尔线程-U(688795) 新止损639.0 未触及 现价669.0",
"沐曦股份-U(688802) | 损732.5(技术面弱支撑732.5(距0.0%)/盈None(未设定止盈价) | 现价769.89(+5.10%) | 距损None%/距盈None% | RR=None | | 理+0.0%实+0.0%",
"沐曦股份-U(688802) 新止损732.5 未触及 现价769.89",
"中芯国际(688981) | 损134.18(技术面弱支撑134.18(距0.0%)/盈162.05(技术面强压力159.66(距1.5%) | 现价140.7(+4.45%) | 距损4.63%/距盈15.17% | RR=3.28 | R/R合理 | 理+17.8%实+11.6%",
"中芯国际(688981) 新止损134.18 未触及 现价140.7"
] ]
} }
+1012 -32671
View File
File diff suppressed because it is too large Load Diff
+126 -126
View File
@@ -1,82 +1,82 @@
{ {
"updated_at": "2026-06-22 09:35:48", "updated_at": "2026-06-22 12:00:26",
"data_timestamp": "2026-06-22 09:35:45", "data_timestamp": "2026-06-22 12:00:00",
"session": "morning", "session": "midday",
"has_valid_data": true, "has_valid_data": true,
"indices": { "indices": {
"上证指数": { "上证指数": {
"price": 4084.49, "price": 4098.01,
"change_pct": -0.15, "change_pct": 0.18,
"high": 4095.14, "high": 4106.08,
"low": 4077.44 "low": 4070.17
}, },
"深证成指": { "深证成指": {
"price": 16051.98, "price": 16077.2,
"change_pct": 0.13, "change_pct": 0.29,
"high": 16099.62, "high": 16204.79,
"low": 16003.63 "low": 15914.05
}, },
"创业板指": { "创业板指": {
"price": 4259.63, "price": 4284.03,
"change_pct": 0.17, "change_pct": 0.74,
"high": 4278.59, "high": 4326.91,
"low": 4242.28 "low": 4229.31
}, },
"科创50": { "科创50": {
"price": 1922.02, "price": 1911.91,
"change_pct": 0.55, "change_pct": 0.02,
"high": 1931.15, "high": 1963.33,
"low": 1920.52 "low": 1879.59
}, },
"恒生指数": { "恒生指数": {
"price": 23924.81, "price": 23715.46,
"change_pct": 0.0, "change_pct": -0.88,
"high": 0.0, "high": 23811.76,
"low": 0.0 "low": 23444.86
}, },
"国企指数": { "国企指数": {
"price": 7976.04, "price": 7900.2,
"change_pct": 0.0, "change_pct": -0.95,
"high": 0.0, "high": 7935.55,
"low": 0.0 "low": 7795.37
} }
}, },
"structure": { "structure": {
"overall": "neutral", "overall": "neutral",
"description": "成长略强" "description": "均衡"
}, },
"key_sectors": [ "key_sectors": [
{
"name": "机器人产业",
"change_pct": -3.64
},
{ {
"name": "通用航空", "name": "通用航空",
"change_pct": -1.43 "change_pct": -3.12
},
{
"name": "国证芯片",
"change_pct": 1.28
},
{
"name": "上证信息",
"change_pct": 1.01
}, },
{ {
"name": "新能电池", "name": "新能电池",
"change_pct": -0.98 "change_pct": 2.44
},
{
"name": "机器人产业",
"change_pct": -0.95
}, },
{ {
"name": "上证资源", "name": "上证资源",
"change_pct": 0.31 "change_pct": 1.76
},
{
"name": "治理指数",
"change_pct": -0.29
}, },
{ {
"name": "上证周期", "name": "上证周期",
"change_pct": -0.15 "change_pct": 1.68
},
{
"name": "国证芯片",
"change_pct": 1.45
},
{
"name": "治理指数",
"change_pct": 0.57
},
{
"name": "上证信息",
"change_pct": 0.52
} }
], ],
"top_gainers": [ "top_gainers": [
@@ -84,117 +84,117 @@
"name": "非金属材料", "name": "非金属材料",
"code": "", "code": "",
"price": 0, "price": 0,
"change": 3.16, "change": 5.42,
"volume": 27.38, "volume": 206.5,
"turnover": 20.95, "turnover": 141.88,
"net_inflow": -1.85, "net_inflow": -1.5,
"up_count": 10, "up_count": 11,
"down_count": 3, "down_count": 3,
"avg_price": 76.52, "avg_price": 68.71,
"lead_stock": "力量钻石", "lead_stock": "东方碳素",
"lead_stock_change": 16.25 "lead_stock_change": 21.01
}, },
{ {
"name": "小金属", "name": "小金属",
"code": "", "code": "",
"price": 0, "price": 0,
"change": 2.27, "change": 4.8,
"volume": 180.94, "volume": 1503.62,
"turnover": 94.8, "turnover": 737.33,
"net_inflow": -3.7, "net_inflow": -13.54,
"up_count": 20, "up_count": 26,
"down_count": 9, "down_count": 3,
"avg_price": 52.39, "avg_price": 49.04,
"lead_stock": "长裕集团", "lead_stock": "中钨高新",
"lead_stock_change": 9.99 "lead_stock_change": 10.0
}, },
{ {
"name": "电子化学品", "name": "保险",
"code": "", "code": "",
"price": 0, "price": 0,
"change": 1.8, "change": 4.78,
"volume": 128.59, "volume": 341.49,
"turnover": 72.85, "turnover": 117.85,
"net_inflow": -5.07, "net_inflow": 17.04,
"up_count": 34, "up_count": 5,
"down_count": 7, "down_count": 0,
"avg_price": 56.65, "avg_price": 34.51,
"lead_stock": "广信材料", "lead_stock": "新华保险",
"lead_stock_change": 10.41 "lead_stock_change": 7.38
}, },
{ {
"name": "其他电子", "name": "证券",
"code": "", "code": "",
"price": 0, "price": 0,
"change": 1.76, "change": 3.78,
"volume": 76.99, "volume": 3200.28,
"turnover": 38.16, "turnover": 409.47,
"net_inflow": -1.33, "net_inflow": 71.49,
"up_count": 27, "up_count": 50,
"down_count": 6, "down_count": 0,
"avg_price": 49.22, "avg_price": 12.79,
"lead_stock": "富信科技", "lead_stock": "广发证券",
"lead_stock_change": 10.71 "lead_stock_change": 9.98
}, },
{ {
"name": "半导体", "name": "农化制品",
"code": "", "code": "",
"price": 0, "price": 0,
"change": 1.31, "change": 2.0,
"volume": 320.76, "volume": 1297.23,
"turnover": 305.31, "turnover": 190.08,
"net_inflow": -6.94, "net_inflow": 11.07,
"up_count": 137, "up_count": 37,
"down_count": 36, "down_count": 23,
"avg_price": 95.37, "avg_price": 14.65,
"lead_stock": "欧莱新材", "lead_stock": "川金诺",
"lead_stock_change": 16.07 "lead_stock_change": 12.23
} }
], ],
"top_losers": [ "top_losers": [
{ {
"name": "能源金属", "name": "自动化设备",
"code": "", "code": "",
"price": 0, "price": 0,
"change": -3.85, "change": -4.03,
"volume": 42.35, "volume": 1106.85,
"turnover": 24.46, "turnover": 735.82,
"net_inflow": -2.91, "net_inflow": -75.95,
"up_count": 1, "up_count": 7,
"down_count": 11, "down_count": 89,
"avg_price": 57.76, "avg_price": 66.48,
"lead_stock": "博迁新材", "lead_stock": "博杰股份",
"lead_stock_change": 1.39 "lead_stock_change": 7.6
}, },
{ {
"name": "机场航运", "name": "军工电子",
"code": "", "code": "",
"price": 0, "price": 0,
"change": -2.39, "change": -3.71,
"volume": 87.29, "volume": 893.12,
"turnover": 3.26, "turnover": 287.08,
"net_inflow": -0.6, "net_inflow": -29.04,
"up_count": 0, "up_count": 3,
"down_count": 13, "down_count": 59,
"avg_price": 4.05, "avg_price": 32.14,
"lead_stock": "深圳机场", "lead_stock": "金信诺",
"lead_stock_change": -0.65 "lead_stock_change": 4.47
}, },
{ {
"name": "影视院线", "name": "电机",
"code": "", "code": "",
"price": 0, "price": 0,
"change": -2.35, "change": -3.67,
"volume": 41.96, "volume": 307.45,
"turnover": 2.93, "turnover": 62.49,
"net_inflow": -0.49, "net_inflow": -10.21,
"up_count": 1, "up_count": 3,
"down_count": 18, "down_count": 23,
"avg_price": 6.92, "avg_price": 20.33,
"lead_stock": "ST华谊", "lead_stock": "佳电股份",
"lead_stock_change": 0.57 "lead_stock_change": 1.09
} }
], ],
"sector_up_ratio": 16.7, "sector_up_ratio": 17.8,
"sector_mood": "bearish" "sector_mood": "bearish"
} }
+5976 -276
View File
File diff suppressed because it is too large Load Diff
+385 -188
View File
@@ -1,494 +1,691 @@
{ {
"total_assets": 1020848.88,
"stock_value": 874011.99,
"cash": 146836.89,
"position_pct": 85.62,
"total_pnl": -148037.26,
"holdings": [ "holdings": [
{ {
"code": "00700", "code": "00700",
"name": "腾讯控股", "name": "腾讯控股",
"shares": 100, "shares": 100,
"price": 439.0,
"cost": 445.7552, "cost": 445.7552,
"pnl": "-1.25%",
"position_pct": 3.72, "position_pct": 3.72,
"change_pct": -0.27, "is_active": 1,
"analysis": {
"stop_loss": 387.49, "stop_loss": 387.49,
"take_profit": 496.33, "take_profit": 496.33,
"entry_low": 435.13, "entry_low": 435.13,
"entry_high": 440.67, "entry_high": 440.67,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损387.49 | 目标496.33 | 买入区435.13~440.67 | 信号:持有",
"tech_snapshot": "形态:十字星/neutral 量价:数据不足 强撑:399.47 弱撑:435.13 弱压:445.73 强压:481.87", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 362.24,
"take_profit": 456.57,
"entry_low": 430.6,
"entry_high": 434.8,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损362.24 | 目标456.57 | 买入区430.6~434.8 | 信号:持有",
"tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:389.0 弱撑:430.6 弱压:440.2 强压:480.6",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 1.02, "rr_ratio": 1.03,
"action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 433.0,
"change_pct": -1.64,
"avg_price": 445.7552
}, },
{ {
"code": "00981", "code": "00981",
"name": "中芯国际", "name": "中芯国际",
"shares": 500, "shares": 500,
"price": 78.8,
"cost": 76.3899, "cost": 76.3899,
"pnl": "0.14%",
"position_pct": 3.23, "position_pct": 3.23,
"change_pct": 3.01, "is_active": 1,
"analysis": {
"stop_loss": 67.69, "stop_loss": 67.69,
"take_profit": 87.26, "take_profit": 87.26,
"entry_low": 73.68, "entry_low": 73.68,
"entry_high": 76.57, "entry_high": 76.57,
"action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有", "action": "盈利持有 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损67.69 | 目标87.26 | 买入区73.68~76.57 | 信号:持有",
"tech_snapshot": "形态:长影星线/neutral 量价:数据不足 强撑:68.42 弱撑:73.68 弱压:79.38 强压:84.72", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 66.37,
"take_profit": 90.62,
"entry_low": 76.5,
"entry_high": 79.52,
"action": "盈利持有 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损66.37 | 目标90.62 | 买入区76.5~79.52 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:68.42 弱撑:76.5 弱压:81.88 强压:90.62",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 1.02, "rr_ratio": 1.11,
"action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.1),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 78.9,
"change_pct": 3.14,
"avg_price": 76.3899
}, },
{ {
"code": "01088", "code": "01088",
"name": "中国神华", "name": "中国神华",
"shares": 500, "shares": 500,
"price": 42.1,
"cost": 46.1659, "cost": 46.1659,
"pnl": "-8.29%",
"position_pct": 1.79, "position_pct": 1.79,
"change_pct": -0.57, "is_active": 1,
"analysis": {
"stop_loss": 35.09, "stop_loss": 35.09,
"take_profit": 42.9, "take_profit": 42.9,
"entry_low": 41.66, "entry_low": 41.66,
"entry_high": 42.8, "entry_high": 42.8,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.3),不建议加仓 | 止损35.09 | 目标42.9 | 买入区41.66~42.8 | 信号:持有",
"tech_snapshot": "形态:带上影阴线/bearish 量价:数据不足 强撑:39.32 弱撑:41.66 弱压:43.48 强压:46.28", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 37.9,
"take_profit": 46.43,
"entry_low": 41.91,
"entry_high": 42.37,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.8),不建议加仓 | 止损37.9 | 目标46.43 | 买入区41.91~42.37 | 信号:持有",
"tech_snapshot": "形态:带下影阳线/bullish 量价:数据不足 强撑:38.31 弱撑:41.91 弱压:43.19 强压:46.43",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 1.3, "rr_ratio": 0.83,
"action_note": "⚠️盈亏比偏低(1:1.3),不建议加仓", "action_note": "⚠️盈亏比偏低(1:0.8),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 42.58,
"change_pct": 0.57,
"avg_price": 46.1659
}, },
{ {
"code": "01211", "code": "01211",
"name": "比亚迪股份", "name": "比亚迪股份",
"shares": 600, "shares": 600,
"price": 80.25,
"cost": 105.4926, "cost": 105.4926,
"pnl": "-23.36%",
"position_pct": 4.1, "position_pct": 4.1,
"change_pct": -0.74, "is_active": 1,
"analysis": {
"stop_loss": 63.99, "stop_loss": 63.99,
"take_profit": 87.07, "take_profit": 87.07,
"entry_low": 72.77, "entry_low": 72.77,
"entry_high": 84.89, "entry_high": 84.89,
"action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有", "action": "深套持有 | 深套持有 | 止损63.99 | 目标87.07 | 买入区72.77~84.89 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:数据不足 强撑:73.78 弱撑:79.87 弱压:82.37 强压:88.98", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 61.7,
"take_profit": 85.12,
"entry_low": 70.16,
"entry_high": 81.85,
"action": "深套持有 | 深套持有 | 止损61.7 | 目标85.12 | 买入区70.16~81.85 | 信号:持有",
"tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:67.0 弱撑:76.35 弱压:80.85 强压:89.6",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 0.67, "rr_ratio": 1.0,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 78.35,
"change_pct": -3.09,
"avg_price": 105.4926
}, },
{ {
"code": "01478", "code": "01478",
"name": "丘钛科技", "name": "丘钛科技",
"shares": 11000, "shares": 11000,
"price": 8.9,
"cost": 13.8666, "cost": 13.8666,
"pnl": "-36.90%",
"position_pct": 8.13, "position_pct": 8.13,
"change_pct": 1.71, "is_active": 1,
"analysis": {
"stop_loss": 7.33, "stop_loss": 7.33,
"take_profit": 10.39, "take_profit": 10.39,
"entry_low": 7.88, "entry_low": 7.88,
"entry_high": 9.19, "entry_high": 9.19,
"action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有", "action": "深套持有 | 深套持有 | 止损7.33 | 目标10.39 | 买入区7.88~9.19 | 信号:持有",
"tech_snapshot": "形态:带下影阴线/neutral 量价:数据不足 强撑:7.41 弱撑:8.46 弱压:9.05 强压:10.09", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 6.62,
"take_profit": 9.37,
"entry_low": 7.52,
"entry_high": 8.78,
"action": "深套持有 | 深套持有 | 止损6.62 | 目标9.37 | 买入区7.52~8.78 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/neutral 量价:数据不足 强撑:7.18 弱撑:8.14 弱压:8.75 强压:9.86",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 1.0, "rr_ratio": 1.2,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 8.38,
"change_pct": -4.23,
"avg_price": 13.8666
}, },
{ {
"code": "01888", "code": "01888",
"name": "建滔积层板", "name": "建滔积层板",
"shares": 500, "shares": 500,
"price": 93.6,
"cost": 88.7544, "cost": 88.7544,
"pnl": "3.49%",
"position_pct": 3.88, "position_pct": 3.88,
"change_pct": 1.91, "is_active": 1,
"analysis": {
"stop_loss": 86.34, "stop_loss": 86.34,
"take_profit": 141.9, "take_profit": 141.9,
"entry_low": 85.82, "entry_low": 85.82,
"entry_high": 90.11, "entry_high": 90.11,
"action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持", "action": "盈利持有 | 短炒强趋势持 | 止损86.34 | 目标141.9 | 买入区85.82~90.11 | 信号:强趋势持",
"tech_snapshot": "形态:带下影阳线/bullish 量价:数据不足 强撑:60.48 弱撑:85.82 弱压:94.87 强压:117.18", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 81.61,
"take_profit": 131.46,
"entry_low": 87.18,
"entry_high": 91.54,
"action": "盈利持有 | 短炒强趋势持 | 止损81.61 | 目标131.46 | 买入区87.18~91.54 | 信号:强趋势持",
"tech_snapshot": "形态:倒T线/射击之星/neutral 量价:数据不足 强撑:57.27 弱撑:87.18 弱压:98.43 强压:129.57",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 10.0, "rr_ratio": 10.01,
"action_note": "短炒强趋势持", "action_note": "短炒强趋势持",
"timing_signal": "强趋势持" "timing_signal": "强趋势持"
} },
"price": 91.95,
"change_pct": 0.11,
"avg_price": 88.7544
}, },
{ {
"code": "02202", "code": "02202",
"name": "万科企业", "name": "万科企业",
"shares": 19700, "shares": 19700,
"price": 2.42,
"cost": 4.6955, "cost": 4.6955,
"pnl": "-48.46%",
"position_pct": 4.03, "position_pct": 4.03,
"change_pct": -4.76, "is_active": 1,
"analysis": {
"stop_loss": 2.0, "stop_loss": 2.0,
"take_profit": 2.85, "take_profit": 2.85,
"entry_low": 2.18, "entry_low": 2.18,
"entry_high": 2.54, "entry_high": 2.54,
"action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有", "action": "深套持有 | 深套持有 | 止损2.0 | 目标2.85 | 买入区2.18~2.54 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:2.15 弱撑:2.36 弱压:2.54 强压:2.77", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 1.91,
"take_profit": 2.63,
"entry_low": 2.19,
"entry_high": 2.55,
"action": "深套持有 | 深套持有 | 止损1.91 | 目标2.63 | 买入区2.19~2.55 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:2.05 弱撑:2.37 弱压:2.46 强压:2.77",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 0.97, "rr_ratio": 0.89,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 2.47,
"change_pct": 2.07,
"avg_price": 4.6955
}, },
{ {
"code": "02388", "code": "02388",
"name": "中银香港", "name": "中银香港",
"shares": 1000, "shares": 1000,
"price": 47.72,
"cost": 43.9719, "cost": 43.9719,
"pnl": "9.48%",
"position_pct": 4.07, "position_pct": 4.07,
"change_pct": -0.87, "is_active": 1,
"analysis": {
"stop_loss": 43.49, "stop_loss": 43.49,
"take_profit": 50.1, "take_profit": 50.1,
"entry_low": 47.51, "entry_low": 47.51,
"entry_high": 48.95, "entry_high": 48.95,
"action": "盈利良好 | 止损43.49 | 目标50.1 | 买入区47.51~48.95 | 信号:持有", "action": "盈利良好 | 止损43.49 | 目标50.1 | 买入区47.51~48.95 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.7 弱撑:47.51 弱压:48.59 强压:51.2", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 44.75,
"take_profit": 50.16,
"entry_low": 47.09,
"entry_high": 48.14,
"action": "盈利良好 | 止损44.75 | 目标50.16 | 买入区47.09~48.14 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:44.94 弱撑:47.09 弱压:48.14 强压:50.16",
"reassessed_at": "2026-06-22 12:00",
"status": "updated", "status": "updated",
"rr_ratio": 2.13, "rr_ratio": 1.82,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 47.6,
"change_pct": -1.12,
"avg_price": 43.9719
}, },
{ {
"code": "09988", "code": "09988",
"name": "阿里巴巴-W", "name": "阿里巴巴-W",
"shares": 700, "shares": 700,
"price": 102.8,
"cost": 126.6781, "cost": 126.6781,
"pnl": "-17.19%",
"position_pct": 6.2, "position_pct": 6.2,
"change_pct": -2.0, "is_active": 1,
"analysis": {
"stop_loss": 90.82, "stop_loss": 90.82,
"take_profit": 118.69, "take_profit": 118.69,
"entry_low": 102.87, "entry_low": 102.87,
"entry_high": 104.43, "entry_high": 104.43,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标118.69 | 买入区102.87~104.43 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:0.9),不建议加仓 | 止损90.82 | 目标118.69 | 买入区102.87~104.43 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:93.63 弱撑:102.87 弱压:106.9 强压:115.23", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 83.69,
"take_profit": 108.94,
"entry_low": 100.83,
"entry_high": 102.27,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损83.69 | 目标108.94 | 买入区100.83~102.27 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:数据不足 强撑:89.87 弱撑:100.83 弱压:104.9 强压:114.67",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 0.92, "rr_ratio": 0.96,
"action_note": "⚠️盈亏比偏低(1:0.9),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 102.9,
"change_pct": -1.91,
"avg_price": 126.6781
}, },
{ {
"code": "300035", "code": "300035",
"name": "中科电气", "name": "中科电气",
"shares": 1400, "shares": 1400,
"price": 16.77,
"cost": 22.2914, "cost": 22.2914,
"pnl": "-22.08%",
"position_pct": 2.38, "position_pct": 2.38,
"change_pct": -3.11, "is_active": 1,
"analysis": {
"stop_loss": 13.74, "stop_loss": 13.74,
"take_profit": 19.0, "take_profit": 19.0,
"entry_low": 15.63, "entry_low": 15.63,
"entry_high": 18.24, "entry_high": 18.24,
"action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有", "action": "深套持有 | 深套持有 | 止损13.74 | 目标19.0 | 买入区15.63~18.24 | 信号:持有",
"tech_snapshot": "形态:带上影阴线/bearish 量价:主动卖盘占优 强撑:15.64 弱撑:17.14 弱压:17.76 强压:19.42", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 13.94,
"take_profit": 18.83,
"entry_low": 15.22,
"entry_high": 17.76,
"action": "深套持有 | 深套持有 | 止损13.94 | 目标18.83 | 买入区15.22~17.76 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:主动卖盘占优 强撑:14.85 弱撑:16.31 弱压:17.43 强压:18.83",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 0.79, "rr_ratio": 0.76,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 17.15,
"change_pct": -1.32,
"avg_price": 22.2914
}, },
{ {
"code": "300548", "code": "300548",
"name": "长芯博创", "name": "长芯博创",
"shares": 100, "shares": 100,
"price": 300.45,
"cost": 231.46, "cost": 231.46,
"pnl": "21.83%",
"position_pct": 2.76, "position_pct": 2.76,
"change_pct": 5.79, "is_active": 1,
"analysis": {
"stop_loss": 251.24, "stop_loss": 251.24,
"take_profit": 413.9, "take_profit": 413.9,
"entry_low": 269.8, "entry_low": 269.8,
"entry_high": 283.29, "entry_high": 283.29,
"action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持", "action": "盈利良好 | 短炒强趋势持 | 止损251.24 | 目标413.9 | 买入区269.8~283.29 | 信号:强趋势持",
"tech_snapshot": "形态:光头光脚阳线/neutral 量价:主动买盘占优 强撑:215.9 弱撑:269.8 弱压:290.68 强压:323.86", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 263.73,
"take_profit": 424.82,
"entry_low": 281.99,
"entry_high": 296.09,
"action": "盈利良好 | 短炒强趋势持 | 止损263.73 | 目标424.82 | 买入区281.99~296.09 | 信号:强趋势持",
"tech_snapshot": "形态:倒T线/射击之星/neutral 量价:主动买盘占优 强撑:225.59 弱撑:281.99 弱压:308.63 强压:338.39",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 11.57, "rr_ratio": 10.0,
"action_note": "短炒强趋势持", "action_note": "短炒强趋势持",
"timing_signal": "强趋势持" "timing_signal": "强趋势持"
} },
"price": 298.09,
"change_pct": 5.71,
"avg_price": 231.46
}, },
{ {
"code": "300690", "code": "300690",
"name": "双一科技", "name": "双一科技",
"shares": 400, "shares": 400,
"price": 23.86,
"cost": 27.178, "cost": 27.178,
"pnl": "-12.13%",
"position_pct": 0.94, "position_pct": 0.94,
"change_pct": 0.08, "is_active": 1,
"analysis": {
"stop_loss": 22.1, "stop_loss": 22.1,
"take_profit": 25.93, "take_profit": 25.93,
"entry_low": 23.57, "entry_low": 23.57,
"entry_high": 23.98, "entry_high": 23.98,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损22.1 | 目标25.93 | 买入区23.57~23.98 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损22.1 | 目标25.93 | 买入区23.57~23.98 | 信号:持有",
"tech_snapshot": "形态:带下影阴线/neutral 量价:主动卖盘占优 强撑:22.78 弱撑:23.57 弱压:24.29 强压:25.17", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 21.03,
"take_profit": 23.7,
"entry_low": 23.16,
"entry_high": 23.77,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损21.03 | 目标23.7 | 买入区23.16~23.77 | 信号:持有",
"tech_snapshot": "形态:十字星/neutral 量价:主动卖盘占优 强撑:22.58 弱撑:23.16 弱压:24.32 强压:24.95",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 1.17, "rr_ratio": 1.08,
"action_note": "⚠️盈亏比偏低(1:1.2),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.1),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 24.16,
"change_pct": 1.17,
"avg_price": 27.178
}, },
{ {
"code": "300750", "code": "300750",
"name": "宁德时代", "name": "宁德时代",
"shares": 100, "shares": 100,
"price": 392.89,
"cost": 401.7803, "cost": 401.7803,
"pnl": "-2.55%",
"position_pct": 3.84, "position_pct": 3.84,
"change_pct": 0.29, "is_active": 1,
"analysis": {
"stop_loss": 345.04, "stop_loss": 345.04,
"take_profit": 414.6, "take_profit": 414.6,
"entry_low": 384.35, "entry_low": 384.35,
"entry_high": 397.12, "entry_high": 397.12,
"action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有", "action": "持有观察 | 止损345.04 | 目标414.6 | 买入区384.35~397.12 | 信号:弱势持有",
"tech_snapshot": "形态:带上影阴线/bearish 量价:买卖均衡 强撑:370.53 弱撑:384.35 弱压:404.32 强压:423.71", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 359.96,
"take_profit": 437.18,
"entry_low": 391.55,
"entry_high": 404.13,
"action": "盈利持有 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损359.96 | 目标437.18 | 买入区391.55~404.13 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:371.09 弱撑:391.55 弱压:422.27 强压:437.18",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 1.53, "rr_ratio": 0.57,
"action_note": "", "action_note": "⚠️盈亏比偏低(1:0.6),不建议加仓",
"timing_signal": "弱势持有" "timing_signal": "持有"
} },
"price": 408.98,
"change_pct": 4.43,
"avg_price": 401.7803
}, },
{ {
"code": "518880", "code": "518880",
"name": "黄金ETF华安", "name": "黄金ETF华安",
"shares": 2400, "shares": 2400,
"price": 8.71,
"cost": 12.1915, "cost": 12.1915,
"pnl": "-26.93%",
"position_pct": 2.09, "position_pct": 2.09,
"change_pct": -2.16, "is_active": 1,
"analysis": {
"stop_loss": 7.05, "stop_loss": 7.05,
"take_profit": 9.17, "take_profit": 9.17,
"entry_low": 8.02, "entry_low": 8.02,
"entry_high": 9.35, "entry_high": 9.35,
"action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有", "action": "深套持有 | 深套持有 | 止损7.05 | 目标9.17 | 买入区8.02~9.35 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.48 弱撑:8.88 弱压:8.96 强压:9.37", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 7.15,
"take_profit": 9.38,
"entry_low": 7.8,
"entry_high": 9.1,
"action": "深套持有 | 深套持有 | 止损7.15 | 目标9.38 | 买入区7.8~9.1 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:数据不足 强撑:8.02 弱撑:8.64 弱压:8.91 强压:9.38",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 0.35, "rr_ratio": 0.55,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 8.72,
"change_pct": -2.16,
"avg_price": 12.1915
}, },
{ {
"code": "600036", "code": "600036",
"name": "招商银行", "name": "招商银行",
"shares": 800, "shares": 800,
"price": 37.01,
"cost": 38.1582, "cost": 38.1582,
"pnl": "-2.35%",
"position_pct": 2.92, "position_pct": 2.92,
"change_pct": -0.67, "is_active": 1,
"analysis": {
"stop_loss": 32.21, "stop_loss": 32.21,
"take_profit": 39.68, "take_profit": 39.68,
"entry_low": 36.95, "entry_low": 36.95,
"entry_high": 37.57, "entry_high": 37.57,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损32.21 | 目标39.68 | 买入区36.95~37.57 | 信号:弱势持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损32.21 | 目标39.68 | 买入区36.95~37.57 | 信号:弱势持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:买卖均衡 强撑:34.59 弱撑:36.95 弱压:38.23 强压:40.55", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 33.2,
"take_profit": 40.18,
"entry_low": 36.97,
"entry_high": 37.2,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.0),不建议加仓 | 止损33.2 | 目标40.18 | 买入区36.97~37.2 | 信号:弱势持有",
"tech_snapshot": "形态:带上影阳线/neutral 量价:买卖均衡 强撑:34.23 弱撑:36.97 弱压:37.46 强压:40.18",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 1.23, "rr_ratio": 0.99,
"action_note": "⚠️盈亏比偏低(1:1.2),不建议加仓", "action_note": "⚠️盈亏比偏低(1:1.0),不建议加仓",
"timing_signal": "弱势持有" "timing_signal": "弱势持有"
} },
"price": 37.65,
"change_pct": 1.1,
"avg_price": 38.1582
}, },
{ {
"code": "600563", "code": "600563",
"name": "法拉电子", "name": "法拉电子",
"shares": 200, "shares": 200,
"price": 171.6,
"cost": 155.5032, "cost": 155.5032,
"pnl": "8.16%",
"position_pct": 3.3, "position_pct": 3.3,
"change_pct": 2.02, "is_active": 1,
"analysis": {
"stop_loss": 161.41, "stop_loss": 161.41,
"take_profit": 192.67, "take_profit": 192.67,
"entry_low": 165.51, "entry_low": 165.51,
"entry_high": 173.79, "entry_high": 173.79,
"action": "盈利良好 | 止损161.41 | 目标192.67 | 买入区165.51~173.79 | 信号:持有", "action": "盈利良好 | 止损161.41 | 目标192.67 | 买入区165.51~173.79 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:153.05 弱撑:165.51 弱压:173.13 强压:187.06", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 153.13,
"take_profit": 175.76,
"entry_low": 166.06,
"entry_high": 174.36,
"action": "盈利良好 | 止损153.13 | 目标175.76 | 买入区166.06~174.36 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/neutral 量价:买卖均衡 强撑:151.37 弱撑:166.06 弱压:175.12 强压:185.01",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 3.74, "rr_ratio": 3.04,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 172.94,
"change_pct": 2.82,
"avg_price": 155.5032
}, },
{ {
"code": "600739", "code": "600739",
"name": "辽宁成大", "name": "辽宁成大",
"shares": 6600, "shares": 6600,
"price": 10.11,
"cost": 12.2862, "cost": 12.2862,
"pnl": "-17.88%",
"position_pct": 6.52, "position_pct": 6.52,
"change_pct": 0.2, "is_active": 1,
"analysis": {
"stop_loss": 9.1, "stop_loss": 9.1,
"take_profit": 11.19, "take_profit": 11.19,
"entry_low": 10.0, "entry_low": 10.0,
"entry_high": 10.12, "entry_high": 10.12,
"action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.1 | 目标11.19 | 买入区10.0~10.12 | 信号:持有", "action": "持有观察 | ⚠️盈亏比偏低(1:1.1),不建议加仓 | 止损9.1 | 目标11.19 | 买入区10.0~10.12 | 信号:持有",
"tech_snapshot": "形态:光头光脚阴线/bearish 量价:主动买盘占优 强撑:9.38 弱撑:10.0 弱压:10.24 强压:10.86", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 8.48,
"take_profit": 9.99,
"entry_low": 10.09,
"entry_high": 10.3,
"action": "持有观察 | ⚠️盈亏比偏低(1:0.6),不建议加仓 | 止损8.48 | 目标9.99 | 买入区10.09~10.3 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:主动买盘占优 强撑:9.5 弱撑:10.09 弱压:10.75 强压:11.1",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 1.08, "rr_ratio": 0.55,
"action_note": "⚠️盈亏比偏低(1:1.1),不建议加仓", "action_note": "⚠️盈亏比偏低(1:0.6),不建议加仓",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 10.74,
"change_pct": 6.64,
"avg_price": 12.2862
}, },
{ {
"code": "601899", "code": "601899",
"name": "紫金矿业", "name": "紫金矿业",
"shares": 2400, "shares": 2400,
"price": 28.92,
"cost": 40.2685, "cost": 40.2685,
"pnl": "-26.27%",
"position_pct": 6.98, "position_pct": 6.98,
"change_pct": -2.76, "is_active": 1,
"analysis": {
"stop_loss": 24.48, "stop_loss": 24.48,
"take_profit": 34.47, "take_profit": 34.47,
"entry_low": 26.72, "entry_low": 26.72,
"entry_high": 31.17, "entry_high": 31.17,
"action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有", "action": "深套持有 | 深套持有 | 止损24.48 | 目标34.47 | 买入区26.72~31.17 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:主动买盘占优 强撑:27.39 弱撑:28.99 弱压:30.69 强压:33.47", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 24.92,
"take_profit": 32.66,
"entry_low": 26.68,
"entry_high": 31.12,
"action": "深套持有 | 深套持有 | 止损24.92 | 目标32.66 | 买入区26.68~31.12 | 信号:持有",
"tech_snapshot": "形态:带下影阳线/neutral 量价:主动买盘占优 强撑:26.72 弱撑:28.85 弱压:30.13 强压:32.66",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 0.85, "rr_ratio": 0.68,
"action_note": "深套持有", "action_note": "深套持有",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 30.44,
"change_pct": 2.53,
"avg_price": 40.2685
}, },
{ {
"code": "603259", "code": "603259",
"name": "药明康德", "name": "药明康德",
"shares": 400, "shares": 400,
"price": 104.42,
"cost": 96.201, "cost": 96.201,
"pnl": "6.78%",
"position_pct": 4.02, "position_pct": 4.02,
"change_pct": 1.44, "is_active": 1,
"analysis": {
"stop_loss": 97.16, "stop_loss": 97.16,
"take_profit": 111.26, "take_profit": 111.26,
"entry_low": 98.2, "entry_low": 98.2,
"entry_high": 103.11, "entry_high": 103.11,
"action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标111.26 | 买入区98.2~103.11 | 信号:持有", "action": "盈利良好 | ⚠️盈亏比偏低(1:1.2),不建议加仓 | 止损97.16 | 目标111.26 | 买入区98.2~103.11 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/bullish 量价:买卖均衡 强撑:92.35 弱撑:98.2 弱压:105.46 强压:108.02", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 93.96,
"take_profit": 107.3,
"entry_low": 102.28,
"entry_high": 106.93,
"action": "盈利良好 | 止损93.96 | 目标107.3 | 买入区102.28~106.93 | 信号:持有",
"tech_snapshot": "形态:锤子线/T字线/bullish 量价:买卖均衡 强撑:93.93 弱撑:102.28 弱压:105.18 强压:112.95",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 1.17, "rr_ratio": 2.86,
"action_note": "⚠️盈亏比偏低(1:1.2),不建议加仓", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 106.83,
"change_pct": 4.02,
"avg_price": 96.201
}, },
{ {
"code": "688411", "code": "688411",
"name": "海博思创", "name": "海博思创",
"shares": 239, "shares": 239,
"price": 278.51,
"cost": 258.6163, "cost": 258.6163,
"pnl": "8.66%",
"position_pct": 6.58, "position_pct": 6.58,
"change_pct": -0.53, "is_active": 1,
"stop_loss": 277.42,
"take_profit": 327.74,
"entry_low": 277.73,
"entry_high": 291.62,
"action": "盈利良好 | 止损277.42 | 目标327.74 | 买入区277.73~291.62 | 信号:持有",
"strategy_updated": "2026-06-22 13:59",
"analysis": { "analysis": {
"stop_loss": 253.82, "stop_loss": 277.42,
"take_profit": 316.5, "take_profit": 327.74,
"entry_low": 273.21, "entry_low": 277.73,
"entry_high": 286.87, "entry_high": 291.62,
"action": "盈利良好 | 止损253.82 | 目标316.5 | 买入区273.21~286.87 | 信号:持有", "rr_ratio": 4.86,
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:237.08 弱撑:273.21 弱压:288.06 强压:323.46", "timing_signal": "持有",
"reassessed_at": "2026-06-19 16:01", "action": "盈利良好 | 止损277.42 | 目标327.74 | 买入区277.73~291.62 | 信号:持有",
"tech_snapshot": "形态:光头光脚阳线/neutral 量价:买卖均衡 强撑:238.66 弱撑:277.73 弱压:291.45 强压:327.74",
"reassessed_at": "2026-06-22 13:59",
"status": "updated", "status": "updated",
"rr_ratio": 5.04, "stock_category": "中短线"
"action_note": "", },
"timing_signal": "持有" "price": 286.98,
} "change_pct": 2.12,
"avg_price": 258.6163
}, },
{ {
"code": "688981", "code": "688981",
"name": "中芯国际", "name": "中芯国际",
"shares": 300, "shares": 300,
"price": 143.02,
"cost": 126.0681, "cost": 126.0681,
"pnl": "11.61%",
"position_pct": 4.13, "position_pct": 4.13,
"change_pct": 1.65, "is_active": 1,
"analysis": {
"stop_loss": 132.76, "stop_loss": 132.76,
"take_profit": 164.45, "take_profit": 164.45,
"entry_low": 134.18, "entry_low": 134.18,
"entry_high": 140.89, "entry_high": 140.89,
"action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有", "action": "盈利良好 | 止损132.76 | 目标164.45 | 买入区134.18~140.89 | 信号:持有",
"tech_snapshot": "形态:带上影阳线/neutral 量价:买卖均衡 强撑:119.14 弱撑:134.18 弱压:145.93 强压:159.66", "strategy_updated": "2026-06-19 16:01",
"reassessed_at": "2026-06-19 16:01", "analysis": {
"stop_loss": 134.66,
"take_profit": 167.33,
"entry_low": 139.41,
"entry_high": 146.38,
"action": "盈利良好 | 止损134.66 | 目标167.33 | 买入区139.41~146.38 | 信号:持有",
"tech_snapshot": "形态:倒T线/射击之星/bearish 量价:买卖均衡 强撑:120.07 弱撑:139.41 弱压:147.41 强压:167.33",
"reassessed_at": "2026-06-22 12:01",
"status": "updated", "status": "updated",
"rr_ratio": 2.91, "rr_ratio": 5.65,
"action_note": "", "action_note": "",
"timing_signal": "持有" "timing_signal": "持有"
} },
"price": 145.59,
"change_pct": 3.47,
"avg_price": 126.0681
},
{
"code": "000700",
"name": "模塑科技",
"shares": 1400,
"cost": 14.83,
"price": 15.18,
"change_pct": -1.75,
"position_pct": 2.05,
"is_active": 1,
"stop_loss": 14.32,
"take_profit": 17.0,
"entry_low": 14.63,
"entry_high": 15.23,
"action": "盈利持有 | 目标17.0 | 止损14.32 | 买入区14.63~15.23",
"strategy_updated": "2026-06-19",
"avg_price": 14.83
},
{
"code": "02318",
"name": "中国平安",
"shares": 500,
"cost": 50.92,
"price": 54.95,
"change_pct": 2.04,
"position_pct": 2.47,
"is_active": 1,
"stop_loss": 52.75,
"take_profit": 60.0,
"entry_low": 53.36,
"entry_high": 55.54,
"action": "盈利持有 | 目标60.0 | 止损52.75 | 买入区53.36~55.54",
"strategy_updated": "2026-06-22",
"avg_price": 50.92
},
{
"code": "09868",
"name": "小鹏汽车-W",
"shares": 700,
"cost": 47.71,
"price": 51.55,
"change_pct": 0.1,
"position_pct": 3.25,
"is_active": 1,
"stop_loss": 45.89,
"take_profit": 59.92,
"entry_low": 49.78,
"entry_high": 51.82,
"action": "盈利持有 | 目标59.92 | 止损45.89 | 买入区49.78~51.82 | 信号:阳线企稳,可买入",
"strategy_updated": "2026-06-22",
"avg_price": 47.71
} }
], ],
"cash": 70622,
"total_assets": 1035162,
"position_pct": 93.02,
"total_pnl": -148037.26,
"updated_at": "2026-06-18 17:37:10", "updated_at": "2026-06-18 17:37:10",
"day_pnl": -2482.47, "day_pnl": -2482.47,
"data_source": "券商导出 2026-06-18 收盘(精确)" "data_source": "券商导出 2026-06-18 收盘(精确)"
+260 -8
View File
@@ -35,6 +35,12 @@
"high": 104.33, "high": 104.33,
"low": 97.72, "low": 97.72,
"close": 102.72 "close": 102.72
},
{
"date": "2026-06-22",
"high": 104.6,
"low": 101.7,
"close": 104.02
} }
], ],
"002594": [ "002594": [
@@ -73,6 +79,12 @@
"high": 89.33, "high": 89.33,
"low": 86.08, "low": 86.08,
"close": 88.13 "close": 88.13
},
{
"date": "2026-06-22",
"high": 87.1,
"low": 84.6,
"close": 86.08
} }
], ],
"00700": [ "00700": [
@@ -111,6 +123,12 @@
"high": 446.2, "high": 446.2,
"low": 435.6, "low": 435.6,
"close": 440.2 "close": 440.2
},
{
"date": "2026-06-22",
"high": 439.0,
"low": 431.0,
"close": 434.4
} }
], ],
"000700": [ "000700": [
@@ -149,6 +167,12 @@
"high": 16.14, "high": 16.14,
"low": 15.43, "low": 15.43,
"close": 15.45 "close": 15.45
},
{
"date": "2026-06-22",
"high": 16.0,
"low": 14.7,
"close": 15.1
} }
], ],
"001309": [ "001309": [
@@ -187,6 +211,12 @@
"high": 736.0, "high": 736.0,
"low": 698.08, "low": 698.08,
"close": 712.0 "close": 712.0
},
{
"date": "2026-06-22",
"high": 740.0,
"low": 706.0,
"close": 724.01
} }
], ],
"00968": [ "00968": [
@@ -225,6 +255,12 @@
"high": 2.39, "high": 2.39,
"low": 2.32, "low": 2.32,
"close": 2.35 "close": 2.35
},
{
"date": "2026-06-22",
"high": 2.35,
"low": 2.2,
"close": 2.24
} }
], ],
"00981": [ "00981": [
@@ -263,6 +299,12 @@
"high": 79.45, "high": 79.45,
"low": 73.75, "low": 73.75,
"close": 76.5 "close": 76.5
},
{
"date": "2026-06-22",
"high": 82.4,
"low": 77.15,
"close": 79.0
} }
], ],
"01070": [ "01070": [
@@ -301,6 +343,12 @@
"high": 14.2, "high": 14.2,
"low": 13.33, "low": 13.33,
"close": 13.51 "close": 13.51
},
{
"date": "2026-06-22",
"high": 13.51,
"low": 12.98,
"close": 13.04
} }
], ],
"01088": [ "01088": [
@@ -339,6 +387,12 @@
"high": 43.94, "high": 43.94,
"low": 42.12, "low": 42.12,
"close": 42.34 "close": 42.34
},
{
"date": "2026-06-22",
"high": 42.82,
"low": 41.54,
"close": 42.74
} }
], ],
"01211": [ "01211": [
@@ -377,6 +431,12 @@
"high": 82.9, "high": 82.9,
"low": 80.4, "low": 80.4,
"close": 80.85 "close": 80.85
},
{
"date": "2026-06-22",
"high": 80.25,
"low": 76.7,
"close": 77.95
} }
], ],
"01478": [ "01478": [
@@ -415,6 +475,12 @@
"high": 9.05, "high": 9.05,
"low": 8.46, "low": 8.46,
"close": 8.75 "close": 8.75
},
{
"date": "2026-06-22",
"high": 8.9,
"low": 8.3,
"close": 8.36
} }
], ],
"01888": [ "01888": [
@@ -453,6 +519,12 @@
"high": 91.85, "high": 91.85,
"low": 82.8, "low": 82.8,
"close": 91.85 "close": 91.85
},
{
"date": "2026-06-22",
"high": 99.65,
"low": 88.4,
"close": 92.2
} }
], ],
"02202": [ "02202": [
@@ -491,6 +563,12 @@
"high": 2.55, "high": 2.55,
"low": 2.4, "low": 2.4,
"close": 2.42 "close": 2.42
},
{
"date": "2026-06-22",
"high": 2.44,
"low": 2.35,
"close": 2.43
} }
], ],
"02318": [ "02318": [
@@ -529,6 +607,12 @@
"high": 55.95, "high": 55.95,
"low": 53.15, "low": 53.15,
"close": 53.85 "close": 53.85
},
{
"date": "2026-06-22",
"high": 55.35,
"low": 52.6,
"close": 54.8
} }
], ],
"02359": [ "02359": [
@@ -567,6 +651,12 @@
"high": 129.5, "high": 129.5,
"low": 122.0, "low": 122.0,
"close": 128.7 "close": 128.7
},
{
"date": "2026-06-22",
"high": 130.7,
"low": 126.4,
"close": 129.4
} }
], ],
"02388": [ "02388": [
@@ -605,6 +695,12 @@
"high": 48.4, "high": 48.4,
"low": 47.32, "low": 47.32,
"close": 48.14 "close": 48.14
},
{
"date": "2026-06-22",
"high": 48.0,
"low": 47.12,
"close": 47.52
} }
], ],
"02628": [ "02628": [
@@ -643,6 +739,12 @@
"high": 29.84, "high": 29.84,
"low": 27.8, "low": 27.8,
"close": 28.02 "close": 28.02
},
{
"date": "2026-06-22",
"high": 29.9,
"low": 27.48,
"close": 29.56
} }
], ],
"06160": [ "06160": [
@@ -681,6 +783,12 @@
"high": 165.2, "high": 165.2,
"low": 157.0, "low": 157.0,
"close": 163.7 "close": 163.7
},
{
"date": "2026-06-22",
"high": 162.1,
"low": 157.1,
"close": 159.5
} }
], ],
"06869": [ "06869": [
@@ -719,6 +827,12 @@
"high": 232.2, "high": 232.2,
"low": 216.2, "low": 216.2,
"close": 217.8 "close": 217.8
},
{
"date": "2026-06-22",
"high": 278.0,
"low": 235.0,
"close": 277.4
} }
], ],
"09868": [ "09868": [
@@ -757,6 +871,12 @@
"high": 52.8, "high": 52.8,
"low": 51.05, "low": 51.05,
"close": 51.5 "close": 51.5
},
{
"date": "2026-06-22",
"high": 51.65,
"low": 49.04,
"close": 51.65
} }
], ],
"09988": [ "09988": [
@@ -795,6 +915,12 @@
"high": 106.0, "high": 106.0,
"low": 102.4, "low": 102.4,
"close": 104.9 "close": 104.9
},
{
"date": "2026-06-22",
"high": 103.7,
"low": 100.8,
"close": 102.3
} }
], ],
"300035": [ "300035": [
@@ -833,6 +959,12 @@
"high": 17.92, "high": 17.92,
"low": 17.3, "low": 17.3,
"close": 17.37 "close": 17.37
},
{
"date": "2026-06-22",
"high": 17.36,
"low": 16.24,
"close": 16.91
} }
], ],
"300124": [ "300124": [
@@ -871,17 +1003,15 @@
"high": 72.36, "high": 72.36,
"low": 69.25, "low": 69.25,
"close": 71.18 "close": 71.18
},
{
"date": "2026-06-22",
"high": 71.4,
"low": 66.83,
"close": 68.06
} }
], ],
"300548": [ "300548": [
{
"date": "2026-03-24",
"open": 139.96,
"close": 142.03,
"high": 142.67,
"low": 135.27,
"volume": 185619.0
},
{ {
"date": "2026-03-25", "date": "2026-03-25",
"open": 149.84, "open": 149.84,
@@ -1349,6 +1479,12 @@
"high": 287.18, "high": 287.18,
"low": 266.3, "low": 266.3,
"close": 281.99 "close": 281.99
},
{
"date": "2026-06-22",
"high": 309.98,
"low": 290.31,
"close": 298.12
} }
], ],
"300750": [ "300750": [
@@ -1387,6 +1523,12 @@
"high": 409.89, "high": 409.89,
"low": 389.92, "low": 389.92,
"close": 391.55 "close": 391.55
},
{
"date": "2026-06-22",
"high": 413.33,
"low": 386.0,
"close": 413.07
} }
], ],
"518880": [ "518880": [
@@ -1425,6 +1567,12 @@
"high": 8.964, "high": 8.964,
"low": 8.892, "low": 8.892,
"close": 8.908 "close": 8.908
},
{
"date": "2026-06-22",
"high": 8.742,
"low": 8.655,
"close": 8.669
} }
], ],
"600036": [ "600036": [
@@ -1469,6 +1617,12 @@
"high": 38.2, "high": 38.2,
"low": 37.26, "low": 37.26,
"close": 37.26 "close": 37.26
},
{
"date": "2026-06-22",
"high": 37.44,
"low": 36.95,
"close": 37.22
} }
], ],
"600110": [ "600110": [
@@ -1551,6 +1705,12 @@
"high": 175.39, "high": 175.39,
"low": 167.77, "low": 167.77,
"close": 168.19 "close": 168.19
},
{
"date": "2026-06-22",
"high": 177.25,
"low": 168.19,
"close": 169.53
} }
], ],
"600739": [ "600739": [
@@ -1589,6 +1749,12 @@
"high": 10.25, "high": 10.25,
"low": 10.03, "low": 10.03,
"close": 10.09 "close": 10.09
},
{
"date": "2026-06-22",
"high": 10.56,
"low": 9.93,
"close": 10.53
} }
], ],
"601899": [ "601899": [
@@ -1633,6 +1799,12 @@
"high": 30.98, "high": 30.98,
"low": 29.28, "low": 29.28,
"close": 29.69 "close": 29.69
},
{
"date": "2026-06-22",
"high": 29.83,
"low": 28.55,
"close": 29.64
} }
], ],
"688411": [ "688411": [
@@ -1671,6 +1843,12 @@
"high": 287.33, "high": 287.33,
"low": 272.48, "low": 272.48,
"close": 281.0 "close": 281.0
},
{
"date": "2026-06-22",
"high": 288.68,
"low": 274.96,
"close": 285.97
} }
], ],
"688639": [ "688639": [
@@ -1709,6 +1887,12 @@
"high": 21.2, "high": 21.2,
"low": 20.36, "low": 20.36,
"close": 20.87 "close": 20.87
},
{
"date": "2026-06-22",
"high": 20.78,
"low": 19.77,
"close": 20.52
} }
], ],
"688795": [ "688795": [
@@ -1747,6 +1931,12 @@
"high": 675.55, "high": 675.55,
"low": 632.0, "low": 632.0,
"close": 669.0 "close": 669.0
},
{
"date": "2026-06-22",
"high": 671.99,
"low": 640.0,
"close": 645.89
} }
], ],
"688802": [ "688802": [
@@ -1785,6 +1975,12 @@
"high": 789.18, "high": 789.18,
"low": 732.5, "low": 732.5,
"close": 769.89 "close": 769.89
},
{
"date": "2026-06-22",
"high": 769.0,
"low": 715.4,
"close": 731.3
} }
], ],
"688981": [ "688981": [
@@ -1823,6 +2019,12 @@
"high": 144.63, "high": 144.63,
"low": 132.88, "low": 132.88,
"close": 140.7 "close": 140.7
},
{
"date": "2026-06-22",
"high": 148.0,
"low": 140.0,
"close": 143.11
} }
], ],
"000711": [ "000711": [
@@ -1843,6 +2045,12 @@
"high": 5.54, "high": 5.54,
"low": 5.15, "low": 5.15,
"close": 5.2 "close": 5.2
},
{
"date": "2026-06-22",
"high": 5.46,
"low": 5.28,
"close": 5.41
} }
], ],
"688630": [ "688630": [
@@ -1857,6 +2065,12 @@
"high": 512.82, "high": 512.82,
"low": 471.0, "low": 471.0,
"close": 502.0 "close": 502.0
},
{
"date": "2026-06-22",
"high": 512.0,
"low": 461.53,
"close": 473.96
} }
], ],
"300690": [ "300690": [
@@ -1871,6 +2085,44 @@
"high": 24.38, "high": 24.38,
"low": 23.66, "low": 23.66,
"close": 23.88 "close": 23.88
},
{
"date": "2026-06-22",
"high": 24.37,
"low": 23.21,
"close": 23.72
}
],
"000657": [
{
"date": "2026-06-22",
"high": 108.33,
"low": 101.58,
"close": 108.33
}
],
"300308": [
{
"date": "2026-06-22",
"high": 1416.88,
"low": 1343.38,
"close": 1358.24
}
],
"600519": [
{
"date": "2026-06-22",
"high": 1233.0,
"low": 1205.0,
"close": 1227.01
}
],
"601318": [
{
"date": "2026-06-22",
"high": 51.37,
"low": 48.66,
"close": 50.92
} }
] ]
} }
+6 -6
View File
@@ -1,6 +1,6 @@
{ {
"checked_at": "2026-06-22T09:00:31", "checked_at": "2026-06-22T10:14:41",
"total_active": 47, "total_active": 49,
"flagged_count": 15, "flagged_count": 15,
"flagged": [ "flagged": [
{ {
@@ -232,12 +232,12 @@
"portfolio": { "portfolio": {
"position_pct": 85.62, "position_pct": 85.62,
"cash": 146836.89, "cash": 146836.89,
"weak_position_pct": 43.3, "weak_position_pct": 40.6,
"all_weak_pct": 42.6, "all_weak_pct": 40.8,
"signals": [ "signals": [
"[PORTFOLIO_WEAK] 组合中弱势+深套分类持仓占比43.3%>40%,建议系统性减仓", "[PORTFOLIO_WEAK] 组合中弱势+深套分类持仓占比40.6%>40%,建议系统性减仓",
"[PORTFOLIO_FULL] 总仓位85.62%(现金146837元),买入建议受限" "[PORTFOLIO_FULL] 总仓位85.62%(现金146837元),买入建议受限"
] ]
}, },
"summary": "扫描47个策略,15个需关注" "summary": "扫描49个策略,15个需关注"
} }
+92 -182
View File
@@ -1,218 +1,128 @@
{ {
"timestamp": "2026-06-19 16:17", "timestamp": "2026-06-22 16:00",
"source": "xiaoguo_sentiment_analysis",
"mode": "基于市场数据综合分析(服务器网络受限,无法外部新闻搜索)",
"market_context": "大盘强势(65.6%板块上涨),热点:保险+7.18%,证券+6.4%,小金属+6.64%",
"analyses": [ "analyses": [
{ {
"name": "中国神华", "name": "药明康德",
"code": "01088", "code": "603259",
"price": 42.34,
"sentiment": "positive", "sentiment": "positive",
"confidence": 0.57, "confidence": 0.72,
"brief": "中国神华:5月商品煤产量同比下降4.1%。南财智讯6月17日电,中国神华公告,5...", "brief": "距止盈仅0.44%大涨4.02%强势逼近目标价",
"keywords": [ "keywords": [
"中国神华", "医药研发",
"月商品煤产量同比下降", "逼近止盈",
"南财智讯", "放量上涨"
"日电", ]
"月煤炭销售量"
],
"news_count": 5,
"pos_count": 3,
"neg_count": 0,
"neu_count": 2,
"reason": "SL_dist=17.1% TP_dist=1.3%",
"priority": 1
}, },
{ {
"name": "中银香港", "name": "海博思创",
"code": "02388", "code": "688411",
"price": 48.14,
"sentiment": "neutral", "sentiment": "neutral",
"confidence": 0.56, "confidence": 0.6,
"brief": "中银香港携泰国子行首批接入人民银行“数币达”平台。中银香港副总裁邢桂伟表示:“中...", "brief": "涨2.12%但距止损仅3.3%,上行空间有限需防回撤",
"keywords": [ "keywords": [
"中银香港携泰国子行首批接入人民银行", "储能",
"数币达", "接近止损",
"平台", "盈亏比佳"
"中银香港副总裁邢桂伟表示", ]
"中银香港陈卫全"
],
"news_count": 5,
"pos_count": 1,
"neg_count": 0,
"neu_count": 4,
"reason": "SL_dist=9.7% TP_dist=4.1%",
"priority": 1
}, },
{ {
"name": "黄金ETF华安", "name": "中国平安",
"code": "518880", "code": "02318",
"price": 8.908,
"sentiment": "positive", "sentiment": "positive",
"confidence": 0.57, "confidence": 0.68,
"brief": "ETF主力榜|黄金ETF华安(518880)主力资金净流入4697.71万元,居...", "brief": "距止损4.3%但保险板块暴涨7.18%提供板块保护",
"keywords": [ "keywords": [
"主力榜", "保险",
"黄金", "板块强势",
"华安", "安全边际"
"主力资金净流入", ]
"主力资金净流出"
],
"news_count": 5,
"pos_count": 3,
"neg_count": 0,
"neu_count": 2,
"reason": "SL_dist=20.9% TP_dist=2.9%",
"priority": 1
}, },
{ {
"name": "法拉电子", "name": "法拉电子",
"code": "600563", "code": "600563",
"price": 168.19, "sentiment": "positive",
"sentiment": "neutral", "confidence": 0.65,
"brief": "距止盈1.6%涨2.82%接近目标可考虑部分止盈",
"keywords": [
"电子元器件",
"逼近止盈",
"接近目标价"
]
},
{
"name": "双一科技",
"code": "300690",
"sentiment": "positive",
"confidence": 0.55, "confidence": 0.55,
"brief": "法拉电子:2025年年度权益分派实施公告。证券日报网讯6月4日,法拉电子发布20...", "brief": "已超止盈价1.9%但涨幅放缓,关注是否触发止盈",
"keywords": [ "keywords": [
"法拉电子", "复合材料",
"年年度权益分派实施公告", "超止盈",
"证券日报网讯", "关注回调"
"法拉电子发布", ]
"三季度订单充足生产处于满产状态"
],
"news_count": 5,
"pos_count": 0,
"neg_count": 0,
"neu_count": 5,
"reason": "SL_dist=4.0% TP_dist=14.6%",
"priority": 1
},
{
"name": "建滔积层板",
"code": "01888",
"price": 91.85,
"sentiment": "neutral",
"confidence": 0.64,
"brief": "建滔积层板获南向资金连续9天净买入。6月18日上榜的成交活跃股中,建滔积层板通过...",
"keywords": [
"建滔积层板获南向资金连续",
"天净买入",
"日上榜的成交活跃股中",
"建滔积层板通过港股通渠道成交金额为",
"港股"
],
"news_count": 5,
"pos_count": 2,
"neg_count": 2,
"neu_count": 1,
"reason": "涨跌幅+3.49%",
"priority": 2
},
{
"name": "万科企业",
"code": "02202",
"price": 2.42,
"sentiment": "neutral",
"confidence": 0.56,
"brief": "恒生科技指数下跌2.01%,家用电器板块涨幅居前|港股午评。租售同权板块持续活跃...",
"keywords": [
"万科两只债券展期方案获表决通过",
"公告同时显示",
"万科企业股份有限公司因召开万科企业股份有限公司",
"年度第三期中期票据",
"深铁集团向万科提供不超过"
],
"news_count": 5,
"pos_count": 1,
"neg_count": 1,
"neu_count": 3,
"reason": "涨跌幅-4.76%",
"priority": 2
}, },
{ {
"name": "长芯博创", "name": "长芯博创",
"code": "300548", "code": "300548",
"price": 281.99,
"sentiment": "positive", "sentiment": "positive",
"confidence": 0.63, "confidence": 0.78,
"brief": "长芯博创龙虎榜数据(6月15日)。长芯博创今日涨停,全天换手率9.65%,成交额...", "brief": "大涨5.71%强趋势持有信号明确",
"keywords": [ "keywords": [
"长芯博创成交额创上市以来新高", "光通信",
"数据宝统计", "强势突破",
"截至", "强趋势持"
"长芯博创成交额", ]
"长芯博创盘中涨停"
],
"news_count": 5,
"pos_count": 4,
"neg_count": 1,
"neu_count": 0,
"reason": "涨跌幅+4.49%",
"priority": 2
}, },
{ {
"name": "药明康德", "name": "辽宁成大",
"code": "603259", "code": "600739",
"price": 102.72, "sentiment": "positive",
"sentiment": "neutral", "confidence": 0.8,
"confidence": 0.56, "brief": "大涨6.64%远超止盈价,光头光脚阳线强势",
"brief": "药明康德:完成25亿港元H股回购用于员工激励。南财智讯6月17日电,药明康德(0...",
"keywords": [ "keywords": [
"药明康德", "药",
"完成", "放量突破",
"亿港元", "远超止盈"
"股回购用于员工激励", ]
"药明康德已斥资" },
], {
"news_count": 5, "name": "丘钛科技",
"pos_count": 1, "code": "01478",
"neg_count": 0, "sentiment": "negative",
"neu_count": 4, "confidence": 0.75,
"reason": "涨跌幅+4.60%", "brief": "大跌4.23%消费电子板块弱势,抛压明显",
"priority": 2 "keywords": [
"消费电子",
"放量下跌",
"板块弱势"
]
},
{
"name": "宁德时代",
"code": "300750",
"sentiment": "positive",
"confidence": 0.7,
"brief": "涨4.43%光头光脚阳线,电池板块涨2.19%配合",
"keywords": [
"电池",
"新能源",
"板块联动"
]
}, },
{ {
"name": "中芯国际", "name": "中芯国际",
"code": "688981", "code": "688981",
"price": 140.7,
"sentiment": "positive", "sentiment": "positive",
"confidence": 0.63, "confidence": 0.6,
"brief": "中芯国际获南向资金连续6天净买入。6月18日上榜的成交活跃股中,中芯国际通过港股...", "brief": "涨3.47%半导体板块-0.8%走弱但个股逆势走强",
"keywords": [ "keywords": [
"中芯国际成交额超", "半导体",
"亿元", "逆势上涨",
"数据宝统计", "独立行情"
"截至", ]
"中芯国际获南向资金连续"
],
"news_count": 5,
"pos_count": 2,
"neg_count": 0,
"neu_count": 3,
"reason": "涨跌幅+4.45%",
"priority": 2
},
{
"name": "模塑科技",
"code": "000700",
"price": 15.45,
"sentiment": "neutral",
"confidence": 0.57,
"brief": "模塑科技:基于商业保密要求,公司不便透露与客户的具体合作信息。证券日报网讯6月1...",
"keywords": [
"模塑科技",
"基于商业保密要求",
"公司不便透露与客户的具体合作信息",
"证券日报网讯",
"机器人概念"
],
"news_count": 5,
"pos_count": 2,
"neg_count": 2,
"neu_count": 1,
"reason": "自选股接近买入区",
"priority": 3
} }
], ]
"status": "ok",
"total_analyzed": 10,
"total_candidates": 10
} }
+49 -4
View File
@@ -117,6 +117,42 @@ def get_market_mood(sectors):
return "bullish" if ratio > 0.7 else "neutral" if ratio > 0.4 else "bearish" return "bullish" if ratio > 0.7 else "neutral" if ratio > 0.4 else "bearish"
def get_market_verdict(up_ratio, mood, sectors):
"""Return (verdict, reason) based on sector data."""
if not sectors:
return "unknown", "数据不足"
if up_ratio < 25:
return "弱势", f"{up_ratio}%板块上涨,{mood}"
elif up_ratio < 40:
return "偏弱", f"{up_ratio}%板块上涨,结构分化"
elif up_ratio < 60:
return "均衡", f"{up_ratio}%板块上涨,涨跌均衡"
else:
return "强势", f"{up_ratio}%板块上涨,整体走强"
def get_hot_sectors(sectors, top_n=3):
"""Return sectors with highest positive change as hot sectors."""
hot = [s for s in sectors if s.get("change", 0) > 1.0]
hot.sort(key=lambda s: s.get("change", 0), reverse=True)
return [{
"name": s["name"],
"change": s.get("change", 0),
"reason": f"板块涨{s.get('change',0):.1f}%"
} for s in hot[:top_n]]
def get_danger_sectors(sectors, top_n=3):
"""Return sectors with lowest (negative) change as danger sectors."""
danger = [s for s in sectors if s.get("change", 0) < -1.0]
danger.sort(key=lambda s: s.get("change", 0))
return [{
"name": s["name"],
"change": s.get("change", 0),
"reason": f"板块跌{s.get('change',0):.1f}%"
} for s in danger[:top_n]]
# ── 主流程 ── # ── 主流程 ──
def main(): def main():
@@ -142,15 +178,24 @@ def main():
top_gainers = [s for s in sorted_sectors if s.get("change", 0) > 0][:5] top_gainers = [s for s in sorted_sectors if s.get("change", 0) > 0][:5]
top_losers = [s for s in reversed(sorted_sectors) if s.get("change", 0) < 0][:3] top_losers = [s for s in reversed(sorted_sectors) if s.get("change", 0) < 0][:3]
# 计算大盘数据
up_ratio = round(
sum(1 for s in sectors if s.get("change", 0) > 0) / max(len(sectors), 1) * 100, 1
)
mood = get_market_mood(sectors)
verdict, verdict_reason = get_market_verdict(up_ratio, mood, sectors)
market_data = { market_data = {
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M"), "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M"),
"source": source, "source": source,
"concept_source": concept_source, "concept_source": concept_source,
"total_sectors": len(sectors), "total_sectors": len(sectors),
"up_ratio": round( "up_ratio": up_ratio,
sum(1 for s in sectors if s.get("change", 0) > 0) / max(len(sectors), 1) * 100, 1 "mood": mood,
), "market_verdict": verdict,
"mood": get_market_mood(sectors), "verdict_reason": verdict_reason,
"hot_sectors": get_hot_sectors(sectors),
"danger_sectors": get_danger_sectors(sectors),
"top_gainers": top_gainers, "top_gainers": top_gainers,
"top_losers": top_losers, "top_losers": top_losers,
"sectors": sectors, "sectors": sectors,
+1 -1
View File
@@ -599,7 +599,7 @@ def record_advice():
entry = None entry = None
for e in d["decisions"]: for e in d["decisions"]:
if e["code"] == code and e["status"] == "active": if e["code"] == code and e["status"] in ("active", "updated"):
entry = e entry = e
break break
+203 -8
View File
@@ -548,17 +548,17 @@ def reassess_strategy(code, name, price, cost, shares, current_action,
# ----- 止盈设置 ----- # ----- 止盈设置 -----
if is_short_term_strong_trend and not is_new_entry: if is_short_term_strong_trend and not is_new_entry:
# 短炒+强趋势:不止盈让利润跑,止盈设为远位(多周期强阻或价×1.5) # 短炒+强趋势:不止盈让利润跑
mtf_tp = mtf_adj.get("take_profit_reference", {}) mtf_tp = mtf_adj.get("take_profit_reference", {})
if mtf_tp and mtf_tp.get("level", 0) > price * 1.2: if mtf_tp and mtf_tp.get("level", 0) > price * 1.2:
new_target = round(mtf_tp["level"], 2) new_target = round(mtf_tp["level"], 2)
else: else:
new_target = round(price * 1.5, 2) new_target = 0 # 无多周期阻力时不编造止盈
print(f" 短炒强趋势不止盈: 止盈设为{new_target} (+{(new_target/price-1)*100:.0f}%)") print(f" 短炒强趋势不止盈: 止盈设为{new_target} (+{(new_target/price-1)*100:.0f}%)")
elif sr_resist and sr_resist > 0: elif sr_resist and sr_resist > 0:
new_target = round(sr_resist, 2) new_target = round(sr_resist, 2)
else: else:
new_target = round(price * 1.15, 2) new_target = 0 # 无技术面数据时不编造止盈
# ----- 风险回报比校验 ----- # ----- 风险回报比校验 -----
stop_distance = price - new_stop if price > new_stop else price * 0.02 stop_distance = price - new_stop if price > new_stop else price * 0.02
@@ -774,7 +774,8 @@ def reassess_strategy(code, name, price, cost, shares, current_action,
action_parts.append(action_note) action_parts.append(action_note)
if is_watchlist: if is_watchlist:
# 自选股(未入场):只有买入区+止损参考,无止盈 # 自选股(未入场):有止损参考+买入区,内部算RR需要止盈
action_parts.append(f"目标参考{new_target}")
action_parts.append(f"止损参考{new_stop}") action_parts.append(f"止损参考{new_stop}")
action_parts.append(f"买入区{entry_low}~{entry_high}") action_parts.append(f"买入区{entry_low}~{entry_high}")
elif is_new_entry: elif is_new_entry:
@@ -841,6 +842,181 @@ def reassess_strategy(code, name, price, cost, shares, current_action,
} }
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:
path = "/home/hmo/web-dashboard/data/multi_tf_cache.json"
if not os.path.exists(path):
return {}
m = json.load(open(path))
return m.get(code, {}).get("fundamentals", {}) or {}
except Exception:
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):
"""多因子合成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)
# 如果没有足够因素,返回信号不充分
if not factors:
return "信号不充分", []
return "".join(factors), 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 = {}
enriched, _ = 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,
)
result["timing_signal"] = enriched
# 重建 action 文本(同步多因子信号)
try:
if new_action_needs_refresh(result, {"source": "auto"}, price):
_refresh_action_text(result, price, name)
except Exception:
pass
return result
def new_action_needs_refresh(result, old_entry, price): def new_action_needs_refresh(result, old_entry, price):
"""判断宏观/行业调整后是否需要刷新action文本""" """判断宏观/行业调整后是否需要刷新action文本"""
# 自选股和手动策略不做调整,不需要刷新 # 自选股和手动策略不做调整,不需要刷新
@@ -1100,7 +1276,25 @@ def regenerate_all(stdout=True):
if target_bias != 1.0 and old_target > 0 and not is_wl: if target_bias != 1.0 and old_target > 0 and not is_wl:
result["take_profit"] = round(old_target * target_bias, 2) result["take_profit"] = round(old_target * target_bias, 2)
# 在宏观/行业调整后重建 action 文本(同步调整后的止损/止盈数字 # 加载消息面+基本面(逐个股
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,
)
result["timing_signal"] = enriched
# 在宏观/行业/多因子调整后重建 action 文本(同步调整后的止损/止盈数字)
if new_action_needs_refresh(result, old_entry, price): if new_action_needs_refresh(result, old_entry, price):
_refresh_action_text(result, price, name) _refresh_action_text(result, price, name)
@@ -1150,6 +1344,8 @@ def regenerate_all(stdout=True):
sector_ctx_str = f"大盘上涨比{market_breadth}%" sector_ctx_str = f"大盘上涨比{market_breadth}%"
new_entry = { new_entry = {
"code": code, "name": name, "price": price, "cost": cost, "code": code, "name": name, "price": price, "cost": cost,
"shares": old_entry.get("shares", 0), # 保留持仓股数
"avg_price": old_entry.get("avg_price", 0), # 保留持仓均价
"action": result["action"], "action": result["action"],
"stop_loss": result.get("stop_loss"), "stop_loss": result.get("stop_loss"),
"entry_low": result["entry_low"], "entry_low": result["entry_low"],
@@ -1174,8 +1370,7 @@ def regenerate_all(stdout=True):
new_entry["created_at"] = old_entry["created_at"] new_entry["created_at"] = old_entry["created_at"]
else: else:
new_entry["created_at"] = result["reassessed_at"] new_entry["created_at"] = result["reassessed_at"]
# 自选股写止盈,持仓股才写 # 自选股写止盈位(用于RR校验),但标签用"目标参考"非"止盈"
if not is_wl:
new_entry["take_profit"] = result.get("take_profit") new_entry["take_profit"] = result.get("take_profit")
# --- 变更追踪 --- # --- 变更追踪 ---
@@ -1295,7 +1490,7 @@ def regenerate_all(stdout=True):
# 写回数据文件 # 写回数据文件
json.dump(pf, open(PORTFOLIO_PATH, "w"), ensure_ascii=False, indent=2) json.dump(pf, open(PORTFOLIO_PATH, "w"), ensure_ascii=False, indent=2)
json.dump(wl, open(wl_path, "w"), ensure_ascii=False, indent=2) json.dump(wl, open(WATCHLIST_PATH, "w"), ensure_ascii=False, indent=2)
# 写 decisions.json # 写 decisions.json
decisions_path = "/home/hmo/web-dashboard/data/decisions.json" decisions_path = "/home/hmo/web-dashboard/data/decisions.json"
+78 -25
View File
@@ -23,15 +23,28 @@ SCAN_INTERVAL = 3600 # 同一只股1小时内不重复搜
MAX_STOCKS_PER_RUN = 15 MAX_STOCKS_PER_RUN = 15
ARTICLES_PER_STOCK = 3 ARTICLES_PER_STOCK = 3
# 同花顺轮流榜 # 同花顺看多榜(挖掘潜力股)
ROTATING_BOARDS = [ BULLISH_BOARDS = [
("创新高", "stock_rank_cxg_ths"), ("创新高", "stock_rank_cxg_ths"),
("量价齐升", "stock_rank_ljqs_ths"), ("量价齐升", "stock_rank_ljqs_ths"),
("向上突破", "stock_rank_xstp_ths"), ("向上突破", "stock_rank_xstp_ths"),
("连续上涨", "stock_rank_cxd_ths"), ("连续上涨", "stock_rank_lxsz_ths"),
("续放量", "stock_rank_cxfl_ths"), ("续放量", "stock_rank_cxfl_ths"),
("险资举牌", "stock_rank_xzjp_ths"),
] ]
# 同花顺看空榜(持仓风险预警)
BEARISH_BOARDS = [
("创新低", "stock_rank_cxd_ths"),
("持续缩量", "stock_rank_cxsl_ths"),
("量价齐跌", "stock_rank_ljqd_ths"),
("连续下跌", "stock_rank_lxxd_ths"),
("向下突破", "stock_rank_xxtp_ths"),
]
ALL_BOARDS = BULLISH_BOARDS + BEARISH_BOARDS
BULLISH_COUNT = len(BULLISH_BOARDS)
def clean_proxy(): def clean_proxy():
for k in ['http_proxy','https_proxy','HTTP_PROXY','HTTPS_PROXY']: for k in ['http_proxy','https_proxy','HTTP_PROXY','HTTPS_PROXY']:
@@ -63,25 +76,26 @@ def fetch_hot_board():
return [{"code": str(r[code_col]).zfill(6).strip(), "name": str(r[name_col]).strip(), return [{"code": str(r[code_col]).zfill(6).strip(), "name": str(r[name_col]).strip(),
"rank": i+1, "source": "东方财富热榜"} "rank": i+1, "source": "东方财富热榜"}
for i, (_, r) in enumerate(df.head(30).iterrows())] for i, (_, r) in enumerate(df.head(30).iterrows())]
except Exception as e: except Exception:
print(f" 热榜失败: {e}", flush=True) pass
return [] return []
def fetch_rotating_board(): def fetch_rotating_board():
"""同花顺轮流榜(每轮一个)""" """同花顺轮流榜(每轮一个),返回 (股票列表, 是否看多)"""
if not HAS_AKSHARE: if not HAS_AKSHARE:
return [] return [], True
conn = get_conn() conn = get_conn()
row = conn.execute("SELECT val FROM state_meta WHERE key='xiaoguo_board_round'").fetchone() row = conn.execute("SELECT val FROM state_meta WHERE key='xiaoguo_board_round'").fetchone()
round_idx = (int(row[0]) if row else 0) % len(ROTATING_BOARDS) round_idx = (int(row[0]) if row else 0) % len(ALL_BOARDS)
conn.execute("INSERT OR REPLACE INTO state_meta (key, val) VALUES ('xiaoguo_board_round', ?)", conn.execute("INSERT OR REPLACE INTO state_meta (key, val) VALUES ('xiaoguo_board_round', ?)",
(str((round_idx + 1) % len(ROTATING_BOARDS)),)) (str((round_idx + 1) % len(ALL_BOARDS)),))
conn.commit() conn.commit()
conn.close() conn.close()
board_name, func_name = ROTATING_BOARDS[round_idx] board_name, func_name = ALL_BOARDS[round_idx]
print(f" 同花顺榜: {board_name}", flush=True) is_bullish = round_idx < BULLISH_COUNT
print(f" 同花顺榜: {board_name} {'📈看多' if is_bullish else '📉看空'}", flush=True)
try: try:
clean_proxy() clean_proxy()
@@ -92,10 +106,10 @@ def fetch_rotating_board():
name_col = [c for c in cols if '简称' in c or '名称' in c][0] name_col = [c for c in cols if '简称' in c or '名称' in c][0]
return [{"code": str(r[code_col]).zfill(6), "name": str(r[name_col]).strip(), return [{"code": str(r[code_col]).zfill(6), "name": str(r[name_col]).strip(),
"source": f"同花顺{board_name}"} "source": f"同花顺{board_name}"}
for _, r in df.head(15).iterrows()] for _, r in df.head(15).iterrows()], is_bullish
except Exception as e: except Exception as e:
print(f" {board_name}失败: {e}", flush=True) print(f" {board_name}失败: {e}", flush=True)
return [] return [], is_bullish
def get_scanned_codes(conn): def get_scanned_codes(conn):
@@ -175,9 +189,9 @@ def main():
start_time = time.time() start_time = time.time()
conn = get_conn() conn = get_conn()
# 1. 拉 # 1. 拉
hot = fetch_hot_board() hot = fetch_hot_board()
rotating = fetch_rotating_board() rotating, is_bullish = fetch_rotating_board()
elapsed = time.time() - start_time elapsed = time.time() - start_time
print(f"榜单: 东方财富{len(hot)}只, 同花顺{len(rotating)}只 ({elapsed:.0f}s)", flush=True) print(f"榜单: 东方财富{len(hot)}只, 同花顺{len(rotating)}只 ({elapsed:.0f}s)", flush=True)
@@ -185,43 +199,70 @@ def main():
conn.close() conn.close()
return return
# 2. 合并去重 # 加载持仓代码(用于看空榜比对)
holdings = set()
if not is_bullish:
cur = conn.execute("SELECT code FROM holdings WHERE is_active=1")
holdings = {r[0].lstrip("0") for r in cur.fetchall()}
# 也查自选
cur2 = conn.execute("SELECT code FROM watchlist_stocks")
holdings.update({r[0].lstrip("0") for r in cur2.fetchall()})
# 2. 合并去重 + 看空榜只保留持仓股
all_stocks = {} all_stocks = {}
for s in hot + rotating: for s in hot + rotating:
code = s["code"] code = s["code"]
code_stripped = code.lstrip("0")
if not is_bullish:
# 看空榜:只处理持仓/自选中的股票
if code_stripped not in holdings:
continue
if code not in all_stocks: if code not in all_stocks:
all_stocks[code] = {"code": code, "name": s["name"], "sources": []} all_stocks[code] = {"code": code, "name": s["name"], "sources": []}
all_stocks[code]["sources"].append(s["source"]) all_stocks[code]["sources"].append(s["source"])
# 3. 排除已搜索过的 if not all_stocks:
if is_bullish:
print("榜单为空", flush=True)
else:
print(f"看空榜无持仓股命中", flush=True)
conn.close()
return
# 3. 排除已搜索过的(看空榜不排除——每次都要检查风险)
scanned = get_scanned_codes(conn) scanned = get_scanned_codes(conn)
if is_bullish:
candidates = [s for code, s in all_stocks.items() candidates = [s for code, s in all_stocks.items()
if code not in scanned and len(code) == 6 and code.isdigit()][:MAX_STOCKS_PER_RUN] if code not in scanned and len(code) == 6 and code.isdigit()][:MAX_STOCKS_PER_RUN]
else:
# 看空榜:不限数量,全检
candidates = [s for code, s in all_stocks.items()
if len(code) == 6 and code.isdigit()]
if not candidates: if not candidates:
print(f"无新候选(已有 {len(scanned)} 只已扫描)", flush=True) print(f"无新候选(已有 {len(scanned)} 只已扫描)", flush=True)
conn.close() conn.close()
return return
print(f"待扫描: {len(candidates)} 只(跳过 {len(all_stocks)-len(candidates)} 只已扫过", flush=True) print(f"待扫描: {len(candidates)} 只({'看多' if is_bullish else '看空'}", flush=True)
# 4. 逐只搜新闻+判断 # 4. 逐只处理
found_any = False found_any = False
for stock in candidates: for stock in candidates:
code, name = stock["code"], stock["name"] code, name = stock["code"], stock["name"]
sources = "|".join(stock["sources"]) sources = "|".join(stock["sources"])
articles = search_news(code, ARTICLES_PER_STOCK) articles = search_news(code, ARTICLES_PER_STOCK) if is_bullish else []
if not articles: if not articles and is_bullish:
mark_scanned(conn, code, name, False) mark_scanned(conn, code, name, False)
continue continue
has_found = False has_found = False
if is_bullish:
ok, sentiment = check_stock(code, name, articles) ok, sentiment = check_stock(code, name, articles)
if ok: if ok:
has_found = True has_found = True
found_any = True found_any = True
sources = "|".join(stock["sources"])
conn.execute( conn.execute(
"INSERT INTO signal_news (signal_id, sector, overall_sentiment, summary, key_articles, searched_stocks, source) " "INSERT INTO signal_news (signal_id, sector, overall_sentiment, summary, key_articles, searched_stocks, source) "
"VALUES (NULL, ?, ?, ?, ?, ?, 'xiaoguo')", "VALUES (NULL, ?, ?, ?, ?, ?, 'xiaoguo')",
@@ -230,11 +271,23 @@ def main():
json.dumps([name], ensure_ascii=False)) json.dumps([name], ensure_ascii=False))
) )
print(f"{name}({code}) [{sources}] {sentiment}: {articles[0]['title'][:50]}", flush=True) print(f"{name}({code}) [{sources}] {sentiment}: {articles[0]['title'][:50]}", flush=True)
mark_scanned(conn, code, name, has_found)
else:
# 看空榜:直接写入风险信号
has_found = True
found_any = True
conn.execute(
"INSERT INTO signal_news (signal_id, sector, overall_sentiment, summary, key_articles, searched_stocks, source) "
"VALUES (NULL, ?, ?, ?, ?, ?, 'xiaoguo_risk')",
(f"预警-{name}", "偏空", f"[{sources}] {name}登上{sources}榜,需关注持仓风险",
json.dumps([{"title": name, "sentiment": "偏空", "summary": f"上榜{sources}"}], ensure_ascii=False),
json.dumps([name], ensure_ascii=False))
)
print(f" ⚠️ {name}({code}) [{sources}] 持仓风险信号", flush=True)
mark_scanned(conn, code, name, has_found) mark_scanned(conn, code, name, has_found)
total_time = time.time() - start_time total_time = time.time() - start_time
print(f"完成: {len(candidates)}只扫描, {'有发现' if found_any else '无发现'} ({total_time:.0f}s)", flush=True) print(f"完成: {len(candidates)}{'看多' if is_bullish else '看空'}扫描, {'有发现' if found_any else '无发现'} ({total_time:.0f}s)", flush=True)
conn.close() conn.close()