Skip to content

止损

stoploss 配置参数是一个损失比例,它应该触发卖出。 例如,值 -0.10 表示如果盈利下降到 -10%,将立即卖出。这个参数是可选的。 止损计算包括费用,所以止损 -10% 会被放置在初始进入点的 10% 之下。

大多数策略文件已经包括了最佳的 stoploss 值。

信息

此文件中提到的所有止损属性都可以在策略或配置中设置。 配置值将覆盖策略值。

在交易所/Freqtrade 上的止损

这些止损模式可以是 在交易所上不在交易所上

可以使用以下值配置这些模式:

    'emergency_exit': 'market',
    'stoploss_on_exchange': False,
    'stoploss_on_exchange_interval': 60,
    'stoploss_on_exchange_limit_ratio': 0.99

在交易所上的止损仅支持以下交易所,并且不是所有交易所都支持止损限价和止损市价。 如果只有一种可用模式,则忽略订单类型。

交易所 止损类型
币安 限价
币安期货 市价,限价
HTX (前火币) 限价
Kraken 市价,限价
Gate 限价
Okx 限价
Kucoin 止损限价,止损市价

严格止损

在使用交易所的止损时不要设置太低/过紧的止损值! 如果设置得太低/过紧,您会面临错过订单成交的风险,止损将无法发挥作用。

stoploss_on_exchange 和 stoploss_on_exchange_limit_ratio

启用或禁用交易所上的止损。 如果止损是“在交易所上”,这意味着在购买订单成交后立即在交易所上放置一个止损限价订单。这将保护您免受市场突然暴跌的风险,因为订单执行完全在交易所内部进行,没有潜在的网络开销。

如果 stoploss_on_exchange 使用限价订单,则交易所需要两个价格,即止损价格和限价。 stoploss 定义了限价订单放置的止损价格 - 限价应稍低于此价格。 如果交易所同时支持限价和市价止损订单,则 stoploss 的值将用于确定止损类型。

计算示例:我们以100美元购买该资产。 止损价格为95美元,那么限价应为 95 * 0.99 = 94.05$ - 所以限价订单的成交价可在95美元和94.05美元之间。

例如,假设止损设置在交易所上,并启用了跟踪止损,并且市场正在上涨,则机器人会自动取消先前的止损订单,并放置一个停盈值高于先前的止损订单的新订单。

注意

如果启用了 stoploss_on_exchange 并且手动在交易所上取消了止损,则机器人将创建一个新的止损订单。

stoploss_on_exchange_interval

在交易所上设置止损时,还有另一个名为 stoploss_on_exchange_interval 的参数。这个参数配置了机器人检查并在需要时更新止损的间隔时间(以秒为单位)。 机器人无法每隔5秒执行一次检查(每次迭代),否则将被交易所禁止。 因此,该参数将告诉机器人应该多久更新一次止损订单。默认值为60(1分钟)。 如果您意外取消了止损订单,相同的逻辑将在交易所上重新应用止损订单。

止损价格类型

仅适用于期货

stoploss_price_type 仅适用于期货市场(在支持该设置的交易所上)。 Freqtrade 将在启动时对此设置执行验证,如果选择了交易所不支持的无效设置,将无法启动。 支持的价格类型在每个交易所之间会有所不同。请与您的交易所核实其支持的价格类型。

在期货市场上,按照不同的价格类型可以触发止损。 在交易所术语中,对这些价格的命名通常各不相同,但通常是类似于 "last"(或 "contract price" )、"mark" 和 "index" 之类的名称。

该设置的可接受值为 "last""mark""index"。Freqtrade 会自动将这些值转换为相应的 API 类型,并相应地下达 在交易所上的止损订单

force_exit

force_exit 是一个可选值,默认与 exit 相同,并在从 Telegram 或 Rest API 发送 /forceexit 命令时使用。

force_entry

force_entry 是一个可选值,默认与 entry 相同,并在从 Telegram 或 Rest API 发送 /forceentry 命令时使用。

emergency_exit

emergency_exit 是一个可选值,默认为 market,在创建交易所上的止损订单失败时使用。 以下内容是默认值,如果未在策略或配置文件中更改,则使用该值。

策略文件示例:

order_types = {
    "entry": "限价",
    "exit": "限价",
    "emergency_exit": "市价",
    "stoploss": "市价",
    "stoploss_on_exchange": True,
    "stoploss_on_exchange_interval": 60,
    "stoploss_on_exchange_limit_ratio": 0.99
}

止损类型

目前机器人包含以下止损支持模式:

  1. 静态止损。
  2. 移动止损。
  3. 移动止损,自定义正向损失。
  4. 只有在交易达到一定偏移量后才启用移动止损。
  5. 自定义止损函数

静态止损

这个很简单,您定义一个x的止损(作为价格的比例,即x * 价格的100%)。一旦损失超过定义的损失,它将尝试卖出资产。

止损示例:

    stoploss = -0.10

例如,简化的计算:

  • 机器人以100美元的价格购买一个资产
  • 止损被定义为-10%
  • 一旦资产下跌到90美元以下,止损就会被触发

跟踪止损

此功能的初始值为 stoploss,就像您定义静态止损一样。 要启用跟踪止损功能:

    stoploss = -0.10
    trailing_stop = True

