freqtrade_origin/en/2020.02/stoploss/index.html

1173 lines
28 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../strategy-customization/">
<link rel="next" href="../bot-usage/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.30">
<title>Stoploss - Freqtrade</title>
<link rel="stylesheet" href="../assets/stylesheets/main.3cba04c6.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../stylesheets/ft.extra.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="tear">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#stop-loss" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="Freqtrade" class="md-header__button md-logo" aria-label="Freqtrade" data-md-component="logo">
<img src="../images/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Freqtrade
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Stoploss
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="Freqtrade" class="md-nav__button md-logo" aria-label="Freqtrade" data-md-component="logo">
<img src="../images/logo.png" alt="logo">
</a>
Freqtrade
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../docker/" class="md-nav__link">
<span class="md-ellipsis">
Installation Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../strategy-customization/" class="md-nav__link">
<span class="md-ellipsis">
Strategy Customization
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Stoploss
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Stoploss
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#stop-loss-types" class="md-nav__link">
<span class="md-ellipsis">
Stop Loss Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-stop-loss" class="md-nav__link">
<span class="md-ellipsis">
Static Stop Loss
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trailing-stop-loss" class="md-nav__link">
<span class="md-ellipsis">
Trailing Stop Loss
</span>
</a>
<nav class="md-nav" aria-label="Trailing Stop Loss">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#custom-positive-stoploss" class="md-nav__link">
<span class="md-ellipsis">
Custom positive stoploss
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trailing-only-once-offset-is-reached" class="md-nav__link">
<span class="md-ellipsis">
Trailing only once offset is reached
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#changing-stoploss-on-open-trades" class="md-nav__link">
<span class="md-ellipsis">
Changing stoploss on open trades
</span>
</a>
<nav class="md-nav" aria-label="Changing stoploss on open trades">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#limitations" class="md-nav__link">
<span class="md-ellipsis">
Limitations
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../bot-usage/" class="md-nav__link">
<span class="md-ellipsis">
Start the bot
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Control the bot
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Control the bot
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../telegram-usage/" class="md-nav__link">
<span class="md-ellipsis">
Telegram
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../webhook-config/" class="md-nav__link">
<span class="md-ellipsis">
Web Hook
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rest-api/" class="md-nav__link">
<span class="md-ellipsis">
REST API
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../data-download/" class="md-nav__link">
<span class="md-ellipsis">
Data Downloading
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../backtesting/" class="md-nav__link">
<span class="md-ellipsis">
Backtesting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hyperopt/" class="md-nav__link">
<span class="md-ellipsis">
Hyperopt
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../edge/" class="md-nav__link">
<span class="md-ellipsis">
Edge Positioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../utils/" class="md-nav__link">
<span class="md-ellipsis">
Utility Subcommands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exchanges/" class="md-nav__link">
<span class="md-ellipsis">
Exchange-specific Notes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
<span class="md-ellipsis">
Data Analysis
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
Data Analysis
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../data-analysis/" class="md-nav__link">
<span class="md-ellipsis">
Jupyter Notebooks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../strategy_analysis_example/" class="md-nav__link">
<span class="md-ellipsis">
Strategy analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../plotting/" class="md-nav__link">
<span class="md-ellipsis">
Plotting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../sql_cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
SQL Cheatsheet
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../advanced-setup/" class="md-nav__link">
<span class="md-ellipsis">
Advanced Post-installation Tasks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../advanced-hyperopt/" class="md-nav__link">
<span class="md-ellipsis">
Advanced Hyperopt
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sandbox-testing/" class="md-nav__link">
<span class="md-ellipsis">
Sandbox Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../deprecated/" class="md-nav__link">
<span class="md-ellipsis">
Deprecated Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../developer/" class="md-nav__link">
<span class="md-ellipsis">
Contributors Guide
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#stop-loss-types" class="md-nav__link">
<span class="md-ellipsis">
Stop Loss Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-stop-loss" class="md-nav__link">
<span class="md-ellipsis">
Static Stop Loss
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trailing-stop-loss" class="md-nav__link">
<span class="md-ellipsis">
Trailing Stop Loss
</span>
</a>
<nav class="md-nav" aria-label="Trailing Stop Loss">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#custom-positive-stoploss" class="md-nav__link">
<span class="md-ellipsis">
Custom positive stoploss
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trailing-only-once-offset-is-reached" class="md-nav__link">
<span class="md-ellipsis">
Trailing only once offset is reached
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#changing-stoploss-on-open-trades" class="md-nav__link">
<span class="md-ellipsis">
Changing stoploss on open trades
</span>
</a>
<nav class="md-nav" aria-label="Changing stoploss on open trades">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#limitations" class="md-nav__link">
<span class="md-ellipsis">
Limitations
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="stop-loss">Stop Loss<a class="headerlink" href="#stop-loss" title="Permanent link">&para;</a></h1>
<p>The <code>stoploss</code> configuration parameter is loss in percentage that should trigger a sale.
For example, value <code>-0.10</code> will cause immediate sell if the profit dips below -10% for a given trade. This parameter is optional.</p>
<p>Most of the strategy files already include the optimal <code>stoploss</code> value.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. Configuration values will override the strategy values.</p>
</div>
<h2 id="stop-loss-types">Stop Loss Types<a class="headerlink" href="#stop-loss-types" title="Permanent link">&para;</a></h2>
<p>At this stage the bot contains the following stoploss support modes:</p>
<ol>
<li>Static stop loss.</li>
<li>Trailing stop loss.</li>
<li>Trailing stop loss, custom positive loss.</li>
<li>Trailing stop loss only once the trade has reached a certain offset.</li>
</ol>
<p>Those stoploss modes can be <em>on exchange</em> or <em>off exchange</em>. If the stoploss is <em>on exchange</em> it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled.</p>
<p>In case of stoploss on exchange there is another parameter called <code>stoploss_on_exchange_interval</code>. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary.</p>
<p>For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order.
The bot cannot do this every 5 seconds (at each iteration), otherwise it would get banned by the exchange.
So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute).
This same logic will reapply a stoploss order on the exchange should you cancel it accidentally.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Stoploss on exchange is only supported for Binance (stop-loss-limit) and Kraken (stop-loss-market) as of now.</p>
</div>
<h2 id="static-stop-loss">Static Stop Loss<a class="headerlink" href="#static-stop-loss" title="Permanent link">&para;</a></h2>
<p>This is very simple, you define a stop loss of x (as a ratio of price, i.e. x * 100% of price). This will try to sell the asset once the loss exceeds the defined loss.</p>
<h2 id="trailing-stop-loss">Trailing Stop Loss<a class="headerlink" href="#trailing-stop-loss" title="Permanent link">&para;</a></h2>
<p>The initial value for this is <code>stoploss</code>, just as you would define your static Stop loss.
To enable trailing stoploss:</p>
<div class="highlight"><pre><span></span><code><span class="n">trailing_stop</span> <span class="o">=</span> <span class="kc">True</span>
</code></pre></div>
<p>This will now activate an algorithm, which automatically moves the stop loss up every time the price of your asset increases.</p>
<p>For example, simplified math:</p>
<ul>
<li>the bot buys an asset at a price of 100$</li>
<li>the stop loss is defined at 2%</li>
<li>the stop loss would get triggered once the asset dropps below 98$</li>
<li>assuming the asset now increases to 102$</li>
<li>the stop loss will now be 2% of 102$ or 99.96$</li>
<li>now the asset drops in value to 101<span class="arithmatex"><span class="MathJax_Preview">, the stop loss will still be 99.96</span><script type="math/tex">, the stop loss will still be 99.96</script></span> and would trigger at 99.96$.</li>
</ul>
<p>In summary: The stoploss will be adjusted to be always be 2% of the highest observed price.</p>
<h3 id="custom-positive-stoploss">Custom positive stoploss<a class="headerlink" href="#custom-positive-stoploss" title="Permanent link">&para;</a></h3>
<p>It is also possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage, the system will utilize a new stop loss, which can have a different value.
For example your default stop loss is 5%, but once you have 1.1% profit, it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them.</p>
<p>Both values require <code>trailing_stop</code> to be set to true.</p>
<div class="highlight"><pre><span></span><code> <span class="n">trailing_stop_positive</span> <span class="o">=</span> <span class="mf">0.01</span>
<span class="n">trailing_stop_positive_offset</span> <span class="o">=</span> <span class="mf">0.011</span>
</code></pre></div>
<p>The 0.01 would translate to a 1% stop loss, once you hit 1.1% profit.
Before this, <code>stoploss</code> is used for the trailing stoploss.</p>
<p>Read the <a href="#trailing-only-once-offset-is-reached">next section</a> to keep stoploss at 5% of the entry point.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>Make sure to have this value (<code>trailing_stop_positive_offset</code>) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade.</p>
</div>
<h3 id="trailing-only-once-offset-is-reached">Trailing only once offset is reached<a class="headerlink" href="#trailing-only-once-offset-is-reached" title="Permanent link">&para;</a></h3>
<p>It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market turns.</p>
<p>If <code>"trailing_only_offset_is_reached": true</code> then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured <code>stoploss</code>.
This option can be used with or without <code>trailing_stop_positive</code>, but uses <code>trailing_stop_positive_offset</code> as offset.</p>
<div class="highlight"><pre><span></span><code> <span class="n">trailing_stop_positive_offset</span> <span class="o">=</span> <span class="mf">0.011</span>
<span class="n">trailing_only_offset_is_reached</span> <span class="o">=</span> <span class="n">true</span>
</code></pre></div>
<p>Simplified example:</p>
<div class="highlight"><pre><span></span><code> <span class="n">stoploss</span> <span class="o">=</span> <span class="mf">0.05</span>
<span class="n">trailing_stop_positive_offset</span> <span class="o">=</span> <span class="mf">0.03</span>
<span class="n">trailing_only_offset_is_reached</span> <span class="o">=</span> <span class="kc">True</span>
</code></pre></div>
<ul>
<li>the bot buys an asset at a price of 100$</li>
<li>the stop loss is defined at 5%</li>
<li>the stop loss will remain at 95% until profit reaches +3%</li>
</ul>
<h2 id="changing-stoploss-on-open-trades">Changing stoploss on open trades<a class="headerlink" href="#changing-stoploss-on-open-trades" title="Permanent link">&para;</a></h2>
<p>A stoploss on an open trade can be changed by changing the value in the configuration or strategy and use the <code>/reload_conf</code> command (alternatively, completely stopping and restarting the bot also works).</p>
<p>The new stoploss value will be applied to open trades (and corresponding log-messages will be generated).</p>
<h3 id="limitations">Limitations<a class="headerlink" href="#limitations" title="Permanent link">&para;</a></h3>
<p>Stoploss values cannot be changed if <code>trailing_stop</code> is enabled and the stoploss has already been adjusted, or if <a href="../edge/">Edge</a> is enabled (since Edge would recalculate stoploss based on the current market situation).</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../assets/javascripts/bundle.fe8b6f2b.min.js"></script>
</body>
</html>