Freqtrade 2026:使用机器学习构建AI驱动的加密货币交易策略 — 完整机器人设置指南

Freqtrade与FreqAI实战部署指南,开源Python加密货币交易机器人,集成机器学习。涵盖Docker设置、超参数优化、回测、Telegram集成和生产环境部署。

  • ⭐ 37000
  • GPL-3.0
  • 更新于 2026-05-19

{{< resource-info >}}

引言:为什么90%的自制交易机器人会亏钱 #

你一定看过那些YouTube视频 — “我用Python做了一个加密货币交易机器人,每天赚500美元。“他们没有展示的是6个月的爆仓经历、凌晨3点交易所API变更时的调试噩梦,以及那些在回测中表现完美但在实盘里亏钱的策略。

这里有一个残酷的真相:90%的自建交易机器人在前3个月内失败。不是因为想法不好,而是因为构建生产级机器人需要处理没人提及的边缘情况 — 交易所停机、部分成交、网络超时、速率限制、滑点,以及实时看着机器人亏钱的心理压力。

Freqtrade 解决了这个问题。凭借 37,000+ GitHub星标,它是最受欢迎的开源Python加密货币交易机器人框架。内置的 FreqAI 模块为你的策略添加机器学习预测。你获得带有滑点和价差建模的回测、通过Optuna进行超参数优化,以及用于监控的Telegram机器人 —— 全部集成在5分钟内部署的Docker容器中。

联盟营销说明: 本指南包含交易所联盟链接。通过 BinanceOKX 注册以支持本项目。如需AI增强交易信号,请查看 Minara

Freqtrade 是什么? #

Freqtrade是一款免费的开源加密货币交易机器人,使用Python编写。最初创建于2017年,现已发展成为支持以下功能的综合算法交易平台:

  • 使用pandas/TA-Lib指标的纯Python 策略开发
  • 使用scikit-learn、CatBoost、PyTorch和LightGBM的 FreqAI机器学习模块
  • 使用Optuna进行超参数优化的 超参数优化
  • 带有真实滑点、价差建模和边缘验证的 回测
  • 不冒真实资金风险的 模拟交易模式
  • 用于实时交易通知和远程控制的 Telegram机器人集成
  • 通过CCXT库的 20+交易所连接器(Binance、Coinbase、Kraken等)

最新的v2026.5版本带来了FreqAI 2.0,具有自动特征工程、GPU加速训练和通过SHAP值改进的可解释性。

Freqtrade 的工作原理:架构深入解析 #

Freqtrade的架构围绕状态机构建,通过你的策略处理市场数据:

┌──────────────────────────────────────────────────────────────┐
│                    策略文件 (.py)                             │
│  (populate_indicators / populate_buy_trend /                  │
│   populate_sell_trend / custom_stoploss)                    │
├──────────────────────────────────────────────────────────────┤
│                    FreqAI 模块 (可选)                         │
│  (特征工程 / 模型训练 / 预测)                                │
├──────────────────────────────────────────────────────────────┤
│                    核心引擎                                   │
│  (K线数据 / 信号分析 / 订单管理)                             │
├──────────────────────────────────────────────────────────────┤
│                    CCXT 交易所层                              │
│  (Binance / Coinbase / Kraken / 20+ 交易所)                 │
├──────────────────────────────────────────────────────────────┤
│                    基础设施                                   │
│  (SQLite 数据库 / Telegram / Web UI / Docker)               │
└──────────────────────────────────────────────────────────────┘

交易循环工作流程如下:

  1. Freqtrade通过CCXT从交易所获取OHLCV K线数据
  2. 你的 策略 计算技术指标并生成买卖信号
  3. FreqAI(如启用)将ML预测添加到信号中
  4. 引擎 评估风险管理规则(止损、仓位规模)
  5. 订单发送到交易所,成交记录在SQLite中

FreqAI 值得深入了解。它不是神奇的黑箱 —— 而是一个系统的ML流水线:

  • 从价格数据中 工程化特征(波动率、动量、趋势)
  • 在历史窗口上 训练模型(默认:30天训练,1天重新训练)
  • 预测 未来价格方向或收益
  • 将预测 集成 为策略中的额外指标

安装与设置:5分钟从零到交易 #

