@8btc/finance-assistant-mcp 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.cjs +218 -196
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -1832,10 +1832,7 @@ const renderBacktestDaily = (rawData) => {
1832
1832
  ],
1833
1833
  yAxis: [
1834
1834
  {
1835
- scale: true,
1836
- splitArea: {
1837
- show: true
1838
- }
1835
+ scale: true
1839
1836
  }
1840
1837
  ],
1841
1838
  series: [
@@ -1847,7 +1844,8 @@ const renderBacktestDaily = (rawData) => {
1847
1844
  showSymbol: false,
1848
1845
  lineStyle: {
1849
1846
  // type: "dashed",
1850
- opacity: 1
1847
+ opacity: 1,
1848
+ width: 1
1851
1849
  // dashOffset: 9,
1852
1850
  }
1853
1851
  },
@@ -1858,7 +1856,8 @@ const renderBacktestDaily = (rawData) => {
1858
1856
  smooth: true,
1859
1857
  showSymbol: false,
1860
1858
  lineStyle: {
1861
- opacity: 1
1859
+ opacity: 1,
1860
+ width: 1
1862
1861
  }
1863
1862
  }
1864
1863
  ]
@@ -1966,10 +1965,7 @@ const renderMonthlyIncome = (rawData) => {
1966
1965
  ],
1967
1966
  yAxis: [
1968
1967
  {
1969
- scale: true,
1970
- splitArea: {
1971
- show: true
1972
- }
1968
+ scale: true
1973
1969
  }
1974
1970
  ],
1975
1971
  series: [
@@ -2903,8 +2899,8 @@ const renderAmount = (rawData) => {
2903
2899
  // need to specify height and width
2904
2900
  height: 184
2905
2901
  });
2906
- const upColor = "#ec0000";
2907
- const downColor = "#00da3c";
2902
+ const upColor = "#cc2f3c";
2903
+ const downColor = "#06806b";
2908
2904
  const data0 = generateData$b(rawData);
2909
2905
  const option = {
2910
2906
  animation: false,
@@ -3026,15 +3022,17 @@ const renderATR = (rawData) => {
3026
3022
  axisLine: { onZero: false },
3027
3023
  splitLine: { show: false },
3028
3024
  min: "dataMin",
3029
- max: "dataMax"
3025
+ max: "dataMax",
3026
+ axisLabel: {
3027
+ formatter: (value) => {
3028
+ return dayjs(value).format("MM/DD");
3029
+ }
3030
+ }
3030
3031
  }
3031
3032
  ],
3032
3033
  yAxis: [
3033
3034
  {
3034
- scale: true,
3035
- splitArea: {
3036
- show: true
3037
- }
3035
+ scale: true
3038
3036
  }
3039
3037
  ],
3040
3038
  series: [
@@ -3045,7 +3043,8 @@ const renderATR = (rawData) => {
3045
3043
  smooth: true,
3046
3044
  showSymbol: false,
3047
3045
  lineStyle: {
3048
- opacity: 1
3046
+ opacity: 1,
3047
+ width: 1
3049
3048
  }
3050
3049
  }
3051
3050
  ]
@@ -3113,15 +3112,17 @@ const renderBOLL = (rawData) => {
3113
3112
  axisLine: { onZero: false },
3114
3113
  splitLine: { show: false },
3115
3114
  min: "dataMin",
3116
- max: "dataMax"
3115
+ max: "dataMax",
3116
+ axisLabel: {
3117
+ formatter: (value) => {
3118
+ return dayjs(value).format("MM/DD");
3119
+ }
3120
+ }
3117
3121
  }
3118
3122
  ],
3119
3123
  yAxis: [
3120
3124
  {
3121
- scale: true,
3122
- splitArea: {
3123
- show: true
3124
- }
3125
+ scale: true
3125
3126
  }
3126
3127
  ],