这将激活一个算法,每当资产价格上涨时,会自动将止损上移。

例如,简单的数学示例:

  • 机器人以100美元的价格购买一种资产
  • 止损设置为-10%
  • 一旦资产跌破90美元,止损将会被触发
  • 假设资产现在增至102美元
  • 此时,止损将是102美元的-10%,即91.8美元
  • 现在资产价值下跌至101美元,止损仍然为91.8美元,将在91.8美元时触发。

总结一下:止损将被调整为始终是最高观察到的价格的-10%。

跟踪止损,自定义正利润

当您的买入价处于亏损状态(买入价 - 手续费)时,您还可以设置一个默认止损值,但一旦达到正的结果(或您定义的偏移量),系统将使用一个新的止损值,该值可以是不同的。 例如,您的默认止损为-10%,但一旦获利超过0%(例如0.1%),将使用不同的跟踪止损值。

注意

如果您希望该止损仅在达到盈亏平衡或获利时才更改(大多数用户的需求),请参考下一章节中启用了偏移量的内容。

两个值都需要将trailing_stop设置为True,并设置trailing_stop_positive的值。

    stoploss = -0.10
    trailing_stop = True
    trailing_stop_positive = 0.02
    trailing_stop_positive_offset = 0.0
    trailing_only_offset_is_reached = False  # 默认值 - 对于这个例子不必要

例如,简化的数学计算:

  • 机器人以100美元的价格购买一种资产
  • 止损设置为-10%
  • 当资产下跌到90美元以下时,止损将被触发
  • 假设资产现在上涨到102美元
  • 此时的止损将是102美元的-2% = 99.96美元(99.96美元的止损将被锁定,并且将以-2%的幅度跟随资产价格增加)
  • 现在资产价值下跌到101美元,止损仍然是99.96美元,并且一旦跌破99.96美元就会触发止损。

0.02将被转换为-2%的止损率。在此之前,stoploss用于跟踪止损。

使用偏移量改变止损率

使用trailing_stop_positive_offset来确保您的新止损率是有利的,即将trailing_stop_positive_offset设置为高于trailing_stop_positive。您的第一个新止损值将已经锁定了利润。

简化的数学示例:

    stoploss = -0.10
    trailing_stop = True
    trailing_stop_positive = 0.02
    trailing_stop_positive_offset = 0.03
  • 机器人以100美元的价格购买一种资产
  • 止损设置为-10%,因此当资产下降到90美元以下时,止损将被触发
  • 假设资产现在上涨到102美元
  • 此时的止损将是91.8美元 - 在最高观察到的比率下降了10%
  • 假设资产现在上涨到103.5美元(超过了配置的偏移量)
  • 此时的止损将是103.5美元的-2% = 101.43美元
  • 现在资产价值下跌到102美元,止损仍然是101.43美元,并且一旦价格跌破101.43美元就会触发止损。

仅在交易达到一定偏移量后使用跟踪止损率

您还可以在达到偏移量之前保持一个静态的止损,并在市场转向时追踪交易以获利。

如果trailing_only_offset_is_reached = True,则只有在达到偏移量时才会激活追踪止损。 在此之前,止损将保持在配置的“stoploss”上。 此选项可与trailing_stop_positive一起使用,但使用trailing_stop_positive_offset作为偏移量。

配置(偏移量为购买价+ 3%):

    stoploss = -0.10
    trailing_stop = True
    trailing_stop_positive = 0.02
    trailing_stop_positive_offset = 0.03
    trailing_only_offset_is_reached = True

例如,简化的数学计算:

  • 机器人以100美元的价格购买资产
  • 止损设置为-10%
  • 一旦资产跌破90美元,止损将被触发
  • 除非资产增加到或超过配置的偏移量,否则止损将保持在90美元
  • 假设资产现在增加到103美元(在这里我们配置了偏移量)
  • 此时止损将为103美元的-2% = 100.94美元
  • 现在资产的价值下跌到101美元,止损仍将为100.94美元,并在100.94美元时触发

提示

确保此值(trailing_stop_positive_offset)低于最小ROI,否则首先将应用最小ROI并卖出交易。

停损和杠杆

停损应被视为“此交易的风险”-因此,100美元的交易的10%停损意味着您愿意在此交易上损失10美元(10%)-这将在价格下跌10%时触发。

在使用杠杆时,应用相同的原则-停损定义交易的风险(您愿意损失的金额)。因此,对于10倍交易而言,10%的止损将会在价格变动1%时触发。 如果你的投资金额(自己的资本)为100美元——在10倍杠杆下,这次交易将达到1000美元。 如果价格波动1%——你已经损失了10美元的自己的资本——因此,止损将在这种情况下触发。

请确保注意此点,并避免设置过于紧密的止损(在10倍杠杆下,10%的风险可能太小,以至于无法让交易有所“呼吸”)。

更改未结交易的止损

可以通过更改配置或策略中的值来更改未结交易的止损,并使用/reload_config命令(或者完全停止并重新启动机器人)。

新的止损值将应用于未结交易(并将生成相应的日志消息)。

限制

如果启用了trailing_stop并且已经调整了止损,或者如果已启用了Edge(因为Edge将基于当前市场情况重新计算止损),则无法更改止损值。