Skip to content

配置机器人

Freqtrade 有很多可配置的功能和可能性。 默认情况下,这些设置是通过配置文件进行配置的(见下文)。

Freqtrade 配置文件

机器人在运行过程中使用一组配置参数,这些参数一起构成了机器人的配置。通常,它从一个文件(Freqtrade 配置文件)中读取其配置。

默认情况下,机器人从当前工作目录中的 config.json 文件加载配置。

您可以使用 -c/--config 命令行选项指定机器人使用的不同配置文件。

如果您使用了快速入门方法来安装机器人,安装脚本应该已经为您创建了默认配置文件(config.json)。

如果默认配置文件没有被创建,我们推荐使用 freqtrade new-config --config config.json 命令来生成一个基本的配置文件。

Freqtrade 配置文件的格式应为 JSON。

除了标准的 JSON 语法,您还可以在配置文件中使用单行的 // ... 和多行的 /* ... */ 注释,以及在参数列表中使用尾逗号。如果你对JSON格式不熟悉,不用担心 -- 只需要用你喜欢的编辑器打开配置文件,对你需要的参数进行更改,保存修改,最后重新启动机器人,或者如果之前已经停止了,再次运行它以应用你所做的配置更改。机器人在启动时会验证配置文件的语法,并在编辑时发现错误时给出警告,指出有问题的行。

环境变量

通过环境变量设置Freqtrade配置选项。 这比配置或策略中对应的值具有更高的优先级。

环境变量必须以 FREQTRADE__ 开头,以加载到freqtrade配置中。

__ 用作层级分隔符,所以使用的格式应与 FREQTRADE__{section}__{key} 一致。 因此 - 定义为 export FREQTRADE__STAKE_AMOUNT=200 的环境变量将导致 {stake_amount: 200}

一个更复杂的例子可能是 export FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>,用于保持你的交易所密钥保密。这将把值移动到配置文件的 exchange.key 部分。 使用此方案,所有配置设置也将作为环境变量可用。

请注意,环境变量将覆盖配置中对应的设置,但命令行参数始终优先。

常见示例:

FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid>
FREQTRADE__TELEGRAM__TOKEN=<telegramToken>
FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>

注意

检测到的环境变量在启动时会被记录 - 所以如果你找不到值为什么不符合你的预期,先确认它是否从环境变量中加载。

多个配置文件

可以通过指定和使用多个配置文件来让机器人或者机器人从进程的标准输入流中读取其配置参数。

您可以在add_config_files中指定额外的配置文件。在此参数中指定的文件将被加载并与初始配置文件合并。这些文件相对于初始配置文件进行解析。 这类似于使用多个--config参数,但使用起来更简单,因为您不必为所有命令指定所有文件。

使用多个配置文件保护秘密

您可以使用第二个包含秘密的配置文件。这样,您可以共享您的“主”配置文件,同时将API密钥保留给自己。 第二个文件应该只指定您打算覆盖的内容。 如果一个键在多个配置中出现,则“最后指定的配置”将获胜(在上面的示例中是config-private.json)。

对于一次性命令,您还可以使用下面的语法通过指定多个“--config”参数。

freqtrade trade --config user_data/config1.json --config user_data/config-private.json <...>

下面的内容与上面的示例等效——但是在配置中拥有2个配置文件,方便重用。

user_data/config.json
"add_config_files": [
    "config1.json",
    "config-private.json"
]
freqtrade trade --config user_data/config.json <...>
配置冲突处理

如果config.jsonconfig-import.json中都存在相同的配置设置,则父级配置将获胜。 在下面的情况中,合并后的max_open_trades 将为3,因为可复用的“导入”配置覆盖了这个键。

user_data/config.json
{
    "max_open_trades": 3,
    "stake_currency": "USDT",
    "add_config_files": [
        "config-import.json"
    ]
}
user_data/config-import.json
{
    "max_open_trades": 10,
    "stake_amount": "unlimited",
}

合并后的配置如下:

``` json title="结果"
{
    "max_open_trades": 3,
    "stake_currency": "USDT",
    "stake_amount": "无限"
}
```

