Skip to article frontmatterSkip to article content
Freqtrade FAQ 指南

Freqtrade 常见问题

常见问题解答和故障排除

支持的市场

Freqtrade 支持现货交易,以及一些选定交易所的(隔离)期货交易。请参阅文档起始页获取支持交易所的最新列表。

我的机器人可以开空仓吗?

Freqtrade 可以在期货市场开空仓。 这需要为此制定策略 - 并在配置中设置 "trading_mode": "futures"。 请确保先阅读相关文档页面

在现货市场,在某些情况下,你可以使用杠杆现货代币,它们反映了反向交易对(例如 BTCUP/USD、BTCDOWN/USD、ETHBULL/USD、ETHBEAR/USD 等),可以用 Freqtrade 进行交易。

我的机器人可以交易期权或期货吗?

期货交易在选定的交易所受支持。请参阅文档起始页获取支持交易所的最新列表。

初学者技巧和窍门

Freqtrade 常见问题

Freqtrade 可以在同一交易对上同时开多个仓位吗?

不能。Freqtrade 一次只能为每个交易对开一个仓位。 但是,你可以使用 adjust_trade_position() 回调来调整开放仓位。

回测在 --eps 中提供了此选项 - 但这只是为了突出显示"隐藏"信号,在实盘中不起作用。

机器人无法启动

使用 freqtrade trade --config config.json 运行机器人时显示输出 freqtrade: command not found

这可能是由以下原因造成的:

机器人启动了,但处于 STOPPED 模式

确保你在 config.json 中将 initial_state 配置选项设置为 "running"

我已经等了 5 分钟,为什么机器人还没有进行任何交易?

我已经做了 12 笔交易,为什么我的总利润是负的?

我理解你的失望,但不幸的是,12 笔交易还不足以说明任何问题。如果你运行回测,你可以看到当前算法确实让你处于盈利状态,但那是在数千笔交易之后,即使在那里,你也会在特定币种上留下亏损,这些币种你已经交易了数十次甚至数百次。我们当然不断努力改进机器人,但它将_始终_是一场赌博,应该让你在每月基础上获得适度的收益,但从几笔交易中你不能说太多。

我想更改配置。我可以在不杀死机器人的情况下这样做吗?

是的。你可以编辑你的配置并使用 /reload_config 命令重新加载配置。机器人将停止,重新加载配置和策略,并使用新的配置和策略重新启动。

为什么我的机器人不卖出它买的所有东西?

这被称为"币尘",可能发生在所有交易所。 发生这种情况是因为许多交易所从"接收货币"中扣除费用 - 所以你买入 100 COIN - 但你只得到 99.9 COIN。 由于 COIN 以完整手数交易(1COIN 步长),你不能卖出 0.9 COIN(或 99.9 COIN)- 但你需要向下取整到 99 COIN。

这不是机器人问题,在手动交易时也会发生。

虽然 freqtrade 可以处理这个问题(它会卖出 99 COIN),但费用通常低于最小可交易手数(你只能交易完整的 COIN,而不是 0.9 COIN)。 将币尘(0.9 COIN)留在交易所通常是有意义的,因为下次 freqtrade 买入 COIN 时,它会消耗剩余的小额余额,这次卖出它买的所有东西,因此慢慢减少币尘余额(虽然它很可能永远不会达到正好 0)。

在可能的情况下(例如在币安),使用交易所的专用费用货币将解决这个问题。 在币安,只需在你的账户中有 BNB,并在你的个人资料中启用"使用 BNB 支付费用"。你的 BNB 余额将慢慢减少(因为它用于支付费用)- 但你将不再遇到币尘(Freqtrade 将在利润计算中包括费用)。 其他交易所不提供这种可能性,在这种情况下,你只能接受或转移到不同的交易所。

我向交易所存入了更多资金,但我的机器人没有识别到

Freqtrade 会在必要时更新交易所余额(在下单之前)。 RPC 调用(Telegram 的 /balance,API 调用到 /balance)最多可以每小时触发一次更新。

如果启用了 adjust_trade_position(并且机器人有符合条件的开放交易可以调整仓位)- 那么钱包将每小时刷新一次。 要强制立即更新,你可以使用 /reload_config - 这将重启机器人。

我想使用不完整的蜡烛图

Freqtrade 不会向策略提供不完整的蜡烛图。使用不完整的蜡烛图会导致重绘,从而导致策略出现"幽灵"买入,这在回测和事后验证都是不可能的。

你可以通过使用数据提供者的订单簿或行情方法来使用"当前"市场数据 - 但这不能在回测期间使用。

