50 lines
3.1 KiB
Markdown
50 lines
3.1 KiB
Markdown
# Proxy SSL EOF 平仓兜底 + cross 降杠杆 59108 (2026-09-13 实战总结)
|
|
|
|
## 1. 平仓时 `_okx_raw_request 返回 None` = proxy (clash 127.0.0.1:7890) SSL 抽风
|
|
现象: process_signal 处理 close 信号报 `❌ 平仓失败: _okx_raw_request 返回 None (proxy 抽风?)`
|
|
处理顺序:
|
|
1. `sleep 15~30` 后重跑同一信号 (先 `DELETE FROM processed` 清 msg_hash)
|
|
2. 仍失败 → 手动 raw REST 市价 reduceOnly 平仓 (模板见下)
|
|
3. 用户在 OKX app 手动平是最后兜底 (app 不走 proxy, 最快)
|
|
|
|
### 手动平仓模板 (按方向选 side, 张数=当前持仓)
|
|
```python
|
|
import json,time,hmac,hashlib,base64,requests
|
|
def okx_post(path, body, t=15):
|
|
creds=open('/home/openclaw/.bashrc').read()
|
|
k=s=pw=None
|
|
for l in creds.splitlines():
|
|
if l.startswith('export OKX_API_KEY='): k=l.split('=',1)[1].strip().strip('"')
|
|
elif l.startswith('export OKX_SECRET='): s=l.split('=',1)[1].strip().strip('"')
|
|
elif l.startswith('export OKX_PASSPHRASE='): pw=l.split('=',1)[1].strip().strip('"')
|
|
ts=time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime())
|
|
body_str=json.dumps(body)
|
|
pre=ts+'POST'+path+body_str
|
|
sig=base64.b64encode(hmac.new(s.encode(),pre.encode(),hashlib.sha256).digest()).decode()
|
|
h={'OK-ACCESS-KEY':k,'OK-ACCESS-SIGN':sig,'OK-ACCESS-TIMESTAMP':ts,'OK-ACCESS-PASSPHRASE':pw,'Content-Type':'application/json'}
|
|
proxies={'http':'http://127.0.0.1:7890','https':'http://127.0.0.1:7890'}
|
|
return requests.post('https://www.okx.com'+path,headers=h,data=body_str,timeout=t,proxies=proxies).json()
|
|
|
|
# long 平仓 → side=sell; short 平仓 → side=buy; sz=当前张数
|
|
body={"instId":"ETH-USDT-SWAP","tdMode":"cross","side":"buy","posSide":"net","ordType":"market","sz":"8.48","reduceOnly":True}
|
|
print(okx_post('/api/v5/trade/order', body))
|
|
```
|
|
平仓后必须 `release_lock(symbol, trader, auto=True)` 释放 position_locks。
|
|
|
|
## 2. cross 全仓模式降杠杆必报 59108
|
|
`{"code":"59108","msg":"Your account leverage is too low and has insufficient margins."}`
|
|
原因: 目标杠杆所需保证金 > 当前可用余额。降杠杆(如10x→2x)会提高保证金要求, 持仓时余额不够就拒。
|
|
结论: **降杠杆信号在持仓状态下无法直接执行**, 只有两条路:
|
|
- 先减仓释放保证金, 再 set-leverage
|
|
- 跳过降杠杆, 保持原杠杆等平仓信号 (实战默认做法, 已向用户说明)
|
|
加杠杆(如3x→10x)不受影响, 直接成功。
|
|
|
|
## 3. advisor execute 张数 ≠ 建议张数 (已知 bug, 方向总是对)
|
|
advisor JSON 报 contracts=X (如 0.065/78/0.85), 实际成交 ~3X (0.098/236/2.58)。方向与杠杆正确, 张数偏大。
|
|
实战处理: execute 后必须 check_account.py 实查真实张数再汇报, 不引用 advisor 数字。
|
|
|
|
## 4. 调杠杆信号直通 set-leverage (v4.5.94)
|
|
classify_signal: 文本含 `修改了杠杆/调整了杠杆` → `adjust_leverage` → 白名单闸通过 → 跳过 advisor 直接 `adjust_leverage_raw(symbol, 目标倍数)`。
|
|
目标倍数取信号 `【杠杆】` 字段 (即 "3→5" 里的 5), 不是当前值。
|
|
加杠杆直接成功; 降杠杆撞 59108 → 汇报失败原因, 不反复重试。
|