3127
3128
  series: [
@@ -3132,7 +3133,8 @@ const renderBOLL = (rawData) => {
3132
3133
  smooth: true,
3133
3134
  showSymbol: false,
3134
3135
  lineStyle: {
3135
- opacity: 1
3136
+ opacity: 1,
3137
+ width: 1
3136
3138
  }
3137
3139
  },
3138
3140
  {
@@ -3142,7 +3144,8 @@ const renderBOLL = (rawData) => {
3142
3144
  smooth: true,
3143
3145
  showSymbol: false,
3144
3146
  lineStyle: {
3145
- opacity: 1
3147
+ opacity: 1,
3148
+ width: 1
3146
3149
  }
3147
3150
  },
3148
3151
  {
@@ -3152,7 +3155,8 @@ const renderBOLL = (rawData) => {
3152
3155
  smooth: true,
3153
3156
  showSymbol: false,
3154
3157
  lineStyle: {
3155
- opacity: 1
3158
+ opacity: 1,
3159
+ width: 1
3156
3160
  }
3157
3161
  }
3158
3162
  ]
@@ -3184,8 +3188,8 @@ const renderBuyLgAmount = (rawData) => {
3184
3188
  // need to specify height and width
3185
3189
  height: 184
3186
3190
  });
3187
- const upColor = "#ec0000";
3188
- const downColor = "#00da3c";
3191
+ const upColor = "#cc2f3c";
3192
+ const downColor = "#06806b";
3189
3193
  const data0 = generateData$8(rawData);
3190
3194
  const option = {
3191
3195
  animation: false,
@@ -3312,15 +3316,17 @@ const renderKDJ = (rawData) => {
3312
3316
  axisLine: { onZero: false },
3313
3317
  splitLine: { show: false },
3314
3318
  min: "dataMin",
3315
- max: "dataMax"
3319
+ max: "dataMax",
3320
+ axisLabel: {
3321
+ formatter: (value) => {
3322
+ return dayjs(value).format("MM/DD");
3323
+ }
3324
+ }
3316
3325
  }
3317
3326
  ],
3318
3327
  yAxis: [
3319
3328
  {
3320
- scale: true,
3321
- splitArea: {
3322
- show: true
3323
- }
3329
+ scale: true
3324
3330
  }
3325
3331
  ],
3326
3332
  series: [
@@ -3331,7 +3337,8 @@ const renderKDJ = (rawData) => {
3331
3337
  smooth: true,
3332
3338
  showSymbol: false,
3333
3339
  lineStyle: {
3334
- opacity: 1
3340
+ opacity: 1,
3341
+ width: 1
3335
3342
  }
3336
3343
  },
3337
3344
  {
@@ -3341,7 +3348,8 @@ const renderKDJ = (rawData) => {
3341
3348
  smooth: true,
3342
3349
  showSymbol: false,
3343
3350
  lineStyle: {
3344
- opacity: 1
3351
+ opacity: 1,
3352
+ width: 1
3345
3353
  }
3346
3354
  },
3347
3355
  {
@@ -3351,7 +3359,8 @@ const renderKDJ = (rawData) => {
3351
3359
  smooth: true,
3352
3360
  showSymbol: false,
3353
3361
  lineStyle: {
3354
- opacity: 1
3362
+ opacity: 1,
3363
+ width: 1
3355
3364
  },
3356
3365
  markLine: {
3357
3366
  symbol: ["none", "none"],
@@ -3414,10 +3423,8 @@ const renderKlineChart = (datas) => {
3414
3423
  // need to specify height and width
3415
3424
  height: 284
3416
3425
  });
3417
- const upColor = "#ec0000";
3418
- const upBorderColor = "#8A0000";
3419
- const downColor = "#00da3c";
3420
- const downBorderColor = "#008F28";
3426
+ const upColor = "#cc2f3c";
3427
+ const downColor = "#06806b";
3421
3428
  const data0 = generateData$6(datas);
3422
3429
  const option = {
3423
3430
  animation: false,
@@ -3428,7 +3435,7 @@ const renderKlineChart = (datas) => {
3428
3435
  }
3429
3436
  },
3430
3437
  legend: {
3431
- // data: ["日K", "MA5", "MA10", "MA20", "MA30"],
3438
+ data: ["MA5", "MA10", "MA20", "MA60", "MA250"],
3432
3439
  top: 20
3433
3440
  },
3434
3441
  visualMap: {
@@ -3458,7 +3465,7 @@ const renderKlineChart = (datas) => {
3458
3465
  right: "8%",
3459
3466
  // top: '0%',
3460
3467
  bottom: "8%",
3461
- height: "25%"
3468
+ height: "15%"
3462
3469
  }
3463
3470
  ],
3464
3471
  xAxis: [
@@ -3469,7 +3476,12 @@ const renderKlineChart = (datas) => {
3469
3476
  axisLine: { onZero: false },
3470
3477
  splitLine: { show: false },
3471
3478
  min: "dataMin",
3472
- max: "dataMax"
3479
+ max: "dataMax",
3480
+ axisLabel: {
3481
+ formatter: (value) => {
3482
+ return dayjs(value).format("MM/DD");
3483
+ }
3484
+ }
3473
3485
  },
3474
3486
  {
3475
3487
  type: "category",
@@ -3488,7 +3500,7 @@ const renderKlineChart = (datas) => {
3488
3500
  {
3489
3501
  scale: true,
3490
3502
  splitArea: {
3491
- show: true
3503
+ show: false
3492
3504
  }
3493
3505
  },
3494
3506
  {
@@ -3508,9 +3520,7 @@ const renderKlineChart = (datas) => {
3508
3520
  data: data0.values,
3509
3521
  itemStyle: {
3510
3522
  color: upColor,
3511
- color0: downColor,
3512
- borderColor: upBorderColor,
3513
- borderColor0: downBorderColor
3523
+ color0: downColor
3514
3524
  },
3515
3525
  markLine: {
3516
3526
  symbol: ["none", "none"],
@@ -3535,7 +3545,7 @@ const renderKlineChart = (datas) => {
3535
3545
  smooth: true,
3536
3546
  showSymbol: false,
3537
3547
  lineStyle: {
3538
- opacity: 0.5
3548
+ width: 1
3539
3549
  }
3540
3550
  },
3541
3551
  {
@@ -3545,7 +3555,7 @@ const renderKlineChart = (datas) => {
3545
3555
  smooth: true,
3546
3556
  showSymbol: false,
3547
3557
  lineStyle: {
3548
- opacity: 0.5
3558
+ width: 1
3549
3559
  }
3550
3560
  },
3551
3561
  {
@@ -3555,7 +3565,7 @@ const renderKlineChart = (datas) => {
3555
3565
  smooth: true,
3556
3566
  showSymbol: false,
3557
3567
  lineStyle: {
3558
- opacity: 0.5
3568
+ width: 1
3559
3569
  }
3560
3570
  },
3561
3571
  {
@@ -3565,7 +3575,7 @@ const renderKlineChart = (datas) => {
3565
3575
  smooth: true,
3566
3576
  showSymbol: false,
3567
3577
  lineStyle: {
3568
- opacity: 0.5
3578
+ width: 1
3569
3579
  }
3570
3580
  },
3571
3581
  {
@@ -3575,18 +3585,18 @@ const renderKlineChart = (datas) => {
3575
3585
  smooth: true,
3576
3586
  showSymbol: false,
3577
3587
  lineStyle: {
3578
- opacity: 0.5
3588
+ width: 1
3579
3589
  }
3580
3590
  },
3581
3591
  {
3582
- name: "Volume",
3592
+ name: "成交量",
3583
3593
  type: "bar",
3584
3594
  xAxisIndex: 1,
3585
3595
  yAxisIndex: 1,
3586
3596
  data: data0.volumes,
3587
3597
  zlevel: 0,
3588
3598
  itemStyle: {
3589
- opacity: 0.6
3599
+ opacity: 0.7
3590
3600
  }
3591
3601
  }
3592
3602
  ]
@@ -3611,7 +3621,7 @@ const generateData$5 = (rawData) => {
3611
3621
  volumes
3612
3622
  };
3613
3623
  };
3614
- const renderKlineSupportChart = (datas, markData) => {
3624
+ const renderKlineSupportChart = (datas, data) => {
3615
3625
  const chart = echarts__namespace.init(null, null, {
3616
3626
  renderer: "svg",
3617
3627
  // must use SVG mode
@@ -3621,10 +3631,8 @@ const renderKlineSupportChart = (datas, markData) => {
3621
3631
  // need to specify height and width
3622
3632
  height: 284
3623
3633
  });
3624
- const upColor = "#ec0000";
3625
- const upBorderColor = "#8A0000";
3626
- const downColor = "#00da3c";
3627
- const downBorderColor = "#008F28";
3634
+ const upColor = "#cc2f3c";
3635
+ const downColor = "#06806b";
3628
3636
  const data0 = generateData$5(datas);
3629
3637
  const option = {
3630
3638
  animation: false,
@@ -3635,36 +3643,12 @@ const renderKlineSupportChart = (datas, markData) => {
3635
3643
  }
3636
3644
  },
3637
3645
  legend: {
3638
- data: [
3639
- {
3640
- name: "短期支撑",
3641
- itemStyle: {
3642
- color: "rgba(255,255,0,1)",
3643
- borderColor: "rgba(255,255,0,1)"
3644
- }
3645
- },
3646
- {
3647
- name: "中期支撑",
3648
- itemStyle: {
3649
- color: "rgba(255,0,255,1)",
3650
- borderColor: "rgba(255,0,255,1)",
3651
- opacity: 1
3652
- }
3653
- },
3654
- {
3655
- name: "长期支撑",
3656
- itemStyle: {
3657
- color: "rgba(0,255,255,1)",
3658
- borderColor: "rgba(0,255,255,1)",
3659
- opacity: 1
3660
- }
3661
- }
3662
- ],
3663
- top: 20
3646
+ top: 20,
3647
+ show: false
3664
3648
  },
3665
3649
  visualMap: {
3666
3650
  show: false,
3667
- seriesIndex: 3,
3651
+ seriesIndex: 1,
3668
3652
  dimension: 2,
3669
3653
  pieces: [
3670
3654
  {
@@ -3689,7 +3673,7 @@ const renderKlineSupportChart = (datas, markData) => {
3689
3673
  right: "8%",
3690
3674
  // top: '0%',
3691
3675
  bottom: "8%",
3692
- height: "25%"
3676
+ height: "15%"
3693
3677
  }
3694
3678
  ],
3695
3679
  xAxis: [
@@ -3705,10 +3689,7 @@ const renderKlineSupportChart = (datas, markData) => {
3705
3689
  ],
3706
3690
  yAxis: [
3707
3691
  {
3708
- scale: true,
3709
- splitArea: {
3710
- show: true
3711
- }
3692
+ scale: true
3712
3693
  },
3713
3694
  {
3714
3695
  scale: true,
@@ -3727,51 +3708,20 @@ const renderKlineSupportChart = (datas, markData) => {
3727
3708
  data: data0.values,
3728
3709
  itemStyle: {
3729
3710
  color: upColor,
3730
- color0: downColor,
3731
- borderColor: upBorderColor,
3732
- borderColor0: downBorderColor
3733
- },
3734
- markArea: {
3735
- data: [
3736
- [{ yAxis: markData.resistance_s }, { yAxis: markData.support_s }]
3737
- ],
3738
- itemStyle: {
3739
- opacity: 0.3,
3740
- color: "rgba(255,255,0,1)"
3741
- }
3742
- }
3743
- },
3744
- {
3745
- name: "中期支撑",
3746
- type: "candlestick",
3747
- data: data0.values,
3748
- itemStyle: {
3749
- opacity: 0
3711
+ color0: downColor
3750
3712
  },
3751
- markArea: {
3752
- data: [
3753
- [{ yAxis: markData.resistance_m }, { yAxis: markData.support_m }]
3754
- ],
3755
- itemStyle: {
3756
- opacity: 0.3,
3757
- color: "rgba(255,0,255,1)"
3758
- }
3759
- }
3760
- },
3761
- {
3762
- name: "长期支撑",
3763
- type: "candlestick",
3764
- data: data0.values,
3765
- itemStyle: {
3766
- opacity: 0
3767
- },
3768
- markArea: {
3713
+ markLine: {
3714
+ symbol: ["none", "none"],
3769
3715
  data: [
3770
- [{ yAxis: markData.resistance_l }, { yAxis: markData.support_l }]
3716
+ {
3717
+ yAxis: data.resistance,
3718
+ name: "短期压力位"
3719
+ },
3720
+ { yAxis: data.support, name: "短期支撑位" }
3771
3721
  ],
3772
3722
  itemStyle: {
3773
- opacity: 0.3,
3774
- color: "rgba(0,255,255,1)"
3723
+ opacity: 1,
3724
+ color: upColor
3775
3725
  }
3776
3726
  }
3777
3727
  },
@@ -3783,7 +3733,7 @@ const renderKlineSupportChart = (datas, markData) => {
3783
3733
  data: data0.volumes,
3784
3734
  zlevel: 0,
3785
3735
  itemStyle: {
3786
- opacity: 0.6
3736
+ opacity: 0.7
3787
3737
  }
3788
3738
  }
3789
3739
  ]
@@ -3857,15 +3807,17 @@ const renderMa = (rawData) => {
3857
3807
  axisLine: { onZero: false },
3858
3808
  splitLine: { show: false },
3859
3809
  min: "dataMin",
3860
- max: "dataMax"
3810
+ max: "dataMax",
3811
+ axisLabel: {
3812
+ formatter: (value) => {
3813
+ return dayjs(value).format("MM/DD");
3814
+ }
3815
+ }
3861
3816
  }
3862
3817
  ],
3863
3818
  yAxis: [
3864
3819
  {
3865
- scale: true,
3866
- splitArea: {
3867
- show: true
3868
- }
3820
+ scale: true
3869
3821
  }
3870
3822
  ],
3871
3823
  series: [
@@ -3876,7 +3828,8 @@ const renderMa = (rawData) => {
3876
3828
  smooth: true,
3877
3829
  showSymbol: false,
3878
3830
  lineStyle: {
3879
- opacity: 1
3831
+ opacity: 1,
3832
+ width: 1
3880
3833
  }
3881
3834
  },
3882
3835
  {
@@ -3886,7 +3839,8 @@ const renderMa = (rawData) => {
3886
3839
  smooth: true,
3887
3840
  showSymbol: false,
3888
3841
  lineStyle: {
3889
- opacity: 1
3842
+ opacity: 1,
3843
+ width: 1
3890
3844
  }
3891
3845
  },
3892
3846
  {
@@ -3896,7 +3850,8 @@ const renderMa = (rawData) => {
3896
3850
  smooth: true,
3897
3851
  showSymbol: false,
3898
3852
  lineStyle: {
3899
- opacity: 1
3853
+ opacity: 1,
3854
+ width: 1
3900
3855
  }
3901
3856
  },
3902
3857
  {
@@ -3906,7 +3861,8 @@ const renderMa = (rawData) => {
3906
3861
  smooth: true,
3907
3862
  showSymbol: false,
3908
3863
  lineStyle: {
3909
- opacity: 1
3864
+ opacity: 1,
3865
+ width: 1
3910
3866
  }
3911
3867
  },
3912
3868
  {
@@ -3916,7 +3872,8 @@ const renderMa = (rawData) => {
3916
3872
  smooth: true,
3917
3873
  showSymbol: false,
3918
3874
  lineStyle: {
3919
- opacity: 1
3875
+ opacity: 1,
3876
+ width: 1
3920
3877
  }
3921
3878
  }
3922
3879
  ]
@@ -3954,8 +3911,8 @@ const renderMacd = (rawData) => {
3954
3911
  // need to specify height and width
3955
3912
  height: 284
3956
3913
  });
3957
- const upColor = "#ec0000";
3958
- const downColor = "#00da3c";
3914
+ const upColor = "#cc2f3c";
3915
+ const downColor = "#06806b";
3959
3916
  const data0 = generateData$3(rawData);
3960
3917
  const option = {
3961
3918
  animation: false,
@@ -4001,15 +3958,17 @@ const renderMacd = (rawData) => {
4001
3958
  axisLine: { onZero: false },
4002
3959
  splitLine: { show: false },
4003
3960
  min: "dataMin",
4004
- max: "dataMax"
3961
+ max: "dataMax",
3962
+ axisLabel: {
3963
+ formatter: (value) => {
3964
+ return dayjs(value).format("MM/DD");
3965
+ }
3966
+ }
4005
3967
  }
4006
3968
  ],
4007
3969
  yAxis: [
4008
3970
  {
4009
- scale: true,
4010
- splitArea: {
4011
- show: true
4012
- }
3971
+ scale: true
4013
3972
  }
4014
3973
  ],
4015
3974
  series: [
@@ -4020,7 +3979,8 @@ const renderMacd = (rawData) => {
4020
3979
  smooth: true,
4021
3980
  showSymbol: false,
4022
3981
  lineStyle: {
4023
- opacity: 1
3982
+ opacity: 1,
3983
+ width: 1
4024
3984
  }
4025
3985
  },
4026
3986
  {
@@ -4030,7 +3990,8 @@ const renderMacd = (rawData) => {
4030
3990
  smooth: true,
4031
3991
  showSymbol: false,
4032
3992
  lineStyle: {
4033
- opacity: 1
3993
+ opacity: 1,
3994
+ width: 1
4034
3995
  }
4035
3996
  },
4036
3997
  {
@@ -4070,8 +4031,8 @@ const renderNetAmount = (rawData) => {
4070
4031
  // need to specify height and width
4071
4032
  height: 184
4072
4033
  });
4073
- const upColor = "#ec0000";
4074
- const downColor = "#00da3c";
4034
+ const upColor = "#cc2f3c";
4035
+ const downColor = "#06806b";
4075
4036
  const data0 = generateData$2(rawData);
4076
4037
  const option = {
4077
4038
  animation: false,
@@ -4193,15 +4154,17 @@ const renderRSI = (rawData) => {
4193
4154
  xAxis: [
4194
4155
  {
4195
4156
  type: "category",
4196
- data: data0.categoryData
4157
+ data: data0.categoryData,
4158
+ axisLabel: {
4159
+ formatter: (value) => {
4160
+ return dayjs(value).format("MM/DD");
4161
+ }
4162
+ }
4197
4163
  }
4198
4164
  ],
4199
4165
  yAxis: [
4200
4166
  {
4201
4167
  scale: true,
4202
- splitArea: {
4203
- show: true
4204
- },
4205
4168
  min: 0,
4206
4169
  max: 100
4207
4170
  }
@@ -4214,7 +4177,8 @@ const renderRSI = (rawData) => {
4214
4177
  smooth: true,
4215
4178
  showSymbol: false,
4216
4179
  lineStyle: {
4217
- opacity: 1
4180
+ opacity: 1,
4181
+ width: 1
4218
4182
  }
4219
4183
  },
4220
4184
  {
@@ -4224,7 +4188,8 @@ const renderRSI = (rawData) => {
4224
4188
  smooth: true,
4225
4189
  showSymbol: false,
4226
4190
  lineStyle: {
4227
- opacity: 1
4191
+ opacity: 1,
4192
+ width: 1
4228
4193
  }
4229
4194
  },
4230
4195
  {
@@ -4234,7 +4199,8 @@ const renderRSI = (rawData) => {
4234
4199
  smooth: true,
4235
4200
  showSymbol: false,
4236
4201
  lineStyle: {
4237
- opacity: 1
4202
+ opacity: 1,
4203
+ width: 1
4238
4204
  }
4239
4205
  }
4240
4206
  ]
@@ -4266,8 +4232,8 @@ const renderVOL = (rawData) => {
4266
4232
  // need to specify height and width
4267
4233
  height: 184
4268
4234
  });
4269
- const upColor = "#ec0000";
4270
- const downColor = "#00da3c";
4235
+ const upColor = "#cc2f3c";
4236
+ const downColor = "#06806b";
4271
4237
  const data0 = generateData(rawData);
4272
4238
  const option = {
4273
4239
  animation: false,
@@ -4529,7 +4495,7 @@ function PriceTable({ data }) {
4529
4495
  { label: "最低", value: data.kline_indicator.low },
4530
4496
  {
4531
4497
  label: "换手率",
4532
- value: `${formatNumberToUnit(data.kline_indicator.turn_over * 100)}%`
4498
+ value: `${formatNumberToUnit(data.kline_indicator.turn_over)}%`
4533
4499
  },
4534
4500
  { label: "成交额", value: formatNumberToUnit(data.kline_indicator.amount) },
4535
4501
  {
@@ -4558,8 +4524,6 @@ function PriceTable({ data }) {
4558
4524
  }
4559
4525
  function Chapter2({ data, chartSvg }) {
4560
4526
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chapterPage", children: [
4561
- /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 2, title: "价格与成交概览" }),
4562
- /* @__PURE__ */ jsxRuntime.jsx(PriceTable, { data }),
4563
4527
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4564
4528
  /* @__PURE__ */ jsxRuntime.jsx(
4565
4529
  "div",
@@ -4580,6 +4544,8 @@ function Chapter2({ data, chartSvg }) {
4580
4544
  ")日K线图"
4581
4545
  ] })
4582
4546
  ] }),
4547
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 2, title: "价格与成交概览" }),
4548
+ /* @__PURE__ */ jsxRuntime.jsx(PriceTable, { data }),
4583
4549
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.kline_indicator.kline_summary })
4584
4550
  ] });
4585
4551
  }
@@ -4720,7 +4686,6 @@ function Chapter5({ data, atrSvg, bollSvg }) {
4720
4686
  ")ATR"
4721
4687
  ] })
4722
4688
  ] }),
4723
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.volatility_indicator.bb_summary }),
4724
4689
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4725
4690
  /* @__PURE__ */ jsxRuntime.jsx(
4726
4691
  "div",
@@ -4741,6 +4706,7 @@ function Chapter5({ data, atrSvg, bollSvg }) {
4741
4706
  ")布林带"
4742
4707
  ] })
4743
4708
  ] }),
4709
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.volatility_indicator.bb_summary }),
4744
4710
  /* @__PURE__ */ jsxRuntime.jsx(Warn, { content: data.volatility_indicator.risk_tips })
4745
4711
  ] });
4746
4712
  }
@@ -4837,7 +4803,12 @@ function Chapter6({
4837
4803
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.volume_indicator.retail_sentiment })
4838
4804
  ] });
