@kamuira/stock-analyzer 1.0.5 → 1.2.1
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.
- package/README.md +172 -189
- package/analyze.js +57 -918
- package/backtest.js +309 -352
- package/bin/analyze.js +0 -0
- package/bin/backtest.js +0 -0
- package/bin/server.js +0 -0
- package/dev.js +8 -1
- package/indicators.js +538 -0
- package/package.json +4 -6
- package/scoring.js +541 -0
- package/server.js +69 -1532
- package/stock.js +0 -181
package/README.md
CHANGED
|
@@ -1,273 +1,263 @@
|
|
|
1
1
|
# @kamuira/stock-analyzer
|
|
2
2
|
|
|
3
|
-
A股/台股综合技术分析工具 —
|
|
3
|
+
A股/台股综合技术分析工具 — 实时分析、事件驱动回测、可解释的买卖建议
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
- 15+ 技术指标综合评分(MA、MACD、RSI、KDJ、布林带、ADX、ATR...)
|
|
8
|
-
- 动态加权评分:根据趋势/震荡市自动调整指标权重
|
|
9
|
-
- 多重信号确认:金叉/死叉需要量能+趋势方向确认,减少假信号
|
|
10
|
-
- 信号连续性判断:区分新信号和已持续信号,避免追高杀低
|
|
11
|
-
- MACD/RSI 顶底背离检测
|
|
12
|
-
- 缺口分析、斐波那契回撤位、动量衰竭检测
|
|
13
|
-
- 形态识别(缩量回踩、放量突破、假突破、锤子线等)
|
|
14
|
-
- 大盘环境过滤(获取上证指数趋势,弱势时降低做多权重)
|
|
15
|
-
- 基于实际支撑/压力位的风险收益比计算
|
|
16
|
-
- 可操作的买入/卖出建议(具体价位、仓位比例、持仓周期)
|
|
17
|
-
- 历史回测验证(500个交易日,统计胜率和平均收益)
|
|
18
|
-
- 支持 A股 + 台股
|
|
19
|
-
- 端口自动重试 + 自动打开浏览器
|
|
5
|
+
## 快速开始
|
|
20
6
|
|
|
21
|
-
|
|
7
|
+
这是一个 CLI 工具,**需要全局安装**或用 `npx`:
|
|
22
8
|
|
|
23
9
|
```bash
|
|
24
|
-
#
|
|
10
|
+
# 推荐:全局安装
|
|
25
11
|
npm install -g @kamuira/stock-analyzer
|
|
26
12
|
|
|
27
|
-
#
|
|
13
|
+
# 或者用 npx 直接跑(不安装)
|
|
28
14
|
npx @kamuira/stock-analyzer
|
|
29
15
|
```
|
|
30
16
|
|
|
17
|
+
> ⚠️ 本地安装(`npm install @kamuira/stock-analyzer`,不加 `-g`)会出现 `command not found: stock-server`,这是 npm 设计如此 — `node_modules/.bin` 不在 PATH。包内已加 `preferGlobal: true`,本地装会给警告。
|
|
18
|
+
|
|
19
|
+
## 三个命令
|
|
20
|
+
|
|
21
|
+
| 命令 | 作用 |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `stock-server` | 启动 Web 界面(自动打开浏览器,默认端口 3000) |
|
|
24
|
+
| `stock-analyze <code>` | CLI 单股分析,输出综合评分和买卖条件 |
|
|
25
|
+
| `stock-backtest <code>` | 历史回测,验证策略在该股票上的真实表现 |
|
|
26
|
+
|
|
27
|
+
## v1.2 关键改进 ⭐
|
|
28
|
+
|
|
29
|
+
### 1. 回测验证的就是用户实际用的策略
|
|
30
|
+
|
|
31
|
+
之前回测内部用的是简化版评分(`quickScore` ≈ 80 行),实盘分析用的是真正的综合评分(`analyzeStock` ≈ 600 行)。**回测给出的"胜率 X%"对实盘没有参考意义**。
|
|
32
|
+
|
|
33
|
+
v1.1 起,所有评分逻辑统一在 `scoring.js`,**回测和实盘共享同一份代码**。这是这次升级最大的卖点。
|
|
34
|
+
|
|
35
|
+
### 2. 事件驱动回测,不再是"信号 → N 天后"
|
|
36
|
+
|
|
37
|
+
旧版回测:每日独立判断 → 信号会重复计数(连涨 10 天每天都触发 buy,统计为 10 次胜利)
|
|
38
|
+
新版回测:
|
|
39
|
+
- ✅ **信号去重**(已持仓不重复入场)
|
|
40
|
+
- ✅ **止损/止盈/反向信号/超时** 四种退出方式
|
|
41
|
+
- ✅ **大盘环境过滤**(每个回测日重算上证趋势,与实盘一致)
|
|
42
|
+
- ✅ 返回每笔完整交易流水
|
|
43
|
+
|
|
44
|
+
### 3. 指标计算与同花顺/通达信对齐
|
|
45
|
+
|
|
46
|
+
- RSI 改为 **Wilder 平滑**(标准实现,与 TradingView 一致)
|
|
47
|
+
- ADX 改为 **Wilder smoothing**
|
|
48
|
+
- EMA 用 **SMA 种子**(替代 `data[0]` 单点种子)
|
|
49
|
+
|
|
50
|
+
### 4. 跟踪止损(可选)
|
|
51
|
+
|
|
52
|
+
`stock-backtest --trailing` 启用 Chandelier Exit。**注意:不是免费午餐**(详见下方回测章节)。
|
|
53
|
+
|
|
54
|
+
## 功能特性
|
|
55
|
+
|
|
56
|
+
- **15+ 技术指标**综合评分(MA、MACD、RSI、KDJ、布林带、ADX、ATR、VWAP)
|
|
57
|
+
- **动态加权评分**:趋势市加大 MA/MACD/ADX 权重,震荡市加大 RSI/KDJ/布林权重
|
|
58
|
+
- **多重信号确认**:金叉/死叉需要量能 + 趋势方向确认,减少假信号
|
|
59
|
+
- **信号连续性判断**:新鲜度衰减,区分新信号和已持续信号,避免追高杀低
|
|
60
|
+
- **MACD/RSI 顶底背离检测**(基于 ZigZag swing,而不是单日峰谷)
|
|
61
|
+
- **有效缺口分析**(size > 0.5% 且当日量 > 1.5× 20日均 才计入)
|
|
62
|
+
- **斐波那契回撤位、动量衰竭检测**
|
|
63
|
+
- **形态识别**(缩量回踩、放量突破、假突破、锤子线、布林收窄突破等)
|
|
64
|
+
- **大盘环境过滤**(获取上证趋势,弱势时降低做多权重)
|
|
65
|
+
- **基于实际支撑/压力位的风险收益比**计算
|
|
66
|
+
- **可操作的买卖建议**(具体价位、仓位比例、持仓周期)
|
|
67
|
+
- **事件驱动历史回测**(信号去重、止损止盈退出、可选跟踪止损)
|
|
68
|
+
- 支持 A股 + 台股
|
|
69
|
+
- 端口自动重试 + 自动打开浏览器
|
|
70
|
+
|
|
31
71
|
## 使用方式
|
|
32
72
|
|
|
33
|
-
### Web
|
|
73
|
+
### Web 界面
|
|
34
74
|
|
|
35
75
|
```bash
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# 开发模式(文件变化自动重启)
|
|
40
|
-
node dev.js
|
|
76
|
+
stock-server # 自动打开浏览器
|
|
77
|
+
node dev.js # 开发模式:文件变化自动重启
|
|
41
78
|
```
|
|
42
79
|
|
|
43
|
-
|
|
80
|
+
启动后访问 `http://127.0.0.1:3000`,端口被占用会自动 +1 重试。
|
|
44
81
|
|
|
45
|
-
###
|
|
82
|
+
### CLI 分析
|
|
46
83
|
|
|
47
84
|
```bash
|
|
48
|
-
#
|
|
49
|
-
stock-analyze
|
|
50
|
-
stock-analyze 2330
|
|
51
|
-
stock-analyze 紫光国微
|
|
52
|
-
|
|
53
|
-
#
|
|
54
|
-
stock-analyze all
|
|
85
|
+
stock-analyze sz002049 # A股(带前缀)
|
|
86
|
+
stock-analyze 002049 # A股(纯数字,自动识别)
|
|
87
|
+
stock-analyze 2330 # 台股(4位数字)
|
|
88
|
+
stock-analyze 紫光国微 # 中文名搜索
|
|
89
|
+
stock-analyze zggw # 拼音缩写
|
|
90
|
+
stock-analyze all # 分析内置关注列表
|
|
55
91
|
```
|
|
56
92
|
|
|
57
|
-
###
|
|
93
|
+
### CLI 回测
|
|
58
94
|
|
|
59
95
|
```bash
|
|
60
|
-
#
|
|
61
|
-
stock-backtest
|
|
62
|
-
|
|
63
|
-
#
|
|
64
|
-
stock-backtest all
|
|
96
|
+
stock-backtest sh603986 # 默认:TP1 止盈 + 反向信号退出
|
|
97
|
+
stock-backtest sh603986 --trailing # 启用跟踪止损(2.5×ATR)
|
|
98
|
+
stock-backtest sh603986 --trailing --trailing-atr=1.5
|
|
99
|
+
stock-backtest sh603986 --trailing --no-tp1 # 纯趋势跟随(只靠跟踪止损)
|
|
100
|
+
stock-backtest all # 回测全部关注列表
|
|
65
101
|
```
|
|
66
102
|
|
|
67
|
-
##
|
|
103
|
+
## 输入格式
|
|
68
104
|
|
|
69
105
|
| 格式 | 示例 | 说明 |
|
|
70
106
|
|------|------|------|
|
|
71
|
-
| 6位数字 | `002049` | 自动识别A
|
|
72
|
-
| sh/sz前缀 | `sz002049` | 明确指定A股 |
|
|
107
|
+
| 6位数字 | `002049` | 自动识别A股(6开头=上海,其他=深圳) |
|
|
108
|
+
| sh/sz 前缀 | `sz002049` | 明确指定A股 |
|
|
73
109
|
| 4位数字 | `2330` | 自动识别台股 |
|
|
74
|
-
| tw前缀 | `tw2330` | 明确指定台股 |
|
|
75
|
-
|
|
|
76
|
-
| 拼音缩写 | `zggw` |
|
|
110
|
+
| tw 前缀 | `tw2330` | 明确指定台股 |
|
|
111
|
+
| 中文名 | `紫光国微` | 走腾讯智能搜索 |
|
|
112
|
+
| 拼音缩写 | `zggw` | 走腾讯智能搜索 |
|
|
77
113
|
|
|
78
|
-
##
|
|
114
|
+
## 技术指标
|
|
79
115
|
|
|
80
116
|
| 指标 | 用途 | 参数 |
|
|
81
117
|
|------|------|------|
|
|
82
118
|
| MA (5/10/20/60) | 趋势方向、支撑压力 | 多头/空头排列、金叉死叉 |
|
|
83
119
|
| MACD (12,26,9) | 趋势动能、买卖时机 | 金叉死叉、零轴位置、柱状线 |
|
|
84
|
-
| RSI (14) | 超买超卖 | <30超卖、>70超买 |
|
|
120
|
+
| RSI (14) Wilder | 超买超卖 | <30超卖、>70超买 |
|
|
85
121
|
| KDJ (9,3,3) | 短期超买超卖 | J值极端、金叉死叉 |
|
|
86
122
|
| 布林带 (20,2) | 波动区间、变盘信号 | 触轨、带宽收窄 |
|
|
87
|
-
| ADX (14) | 趋势强度 | >25趋势市、<20震荡市 |
|
|
123
|
+
| ADX (14) Wilder | 趋势强度 | >25趋势市、<20震荡市 |
|
|
88
124
|
| ATR (14) | 波动率、仓位管理 | 止损距离、仓位建议 |
|
|
89
125
|
| VWAP (20) | 量价均衡位 | 支撑/压力参考 |
|
|
90
126
|
|
|
91
|
-
## 高级分析功能
|
|
92
|
-
|
|
93
|
-
### 信号确认机制
|
|
94
|
-
|
|
95
|
-
每个金叉/死叉信号需要多重确认才给满分:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
确认因素:量能放大 + 趋势方向一致 + 价格位置合理
|
|
99
|
-
- 3项确认 → 满分(强信号)
|
|
100
|
-
- 2项确认 → 7折
|
|
101
|
-
- 1项确认 → 5折
|
|
102
|
-
- 0项确认 → 仅给基础分(可能是假信号)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### 动态加权评分
|
|
106
|
-
|
|
107
|
-
根据 ADX 判断市场状态,自动切换权重:
|
|
108
|
-
|
|
109
|
-
- **趋势市 (ADX>=25)**:加大 MA、MACD、ADX 权重,降低 RSI、KDJ 权重
|
|
110
|
-
- **震荡市 (ADX<20)**:加大 RSI、KDJ、布林带权重,降低趋势指标权重
|
|
111
|
-
- **ADX<15 极度震荡**:所有信号打 4 折(几乎无效)
|
|
112
|
-
|
|
113
|
-
### 趋势一致性检查
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
短期(5日) + 中期(20日) + 长期(60日) 方向一致 → +3分
|
|
117
|
-
短期和中期方向矛盾 → 信号打8折
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### 大盘环境过滤
|
|
121
|
-
|
|
122
|
-
自动获取上证指数趋势:
|
|
123
|
-
- 大盘偏强 → 整体 +1.5 分
|
|
124
|
-
- 大盘偏弱 → 整体 -1.5 分,且正分打 7 折
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
127
|
## 评分体系
|
|
129
128
|
|
|
130
129
|
### 信号分级
|
|
131
130
|
|
|
132
131
|
| 评分 | 信号 | 建议操作 |
|
|
133
132
|
|------|------|----------|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
133
|
+
| ≥ 10 | 强烈买入 | 积极建仓,持仓 5-10 天 |
|
|
134
|
+
| ≥ 5 | 建议买入 | 适量买入,持仓 3-5 天 |
|
|
135
|
+
| ≥ 1 | 谨慎买入 | 小仓位试探,持仓 1-3 天 |
|
|
136
|
+
| ≥ -4 | 观望 | 不操作,等待方向 |
|
|
137
|
+
| ≥ -9 | 建议卖出 | 减仓或观望 |
|
|
139
138
|
| < -9 | 强烈卖出 | 清仓回避 |
|
|
140
139
|
|
|
141
|
-
###
|
|
140
|
+
### 动态加权
|
|
142
141
|
|
|
143
|
-
|
|
142
|
+
根据 ADX 判断市场状态,自动切换权重:
|
|
143
|
+
- **趋势市 (ADX ≥ 25)**:加大 MA、MACD、ADX 权重,降低 RSI、KDJ
|
|
144
|
+
- **震荡市 (ADX < 20)**:加大 RSI、KDJ、布林权重,降低趋势指标
|
|
145
|
+
- **极度震荡 (ADX < 15)**:整体打 4 折(信号基本无效)
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|----------|----------|
|
|
147
|
-
| >= 5(强势) | 当前价附近或日内回调半个ATR入场 + 分批建仓方案 |
|
|
148
|
-
| 1-4(偏多) | 等回调2-3%后出现止跌信号再买 |
|
|
149
|
-
| < 1(中性/偏空) | 等布林下轨抄底或站回MA20 |
|
|
147
|
+
### 趋势一致性
|
|
150
148
|
|
|
151
|
-
|
|
149
|
+
短期(5日) + 中期(20日) + 长期(60日) 三方向一致 → +3 分;短中期矛盾 → 信号打 8 折。
|
|
152
150
|
|
|
153
|
-
|
|
151
|
+
### 大盘环境
|
|
154
152
|
|
|
155
|
-
|
|
156
|
-
- MA20(如果在下方)
|
|
157
|
-
- 布林下轨
|
|
158
|
-
- 近20日最低价
|
|
159
|
-
- ATR止损(兜底)
|
|
153
|
+
自动获取上证指数 20 日趋势,弱势时降权 + 减分。
|
|
160
154
|
|
|
161
|
-
|
|
162
|
-
- 近20日最高价
|
|
163
|
-
- 布林上轨
|
|
164
|
-
- 斐波那契回撤位
|
|
165
|
-
- ATR目标(补充)
|
|
155
|
+
### 风险收益比
|
|
166
156
|
|
|
167
|
-
|
|
168
|
-
风险收益比 = (止盈位 - 当前价) / (当前价 - 止损位)
|
|
157
|
+
基于**实际支撑/压力位**计算(非机械 ATR 倍数):
|
|
169
158
|
|
|
170
|
-
|
|
171
|
-
|
|
159
|
+
```
|
|
160
|
+
止损位 = 最近的下方支撑(MA20 / 布林下轨 / 近20日低 / ATR兜底)
|
|
161
|
+
止盈位 = 上方有意义的压力(近20日高 / 布林上轨 / 斐波那契位)
|
|
162
|
+
风险收益比 = (止盈 - 当前) / (当前 - 止损)
|
|
172
163
|
```
|
|
173
164
|
|
|
174
|
-
|
|
165
|
+
`≥ 2.0` 标记"性价比高",`< 1.0` 标记"建议等回调"。
|
|
175
166
|
|
|
176
|
-
##
|
|
167
|
+
## 事件驱动回测
|
|
177
168
|
|
|
178
|
-
###
|
|
169
|
+
### 退出逻辑(优先级)
|
|
179
170
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
171
|
+
1. **止损**:当日 low ≤ 入场时计算的 stopLoss
|
|
172
|
+
2. **止盈**:当日 high ≥ 入场时计算的 takeProfit1(默认开启,可用 `--no-tp1` 关闭)
|
|
173
|
+
3. **反向信号**:持仓中再次评分,score ≤ -5(多头退出)
|
|
174
|
+
4. **超时**:超过 maxHoldDays(默认 30 天)
|
|
175
|
+
5. **数据末尾**:回测期结束强制平仓
|
|
184
176
|
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
买入胜率 = 信号发出后N天价格上涨的次数 / 买入信号总次数 × 100%
|
|
188
|
-
平均收益 = 所有买入信号N天后涨跌幅之和 / 买入信号总次数
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
**流程:**
|
|
192
|
-
1. 取500个交易日(约2年)历史数据
|
|
193
|
-
2. 从第60天开始逐日计算综合评分
|
|
194
|
-
3. 评分>=5时记录收盘价为入场价
|
|
195
|
-
4. 分别统计 3天、5天、10天 后的涨跌
|
|
177
|
+
### `--trailing` 跟踪止损
|
|
196
178
|
|
|
197
|
-
|
|
198
|
-
| 评级 | 条件 |
|
|
199
|
-
|------|------|
|
|
200
|
-
| 优秀 | 最佳胜率 >= 65% 且均收益 > 2% |
|
|
201
|
-
| 良好 | 最佳胜率 >= 58% 且均收益 > 1% |
|
|
202
|
-
| 一般 | 最佳胜率 >= 55%,或胜率>=50%且均收益>0.5% |
|
|
203
|
-
| 较差 | 以上都不满足 |
|
|
179
|
+
启用 Chandelier Exit:`stopLoss = max(原止损, peak − 2.5 × ATR)`,只上调不下调。
|
|
204
180
|
|
|
205
|
-
|
|
181
|
+
**重要洞察:不是免费午餐**。同一份策略,不同股票表现完全不同:
|
|
206
182
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
| 立讯精密 | 64.1% | +4.03% | 消费电子 |
|
|
214
|
-
| 湖南白银 | 64.1% | +6.82% | 有色金属 |
|
|
215
|
-
| 宏和科技 | 63.1% | +7.61% | 新材料 |
|
|
216
|
-
| 工业富联 | 60.0% | +3.83% | AI/科技 |
|
|
217
|
-
| 中芯国际 | 59.7% | +3.27% | 半导体 |
|
|
218
|
-
| 紫金矿业 | 59.6% | +2.14% | 资源 |
|
|
183
|
+
| 股票 | 默认 TP1 累计 | 纯跟踪止损累计 | 适合谁 |
|
|
184
|
+
|---|---|---|---|
|
|
185
|
+
| 兆易创新(ATR 6.5%) | **+68.56%** | +18.97% | ❌ 高波动股不要开 |
|
|
186
|
+
| 工业富联(中波动) | **+84.95%** | +56.61% | ❌ 中波动股也不建议 |
|
|
187
|
+
| 华能国际(低波动) | -0.31% | **+5.43%** | ✅ 低波动股开了救回 |
|
|
188
|
+
| 中国平安(蓝筹) | +17.53% | **+29.65%** | ✅ 蓝筹股开了加分 |
|
|
219
189
|
|
|
220
|
-
|
|
221
|
-
- 银行股(招商银行、平安银行)— 低波动,政策驱动
|
|
222
|
-
- 白酒消费(茅台、五粮液)— 基本面下行时技术面失效
|
|
223
|
-
- 公用事业(核电、长江电力)— 波动太小
|
|
224
|
-
- 券商(中信建投)— 脉冲式行情,趋势不持续
|
|
190
|
+
原因:跟踪距离 = `2.5 × ATR`。ATR 大 → 回撤容忍 15%+ → 利润吐回;ATR 小 → 紧密跟踪 → 锁住利润。**自己用 `--trailing` 跑一遍,看哪些股票适合**。
|
|
225
191
|
|
|
226
|
-
|
|
192
|
+
### 评级标准
|
|
227
193
|
|
|
228
|
-
|
|
194
|
+
| 评级 | 条件 |
|
|
195
|
+
|------|------|
|
|
196
|
+
| 优秀 | 胜率 ≥ 60% 且均收益 > 3% |
|
|
197
|
+
| 良好 | 胜率 ≥ 55% 且均收益 > 1.5% |
|
|
198
|
+
| 一般 | 胜率 ≥ 50% 或 均收益 > 0 |
|
|
199
|
+
| 较差 | 以上都不满足 |
|
|
229
200
|
|
|
230
|
-
|
|
231
|
-
- 未模拟实际仓位管理和交易手续费
|
|
232
|
-
- 未考虑止损提前退出
|
|
233
|
-
- 固定持有N天后退出,不考虑中途信号变化
|
|
201
|
+
### 当前局限
|
|
234
202
|
|
|
235
|
-
|
|
203
|
+
- ❌ 未计手续费和滑点(按用户场景需求暂未实现)
|
|
204
|
+
- ❌ 单股回测,无多周期共振(日+周+月)
|
|
205
|
+
- ❌ 无信号日志/复盘(每次回测都重新算)
|
|
236
206
|
|
|
237
207
|
## 数据来源
|
|
238
208
|
|
|
239
|
-
| 数据 | A
|
|
209
|
+
| 数据 | A股 | 台股 |
|
|
240
210
|
|------|---------|---------|
|
|
241
211
|
| 实时行情 | 新浪财经 (hq.sinajs.cn) | TWSE MIS API |
|
|
242
212
|
| 历史K线 | 腾讯财经 (web.ifzq.gtimg.cn) | Yahoo Finance |
|
|
243
213
|
| 股票搜索 | 腾讯智能搜索 (smartbox.gtimg.cn) | — |
|
|
244
|
-
| 大盘指数 | 腾讯财经
|
|
214
|
+
| 大盘指数 | 腾讯财经(上证 000001) | — |
|
|
245
215
|
|
|
246
216
|
## 项目结构
|
|
247
217
|
|
|
248
218
|
```
|
|
249
|
-
├──
|
|
250
|
-
├──
|
|
251
|
-
├──
|
|
252
|
-
├──
|
|
253
|
-
├──
|
|
254
|
-
├──
|
|
255
|
-
├──
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
├──
|
|
259
|
-
|
|
260
|
-
└── backtest.js # 回测入口: stock-backtest
|
|
219
|
+
├── indicators.js # 技术指标:SMA/EMA/MACD/RSI/KDJ/BOLL/ATR/ADX/ZigZag 等
|
|
220
|
+
├── scoring.js # 评分逻辑(唯一来源,被 analyze/backtest/server 共享)
|
|
221
|
+
├── analyze.js # CLI 单股分析 + 数据获取(A股+台股)
|
|
222
|
+
├── backtest.js # 事件驱动回测引擎
|
|
223
|
+
├── server.js # Web 服务(API + 静态文件)
|
|
224
|
+
├── dev.js # 开发模式(文件变化自动重启)
|
|
225
|
+
├── index.html # 前端页面
|
|
226
|
+
└── bin/ # CLI 入口
|
|
227
|
+
├── analyze.js
|
|
228
|
+
├── server.js
|
|
229
|
+
└── backtest.js
|
|
261
230
|
```
|
|
262
231
|
|
|
263
232
|
## 环境要求
|
|
264
233
|
|
|
265
|
-
- Node.js
|
|
266
|
-
-
|
|
267
|
-
-
|
|
234
|
+
- Node.js ≥ 14
|
|
235
|
+
- 无需任何第三方依赖(纯原生 Node.js)
|
|
236
|
+
- 需要网络(获取实时/历史数据)
|
|
268
237
|
|
|
269
238
|
## 更新日志
|
|
270
239
|
|
|
240
|
+
### v1.2.1
|
|
241
|
+
- 加 `--trailing` / `--trailing-atr` / `--no-tp1` 三个回测参数
|
|
242
|
+
- Chandelier Exit 实现(跟踪止损 = peak − N × ATR)
|
|
243
|
+
- README 提供跨股票对比数据,说明跟踪止损在低 ATR 股上才发挥作用
|
|
244
|
+
|
|
245
|
+
### v1.2.0
|
|
246
|
+
- 事件驱动回测:信号去重、止损止盈退出、反向信号退出、超时退出
|
|
247
|
+
- 回测加入历史大盘环境过滤(`getMarketEnvAtDate`),与实盘一致
|
|
248
|
+
- 背离检测改用 ZigZag swing(替代单日峰谷,大幅减少假背离)
|
|
249
|
+
- 缺口检测加 size > 0.5% + 量 > 1.5× 20日均 过滤
|
|
250
|
+
- 回测 API 改成事件驱动版,返回完整交易流水
|
|
251
|
+
|
|
252
|
+
### v1.1.0
|
|
253
|
+
- **抽取 `indicators.js` + `scoring.js` 共享模块**,消除三处重复评分代码
|
|
254
|
+
- 回测和实盘统一使用 `scoring.js`,**回测验证的就是用户实际用的策略**
|
|
255
|
+
- RSI 改 Wilder 平滑(与同花顺/TradingView 对齐)
|
|
256
|
+
- ADX 改 Wilder smoothing(标准 Welles Wilder 算法)
|
|
257
|
+
- EMA 用 SMA 种子(替代单点种子)
|
|
258
|
+
- 加 `preferGlobal: true`,本地装会给警告
|
|
259
|
+
- 总代码量减少 46%(3367 → 1825 行)
|
|
260
|
+
|
|
271
261
|
### v1.0.3
|
|
272
262
|
- 修复 README 在 npm 页面不显示的问题
|
|
273
263
|
|
|
@@ -282,17 +272,10 @@ stock-backtest all
|
|
|
282
272
|
|
|
283
273
|
### v1.0.0
|
|
284
274
|
- 初始发布
|
|
285
|
-
- 15+ 技术指标综合分析
|
|
286
|
-
- 动态加权评分 + 多重信号确认
|
|
287
|
-
- 历史回测验证
|
|
288
|
-
- A股 + 台股支持
|
|
289
|
-
- Web 界面 + CLI 工具
|
|
290
|
-
|
|
291
|
-
---
|
|
292
275
|
|
|
293
276
|
## 免责声明
|
|
294
277
|
|
|
295
|
-
|
|
278
|
+
本工具仅基于技术面指标进行分析,不构成任何投资建议。技术分析有其固有局限性,无法预测突发事件、政策变化、基本面恶化等因素。投资有风险,入市需谨慎。使用本工具产生的任何投资损失,作者不承担任何责任。
|
|
296
279
|
|
|
297
280
|
## License
|
|
298
281
|
|