Gate.io USDT Perpetual Monitor (Exchange-Only)
仓库总览与 Git 克隆见上级目录:../README.md、../CLONE.md。
Python service for 7x24 monitoring of Gate.io USDT-settled linear perpetual futures using public REST v4 market data (no on-chain dependency).
Policy(主线)
- Only live Gate USDT linear perpetual contracts (
BASE_USDT, non-delisting) are eligible. monitor.universe: all_swaps(default):自动扫 Gate 上架中的线性合约,用min_24h_quote_volume_usdt按 24h 计价货币(USDT)成交额过滤(默认 ≥ 1 百万 USDT,可在config.yaml调整);不要混用watch_symbols。成交额优先读 ticker 的volume_24h_quote。monitor.universe: watchlist:只监控watch_symbols里列出的 base 合约(须为 Gate 上架 USDT 线性)。all_swaps模式下min_24h_quote_volume_usdt必须大于 0,否则会扫全市场(极低流动性)。- 监控主周期 5m,规则与触发逻辑见
app/exchange_rules.py。
附加(非产品主线说明)
monitor.btc_daily_gate_enabled(默认关闭):可选的 BTC 日线横盘过滤——在判定为日线横盘 regime 下叠加 K 线形态等附加条件;实验性/非必选风控,不作为对外产品主线说明。实现见app/btc_regime.py,可在config.yaml关闭。
关键位突破监控(半自动 · 主线)
- GEMMA 漏斗:仅参考;在面板 「关键位突破监控」 录入上/下沿与类型(箱体/收敛 × 标准/趋势)。
- 5m 门控 通过后:企业微信(单一 SL/TP)+ 可选转发 gate_order_executor(
key_monitor.forward_executor)。 - 默认 不 对全市场 5m TRIGGER 转发执行器(
key_monitor.auto_scan_forward_executor: false)。 - 说明:
docs/关键位突破监控说明.md;变更:更新说明.md。
自动下单(gate_order_executor)
- 下单执行器:在 Web 面板 「下单执行器 · 转发链」 维护列表(
runtime/order_executors.json),支持运行中增删;首次启动可从config.yaml的order_executor导入一条。 - 关键位 触发且计划 RR 达标后,向已启用执行器 广播
POST /v1/signal(单一止盈/止损,与录入方案一致)。详见docs/多执行器与信号转发归档.md。 - 该 HTTP 请求 不走
proxy.url,便于同机访问执行器。
全市场模式下扫描量较大,建议把 poll_interval_seconds 调到 300 秒或更长,并遵守 Gate 公开频率限制。
Web Panel
- Login required for all
/api/*and dashboard (unlessauth.enabled: false). - MATRIX 主视图:表格列为 Gemma 漏斗评分(
/api/funnel),按composite_score排序。 - K 线周期:监控主周期 5m;其它周期沿用内部命名(如
4H、1D),在app/gate.py映射为 Gate 的interval。
Gemma 漏斗(本地 Ollama)
- 安装并启动 Ollama,
ollama pull你的 Gemma 模型(如gemma2:2b);多模态需带 vision 的 tag 才能送 K 线图。 - 在
config.yaml中gemma.enabled: true,按需改model、ollama_base_url。 - 每个 5m 扫描 产生
WATCH/TRIGGER后,按 24h 成交额 与max_funnel_per_cycle上限,取 日线 OHLCV + 可选图表;按vision_top_n张 matplotlib 生成的 PNG 截图(base64)给 Ollama(纯文本模型设send_chart_image: false)。 - 模型必须返回 JSON 结构(见
app/gemma_client.py)。合并composite_score后写入alerts(details.source === gemma_funnel);若priority >= gemma_push_priority_min或composite_score >= composite_push_min,则 企业微信 推送一条「MATRIX · 漏斗优先」提醒。 - 若 Ollama 对
format: json不稳,可将gemma.json_mode设为false。
Project Layout
onchain_scout_gate/
app/
main.py
web.py
monitor.py
gate.py
exchange_rules.py
btc_regime.py
daily_features.py
chart_candles.py
gemma_client.py
notifier.py
order_executor_forward.py
key_monitor_service.py
key_gate.py
key_sl_tp.py
storage.py
models.py
config.py
templates/
static/
deploy/
ecosystem.config.cjs # PM2: python -m app.main
onchain-scout.service # 可选:systemd + pm2-runtime
config.example.yaml
requirements.txt
本地 / 服务器部署(PM2,推荐)
- Python 3.10+,
python -m venv .venv,pip install -r requirements.txt。 - 复制
config.example.yaml→config.yaml,填写auth、wecom、monitor等。 - 安装 Node.js 后:
npm install -g pm2。 - 在项目根:
pm2 start deploy/ecosystem.config.cjs - 常用:
pm2 logs onchain-scout、pm2 restart onchain-scout、pm2 save(配合pm2 startup开机)。
监听地址与端口以 config.yaml 的 app.host / app.port(与 app.main 起 uvicorn 一致)。
SOCKS5 代理
- 代理写在
config.yaml的proxy(enabled/url),仅用于访问 Gate 的 httpx;当前实现里企业微信等为直连proxy_url=None;本地 Ollama 不走代理。 - 详见 docs/本地部署-SOCKS5代理.md。
Linux Quick Start(venv + PM2)
cd /opt/onchain_scout_gate
chmod +x deploy/bootstrap.sh
./deploy/bootstrap.sh /opt/onchain_scout_gate
# 编辑 config.yaml
source .venv/bin/activate
npm install -g pm2
pm2 start deploy/ecosystem.config.cjs
也可用当前脚本快速试:deploy/start.sh(uvicorn,非 PM2)。
systemd(可选)
长期用 systemd 托管 PM2(进程用 pm2-runtime),可参考 deploy/onchain-scout.service(需已安装 pm2,并按环境改 WorkingDirectory / ExecStart)。
Config Keys
gate.api_base:默认https://api.gateio.ws/api/v4;亦可按官方文档使用https://fx-api.gateio.ws/api/v4。gate.settle:USDT 线性填usdt。gate.quote_currency:计价货币,默认USDT。monitor.universe:all_swaps|watchlist.watch_symbols: 仅在watchlist模式下使用。monitor.min_24h_quote_volume_usdt: 24h 成交额(USDT)下限;all_swaps须填>0。默认 1 百万。monitor.btc_daily_gate_enabled/btc_sideways_*: 可选 BTC 日线横盘过滤(非主线说明);默认关闭,见config.yaml。gemma.*、proxy.*、app.poll_interval_seconds: 见config.example.yaml。