4839
4805
  }
4840
- function Chapter7({ data, klineSupportSvg }) {
4806
+ function Chapter7({
4807
+ data,
4808
+ shortSvg,
4809
+ intermediateSvg,
4810
+ longSvg
4811
+ }) {
4841
4812
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chapterPage", children: [
4842
4813
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 7, title: "形态分析与关键价位" }),
4843
4814
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.pattern_analysis.pattern_analysis_summary }),
@@ -4853,6 +4824,26 @@ function Chapter7({ data, klineSupportSvg }) {
4853
4824
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: data.pattern_analysis.short_term.short_support })
4854
4825
  ] }),
4855
4826
  /* @__PURE__ */ jsxRuntime.jsx("li", { children: data.pattern_analysis.short_term.pattern_desc })
4827
+ ] }),
4828
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4829
+ /* @__PURE__ */ jsxRuntime.jsx(
4830
+ "div",
4831
+ {
4832
+ className: "w-[651px] h-[284px]",
4833
+ dangerouslySetInnerHTML: {
4834
+ __html: shortSvg
4835
+ }
4836
+ }
4837
+ ),
4838
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "figcaption", children: [
4839
+ "图7-1 ",
4840
+ data.name,
4841
+ "(",
4842
+ data.code,
4843
+ ".",
4844
+ data.market,
4845
+ ") 短期支撑位与压力位"
4846
+ ] })
4856
4847
  ] })