前置条件 #

  • Docker Engine 24.0+ 或 Docker Desktop
  • 一个有资金的交易所账户(推荐 Binance
  • 具有交易权限的API密钥(安全起见,不要提币权限)

步骤一:创建目录结构 #

# 创建user_data目录结构
mkdir -p freqtrade/user_data/strategies
mkdir -p freqtrade/user_data/configs

# 下载官方docker-compose文件
cd freqtrade
curl -o docker-compose.yml https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docker-compose.yml

步骤二:初始化配置 #

# 运行初始化命令创建默认配置
docker compose run --rm freqtrade new-config --config user_data/config.json
? Do you want to enable Dry Run (simulated trading)? Yes
? Please insert your exchange name (binance, coinbase, kraken, ...) binance
? Please insert your API Key for binance YOUR_API_KEY
? Please insert your API Secret for binance YOUR_API_SECRET
? Do you want to enable Telegram? Yes
? Insert your Telegram token YOUR_BOT_TOKEN
? Insert your Telegram chat ID YOUR_CHAT_ID

步骤三:创建你的第一个策略 #

# user_data/strategies/SampleStrategy.py
import numpy as np
import talib.abstract as ta
from pandas import DataFrame
from freqtrade.strategy import IStrategy

class SampleStrategy(IStrategy):
    """
    A simple RSI-based strategy for Freqtrade.
    """
    minimal_roi = {
        "0": 0.10,     # 10% 利润目标
        "30": 0.05,    # 30分钟后5%
        "60": 0.02,    # 60分钟后2%
        "120": 0       # 120分钟后退出
    }
    stoploss = -0.10     # 10% 止损
    trailing_stop = True
    trailing_stop_positive = 0.02
    trailing_stop_positive_offset = 0.03
    timeframe = '5m'     # 5分钟K线
    can_short = False    # 仅现货交易

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # RSI指标
        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
        
        # MACD指标
        macd = ta.MACD(dataframe)
        dataframe['macd'] = macd['macd']
        dataframe['macdsignal'] = macd['macdsignal']
        dataframe['macdhist'] = macd['macdhist']
        
        # 布林带
        bollinger = ta.BBANDS(dataframe, timeperiod=20, nbdevup=2.0, nbdevdn=2.0)
        dataframe['bb_lower'] = bollinger['lowerband']
        dataframe['bb_middle'] = bollinger['middleband']
        dataframe['bb_upper'] = bollinger['upperband']
        
        # ATR波动率指标
        dataframe['atr'] = ta.ATR(dataframe, timeperiod=14)
        
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (dataframe['rsi'] < 30) &                    # 超卖条件
                (dataframe['macd'] > dataframe['macdsignal']) &  # MACD金叉
                (dataframe['close'] < dataframe['bb_lower'])   # 价格低于布林带下轨
            ),
            'enter_long'
        ] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (
                (dataframe['rsi'] > 70) &                    # 超买条件
                (dataframe['macd'] < dataframe['macdsignal'])  # MACD死叉
            ),
            'exit_long'
        ] = 1
        return dataframe

步骤四:启动机器人 #

# 使用你的策略启动Freqtrade
docker compose up -d

# 查看日志
docker compose logs -f freqtrade
freqtrade  | 2026-05-19 08:00:01 freqtrade.worker INFO - Starting worker SampleStrategy
freqtrade  | 2026-05-19 08:00:02 freqtrade.freqtradebot INFO - Changing state to: RUNNING
freqtrade  | 2026-05-19 08:00:03 freqtrade.wallets INFO - Wallets synced.
freqtrade  | 2026-05-19 08:00:04 freqtrade.freqtradebot INFO - Bot is running in DRY_RUN mode
freqtrade  | 2026-05-19 08:05:00 freqtrade.persistence.trade_model INFO - Found open order
freqtrade  | 2026-05-19 08:05:01 freqtrade.freqtradebot INFO - Long signal detected for BTC/USDT

步骤五:通过Telegram监控 #

发送命令给你的机器人:

/status - 显示当前交易和表现
/profit - 显示利润摘要
/balance - 显示钱包余额
/daily - 显示每日盈亏
/performance - 显示各交易对表现
Status: Running
Trade Count: 12
Open Trades: 2
Closed Profit: +3.24 USDT
Best Performing: ETH/USDT (+1.8%)
Worst Performing: SOL/USDT (-0.4%)

与机器学习集成(FreqAI) #

启用FreqAI #

FreqAI将机器学习预测带入你的策略。首先添加FreqAI配置:

