Skip to content

Latest commit

 

History

History
103 lines (86 loc) · 4.19 KB

File metadata and controls

103 lines (86 loc) · 4.19 KB

单智能体加密货币自动交易系统 - Requirements Document

基于DeepSeek的单一决策流交易机器人,使用Rust实现,在Binance模拟盘上对BTCUSDT和ETHUSDT进行自动交易。系统采用简洁的单体架构,通过单次LLM调用完成市场分析、策略判断和风险评估,支持15分钟、30分钟和1小时三种交易周期。

Core Features

1. 市场数据采集

  • 从 Binance API 获取 BTCUSDT 和 ETHUSDT 的K线数据(15分钟、30分钟、1小时周期)
  • 获取最近20根K线用于计算技术指标
  • 获取当前价格、24小时统计数据(高/低/成交量)
  • 计算技术指标:
    • SMA (5周期、20周期)
    • 价格变化率 (1周期、3周期)
    • 成交量比 (当前/20周期平均)

2. LLM决策引擎

  • 单次 DeepSeek API 调用完成:行情分析 + 策略判断 + 风险评估
  • 提示词包含:
    • 最近5根K线的OHLCV数据
    • 计算后的技术指标(SMA、价格变化率、成交量比)
    • 当前持仓状态(做多/做空/空仓)
    • 可用保证金和未实现盈亏
  • 输出标准化JSON决策:
    {
      "signal": "BUY|SELL|HOLD",
      "reason": "分析理由",
      "confidence": "HIGH|MEDIUM|LOW"
    }

3. 合约模拟盘交易执行

  • 使用 Binance 测试网 API 进行真实模拟交易
  • 支持做多(Long)和做空(Short)
  • 交易逻辑:
    • BUY信号:如果空仓则开多仓,如果持有空仓则平空后开多
    • SELL信号:如果空仓则开空仓,如果持有多仓则平多后开空
    • HOLD信号:保持当前持仓不变
  • 通过 Binance API 查询:
    • 当前持仓状态(多/空/空仓)
    • 持仓数量和开仓价格
    • 未实现盈亏和保证金余额
  • 记录每笔交易:时间、方向(开多/平多/开空/平空)、价格、数量、原因、盈亏

4. 定时循环调度

  • 支持配置三种运行周期:15分钟、30分钟、1小时
  • 每个周期独立运行:数据获取 → LLM决策 → 执行 → 日志
  • 错误不中断循环,记录后继续

5. 状态持久化

  • 持仓状态存储为JSON文件
  • 交易历史追加式日志
  • 程序重启后可恢复状态

User Stories

作为交易系统:

  • 我要在指定时间周期自动运行,无需人工干预
  • 我要基于最新市场数据做出买入/卖出/持有决策
  • 我要在模拟环境中验证策略有效性,不冒真实资金风险
  • 我要记录所有决策和交易,便于回溯分析

Acceptance Criteria

MVP阶段(第一周)

  • 成功连接 Binance 测试网并获取 BTCUSDT 的K线数据(最近20根)
  • 正确计算技术指标:SMA(5,20)、价格变化率、成交量比
  • 成功调用 DeepSeek API,传入K线+指标数据,获得JSON格式决策
  • 通过 Binance 测试网 API 执行合约交易:
    • 开多仓、平多仓逻辑正确
    • 开空仓、平空仓逻辑正确
    • 多空切换(平仓再反向开仓)逻辑正确
  • 正确查询测试网持仓状态和盈亏
  • 实现定时循环,至少完成连续3小时无故障运行
  • 交易日志可读,包含时间、币种、动作(开多/平多/开空/平空)、价格、数量、理由、盈亏

扩展阶段(第二周)

  • 支持 ETHUSDT 同时运行(双币种独立决策)
  • 支持配置文件切换15分钟/30分钟/1小时周期
  • 程序崩溃后重启能恢复持仓状态
  • 输出每日盈亏统计报告

Non-functional Requirements

性能要求

  • 单次决策周期总耗时 < 30秒(包括API调用)
  • Binance API调用失败时,最多重试3次,间隔2秒
  • DeepSeek API超时设置60秒

可靠性要求

  • 网络错误不导致程序崩溃,记录错误后跳过本次周期
  • 状态文件损坏时,能检测并从空仓重新开始
  • 关键操作(下单、状态保存)需有错误日志

安全要求

  • MVP阶段使用 Binance 测试网 API 密钥(testnet.binance.vision)
  • 所有 API Key 存储在 .env 文件中,不提交到代码仓库
  • 交易日志不包含 API 密钥等敏感信息

可维护性要求

  • 核心代码(main.rs)控制在500行以内
  • 每个模块职责单一:市场数据、LLM调用、交易执行、状态管理
  • 避免过度抽象,优先使用简单的函数和结构体