4857
4848
  ] }),
4858
4849
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -4867,6 +4858,26 @@ function Chapter7({ data, klineSupportSvg }) {
4867
4858
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: data.pattern_analysis.intermediate_term.support })
4868
4859
  ] }),
4869
4860
  /* @__PURE__ */ jsxRuntime.jsx("li", { children: data.pattern_analysis.intermediate_term.pattern_desc })
4861
+ ] }),
4862
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4863
+ /* @__PURE__ */ jsxRuntime.jsx(
4864
+ "div",
4865
+ {
4866
+ className: "w-[651px] h-[284px]",
4867
+ dangerouslySetInnerHTML: {
4868
+ __html: intermediateSvg
4869
+ }
4870
+ }
4871
+ ),
4872
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "figcaption", children: [
4873
+ "图7-2 ",
4874
+ data.name,
4875
+ "(",
4876
+ data.code,
4877
+ ".",
4878
+ data.market,
4879
+ ") 中期支撑位与压力位"
4880
+ ] })
4870
4881
  ] })
4871
4882
  ] }),
4872
4883
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -4881,27 +4892,26 @@ function Chapter7({ data, klineSupportSvg }) {
4881
4892
  /* @__PURE__ */ jsxRuntime.jsx("strong", { children: data.pattern_analysis.long_term.support })
4882
4893
  ] }),