如果add_config_files字段中有多个文件,则假定它们在同一级别上,后面的配置将会覆盖之前的配置(除非父级已定义过该键)。

配置参数

下表列出了所有可用的配置参数。

Freqtrade还可以通过命令行参数加载许多选项(请查看命令--help的输出以获取详细信息)。

配置选项优先级

所有选项的优先级如下:- CLI参数会覆盖其他选项 - 环境变量 - 配置文件按顺序使用(最后一个文件优先)并覆盖策略配置。 - 只有在配置文件或命令行参数中未设置时,才使用策略配置。下表中标有策略覆盖的选项。

参数表

Required标记为必填参数,这意味着必须通过其中一种方式进行设置。

参数 描述
max_open_trades 必填。您的机器人允许的开放交易数量。每对货币只能有一笔开放交易,因此您的货币对列表的长度也是可能的限制之一。如果设置为-1,则忽略该参数(即无限开放交易数量,受限于货币对列表)。更多信息请参阅下文策略覆盖
数据类型:正整数或-1。
stake_currency 必填。用于交易的加密货币。
数据类型:字符串
stake_amount 必填。机器人每次交易将使用的加密货币数量。将其设置为"unlimited"以允许机器人使用所有可用余额。更多信息请参阅下文
数据类型:正浮点数或"unlimited"
tradable_balance_ratio 机器人允许交易的总账户余额的比例。更多信息请参阅下文
默认为 0.99(99%)。
数据类型:介于0.11.0之间的正浮点数。
available_capital 机器人的可用起始资金。在同一交易所账户上运行多个机器人时有用。更多信息请参阅下文
数据类型:正浮点数。
amend_last_stake_amount 必要时使用减少的最后下注金额。更多信息请参阅下文
默认为 false
数据类型:布尔值
last_stake_amount_min_ratio 定义必须保留并执行的最小下注金额。仅适用于当减少last_stake_amount(即如果将amend_last_stake_amount设置为true)时的最后下注金额。更多信息请参阅下文
默认为 0.5
数据类型:浮点数(作为比率)
amount_reserve_percent 在最小货币对下注金额中保留一些金额。计算最小货币对下注金额时,机器人将保留amount_reserve_percent加上止损值,以避免可能的交易拒绝。
默认为 0.05(5%)。
数据类型:正浮点数(作为比率)。
timeframe 要使用的时间框架(例如1m5m15m30m1h...)。通常在配置中缺失,而在策略中指定。策略覆盖
数据类型:字符串
fiat_display_currency 用于显示利润的法定货币。更多信息请参阅下文
数据类型:字符串
dry_run 必填。定义是否将机器人置于干扰运行或生产模式。
默认为 true
数据类型:布尔值
dry_run_wallet 为在干扰运行模式下运行的机器人使用的模拟钱包中的抵押货币的起始金额。
默认为 1000
数据类型:浮点数
cancel_open_orders_on_exit 当发出/stop RPC命令时,按下Ctrl+C或机器人意外终止时取消未填充和部分填充的开放订单。如果设置为true,则允许您使用/stop取消未填充和部分填充的订单,在市场崩盘时非常有用。它不影响开放头寸。
默认为 false
数据类型:布尔值
process_only_new_candles 仅在新蜡烛到达时处理指标。如果为false,每个循环都会填充指标,这意味着同一根蜡烛会被处理多次,从而创建系统负载,但如果您的策略仅依赖于刻度数据而不仅仅是蜡烛数据,则可能非常有用。策略覆盖
默认为 true
数据类型:布尔值
minimal_roi 必填。设置机器人用于退出交易的阈值。更多信息请参阅下文策略覆盖
数据类型:字典
stoploss 必填。机器人使用的止损比例值。有关详细信息,请参阅止损文档策略覆盖
数据类型:浮点数(作为比率)
trailing_stop 启用动态止损(基于配置或策略文件中的stoploss)。有关详细信息,请参阅止损文档策略覆盖
数据类型:布尔值
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 当交易所没有可用的历史融资利率时要使用的用户指定的融资利率。这不会覆盖实际的历史利率。除非您测试特定的货币并了解融资利率将如何影响freqtrade的利润计算,否则建议将其设置为0。更多信息在这里
默认为None
数据类型:*浮点数
trading_mode 指定您想要进行常规交易、使用杠杆进行交易,还是进行基于匹配加密货币价格的合约交易。 杠杆交易文档.
默认为"spot"
数据类型:字符串
margin_mode 在进行杠杆交易时,确定交易者拥有的抵押品是否将被共享或隔离到每个交易对 杠杆交易文档
数据类型:字符串
liquidation_buffer 指定从清算价到止损价之间放置多大的安全净空以防止持仓达到清算价 杠杆交易文档
默认为 0.05(5%)。
数据类型:浮点数
未填充超时
unfilledtimeout.entry 必填。机器人等待未填充的入场订单完成的时间(以分钟或秒为单位),之后订单将被取消,并以当前(新)价格重复,只要有信号存在。策略覆盖
数据类型:整数
unfilledtimeout.exit 必填。机器人等待未填充的退出订单完成的时间(以分钟或秒为单位),之后订单将被取消,并以当前(新)价格重复,只要有信号存在。策略覆盖
数据类型:整数
unfilledtimeout.unit 在未填充超时设置中使用的单位。注意:如果将unfilledtimeout.unit设置为"seconds",则internals.process_throttle_secs必须小于或等于超时值 策略覆盖
默认为"minutes"
数据类型:字符串
unfilledtimeout.exit_timeout_count 退出订单超时次数。达到此次数的超时后,将触发紧急退出。设置为0以禁用并允许无限的订单取消。策略覆盖
默认为0
数据类型:整数
定价
entry_pricing.price_side 选择机器人应查看的价差方向以获取入场价。更多信息请参阅下文
默认为"same".
数据类型:字符串(askbidsameother之一)。
entry_pricing.price_last_balance 必填。插入竞标价格。更多信息请参阅下方入场价格(禁用订单簿)
entry_pricing.use_order_book 启用使用订单簿入场的记录。
默认为true
数据类型:布尔值
entry_pricing.order_book_top 机器人将使用订单簿“price_side”中的前N个价格来进入交易。例如,值为2将允许机器人选择订单簿入场中的第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".
数据类型:字符串(askbidsameother之一)。
exit_pricing.price_last_balance 插值出场价格。更多信息请参阅下方不使用订单薄启用的出场价格
exit_pricing.use_order_book 启用使用订单薄出口退出开放交易。
默认为true
数据类型:布尔值
exit_pricing.order_book_top 机器人将使用订单薄“price_side”中的前N个价格进行出口。例如,值为2将允许机器人在订单薄出口中选择第2个卖方价格。
默认为 1
数据类型:正整数
custom_price_max_distance_ratio 配置当前价格和自定义入场或出口价格之间的最大距离比率。
默认为0.02(2%)。
数据类型:正浮点数
待办事项
use_exit_signal 除了minimal_roi之外,还使用策略产生的出口信号。将其设置为false将禁用“exit_long”和“exit_short”列的使用。对其他退出方法(止损、ROI、回调)没有影响。策略覆盖
默认为true
数据类型:布尔值
exit_profit_only 在达到exit_profit_offset之前,等待机器人达到exit_profit_offset之前不进行出口决策。策略覆盖
默认为false
数据类型:布尔值
exit_profit_offset 仅在此值以上时,退出信号有效。仅在exit_profit_only=True的情况下生效。策略覆盖
默认为0.0
数据类型:浮点数(作为比率)
ignore_roi_if_entry_signal 如果入场信号仍然有效,则不要退出。此设置优先于minimal_roiuse_exit_signal策略覆盖
默认为false
数据类型:布尔值
ignore_buying_expired_candle_after 指定购买信号不再使用的秒数。
数据类型:整数
order_types 根据操作("entry""exit""stoploss""stoploss_on_exchange")配置订单类型。更多信息请参见下文策略覆盖
数据类型:字典
order_time_in_force 配置入场和出场订单的有效时间。更多信息请参阅下文策略覆盖
数据类型:字典
position_adjustment_enable 启用策略对位置进行调整(附加买入或卖出)。更多信息在这里策略覆盖
默认为false
数据类型:布尔值
max_entry_position_adjustment 开放交易的最大附加订单数量。多于第一笔入场订单的其他订单设置为-1更多信息在这里策略覆盖
默认为-1
数据类型:正整数或-1
交易所
exchange.name 必填。要使用的交易所类的名称。下面的列表
数据类型:字符串
exchange.key 要用于交易所的API密钥。仅在生产模式下才需要。
请保密,不要公开。
数据类型:字符串
exchange.secret 要用于交易所的API密钥。仅在生产模式下才需要。
请保密,不要公开。
数据类型:字符串
exchange.password 要用于交易所的API密码。仅在生产模式下和使用需要密码的交易所时需要。
请保密,不要公开。
数据类型:字符串
exchange.uid 要用于交易所的API uid。仅在生产模式下和需要uid用于API请求的交易所时需要。
请保密,不要公开。
数据类型:字符串
exchange.pair_whitelist 用于交易和在回测期间检查潜在交易的机器人使用的货币对列表。支持正则表达式货币对,如.*/BTC。VolumePairList不使用此设置。更多信息
数据类型:列表
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.markets_refresh_interval 要重新加载市场的时间间隔(分钟)。
默认为60分钟。
数据类型:正整数
exchange.skip_pair_validation 在启动时跳过货币对列表验证。
默认为false
数据类型:布尔值
exchange.skip_open_order_update 在启动时跳过打开订单更新,如果交易所出现问题。仅在实时条件下才相关。
默认为false
数据类型:布尔值
exchange.unknown_fee_rate 在计算交易费用时使用的回退值。对于具有非可交易货币费用的交易所,这可能会很有用。此处提供的值将与“费用成本”相乘。
默认为None
数据类型:*浮点数
exchange.log_responses 记录相关的交易所响应。仅用于调试模式 - 谨慎使用。
默认为false
数据类型:布尔值
experimental.block_bad_exchanges 阻止已知无法使用freqtrade的交易所。除非您要测试该交易所是否已可用,否则请将其保持默认。
默认为true.
数据类型:布尔值
插件
edge.* 请参阅边缘配置文档以获取所有可能配置选项的详细解释。
pairlists 定义一个或多个要使用的货币对列表。更多信息
默认为StaticPairList
数据类型:字典列表
protections 定义一个或多个保护措施。更多信息
数据类型:字典列表
Telegram
telegram.enabled 启用Telegram的使用。
数据类型:布尔值
telegram.token 您的Telegram机器人令牌。仅当telegram.enabledtrue时才需要。
请保密,不要公开。
数据类型:字符串
telegram.chat_id 您的个人Telegram帐户ID。仅当telegram.enabledtrue时才需要。
请保密,不要公开。
数据类型:字符串
telegram.balance_dust_level 灰尘级别(以抵押货币计)-余额低于此级别的货币将不会在/balance中显示。
数据类型:浮点数
telegram.reload 允许在Telegram消息上使用“reload”按钮。
默认为true
数据类型:*布尔值
telegram.notification_settings.* 详细的通知设置。有关详细信息,请参阅telegram文档
数据类型:字典
telegram.allow_custom_messages 启用通过dataprovider.send_msg()函数从策略发送Telegram消息。
数据类型:布尔值
Webhook
webhook.enabled 启用Webhook通知的使用
数据类型:布尔值
webhook.url Webhook的URL。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.entry 输入时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.entry_cancel 输入订单取消时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.entry_fill 输入订单填充时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.exit 退出时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.exit_cancel 退出订单取消时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.exit_fill 退出订单填充时要发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.status 在状态调用上发送的有效负载。仅当webhook.enabledtrue时才需要。有关更多详细信息,请参阅Webhook文档
数据类型:字符串
webhook.allow_custom_messages 启用通过dataprovider.send_msg()函数从策略发送Webhook消息。
数据类型:布尔值
Rest API / FreqUI / Producer-Consumer
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仅会显示错误。
数据类型:枚举,infoerror。默认为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.
数据类型:枚举,stoppedrunning
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 NAME进行设置。
数据类型:类名
strategy_path 添加其他策略查找路径(必须是目录)。
数据类型:字符串
recursive_strategy_search 将其设置为true以递归搜索user_data/strategies中的子目录查找策略。
数据类型:布尔值
user_data_dir 包含用户数据的目录。
默认为./user_data/
数据类型:字符串
db_url 声明要使用的数据库URL。注意:如果dry_runtrue,则将默认为sqlite:///tradesv3.dryrun.sqlite,对于生产实例,默认为sqlite:///tradesv3.sqlite
数据类型:字符串,SQLAlchemy连接字符串
logfile 指定日志文件名。每个文件的日志文件轮换策略为10个文件,每个文件限制为1MB。
数据类型:字符串
add_config_files 附加配置文件。这些文件将被加载并与当前配置文件合并。文件相对于初始文件解析。
默认为[]
数据类型:字符串列表
dataformat_ohlcv 存储历史蜡烛(OHLCV)数据的数据格式。
默认为feather
数据类型:字符串
dataformat_trades 存储历史交易数据的数据格式。
默认为feather
数据类型:字符串
reduce_df_footprint 将所有数字列重新转换为float32 / int32,目的是减少ram /磁盘使用(并减少在FreqAI中进行训练/推理的时间)。 (目前仅影响FreqAI用例)
数据类型:布尔值。
默认值:False

