跳至内容

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 通知。
    退出消息(exitexit_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 ETH225.290 USD

省略交易对将触发一个查询,要求选择要交易的交易对(基于当前白名单)。通过 /forcelong 创建的交易将带有 force_entry 的买入标签。

Telegram force-buy screenshot

请注意,要使此功能生效,需将 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 的策略可能无法产生可靠且可复现的结果(该变量的变化不会反映在回测中)。请谨慎使用。