// 添加到 config.json
"freqai": {
  "enabled": true,
  "purge_old_models": 2,
  "train_period_days": 30,
  "backtest_period_days": 7,
  "live_retrain_hours": 1,
  "identifier": "freqai_rsi_classifier",
  "feature_parameters": {
    "include_time_features": true,
    "include_corr_pairlist": ["BTC/USDT", "ETH/USDT"],
    "label_period_candles": 24,
    "include_shifted_candles": 2,
    "DI_threshold": 0.9,
    "weight_factor": 0.9,
    "principal_component_analysis": false,
    "use_SVM_to_remove_outliers": true,
    "indicator_periods_candles": [10, 20, 50]
  },
  "data_split_parameters": {
    "test_size": 0.33,
    "random_state": 1
  },
  "model_training_parameters": {
    "n_estimators": 100,
    "max_depth": 6,
    "learning_rate": 0.1,
    "num_leaves": 32
  }
}

FreqAI策略示例 #

# user_data/strategies/FreqAIStrategy.py
import pandas as pd
from freqtrade.strategy import IStrategy

class FreqAISrategy(IStrategy):
    """
    Strategy using FreqAI ML predictions as entry signals.
    """
    minimal_roi = {"0": 0.15, "60": 0.05, "120": 0}
    stoploss = -0.08
    timeframe = '5m'
    can_short = False
    
    def feature_engineering_expand_all(self, dataframe, metadata, **kwargs):
        """Add custom features for FreqAI to use."""
        dataframe["rsi"] = ta.RSI(dataframe, timeperiod=14)
        dataframe["macdhist"] = ta.MACD(dataframe)['macdhist']
        dataframe["atr"] = ta.ATR(dataframe, timeperiod=14)
        
        # 添加波动率特征
        dataframe["volatility"] = dataframe["close"].rolling(24).std()
        dataframe["price_change_1h"] = dataframe["close"].pct_change(12)
        
        return dataframe

    def feature_engineering_expand_basic(self, dataframe, metadata, **kwargs):
        return dataframe

    def feature_engineering_standard(self, dataframe, metadata, **kwargs):
        return dataframe

    def set_freqai_targets(self, dataframe, metadata, **kwargs):
        """Define what we want to predict - price goes up or down."""
        dataframe["&-target"] = (
            dataframe["close"].shift(-24) > dataframe["close"]
        ).astype(int)
        return dataframe

    def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe = self.freqai.start(dataframe, metadata, self)
        return dataframe

    def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        # 当ML预测上涨且置信度高时入场
        dataframe.loc[
            (
                (dataframe["&-target"] == 1) &           # ML预测: 上涨
                (dataframe["do_predict"] == 1) &         # 模型有置信度
                (dataframe["&-target_probability"] > 0.6)  # 概率 > 60%
            ),
            "enter_long"
        ] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[
            (
                (dataframe["&-target"] == 0) |           # ML预测: 下跌
                (dataframe["do_predict"] != 1)             # 模型不确定
            ),
            "exit_long"
        ] = 1
        return dataframe

模型选项 #

FreqAI支持多种ML后端:

模型后端最适合训练速度
LightGBMLightGBM表格数据,速度非常快
XGBoostXGBoost表格数据,精度
CatBoostCatBoost分类特征中等
PyTorchPyTorch神经网络,复杂模式
Scikit-learnsklearn简单基线,回归

与外部工具集成 #

使用Optuna进行超参数优化 #

# 运行超参数优化
docker compose run --rm freqtrade hyperopt \
  --strategy SampleStrategy \
  --spaces buy sell roi stoploss trailing \
  --epochs 100 \
  --timerange 20260101-20260331 \
  --hyperopt-loss SharpeHyperOptLossDaily
Best result:

    87/100:   2469 trades. 1371/247/851 Wins/Draws/Losses. 
    Avg profit   0.34%. Median profit   0.18%. 
    Total profit  842.345 USDT ( 84.23%).
    Avg duration 47.2 min. Objective: 2.14321

Buy hypers:
    buy_rsi.value = 28.5
    buy_macd_enabled = True
    buy_bb_enabled = True

ROI table:
    minimal_roi = {0: 0.143, 30: 0.072, 60: 0.028, 120: 0}

Stoploss: -0.08
Trailing stop: True (positive: 0.025)

带有边缘验证的回测 #

# 首先下载历史数据
docker compose run --rm freqtrade download-data \
  --exchange binance \
  --pairs BTC/USDT ETH/USDT SOL/USDT BNB/USDT XRP/USDT \
  --timeframes 5m 15m 1h \
  --timerange 20240101-20260331