策略中的参数

以下参数可以在配置文件或策略中进行设置。始终以配置文件中设置的值覆盖策略中设置的值。

  • 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

配置交易金额

有几种方法可以配置机器人将使用多少抵押货币进入交易。所有方法都尊重可用余额配置

最小交易抵押货币

最低下注金额取决于交易所和交易对,并通常在交易所支持页面上列出。

假设XRP/USD的最低交易金额为20 XRP(由交易所给出),价格为0.6美元,则购买该交易对的最低下注金额为 20 * 0.6 ~= 12。 该交易所还对USD有一个限制,在该限制下所有订单必须大于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%以上,否则交易将被拒绝。

可交易余额

默认情况下,机器人假设完整金额 - 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个单位。

分配可用资本

当在同一个交易所账户上同时使用多个机器人时,为了充分利用复利收益,您可以将各个机器人的初始资本限制在一定的范围内。通过将available_capital设置为所需的起始资本,可以实现这一目标。

假设您的账户有10000 USDT,并且您希望在该交易所上运行2种不同的策略。 您可以将available_capital设置为5000,使每个机器人获得5000 USDT的初始资本。 然后,机器人将把这个起始资本平均分配到max_open_trades个交易中。 盈利的交易将导致该机器人的投注金额增加,而不会影响其他机器人的投注金额。

