Freqtrade - Configuration 所有配置大全
目录
一、The Freqtrade configuration file 配置文件
1. Environment variables 环境变量
2. Multiple configuration files 多个配置文件
二、Editor autocomplete and validation 编辑器自动完成和验证
三、Configuration parameters 配置参数
1. Configuration option prevalence 配置选项的流行度
2. Parameters table 参数表
3. Parameters in the strategy 策略中的参数
4. Configuring amount per trade 配置每笔交易的金额
4.1 Minimum trade stake 最低交易质押
4.2 Dry-run wallet 试运行钱包
4.3 Tradable balance 可交易余额
4.4 Assign available Capital 分配可用资本
4.5 Amend last stake amount 修改最后的质押金额
4.6 Static stake amount 静态质押金额
4.7 Dynamic stake amount 动态质押金额
4.8 Dynamic stake amount with position adjustment 动态质押金额与位置调整
四、Prices used for orders 用于订单的价格
1. Entry price 入场价格 ¶
1.1 Enter price side 进入价格方 ¶
1.2 Entry price with Orderbook enabled 启用订单簿的入场价格 ¶
1.3 Entry price without Orderbook enabled 未启用订单簿的入场价格 ¶
1.4 Check depth of market 检查市场深度 ¶
2. Exit price退出价格 ¶
2.1 Exit price side 退出价格端 ¶
2.2 Exit price with Orderbook enabled 启用订单簿的退出价格 ¶
2.3 Exit price without Orderbook enabled 未启用订单簿的退出价格 ¶
3. Market order pricing 市价单定价 ¶
五、Further Configuration details 更多配置详情
1.Understand minimal_roi 了解 minimal_roi¶
2. Understand force_entry_enable 了解 force_entry_enable¶
3. Ignoring expired candles 忽略过期的蜡烛 ¶
4. Understand order_types 了解 order_types¶
5. Understand order_time_in_force 了解 order_time_in_force¶
5.1 time_in_force 配置 ¶
6. Fiat conversion 法币转换 ¶
哪些值可用于 fiat_display_currency?¶
Coingecko Rate limit problems; Coingecko 速率限制问题 ¶
六、Consuming exchange Websockets 使用交易所Websocket
七、Using Dry-run mode 使用试运行模式
1. Considerations for dry-run 试运行的注意事项 ¶
八、Switch to production mode 切换到生产模式
1. Setup your exchange account 设置您的交易所账户 ¶
2. To switch your bot in production mode 在生产模式下切换机器人 ¶
九、Using a proxy with Freqtrade 在 Freqtrade 中使用代理
1. Proxy exchange requests 代理交易所请求 ¶
Freqtrade 具有许多可配置的功能和可能性。默认情况下,这些设置是通过配置文件配置的(见下文)。
一、The Freqtrade configuration file 配置文件
机器人在其作期间使用一组配置参数,这些参数都符合机器人配置。它通常从文件(Freqtrade 配置文件)中读取其配置。
默认情况下,机器人从位于当前工作目录中的 config.json
文件加载配置。
您可以使用 -c/--config
命令行选项指定机器人使用的不同配置文件。
如果您使用快速入门方法安装机器人,则安装脚本应该已经为您创建了默认配置文件 (config.json
)。
如果未创建默认配置文件,建议使用来 freqtrade new-config --config user_data/config.json
生成基本配置文件。
补充:一般是这样,
# Step 1 - Initialize user folder
freqtrade create-userdir --userdir user_data# Step 2 - Create a new configuration file
freqtrade new-config --config user_data/config.json
Freqtrade 配置文件将以 JSON 格式编写。
除了标准 JSON 语法之外,您还可以在配置文件中使用单行// ...
和多行 /* ... */
注释,并在参数列表中使用尾随逗号。
如果您不熟悉 JSON 格式,请不要担心 - 只需使用您选择的编辑器打开配置文件,对您需要的参数进行一些更改,保存更改,最后重新启动机器人,或者,如果它之前已停止,则使用您对配置所做的更改再次运行它。机器人在启动时验证配置文件的语法,并在编辑时出现任何错误时向您发出警告,并指出有问题的行。
1. Environment variables 环境变量
通过环境变量在 Freqtrade 配置中设置选项。这优先于配置或策略中的相应值。
环境变量必须以 FREQTRADE__
为前缀才能加载到 freqtrade 配置中。
__
用作级别分隔符,因此使用的格式应对应于 FREQTRADE__{section}__{key}
。因此 - 定义为 的 export FREQTRADE__STAKE_AMOUNT=200
环境变量将生效 {stake_amount: 200}
。
补充,通过export设置的,都是临时生效的。
一个更复杂的例子可能是 export FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
对交换密钥保密。这会将值移动到配置的 exchange.key
部分。使用此方案,所有配置设置也将作为环境变量提供。
也就是说,你通过上述设置后,就配置了交易所的密钥,只有需要真实交易时使用。
请注意,环境变量将覆盖配置中的相应设置,但命令行参数将始终获胜。
常见示例:
FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid>
FREQTRADE__TELEGRAM__TOKEN=<telegramToken>
FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>
Json 列表被解析为 json - 因此您可以使用以下内容来设置对列表:
export FREQTRADE__EXCHANGE__PAIR_WHITELIST='["BTC/USDT", "ETH/USDT"]'
即:可以不需要去config.json中修改,这样改也是可以的。
注意
检测到的环境变量在启动时被记录下来 - 因此,如果您无法根据配置找到值不符合您认为的值的原因,请确保它不是从环境变量加载的。
验证组合结果
您可以使用 show-config 子命令查看最终的组合配置。
加载顺序
环境变量在初始配置后加载。因此,您无法通过环境变量提供配置的路径。为此请使用 --config path/to/config.json
。这在某种程度上也适用于 user_dir
。虽然可以通过环境变量设置用户目录 - 配置不会从该位置加载。
解释:先加载config.json,再加载环境变量(会覆盖config.json的)。
2. Multiple configuration files 多个配置文件
解释:可以配置多个文件,比如一个配置是通用文件,第二个配置文件专门放比较机密的api配置等。
机器人可以指定和使用多个配置文件,或者机器人可以从流程标准输入流中读取其配置参数。
您可以在 add_config_files
中指定其他配置文件。此参数中指定的文件将被加载并与初始配置文件合并。这些文件是相对于初始配置文件解析的。这类似于使用多个 --config
参数,但使用更简单,因为您不必为所有命令指定所有文件。
验证组合结果
您可以使用 show-config 子命令查看最终的组合配置。
使用多个配置文件对机密保密
您可以使用包含密钥的第二个配置文件。 这样,您就可以共享您的“主”配置文件,同时仍然为自己保留您的 API 密钥。 第二个文件应仅指定要覆盖的内容。如果一个键位于多个配置中,则“最后指定的配置”优先(在上面的示例中,config-private.json
)。
对于一次性命令,您还可以通过指定多个“--config”参数来使用以下语法。
freqtrade trade --config user_data/config1.json --config user_data/config-private.json <...>
下面的示例等效于上面的示例 - 但配置中有 2 个配置文件,以便于重用。
"add_config_files": ["config1.json","config-private.json"
]
freqtrade trade --config user_data/config.json <...>
配置冲突处理
如果在 config.json
和 config-import.json
中都发生相同的配置设置,则父配置优先。在以下情况下,合并后 max_open_trades
将为 3 - 因为可重用的“导入”配置覆盖了此键。
{"max_open_trades": 3,"stake_currency": "USDT",
"add_config_files": ["config-import.json"]
}
{"max_open_trades": 10,"stake_amount": "unlimited",
}
生成的组合配置:
{"max_open_trades": 3,"stake_currency": "USDT","stake_amount": "unlimited"
}
如果多个文件位于 add_config_files
部分,则它们将被假定为处于相同的级别,最后一次出现会覆盖较早的配置(除非父级已经定义了这样的键)。
我的总结:有父子关系的,父配置优先;同一级别的,以最后一次出现为准。
二、Editor autocomplete and validation 编辑器自动完成和验证
(填充默认值,检查类型、范围是否准确等)
如果您使用的是支持 JSON 模式的编辑器,则可以使用 Freqtrade 提供的模式,通过在配置文件顶部添加以下行来获取配置文件的自动完成和验证:
{"$schema": "https://schema.freqtrade.io/schema.json",
}
打开我们的config.json,可以发现确实如此。
开发版本
开发模式可用 https://schema.freqtrade.io/schema_dev.json
- 尽管我们建议坚持使用稳定版本以获得最佳体验。
三、Configuration parameters 配置参数
下表将列出所有可用的配置参数。
Freqtrade 还可以通过命令行 (CLI) 参数加载许多选项(有关详细信息,请查看命令 --help
输出)。
1. Configuration option prevalence 配置选项的流行度
prevalence:指的是某个选项或配置在系统中的普遍使用或存在程度。
所有选项的流行率如下:
- CLI 参数覆盖任何其他选项
- 环境变量
- 配置文件按顺序使用(最后一个文件获胜)并覆盖策略配置。
- 仅当策略配置未通过配置或命令行参数设置时才使用。这些选项在下表中标有策略覆盖。
2. Parameters table 参数表
必需参数标记为必需 ,(换句话说,没写必填的,初学者可以先不用看)这意味着需要以一种可能的方式设置它们。
参数 | 描述 |
---|---|
max_open_trades | 必填。 您的机器人被允许拥有的未平结交易数量。每对只能进行一次未平仓交易,因此您的货币对列表的长度是另一个可能适用的限制。如果 -1,则忽略它(即可能无限的未平仓交易,受货币对列表限制)。 更多信息如下 。 策略覆盖 。 数据类型: 正整数或 -1。 |
stake_currency | 必填。 用于交易的加密货币。 (比如"USDT") |
stake_amount | 必填。 您的机器人将在每笔交易中使用的加密货币数量。将其设置为 “无限制” 以允许机器人使用所有可用余额。 更多信息如下 。数据类型: 正浮点或 “无限” 。 |
tradable_balance_ratio | 机器人允许交易的总账户余额的比率。 更多信息如下 。 默认为 0.99 表示99%。数据类型: 0.1 到 1.0 之间的正浮点。 |
available_capital | 机器人的可用启动资金。在同一交易所账户上运行多个机器人时很有用。 更多信息如下 。 数据类型: 正浮点。 |
amend_last_stake_amount | 如有必要,使用减少的最后赌注金额。 更多信息如下 。 默认为 false 。数据类型: 布尔 |
last_stake_amount_min_ratio | 定义必须留下并执行的最小质押金额。仅适用于最后一个赌注金额,当它被修改为减少的值时(即,如果 amend_last_stake_amount 设置为 true )。 更多信息如下 。默认为 0.5 。数据类型: 浮点(比率) |
amount_reserve_percent | 以最小配对赌注金额保留一些金额。机器人在计算最小货币对质押金额时将保留 amount_reserve_percent + 止损值,以避免可能的交易被拒绝。默认为 0.05 (5%)。数据类型: 正浮点作为比率。 |
timeframe | 使用的时间范围(例如 1m 、5m 、15m 、30m 、1h ......通常在配置中缺失,并在策略中指定。 策略覆盖 。数据类型: 字符串 |
fiat_display_currency | 用于显示您的利润的法定货币。 更多信息如下 。 数据类型: 字符串 |
dry_run | 必填。 定义机器人是否必须处于试运行模式或生产模式。 (这个很重要,就是模拟跑还是真实跑,默认为true表示模拟) |
dry_run_wallet | 为在试运行模式下运行的机器人使用的模拟钱包定义以质押货币为单位的起始金额。 更多信息如下 (意思是模拟账户初始金额) |
cancel_open_orders_on_exit | 当发出 (补充:true 停止时,机器人会自动取消所有挂单。 false 停止时,挂单继续留在交易所上,可能以后被成交) |
process_only_new_candles | 仅当新蜡烛到达时才启用指标处理。如果 false,则每个循环填充指标,这将意味着同一根蜡烛被处理多次,从而产生系统负载,但可能对您的策略有用,具体取决于报价数据,而不仅仅是蜡烛。 策略覆盖 。 (
一般为true) |
minimal_roi | 必填。 将阈值设置为机器人将用于退出交易的比率。 更多信息如下 。 策略覆盖 。 (虽然这里是必填,但可以不在config.json中填,后面可以在策略代码中配置,见后文截图) |
stoploss | 必填。 值为机器人使用的止损比率。更多详细信息,请参阅止损文档 。 策略覆盖 。 (同理上面) |
trailing_stop | 启用追踪止损(基于配置或策略文件中的 (Trailing stop(移动止损、追踪止损)是一种动态止损订单。就是“跟着利润跑”的止损,让你“亏有限,赚无限”。) |
trailing_stop_positive | 一旦达到利润,就会改变止损。更多详细信息,请参阅止损文档 。 策略覆盖 。 数据类型: 浮 |
trailing_stop_positive_offset | 何时应用 trailing_stop_positive 的偏移量。应为正数的百分比值。更多详细信息,请参阅止损文档 。 策略覆盖 。默认为 0.0 (无偏移)。数据类型: 浮 |
trailing_only_offset_is_reached | 仅在达到偏移量时应用追踪止损。 止损文档 。 策略覆盖 。 默认为 false 。数据类型: 布尔 |
fee | 回测/试运行期间使用的费用。通常不应配置,这会使 freqtrade 回退到交易所获取对应费用。设置为比率(例如 0.001 = 0.1%)。每笔交易收取两次费用,买入时一次,卖出时一次。 (默认会自动用交易所返回的手续费数值,更准确。) |
futures_funding_rate | 当交易所无法获得历史资金费率时,用户指定的资金费率。这不会覆盖实际的历史汇率。建议将其设置为 0,除非您正在测试特定代币并且您了解资金费率将如何影响 freqtrade 的利润计算。 更多信息在这里 默认为 None 。数据类型: 浮 |
trading_mode | 指定您是要定期交易、使用杠杆交易还是交易价格源自匹配加密货币价格的合约。 利用文档 。 (spot为现货交易) |
margin_mode | 当使用杠杆进行交易时,这决定了交易者拥有的抵押品是否将共享或隔离到每个交易对杠杆文件中。 数据类型: 字符串 |
liquidation_buffer | 一个比率,指定在强平价格和止损之间设置多大的安全网,以防止头寸达到强平价格杠杆文件 。 默认为 0.05 。数据类型: 浮 |
未填充超时 | |
unfilledtimeout.entry | 必填。 机器人将等待未成交的入场订单完成多长时间(以分钟或秒为单位),之后订单将被取消。 策略覆盖 。 (这种 |
unfilledtimeout.exit | 必填。 机器人将等待未成交的退出订单完成多长时间(以分钟或秒为单位),之后只要有信号,订单就会被取消并以当前(新)价格重复。 策略覆盖 。 数据类型: 整数 |
unfilledtimeout.unit | 在 unfilledtimeout 设置中使用的单位。注意:如果将 unfilledtimeout.unit 设置为“seconds”,则“internals.process_throttle_secs”必须低于或等于 timeout 策略覆盖 。 默认为 “分钟” 。数据类型: 字符串 |
unfilledtimeout.exit_timeout_count | 退出订单可以超时多少次。一旦达到此超时次数,就会触发紧急出口。0 表示禁用和允许无限制的订单取消。 策略覆盖 。 默认为 0 。数据类型: 整数 |
定价 | |
entry_pricing.price_side | 选择机器人应查看的价差一侧以获得入场率。 更多信息如下 。 默认为 “same” 。数据类型: 字符串either ask , bid , same or other ( 要价 、 买价 、 相同 或其他)。 |
entry_pricing.price_last_balance | 必填。 插值投标价格。更多信息如下 。 |
entry_pricing.use_order_book | 启用使用订单簿分录中的费率进行输入。 默认为 true 。数据类型: 布尔 |
entry_pricing.order_book_top | 机器人将使用订单簿“price_side”中的前 N 汇率进入交易。即值为 2 将允许机器人选择订单簿条目中的第二个条目。 默认为 1 。数据类型: 正整数 |
entry_pricing. check_depth_of_market.enabled | 如果买单簿中满足买单和卖单的差额,则不要输入。 检查市场深度 。 默认为 false 。数据类型: 布尔 |
entry_pricing. check_depth_of_market.bids_to_ask_delta | 在订单簿中找到的买单和卖单的差额比率。值低于 1 表示卖单规模较大,而值大于 1 表示买单规模较大。 检查市场深度 默认为 0 。数据类型: 浮点(比率) |
exit_pricing.price_side | 选择机器人应查看的价差一侧以获得退出率。 更多信息如下 。 默认为 “same” 。数据类型: 字符串( 要价 、 买价 、 相同 或其他)。 |
exit_pricing.price_last_balance | 插入退出价格。更多信息如下 。 |
exit_pricing.use_order_book | 使用订单簿退出启用未平仓交易的退出。 默认为 true 。数据类型: 布尔 |
exit_pricing.order_book_top | 机器人将使用订单簿“price_side”中的前 N 费率退出。即值 2 将允许机器人在订单簿退出中选择第二个要价率 默认为 1 。数据类型: 正整数 |
custom_price_max_distance_ratio | 配置当前价格与自定义进入或退出价格之间的最大距离比。 默认为 0.02 2%)。数据类型: 正浮点 |
订单/信号处理 | |
use_exit_signal | 除了 minimal_roi 之外,还使用策略产生的退出信号。将此设置为 false 将禁用 “exit_long” 和 “exit_short” 列的使用。对其他退出方法(止损、投资回报率、回调)没有影响。 策略覆盖 。默认为 true 。数据类型: 布尔 |
exit_profit_only | 等到机器人到达 exit_profit_offset 后再做出退出决定。 策略覆盖 。默认为 false 。数据类型: 布尔 |
exit_profit_offset | 退出信号仅在此值以上处于活动状态。仅与 exit_profit_only=True 结合使用时才有效。 策略覆盖 。默认为 0.0 。数据类型: 浮点(比率) |
ignore_roi_if_entry_signal | 如果入场信号仍然有效,请勿退出。此设置优先于 minimal_roi 和 use_exit_signal 。 策略覆盖 。默认为 false 。数据类型: 布尔 |
ignore_buying_expired_candle_after | 指定不再使用买入信号之前的秒数。 数据类型: 整数 |
order_types | 根据作配置订单类型 ("entry" , "exit" , "stoploss" , "stoploss_on_exchange" ).(“ 进入”、“ 退出”、“ 止损”、“ stoploss_on_exchange” )。 更多信息如下 。 策略覆盖 。数据类型: 字典 |
order_time_in_force | 配置进入和退出订单的有效时间。 更多信息如下 。 策略覆盖 。 数据类型: 字典 |
position_adjustment_enable | 使策略能够使用头寸调整(额外买入或卖出)。 更多信息在这里 。 策略覆盖 。 默认为 false 。数据类型: 布尔 |
max_entry_position_adjustment | 在第一个入场订单之上的每笔未平仓交易的最大额外订单。将其设置为 -1 可获得无限的额外订单。 更多信息在这里 。策略覆盖 。 默认为 -1 。数据类型: 正整数或 -1 |
Exchange 交换 (这里的Exchange交换 应该指交易所,下面是填一些交易所相关的东西) | |
exchange.name | 必填。 要使用的交换类的名称。 (比如币安 "binance") |
exchange.key | 用于交换的 API 密钥。仅在生产模式下时才需要。 保密,不公开披露。 数据类型: 字符串 |
exchange.secret | 用于交换的 API 密钥。仅在生产模式下时才需要。 保密,不公开披露。 数据类型: 字符串 |
exchange.password | 用于交换的 API 密码。仅当您处于生产模式以及对 API 请求使用密码的交换时才需要。 保密,不公开披露。 数据类型: 字符串 |
exchange.uid | 用于交换的 API uid。仅当您处于生产模式以及使用 uid 进行 API 请求的交换时才需要。 保密,不公开披露。 数据类型: 字符串 |
exchange.pair_whitelist | 机器人用于交易并在回测期间检查潜在交易的货币对列表。支持正则表达式对,如 (这个挺重要的,是你关心的交易对,比如 [ "BTC/USDT", "ETH/USDT" ] ) |
exchange.pair_blacklist | 机器人在交易和回测时必须绝对避免的货币对列表。 更多信息 。 数据类型: 列表 |
exchange.ccxt_config | 传递给两个 ccxt 实例(同步和异步)的其他 CCXT 参数。这通常是其他 ccxt 配置的正确位置。参数可能因交易所而异,并记录在 ccxt 文档中。请避免在此处添加交换密钥(改用专用字段),因为它们可能包含在日志中。 数据类型: 字典 |
exchange.ccxt_sync_config | 传递给常规(同步)ccxt 实例的其他 CCXT 参数。参数可能因交易所而异,并记录在 ccxt 文档中 数据类型: 字典 |
exchange.ccxt_async_config | 传递给异步 ccxt 实例的其他 CCXT 参数。参数可能因交易所而异,并记录在 ccxt 文档中 数据类型: 字典 |
exchange.enable_ws | 启用 Websockets 的使用进行交换。 (是否使用Websockets进行交易,Websockets速度比API方式更快更稳定) |
exchange.markets_refresh_interval | 重新加载市场的间隔(以分钟为单位)。 默认为 60 分钟。数据类型: 正整数 |
exchange.skip_open_order_update | 如果交易所导致问题,则在启动时跳过未平仓订单更新。仅与实时条件相关。 默认为 false 数据类型: 布尔 |
exchange.unknown_fee_rate | 计算交易费用时使用的回退值。这对于收取非交易货币费用的交易所很有用。此处提供的值将乘以“费用成本”。 默认为 无 数据类型:* float |
exchange.log_responses | 记录相关的交换响应。仅适用于调试模式 - 请谨慎使用。 默认为 false 数据类型: 布尔 |
exchange.only_from_ccxt | 阻止从 data.binance.vision 下载数据。将其保留为 false 可以大大加快下载速度,但如果该站点不可用,则可能会出现问题。 默认为 false 数据类型: 布尔 |
experimental.block_bad_exchanges | 已知不适用于 freqtrade 的块交换。保持默认值,除非您想测试该交换现在是否有效。 默认为 true 。数据类型: 布尔 |
插件 | |
pairlists | 定义要使用的一个或多个配对列表。 更多信息 。 默认为 StaticPairList 。数据类型: 词典列表 |
Telegram 电报(用来提醒的,适用国外用户) | |
telegram.enabled | 启用 Telegram 的使用。 数据类型: 布尔 |
telegram.token | 您的 Telegram 机器人令牌。仅当 telegram.enabled 为 true 时才需要。保密,不公开披露。 数据类型: 字符串 |
telegram.chat_id | 您的个人 Telegram 帐户 ID。仅当 telegram.enabled 为 true 时才需要。保密,不公开披露。 数据类型: 字符串 |
telegram.balance_dust_level | Dust-level 尘埃级别(以权益货币计)- 余额低于此值的货币将不会显示在 /balance 中。数据类型:float |
telegram.reload | 允许电报消息上的“重新加载”按钮。 默认为 true 。数据类型:* 布尔值 |
telegram.notification_settings.* | 详细的通知设置。有关详细信息,请参阅 telegram 文档 。 数据类型: 字典 |
telegram.allow_custom_messages | 通过 dataprovider.send_msg() 函数启用从策略发送 Telegram 消息。 数据类型: 布尔 |
Webhook 网络钩子 (Webhook 就是“反向 API”:不是你去轮询服务器要数据,而是服务器在事件发生时主动往你指定的 URL 扔一条 HTTP 请求,实时告诉你“出事了”。) | |
webhook.enabled | 启用 Webhook 通知的使用 数据类型: 布尔 |
webhook.url | Webhook 的 URL。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.entry | 进入时发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.entry_cancel | 在输入订单取消时发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.entry_fill | 在成交订单时发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.exit | 退出时要发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.exit_cancel | 退出订单取消时发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.exit_fill | 在退出订单成交时发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.status | 状态调用时要发送的有效负载。仅当 webhook.enabled 为 true 时才需要。有关更多详细信息,请参阅 Webhook 文档 。数据类型: 字符串 |
webhook.allow_custom_messages | 通过 dataprovider.send_msg() 函数启用从策略发送 Webhook 消息。 数据类型: 布尔 |
Rest API / FreqUI / 生产者-消费者 | |
api_server.enabled | 启用 API 服务器的使用。有关更多详细信息,请参阅 API 服务器文档 。 数据类型: 布尔 |
api_server.listen_ip_address | 绑定 IP 地址。有关更多详细信息,请参阅 API 服务器文档 。 数据类型:IPv4 的 |
api_server.listen_port | 绑定端口。有关更多详细信息,请参阅 API 服务器文档 。 数据类型: 介于 1024 和 65535 之间的整数 |
api_server.verbosity | 日志记录冗长。info 将打印所有 RPC 调用,而“error”将仅显示错误。数据类型: 枚举, 信息 或错误 。默认为 info 。 |
api_server.username | API 服务器的用户名。有关更多详细信息,请参阅 API 服务器文档 。 保密,不公开披露。 数据类型: 字符串 |
api_server.password | API 服务器的密码。有关更多详细信息,请参阅 API 服务器文档 。 保密,不公开披露。 数据类型: 字符串 |
api_server.ws_token | 消息 WebSocket 的 API 令牌。有关更多详细信息,请参阅 API 服务器文档 。 保密,不公开披露。 数据类型: 字符串 |
bot_name | 机器人的名称。通过 API 传递给客户端 - 可以显示以区分/命名机器人。 默认为 freqtrade 数据类型: 字符串 |
external_message_consumer | 启用生产者/消费者模式以了解更多详细信息。 数据类型: 字典 |
其他 | |
initial_state | 定义初始应用程序状态。如果设置为 stopped,则必须通过 /start RPC 命令显式启动机器人。默认为 stopped 。数据类型: 枚举,either running , paused or stopped 正在运行 、 暂停 或停止 |
force_entry_enable | 启用 RPC 命令强制进入交易。更多信息如下。 数据类型: 布尔 |
disable_dataframe_checks | 禁用检查从策略方法返回的 OHLCV 数据帧的正确性。仅在有意更改数据帧并了解您在做什么时使用。 策略覆盖 。 默认为 false 。数据类型: 布尔 |
internals.process_throttle_secs | 设置一个机器人迭代循环的进程限制或最小循环持续时间。单位为秒。 默认为 5 秒。数据类型: 正整数 |
internals.heartbeat_interval | 每 N 秒打印一次心跳消息。设置为 0 可禁用检测信号消息。 默认为 60 秒。数据类型: 正整数或 0 |
internals.sd_notify | 允许使用 sd_notify 协议告诉 systemd 服务管理器机器人状态的变化并发出保持活动 ping。有关更多详细信息,请参阅此处 。 数据类型: 布尔 |
strategy | 必填定义要使用的策略类。建议通过 (我们写了很多个策略,需要指定哪一个,用类名) |
strategy_path | 添加额外的策略查找路径(必须是目录)。 数据类型: 字符串 |
recursive_strategy_search | 设置为 true 以递归方式搜索策略 user_data/strategies 中的子目录。数据类型: 布尔 |
user_data_dir | 包含用户数据的目录。 (可以通过它进行修改数据目录) |
db_url | 声明要使用的数据库 URL。注意:如果 dry_run 为 true ,则默认为 sqlite:///tradesv3.dryrun.sqlite true,对于生产实例则 sqlite:///tradesv3.sqlite 。数据类型: 字符串,SQLAlchemy 连接字符串 |
logfile | 指定日志文件名。对 10 个文件使用滚动策略进行日志文件轮换,每个文件的限制为 1MB。 数据类型: 字符串 |
add_config_files | 其他配置文件。这些文件将被加载并与当前配置文件合并。这些文件是相对于初始文件进行解析的。 默认为 []。 数据类型: 字符串列表 |
dataformat_ohlcv | 用于存储历史蜡烛 (OHLCV) 数据的数据格式。 默认为 feather 。数据类型: 字符串 |
dataformat_trades | 用于存储历史交易数据的数据格式。 默认为 feather 。数据类型: 字符串 |
reduce_df_footprint | 将所有数字列重铸为 float32/int32,目的是减少 ram/disk 使用(并减少训练/推理时序回测/hyperopt 和 FreqAI)。 数据类型: 布尔。 默认值: False 。 |
log_config | 包含 python 日志记录日志配置的字典。 更多信息 数据类型:dict。 默认值: FtRichHandler |
3. Parameters in the strategy 策略中的参数
The following parameters can be set in the configuration file or strategy. Values set in the configuration file always overwrite values set in the strategy.
可以在配置文件或策略中设置以下参数。配置文件中设置的值始终覆盖策略中设置的值。
我的备注:如果同时存在的话,配置文件(优先级高)的值会覆盖策略的值。
我这里找出策略中的代码,里面也提到会被config.json覆盖。但如果config.json没有配置,则无所谓。
minimal_roi
timeframe
stoploss
max_open_trades
trailing_stop
trailing_stop_positive
trailing_stop_positive_offset
trailing_only_offset_is_reached
use_custom_stoploss
process_only_new_candles
order_types
order_time_in_force
unfilledtimeout
disable_dataframe_checks
use_exit_signal
exit_profit_only
exit_profit_offset
ignore_roi_if_entry_signal
ignore_buying_expired_candle_after
position_adjustment_enable
max_entry_position_adjustment
4. Configuring amount per trade 配置每笔交易的金额
有几种方法可以配置机器人将使用多少本金币来进入交易。所有方法都遵循可用的平衡配置 ,如下所述。
4.1 Minimum trade stake 最低交易质押
最低赌注金额(The minimum stake amount)将取决于交易所和货币对,通常列在交易所支持页面中。
假设 XRP/USD 的最低可交易金额为 20 XRP(由交易所提供),价格为 0.6 美元,则购买该货币对的最低质押金额为 20 * 0.6 ~= 12
。该交易所对美元也有限制 - 所有订单必须为 > 10$ - 但不适用于这种情况。
为保证安全执行,freqtrade 不允许以 10.1 美元的质押金额买入,相反,它将确保有足够的空间在该货币对下方设置止损(+ 由 amount_reserve_percent
定义的偏移量,默认为 5%)。
如果准备金为 5%,则最低质押金额为 ~12.6 美元 (12 * (1 + 0.05)
)。如果我们在此基础上考虑 10% 的止损 - 我们最终会得到 ~14 美元 (12.6 / (1 - 0.1)
) 的值。
为了在大止损值的情况下限制此计算,计算出的最小质押限额永远不会超过实际限额的 50%。
警告
由于交易所的限额通常是稳定的,并且不经常更新,因此某些货币对可能会显示相当高的最低限额,这仅仅是因为自交易所上次调整限额以来价格上涨了很多。Freqtrade 将质押金额调整为该值,除非它比计算/期望的质押金额>多 30% - 在这种情况下,交易将被拒绝。
4.2 Dry-run wallet 试运行钱包
在试运行模式下运行时,机器人将使用模拟钱包来执行交易。该钱包的起始余额由 dry_run_wallet
定义(默认为 1000)。对于更复杂的方案,您还可以为 dry_run_wallet
分配一个字典,以定义每种货币的起始余额。
"dry_run_wallet": {"BTC": 0.01,"ETH": 2,"USDT": 1000
}
命令行选项 (--dry-run-wallet
) 可用于覆盖配置值,但仅适用于浮点值,不适用于字典。如果您想使用字典,请调整配置文件。
注意
非质押货币的余额将不会用于交易,而是显示为钱包余额的一部分。在全仓保证金交易所,钱包余额可用于计算可用于交易的抵押品。
4.3 Tradable balance 可交易余额
默认情况下,机器人假设全部金额 - 1%
可供其支配,当使用动态质押金额时,它会将全部余额拆分为每笔交易的 max_open_trades
个桶。Freqtrade 将在进入交易时保留 1% 作为最终费用,因此默认情况下不会触及该费用。
您可以使用 tradable_balance_ratio
设置配置“未触及”的金额。
例如,如果您在交易所的钱包中有 10 个 ETH 可用,并且 tradable_balance_ratio=0.5
(即 50%),那么机器人将使用最多 5 个 ETH 进行交易,并将其视为可用余额。钱包的其余部分不受交易的影响。
危险
在同一帐户上运行多个机器人时 ,不应使用此设置。请查看机器人的可用资本 。
警告
tradable_balance_ratio
设置适用于当前余额(可用余额 + 交易)。因此,假设起始余额为 1000,则 tradable_balance_ratio=0.99
的配置将不能保证 10 个货币单位在交易所始终可用。例如,如果总余额减少到 500 个单位(通过连败或提取余额),免费金额可能会减少到 5 个单位。
4.4 Assign available Capital 分配可用资本
为了在同一交易所账户上使用多个机器人时充分利用复利利润,您需要将每个机器人限制在一定的起起余额。这可以通过将 available_capital
设置为所需的起始余额来实现。
假设您的账户有 10000 USDT,并且您想在此交易所运行 2 种不同的策略。您将设置 available_capital=5000
- 授予每个机器人 5000 USDT 的初始资金。然后,机器人会将此起始余额平均拆分为 max_open_trades
桶。有利可图的交易将导致该机器人的赌注规模增加 - 而不会影响另一个机器人的赌注规模。
调整 available_capital
需要重新加载配置才能生效。调整 available_capital
会增加上一个 available_capital
和新 available_capital
之间的差额。交易开仓时减少可用资本不会退出交易。交易结束后,差额将返还到钱包中。其结果取决于调整和退出交易之间的价格变动。
与 tradable_balance_ratio
不兼容
设置此选项将替换 tradable_balance_ratio
的任何配置。
4.5 Amend last stake amount 修改最后的质押金额
假设我们的可交易余额为 1000 USDT, 则 stake_amount=400,max_open_trades
=3
。机器人将开立 2 笔交易,并且无法填补最后一个交易时段,因为请求的 400 USDT 不再可用,因为 800 USDT 已经在其他交易中捆绑。
为了克服这个问题,可以将选项 amend_last_stake_amount
设置为 True
,这将使机器人能够减少可用余额的 stake_amount 以填充最后一个交易时段。(就是说,设置为True后,资金不足也没关系,把剩下的钱用掉就好)
在上面的示例中,这意味着:
- 交易一:400 USDT
- 交易二:400 USDT
- 交易三:200 USDT
注意
此选项仅适用于静态质押金额 - 因为动态质押金额平均分配余额。
注意
可以使用 last_stake_amount_min_ratio
配置最小最后质押金额 - 默认为 0.5 (50%)。这意味着曾经使用的最低质押金额为 stake_amount * 0.5
。这避免了非常低的质押金额,这些金额接近该货币对的最低可交易金额,并且可能会被交易所拒绝。
4.6 Static stake amount 静态质押金额
stake_amount
配置静态配置您的机器人将用于每笔交易的质押货币数量。
最小配置值为 0.0001,但是,请检查您交易所的最低交易额,了解您使用的质押货币,以避免出现问题。
此设置与 max_open_trades
结合使用。从事交易的最大资本是 stake_amount * max_open_trades
。例如,假设配置为 max_open_trades=3
且 stake_amount=0.05
,机器人最多使用 (0.05 BTC x 3) = 0.15 BTC。
注意
此设置遵循可用的余额配置 。
4.7 Dynamic stake amount 动态质押金额
或者,您可以使用动态质押金额,该金额将使用交易所的可用余额,并将其除以允许的交易数量 (max_open_trades
)。
要配置此设置,请设置 stake_amount=“unlimited”
。我们还建议设置 tradable_balance_ratio=0.99
(99%) - 以保持最终费用的最低余额。
在这种情况下,交易金额计算如下:
currency_balance / (max_open_trades - current_open_trades)
允许机器人交易您账户中的所有可用 stake_currency
(减去 tradable_balance_ratio
)集
"stake_amount" : "unlimited",
"tradable_balance_ratio": 0.99,
复利
这种配置将允许根据机器人的性能增加/减少赌注(如果机器人输了,则降低赌注,如果机器人有获胜记录,则赌注更高,因为可用的余额更高),并将导致利润复利。
使用试运行模式时
当使用 “stake_amount”:“无限”时,
结合试运行、回测或 Hyperopt,将从将演变的 dry_run_wallet
的赌注开始模拟余额。因此,将 dry_run_wallet
设置为合理的值(例如,BTC 为 0.05 或 0.01,USDT 为 1000 或 100),否则,它可能会模拟一次 100 BTC(或更多)或 0.05 USDT(或更少)的交易 - 这可能与您的实际可用余额不符,或者小于质押货币订单金额的兑换最低限额。
(建议Dry-Run模式下,不要设置为unlimited
,而是合理值
)
4.8 Dynamic stake amount with position adjustment 动态质押金额与位置调整
当您想使用无限赌注的头寸调整时,您还必须实施 custom_stake_amount
,以根据您的策略返回一个值。典型价值将在建议本金的 25% - 50% 范围内,但在很大程度上取决于您的策略以及您希望在钱包中留下多少作为头寸调整缓冲。
例如,如果您的头寸调整假设它可以以相同的质押金额进行 2 次额外的购买,那么您的缓冲区应该是最初建议的无限质押金额的 66.6667%。
或者另一个例子,如果您的头寸调整假设它可以以原始本金金额的 3 倍进行 1 次额外买入,那么 custom_stake_amount
应该返回建议本金金额的 25%,并留下 75% 用于以后可能的头寸调整。
四、Prices used for orders 用于订单的价格
常规订单的价格可以通过交易进入的参数结构和交易退出 exit_pricing entry_pricing
来控制。 价格总是在下订单之前检索,方法是通过查询交易所代码或使用订单簿数据。
注意
Freqtrade 使用的订单簿数据是 ccxt 的函数 fetch_order_book()
从交易所检索到的数据,即通常是来自 L2 聚合订单簿的数据,而股票代码数据是 ccxt 的 fetch_ticker()
/fetch_tickers()
函数返回的结构。有关更多详细信息,请参阅 ccxt 库文档 。
使用市价单
使用市价单时,请阅读市价单定价部分。
1. Entry price 入场价格 ¶
1.1 Enter price side 进入价格方 ¶
配置设置 entry_pricing.price_side
定义了机器人在购买时查找的订单簿的一侧。
下面显示订单簿。
...
103
102
101 # ask
-------------Current spread
99 # bid
98
97
...
如果 entry_pricing.price_side
设置为 “bid”
,则机器人将使用 99 作为入场价。
与此一致,如果 entry_pricing.price_side
设置为 “ask”
,则机器人将使用 101 作为入场价。
根据订单方向( 多头 / 空头 )(long/short),这将导致不同的结果。因此,我们建议对此配置使用 “相同”
或 “其他”(
"same"
or "other"
)
。这将产生以下定价矩阵:
方向 | 次序 | 设置 | 价格 | crosses spread十字架传播 |
---|---|---|---|---|
long 长 | 买 | ask 问 | 101 | yes是的 |
长 | 买 | bid 出价 | 99 | no不 |
长 | 买 | same 相同 | 99 | 不 |
长 | 买 | other 其他 | 101 | 是的 |
short 短 | 卖 | 问 | 101 | 不 |
短 | 卖 | 出价 | 99 | 是的 |
短 | 卖 | 相同 | 101 | 不 |
短 | 卖 | 其他 | 99 | 是的 |
使用订单簿的另一端通常可以保证更快地完成订单,但机器人最终也可能支付超出必要金额的费用。即使在使用限价买单时,也很可能会适用吃单费用而不是挂单费用。此外,价差“另一侧”的价格高于订单簿中“买入”侧的价格,因此订单的行为类似于市价单(但具有最高价格)。
1.2 Entry price with Orderbook enabled 启用订单簿的入场价格 ¶
在启用订单簿的情况下输入交易时 entry_pricing.use_order_book=True
,Freqtrade 从订单簿中获取 entry_pricing.order_book_top
条目,并使用订单簿配置端 (entry_pricing.price_side
) 上指定为 entry_pricing.order_book_top
的条目。1 指定订单簿中最顶层的条目,而 2 将使用订单簿中的第二个条目,依此类推。
1.3 Entry price without Orderbook enabled 未启用订单簿的入场价格 ¶
以下部分使用 side
作为配置的 entry_pricing.price_side
(默认为 “same”
)。
当不使用订单簿 ( entry_pricing.use_order_book=False
) 时,如果股票代码中的最佳边价低于股票代码的最后交易
价格,则 Freqtrade 使用股票代码中的最佳边
价。否则(当side边
价高于last最后价格
时),它会根据 entry_pricing.price_last_balance
计算边
价和最后价
之间的汇率。
配置参数控制 entry_pricing.price_last_balance
这一点。值 0.0
将使用边价,而 1.0
将使用最后价格
以及要价和最后价格之间的值。
1.4 Check depth of market 检查市场深度 ¶
启用 check market 深度 ( entry_pricing.check_depth_of_market.enabled=True
) 时,根据每个订单簿方的订单簿深度(所有金额的总和)过滤入场信号。
然后将订单簿买入
(买入)侧深度除以订单簿卖出
(卖出)侧深度,并将所得增量与 entry_pricing.check_depth_of_market.bids_to_ask_delta
参数值进行比较。仅当订单簿增量大于或等于配置的增量值时,才会执行挂单。
注意
delta 值低于 1 表示卖出
(卖出)订单簿侧深度大于买入
(买入)订单簿侧深度,而大于 1 的值表示相反(买方深度高于卖方深度)。
2. Exit price退出价格 ¶
2.1 Exit price side 退出价格端 ¶
配置设置 exit_pricing.price_side
定义了机器人在退出交易时寻找的点差的一侧。
下面显示订单簿:
...
103
102
101 # ask
-------------Current spread
99 # bid
98
97
...
如果 exit_pricing.price_side
设置为 “ask”
,则机器人将使用 101 作为退出价格。
与此一致,如果 exit_pricing.price_side
设置为 “bid”
,则机器人将使用 99 作为退出价格。
根据订单方向( 多头 / 空头 ),这将导致不同的结果。因此,我们建议对此配置使用 “相同”
或 “其他”
。这将产生以下定价矩阵:
方向 | 次序 | 设置 | 价格 | 十字架传播 |
---|---|---|---|---|
长 | 卖 | 问 | 101 | 不 |
长 | 卖 | 出价 | 99 | 是的 |
长 | 卖 | 相同 | 101 | 不 |
长 | 卖 | 其他 | 99 | 是的 |
短 | 买 | 问 | 101 | 是的 |
短 | 买 | 出价 | 99 | 不 |
短 | 买 | 相同 | 99 | 不 |
短 | 买 | 其他 | 101 | 是的 |
2.2 Exit price with Orderbook enabled 启用订单簿的退出价格 ¶
在启用订单簿的情况下退出时 exit_pricing.use_order_book=True
,Freqtrade 获取订单簿中的 exit_pricing.order_book_top
条目,并使用从配置端 (exit_pricing.price_side
) 指定为 exit_pricing.order_book_top
的条目作为交易退出价格。
1 指定订单簿中最顶层的条目,而 2 将使用订单簿中的第二个条目,依此类推。
2.3 Exit price without Orderbook enabled 未启用订单簿的退出价格 ¶
以下部分使用 side
作为配置的 exit_pricing.price_side
(默认为 “ask”
)。
当不使用订单簿 ( exit_pricing.use_order_book=False
) 时,如果股票代码高于股票代码的最后交易
价格,则 Freqtrade 使用股票代码中的最佳边
价。否则(当边
价低于最后价格
时),它会根据 exit_pricing.price_last_balance
计算边
价和最后价
之间的汇率。
配置参数控制 exit_pricing.price_last_balance
这一点。值 0.0
将使用边价,而 1.0
将使用最后价格以及边
价和最后价之间的值。
(这里和上面类似,要注意有些专有名词可能翻译不精准)
3. Market order pricing 市价单定价 ¶
使用市价单时,应将价格配置为使用订单簿的“正确”端,以允许实际的定价检测。假设进入和退出都使用市价单,则必须使用类似于以下的配置
"order_types": {"entry": "market","exit": "market"// ...},"entry_pricing": {"price_side": "other",// ...},"exit_pricing":{"price_side": "other",// ...},
显然,如果只有一方使用限价单,则可以使用不同的定价组合。
五、Further Configuration details 更多配置详情
1.Understand minimal_roi 了解 minimal_roi¶
minimal_roi
配置参数是一个 JSON 对象,其中键是持续时间(以分钟为单位),值是最小投资回报率比率。请参阅以下示例:
"minimal_roi": {"40": 0.0, # Exit after 40 minutes if the profit is not negative"30": 0.01, # Exit after 30 minutes if there is at least 1% profit"20": 0.02, # Exit after 20 minutes if there is at least 2% profit"0": 0.04 # Exit immediately if there is at least 4% profit
},
这里我做了一个解释:
时间(分钟) | 要求收益率 | 含义 |
---|---|---|
40 | 0 % | 如果拿了 40 min 还没亏钱(利润 ≥ 0 %),立刻平仓;允许微利或 0 % 就走人。 |
30 | 1 % | 30 min 时利润 ≥ 1 %,立刻平仓;否则继续等。 |
20 | 2 % | 20 min 时利润 ≥ 2 %,立刻平仓;否则继续等。 |
0 | 4 % | 开仓后任何时刻一旦利润 ≥ 4 %,立即平仓;这是最高优先级。 |
也就是:最快 4 % 秒走,拿不到 4 % 就逐级降低要求:20 min 后 2 %、30 min 后 1 %、40 min 后 0 % 都能接受,再往后就不等了。
大多数策略文件已经包含最佳 minimal_roi
值。 此参数可以在策略或配置文件中设置。如果您在配置文件中使用它,它将覆盖 minimal_roi
策略文件中的值。如果未在策略或配置中设置,则使用默认值 1000% {“0”: 10}
,并且禁用最小投资回报率,除非您的交易产生 1000% 的利润。
在特定时间后强制退出的特殊情况
一个特殊情况是使用 "<N>":-1
作为 ROI。这迫使机器人在 N 分钟后退出交易,无论它是正的还是负的,因此代表有时间限制的强制退出。
2. Understand force_entry_enable 了解 force_entry_enable¶
force_entry_enable
配置参数允许通过 Telegram 和 REST API 使用 force-enter(/forcelong
、/forceshort
)命令。出于安全原因,它默认处于禁用状态,如果启用,freqtrade 将在启动时显示警告消息。例如,您可以向机器人发送 /forceenter ETH/BTC
,这将导致 freqtrade 购买该货币对并持有它,直到出现常规退出信号(ROI、止损、/forceexit)。
对于某些策略来说,这可能很危险,因此请谨慎使用。
有关使用方法的详细信息,请参阅 telegram 文档 。
3. Ignoring expired candles 忽略过期的蜡烛 ¶
当使用较大的时间范围(例如 1 小时或更长时间)并使用较低的 max_open_trades
值时,一旦交易时段可用,就可以立即处理最后一根蜡烛。在处理最后一根蜡烛时,这可能会导致可能不希望在该蜡烛上使用买入信号的情况。例如,当您在策略中使用交叉的条件时,该点可能已经过去太久了,您无法开始交易。
在这些情况下,您可以通过设置为 ignore_buying_expired_candle_after
正数来启用该功能以忽略超过指定时间段的蜡烛,该数字表示买入信号过期后的秒数。
例如,如果您的策略使用 1 小时时间框架,并且您只想在新蜡烛出现的前 5 分钟内买入,您可以在策略中添加以下配置:
{//..."ignore_buying_expired_candle_after": 300,// ...}
注意
此设置会随着每根新蜡烛而重置,因此不会阻止粘贴信号在它们处于活动状态的第 2 根或第 3 根蜡烛上执行。最好对买入信号使用trigger“触发”选择器,该信号仅对一根蜡烛有效。
这里我做一些补充:
用 1 小时(或更大)周期做回测时,如果仓位很少、信号又少,引擎可能拖到整根 K 线快结束才给你成交。这时候你的‘金叉’早就没热度了,买进去容易站岗。于是你可以规定:每根 K 线开盘后最多只在前 N 秒允许开仓,过了就干脆放弃,等下一根。
场景还原(为什么要有这个功能)
-
你用的是 1h 线,
max_open_trades=1
。 -
10:00 新 K 线开始,10:05 出现金叉,你的策略
populate_entry_trend
返回True
。 -
可是此时你手里已经有一笔单,仓位被占。
-
10:45 那笔单平仓,系统回头把 10:00–10:45 这根“老”K 线重新扫一遍,发现信号依然是
True
,于是在 10:45 立刻给你市价买入。 -
真·行情里 45 分钟前的金叉早就凉透了,回测却照买不误,结果明显虚高。
解决办法,给策略加一行:(或者如前文配置)
ignore_buying_expired_candle_after = 300 # 单位:秒
意思就是:
“每根 K 线开盘后 5 min 内如果没能立刻成交,就放弃这根 K 线的信号,不再追单。”
4. Understand order_types 了解 order_types¶
order_types
配置参数将作( 进入
、 退出
、 止损
、emergency_exit
、force_exit
、force_entry
)映射到订单类型( 市价
、 限价
等),(entry
, exit
, stoploss
, emergency_exit
, force_exit
, force_entry
) to order-types (market
, limit
, ...) ,并将止损配置为在交易所上,并定义交易所更新间隔的止损(以秒为单位)。
这允许使用限价单进入,使用限价单退出,并使用市价单创建止损。它还允许设置“交易所”止损,这意味着一旦买单履行,止损单将立即下达。
配置文件中设置的 order_types
会覆盖整个策略中设置的值,因此您需要在一个地方配置整个 order_types
字典。
如果配置了这一点,则需要存在以下 4 个值( 进入
、 退出
、 止损
和 stoploss_on_exchange
)(entry
, exit
, stoploss
and stoploss_on_exchange
),否则,机器人将无法启动。
(下面图片是我简单策略的配置:)
有关 (emergency_exit,force_exit
, force_entry
, stoploss_on_exchange,stoploss_on_exchange_interval
, stoploss_on_exchange_limit_ratio
) 的信息,请参阅止损文档交易所止损
策略语法(py代码):
order_types = {"entry": "limit","exit": "limit","emergency_exit": "market","force_entry": "market","force_exit": "market","stoploss": "market","stoploss_on_exchange": False,"stoploss_on_exchange_interval": 60,"stoploss_on_exchange_limit_ratio": 0.99,
}
配置(json文件):
"order_types": {"entry": "limit","exit": "limit","emergency_exit": "market","force_entry": "market","force_exit": "market","stoploss": "market","stoploss_on_exchange": false,"stoploss_on_exchange_interval": 60
}
市价单支持
并非所有交易所都支持“市价”订单。 如果您的交易所不支持市价单,将显示以下消息: "Exchange <yourexchange> does not support market orders."
机器人将拒绝启动。
使用市价单
使用市价单时,请仔细阅读市价单定价部分。
交易所止损
order_types.stoploss_on_exchange_interval
不是强制性的。如果您不确定自己在做什么,请不要更改其值。有关止损工作原理的更多信息,请参阅止损文档 。
如果启用并且在交易所手动取消止损,则 order_types.stoploss_on_exchange
机器人将创建一个新的止损单。
警告:order_types.stoploss_on_exchange 失败
如果交易所创建时的止损由于某种原因失败,则启动“紧急退出”。默认情况下,这将使用市价单退出交易。可以通过在 order_types
字典中设置 emergency_exit
值来更改紧急出口的订单类型 - 但是,不建议这样做。
5. Understand order_time_in_force 了解 order_time_in_force¶
order_time_in_force
配置参数定义了在交易所执行订单的策略。
常用的有效时间有:
GTC(Good Till Canceled 取消前有效):
大多数情况下,这是默认有效时间。这意味着订单将保持在交易所,直到用户取消为止。它可以完全或部分实现。如果部分履行,剩余部分将保留在交易所,直到取消。
FOK(Fill Or Kill 填充或终止):
这意味着如果订单没有立即完全执行,那么交易所就会取消订单。
IOC(Immediate Or Canceled 立即或取消):
它与 FOK(上图)相同,只是可以部分满足。剩余部分由交易所自动取消。
PO(Post only 仅限post):
仅发布订单。订单要么作为挂单下单,要么被取消。这意味着订单必须在订单簿上至少处于未成交状态的时间。
请查看 Exchange 文档 ,了解您的交易所支持的有效时间值。
5.1 time_in_force 配置 ¶
order_time_in_force
参数包含一个字典,其中包含生效策略值的进入和退出时间。这可以在配置文件或策略中设置。配置文件中设置的值会覆盖策略中的值,遵循常规优先级规则 。
可能的值为:GTC
(默认)、FOK
或 IOC
。
"order_time_in_force": {"entry": "GTC","exit": "GTC"
},
警告
请不要更改默认值,除非您知道自己在做什么并研究了对特定交易所使用不同值的影响。
(官方吐槽:没事别瞎改)
6. Fiat conversion 法币转换 ¶
Freqtrade 使用 Coingecko API 将硬币价值转换为 Telegram 报告的相应法定价值。法定货币可以在配置文件中设置为 fiat_display_currency
。
从配置中完全删除 fiat_display_currency
将跳过初始化 coingecko,并且不会显示任何法定货币转换。这对于机器人的正确运行并不重要。
哪些值可用于 fiat_display_currency?¶
fiat_display_currency
配置参数设置用于在机器人 Telegram 报告中从硬币转换为法定货币的基础货币。
有效值为:
"AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR", "USD"
除了法定货币外,还支持一系列加密货币。
有效值为:
"BTC", "ETH", "XRP", "LTC", "BCH", "BNB"
Coingecko Rate limit problems; Coingecko 速率限制问题 ¶
在某些 IP 范围内,coingecko 具有严格的速率限制。在这种情况下,您可能需要将 coingecko API 密钥添加到配置中。
{"fiat_display_currency": "USD","coingecko": {"api_key": "your-api","is_demo": true}
}
Freqtrade 支持 Demo 和 Pro coingecko API 密钥。
机器人正常运行不需要 Coingecko API 密钥。它仅用于在 Telegram 报告中将硬币转换为法定货币,通常无需 API 密钥即可使用。
六、Consuming exchange Websockets 使用交易所Websocket
Freqtrade 可以通过 ccxt.pro 消费(使用) websocket。
Freqtrade 旨在确保数据始终可用。如果 websocket 连接失败(或被禁用),机器人将回退到 REST API 调用。
如果您遇到怀疑是由 websocket 引起的问题,您可以通过设置 exchange.enable_ws
禁用这些问题,该设置默认为 true。
"exchange": {// ..."enable_ws": false,// ...
}
如果您需要使用代理,请参阅代理部分以获取更多信息。
推出Rollout
我们正在缓慢实施,以确保机器人的稳定性。目前,使用仅限于 ohlcv 数据流。它也仅限于少数交易所,并不断添加新的交易所。
七、Using Dry-run mode 使用试运行模式
我们建议在试运行模式下启动机器人,以查看您的机器人的行为方式以及策略的性能如何。在试运行模式下,机器人不会参与您的资金。它只运行实时模拟,而不在交易所创建交易。
- 编辑
config.json
配置文件。 - 将
dry-run
切换为true
,并为持久性数据库指定db_url
。
"dry_run": true,
"db_url": "sqlite:///tradesv3.dryrun.sqlite",
- 删除您的 Exchange API 密钥和密钥(通过空值或虚假凭据更改它们):
"exchange": {"name": "binance","key": "key","secret": "secret",...
}
一旦您对在试运行模式下运行的机器人性能感到满意,就可以将其切换到生产模式。
注意
模拟钱包在试运行模式下可用,并将假设启动资金为 dry_run_wallet
(默认为 1000)。
1. Considerations for dry-run 试运行的注意事项 ¶
- 可能会提供也可能不会提供 API 密钥。在交易所上的只执行Read-Only只读操作(即不改变账户状态的作),在试运行模式下执行。
- 钱包(
/balance
)是根据dry_run_wallet
模拟的。 - 订单是模拟的,不会发布到交易所。(补充:和交易所的模拟交易不同)
- 市价单根据下单时的订单簿交易量成交,最大滑点为 5%。
- 一旦价格达到定义的水平,限价单就会成交 - 或根据
unfilledtimeout
设置超时。 - 如果限价单与价格的交叉超过 1%,则将转换为市价单,并将根据常规市价单规则立即成交(参见上文关于市价单的要点)。
- 结合
stoploss_on_exchange
,假定 stop_loss 价格已成交。 - 未结订单(不是存储在数据库中的交易)在机器人重新启动后保持打开状态,并假设它们在离线时没有被执行。
八、Switch to production mode 切换到生产模式
在生产模式下,机器人将参与您的资金。要小心,因为错误的策略可能会损失你所有的钱。在生产模式下运行它时,请注意您在做什么。
切换到生产模式时,请确保使用不同/新的数据库,以避免试运行交易扰乱您的兑换资金并最终污染您的统计数据。
1. Setup your exchange account 设置您的交易所账户 ¶
您需要从 Exchange 网站创建 API 密钥(通常您获得密钥
和密钥
,某些交易所需要额外的密码
),并且您需要将其插入配置中的相应字段中,或者在 freqtrade new-config
命令询问时将其插入。API 密钥通常仅用于实时交易(交易真钱、机器人在“生产模式”下运行、在交易所执行真实订单),而在试运行(交易模拟)模式下运行的机器人不需要。当您在试运行模式下设置机器人时,您可以使用空值填充这些字段。
2. To switch your bot in production mode 在生产模式下切换机器人 ¶
编辑 config.json
文件。
将试运行切换为 false,如果设置,请不要忘记调整您的数据库 URL:
"dry_run": false,
插入您的 Exchange API 密钥:
{"exchange": {"name": "binance","key": "af8ddd35195e9dc500b9a6f799f6f5c93d89193b","secret": "08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5",//"password": "", // Optional, not needed by all exchanges)// ...}//...
}
您还应该确保阅读文档的 Exchange 部分,以了解特定于您的交易所的潜在配置详细信息。
保守你的秘密(密钥)
为了对机密保密,我们建议对 API 密钥使用第二配置。只需在新的配置文件(例如 config-private.json
)中使用上述代码片段,并将您的设置保留在此文件中。然后,您可以启动机器人 freqtrade trade --config user_data/config.json --config user_data/config-private.json <...>
以加载密钥。
切勿与任何人共享您的私人配置文件或交换密钥!
九、Using a proxy with Freqtrade 在 Freqtrade 中使用代理
要将代理与 freqtrade 一起使用,请使用设置为适当值的变量 “HTTP_PROXY”
和 “HTTPS_PROXY
”导出代理设置。这将使代理设置应用于所有内容(电报telegram、coingecko 等),交易所请求除外 (except for exchange requests)。
export HTTP_PROXY="http://addr:port"
export HTTPS_PROXY="http://addr:port"
1. Proxy exchange requests 代理交易所请求 ¶
要将代理用于交易所连接 - 您必须将代理定义为 ccxt 配置的一部分。
{ "exchange": {"ccxt_config": {"httpsProxy": "http://addr:port","wsProxy": "http://addr:port",}}
}
有关可用代理类型的更多信息,请参阅 ccxt 代理文档 。
到此,本篇翻译完成。
原文:https://www.freqtrade.io/en/stable/configuration/