b6d343a951
Align gate_bot app, templates, and env template with gate while keeping bot identity (port 5002, hub key gate_bot). Co-authored-by: Cursor <cursoragent@cursor.com>
11 KiB
11 KiB
界面与风控更新说明(Gate 实例)
顶栏导航(4 项)
| 顺序 | 名称 | 路由 | 说明 |
|---|---|---|---|
| 1 | 关键位监控 | /key_monitor |
关键位添加、实时门控、历史 |
| 2 | 实盘下单 | /trade |
人工开仓、划转、实时持仓(默认首页 / → /trade) |
| 3 | 交易记录与复盘 | /records |
交易记录、复盘表单、AI 历史(受顶栏 UTC 时间窗筛选) |
| 4 | 统计分析 | /stats |
按北京时间交易日切日 + 分品类统计块 |
关键位监控页
- 标题去掉「5m」;规则条从
.env读取(周期、确认K、量能、自动开仓盈亏比、日成交量排名)。 - 左列:活跃关键位,pos-card 样式展示现价/距上沿/距下沿/门控。
- 右列:关键位历史(失效/结案),与左列等高滚动;受顶栏 UTC 列表时间窗筛选(默认 UTC 当日)。
- 监控类型新增:斐波回调0.618、斐波回调0.786(与 Binance 主站同一套规则,计算逻辑见仓库根目录
fib_key_monitor_lib.py)。
斐波关键位监控(方案 A:交易所限价)
| 项 | 说明 |
|---|---|
| 同币互斥 | 每个币种只能有一条斐波监控(0.618 与 0.786 不可并存) |
| 上下沿 | 上沿 H、下沿 L(须 H > L) |
| 挂单价 E | 做多 E = H − ratio × (H − L)(自 H 向下回撤);做空 E = L + ratio × (H − L)(自 L 向上反弹) |
| 做多 | 限价 @ E,止损 L,止盈 H |
| 做空 | 限价 @ E,止损 H,止盈 L |
| 添加后 | 立即在 Gate 挂限价单;卡片显示 挂E、限价单 ID |
| 失效 | 以标记价判断:做多且标记价 ≥ H、做空且标记价 ≤ L,且限价未成交 → 撤销该限价单并结案(不写历史开仓) |
| 成交后 | 按仓位挂交易所 TP/SL → 写入 实盘下单监控(monitor_type=关键位监控,key_signal_type=斐波回调0.618/0.786)→ 从关键位列表移除 |
| 撤单 | 仅撤本条斐波的 fib_limit_order_id,不会 cancel_all,避免误伤其他委托 |
| 盈亏比 | 计划 RR 须 > KEY_AUTO_MIN_PLANNED_RR(与箱体/收敛一致);0.618 理论约 1.6:1,0.786 约 3.7:1 |
| 日成交量 | 与箱体/收敛相同,须在前 KEY_DAILY_VOLUME_RANK_MAX 名内方可添加 |
后台轮询:check_fib_key_monitors()(标记价失效 / 成交检测);箱体/收敛仍走 check_key_monitors(),互不干扰。
手动删除关键位时,若斐波限价尚未成交,会先撤交易所限价再删库记录。
箱体 / 收敛自动开仓(来源标注)
- 自动开仓写入
order_monitors.key_signal_type:箱体突破或收敛突破。 - 持仓卡片、交易记录列表会显示「来源 · 信号类型」。
列表时间窗(UTC,全站顶栏)
共用模块:仓库根目录 history_window_lib.py(Gate / Binance 主站一致)。
| 项 | 说明 |
|---|---|
| 默认 | UTC 当日(win_preset=utc_today,从 UTC 0:00 至当前时刻) |
| 可选 | 近 24 小时、近 7 天、自定义起止(UTC,datetime-local) |
| 作用范围 | 关键位历史、交易记录列表、复盘记录 API、AI 历史 API、导出「交易记录」「关键位历史」 |
| 与统计的关系 | 仅影响列表/导出;统计分析页仍按北京时间 TRADING_DAY_RESET_HOUR(默认 8:00)切交易日 |
| 库内时间 | DB 存北京时间字符串;后端用 utc_window_to_bj_sql_strings() 换算后再 SQL 比较 |
| 切换方式 | 顶栏「列表筛选(UTC)」→ 选预设 → 应用(保留当前路由,如 /records?win_preset=…) |
查询参数示例:
?win_preset=utc_today?win_preset=utc_last24h/utc_last7d?win_preset=custom&from_utc=2026-05-18 00:00:00&to_utc=2026-05-19 12:00:00
交易记录与复盘
- 平仓记录可同步交易所已实现盈亏(Gate 仓位历史等);列表盈亏列优先显示交易所数据,标注 所 / 估。
- 记录页提供 立即同步(
POST /api/sync_exchange_pnl),用于补全或刷新exchange_realized_pnl等字段。 - 未做人工复盘时,展示以交易所盈亏为准(有同步数据时)。
- 列表默认只显示当前 UTC 时间窗内的记录(见上节);导出 CSV 同步该时间窗。
- 表头 「止损(开仓)」:展示开仓快照
initial_stop_loss(无则回退stop_loss);核对/复盘仍可用有效止损字段。 - 平仓写入
trade_records时:stop_loss与initial_stop_loss均写入开仓时止损快照;key_signal_type保留箱体/收敛/斐波来源(fib_key_monitor_lib.key_signal_type_for_trade_record)。 - 开仓类型(
entry_reason):机器单平仓入库时,若未手填,按key_signal_type自动映射(见下表);列表/导出「开仓类型」列 = 复盘核对值优先,否则入库值,否则按信号映射。
key_signal_type |
自动写入的 entry_reason |
|---|---|
| 箱体突破 | 关键位箱体突破 |
| 收敛突破 | 关键位收敛突破 |
| 斐波回调0.618 | 关键位斐波0.618 |
| 斐波回调0.786 | 关键位斐波0.786 |
- 复盘表单 开仓类型 下拉新增上述四条固定文案(与趋势/波段类并列)。
- 复盘 离场触发 新增 「止盈」;从交易记录「填入复盘」时,若结果为「止盈/保本止盈/移动止盈/止损/手动平仓」会自动选中对应触发项,并按
key_signal_type预填开仓类型。 - 勾选「保存时自动生成多周期 K 线图」时:以 平仓时间 为锚点,各周期向前约
ORDER_CHART_LIMIT(默认 100)根 K 线(_fetch_ohlcv_ending_at),不再固定拉「最近 100 根」。 /api/journals、/api/reviews支持同一时间窗 query,与列表一致。
导出(交易记录 v3)
- 文件名:
trade_records_v3_YYYYMMDD.csv - 相对 v2 增加:
key_signal_type、initial_stop_loss(及开仓快照列)、planned_rr、actual_rr、risk_amount、交易所盈亏与时间字段等;末列「开仓类型」为有效展示文案。 - 「关键位历史」导出同样受 UTC 时间窗限制。
实盘下单页
- 左列:实盘下单监控(表单、划转、规则)。
- 右列:实时持仓(独立模块)。
- 人工开仓门控:计划盈亏比 <
MANUAL_MIN_PLANNED_RR(默认 1.4)时前端弹窗 + 后端拒绝。 - 移动保本(勾选启用):监控轮询达到触发 RR 后,止损阶梯上移时同步交易所——调用与页面「挂止盈止损」相同的 先撤后挂(
replace_active_monitor_tpsl_on_exchange:撤该合约全部 TP/SL 条件单 → 按新止损 + 原止盈重挂)。仅交易所成功后才写库;失败发企业微信告警,本地止损不变。未配置实盘 API 时仍只更新本地(与旧行为一致)。
统计分析页(/stats)
| 项 | 说明 |
|---|---|
| 切日 | 北京时间;交易日边界 = 每日 TRADING_DAY_RESET_HOUR:00(.env 默认 8) |
| 品类下拉 | 页顶 「统计品类」 下拉切换(默认「全部交易」):全部交易、下单监控、关键位箱体突破、关键位收敛结构、关键位斐波0.618、关键位斐波0.786;一次只显示所选品类的日/周/月 |
| URL | 切换后写入 stats_segment=(如 all、manual、key_box、key_conv、key_fib618、key_fib786),刷新 /stats 可保持选项 |
| 每块指标 | 日 / 周 / 月:开单次数、平仓笔数、胜率、净盈亏、回撤、连续亏损等(与原口径一致) |
| 开单次数 | 人工块:monitor_type=下单监控 且无 key_signal_type;关键位块:按 order_monitors.key_signal_type 计数 |
| 不受 UTC 窗影响 | 统计始终基于库内全部已平仓记录,按北京交易日归类,不随顶栏 UTC 列表窗切换 |
持仓与计仓
MAX_ACTIVE_POSITIONS默认 1(可在.env调大)。- 关键位自动开仓:在已有持仓时,若
KEY_SIZING_USE_ZERO_POSITION_SNAPSHOT=true,按首笔开仓前交易账户资金快照计仓(trading_sessions.key_sizing_capital_snapshot)。
配置
详见 .env.example 中「关键位门控」「交易执行 / 人工风控」注释段。Gate 专用项(GATE_*、止盈止损触发等)保持原有段落不变。
自动备份(服务器)
- 脚本:
scripts/backup_data.sh(crypto.db+static/images) - 定时:
scripts/install_backup_cron.sh→ 每天 北京时间 0:00,目录/root/backups/<实例名>/YYYY-MM-DD/,保留 30 天 - 详见
部署文档.md第 5.4 节(自动备份)
数据库(启动时自动迁移)
key_monitors 新增斐波字段(示例):fib_limit_order_id、fib_entry_price、fib_stop_loss、fib_take_profit、fib_order_amount、fib_margin_capital、fib_leverage。
trade_records / order_monitors 新增或沿用:key_signal_type、exchange_realized_pnl、exchange_opened_at、exchange_closed_at、exchange_sync_key、entry_reason、reviewed_entry_reason、initial_stop_loss。
历史数据:本次不做旧记录的批量回填(entry_reason / initial_stop_loss / key_signal_type 等);仅新产生的平仓与复盘按新逻辑写入。旧行展示可回退已有字段。
涉及文件(便于排查)
| 路径 | 说明 |
|---|---|
history_window_lib.py |
UTC 时间窗解析与转北京时间 SQL 字符串 |
fib_key_monitor_lib.py |
斐波计算、KEY_ENTRY_REASON_BY_SIGNAL、entry_reason_from_key_signal |
crypto_monitor_gate/app.py |
列表筛选、统计分块、导出 v3、复盘 K 线锚点、入库逻辑 |
crypto_monitor_gate/templates/index.html |
顶栏时间窗、统计分块 UI、止损(开仓)列、复盘预填 |
升级步骤
git pull后对比.env.example,把新增变量合并进本地.env。- 在 VPS 上为 Binance / Gate / Gate Bot 各执行一次
bash scripts/install_backup_cron.sh(若尚未安装)。 - 重启 Gate 实例服务(如
pm2 restart crypto_gate);首次启动会自动ALTER TABLE缺列(斐波、交易所盈亏、entry_reason等)。 - 浏览器强刷(Ctrl+F5)避免旧版
index.html缓存。 - 打开任意页确认顶栏出现 「列表筛选(UTC)」;
/stats可见分品类统计与「北京 8:00 切日」说明。 - 建议在测试币上先添加一条斐波监控,确认:限价已挂出、标记价失效会撤单、成交后出现持仓监控且 TP/SL 已挂上;平仓后交易记录止损(开仓)与开仓类型是否正确。