freqtrade 虚拟币自动交易工具 - 下载历史数据和进行回溯测试

前提

config.json里,pairlists不能是动态的, 得改成静态:

"pairlists": [
      {
          "method": "StaticPairList"
      }
  ],

然后配置币对

"exchange": {
      "name": "binance",
      "key": "",
      "secret": "",
      "ccxt_config": {},
      "ccxt_async_config": {},
      "pair_whitelist": [
          "BTC/USDT", 
          "ETH/USDT",
          "TON/USDT",
          "ADA/USDT", 
          "SOL/USDT",
          "XRP/USDT",
          "DOGE/USDT",
          "DOT/USDT",
          "MATIC/USDT",
          "AVAX/USDT",
          "LINK/USDT"
      ],
      "pair_blacklist": [
          "BNB/.*"
      ]
  },

下载数据

进入docker容器, 下载180天历史数据(15m间隔可选, 根据自己的配置来)

freqtrade download-data --exchange binance \
    --timeframe 15m \
    --days 180

进行回溯测试

这里的WoodStrategy, 是自己策略的class名, 如果用示例测试, 就是SampleStrategy

freqtrade backtesting --strategy WoodStrategy

比如我的目前测试策略的回溯结果

然后, 发给gpt进行分析

以下是对 **WoodStrategy** 回测结果的分析与解读:

---

### **1. 回测总体表现**
- **回测时间范围**:2024-12-24 至 2025-01-22(共计 29 天)。
- **交易模式**:**现货交易(Spot)**。
- **初始资金**:1000 USDT。
- **最终资金**:958.83 USDT(亏损 **41.17 USDT**)。
- **总收益率**:**-4.12%**。
- **年化复合增长率(CAGR)**:**-41.09%**(表现极差)。
- **市场整体变化**:**+12.21%**(策略远远跑输市场表现)。

**结论**:短短 29 天内亏损了 **4.12%**,表现不佳,且未能捕获市场整体的上涨趋势。

---

### **2. 盈利能力**
| **指标**                    | **值**                  |
|-----------------------------|-------------------------|
| **单笔平均收益率**          | **-0.27%**             |
| **单笔期望收益**            | **-0.09 USDT**         |
| **总交易量**                | 15,000.386 USDT        |
| **平均持仓金额**            | 32.19 USDT             |
| **日均收益率**              | **-0.14%**             |
| **收益因子(Profit Factor)** | **0.19**(远低于 1)   |
| **夏普比率(Sharpe)**       | **-216.43**(负值,严重失败) |
| **索提诺比率(Sortino)**    | **-360.25**            |

**解读**:
- **收益因子为 0.19**,表明每 1 美元的盈利伴随着 5.26 美元的亏损。
- **Sharpe 和 Sortino 比率为负值**,显示策略在风险调整后的表现非常糟糕。
- **单笔平均亏损 -0.27%**,且日均收益为负,说明策略整体盈利能力较差。

---

### **3. 胜率与盈亏分布**
| **指标**              | **值**                  |
|-----------------------|-------------------------|
| **总交易次数**        | 466 笔                 |
| **胜率**              | **19.5%**(91 胜 / 375 败) |
| **最大连续盈利交易**  | 6 笔                   |
| **最大连续亏损交易**  | 31 笔                  |
| **胜单平均持仓时间**  | 29 分钟                |
| **亏单平均持仓时间**  | 16 分钟                |

**解读**:
- 胜率仅 **19.5%**(远低于 50%),说明策略大部分时间处于亏损状态。
- **最大连续亏损交易高达 31 次**,表明策略可能存在严重的逻辑问题或市场适应性不足。
- **胜单的持仓时间更长(29 分钟)**,但仍无法弥补高频率且短时的亏单。

---

### **4. 各交易对表现**
| **交易对**     | **交易次数** | **平均收益率** | **总收益(USDT)** | **胜率** |
|----------------|-------------|----------------|---------------------|----------|
| **SOL/USDT**   | 38          | -0.21%         | -2.574              | 26.3%    |
| **TON/USDT**   | 50          | -0.19%         | -3.026              | 22.0%    |
| **BTC/USDT**   | 40          | -0.24%         | -3.121              | 12.5%    |
| **XRP/USDT**   | 32          | -0.32%         | -3.168              | 18.8%    |
| **ETH/USDT**   | 36          | -0.29%         | -3.359              | 13.9%    |
| **DOGE/USDT**  | 39          | -0.31%         | -3.947              | 20.5%    |
| **LINK/USDT**  | 45          | -0.29%         | -4.238              | 24.4%    |
| **DOT/USDT**   | 67          | -0.26%         | -5.641              | 20.9%    |
| **AVAX/USDT**  | 61          | -0.30%         | -5.808              | 19.7%    |
| **ADA/USDT**   | 58          | -0.34%         | -6.290              | 15.5%    |

