Freqtrade 入门指南:术语、执行逻辑与回测原理

·

想在加密货币量化赛道快人一步?你需要先从 Freqtrade 的关键词汇、执行流程与回测原理开始。全文约 1,600 字,手把手梳理策略开发到数据验证的每一个环节。

一、关键词速览

核心关键词:交易策略、BTC/USDT、时间周期、技术指标、回测、已实现利润、期货命名、OHLCV 数据、Hyperopt、止损止盈


二、核心术语拆解

术语一句话解释实操场景
策略用代码告诉机器人“何时买、何时卖”的交易逻辑本地 MyStrategy.py 里写逻辑
交易对交易市场中的资产组合,如 BTC/USDT现货用 ETH/USDT,期货需写成 ETH/USDT:USDT
时间周期蜡烛图的 K 线粒径,比如 5m、1h、1d日内策略常用 5m–15m,波段策略取 1h–4h
未成交订单 vs. 交易订单:挂单等待成交;交易:仓位已开,利润波动UI 中分别用 Open Orders 与 Trades 标签展示
已实现利润已平仓、落袋为安的收益未实现利润 相加得到 总利润
限价单 & 市价单限价单:指定价格成交;市价单:立即撮合高频量化通常限价,低频风控可市价
💡 省钱小贴士:总利润计算自动包含交易所手续费,实盘还能识别 BNB 折扣,无需手动扣除。

三、交易对的命名惯例

  1. 现货格式BASE/QUOTE
    例:XRP/USDTBTC/USDC
    精简、无后缀,简单直观。
  2. 期货格式BASE/QUOTE:SETTLE
    例:ETH/USDT:USDTADA/USD:USD
    SETTLE 表示结算币种,万不可省,否则机器人会报“交易对不可用”。

👉 一站式查看更多交易对命名实例与误区


四、机器人“心跳”揭秘:迭代循环做了什么?

4.1 触发条件

运行 freqtrade trade(实盘)或 freqtrade backtesting/hyperopt(回测/优化)即开启循环。

4.2 每一步的细节

1. 从本地持久化读取未平仓交易
2. 计算可交易的交易对列表
3. 下载全量交易对的 OHLCV 数据(只在下一个 `process_throttle_secs` 间隔后更新)
4. 运行 bot_loop_start():策略层面的全局初始化
5. 扫描所有交易对:
   ├── populate_indicators()   : 计算技术指标
   ├── populate_entry_trend()  : 产生开仓信号
   └── populate_exit_trend()   : 产生平仓信号
6. 管理开放订单:
   ├── check_entry_timeout()   : 入场超时保护
   ├── check_exit_timeout()    : 出场超时保护
   ├── adjust_entry_price()    : 动态调单
7. 验证现有仓位:
   ├── 止损(止损单 / custom_stoploss())
   ├── ROI、出场信号、custom_exit()
   ├── confirm_trade_exit() 确保允许平仓
   └── adjust_trade_position() 重新加仓或减仓
8. 检查槽位(max_open_trades)
9. 为每个入场信号执行:
   ├── confirm_trade_entry()
   ├── custom_entry_price()
   ├── leverage() 确定杠杆
   ├── custom_stake_amount() 确定仓位大小
   └── 下入场订单

循环每秒或每几秒重启一次,直到用户手动 Ctrl+C 关闭。


五、回测 / Hyperopt 怎么做?

与实时盘不同,回测把全部历史数据一次性加载,在蜡烛级别模拟交易:

注意
回测不会触发 check_entry_timeout() 等高频回调,因此真机环境需时刻关注撮合延迟差异,防止 回测漂移


六、常见疑问 FAQ

  1. Q:如果没有 GPU 能否 Hyperopt?
    A:可以,Freqtrade 依赖 CPU 并行,8 线程以上即可跑出有效结果。
  2. Q:策略运行一段时间后 MA 指标迟滞怎么办?
    A:在 populate_indicators() 中补充提前重计算的缓存逻辑,或使用 talib 加速库。
  3. Q:回测忘记写 fees,会亏多少?
    A:默认已含交易所最低费率;忽略自定义会低估 已实现利润 1–2%,策略不改变误差比例。
  4. Q:leverage() 返回 0 有什么风险?
    A:会触发强制平仓:实际杠杆为 0 意味着市价下单 0%,仓位无法建立,造成信号空转。
  5. Q:现货与期货的策略能共用一个文件吗?
    A:只要交易对命名无误并且逻辑兼容即可;建议在 __init__ 做市场检测,针对不同市场增减出场条件。
  6. Q:修改策略后是否需要重新下载 OHLCV?
    A:策略逻辑变更不影响缓存文件;只当新添交易对或改变时间周期才需补充下载。

👉 快速搭建本地数据仓库并避免重复下载


七、避坑清单(干货)


八、小结:一步一步落地

  1. 熟悉上面 10 余个高频关键词,随手写在注释里。
  2. 选 1–2 个核心交易对(如 BTC/USDTETH/USDT),用现货起步,初步验证买卖点。
  3. 本地交叉验证 5m & 1h 周期,确认 时间周期 不影响指标解释权。
  4. fretrade backtesting 对比三次费率、杠杆差异,把 总利润 误差控制在 2% 内。
  5. 进入实盘后,日志等级调回 INFO,再逐条核对 已实现利润 与交易所对账单是否一致。

Freqtrade 并非魔法,但处理好命名、费率、生命周期三大环节,就能让策略在真机里同频回测,稳稳跑赢 高波动加密市场。祝你早日实现“无人值守也能睡后盈利”!