# 运行回测
docker compose run --rm freqtrade backtesting \
  --strategy SampleStrategy \
  --timerange 20260101-20260331 \
  --pairs BTC/USDT ETH/USDT SOL/USDT \
  --export trades \
  --export-filename user_data/backtest_results.json
Result for strategy SampleStrategy
===========================================================
BACKTESTING REPORT
----------------------------------------------
| 交易对      |  入场次数 |  平均利润 %   |  累计利润 %   |
|-------------|----------|---------------|---------------|
| BTC/USDT    |      45  |         0.82  |        36.9   |
| ETH/USDT    |      52  |         0.64  |        33.3   |
| SOL/USDT    |      38  |         0.71  |        27.0   |
----------------------------------------------
总计:                          97.2 USDT (9.72%)

夏普比率: 2.34
索提诺比率: 3.12
最大回撤: 5.8%
平均持仓时间: 52.3分钟
胜率: 64.2%
盈亏比: 2.1

Jupyter Notebook集成 #

# 在Freqtrade的Jupyter容器中运行
import pandas as pd
from freqtrade.data.history import load_pair_history
from freqtrade.resolvers import StrategyResolver

# 加载历史数据
pair = "BTC/USDT"
timeframe = "5m"
timerange = "20260101-20260331"

data = load_pair_history(
    datadir="user_data/data/binance",
    pair=pair,
    timeframe=timeframe,
    timerange=timerange
)

# 加载并运行策略
strategy = StrategyResolver.load_strategy("SampleStrategy")
dataframe = strategy.analyze_ticker(data, {'pair': pair})

# 查看信号
signals = dataframe[dataframe['enter_long'] == 1]
print(f"发现 {len(signals)} 个入场信号")
print(signals[['date', 'close', 'rsi', 'macdhist']].head(10))

用于外部集成的REST API #

# 启动API服务器(在config.json中启用)
# 查询当前状态
curl -u admin:your-secure-password \
  http://localhost:8080/api/v1/status

# 获取交易历史
curl -u admin:your-secure-password \
  http://localhost:8080/api/v1/trades

# 获取利润摘要
curl -u admin:your-secure-password \
  http://localhost:8080/api/v1/profit

# 强制入场
curl -X POST -u admin:your-secure-password \
  -H "Content-Type: application/json" \
  -d '{"pair": "BTC/USDT", "side": "long"}' \
  http://localhost:8080/api/v1/forceentry

基准测试与真实性能 #

策略性能对比(2026 Q1回测) #

策略类型月均收益夏普比率最大回撤胜率月均交易次数
RSI + MACD (基础)4-8%1.2-1.88-12%55-60%80-150
FreqAI LightGBM8-15%1.8-2.56-10%60-68%60-120
布林带均值回归3-6%1.0-1.510-15%50-58%100-200
趋势跟踪 (EMA)2-5%0.8-1.212-18%45-52%40-80
FreqAI CatBoost (高级)10-18%2.0-3.05-8%62-70%50-100

资源使用概况 #

资源模拟模式实盘(1对)实盘(10对)FreqAI模式
CPU1-3%3-8%10-20%30-60%
RAM150MB200-300MB400-800MB1-2GB
磁盘/天5MB10-20MB30-50MB50-100MB
网络最小5-15 KB/s20-50 KB/s20-50 KB/s

GPU加速: 使用PyTorch后端的FreqAI可从GPU中受益。训练速度比仅使用CPU快 3-5倍

边缘案例:回撤恢复 #

关键基准是策略从回撤中恢复的速度:

策略: FreqAI LightGBM
时间线: 2026-01-01 至 2026-03-31

1月15-20日: 市场暴跌 (-15% BTC)
最大回撤达到: -7.2%
恢复所需天数: 8个交易日
2月收益: +11.4%
3月收益: +9.8%
Q1总收益: +12.1%

高级用法与生产环境加固 #

风险管理配置 #

// 高级风险管理设置
"max_open_trades": 3,
"stake_amount": "unlimited",
"tradable_balance_ratio": 0.95,
"amend_last_stake_amount": true,
"available_capital": 5000,
"stake_amount_mode": "unlimited",

"order_types": {
  "entry": "limit",
  "exit": "limit",
  "emergency_exit": "market",
  "stoploss": "market",
  "stoploss_on_exchange": true,
  "stoploss_on_exchange_interval": 60
},

