Files
gate_scout_order/onchain_scout_gate/docs/多执行器与信号转发归档.md
2026-05-22 22:15:46 +08:00

6.5 KiB
Raw Permalink Blame History

多执行器与信号转发 · 设计归档

本文档归档 2026-05 前后关于 onchain_scout_gate(扫描端)gate_order_executor(执行器) 联动的讨论结论与已实现能力,便于后期检阅。


1. 背景与目标

目标 说明
一套信号 关键位 5m 门控通过后,按录入方案构造 一份 单一止盈/止损 payload 并广播
多套账户 可向多个执行器进程广播,各绑不同 Gate API,用于盈亏比等规则的对照实验
规则在执行器 最低盈亏比、仓位、移动保本等 不在扫描端 区分,由各执行器自行配置
统一 Webhook 全系统使用 同一个 webhook_secret
仅扫描端登记 执行器列表 只能 在扫描端 Web 面板(及对应 API)维护,禁止执行器反向注册

2. 架构

flowchart LR
  scout[onchain_scout_gate :8088]
  scout -->|1 次| wecom[企业微信]
  scout -->|同一 payload| exA[执行器 A]
  scout -->|同一 payload| exB[执行器 B]
  exA --> gateA[Gate 账户 A]
  exB --> gateB[Gate 账户 B]
  • 转发 不走 扫描端 proxy,直连各 base_url(通常 http://127.0.0.1:8090 或内网 IP)。
  • 各执行器独立进程、独立 config.yaml、独立 SQLite;互不通信。

3. 扫描端实现要点(已实现)

3.1 持久化

文件 内容
runtime/order_executors.json 总开关、webhook_secrettimeout_seconds、执行器列表
config.yaml order_executor 仅冷启动:首次无 json 时从 base_url / enabled / secret 导入一条

之后以 面板修改 为准;改 config.yaml 不会 覆盖已有 json。

3.2 执行器列表字段

字段 说明
id UUID
name 展示名(日志、面板)
base_url http://127.0.0.1:8090
enabled 单条开关
last_forward 最近一次转发结果(HTTP、exec_status

3.3 HTTP API(需登录)

方法 路径 作用
GET /api/order-executors 读取完整配置
PUT /api/order-executors/settings 总开关、webhook_secret、timeout
POST /api/order-executors 新增
PATCH /api/order-executors/{id} 改名称/URL/启用
DELETE /api/order-executors/{id} 删除

3.4 转发逻辑

  1. 关键位build_key_executor_payload() 使用录入上下沿与标准/趋势规则计算的 SL/TP(确认收盘 E 为 reference_price)。
  2. 全市场 TRIGGER:默认 转发(key_monitor.auto_scan_forward_executor: false);若开启则仍用扫描箱体 metrics 构造 payload。
  3. enabled=true 的列表项 并行 POST {base_url}/v1/signal
  4. 同一 signal_id 发往所有目标。
  5. 部分失败只记日志,不阻断其他执行器。

3.5 Web 面板

路径:Dashboard → 「下单执行器 · 转发链」

  • 总开关、Webhook 密钥(可改)、超时
  • 添加 / 启用 / 停用 / 删除
  • 展示上次转发状态

3.6 代码模块

文件 职责
app/order_executors_store.py 读写 json、CRUD
app/order_executor_forward.py 构建 payload、多路 POST
app/monitor.py 企微成功后调用转发
app/web.py API + 启动时 ensure_store_initialized

4. 执行器侧(gate_order_executor

本次 未改 执行器业务代码。多账户 = 多实例部署:

实例 典型差异
目录/PM2 名 两份 gate_order_executor
app.port 8090 / 8091
gate.api_key/secret 不同子账户
security.webhook_secret 与扫描端面板 相同
risk.*、移动保本 各实例自行实验

另见执行器仓库已实现的 移动保本(1R 拉至开仓价±0.2%、面板开关、breakeven_prefs 等),与多路转发正交。


5. 部署套数怎么选

场景 面板操作
单账户 列表 1 条 URL
双账户对照 2 条 URL,各指向不同端口/机器
临时只跑一套 另一条 enabled: false 或关总开关
完全停止自动下单 总开关 enabled: false

6. 盈亏比对照实验(用法)

  1. 扫描端产生同一 signal_id、同一 TP/SL。
  2. 执行器 Amin_reward_risk_ratio = 1.3 → 可能 accepted
  3. 执行器 Bmin_reward_risk_ratio = 1.8 → 可能 skipped / reward_risk_below_min
  4. 分别在两个执行器面板「信号流」与 Gate 平仓统计中对比结果。

7. 云服务器关闭代理

7.1 何时关闭

  • 本机 + 本地 SOCKSproxy.enabled: true
  • 境外云、可直连 Gateproxy.enabled: false

7.2 扫描端

proxy:
  enabled: false

仅影响 Gate 行情;企微、转发执行器本就直连。

7.3 执行器(每个实例)

proxy:
  enabled: false

影响 Gate 下单/查仓及(若开启)企微出站。

7.4 自检

curl -I --max-time 15 https://api.gateio.ws

7.5 文档索引

  • onchain_scout_gate/交易系统部署说明.md §7、§8
  • onchain_scout_gate/docs/本地部署-SOCKS5代理.md(本地 SOCKS
  • gate_order_executor/docs/部署说明.md §6.1

8. 日志关键字

扫描端运行日志(面板「运行日志」或 runtime/system.log):

日志前缀 含义
order_executor_ok name=... 该执行器 HTTP 成功
order_executor_failed name=... HTTP 或业务失败
order_executor_no_active_targets 总开关开但无启用条目
webhook_secret is empty 未配置密钥

9. 安全与约束

  • Webhook 密钥 在面板修改后,须手动同步到 每一个 执行器 security.webhook_secret
  • 将执行器 8090/8091 对公网裸奔;建议仅本机或内网 + 防火墙。
  • 执行器 不会不能 向扫描端注册;避免运维混乱。

10. 变更记录

日期 内容
2026-05 多执行器运行时存储、面板 CRUD、并行广播、部署与代理文档

11. 相关路径速查

onchain_scout_gate/
  runtime/order_executors.json    # 执行器列表(面板写入)
  app/order_executors_store.py
  app/order_executor_forward.py
  templates/dashboard.html        # 「下单执行器」区块
  static/app.js

gate_order_executor/              # 多实例部署,代码无需为多账户改动
  config.yaml                     # 每实例独立 API / risk / proxy