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容器中。
联盟营销说明: 本指南包含交易所联盟链接。通过 Binance 或 OKX 注册以支持本项目。如需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) │
└──────────────────────────────────────────────────────────────┘
交易循环工作流程如下:
- Freqtrade通过CCXT从交易所获取OHLCV K线数据
- 你的 策略 计算技术指标并生成买卖信号
- FreqAI(如启用)将ML预测添加到信号中
- 引擎 评估风险管理规则(止损、仓位规模)
- 订单发送到交易所,成交记录在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后端:
| 模型 | 后端 | 最适合 | 训练速度 |
|---|---|---|---|
| LightGBM | LightGBM | 表格数据,速度 | 非常快 |
| XGBoost | XGBoost | 表格数据,精度 | 快 |
| CatBoost | CatBoost | 分类特征 | 中等 |
| PyTorch | PyTorch | 神经网络,复杂模式 | 慢 |
| Scikit-learn | sklearn | 简单基线,回归 | 快 |
与外部工具集成 #
使用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.8 | 8-12% | 55-60% | 80-150 |
| FreqAI LightGBM | 8-15% | 1.8-2.5 | 6-10% | 60-68% | 60-120 |
| 布林带均值回归 | 3-6% | 1.0-1.5 | 10-15% | 50-58% | 100-200 |
| 趋势跟踪 (EMA) | 2-5% | 0.8-1.2 | 12-18% | 45-52% | 40-80 |
| FreqAI CatBoost (高级) | 10-18% | 2.0-3.0 | 5-8% | 62-70% | 50-100 |
资源使用概况 #
| 资源 | 模拟模式 | 实盘(1对) | 实盘(10对) | FreqAI模式 |
|---|---|---|---|---|
| CPU | 1-3% | 3-8% | 10-20% | 30-60% |
| RAM | 150MB | 200-300MB | 400-800MB | 1-2GB |
| 磁盘/天 | 5MB | 10-20MB | 30-50MB | 50-100MB |
| 网络 | 最小 | 5-15 KB/s | 20-50 KB/s | 20-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
与替代方案对比 #
| 功能 | Freqtrade | Hummingbot | 3Commas | Gunbot |
|---|---|---|---|---|
| 许可证 | GPL-3.0 | Apache-2.0 | 专有 | 专有 |
| CEX连接器 | 20+ (CCXT) | 50+ | 15+ | 10+ |
| DEX支持 | 有限 | 是 (Gateway) | 否 | 否 |
| ML集成 | FreqAI (内置) | 否 | 否 | 否 |
| 回测 | 高级 (滑点) | 是 | 有限 | 否 |
| 超参数优化 | Optuna (内置) | 否 | 否 | 否 |
| Telegram机器人 | 是 | 是 | 是 | 是 |
| Web UI | REST + UI | 否 | 是 | 是 |
| 策略语言 | Python | Python | 可视化 | JavaScript |
| 自托管 | 是 | 是 | 否 | 是 |
| 成本 | 免费 | 免费 | $29-99/月 | $299一次性 |
| 社区 | 37K星标 | 10.5K星标 | N/A | N/A |
| 最适合 | ML策略 | 做市 | 新手 | 简单机器人 |
选择建议:
- Freqtrade: ML增强方向性策略的最佳选择
- Hummingbot: 做市和跨交易所套利的最佳选择(了解更多)
- 3Commas: 想要SaaS和DCA/网格机器人的交易者的最佳选择
- Gunbot: 一次性购买预构建策略的最佳选择
局限性与诚实评估 #
Freqtrade不是银弹。 在投入资金之前,请了解以下限制:
回测 ≠ 实盘结果。 滑点、价差扩大和交易所延迟可能将+20%的回测变成-5%的实盘策略。实盘之前务必运行2-4周模拟交易。
FreqAI模型需要定期重新训练。 如果市场制度转换(例如从牛市到熊市),模型的预测可能会下降直到重新训练。默认的1小时重训练窗口适用于大多数情况。
机器学习不是魔法。 FreqAI有帮助但并不能保证盈利。垃圾进,垃圾出 —— 糟糕的特征工程无论算法如何都会产生糟糕的预测。
FreqAI的资源占用显著。 运行10+交易对的FreqAI和神经网络模型需要2-4GB RAM和大量CPU。别指望在$3/月的VPS上运行这个。
做空支持因交易所而异。 现货市场不支持做空。对于做空策略,你需要支持合约的连接器(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 的类并实现 fit 和 predict 方法。你可以使用任何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星标、全面的文档和活跃的社区,它以零成本为你提供机构级工具。
你的下一步:
- 在 Binance 或 OKX 注册 并创建API密钥
- 使用上方Docker快速指南部署 Freqtrade
- 用你的策略进行2-4周模拟交易
- 运行超参数优化 来调整参数
- 实盘交易 每笔交易风险1-2%
- 探索AI信号 通过 Minara 获取高级ML预测
加入我们的开发者Telegram社区:t.me/dibi8developers —— 我们每天讨论机器人策略、FreqAI模型调优和生产环境部署。
来源与延伸阅读 #
- Freqtrade 官方文档
- Freqtrade GitHub 仓库
- FreqAI 文档
- Freqtrade 策略仓库
- CCXT 交易所库
- Optuna 超参数框架
- LightGBM 文档
- Binance API 文档
推荐部署与基础设施 #
上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:
- DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
- HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。
Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。
联盟营销披露 #
本指南包含 Binance、OKX 和 Minara 的联盟链接。如果你通过这些链接注册,我们会获得佣金,你不会产生额外费用。这支持我们的开源文档工作。我们只推荐我们积极使用和测试的工具。
💬 留言讨论