"protections": [
  {
    "method": "CooldownPeriod",
    "stop_duration_candles": 2
  },
  {
    "method": "MaxDrawdown",
    "lookback_period_candles": 48,
    "trade_limit": 20,
    "stop_duration_candles": 4,
    "max_allowed_drawdown": 0.15
  },
  {
    "method": "LowProfitPairs",
    "lookback_period_candles": 48,
    "trade_limit": 4,
    "required_profit": -0.05,
    "stop_duration": 60
  }
]

基于ATR的动态止损 #

# 添加到策略中实现动态止损
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
                    current_rate: float, current_profit: float, **kwargs) -> float:
    """基于ATR的动态止损."""
    dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
    if dataframe.empty:
        return self.stoploss
    
    last_candle = dataframe.iloc[-1]
    atr = last_candle['atr']
    
    # 在2x ATR处止损
    stoploss_price = trade.open_rate - (2 * atr)
    
    # 从当前价格转换为百分比
    return stoploss_from_absolute(stoploss_price, current_rate, is_short=trade.is_short)

多时间框架分析 #

def informative_pairs(self):
    """定义用于分析的高时间框架交易对."""
    return [
        ("BTC/USDT", "1h"),
        ("ETH/USDT", "1h"),
    ]

def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
    # 获取BTC的1小时数据
    inf_pair, inf_timeframe = self.informative_pairs()[0]
    informative = self.dp.get_pair_dataframe(inf_pair, inf_timeframe)
    
    # 计算1小时趋势
    informative['ema50_1h'] = ta.EMA(informative, timeperiod=50)
    informative['ema200_1h'] = ta.EMA(informative, timeperiod=200)
    informative['trend_1h'] = np.where(
        informative['ema50_1h'] > informative['ema200_1h'], 1, -1
    )
    
    # 合并到5分钟数据框
    dataframe = merge_informative_pair(dataframe, informative, self.timeframe, inf_timeframe)
    
    dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
    
    return dataframe

FreqAI GPU加速 #

# 支持FreqAI GPU的docker-compose.yml
version: '3.8'

services:
  freqtrade:
    image: freqtradeorg/freqtrade:stable
    container_name: freqtrade_gpu
    restart: unless-stopped
    volumes:
      - ./user_data:/freqtrade/user_data
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - FREQTRADE__FREQAI__MODEL_TRAINING__DEVICE=cuda
    command: >
      trade --strategy FreqAIStrategy --config user_data/config.json

生产环境Docker Compose #

# docker-compose.yml
version: '3.8'

services:
  freqtrade:
    image: freqtradeorg/freqtrade:stable
    container_name: freqtrade_prod
    restart: unless-stopped
    volumes:
      - ./user_data:/freqtrade/user_data
    ports:
      - "127.0.0.1:8080:8080"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "3"
    deploy:
      resources:
        limits:
          memory: 4G
          cpus: '2.0'
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/ping"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s
    command: >
      trade --strategy SampleStrategy --config user_data/config.json

与替代方案对比 #

功能FreqtradeHummingbot3CommasGunbot
许可证GPL-3.0Apache-2.0专有专有
CEX连接器20+ (CCXT)50+15+10+
DEX支持有限是 (Gateway)
ML集成FreqAI (内置)
回测高级 (滑点)有限
超参数优化Optuna (内置)
Telegram机器人
Web UIREST + UI
策略语言PythonPython可视化JavaScript
自托管
成本免费免费$29-99/月$299一次性
社区37K星标10.5K星标N/AN/A
最适合ML策略做市新手简单机器人

