等差网格:现价下买上卖,成交后补相邻反向单;启动校验格距 > 双边手续费、保证金预检。
适配器:Extended · RISEx · Decibel · N1 · Phoenix · Phoenix2 · Nado · PopDEX
开源模板,不含私钥 / API Key / Telegram Token / 服务器地址 / 账本文件。 生产运行只需要:
cp .env.example .env,填上你的密钥,其余代码零改动。
| 交易所 | 链接 |
|---|---|
| Extended | https://app.extended.exchange/join/AIQIANG888 |
| RISEx | https://rise.trade/(暂无推荐码) |
| Decibel | https://app.decibel.trade/r/K7B2QM |
| N1 | https://app.n1.xyz/r/orderly-loop-curve |
| Phoenix / Phoenix2 | https://phoenix.trade/?code=35D5NJH3 |
| Nado | https://app.nado.xyz?join=aiqiang888 |
| PopDEX | https://app.popdex.xyz/referral?referralCode=AIQIANG |
- 多所统一
VenueExecutor:snapshot/apply/ 可选cancelAll·closePosition - 经典网格核心:
seed铺单 + 成交补反向档 +skipBand(近价跳过带宽) - 本地看板:总览 KPI、今日明细、各所状态、挂单档位横轴(看匀不匀)、日历盈亏
- 官方量 / 费 / 平仓盈亏(节流拉取,避免内存爆)
- Telegram:开/平简报、整点总览、异常去重(可选)
SOFT_RESUME:重启恢复锚点,避免误整表撤单- 紧急暂停 / 出入金记账(看板按钮 + API)
完整版 → docs/CHALLENGES.md
| 难题 | 解法要点 |
|---|---|
| 成交后网格断档 | 买→上邻卖 / 卖→下邻买,每 level 一单 |
| 重启冲掉挂单 | SOFT_RESUME + 本地锚点,只补漏 |
| 官方统计 OOM | 节流拉取 + 加大 Node 堆 |
| 各所盈亏口径不一 | Ex 用已平仓 history;Rise/Dec 用 fill realized 等 |
| 仓位名义差很多 | 净仓路径不同,先对满格名义再对净格数 |
| 限流 / 挂单上限 | maxOpenOrders、写频、间隔、错误去重 |
| Decibel tick/lot | 编码前对齐 |
| 链上 CLOB(PopDEX) | viem 签名 + gasless 中继广播 |
| 坏 JSON 回包 | 归类瞬时软错误,不刷 TG、下轮重试 |
- Node.js ≥ 20
- 至少一个交易所的账号 + API 密钥(无密钥也能用
DRY_RUN=1跑空转看流程)
npm installcp .env.example .env打开 .env,按需填写。关键项:
VENUES=只开你有密钥的所,例如VENUES=extended,phoenix- 各所的 API / 私钥 / keypair 路径(
secrets/*.key、secrets/*.json,已在.gitignore) - 默认
DRY_RUN=1(模拟,只读看板,不下单) - 实盘必须同时满足:
DRY_RUN=0且LIVE_CONFIRM=YES
DRY_RUN=1 npm start -- --once会打印各所锚点、格数、档距、size、风险预检,但不下任何单。确认无报错再继续。
DRY_RUN=0 LIVE_CONFIRM=YES npm start看板默认 http://127.0.0.1:8088/(`/api/snapshot` 是机器可读 JSON)。
Windows(PowerShell):
Copy-Item .env.example .env
$env:DRY_RUN="1"; npm start -- --once.env / secrets/ / data/ 永远不提交;见 SECURITY.md。
代码已包含:src/telegram.ts(开/平简报、错误去重、整点总览)。在 本机 .env 填写:
TELEGRAM_ENABLED=true
TELEGRAM_BOT_TOKEN= # BotFather 发的 token,勿提交仓库
TELEGRAM_CHAT_IDS= # 你的 chat_id;多个用逗号分隔获取方式(自行完成,勿把真实值贴进 Issue/PR):
- Telegram 找 @BotFather →
/newbot→ 得到BOT_TOKEN - 先给 bot 发一条任意消息,再用
https://api.telegram.org/bot<TOKEN>/getUpdates看chat.id,填入TELEGRAM_CHAT_IDS - 重启进程后:成交开/平、异常、整点总览会推送到该 chat
未启用或 token/chat 为空时,程序照常跑,只是不发 TG。
| 所 | 格数 | 杠杆 | 半幅 | 备注 |
|---|---|---|---|---|
| Extended | 80 | 30x | ±4.6% | Starknet,预算 800U×70% |
| RISEx | 46 | 25x | ±3% | 单笔偏大,注意降风险 |
| Decibel | 80 | 30x | ±5% | Aptos,DECIBEL_EQUITY_USD |
| N1 | 80 | 30x | ±5% | Solana,N1_EQUITY_USD,PostOnly |
| Phoenix | 80 | 30x | ±4.5% | Solana,PHOENIX_HALF_BAND |
| Phoenix2 | 80 | 30x | ±4.5% | 同 Phoenix,独立 keypair |
| Nado | 80 | 30x | ±4.5% | Ink 链,NADO_HALF_BAND |
| PopDEX | 80 | 30x | ±4.5% | Morph Tachyon,POPDEX_EQUITY_USD |
GRID_MARGIN_FRAC 默认 0.7(保证金占预算 70%)。各所格数/杠杆/半幅均可用对应 *_LEVERAGE、*_HALF_BAND、*_EQUITY_USD 覆盖。
src/
grid.ts # 网格核心:seed / 补反向 / skipBand
loop.ts # 主循环:snapshot → 计划 → apply
config.ts # 定档 / 锚点 / env 解析
dashboard.ts # 看板服务(/api/snapshot 等)
ledger.ts # 每日盈亏 / 出入金记账
officialStats.ts # 官方量/费/平仓盈亏(节流)
telegram.ts # TG 通知
botControl.ts # 紧急暂停 / 恢复
venues/ # 各所适配器(snapshot/apply/cancelAll/closePosition)
extended.ts risex.ts decibel.ts decibelLive.ts n1.ts
phoenix.ts nado.ts popdex.ts index.ts types.ts
public/index.html # 看板前端(纯静态)
docs/CHALLENGES.md demo-dashboard.html images/
vendor/ # 轻量封装,无密钥
test/ # 核心网格单测
- 策略:
src/grid.ts· 循环:src/loop.ts· 适配器:src/venues/· TG:src/telegram.ts - 演示静态页:
docs/demo-dashboard.html - 只读看板:
/api/snapshot;紧急暂停:POST /api/pause//api/resume
杠杆与合约有爆仓风险;软件按现状提供,不构成投资建议。注册/推荐链接非投资建议。切勿在 Issue 粘贴私钥。
MIT · 推特 @aiqiang888