57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
# v4.5.86 (2026-09-11) 单币种上限 70% 配置化 + 存量减仓实证
|
||
|
||
## 用户原话
|
||
|
||
- "可用资金大于100刀了,现在要控制仓位了,一个币种满仓最多就是200刀的70%。现在将近300刀,就要分配一下了,你规划一下,这个分配的算法。先计划,不修改。"
|
||
- "多币方案是,比如现在一共是290刀,单币种上限是200刀,暂定,可配置的。你看看。现有的仓位按这个来减。"
|
||
|
||
## 改动清单 (1 行配置 + 0 行代码)
|
||
|
||
`~/.hermes/skills/trading/okx-auto-position/config.json`:
|
||
```json
|
||
"position_sizing": {
|
||
"balance_utilization": 0.60,
|
||
"single_coin_max_pct": 0.70, // ← 新增 (旧: 代码 fallback 0.75)
|
||
...
|
||
}
|
||
```
|
||
|
||
advisor 既有代码 (不用改):
|
||
```python
|
||
single_coin_cap_pct = cfg('position_sizing', 'single_coin_max_pct', 0.75)
|
||
total_cap = acct_info['total_capital'] # = free + used_margin, 实时
|
||
single_coin_cap = total_cap * single_coin_cap_pct
|
||
single_coin_avail = max(0, single_coin_cap - same_coin_margin)
|
||
avail_margin = min(free/1.07, single_coin_avail/1.07) # SAFETY_FACTOR 见 v4.5.74
|
||
```
|
||
|
||
验证: `python3 -c "from config_loader import get; print(get('position_sizing','single_coin_max_pct'))"` → `0.7` ✓
|
||
|
||
## 存量减仓实证 (2026-09-11)
|
||
|
||
| 项 | 减仓前 | 减仓后 |
|
||
|---|---|---|
|
||
| SKHYNIX long @10x | 1.784 张 / $229.10 (73.9%) | **1.69 张 / $217.06 (69.8%)** ✓ |
|
||
| Free | $76.85 | $93.78 |
|
||
| Total | $310.14 | $310.83 |
|
||
|
||
流程 (`/tmp/reduce_to_70.py` 模式):
|
||
1. `fetch_balance()` + `fetch_positions()` 拿实时 total / 持仓占用
|
||
2. `target = total × 0.70`; 已用 ≤ target → 不动
|
||
3. `margin_per_ct = initialMargin / contracts` (**实测值**, 含浮盈亏)
|
||
4. `reduce_ct = ceil((已用 − target) / margin_per_ct, 到 lot step)`
|
||
5. 市价 `reduceOnly=True` 反方向平 → sleep 2 → 重 fetch 验证占用 ≤70%
|
||
|
||
## 多币分配语义 (user 选定 "先到先得")
|
||
|
||
- 无预约槽位/均分 — 每个信号独立 `min(该币剩余额度, free/1.07)`
|
||
- 第 1 个币最多吃满 70%, 后续信号只能用剩余 Free
|
||
- 上限随 total_capital 浮动: 赚钱 → 上限自动涨; 亏钱 → 自动缩
|
||
|
||
## 坑
|
||
|
||
- ❌ 硬编码 0.70 进 advisor (违反"任何名单/阈值不硬编码"铁律) — 走 config
|
||
- ❌ 每张保证金用理论值 `ctVal×price/lev` — 浮盈亏会让实际 initialMargin 偏离, 用实测
|
||
- ❌ 减仓后不验证 — 必须 re-fetch 确认占用真的 ≤ 70%
|
||
- ❌ 只减增量不管存量 — user 拍板"现有的仓位按这个来减", 存量立即对齐
|