darkeril

模拟盘需求文档

V5.1 信号引擎模拟盘(Paper Trading)完整需求定稿

模拟盘需求文档 v1.0

状态:需求讨论中 | 目标:2026-02-28 晚上线 | 负责人:露露

一、产品定位

V5.1信号引擎的模拟交易系统。信号触发后自动虚拟开仓,实时追踪持仓盈亏,按规则自动平仓(TP/SL/超时),积累真实市场环境下的交易数据用于策略优化。

核心目标:验证策略在真实市场中的表现,为实盘上线提供数据支撑。


二、支持币种

BTC / ETH / XRP / SOL(4个)


三、页面结构

侧边栏入口

  • 名称:模拟盘
  • 位置:在"信号引擎 V5.1"下方

页面布局(从上到下)

3.1 总览面板(顶部卡片组)

指标说明
总盈亏(R)累计已平仓盈亏,绿色正/红色负
胜率盈利笔数/总笔数 × 100%
总交易数已完成(已平仓)的交易笔数
当前持仓数正在持有的仓位数量
盈亏比(PF)总盈利/总亏损
运行时长模拟盘启动至今

3.2 当前持仓(实时更新)

每个活跃仓位显示:

字段说明
币种BTC/ETH/XRP/SOL
方向🟢 LONG / 🔴 SHORT
入场价开仓时的价格
当前价实时价格
浮动盈亏(R)实时计算,绿色/红色
评分开仓时的V5.1评分
档位轻仓/标准/加仓
TP1 / TP2 / SL止盈止损价位
入场时间开仓时间(北京时间)
已持仓持仓时长(分钟)

3.3 K线图 + 交易标注(TradingView)

技术方案:使用 TradingView Lightweight Charts 渲染K线,数据源为币安合约API。

功能

  • 币种切换:BTC / ETH / XRP / SOL
  • 时间周期:1m / 5m / 15m / 1h
  • K线数据:从币安 /fapi/v1/klines 实时获取
  • 交易标注(核心功能):
    • 🟢 绿色向上箭头 = 做多开仓
    • 🔴 红色向下箭头 = 做空开仓
    • ⬜ 白色/灰色标记 = 平仓点
    • 虚线水平线 = TP1/TP2/SL价位(当前持仓时显示)
  • 鼠标悬停标注可查看详情(评分、盈亏等)

3.4 历史交易列表

表格字段:

说明
币种BTC/ETH/XRP/SOL
方向LONG/SHORT
入场价开仓价格
出场价平仓价格
PnL(R)盈亏(R单位)
状态tp(止盈) / sl(止损) / sl_be(保本止损) / timeout(超时)
评分开仓时评分
档位轻仓/标准/加仓
持仓时间分钟
入场时间北京时间

筛选功能

  • 按币种:全部 / BTC / ETH / XRP / SOL
  • 按结果:全部 / 盈利 / 亏损

3.5 权益曲线图

  • X轴:时间
  • Y轴:累计PnL(R)
  • 折线图,绿色区域填充(正收益)/ 红色(负收益)
  • 可直观看到资金曲线走势和回撤

3.6 统计面板

指标说明
胜率总/做多/做空 分别统计
盈亏比(PF)Profit Factor
平均盈利(R)赢的交易平均赚多少
平均亏损(R)输的交易平均亏多少
盈亏比(Win/Loss)平均盈利/平均亏损
最大回撤(MDD)权益曲线最大回撤
夏普比率年化风险调整收益
各币种胜率BTC/ETH/XRP/SOL 分别的胜率
各档位胜率轻仓/标准/加仓 分别的胜率

四、后端逻辑

4.1 数据表:paper_trades

CREATE TABLE paper_trades (
    id SERIAL PRIMARY KEY,
    symbol VARCHAR(20) NOT NULL,          -- BTCUSDT/ETHUSDT/...
    direction VARCHAR(10) NOT NULL,       -- LONG/SHORT
    score INT NOT NULL,                   -- 开仓时V5.1评分
    tier VARCHAR(20) NOT NULL,            -- light/standard/heavy
    entry_price DOUBLE PRECISION NOT NULL,
    entry_ts BIGINT NOT NULL,             -- 开仓时间戳(ms)
    exit_price DOUBLE PRECISION,
    exit_ts BIGINT,                       -- 平仓时间戳(ms)
    tp1_price DOUBLE PRECISION NOT NULL,
    tp2_price DOUBLE PRECISION NOT NULL,
    sl_price DOUBLE PRECISION NOT NULL,
    tp1_hit BOOLEAN DEFAULT FALSE,
    status VARCHAR(20) DEFAULT 'active',  -- active/tp1_hit/tp/sl/sl_be/timeout
    pnl_r DOUBLE PRECISION DEFAULT 0,
    created_at TIMESTAMP DEFAULT NOW()
);

4.2 交易逻辑(集成到 signal_engine.py)

开仓条件

  • V5.1评分 ≥ 60分(有信号时)
  • 该币种无活跃持仓
  • 冷却期已过(10分钟)

开仓动作

  • 记录入场价(当前价格)
  • 计算TP1/TP2/SL:
    • LONG: SL = price - 2×ATR, TP1 = price + 1.5×ATR, TP2 = price + 3×ATR
    • SHORT: SL = price + 2×ATR, TP1 = price - 1.5×ATR, TP2 = price - 3×ATR
  • 写入 paper_trades

持仓监控(每15秒检查一次):

  • 用实时价格检查TP1/TP2/SL
  • TP1触发 → 标记tp1_hit,移动SL到成本价
  • TP2触发 → 平仓,PnL = 0.5×1.5R + 0.5×3.0R = 2.25R
  • SL触发 → 平仓,PnL = -1R(或保本如果tp1已触发)
  • 超时(60分钟) → 按当前价平仓

4.3 API接口

接口说明
GET /api/paper/summary总览数据(总PnL、胜率、交易数等)
GET /api/paper/positions当前活跃持仓(含实时浮盈)
GET /api/paper/trades?symbol=&result=历史交易列表(支持筛选)
GET /api/paper/equity-curve权益曲线数据点
GET /api/paper/stats详细统计数据

五、Discord推送(可选)

每次开仓/平仓时推送消息到Discord:

开仓通知

🟢 模拟开多 BTCUSDT
入场价: $63,523.8 | 评分: 87 | 档位: 加仓
TP1: $63,850 | TP2: $64,200 | SL: $63,100

平仓通知

✅ 模拟平仓 BTCUSDT (做多)
入场: $63,523.8 → 出场: $63,850.0
盈亏: +2.25R | 状态: 止盈(TP)
持仓: 8.5分钟 | 累计: +45.3R

六、开发计划

阶段内容预计耗时
Phase 1后端:paper_trades表 + signal_engine集成 + API1小时
Phase 2前端:模拟盘页面(总览+持仓+历史+统计)1.5小时
Phase 3K线图:TradingView Lightweight Charts + 交易标注1小时
Phase 4Discord推送(可选)30分钟

目标:2026-02-28 晚上线运行

On this page