止损¶
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
}
止损类型¶
目前机器人包含以下止损支持模式:
- 静态止损。
- 移动止损。
- 移动止损,自定义正向损失。
- 只有在交易达到一定偏移量后才启用移动止损。
- 自定义止损函数
静态止损¶
这个很简单,您定义一个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将基于当前市场情况重新计算止损),则无法更改止损值。