Telegram 用法¶
设置你的 Telegram 机器人¶
下面我们介绍如何创建你的 Telegram 机器人,以及如何获取你的 Telegram 用户 ID。
1. 创建你的 Telegram 机器人¶
与 Telegram BotFather 开始聊天
发送消息 /newbot。
BotFather 的回复:
好的,要创建一个新机器人。我们该给它起什么名字?请为你的机器人选择一个名称。
选择你机器人的公开名称(例如:Freqtrade 机器人)
BotFather 的回复:
很好。现在为你的机器人选择一个用户名。用户名必须以
bot结尾。例如:TetrisBot 或 tetris_bot。
选择你机器人的名称 ID 并发送给 BotFather(例如:"My_own_freqtrade_bot")
BotFather 的回复:
完成!恭喜你拥有了新的机器人。你可以在
t.me/yourbots_name_bot找到它。你现在可以为机器人添加描述、简介和头像,输入 /help 查看可用命令列表。顺便说一句,当你完成这个酷炫的机器人后,如果你想要一个更好的用户名,可以联系我们的机器人支持团队。但请确保机器人已完全正常运行后再进行此操作。使用此令牌访问 HTTP API:
22222222:APITOKEN有关 Bot API 的说明,请参见此页面:https://core.telegram.org/bots/api。父级机器人会将令牌(API 密钥)返回给您。
复制 API 令牌(如上例中的 22222222:APITOKEN),并在配置参数 token 中使用它。
别忘了点击 /START 按钮,开始与您的机器人对话。
2. Telegram user_id¶
获取您的用户 ID¶
与 userinfobot 对话
获取您的 "Id",您将在配置参数 chat_id 中使用它。
使用群组 ID¶
要获取群组 ID,您可以先将机器人添加到群组中,启动 freqtrade,然后发送 /tg_info 命令。这将直接向您返回群组 ID,而无需借助其他随机机器人。虽然 "chat_id" 参数仍是必需的,但该命令执行时并不需要将其设置为此特定群组 ID。
响应中还会在必要时包含 "topic_id" —— 两者格式均可直接复制粘贴到您的配置文件中。
{
"enabled": true,
"token": "********",
"chat_id": "-1001332619709",
"topic_id": "122"
}
对于 Freqtrade 配置,您可以将完整值(包括 -)作为字符串使用:
"chat_id": "-1001332619709"
使用 Telegram 群组
当使用 Telegram 群组时,您实际上是赋予了群组内所有成员访问您的 freqtrade 机器人的权限,并允许他们执行所有可通过 Telegram 使用的命令。请确保您信任群组中的每一位成员,以避免不必要的麻烦。
群组话题 ID¶
若要在群组中使用特定话题,可以在配置中使用 topic_id 参数。这将使机器人仅在群组的特定话题中运行。
如果群组启用了话题功能但未设置此参数,机器人将始终在群组的通用频道中响应。
"chat_id": "-1001332619709",
"topic_id": "3"
类似于群组 ID —— 您可以从目标话题/线程中使用 /tg_info 命令来获取正确的 topic-id。
授权用户¶
对于群组来说,限制哪些用户可以向机器人发送命令可能是很有用的。
如果配置中存在且为空的 "authorized_users": [],则不允许任何用户控制机器人。在以下示例中,只有 ID 为 "1234567" 的用户才能控制机器人,其他所有用户只能接收消息。
"chat_id": "-1001332619709",
"topic_id": "3",
"authorized_users": ["1234567"]
控制 Telegram 消息噪音¶
Freqtrade 提供了控制 Telegram 机器人消息频率的方法。每个设置都有以下可能的值:
on—— 发送消息,并通知用户。silent—— 发送消息,但通知不带声音或振动。off—— 完全跳过此类消息的发送。
展示不同设置的配置示例:
"telegram": {
"enabled": true,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id",
"allow_custom_messages": true,
"notification_settings": {
"status": "silent",
"warning": "on",
"startup": "off",
"entry": "silent",
"entry_fill": "on",
"entry_cancel": "silent",
"exit": {
"roi": "silent",
"emergency_exit": "on",
"force_exit": "on",
"exit_signal": "silent",
"trailing_stop_loss": "on",
"stop_loss": "on",
"stoploss_on_exchange": "on",
"custom_exit": "silent", // custom_exit without specifying an exit reason
"partial_exit": "on",
// "custom_exit_message": "silent", // Disable individual custom exit reasons
"*": "off" // Disable all other exit reasons
},
// "exit": "off", // Simplistic configuration to disable all exit messages
"exit_cancel": "on",
"exit_fill": "off",
"protection_trigger": "off",
"protection_trigger_global": "on",
"strategy_msg": "off",
"show_candle": "off"
},
"reload": true,
"balance_dust_level": 0.01
},
entry通知在下单时发送,而entry_fill通知则在订单在交易所成交后发送。- 下单时会发送
exit通知,而当订单在交易所成交时会发送exit_fill通知。
退出消息(exit和exit_fill)还可以在各个退出原因级别进行控制,使用具体的退出原因为键。所有退出原因的默认值为on,但可以通过特殊的*键进行配置,该键将作为未明确指定的所有退出原因的通配符。 *_fill类型的通知默认是关闭的,必须显式启用。- 当触发保护机制时会发送
protection_trigger通知,而当全局保护被触发时会发送protection_trigger_global通知。 strategy_msg— 接收策略中通过self.dp.send_msg()发送的通知 更多详情。show_candle— 在入场/出场消息中显示 K 线数据。可选值仅为"ohlc"或"off"。balance_dust_level用于定义/balance命令中的“零钱”标准——余额低于此值的币种将被显示。allow_custom_messages完全禁用策略消息。reload允许你在选定的消息上禁用重载按钮。
创建自定义键盘(命令快捷按钮)¶
Telegram 允许我们创建带有命令按钮的自定义键盘。默认的自定义键盘如下所示。
[
["/daily", "/profit", "/balance"], # row 1, 3 commands
["/status", "/status table", "/performance"], # row 2, 3 commands
["/count", "/start", "/stop", "/help"] # row 3, 4 commands
]
使用方法¶
你可以在 config.json 中创建自己的键盘:
"telegram": {
"enabled": true,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id",
"keyboard": [
["/daily", "/stats", "/balance", "/profit"],
["/status table", "/performance"],
["/reload_config", "/count", "/logs"]
]
},
支持的命令
仅允许以下命令。不支持命令参数!
/start, /pause, /stop, /status, /status table, /trades, /profit, /performance, /daily, /stats, /count, /locks, /balance, /stopentry, /reload_config, /show_config, /logs, /whitelist, /blacklist, /help, /version, /marketdir
Telegram 命令¶
默认情况下,Telegram 机器人会显示预定义的命令。部分命令只能通过直接发送给机器人来使用。下表列出了所有官方命令。你可以随时发送 /help 请求帮助。
| 命令 | 描述 |
|---|---|
| 系统命令 | |
/start |
启动交易器 |
/pause | /stopentry | /stopbuy |
暂停交易员。根据规则优雅地处理未平仓交易,不再开新仓。 |
/stop |
停止交易器 |
/reload_config |
重新加载配置文件 |
/show_config |
显示当前配置的相关操作设置部分 |
/logs [limit] |
显示最近的日志信息 |
/help |
显示帮助信息 |
/version |
显示版本信息 |
| 状态 | |
/status |
列出所有未平仓交易 |
/status <trade_id> |
列出一个或多个指定交易。多个 |
/status table |
以表格形式列出所有未完成的交易。待执行的买入订单用星号()标记,待执行的卖出订单用双星号(**)标记。 |
/order <trade_id> |
列出一个或多个指定交易的订单。多个 |
/trades [limit] |
以表格形式列出所有最近已关闭的交易。 |
/count |
显示已使用和可用的交易数量 |
/locks |
显示当前被锁定的交易对。 |
/unlock <pair 或 lock_id> |
解除该交易对(或该锁定 ID)的锁定。 |
/marketdir [long | short | even | none] |
更新表示当前市场方向的用户管理变量。若未提供方向,则显示当前设置的方向。 |
/list_custom_data <trade_id> [key] |
列出交易 ID 与键(key)组合对应的自定义数据。若未提供键,则列出该交易 ID 下所有键值对。 |
| 修改交易状态 | |
/forceexit <trade_id> | /fx <tradeid> |
立即退出指定交易(忽略 minimum_roi)。 |
/forceexit all | /fx all |
立即退出所有未完成的交易(忽略 minimum_roi)。 |
/fx |
/forceexit 的别名 |
/forcelong <pair> [rate] |
立即买入指定交易对。价格为可选参数,仅适用于限价单。(需将 force_entry_enable 设为 True) |
/forceshort <pair> [rate] |
立即做空指定交易对。价格为可选参数,仅适用于限价单。此命令仅适用于非现货市场。(需将 force_entry_enable 设为 True) |
/delete <trade_id> |
从数据库中删除指定交易。系统将尝试关闭未完成的订单,但需手动在交易所处理该交易。 |
/reload_trade <trade_id> |
从交易所重新加载交易。仅适用于实盘模式,可用于恢复在交易所手动卖出的交易。 |
/cancel_open_order <trade_id> | /coo <trade_id> |
取消一个交易的未成交订单。 |
| 指标 | |
/profit [<n>] |
显示最近 n 天内已关闭交易的盈亏汇总以及您的表现统计数据(默认为所有交易) |
/profit_[long|short] [<n>] |
显示最近 n 天内某一方向(做多或做空)已关闭交易的盈亏汇总及表现统计数据(默认为所有交易) |
/performance |
按交易对分组显示每笔已完成交易的表现 |
/balance |
显示机器人管理的各币种余额 |
/balance full |
显示账户中各币种的余额 |
/daily <n> |
显示过去 n 天每天的盈利或亏损情况(n 默认为 7) |
/weekly <n> |
显示过去 n 周每周的盈利或亏损情况(n 默认为 8) |
/monthly <n> |
显示过去 n 个月每月的盈利或亏损情况(n 默认为 6) |
/stats |
按退出原因显示盈利/亏损次数,以及买入和卖出的平均持仓时长 |
/exits |
按退出原因显示盈利/亏损次数,以及买入和卖出的平均持仓时长 |
/entries |
按退出原因显示盈利/亏损次数,以及买入和卖出的平均持仓时长 |
/whitelist [sorted] [baseonly] |
显示当前白名单。可选择按字母顺序排序和/或仅显示每个交易对的基础币种。 |
/blacklist [pair] |
显示当前黑名单,或将某个交易对加入黑名单。 |
Telegram 命令示例¶
以下是您将收到的每个命令的 Telegram 消息示例。
/start¶
状态:
运行中
/pause | /stopentry | /stopbuy¶
状态:
已暂停,此后将不再开新仓。运行 /start 可重新启用开仓。
通过将状态更改为 paused 来阻止机器人开新交易。已开仓的交易将继续根据其原有规则进行管理(如 ROI/退出信号、止损等)。请注意,仓位调整功能仍然启用,但仅限于退出方向——也就是说,当机器人处于 paused 状态时,只能减少已有仓位的规模。
此后,请给予机器人时间完成所有未平仓交易(可通过 /status table 查看)。待所有仓位平仓完毕后,运行 /stop 完全停止机器人。
使用 /start 将机器人恢复到 运行中 状态,使其可以开立新仓位。
警告
暂停/停止开仓信号仅在机器人运行时有效,且不会被持久化保存,因此重启机器人将导致该信号重置。
/stop¶
正在停止交易器……状态:已停止
/status¶
对于每个未平仓交易,机器人将向您发送以下消息。进入标签可通过策略进行配置。
交易 ID:
123(已持有 1 天)
当前交易对: CVC/BTC
方向: 做多
杠杆: 1.0
数量:26.64180098
进入标签: 极佳的做多信号
开仓价格:0.00007489
当前价格:0.00007489
未实现盈亏:12.95%
止损:0.00007389 (-0.02%)
/status table¶
以表格形式返回所有未平仓交易的状态。
ID L/S Pair Since Profit
---- -------- ------- --------
67 L SC/BTC 1 d 13.33%
123 S CVC/BTC 1 h 12.95%
/count¶
返回已使用和可用的交易数量。
current max
--------- -----
2 10
/profit¶
也可使用 /profit_long 和 /profit_short 分别仅显示做多或做空交易的盈利情况。
返回您的盈亏和性能摘要。
投资回报率(ROI): 已平仓交易
∙0.00485701 BTC (2.2%) (15.2 Σ%)
∙62.968 USD
投资回报率(ROI): 所有交易
∙0.00255280 BTC (1.5%) (6.43 Σ%)
∙33.095 EUR总交易次数:
138
机器人启动时间:2022-07-11 18:40:44
首次交易开仓时间:3 天前
最近一次交易开仓时间:2 分钟前
平均持仓时长:2:33:45
表现最佳:PAY/BTC: 50.23%
交易量:0.5 BTC
盈利因子:1.04
胜/负:102 / 36
胜率:73.91%
期望值(比率):4.87 (1.66)
最大回撤:9.23% (0.01255 BTC)
1.2% 的相对收益是每笔交易的平均收益。
15.2 Σ% 的相对收益基于起始资金计算——在此例中,起始资金为 0.00485701 * 1.152 = 0.00738 BTC。
起始资金 要么取自 available_capital 设置,要么通过当前钱包余额减去利润计算得出。
盈利因子 计算方式为总盈利 / 总亏损,用作衡量策略整体表现的指标。
期望值 表示每单位风险货币的平均回报,即胜率与风险回报比(盈利交易的平均收益与亏损交易的平均损失之比)的综合体现。
期望值比率 是基于所有历史交易表现,预测下一笔交易的预期盈亏。
最大回撤 对应回测指标 账户绝对回撤 (Absolute Drawdown (Account)),计算公式为 (绝对回撤) / (回撤高点 + 起始余额)。
机器人启动日期 指机器人首次启动的日期。对于较老的机器人,该日期默认为第一笔交易的开仓日期。
/forceexit ¶
BINANCE: 使用限价
0.01650000(盈利:~-4.07%,-0.00008168)退出 BTC/LTC 交易
提示
通过调用不带参数的 /forceexit 命令,可以获取所有未平仓交易的列表,该列表会显示一组按钮,用于快速退出某笔交易。此命令还有一个别名 /fx,功能相同,但在“紧急”情况下输入更快。
/forcelong [rate] | /forceshort [rate]¶
/forcebuy <pair> [rate] 也支持做多操作,但已被视为过时。
BINANCE: 以限价
0.03400000做多 ETH/BTC(1.000000 ETH,225.290 USD)
省略交易对将触发一个查询,要求选择要交易的交易对(基于当前白名单)。通过 /forcelong 创建的交易将带有 force_entry 的买入标签。