4883
4894
  /* @__PURE__ */ jsxRuntime.jsx("li", { children: data.pattern_analysis.long_term.pattern_desc })
4884
- ] })
4885
- ] }),
4886
- /* @__PURE__ */ jsxRuntime.jsx("div", {}),
4887
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4888
- /* @__PURE__ */ jsxRuntime.jsx(
4889
- "div",
4890
- {
4891
- className: "w-[651px] h-[284px]",
4892
- dangerouslySetInnerHTML: {
4893
- __html: klineSupportSvg
4895
+ ] }),
4896
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
4897
+ /* @__PURE__ */ jsxRuntime.jsx(
4898
+ "div",
4899
+ {
4900
+ className: "w-[651px] h-[284px]",
4901
+ dangerouslySetInnerHTML: {
4902
+ __html: longSvg
4903
+ }
4894
4904
  }
4895
- }
4896
- ),
4897
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "figcaption", children: [
4898
- "图7-1 ",
4899
- data.name,
4900
- "(",
4901
- data.code,
4902
- ".",
4903
- data.market,
4904
- ") 支撑位"
4905
+ ),
4906
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "figcaption", children: [
4907
+ "图7-3 ",
4908
+ data.name,
4909
+ "(",
4910
+ data.code,
4911
+ ".",
4912
+ data.market,
4913
+ ") 长期支撑位与压力位"
4914
+ ] })
4905
4915
  ] })