**解读**:
- **所有交易对均为亏损**,且亏损幅度接近,说明策略在不同市场环境下均表现不佳。
- 表现最差的交易对为 **ADA/USDT**,总亏损 **-6.29 USDT**,胜率仅 **15.5%**。
- 表现稍好的交易对为 **TON/USDT** 和 **SOL/USDT**,但仍处于亏损状态。

---

### **5. 平仓原因分析**
| **平仓原因**    | **平仓次数** | **平均收益率** | **总收益(USDT)** | **胜率** |
|-----------------|-------------|----------------|---------------------|----------|
| **force_exit**  | 2           | -0.14%         | -0.086              | 0%       |
| **exit_signal** | 464         | -0.28%         | -41.085             | 19.6%    |
| **总计**        | 466         | -0.27%         | -41.17              | 19.5%    |

**解读**:
- 大部分交易因 **exit_signal** 平仓,但平均收益率为 **-0.28%**,表明平仓信号可能存在逻辑问题。
- **force_exit**(强制平仓)虽然占比很小,但未能避免亏损。
- 平仓信号的整体有效性较差,可能需要优化。

---

### **6. 风险与回撤**
| **指标**                         | **值**             |
|----------------------------------|--------------------|
| **最大回撤**                     | -41.156 USDT (4.12%) |
| **最大账户下跌比例**             | 4.12%              |
| **绝对回撤**                     | -41.17 USDT        |
| **最低余额**                     | 958.83 USDT        |
| **最高余额**                     | 999.985 USDT       |

**解读**:
- 策略的最大回撤为 **4.12%**,表明策略在短时间内未能有效保护本金。
- 尽管回撤比例不算过高,但短期内亏损幅度已经显著影响账户表现。

---

### **7. 策略总结**
| **指标**               | **值**             |
|------------------------|--------------------|
| **总交易次数**         | 466               |
| **总收益率**           | -4.12%            |
| **平均持仓时间**       | 19 分钟           |
| **胜率**               | 19.5%             |
| **最大连续亏损交易**   | 31                |
| **市场变化**           | +12.21%           |
| **最大回撤**           | -41.156 USDT      |
| **利润因子**           | 0.19              |
| **风险调整比率(Sharpe)** | -216.43          |

**结论**:
- **策略表现极差**:29 天内亏损了 4.12%,策略未能利用市场上涨趋势。
- **风险收益比失衡**:胜率偏低,且单笔收益率始终为负,导致策略亏损持续扩大。
- **回撤无法控制**:虽然最大回撤比例不算过高,但策略整体缺乏盈利能力。

---

### **优化建议**
1. **平仓信号优化**:
   - 针对 **exit_signal** 平仓逻辑进行优化,减少不必要的过早或过晚平仓。
   - 可考虑加入动态止盈止损机制,根据市场波动调整平仓触发条件。

2. **筛选交易对**:
   - 策略可能不适用于某些交易对(如 ADA/USDT 和 AVAX/USDT),建议通过进一步回测筛选表现较好的交易对。
   - 优化交易对的权重分配,减少亏损较大的交易对的占比。

3. **提高胜率**:
   - 胜率仅 19.5%,可能是进场信号不够精准。可通过调整指标参数或引入更多过滤条件来提高信号质量。

4. **降低交易频率**:
   - 当前日均交易量为 16 笔,过多的交易频率可能导致交易费用和滑点增加,进一步影响收益。

5. **风险管理**:
   - 当前策略未能有效限制连续亏损(最大连续亏损 31 笔),建议加入风控模块,如动态仓位管理或限制连续亏损后暂停交易。

---

总体来说,**WoodStrategy** 在当前回测中的表现较差,但通过优化进场/平仓逻辑、筛选交易对和完善风险管理,有望提高策略的盈利能力。

还是需要继续调整呐…