tradable_balance_ratio不兼容

设置此选项将替换tradable_balance_ratio的任何配置。

修改最后一个投注金额

假设我们有可交易的余额为1000 USDT,stake_amount=400,并且max_open_trades=3。 机器人将打开2个交易,但无法填满最后一个交易槽,因为已经绑定在其他交易中的800 USDT已经不可用。

为了克服这个问题,可以将amend_last_stake_amount选项设置为True,这样将能够将投注金额减少到可用余额以填充最后一个交易槽。

在上面的例子中,这意味着:- 交易1:400 USDT - 交易2:400 USDT - 交易3:200 USDT

注意

此选项仅适用于静态投注金额 - 因为动态投注金额会均匀地分割余额。

注意

最小最后投注金额可以使用 last_stake_amount_min_ratio 进行配置,默认为0.5(50%)。这意味着最小使用的投注金额为 stake_amount * 0.5。这样可以避免非常低的投注金额接近交易对的最小可交易金额,并可能被交易所拒绝。

静态投注金额

stake_amount 配置静态地配置了您的机器人用于每笔交易的投注金额。

最小配置值为0.0001,但请根据使用的投注货币检查交易所的最低交易限额以避免问题。

此设置与 max_open_trades 结合使用。参与交易的最大资本为 stake_amount * max_open_trades。 例如,假设 max_open_trades=3stake_amount=0.05,机器人最多会使用(0.05 BTC x 3)= 0.15 BTC。