有没有设置可以只出场持有的交易而不进行任何新的入场?

你可以使用 Telegram 中的 /stopentry 命令来防止未来的交易入场,然后使用 /forceexit all(卖出所有开放交易)。

我卖出了机器人的资金,现在日志中有错误

Freqtrade 假设它开启的交易只通过机器人管理。
如果你碰巧(意外地)卖出了机器人的资金,freqtrade 将尝试通过重新查找交易所订单来恢复。

这是一种尽力而为的方法,并非在所有情况下都有效,特别是当使用 freqtrade 不支持的订单类型(OCO、冰山订单等)时,或者处理较旧的交易时(交易所不再提供完整的订单信息)。 具体限制因交易所而异 - 详细信息通常在交易所的 API 文档中记录。

我想在同一台机器上运行多个机器人

请查看高级设置文档页面

启动机器人时出现"Impossible to load Strategy"错误

当机器人无法加载策略时,会显示此错误消息。 通常,你可以使用 freqtrade list-strategies 来列出所有可用的策略。 此命令的输出还将包括一个状态列,显示是否可以加载策略。

请检查以下内容:

我在日志中看到"Missing data fillup"消息

此消息只是一个警告,表示最新的蜡烛图中有缺失的蜡烛图。 根据交易所的不同,这可能表明交易对在你使用的时间框架内没有交易 - 而交易所只返回有成交量的蜡烛图。 在低成交量交易对上,这是一个相当常见的情况。

如果这对白名单中的所有交易对都发生,这可能表明交易所最近停机。请查看你的交易所的公共渠道了解详情。

无论原因如何,Freqtrade 都会用"空"蜡烛图填充这些蜡烛图,其中开盘价、最高价、最低价和收盘价都设置为前一个蜡烛图的收盘价 - 成交量为空。在图表中,这将看起来像一个 _ - 并与交易所通常表示 0 成交量蜡烛图的方式一致。

我看到"Price jump between 2 candles detected"消息

此消息是一个警告,表示蜡烛图之间的价格跳跃超过 30%。 这可能表明交易对停止交易,并且发生了一些代币交换(例如 2021 年的 COCOS - 价格从 0.0000154 跳到 0.01621)。 此消息通常伴随着"Missing data fillup" - 因为此类交易对的交易通常会停止一段时间。

我想重置机器人的数据库

