mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
4.7 KiB
4.7 KiB
📊 Token 估算分析与候选币种上限指南
版本:v1.0 | 更新:2026-03-27 适用:策略配置 · 模型选择 · 候选币种数量决策
目录
📐 Token 估算公式
代码入口:store/strategy.go → EstimateTokens()
整体结构:
total = (staticTokens + N × perCoinTokens) × 1.15
其中 1.15 为 15% 安全边际。
静态部分(与候选币数量无关)
SystemPrompt = baseChars / 2(zh)或 / 4(en)
baseChars ≈ 3000(zh)/ 4000(en)+ 自定义提示段落长度
FixedOverhead = 200 tokens(时间戳、账户信息、章节标题)
RankingData = (OILimit × 60 + NetFlowLimit × 80 + PriceLimit × durations × 40) / 4
staticTokens = SystemPrompt + FixedOverhead + RankingData
≈ 1500 + 200 + 650 = 2350 tokens(默认中文配置)
每枚币的 Token 开销
# 每行指标额外字符数(I)
I = EnableEMA×20 + EnableMACD×30 + EnableRSI×15
+ EnableATR×15 + EnableBOLL×25 + EnableVolume×10
# 每枚币的市场数据 token
marketPerCoin = (T × K × (80 + I) + 100) / 4
↑ T=时间框架数 K=每TF K线数
↑ 100 = OI + 资金费率固定开销
# 每枚币的量化数据 token
quantPerCoin = (EnableQuantOI×300 + EnableQuantNetflow×300) / 4
perCoinTokens = marketPerCoin + quantPerCoin
反向公式:最大安全币数
budget = modelContextLimit × 0.80 / 1.15
maxSafeCoins = floor((budget - staticTokens) / perCoinTokens)
📊 典型配置下的安全币种数量
基准:131K 模型(DeepSeek / Grok / Qwen),80% 警戒线
三种配置的 perCoinTokens
| 配置 | T | K | I | quantPerCoin | perCoinTokens |
|---|---|---|---|---|---|
| 最小(单TF,无指标,无量化) | 1 | 10 | 0 | 0 | 225 |
| 默认(3TF,仅Volume,QuantOI+Netflow) | 3 | 20 | 10 | 600 | 1525 |
| 最大(4TF,全部指标,全量化) | 4 | 30 | 115 | 600 | 6025 |
各模型下的最大安全币数
| 模型上限 | 最小配置 | 默认配置 | 最大配置 |
|---|---|---|---|
| 131K(DeepSeek / Grok / Qwen) | ≥10(封顶) | ≥10(封顶) | 14 |
| 128K(OpenAI GPT-4) | ≥10(封顶) | ≥10(封顶) | 14 |
| 200K(Claude) | ≥10(封顶) | ≥10(封顶) | ≥10(封顶) |
| 1M(Gemini / Minimax) | ≥10(封顶) | ≥10(封顶) | ≥10(封顶) |
🤖 模型上限参考
来源:store/strategy.go → ModelContextLimits
| 模型 | Context 上限 | 80% 警戒线 |
|---|---|---|
| deepseek | 131,072 | 104,858 |
| openai | 128,000 | 102,400 |
| claude | 200,000 | 160,000 |
| qwen | 131,072 | 104,858 |
| gemini | 1,000,000 | 800,000 |
| grok | 131,072 | 104,858 |
| kimi | 131,072 | 104,858 |
| minimax | 1,000,000 | 800,000 |
🔒 MaxCandidateCoins 常量说明
来源:store/strategy.go 第 14-20 行
const (
MaxCandidateCoins = 10 // UI 硬限制:用户最多设定的候选币数量
MaxPositions = 3 // 最大同时持仓数
MaxTimeframes = 4 // 最大时间框架数
MinKlineCount = 10 // 最少 K 线数
MaxKlineCount = 30 // 最多 K 线数
)
为什么 MaxCandidateCoins = 10?
- 默认配置下 10 枚币约用 ~20,000 tokens(~15% of 131K),完全安全
- 极端配置(4TF + 全指标)10 枚币约用 ~72,000 tokens(~55% of 131K),仍有充足余量
- 因此 10 是保守且安全的 UI 上限:在所有模型和配置组合下均不会触发 token 限制
建议使用范围
| 用户类型 | 建议配置 | 最大建议币数 |
|---|---|---|
| 新手 / 使用默认配置 | 3TF, K=20, 仅 Volume | 10-20 枚 |
| 进阶 / 启用部分指标 | 3TF, K=20, EMA+MACD+RSI | 10-15 枚 |
| 高级 / 全部指标 | 3-4TF, K=20-30, 全指标 | 5-10 枚 |