注意

此设置遵循可用余额配置

动态投注金额

或者,您可以使用动态投注金额,该金额将使用交易所上的可用余额,并按照允许的交易数量(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": "unlimited", 时,余额将被模拟,从 dry_run_wallet 的赌注开始并逐渐增加。 因此,将 dry_run_wallet 设置为合理的值非常重要(例如,对于 BTC,可以设置为 0.05 或 0.01,对于 USDT,可以设置为 1000 或 100),否则,它可能会一次性模拟使用 100 BTC(或更多)或 0.05 USDT(或更少)进行交易-这可能不符合您真实可用的余额或小于交易所用于赌注货币的最低限额。

使用动态赌注金额进行仓位调整

当您希望在使用无限赌注时使用仓位调整时,您还必须实现 custom_stake_amount ,以便根据您的策略返回一个值。 典型值应在所提议的赌注范围的25% - 50%之间,但主要取决于您的策略以及您希望将多少保留在钱包中作为仓位调整缓冲区。

例如,如果您的仓位调整假设可以使用相同赌注金额进行2次额外购买,则您的缓冲区应为初始建议的无限赌注金额的66.6667%。

理解 minimal_roi

minimal_roi 配置参数是一个 JSON 对象,其中键是以分钟为单位的持续时间,值则是最小 ROI(回报率)的比例。请参考下面的示例:

"minimal_roi": {
    "40": 0.0,    # 如果利润不为负,则在 40 分钟后退出
    "30": 0.01,   # 如果有至少 1% 的利润,则在 30 分钟后退出
    "20": 0.02,   # 如果有至少 2% 的利润,则在 20 分钟后退出
    "0":  0.04    # 如果有至少 4% 的利润,则立即退出
},

大多数策略文件已包含最佳 minimal_roi 值。该参数可以在策略文件或配置文件中设置。如果在配置文件中使用,则会覆盖策略文件中的 minimal_roi 值。如果在策略文件或配置文件中都未设置该值,则使用默认值为 1000% {"0": 10},并且除非您的交易产生 1000% 的利润,否则禁用最小 ROI。

特殊的强制退出时间

一种特殊情况是使用 "<N>": -1 作为 ROI。这会强制机器人在 N 分钟后退出交易,无论利润是正还是负,因此代表了有限时间的强制退出。

理解 force_entry_enable

force_entry_enable 配置参数允许通过 Telegram 和 REST API 使用强制进入(/forcelong/forceshort)命令。出于安全考虑,默认情况下它是禁用的,如果启用,则 freqtrade 在启动时会显示警告消息。

例如,您可以发送 /forceenter ETH/BTC 给机器人,这将导致 freqtrade 购买该交易对,并持有直到出现常规的退出信号(ROI、止损、/forceexit)。

但是这在某些策略中可能会存在危险,因此请谨慎使用。请参阅Telegram文档了解详细使用方法。

忽略过期的蜡烛

当使用较大的时间框架(例如1小时或更长时间)并且使用低的max_open_trades值时,最后一个蜡烛可以在交易槽位可用时立即处理。在处理最后一个蜡烛时,可能不希望在该蜡烛上使用买入信号。例如,当您的策略中使用交叉点作为条件时,该点可能已经过去太久,无法在其上开展交易。

在这种情况下,您可以通过将ignore_buying_expired_candle_after设置为正数来启用忽略超过指定时间范围的蜡烛的功能,表示买入信号在多少秒后过期。

例如,如果您的策略使用1小时的时间框架,并且只想在新蜡烛进来的前5分钟内进行买入,可以向您的策略添加以下配置:

  {
    //...
    "ignore_buying_expired_candle_after": 300,
    // ...
  }

注意

此设置在每个新蜡烛到来时重置,因此它不会阻止粘性信号在第2或第3个蜡烛激活时执行。最好使用触发器选择器来选择买入信号,这些信号仅在一个蜡烛周期内有效。

理解order_types

order_types配置参数将动作(entryexitstoplossemergency_exitforce_exitforce_entry)映射到订单类型(marketlimit,...),并配置在交易所上放置停损和定义停损更新间隔(以秒为单位)。

这允许使用限价单进行买入,使用限价单进行卖出,并使用市价单创建停损订单。 它还允许设置停损“在交易所上”,这意味着一旦买入订单执行,停损订单将立即被下达。order_types 在配置文件中设置会覆盖策略中的值,因此需要在一个地方配置整个 order_types 字典。

如果已经配置了,以下 4 个值(entryexitstoplossstoploss_on_exchange)必须存在,否则机器人将无法启动。

关于 emergency_exitforce_exitforce_entrystoploss_on_exchangestoploss_on_exchange_intervalstoploss_on_exchange_limit_ratio 的详细信息,请参阅止损文档 在交易所上止损

策略的语法:

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,
}