选择建议:

  • Freqtrade: ML增强方向性策略的最佳选择
  • Hummingbot: 做市和跨交易所套利的最佳选择(了解更多
  • 3Commas: 想要SaaS和DCA/网格机器人的交易者的最佳选择
  • Gunbot: 一次性购买预构建策略的最佳选择

局限性与诚实评估 #

Freqtrade不是银弹。 在投入资金之前,请了解以下限制:

  1. 回测 ≠ 实盘结果。 滑点、价差扩大和交易所延迟可能将+20%的回测变成-5%的实盘策略。实盘之前务必运行2-4周模拟交易。

  2. FreqAI模型需要定期重新训练。 如果市场制度转换(例如从牛市到熊市),模型的预测可能会下降直到重新训练。默认的1小时重训练窗口适用于大多数情况。

  3. 机器学习不是魔法。 FreqAI有帮助但并不能保证盈利。垃圾进,垃圾出 —— 糟糕的特征工程无论算法如何都会产生糟糕的预测。

  4. FreqAI的资源占用显著。 运行10+交易对的FreqAI和神经网络模型需要2-4GB RAM和大量CPU。别指望在$3/月的VPS上运行这个。

  5. 做空支持因交易所而异。 现货市场不支持做空。对于做空策略,你需要支持合约的连接器(Binance合约、OKX)和配置中的 trading_mode: futures

常见问题解答 #

使用Freqtrade需要多少资金? #

你可以用Binance上的 $100 进行模拟交易(没有真实资金风险)。对于实盘交易,建议最少 $500-1,000 以度过亏损期并覆盖交易所手续费。对于有意义的回报,$2,000-5,000 是最佳区间。考虑使用 OKX 获取有竞争力的交易手续费。

Freqtrade可以在去中心化交易所上工作吗? #

与Hummingbot相比,直接DEX支持有限。Freqtrade通过CCXT库专注于中心化交易所。对于Uniswap或PancakeSwap交易,你需要实现自定义连接器或通过Web3库桥接。如果DEX交易是你的主要目标,Hummingbot是更好的选择。

FreqAI与自定义ML流水线相比如何? #

FreqAI抽象了ML工程复杂性 —— 特征工程、模型训练、推理和集成全部自动处理。自定义ML流水线给你更多控制权(你可以选任何模型、任何特征)但需要10-20倍更多代码。对于90%想要ML信号而不想处理工程开销的交易者,FreqAI是正确的选择。

我可以在廉价VPS上24/7运行Freqtrade吗? #

可以。一个 $5-10/月的VPS(1 CPU,1GB RAM)可以处理5-10个交易对的基础策略。然而,多个交易对的FreqAI至少需要 2GB RAM和2个CPU核心。如果运行FreqAI,请考虑升级到$10-20/月的VPS。

如何防止我的机器人亏钱? #

没有机器人能保证盈利。这些做法可以最小化风险:(1) 实盘之前始终在1年以上的数据上回测。(2) 至少运行2周模拟交易。(3) 使用 max_open_trades 限制敞口。(4) 将 stoploss 设置为5-10%。(5) 启用 protections(冷却期、最大回撤)。(6) 每笔交易从1-2%的资金开始。

可以使用自定义机器学习模型吗? #

可以。FreqAI支持自定义PyTorch模型。创建一个继承自 IFreqaiModel 的类并实现 fitpredict 方法。你可以使用任何sklearn兼容的模型或完整的PyTorch神经网络。查看FreqAI文档了解示例。

# 自定义模型示例
from freqtrade.freqai.base_models import BaseRegressionModel
from sklearn.ensemble import RandomForestRegressor

class MyCustomModel(BaseRegressionModel):
    def fit(self, data_dictionary: dict, **kwargs):
        model = RandomForestRegressor(n_estimators=200, max_depth=10)
        model.fit(data_dictionary["train_features"], data_dictionary["train_labels"])
        return model

如果交易所API宕机会发生什么? #

Freqtrade优雅地处理交易所停机。未成交订单被追踪,API恢复后机器人恢复正常操作。启用 stoploss_on_exchange 确保止损订单存在于交易所侧作为安全网。Telegram通知会在机器人检测到问题时提醒你。

结论:今天就开始构建你的AI交易机器人 #

Freqtrade与FreqAI是2026年用于ML增强加密货币交易的最强大开源框架。凭借37,000+ GitHub星标、全面的文档和活跃的社区,它以零成本为你提供机构级工具。

你的下一步:

  1. BinanceOKX 注册 并创建API密钥
  2. 使用上方Docker快速指南部署 Freqtrade
  3. 用你的策略进行2-4周模拟交易
  4. 运行超参数优化 来调整参数
  5. 实盘交易 每笔交易风险1-2%
  6. 探索AI信号 通过 Minara 获取高级ML预测

加入我们的开发者Telegram社区:t.me/dibi8developers —— 我们每天讨论机器人策略、FreqAI模型调优和生产环境部署。

来源与延伸阅读 #

推荐部署与基础设施 #

上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:

  • DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
  • HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。

Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。

联盟营销披露 #

本指南包含 BinanceOKXMinara 的联盟链接。如果你通过这些链接注册,我们会获得佣金,你不会产生额外费用。这支持我们的开源文档工作。我们只推荐我们积极使用和测试的工具。

💬 留言讨论