基于DeepSeek的单一决策流交易机器人,使用Rust实现,在Binance模拟盘上对BTCUSDT和ETHUSDT进行自动交易。系统采用简洁的单体架构,通过单次LLM调用完成市场分析、策略判断和风险评估,支持15分钟、30分钟和1小时三种交易周期。
- 从 Binance API 获取 BTCUSDT 和 ETHUSDT 的K线数据(15分钟、30分钟、1小时周期)
- 获取最近20根K线用于计算技术指标
- 获取当前价格、24小时统计数据(高/低/成交量)
- 计算技术指标:
- SMA (5周期、20周期)
- 价格变化率 (1周期、3周期)
- 成交量比 (当前/20周期平均)
- 单次 DeepSeek API 调用完成:行情分析 + 策略判断 + 风险评估
- 提示词包含:
- 最近5根K线的OHLCV数据
- 计算后的技术指标(SMA、价格变化率、成交量比)
- 当前持仓状态(做多/做空/空仓)
- 可用保证金和未实现盈亏
- 输出标准化JSON决策:
{ "signal": "BUY|SELL|HOLD", "reason": "分析理由", "confidence": "HIGH|MEDIUM|LOW" }
- 使用 Binance 测试网 API 进行真实模拟交易
- 支持做多(Long)和做空(Short)
- 交易逻辑:
- BUY信号:如果空仓则开多仓,如果持有空仓则平空后开多
- SELL信号:如果空仓则开空仓,如果持有多仓则平多后开空
- HOLD信号:保持当前持仓不变
- 通过 Binance API 查询:
- 当前持仓状态(多/空/空仓)
- 持仓数量和开仓价格
- 未实现盈亏和保证金余额
- 记录每笔交易:时间、方向(开多/平多/开空/平空)、价格、数量、原因、盈亏
- 支持配置三种运行周期:15分钟、30分钟、1小时
- 每个周期独立运行:数据获取 → LLM决策 → 执行 → 日志
- 错误不中断循环,记录后继续
- 持仓状态存储为JSON文件
- 交易历史追加式日志
- 程序重启后可恢复状态
作为交易系统:
- 我要在指定时间周期自动运行,无需人工干预
- 我要基于最新市场数据做出买入/卖出/持有决策
- 我要在模拟环境中验证策略有效性,不冒真实资金风险
- 我要记录所有决策和交易,便于回溯分析
- 成功连接 Binance 测试网并获取 BTCUSDT 的K线数据(最近20根)
- 正确计算技术指标:SMA(5,20)、价格变化率、成交量比
- 成功调用 DeepSeek API,传入K线+指标数据,获得JSON格式决策
- 通过 Binance 测试网 API 执行合约交易:
- 开多仓、平多仓逻辑正确
- 开空仓、平空仓逻辑正确
- 多空切换(平仓再反向开仓)逻辑正确
- 正确查询测试网持仓状态和盈亏
- 实现定时循环,至少完成连续3小时无故障运行
- 交易日志可读,包含时间、币种、动作(开多/平多/开空/平空)、价格、数量、理由、盈亏
- 支持 ETHUSDT 同时运行(双币种独立决策)
- 支持配置文件切换15分钟/30分钟/1小时周期
- 程序崩溃后重启能恢复持仓状态
- 输出每日盈亏统计报告
- 单次决策周期总耗时 < 30秒(包括API调用)
- Binance API调用失败时,最多重试3次,间隔2秒
- DeepSeek API超时设置60秒
- 网络错误不导致程序崩溃,记录错误后跳过本次周期
- 状态文件损坏时,能检测并从空仓重新开始
- 关键操作(下单、状态保存)需有错误日志
- MVP阶段使用 Binance 测试网 API 密钥(testnet.binance.vision)
- 所有 API Key 存储在 .env 文件中,不提交到代码仓库
- 交易日志不包含 API 密钥等敏感信息
- 核心代码(main.rs)控制在500行以内
- 每个模块职责单一:市场数据、LLM调用、交易执行、状态管理
- 避免过度抽象,优先使用简单的函数和结构体