Banner

Freqtrade

1天前

Freqtrade 上手教程

Freqtrade 上手建议按 “Docker 部署 → 初始化目录 → 配置最小 config → 下载数据 → 生成策略 → 回测 → 模拟盘 → WebUI 监控” 跑通闭环。

1. 环境准备

推荐用 Docker,避免 Python、TA-Lib、CCXT 等依赖冲突。

docker pull freqtradeorg/freqtrade:stable

然后创建工作目录:

mkdir -p ~/freqtrade-demo
cd ~/freqtrade-demo
mkdir -p user_data

2. 初始化 user_data

docker run --rm -it \
  -v $(pwd)/user_data:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  create-userdir --userdir user_data

成功后 user_data/ 下会出现:

user_data/
├── data/
├── logs/
├── strategies/
└── config.json(后续生成)

3. 写最小可用 config.json

先在 user_data/config.json 放一个能跑回测和模拟盘的最小配置:

{
  "$schema": "https://schema.freqtrade.io/schema.json",
  "max_open_trades": 1,
  "stake_currency": "USDT",
  "stake_amount": 100,
  "tradable_balance_ratio": 0.99,
  "fiat_display_currency": "USD",
  "timeframe": "5m",
  "dry_run": true,
  "trading_mode": "spot",
  "entry_pricing": {
    "price_side": "same",
    "use_order_book": false
  },
  "exit_pricing": {
    "price_side": "same",
    "use_order_book": false
  },
  "exchange": {
    "name": "binance",
    "key": "",
    "secret": "",
    "ccxt_config": {
      "enableRateLimit": true
    },
    "ccxt_async_config": {
      "enableRateLimit": true
    },
    "pair_whitelist": [
      "BTC/USDT"
    ],
    "pair_blacklist": []
  },
  "pairlists": [
    { "method": "StaticPairList" }
  ],
  "bot_name": "freqtrade",
  "initial_state": "stopped",
  "internals": {
    "process_throttle_secs": 5
  }
}

新手阶段建议:

  • 保持 "dry_run": true
  • 先用现货 spot
  • 只用 StaticPairList
  • 不要一开始就上合约、VolumePairList 或 order book 定价

4. 下载历史数据

docker run --rm -it \
  -v $(pwd)/user_data:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  download-data \
  --exchange binance \
  --pairs BTC/USDT \
  --timeframes 5m

成功后会生成类似:

user_data/data/binance/BTC_USDT-5m.feather

这步通过说明数据层已经通了。

5. 生成第一个策略

docker run --rm -it \
  -v $(pwd)/user_data:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  new-strategy \
  --strategy MyFirstStrategy \
  --template minimal \
  --userdir user_data

会生成:

user_data/strategies/MyFirstStrategy.py

新版模板可能不再提供 basic,用 minimal 更稳。

6. 写一个最小策略

打开 user_data/strategies/MyFirstStrategy.py,核心逻辑可以写成:

from freqtrade.strategy import IStrategy
from pandas import DataFrame
import talib.abstract as ta

class MyFirstStrategy(IStrategy):
    timeframe = "5m"

    minimal_roi = {
        "0": 0.1
    }

    stoploss = -0.1

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe["ma20"] = ta.SMA(dataframe["close"], timeperiod=20)
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (dataframe["close"] > dataframe["ma20"]),
            "enter_long",
        ] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (dataframe["close"] < dataframe["ma20"]),
            "exit_long",
        ] = 1
        return dataframe

这个策略只是验证流程:价格上穿 20 日均线做多,下穿平仓。不要把它当成成熟策略。

7. 跑回测

docker run --rm -it \
  -v $(pwd)/user_data:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  backtesting \
  --config user_data/config.json \
  --strategy MyFirstStrategy

回测会读取 config 里的交易所、交易对和时间周期,自动匹配本地 .feather 数据文件。

8. 启动模拟盘

确认回测不报错后,可以跑模拟盘:

docker run --rm -it \
  -v $(pwd)/user_data:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  trade \
  --config user_data/config.json \
  --strategy MyFirstStrategy

只要 dry_run 仍是 true,就不会产生真实订单。

9. 打开 WebUI 监控

启动交易进程后,默认可以在浏览器访问:

http://localhost:8080

这里能看到持仓、成交记录、资金曲线和机器人状态。

如果端口冲突,可在 config 里调整 api_server 端口。

10. 推荐练习顺序

  1. 跑通 create-userdir
  2. 配置最小 config.json
  3. 下载 BTC/USDT 5m 数据
  4. 生成 MyFirstStrategy
  5. 跑通回测
  6. 启动 dry_run 模拟盘
  7. 打开 WebUI 观察信号
  8. 再逐步加入止损、止盈、多交易对和 Telegram 通知

11. 常见坑

问题原因处理
回测没数据未下载历史数据先跑 download-data
策略不交易没有信号或数据不足检查 enter_long/exit_long
启动报错config 字段缺失用上面最小配置先跑通
端口冲突8080 被占用修改 api_server 端口
交易所连不上API Key 权限/网络问题先用 dry_run + 公开数据
过拟合Hyperopt 跑太狠留样本外数据验证

实盘前至少跑几周模拟盘,并确认日志、止损、撤单和断网恢复都正常。

5