安装
下载 freqtrade :
git clone https://github.com/freqtrade/freqtrade.git cd freqtrade
|
创建并进入虚拟环境:
conda create --name freqtrade python=3.12 conda activate freqtrade
|
安装依赖:
python3 -m pip install --upgrade pip python3 -m pip install -r requirements.txt python3 -m pip install -e .
|
配置
freqtrade new-config --config user_data/config.json
|
网络问题
"ccxt_async_config": { "aiohttp_proxy": "http://127.0.0.1:7890", "timeout": 60000, "session_args": {"family": 2} }
|
下载数据
以交易对 SOL/USDT:USDT (代表 SOL U本位永续合约)为例:
freqtrade download-data --pairs SOL/USDT:USDT --exchange binance
|
这样会默认下载最近 30 天的 1m 和 5m 周期数据。可以用 --timerange 20200101- 指定起始日期,用 --days 20 指定天数,或用 -t 15m 指定 K线周期。
回测
freqtrade backtesting --config user_data/config.json --strategy SampleStrategy
|
策略编写
策略是一个 Python 类,用于定义交易逻辑,遵循以下结构:
IStrategy ├─ 基本参数(timeframe / stoploss / minimal_roi / 杠杆等) ├─ populate_indicators() ← 计算指标 ├─ populate_entry_trend() ← 开仓条件 └─ populate_exit_trend() ← 平仓条件
|
from freqtrade.strategy import IStrategy from pandas import DataFrame import talib.abstract as ta class MyStrategy(IStrategy): timeframe = '15m' stoploss = -0.10 minimal_roi = {"0": 0.01} def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[(dataframe['rsi'] < 30),'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[(dataframe['rsi'] > 70),'exit_long'] = 1 return dataframe
|