配置:

"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
}

市价订单支持

并非所有交易所都支持 "market" 市价订单。 如果你的交易所不支持市价订单,将会显示以下消息: "Exchange <yourexchange> does not support market orders.",并且机器人将拒绝启动。

使用市价订单

使用市价订单时,请仔细阅读 市价订单定价 章节的内容。

交易所上的止损

stoploss_on_exchange_interval 是非强制性的。如果你对自己的操作不确定,请不要更改其值。 有关止损工作原理的更多信息,请参阅 止损文档。如果启用了 stoploss_on_exchange 并且止损在交易所上手动取消,则机器人将创建新的止损订单。

警告:止损在交易所上的失败

如果由于某种原因导致止损在交易所上创建失败,则会启动“紧急退出”机制。默认情况下,这将使用市价单退出交易。可以通过设置 order_types 字典中的 emergency_exit 值来更改紧急退出的订单类型,但这是不建议的。

理解订单有效期

order_time_in_force 配置参数定义了订单在交易所上执行的策略。常用的三种有效期包括:

GTC (Good Till Canceled):

这通常是默认的有效期。它表示订单将保留在交易所上,直到用户取消。它可以完全或部分被执行。如果部分成交,剩余部分将保留在交易所上,直到被取消。

FOK (Fill Or Kill):