要重置机器人的数据库,你可以删除数据库(默认为 tradesv3.sqlitetradesv3.dryrun.sqlite),或通过 --db-url 使用不同的数据库 URL(例如 sqlite:///mynewdatabase.sqlite)。

我在日志中看到"Outdated history for pair xxx"

机器人试图告诉你它收到了一个过时的最后一个蜡烛图(不是最后一个完整的蜡烛图)。 因此,Freqtrade 不会为此交易对入场 - 因为在旧信息上交易通常不是我们想要的。

此警告可能指向以下问题之一:

我在日志中看到消息"Couldn’t reuse watch for xxx"

这是一个信息性消息,表示机器人试图使用来自 websocket 的 K 线数据,但交易所没有提供正确的信息。 如果 websocket 连接中断 - 或者如果交易对在您使用的时间框架内没有发生任何交易,就可能发生这种情况。

Freqtrade 将通过回退到 REST API 来优雅地处理这种情况。 虽然这会使迭代稍微变慢(由于 REST API 调用) - 但不会对机器人的运行造成任何问题。

(#im-getting-the-exchange-xxx-does-not-support-market-orders-message-and-cannot-run-my-strategy)=

我看到"Exchange XXX does not support market orders."消息,无法运行我的策略

正如消息所说,你的交易所不支持市价单,并且你将订单类型之一设置为"market"。你的策略可能是为其他交易所编写的,并为"stoploss"订单设置了"market"订单,这对于大多数支持市价单的交易所来说是正确的(但对于 Gate.io 不是)。

要修复此问题,在策略中重新定义订单类型,使用"limit"而不是"market":

    order_types = {
        ...
        "stoploss": "limit",
        ...
    }

如果订单类型是在你的自定义配置中定义的,而不是在策略中,则应该在配置文件中应用相同的修复。

我尝试启动机器人实盘,但收到 API 权限错误

Invalid API-key, IP, or permissions for action 这样的错误实际上就是它们所说的意思。 你的 API 密钥要么无效(复制/粘贴错误?检查配置中是否有前导/尾随空格),已过期,或者你运行机器人的 IP 未在交易所的 API 控制台中启用。 通常,需要"现货交易"权限(或你使用的交易所中的等效权限)。 期货通常需要特别启用。

如何搜索机器人日志中的内容?

默认情况下,机器人将其日志写入 stderr 流。这样实现是为了让你可以轻松地将机器人的诊断消息与回测、Edge 和 Hyperopt 结果、其他各种 Freqtrade 实用子命令的输出,以及你可能插入到策略中的自定义 print() 的输出分开。因此,如果你需要使用 grep 实用程序搜索日志消息,你需要将 stderr 重定向到 stdout 并忽略 stdout。

> freqtrade --some-options 2>&1 >/dev/null | grep 'something'

(注意,2>&1>/dev/null 应该按此顺序写入)

> freqtrade --some-options 2> >(grep 'something') >/dev/null

> freqtrade --some-options 2> >(grep -v 'something' 1>&2)
> freqtrade --logfile /path/to/mylogfile.log --some-options

然后像这样 grep:

> cat /path/to/mylogfile.log | grep 'something'

或者甚至在机器人工作时实时查看,随着日志文件的增长:

> tail -f /path/to/mylogfile.log | grep 'something'

从单独的终端窗口。

在 Windows 上,Freqtrade 也支持 --logfile 选项,你可以使用 findstr 命令在日志中搜索感兴趣的字符串:

> type \path\to\mylogfile.log | findstr "something"

Hyperopt 模块

为什么 freqtrade 没有 GPU 支持?

首先,大多数指标库都没有 GPU 支持 - 因此,指标计算的收益很小。 GPU 改进只适用于 pandas 原生计算 - 或你自己编写的计算。

GPU 只擅长处理数字(浮点运算)。 对于 hyperopt,我们需要数字处理(找到下一个参数)和运行 python 代码(运行回测)。 因此,GPU 不太适合 hyperopt 的大部分部分。

使用 GPU 的好处因此相当小 - 并且不会证明尝试添加 GPU 支持所带来的复杂性是合理的。

但是,如果你认为必须这样做,没有什么可以阻止你在策略中使用支持 GPU 的指标 - 但是你可能会对这将给你带来的微小收益感到失望(与复杂性相比)。

我需要多少个 epoch 才能获得好的 Hyperopt 结果?

默认情况下,不带 -e/--epochs 命令行选项调用的 Hyperopt 只会运行 100 个 epoch,意味着对你的触发器、守卫等进行 100 次评估。太少而无法找到很好的结果(除非你非常幸运),所以你可能需要运行 10000 或更多。但这将需要很长时间来计算。

由于 hyperopt 使用贝叶斯搜索,运行太多 epoch 可能不会产生更好的结果。

因此,建议反复运行 500-1000 个 epoch,直到你总共达到至少 10000 个 epoch(或对结果满意)。你可以通过查看结果来判断 - 如果机器人不断发现更好的策略,最好继续运行。

freqtrade hyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy -e 1000

为什么运行 hyperopt 需要很长时间?

这个答案是在 0.15.1 版本发布期间写的,当时我们有:

以下计算仍然非常粗略且不太精确,但它会给出一个概念。仅这些触发器和守卫就有 8*10^9*10 次评估。大约总共 800 亿次评估。 你运行了 100000 次评估?恭喜,你已经完成了搜索空间的大约 1/100000,假设机器人从未多次测试相同的参数。

示例:一年中 650 次 4% 利润 vs 10000 次 0.3% 利润。假设你将 --timerange 设置为 365 天。

示例: freqtrade --config config.json --strategy SampleStrategy --hyperopt SampleHyperopt -e 1000 --timerange 20190601-20200601

Edge 模块

Edge 实现了一个有趣的方法来控制仓位大小,这背后有什么理论吗?

Edge 模块主要是 freqtrade 团队成员 mishakercreslinux 头脑风暴的结果。

你可以在以下来源中找到关于期望值、胜率、风险管理和仓位大小的更多信息:

官方渠道

Freqtrade 仅使用以下官方渠道:

与 freqtrade 项目相关的任何人都不会询问你的交易所密钥或任何其他可能暴露你的资金被利用的信息。 如果有人要求你暴露交易所密钥或将资金发送到某个随机钱包,请不要遵循这些指示。

不遵循这些准则将不是 freqtrade 的责任。

“Freqtrade 代币”

Freqtrade 没有加密货币代币发行。

你在互联网上找到的提及 Freqtrade、FreqAI 或 freqUI 的代币发行必须被视为骗局,试图利用 freqtrade 的受欢迎程度来获取他们自己的不正当利益。