Telegram 使用指南
设置您的 Telegram 机器人
下面我们将解释如何创建您的 Telegram 机器人,以及如何获取您的 Telegram 用户 ID。
1. 创建您的 Telegram 机器人
开始与 Telegram BotFather 聊天。
发送消息 /newbot。
BotFather 的回复:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
选择您机器人的公共名称(例如 Freqtrade bot)。
BotFather 的回复:
Good. Now let's choose a username for your bot. It must end in
bot. Like this, for example: TetrisBot or tetris_bot.
选择您机器人的用户名 ID 并发送给 BotFather(例如 My_own_freqtrade_bot)。
BotFather 的回复:
Done! Congratulations on your new bot. You will find it at
t.me/yourbots_name_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
22222222:APITOKEN
For a description of the Bot API, see this page: https://core.telegram.org/bots/api Father bot will return you the token (API key)
复制 API Token(上面示例中的 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 (Group Topic ID)
要在群组中使用特定话题,您可以在配置中使用 topic_id 参数。这将允许您在群组的特定话题中使用机器人。
如果没有这个设置,如果群聊启用了话题功能,机器人将始终响应群组中的通用频道(General channel)。
"chat_id": "-1001332619709",
"topic_id": "3"类似于群组 ID —— 您可以在话题/线程中通过 /tg_info 获取正确的话题 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
"partial_exit": "on",
// "custom_exit_message": "silent", // 禁用特定的自定义退出原因
"*": "off" // 禁用所有其他退出原因
},
// "exit": "off", // 禁用所有退出消息的简易配置
"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"], # 第 1 行,3 个命令
["/status", "/status table", "/performance"], # 第 2 行,3 个命令
["/count", "/start", "/stop", "/help"] # 第 3 行,4 个命令
]用法
您可以在 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> | 列出一个或多个特定的交易。多个 <trade_id> 用空格分隔。 |
/status table | 表格格式列出所有开启的交易。待处理买单标有星号 (*),待处理卖单标有双星号 (**) |
/order <trade_id> | 列出一个或多个特定交易的订单。多个 <trade_id> 用空格分隔。 |
/trades [limit] | 表格格式列出所有最近关闭的交易。 |
/count | 显示已使用和可用的交易插槽数 |
/locks | 显示当前被锁定的交易对。 |
/unlock <pair or lock_id> | 移除该交易对(或该锁定 ID)的锁定。 |
/marketdir [long | short | even | none] | 更新代表当前市场方向的用户自定义变量。如果未提供方向,则显示当前设置的方向。 |
/list_custom_data <trade_id> [key] | 列出 Trade ID 和 Key 组合的自定义数据。如果未提供 Key,则列出该 Trade ID 下找到的所有键值对。 |
| 修改交易状态 | |
/forceexit <trade_id> | /fx <tradeid> | 立即退出给定交易(忽略 minimum_roi)。 |
/forceexit all | /fx all | 立即退出所有开启的交易(忽略 minimum_roi)。 |
/fx | /forceexit 的别名 |
/forcelong <pair> [rate] | 立即买入给定交易对。价格(rate)是可选的,仅适用于限价单。(force_entry_enable 必须设置为 True) |
/forceshort <pair> [rate] | 立即做空给定交易对。价格(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>]` |
/performance | 按交易对分组显示每个已完成交易的表现 |
/balance | 显示机器人管理下的每个币种余额 |
/balance full | 显示账户内每个币种的余额 |
/daily <n> | 显示过去 n 天(默认 7 天)内的单日盈亏 |
/weekly <n> | 显示过去 n 周(默认 8 周)内的单周盈亏 |
/monthly <n> | 显示过去 n 个月(默认 6 个月)内的单月盈亏 |
/stats | 按退出原因显示胜/负情况以及买入和卖出的平均持仓时长 |
/exits | 同 /stats |
/entries | 同 /stats |
/whitelist [sorted] [baseonly] | 显示当前白名单。可选:按字母顺序排列和/或仅显示每个配对的基础货币。 |
/blacklist [pair] | 显示当前黑名单,或将交易对添加到黑名单。 |
Telegram 命令实战
下面是您在执行各命令后会收到的 Telegram 消息示例。
/start
Status:
running
/pause | /stopentry | /stopbuy
Status:
paused, no more entries will occur from now. Run /start to enable entries.
通过将状态更改为 paused 来防止机器人开启新交易。 已开启的交易将继续根据常规规则(ROI/离场信号、止损等)进行管理。 注意,仓位调整(Position adjustment)仍然保持激活状态,但仅限于离场侧 —— 这意味着当机器人处于 paused 状态时,它只能减少已开启交易的仓位大小。
执行此操作后,给机器人一点时间来关闭已开启的交易(可以通过 /status table 检查)。 一旦所有仓位都关闭,运行 /stop 以完全停止机器人。
使用 /start 将机器人恢复到 running 状态,允许其开启新仓位。
WARNING
暂停/停止入场信号仅在机器人运行时有效,且不会持久化,因此重启机器人将导致此项重置。
/stop
Stopping trader ...Status:stopped
/status
对于每个开启的交易,机器人将发送以下消息。 入场标签(Enter Tag)可通过策略配置。
Trade ID:
123(since 1 days ago)
Current Pair: CVC/BTC
Direction: Long
Leverage: 1.0
Amount:26.64180098
Enter Tag: Awesome Long Signal
Open Rate:0.00007489
Current Rate:0.00007489
Unrealized Profit:12.95%
Stoploss: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: Close trades
∙0.00485701 BTC (2.2%) (15.2 Σ%)
∙62.968 USD
ROI: All trades
∙0.00255280 BTC (1.5%) (6.43 Σ%)
∙33.095 EURTotal Trade Count:
138
Bot started:2022-07-11 18:40:44
First Trade opened:3 days ago
Latest Trade opened:2 minutes ago
Avg. Duration:2:33:45
Best Performing:PAY/BTC: 50.23%
Trading volume:0.5 BTC
Profit factor:1.04
Win / Loss:102 / 36
Winrate:73.91%
Expectancy (Ratio):4.87 (1.66)
Max Drawdown:9.23% (0.01255 BTC)
1.2% 的相对利润是每笔交易的平均利润。15.2 Σ% 的相对利润基于起始资本 —— 在本例中,起始资本为 0.00485701 * 1.152 = 0.00738 BTC。
起始资本 (Starting capital) 要么取自 available_capital 设置,要么通过当前钱包大小减去利润计算得出。
利润因子 (Profit Factor) 计算为毛利润 / 毛亏损 —— 应作为策略的整体衡量指标。
预期值 (Expectancy) 对应于风险单位货币的平均回报,即胜率和风险回报比(获利交易的平均收益与亏损交易的平均亏损之比)。
预期比率 (Expectancy Ratio) 是基于过往交易表现对下一笔交易的预期盈亏。
最大回撤 (Max drawdown) 对应于回测指标 Absolute Drawdown (Account) —— 计算方式为 (Absolute Drawdown) / (DrawdownHigh + startingBalance)。
机器人启动日期 (Bot started date) 指的是机器人第一次启动的日期。对于较旧的机器人,这将默认使用第一笔交易的开启日期。
/forceexit <trade_id>
BINANCE: Exiting BTC/LTC with limit
0.01650000 (profit: ~-4.07%, -0.00008168)
TIP
您可以通过不带参数调用 /forceexit 来获取所有开启交易的列表,它将显示一系列按钮以便简单地退出交易。 该命令有一个别名 /fx —— 具有相同的功能,但在“紧急”情况下输入速度更快。
/forcelong <pair> [rate] | /forceshort <pair> [rate]
/forcebuy <pair> [rate] 也支持做多,但应视为已弃用。
BINANCE: Long ETH/BTC with limit
0.03400000(1.000000 ETH,225.290 USD)
省略交易对将开启查询,询问要交易的配对(基于当前白名单)。 通过 /forcelong 创建的交易将具有名为 force_entry 的买入标签。

请注意,要使此命令生效,force_entry_enable 需要设置为 true。
/performance
返回机器人已卖出的每种加密货币的表现。
Performance:
RCN/BTC 0.003 BTC (57.77%) (1)PAY/BTC 0.0012 BTC (56.91%) (1)VIB/BTC 0.0011 BTC (47.07%) (1)SALT/BTC 0.0010 BTC (30.24%) (1)STORJ/BTC 0.0009 BTC (27.24%) (1)
...
相对表现是针对该货币的总投资额计算的,汇总了该货币所有已成交的入场订单。
/balance
返回您在交易所拥有的所有加密货币的余额。
Currency: BTC
Available: 3.05890234
Balance: 3.05890234
Pending: 0.0Currency: CVC
Available: 86.64180098
Balance: 86.64180098
Pending: 0.0
/daily <n>
默认情况下,/daily 将返回过去 7 天的结果。下面的示例用于 /daily 3:
Daily Profit over the last 3 days:
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 <n>
默认情况下,/weekly 将返回过去 8 周(包括当前周)的结果。每周从周一开始。下面的示例用于 /weekly 3:
Weekly Profit over the last 3 weeks (starting from Monday):
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 <n>
默认情况下,/monthly 将返回过去 6 个月(包括当前月)的结果。下面的示例用于 /monthly 3:
Monthly Profit over the last 3 months:
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
显示当前的白名单
Using whitelist
StaticPairListwith 22 pairsIOTA/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 [pair]
显示当前的黑名单。 如果提供了交易对参数,则此交易对将被添加到黑名单中。 也支持用空格分隔的多个交易对。
使用 /reload_config 重置黑名单。
Using blacklist
StaticPairListwith 2 pairsDODGE/BTC,HOT/BTC.
/version
Version:
0.14.3
/marketdir
如果提供了市场方向,该命令将更新代表当前市场方向的用户变量。 在机器人启动时,该变量未设置为任何有效的市场方向,必须由用户设置。下面的示例用于 /marketdir long:
Successfully updated marketdirection from none to long.如果未提供市场方向,该命令将输出当前设置的市场方向。下面的示例用于 /marketdir:
Currently set marketdirection: even您可以在策略中通过 self.market_direction 使用市场方向。
机器人重启
请注意,市场方向不会持久化,在机器人重启/重新加载后会被重置。
回测
由于此值/变量旨在模拟/实盘交易中手动更改,使用 market_direction 的策略可能不会产生可靠、可重现的结果(对该变量的更改不会在回测中反映)。请自行承担风险。