这意味着如果订单不能立即和完全被执行,交易所将取消该订单。

IOC (Immediate Or Canceled):

它与 FOK(上文提到的)相同,只是它可以部分成交。剩余部分会被交易所自动取消。

PO(仅限发布):

仅发布(PO)订单。订单可以作为市价订单下单,或者被取消。 这意味着订单必须至少在未成交状态下在订单簿中保持一段时间。

time_in_force 配置

order_time_in_force 参数包含了一个字典,其中包含了有效时间策略的入场和离场时间。 这可以在配置文件或策略中设置。 配置文件中设置的值会覆盖策略中设置的值。

可用的值有:GTC(默认值),FOKIOC

"order_time_in_force": {
    "entry": "GTC",
    "exit": "GTC"
},

警告

这是持续工作。目前,仅支持 binance、gate 和 kucoin。 除非你知道自己在做什么并且已经研究过在特定交易所使用不同值的影响,否则请不要更改默认值。

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"

In addition to fiat currencies, a range of crypto currencies is supported.

The valid values are:

"BTC", "ETH", "XRP", "LTC", "BCH", "BNB"

Removing fiat_display_currency completely from the configuration will skip initializing coingecko, and will not show any FIAT currency conversion. This has no importance for the correct functioning of the bot.

Using Dry-run mode

We recommend starting the bot in the Dry-run mode to see how your bot will behave and what is the performance of your strategy. In the Dry-run mode, the bot does not engage your money. It only runs a live simulation without creating trades on the exchange.

  1. Edit your config.json configuration file.
  2. Switch dry-run to true and specify db_url for a persistence database.
