Skip to article frontmatterSkip to article content
Freqtrade 基础指南

Freqtrade 基础

了解 Freqtrade 的基本概念和工作原理

本页为你介绍 Freqtrade 的基本概念及其工作原理。

Freqtrade 术语

手续费处理

Freqtrade 的所有利润计算均包含手续费。

交易对命名

Freqtrade 遵循 ccxt 命名规范。 在错误的市场使用错误的命名方式,通常会导致机器人无法识别该交易对,报错 "this pair is not available"

现货交易对命名

现货交易对命名为 base/quote(如 ETH/USDT)。

合约交易对命名

合约交易对命名为 base/quote:settle(如 ETH/USDT:USDT)。

机器人执行逻辑

dry-run 或实盘模式启动 freqtrade(使用 freqtrade trade)会启动机器人并进入主循环。

这也会运行 bot_start() 回调。

默认情况下,机器人循环每隔几秒运行一次(由 internals.process_throttle_secs 控制),执行以下操作:

该循环会不断重复,直到机器人被停止。

Freqtrade 机器人主循环流程图

主循环执行流程

流程图图片

关键步骤说明

1. 数据准备阶段

2. 策略分析阶段

3. 订单管理阶段

4. 持仓管理阶段

5. 开仓管理阶段

6. 循环控制

重要回调函数

回调函数执行时机用途
bot_loop_start()每次循环开始初始化或清理工作
populate_indicators()策略分析时计算技术指标
populate_entry_trend()策略分析时生成进场信号
populate_exit_trend()策略分析时生成出场信号
order_filled()订单成交时处理成交事件
adjust_order_price()订单超时时调整订单价格
confirm_trade_entry()开仓前确认开仓操作
confirm_trade_exit()出场前确认出场操作
adjust_trade_position()持仓调整时调整持仓大小

配置参数

这个流程图清晰地展示了 Freqtrade 机器人如何通过持续的主循环来管理交易,确保策略能够及时响应市场变化并执行相应的交易操作。

回测 / 超参数优化执行逻辑

回测超参数优化 只执行上述部分逻辑,因为大多数交易操作都是完全模拟的。

实盘或 DryRun 与回测的区别

通过对比回测逻辑和正常主循环逻辑,我发现了以下主要差异:

主要差异分析

1. 数据加载方式

2. 初始化调用

3. 指标计算频率

4. 信号计算频率

5. 时间处理方式

6. 订单处理

7. 价格确定

8. 回调函数调用时机

关键差异总结

方面回测模式正常循环模式
数据来源历史数据实时数据
处理频率按 K 线按时间间隔
订单执行模拟成交真实成交
价格机制基于 K 线价格基于实时价格
时间精度K 线级别毫秒级别
资源消耗一次性计算持续计算

重要影响

  1. 性能差异: 回测一次性处理所有数据,而正常循环持续处理
  2. 准确性差异: 回测基于历史数据,正常循环基于实时市场
  3. 延迟差异: 回测无网络延迟,正常循环有网络和交易所延迟
  4. 滑点差异: 回测通常假设无滑点,正常循环有真实滑点

这些差异解释了为什么回测结果与实际交易结果可能存在显著差异。