Deployed 5dccabe to develop in en with MkDocs 1.6.1 and mike 2.1.4
This commit is contained in:
+135
-135
@@ -23,7 +23,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../images/logo.png">
|
||||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.5">
|
||||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
|
||||
|
||||
|
||||
|
||||
@@ -3056,14 +3056,14 @@ As such - an environment variable defined as <code>export FREQTRADE__STAKE_AMOU
|
||||
Using this scheme, all configuration settings will also be available as environment variables.</p>
|
||||
<p>Please note that Environment variables will overwrite corresponding settings in your configuration, but command line Arguments will always win.</p>
|
||||
<p>Common example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nv">FREQTRADE__TELEGRAM__CHAT_ID</span><span class="o">=</span><telegramchatid>
|
||||
<span class="nv">FREQTRADE__TELEGRAM__TOKEN</span><span class="o">=</span><telegramToken>
|
||||
<span class="nv">FREQTRADE__EXCHANGE__KEY</span><span class="o">=</span><yourExchangeKey>
|
||||
<span class="nv">FREQTRADE__EXCHANGE__SECRET</span><span class="o">=</span><yourExchangeSecret>
|
||||
</code></pre></div>
|
||||
<p><code>bash
|
||||
FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid>
|
||||
FREQTRADE__TELEGRAM__TOKEN=<telegramToken>
|
||||
FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
|
||||
FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret></code></p>
|
||||
<p>Json lists are parsed as json - so you can use the following to set a list of pairs:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">FREQTRADE__EXCHANGE__PAIR_WHITELIST</span><span class="o">=</span><span class="s1">'["BTC/USDT", "ETH/USDT"]'</span>
|
||||
</code></pre></div>
|
||||
<p><code>bash
|
||||
export FREQTRADE__EXCHANGE__PAIR_WHITELIST='["BTC/USDT", "ETH/USDT"]'</code></p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Environment variables detected are logged at startup - so if you can't find why a value is not what you think it should be based on the configuration, make sure it's not loaded from an environment variable.</p>
|
||||
@@ -3091,16 +3091,16 @@ This is similar to using multiple <code>--config</code> parameters, but simpler
|
||||
The 2<sup>nd</sup> file should only specify what you intend to override.
|
||||
If a key is in more than one of the configurations, then the "last specified configuration" wins (in the above example, <code>config-private.json</code>).</p>
|
||||
<p>For one-off commands, you can also use the below syntax by specifying multiple "--config" parameters.</p>
|
||||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>trade<span class="w"> </span>--config<span class="w"> </span>user_data/config1.json<span class="w"> </span>--config<span class="w"> </span>user_data/config-private.json<span class="w"> </span><...>
|
||||
</code></pre></div>
|
||||
<p><code>bash
|
||||
freqtrade trade --config user_data/config1.json --config user_data/config-private.json <...></code></p>
|
||||
<p>The below is equivalent to the example above - but having 2 configuration files in the configuration, for easier reuse.</p>
|
||||
<div class="highlight"><span class="filename">user_data/config.json</span><pre><span></span><code><span class="nt">"add_config_files"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"config1.json"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"config-private.json"</span>
|
||||
<span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>trade<span class="w"> </span>--config<span class="w"> </span>user_data/config.json<span class="w"> </span><...>
|
||||
</code></pre></div>
|
||||
<p><code>bash
|
||||
freqtrade trade --config user_data/config.json <...></code></p>
|
||||
</div>
|
||||
<details class="note">
|
||||
<summary>config collision handling</summary>
|
||||
@@ -3130,10 +3130,10 @@ In the below case, <code>max_open_trades</code> would be 3 after the merging - a
|
||||
</details>
|
||||
<h2 id="editor-autocomplete-and-validation">Editor autocomplete and validation<a class="headerlink" href="#editor-autocomplete-and-validation" title="Permanent link">¶</a></h2>
|
||||
<p>If you are using an editor that supports JSON schema, you can use the schema provided by Freqtrade to get autocompletion and validation of your configuration file by adding the following line to the top of your configuration file:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://schema.freqtrade.io/schema.json"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
}</code></p>
|
||||
<details class="note">
|
||||
<summary>Develop version</summary>
|
||||
<p>The develop schema is available as <code>https://schema.freqtrade.io/schema_dev.json</code> - though we recommend to stick to the stable version for the best experience.</p>
|
||||
@@ -3679,12 +3679,12 @@ This exchange has also a limit on USD - where all orders must be > 10$ - whic
|
||||
<h4 id="dry-run-wallet">Dry-run wallet<a class="headerlink" href="#dry-run-wallet" title="Permanent link">¶</a></h4>
|
||||
<p>When running in dry-run mode, the bot will use a simulated wallet to execute trades. The starting balance of this wallet is defined by <code>dry_run_wallet</code> (defaults to 1000).
|
||||
For more complex scenarios, you can also assign a dictionary to <code>dry_run_wallet</code> to define the starting balance for each currency.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"dry_run_wallet"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"BTC"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.01</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ETH"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"USDT"</span><span class="p">:</span><span class="w"> </span><span class="mi">1000</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"dry_run_wallet": {
|
||||
"BTC": 0.01,
|
||||
"ETH": 2,
|
||||
"USDT": 1000
|
||||
}</code></p>
|
||||
<p>Command line options (<code>--dry-run-wallet</code>) can be used to override the configuration value, but only for the float value, not for the dictionary. If you'd like to use the dictionary, please adjust the configuration file.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
@@ -3747,12 +3747,12 @@ For example, the bot will at most use (0.05 BTC x 3) = 0.15 BTC, assuming a conf
|
||||
<p>Alternatively, you can use a dynamic stake amount, which will use the available balance on the exchange, and divide that equally by the number of allowed trades (<code>max_open_trades</code>).</p>
|
||||
<p>To configure this, set <code>stake_amount="unlimited"</code>. We also recommend to set <code>tradable_balance_ratio=0.99</code> (99%) - to keep a minimum balance for eventual fees.</p>
|
||||
<p>In this case a trade amount is calculated as:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">currency_balance</span> <span class="o">/</span> <span class="p">(</span><span class="n">max_open_trades</span> <span class="o">-</span> <span class="n">current_open_trades</span><span class="p">)</span>
|
||||
</code></pre></div>
|
||||
<p><code>python
|
||||
currency_balance / (max_open_trades - current_open_trades)</code></p>
|
||||
<p>To allow the bot to trade all the available <code>stake_currency</code> in your account (minus <code>tradable_balance_ratio</code>) set</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"stake_amount"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"unlimited"</span><span class="p">,</span>
|
||||
<span class="nt">"tradable_balance_ratio"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.99</span><span class="p">,</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"stake_amount" : "unlimited",
|
||||
"tradable_balance_ratio": 0.99,</code></p>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Compounding profits</p>
|
||||
<p>This configuration will allow increasing/decreasing stakes depending on the performance of the bot (lower stake if the bot is losing, higher stakes if the bot has a winning record since higher balances are available), and will result in profit compounding.</p>
|
||||
@@ -3782,7 +3782,8 @@ Prices are always retrieved right before an order is placed, either by querying
|
||||
<h4 id="enter-price-side">Enter price side<a class="headerlink" href="#enter-price-side" title="Permanent link">¶</a></h4>
|
||||
<p>The configuration setting <code>entry_pricing.price_side</code> defines the side of the orderbook the bot looks for when buying.</p>
|
||||
<p>The following displays an orderbook.</p>
|
||||
<div class="highlight"><pre><span></span><code>...
|
||||
<p><code>explanation
|
||||
...
|
||||
103
|
||||
102
|
||||
101 # ask
|
||||
@@ -3790,8 +3791,7 @@ Prices are always retrieved right before an order is placed, either by querying
|
||||
99 # bid
|
||||
98
|
||||
97
|
||||
...
|
||||
</code></pre></div>
|
||||
...</code></p>
|
||||
<p>If <code>entry_pricing.price_side</code> is set to <code>"bid"</code>, then the bot will use 99 as entry price.<br />
|
||||
In line with that, if <code>entry_pricing.price_side</code> is set to <code>"ask"</code>, then the bot will use 101 as entry price.</p>
|
||||
<p>Depending on the order direction (<em>long</em>/<em>short</em>), this will lead to different results. Therefore we recommend to use <code>"same"</code> or <code>"other"</code> for this configuration instead.
|
||||
@@ -3885,7 +3885,8 @@ Also, prices at the "other" side of the spread are higher than prices at the "bi
|
||||
<h4 id="exit-price-side">Exit price side<a class="headerlink" href="#exit-price-side" title="Permanent link">¶</a></h4>
|
||||
<p>The configuration setting <code>exit_pricing.price_side</code> defines the side of the spread the bot looks for when exiting a trade.</p>
|
||||
<p>The following displays an orderbook:</p>
|
||||
<div class="highlight"><pre><span></span><code>...
|
||||
<p><code>explanation
|
||||
...
|
||||
103
|
||||
102
|
||||
101 # ask
|
||||
@@ -3893,8 +3894,7 @@ Also, prices at the "other" side of the spread are higher than prices at the "bi
|
||||
99 # bid
|
||||
98
|
||||
97
|
||||
...
|
||||
</code></pre></div>
|
||||
...</code></p>
|
||||
<p>If <code>exit_pricing.price_side</code> is set to <code>"ask"</code>, then the bot will use 101 as exiting price.<br />
|
||||
In line with that, if <code>exit_pricing.price_side</code> is set to <code>"bid"</code>, then the bot will use 99 as exiting price.</p>
|
||||
<p>Depending on the order direction (<em>long</em>/<em>short</em>), this will lead to different results. Therefore we recommend to use <code>"same"</code> or <code>"other"</code> for this configuration instead.
|
||||
@@ -3978,33 +3978,33 @@ This would result in the following pricing matrix:</p>
|
||||
<h3 id="market-order-pricing">Market order pricing<a class="headerlink" href="#market-order-pricing" title="Permanent link">¶</a></h3>
|
||||
<p>When using market orders, prices should be configured to use the "correct" side of the orderbook to allow realistic pricing detection.
|
||||
Assuming both entry and exits are using market orders, a configuration similar to the following must be used</p>
|
||||
<div class="highlight"><pre><span></span><code> "order_types": {
|
||||
"entry": "market",
|
||||
"exit": "market"
|
||||
<p><code>jsonc
|
||||
"order_types": {
|
||||
"entry": "market",
|
||||
"exit": "market"
|
||||
// ...
|
||||
},
|
||||
"entry_pricing": {
|
||||
"price_side": "other",
|
||||
"entry_pricing": {
|
||||
"price_side": "other",
|
||||
// ...
|
||||
},
|
||||
"exit_pricing":{
|
||||
"price_side": "other",
|
||||
"exit_pricing":{
|
||||
"price_side": "other",
|
||||
// ...
|
||||
},
|
||||
</code></pre></div>
|
||||
},</code></p>
|
||||
<p>Obviously, if only one side is using limit orders, different pricing combinations can be used.</p>
|
||||
<h2 id="further-configuration-details">Further Configuration details<a class="headerlink" href="#further-configuration-details" title="Permanent link">¶</a></h2>
|
||||
<h3 id="understand-minimal_roi">Understand minimal_roi<a class="headerlink" href="#understand-minimal_roi" title="Permanent link">¶</a></h3>
|
||||
<p>The <code>minimal_roi</code> configuration parameter is a JSON object where the key is a duration
|
||||
in minutes and the value is the minimum ROI as a ratio.
|
||||
See the example below:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"minimal_roi"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"40"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="err">Exi</span><span class="kc">t</span><span class="w"> </span><span class="err">a</span><span class="kc">fter</span><span class="w"> </span><span class="mi">40</span><span class="w"> </span><span class="err">mi</span><span class="kc">nutes</span><span class="w"> </span><span class="err">i</span><span class="kc">f</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">pro</span><span class="kc">f</span><span class="err">i</span><span class="kc">t</span><span class="w"> </span><span class="err">is</span><span class="w"> </span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="w"> </span><span class="kc">ne</span><span class="err">ga</span><span class="kc">t</span><span class="err">ive</span>
|
||||
<span class="w"> </span><span class="nt">"30"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.01</span><span class="p">,</span><span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="err">Exi</span><span class="kc">t</span><span class="w"> </span><span class="err">a</span><span class="kc">fter</span><span class="w"> </span><span class="mi">30</span><span class="w"> </span><span class="err">mi</span><span class="kc">nutes</span><span class="w"> </span><span class="err">i</span><span class="kc">f</span><span class="w"> </span><span class="kc">t</span><span class="err">here</span><span class="w"> </span><span class="err">is</span><span class="w"> </span><span class="err">a</span><span class="kc">t</span><span class="w"> </span><span class="err">leas</span><span class="kc">t</span><span class="w"> </span><span class="mi">1</span><span class="err">%</span><span class="w"> </span><span class="err">pro</span><span class="kc">f</span><span class="err">i</span><span class="kc">t</span>
|
||||
<span class="w"> </span><span class="nt">"20"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.02</span><span class="p">,</span><span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="err">Exi</span><span class="kc">t</span><span class="w"> </span><span class="err">a</span><span class="kc">fter</span><span class="w"> </span><span class="mi">20</span><span class="w"> </span><span class="err">mi</span><span class="kc">nutes</span><span class="w"> </span><span class="err">i</span><span class="kc">f</span><span class="w"> </span><span class="kc">t</span><span class="err">here</span><span class="w"> </span><span class="err">is</span><span class="w"> </span><span class="err">a</span><span class="kc">t</span><span class="w"> </span><span class="err">leas</span><span class="kc">t</span><span class="w"> </span><span class="mi">2</span><span class="err">%</span><span class="w"> </span><span class="err">pro</span><span class="kc">f</span><span class="err">i</span><span class="kc">t</span>
|
||||
<span class="w"> </span><span class="nt">"0"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.04</span><span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="err">Exi</span><span class="kc">t</span><span class="w"> </span><span class="err">immedia</span><span class="kc">tel</span><span class="err">y</span><span class="w"> </span><span class="err">i</span><span class="kc">f</span><span class="w"> </span><span class="kc">t</span><span class="err">here</span><span class="w"> </span><span class="err">is</span><span class="w"> </span><span class="err">a</span><span class="kc">t</span><span class="w"> </span><span class="err">leas</span><span class="kc">t</span><span class="w"> </span><span class="mi">4</span><span class="err">%</span><span class="w"> </span><span class="err">pro</span><span class="kc">f</span><span class="err">i</span><span class="kc">t</span>
|
||||
<span class="p">},</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"minimal_roi": {
|
||||
"40": 0.0, # Exit after 40 minutes if the profit is not negative
|
||||
"30": 0.01, # Exit after 30 minutes if there is at least 1% profit
|
||||
"20": 0.02, # Exit after 20 minutes if there is at least 2% profit
|
||||
"0": 0.04 # Exit immediately if there is at least 4% profit
|
||||
},</code></p>
|
||||
<p>Most of the strategy files already include the optimal <code>minimal_roi</code> value.
|
||||
This parameter can be set in either Strategy or Configuration file. If you use it in the configuration file, it will override the
|
||||
<code>minimal_roi</code> value from the strategy file.
|
||||
@@ -4023,12 +4023,12 @@ For example, you can send <code>/forceenter ETH/BTC</code> to the bot, which wil
|
||||
<p>When working with larger timeframes (for example 1h or more) and using a low <code>max_open_trades</code> value, the last candle can be processed as soon as a trade slot becomes available. When processing the last candle, this can lead to a situation where it may not be desirable to use the buy signal on that candle. For example, when using a condition in your strategy where you use a cross-over, that point may have passed too long ago for you to start a trade on it.</p>
|
||||
<p>In these situations, you can enable the functionality to ignore candles that are beyond a specified period by setting <code>ignore_buying_expired_candle_after</code> to a positive number, indicating the number of seconds after which the buy signal becomes expired.</p>
|
||||
<p>For example, if your strategy is using a 1h timeframe, and you only want to buy within the first 5 minutes when a new candle comes in, you can add the following configuration to your strategy:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="c1">//...</span>
|
||||
<span class="w"> </span><span class="nt">"ignore_buying_expired_candle_after"</span><span class="p">:</span><span class="w"> </span><span class="mi">300</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="c1">// ...</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
{
|
||||
//...
|
||||
"ignore_buying_expired_candle_after": 300,
|
||||
// ...
|
||||
}</code></p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>This setting resets with each new candle, so it will not prevent sticking-signals from executing on the 2<sup>nd</sup> or 3<sup>rd</sup> candle they're active. Best use a "trigger" selector for buy signals, which are only active for one candle.</p>
|
||||
@@ -4042,30 +4042,30 @@ stoploss "on exchange" which means stoploss order would be placed immediately on
|
||||
<p>If this is configured, the following 4 values (<code>entry</code>, <code>exit</code>, <code>stoploss</code> and <code>stoploss_on_exchange</code>) need to be present, otherwise, the bot will fail to start.</p>
|
||||
<p>For information on (<code>emergency_exit</code>,<code>force_exit</code>, <code>force_entry</code>, <code>stoploss_on_exchange</code>,<code>stoploss_on_exchange_interval</code>,<code>stoploss_on_exchange_limit_ratio</code>) please see stop loss documentation <a href="../stoploss/">stop loss on exchange</a></p>
|
||||
<p>Syntax for Strategy:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">order_types</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"entry"</span><span class="p">:</span> <span class="s2">"limit"</span><span class="p">,</span>
|
||||
<span class="s2">"exit"</span><span class="p">:</span> <span class="s2">"limit"</span><span class="p">,</span>
|
||||
<span class="s2">"emergency_exit"</span><span class="p">:</span> <span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="s2">"force_entry"</span><span class="p">:</span> <span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="s2">"force_exit"</span><span class="p">:</span> <span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="s2">"stoploss"</span><span class="p">:</span> <span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="s2">"stoploss_on_exchange"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s2">"stoploss_on_exchange_interval"</span><span class="p">:</span> <span class="mi">60</span><span class="p">,</span>
|
||||
<span class="s2">"stoploss_on_exchange_limit_ratio"</span><span class="p">:</span> <span class="mf">0.99</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>python
|
||||
order_types = {
|
||||
"entry": "limit",
|
||||
"exit": "limit",
|
||||
"emergency_exit": "market",
|
||||
"force_entry": "market",
|
||||
"force_exit": "market",
|
||||
"stoploss": "market",
|
||||
"stoploss_on_exchange": False,
|
||||
"stoploss_on_exchange_interval": 60,
|
||||
"stoploss_on_exchange_limit_ratio": 0.99,
|
||||
}</code></p>
|
||||
<p>Configuration:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"order_types"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"entry"</span><span class="p">:</span><span class="w"> </span><span class="s2">"limit"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"exit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"limit"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"emergency_exit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"force_entry"</span><span class="p">:</span><span class="w"> </span><span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"force_exit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"stoploss"</span><span class="p">:</span><span class="w"> </span><span class="s2">"market"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"stoploss_on_exchange"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"stoploss_on_exchange_interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">60</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"order_types": {
|
||||
"entry": "limit",
|
||||
"exit": "limit",
|
||||
"emergency_exit": "market",
|
||||
"force_entry": "market",
|
||||
"force_exit": "market",
|
||||
"stoploss": "market",
|
||||
"stoploss_on_exchange": false,
|
||||
"stoploss_on_exchange_interval": 60
|
||||
}</code></p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Market order support</p>
|
||||
<p>Not all exchanges support "market" orders.
|
||||
@@ -4106,11 +4106,11 @@ This means the order must be placed on orderbook for at least time in an unfille
|
||||
This can be set in the configuration file or in the strategy.
|
||||
Values set in the configuration file overwrite values from in the strategy, following the regular <a href="#configuration-option-prevalence">precedence rules</a>.</p>
|
||||
<p>The possible values are: <code>GTC</code> (default), <code>FOK</code> or <code>IOC</code>.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="s2">"order_time_in_force"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"entry"</span><span class="p">:</span> <span class="s2">"GTC"</span><span class="p">,</span>
|
||||
<span class="s2">"exit"</span><span class="p">:</span> <span class="s2">"GTC"</span>
|
||||
<span class="p">},</span>
|
||||
</code></pre></div>
|
||||
<p><code>python
|
||||
"order_time_in_force": {
|
||||
"entry": "GTC",
|
||||
"exit": "GTC"
|
||||
},</code></p>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>Please don't change the default value unless you know what you are doing and have researched the impact of using different values for your particular exchange.</p>
|
||||
@@ -4123,23 +4123,23 @@ The FIAT currency can be set in the configuration file as <code>fiat_display_cur
|
||||
<p>The <code>fiat_display_currency</code> configuration parameter sets the base currency to use for the
|
||||
conversion from coin to fiat in the bot Telegram reports.</p>
|
||||
<p>The valid values are:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="s2">"AUD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"BRL"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CAD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CHF"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CLP"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CNY"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CZK"</span><span class="p">,</span><span class="w"> </span><span class="s2">"DKK"</span><span class="p">,</span><span class="w"> </span><span class="s2">"EUR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"GBP"</span><span class="p">,</span><span class="w"> </span><span class="s2">"HKD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"HUF"</span><span class="p">,</span><span class="w"> </span><span class="s2">"IDR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"ILS"</span><span class="p">,</span><span class="w"> </span><span class="s2">"INR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"JPY"</span><span class="p">,</span><span class="w"> </span><span class="s2">"KRW"</span><span class="p">,</span><span class="w"> </span><span class="s2">"MXN"</span><span class="p">,</span><span class="w"> </span><span class="s2">"MYR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"NOK"</span><span class="p">,</span><span class="w"> </span><span class="s2">"NZD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"PHP"</span><span class="p">,</span><span class="w"> </span><span class="s2">"PKR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"PLN"</span><span class="p">,</span><span class="w"> </span><span class="s2">"RUB"</span><span class="p">,</span><span class="w"> </span><span class="s2">"SEK"</span><span class="p">,</span><span class="w"> </span><span class="s2">"SGD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"THB"</span><span class="p">,</span><span class="w"> </span><span class="s2">"TRY"</span><span class="p">,</span><span class="w"> </span><span class="s2">"TWD"</span><span class="p">,</span><span class="w"> </span><span class="s2">"ZAR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"USD"</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR", "USD"</code></p>
|
||||
<p>In addition to fiat currencies, a range of crypto currencies is supported.</p>
|
||||
<p>The valid values are:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="s2">"BTC"</span><span class="p">,</span><span class="w"> </span><span class="s2">"ETH"</span><span class="p">,</span><span class="w"> </span><span class="s2">"XRP"</span><span class="p">,</span><span class="w"> </span><span class="s2">"LTC"</span><span class="p">,</span><span class="w"> </span><span class="s2">"BCH"</span><span class="p">,</span><span class="w"> </span><span class="s2">"BNB"</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"BTC", "ETH", "XRP", "LTC", "BCH", "BNB"</code></p>
|
||||
<h4 id="coingecko-rate-limit-problems">Coingecko Rate limit problems<a class="headerlink" href="#coingecko-rate-limit-problems" title="Permanent link">¶</a></h4>
|
||||
<p>On some IP ranges, coingecko is heavily rate-limiting.
|
||||
In such cases, you may want to add your coingecko API key to the configuration.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"fiat_display_currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"USD"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"coingecko"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"your-api"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"is_demo"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
{
|
||||
"fiat_display_currency": "USD",
|
||||
"coingecko": {
|
||||
"api_key": "your-api",
|
||||
"is_demo": true
|
||||
}
|
||||
}</code></p>
|
||||
<p>Freqtrade supports both Demo and Pro coingecko API keys.</p>
|
||||
<p>The Coingecko API key is NOT required for the bot to function correctly.
|
||||
It is only used for the conversion of coin to fiat in the Telegram reports, which usually also work without API key.</p>
|
||||
@@ -4148,12 +4148,12 @@ It is only used for the conversion of coin to fiat in the Telegram reports, whic
|
||||
<p>Freqtrade aims ensure data is available at all times.
|
||||
Should the websocket connection fail (or be disabled), the bot will fall back to REST API calls.</p>
|
||||
<p>Should you experience problems you suspect are caused by websockets, you can disable these via the setting <code>exchange.enable_ws</code>, which defaults to true.</p>
|
||||
<div class="highlight"><pre><span></span><code>"exchange": {
|
||||
<p><code>jsonc
|
||||
"exchange": {
|
||||
// ...
|
||||
"enable_ws": false,
|
||||
"enable_ws": false,
|
||||
// ...
|
||||
}
|
||||
</code></pre></div>
|
||||
}</code></p>
|
||||
<p>Should you be required to use a proxy, please refer to the <a href="#using-a-proxy-with-freqtrade">proxy section</a> for more information.</p>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Rollout</p>
|
||||
@@ -4170,19 +4170,19 @@ creating trades on the exchange.</p>
|
||||
<li>Edit your <code>config.json</code> configuration file.</li>
|
||||
<li>Switch <code>dry-run</code> to <code>true</code> and specify <code>db_url</code> for a persistence database.</li>
|
||||
</ol>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"dry_run"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="nt">"db_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sqlite:///tradesv3.dryrun.sqlite"</span><span class="p">,</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"dry_run": true,
|
||||
"db_url": "sqlite:///tradesv3.dryrun.sqlite",</code></p>
|
||||
<ol>
|
||||
<li>Remove your Exchange API key and secret (change them by empty values or fake credentials):</li>
|
||||
</ol>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"exchange"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"binance"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"key"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"secret"</span><span class="p">:</span><span class="w"> </span><span class="s2">"secret"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="err">...</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"exchange": {
|
||||
"name": "binance",
|
||||
"key": "key",
|
||||
"secret": "secret",
|
||||
...
|
||||
}</code></p>
|
||||
<p>Once you will be happy with your bot performance running in the Dry-run mode, you can switch it to production mode.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
@@ -4209,20 +4209,20 @@ API Keys are usually only required for live trading (trading for real money, bot
|
||||
<h3 id="to-switch-your-bot-in-production-mode">To switch your bot in production mode<a class="headerlink" href="#to-switch-your-bot-in-production-mode" title="Permanent link">¶</a></h3>
|
||||
<p><strong>Edit your <code>config.json</code> file.</strong></p>
|
||||
<p><strong>Switch dry-run to false and don't forget to adapt your database URL if set:</strong></p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">"dry_run"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
"dry_run": false,</code></p>
|
||||
<p><strong>Insert your Exchange API key (change them by fake API keys):</strong></p>
|
||||
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"exchange"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"binance"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"af8ddd35195e9dc500b9a6f799f6f5c93d89193b"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"secret"</span><span class="p">:</span><span class="w"> </span><span class="s2">"08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="c1">//"password": "", // Optional, not needed by all exchanges)</span>
|
||||
<span class="w"> </span><span class="c1">// ...</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="c1">//...</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
{
|
||||
"exchange": {
|
||||
"name": "binance",
|
||||
"key": "af8ddd35195e9dc500b9a6f799f6f5c93d89193b",
|
||||
"secret": "08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5",
|
||||
//"password": "", // Optional, not needed by all exchanges)
|
||||
// ...
|
||||
}
|
||||
//...
|
||||
}</code></p>
|
||||
<p>You should also make sure to read the <a href="../exchanges/">Exchanges</a> section of the documentation to be aware of potential configuration details specific to your exchange.</p>
|
||||
<div class="admonition hint">
|
||||
<p class="admonition-title">Keep your secrets secret</p>
|
||||
@@ -4234,21 +4234,21 @@ You can then start the bot with <code>freqtrade trade --config user_data/config.
|
||||
<h2 id="using-a-proxy-with-freqtrade">Using a proxy with Freqtrade<a class="headerlink" href="#using-a-proxy-with-freqtrade" title="Permanent link">¶</a></h2>
|
||||
<p>To use a proxy with freqtrade, export your proxy settings using the variables <code>"HTTP_PROXY"</code> and <code>"HTTPS_PROXY"</code> set to the appropriate values.
|
||||
This will have the proxy settings applied to everything (telegram, coingecko, ...) <strong>except</strong> for exchange requests.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">HTTP_PROXY</span><span class="o">=</span><span class="s2">"http://addr:port"</span>
|
||||
<span class="nb">export</span><span class="w"> </span><span class="nv">HTTPS_PROXY</span><span class="o">=</span><span class="s2">"http://addr:port"</span>
|
||||
freqtrade
|
||||
</code></pre></div>
|
||||
<p><code>bash
|
||||
export HTTP_PROXY="http://addr:port"
|
||||
export HTTPS_PROXY="http://addr:port"
|
||||
freqtrade</code></p>
|
||||
<h3 id="proxy-exchange-requests">Proxy exchange requests<a class="headerlink" href="#proxy-exchange-requests" title="Permanent link">¶</a></h3>
|
||||
<p>To use a proxy for exchange connections - you will have to define the proxies as part of the ccxt configuration.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"> </span>
|
||||
<span class="w"> </span><span class="nt">"exchange"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"ccxt_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"httpsProxy"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://addr:port"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"wsProxy"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://addr:port"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p><code>json
|
||||
{
|
||||
"exchange": {
|
||||
"ccxt_config": {
|
||||
"httpsProxy": "http://addr:port",
|
||||
"wsProxy": "http://addr:port",
|
||||
}
|
||||
}
|
||||
}</code></p>
|
||||
<p>For more information on available proxy types, please consult the <a href="https://docs.ccxt.com/#/README?id=proxy">ccxt proxy documentation</a>.</p>
|
||||
<h2 id="next-step">Next step<a class="headerlink" href="#next-step" title="Permanent link">¶</a></h2>
|
||||
<p>Now you have configured your config.json, the next step is to <a href="../bot-usage/">start your bot</a>.</p>
|
||||
|
||||
Reference in New Issue
Block a user