"dry_run": true,
"db_url": "sqlite:///tradesv3.dryrun.sqlite",
  1. Remove your Exchange API key and secret (change them by empty values or fake credentials):
"exchange": {
    "name": "binance",
    "key": "key",
    "secret": "secret",
    ...
}

一旦你对你的机器人在模拟运行中的表现满意,你可以将其切换到生产模式。

注意

在模拟运行模式下,有一个模拟的钱包可用,并且将假设初始资本为 dry_run_wallet(默认为 1000)。

模拟运行的考虑事项

  • API 密钥可能会被提供或者不被提供。模拟运行模式下仅执行对交易所的只读操作(即不会更改账户状态的操作)。
  • 钱包(/balance)是基于 dry_run_wallet 进行模拟。
  • 订单是模拟的,并且不会被提交到交易所。
  • 市价订单在下单时根据订单簿的成交量进行成交。
  • 限价订单在价格达到指定水平时进行成交,或者根据 unfilledtimeout 设置超时。
  • 如果限价订单的价格超过1%,则会转换为市价订单。
  • stoploss_on_exchange 结合使用时,假设停止损失价格已成交。
  • 在机器人重启后,未成交的挂单(与已存储在数据库中的交易不同)将保持开放状态,假设在离线期间它们未能成交。

切换到生产模式

在生产模式下,机器人将操作您的资金。请小心,因为错误的策略可能会导致您损失所有资金。 当您在生产模式下运行时,请务必清楚自己在做什么。

切换到生产模式时,请确保使用一个不同/新的数据库,以避免模拟运行交易影响您的交易所资金,最终影响您的统计数据。

设置您的交易所账户

您需要在交易所的网站上创建 API 密钥(通常您会得到 keysecret,某些交易所还需要额外的 password),并将其插入到配置文件中的适当字段中,或者在 freqtrade new-config 命令提示时输入。 API 密钥通常仅在实时交易(使用真实货币进行交易,在“生产模式”下运行的机器人,执行实际订单)时需要,并且在模拟运行(交易模拟)模式下不需要。当你在模拟运行模式下设置机器人时,你可以将这些字段填写为空值。

切换到生产模式的方法

编辑你的 config.json 文件。

将 dry-run 改为 false,并且不要忘记适应你的数据库 URL(如果有设置的话):

"dry_run": false,

插入你的交易所 API 密钥(将它们改为虚假的 API 密钥):

{
    "exchange": {
        "name": "binance",
        "key": "af8ddd35195e9dc500b9a6f799f6f5c93d89193b",
        "secret": "08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5",
        //"password": "", // 可选的,不是所有交易所都需要)
        // ...
    }
    //...
}

你还应该确保阅读Exchanges部分的文档,了解与你的交易所相关的潜在配置细节。

保护你的密钥的安全

为了保护你的密钥的安全,我们建议使用第二个配置文件来存储你的 API 密钥。 只需在一个新的配置文件中使用上述代码段(例如 config-private.json),并将你的设置保存在该文件中。 然后可以使用 freqtrade trade --config user_data/config.json --config user_data/config-private.json <...> 命令启动机器人,以加载你的密钥。

绝对不要与任何人分享你的私有配置文件或交易所密钥!

使用代理设置 Freqtrade

使用freqtrade代理时,使用变量"HTTP_PROXY""HTTPS_PROXY"将代理设置导出为适当的值。这将使代理设置适用于所有内容(telegram、coingecko等),除了交易所请求。

export HTTP_PROXY="http://addr:port"
export HTTPS_PROXY="http://addr:port"
freqtrade

交易所请求代理

要为交易所连接使用代理,您需要将代理定义为ccxt配置的一部分。

{ 
  "exchange": {
    "ccxt_config": {
      "httpsProxy": "http://addr:port",
    }
  }
}

有关可用代理类型的更多信息,请参阅ccxt代理文档

下一步

现在您已经配置了config.json文件,下一步是启动您的机器人