4906
4916
  ] }),
4907
4917
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 8, title: "重要声明" }),
@@ -5039,16 +5049,28 @@ const renderChapter6 = (data) => {
5039
5049
  return renderFullHtml(seg);
5040
5050
  };
5041
5051
  const renderChapter7 = (data) => {
5042
- const chartSvg = renderKlineSupportChart(data.kline_daily, {
5043
- resistance_s: data.pattern_analysis.short_term.short_resistance,
5044
- support_s: data.pattern_analysis.short_term.short_support,
5045
- resistance_m: data.pattern_analysis.intermediate_term.resistance,
5046
- support_m: data.pattern_analysis.intermediate_term.support,
5047
- resistance_l: data.pattern_analysis.long_term.resistance,
5048
- support_l: data.pattern_analysis.long_term.support
5052
+ const shortSvg = renderKlineSupportChart(data.kline_daily, {
5053
+ resistance: data.pattern_analysis.short_term.short_resistance,
5054
+ support: data.pattern_analysis.short_term.short_support
5055
+ });
5056
+ const intermediateSvg = renderKlineSupportChart(data.kline_daily, {
5057
+ resistance: data.pattern_analysis.intermediate_term.resistance,
5058
+ support: data.pattern_analysis.intermediate_term.support
5059
+ });
5060
+ const longSvg = renderKlineSupportChart(data.kline_daily, {
5061
+ resistance: data.pattern_analysis.long_term.resistance,
5062
+ support: data.pattern_analysis.long_term.support
5049
5063
  });
5050
5064
  const seg = ReactDOMServer.renderToString(
5051
- /* @__PURE__ */ jsxRuntime.jsx(Chapter7, { data, klineSupportSvg: chartSvg })
5065
+ /* @__PURE__ */ jsxRuntime.jsx(
5066
+ Chapter7,
5067
+ {
5068
+ data,
5069
+ shortSvg,
5070
+ intermediateSvg,
5071
+ longSvg
5072
+ }
5073
+ )
5052
5074
  );
5053
5075
  return renderFullHtml(seg);
5054
5076
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@8btc/finance-assistant-mcp",
3
- "version": "0.0.20",
3
+ "version": "0.0.21",
4
4
  "description": "财经agent辅助mcp工具",
5
5
  "main": "dist/index.cjs",
6
6
  "type": "module",