请注意,要使此功能生效,需将 force_entry_enable 设置为 true。
/performance¶
返回机器人已卖出的每种加密货币的表现情况。
表现情况:
1.RCN/BTC 0.003 BTC (57.77%) (1)
2.PAY/BTC 0.0012 BTC (56.91%) (1)
3.VIB/BTC 0.0011 BTC (47.07%) (1)
4.SALT/BTC 0.0010 BTC (30.24%) (1)
5.STORJ/BTC 0.0009 BTC (27.24%) (1)
...
相对表现基于该币种的总投资额计算,汇总该币种所有已成交的买入订单。
/balance¶
返回您在交易所持有的所有加密货币余额。
币种: BTC
可用余额: 3.05890234
总余额: 3.05890234
挂单冻结: 0.0币种: CVC
可用余额: 86.64180098
总余额: 86.64180098
挂单冻结: 0.0
/daily ¶
默认情况下,/daily 将返回最近 7 天的数据。以下示例为 /daily 3:
过去 3 天的每日收益:
Day (count) USDT USD Profit %
-------------- ------------ ---------- ----------
2022-06-11 (1) -0.746 USDT -0.75 USD -0.08%
2022-06-10 (0) 0 USDT 0.00 USD 0.00%
2022-06-09 (5) 20 USDT 20.10 USD 5.00%
/weekly ¶
默认情况下,/weekly 将返回最近 8 周的数据,包括当前周。每周从星期一开始。以下示例为 /weekly 3:
过去 3 周的每周收益(从星期一开始):
Monday (count) Profit BTC Profit USD Profit %
------------- -------------- ------------ ----------
2018-01-03 (5) 0.00224175 BTC 29,142 USD 4.98%
2017-12-27 (1) 0.00033131 BTC 4,307 USD 0.00%
2017-12-20 (4) 0.00269130 BTC 34.986 USD 5.12%
/monthly ¶
默认情况下,/monthly 将返回最近 6 个月的数据,包括当前月份。以下示例为 /monthly 3:
过去 3 个月的每月收益:
Month (count) Profit BTC Profit USD Profit % ------------- -------------- ------------ ---------- 2018-01 (20) 0.00224175 BTC 29,142 USD 4.98% 2017-12 (5) 0.00033131 BTC 4,307 USD 0.00% 2017-11 (10) 0.00269130 BTC 34.986 USD 5.10%
/whitelist¶
显示当前白名单
使用包含 22 个交易对的
StaticPairList白名单
IOTA/BTC, NEO/BTC, TRX/BTC, VET/BTC, ADA/BTC, ETC/BTC, NCASH/BTC, DASH/BTC, XRP/BTC, XVG/BTC, EOS/BTC, LTC/BTC, OMG/BTC, BTG/BTC, LSK/BTC, ZEC/BTC, HOT/BTC, IOTX/BTC, XMR/BTC, AST/BTC, XLM/BTC, NANO/BTC
/blacklist [交易对]¶
显示当前黑名单。如果指定了交易对,则该交易对将被添加到列表中。支持通过空格分隔添加多个交易对。
使用 /reload_config 可重置黑名单。
使用包含 2 个交易对的
StaticPairList黑名单
DODGE/BTC,HOT/BTC。
/version¶
版本:
0.14.3
/marketdir¶
如果提供了市场方向,该命令会更新表示当前市场方向的用户管理变量。此变量在机器人启动时不会设置为任何有效值,必须由用户手动设置。以下示例为 /marketdir long:
Successfully updated marketdirection from none to long.
如果不提供市场方向,该命令将输出当前设置的市场方向。以下示例为 /marketdir:
Currently set marketdirection: even
你可以在策略中通过 self.market_direction 使用市场方向。
机器人重启
请注意,市场方向不会被持久化保存,在机器人重启或重新加载配置后会被重置。
回测
由于该变量设计用于在模拟/实盘交易中手动调整,因此使用 market_direction 的策略可能无法产生可靠且可复现的结果(该变量的变化不会反映在回测中)。请谨慎使用。