之前的文章我们讲了如果在debian上部署1pannel,然后用docker来安装开源的量化机器人Freqtrade,但是很多小伙伴安装好了以后,完全不懂的如何使用,看起来也比较负责。 但是没关系,兄弟,没那么难的。
这一贴,我们来讲Freqtrade的核心,文件结构,我们深入到 /opt/freqtrade/ft_userdata 目录下,逐个剖析核心文件的内部构造。
核心一:config.json (静态配置文件)
这是机器人的环境参数。它是一个标准的 JSON 对象。你以后 80% 的改动都在这里。
我们要关注它里面具体的关键 Key-Value:
{
"max_open_trades": 3, // 【并发数】允许同时持仓几个币?
"stake_currency": "USDT", // 【计价单位】用什么结算?(通常是 USDT)
"stake_amount": "unlimited", // 【单笔资金】每次买多少?
// "unlimited" = 总资金 / max_open_trades (自动计算)
// 数字 (e.g., 100) = 固定每次买 100 U
"dry_run": true, // 【模式开关】true=模拟盘(假钱),false=实盘(真钱)
"dry_run_wallet": 1000, // 【模拟本金】如果是模拟盘,初始给你多少假钱?
"exchange": {
"name": "binance", // 【交易所】去哪里交易?
"key": "", // 【API Key】实盘必填
"secret": "", // 【API Secret】实盘必填
"pair_whitelist": [ // 【白名单】只允许看这几个币
"BTC/USDT",
"ETH/USDT"
]
},
"entry_pricing": { ... }, // 【挂单价格】买入是挂市价单(market)还是限价单(limit)?
"exit_pricing": { ... } // 【挂单价格】卖出是挂市价单还是限价单?
}
-
它的地位: 全局常量。
-
修改后果: 修改后必须重启机器人 (Reload Config) 才会生效。
-
常见坑: JSON 格式错误(少逗号、多括号)会导致机器人直接启动失败。
核心二:strategies/SampleStrategy.py (动态逻辑文件)
这是机器人的大脑。它是一个 Python 类(Class),继承自 IStrategy。 打开这个文件,你只需要看懂四个核心函数,它们对应量化交易的四个步骤:
(1) minimal_roi (静态止盈表)
这是一个字典,定义了“赚多少就跑”的逻辑。
minimal_roi = {
"60": 0.01, # 持仓超过60分钟,只要赚1%就卖
"30": 0.02, # 持仓超过30分钟,要赚2%才卖
"0": 0.04 # 刚买入(0分钟),必须暴涨4%才卖
}
(2) stoploss (统一止损)
stoploss = -0.10 # 亏损达到 10% 无条件触发市价止损
(3) populate_indicators (计算指标 – 数据预处理)
这里利用 pandas 和 talib 库计算技术指标,例如:
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# 计算 RSI,并存入 dataframe 的 'rsi' 列
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
# 计算 MACD
macd = ta.MACD(dataframe)
dataframe['macd'] = macd['macd']
return dataframe
(4) populate_entry_trend (买入信号 – 开单逻辑)
这里写 if...then 逻辑,决定什么时候买。
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(dataframe['rsi'] < 30) & # 条件1:RSI 小于 30 (超卖)
(dataframe['volume'] > 0) # 条件2:有成交量
),
'enter_long'] = 1 # 满足条件,标记为“买入”
return dataframe
-
它的地位: 运行时逻辑。
-
执行频率: 每一根 K 线收盘时(比如每 5 分钟)执行一次。
-
修改后果: 修改后 Reload,机器人会立即应用新逻辑到下一根 K 线。
核心三:tradesv3.sqlite (持久化存储)
这是一个二进制的 SQLite 数据库文件。
-
里面存了什么?
-
trades表:每一笔历史订单(买入时间、价格、卖出时间、利润)。 -
orders表:每一次挂单的详细状态。
-
-
不要做的事: 严禁手动编辑它!也不要用文本编辑器打开它(会显示乱码)。
-
如果删了它:
-
模拟盘 (Dry-run): 没事,大不了记录清零,重新开始玩。
-
实盘 (Live): 灾难! 机器人会忘记它在交易所里还持有仓位,结果就是它不会去卖出那些币,你会一直被套住。
-
核心四:user_data/data/ (历史数据缓存)
当你运行 download-data 命令时,数据就存这儿。
-
结构:
user_data/data/binance/BTC_USDT-5m.json.gz -
内容: 压缩的 JSON 文件,包含了过去每一根 K 线的 开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)。
-
用途: 仅用于回测 (Backtesting)。实盘交易时,机器人是直接通过 API 问币安要最新数据的,不看这里。
数据是如何流动的(举个🌰):

这一贴看完了,请你用1pannel打开你的FreqTrade文件,看一下结构,对照着这个贴,看看能不能找到。











没有回复内容