Deployed 7e7e475 to develop in en with MkDocs 1.6.1 and mike 2.1.4

This commit is contained in:
github-actions[bot]
2026-03-31 05:20:03 +00:00
parent df495f4472
commit 970aa93176
44 changed files with 13314 additions and 6959 deletions
+641 -141
View File
@@ -1391,6 +1391,256 @@
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#kraken-futures" class="md-nav__link">
<span class="md-ellipsis">
Kraken Futures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kucoin" class="md-nav__link">
<span class="md-ellipsis">
Kucoin
</span>
</a>
<nav class="md-nav" aria-label="Kucoin">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#kucoin-blacklists" class="md-nav__link">
<span class="md-ellipsis">
Kucoin Blacklists
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#htx" class="md-nav__link">
<span class="md-ellipsis">
HTX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#okx" class="md-nav__link">
<span class="md-ellipsis">
OKX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gateio" class="md-nav__link">
<span class="md-ellipsis">
Gate.io
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bybit" class="md-nav__link">
<span class="md-ellipsis">
Bybit
</span>
</a>
<nav class="md-nav" aria-label="Bybit">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bybit-futures" class="md-nav__link">
<span class="md-ellipsis">
Bybit Futures
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#bitmart" class="md-nav__link">
<span class="md-ellipsis">
Bitmart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bitget" class="md-nav__link">
<span class="md-ellipsis">
Bitget
</span>
</a>
<nav class="md-nav" aria-label="Bitget">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bitget-futures" class="md-nav__link">
<span class="md-ellipsis">
Bitget Futures
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#hyperliquid" class="md-nav__link">
<span class="md-ellipsis">
Hyperliquid
</span>
</a>
<nav class="md-nav" aria-label="Hyperliquid">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#hyperliquid-vault-subaccount" class="md-nav__link">
<span class="md-ellipsis">
Hyperliquid Vault / Subaccount
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#historic-hyperliquid-data" class="md-nav__link">
<span class="md-ellipsis">
Historic Hyperliquid data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hip-3-dexes" class="md-nav__link">
<span class="md-ellipsis">
HIP-3 DEXes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#bitvavo" class="md-nav__link">
<span class="md-ellipsis">
Bitvavo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#all-exchanges" class="md-nav__link">
<span class="md-ellipsis">
All exchanges
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#random-notes-for-other-exchanges" class="md-nav__link">
<span class="md-ellipsis">
Random notes for other exchanges
</span>
</a>
<nav class="md-nav" aria-label="Random notes for other exchanges">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#getting-latest-price-incomplete-candles" class="md-nav__link">
<span class="md-ellipsis">
Getting latest price / Incomplete candles
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#advanced-freqtrade-exchange-configuration" class="md-nav__link">
<span class="md-ellipsis">
Advanced Freqtrade Exchange configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
@@ -2184,6 +2434,256 @@
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#kraken-futures" class="md-nav__link">
<span class="md-ellipsis">
Kraken Futures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kucoin" class="md-nav__link">
<span class="md-ellipsis">
Kucoin
</span>
</a>
<nav class="md-nav" aria-label="Kucoin">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#kucoin-blacklists" class="md-nav__link">
<span class="md-ellipsis">
Kucoin Blacklists
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#htx" class="md-nav__link">
<span class="md-ellipsis">
HTX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#okx" class="md-nav__link">
<span class="md-ellipsis">
OKX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gateio" class="md-nav__link">
<span class="md-ellipsis">
Gate.io
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bybit" class="md-nav__link">
<span class="md-ellipsis">
Bybit
</span>
</a>
<nav class="md-nav" aria-label="Bybit">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bybit-futures" class="md-nav__link">
<span class="md-ellipsis">
Bybit Futures
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#bitmart" class="md-nav__link">
<span class="md-ellipsis">
Bitmart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bitget" class="md-nav__link">
<span class="md-ellipsis">
Bitget
</span>
</a>
<nav class="md-nav" aria-label="Bitget">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bitget-futures" class="md-nav__link">
<span class="md-ellipsis">
Bitget Futures
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#hyperliquid" class="md-nav__link">
<span class="md-ellipsis">
Hyperliquid
</span>
</a>
<nav class="md-nav" aria-label="Hyperliquid">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#hyperliquid-vault-subaccount" class="md-nav__link">
<span class="md-ellipsis">
Hyperliquid Vault / Subaccount
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#historic-hyperliquid-data" class="md-nav__link">
<span class="md-ellipsis">
Historic Hyperliquid data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hip-3-dexes" class="md-nav__link">
<span class="md-ellipsis">
HIP-3 DEXes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#bitvavo" class="md-nav__link">
<span class="md-ellipsis">
Bitvavo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#all-exchanges" class="md-nav__link">
<span class="md-ellipsis">
All exchanges
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#random-notes-for-other-exchanges" class="md-nav__link">
<span class="md-ellipsis">
Random notes for other exchanges
</span>
</a>
<nav class="md-nav" aria-label="Random notes for other exchanges">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#getting-latest-price-incomplete-candles" class="md-nav__link">
<span class="md-ellipsis">
Getting latest price / Incomplete candles
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#advanced-freqtrade-exchange-configuration" class="md-nav__link">
<span class="md-ellipsis">
Advanced Freqtrade Exchange configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
@@ -2350,27 +2850,27 @@ A current list of these can be found in the "Home" section of this documentation
<p>Some exchanges require special configuration, which can be found below.</p>
<h3 id="sample-exchange-configuration">Sample exchange configuration<a class="headerlink" href="#sample-exchange-configuration" title="Permanent link">&para;</a></h3>
<p>A exchange configuration for "binance" would look as follows:</p>
<p><code>json
"exchange": {
"name": "binance",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {},
"ccxt_async_config": {},
// ...</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;binance&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ccxt_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
<span class="w"> </span><span class="nt">&quot;ccxt_async_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
<span class="w"> </span><span class="c1">// ... </span>
</code></pre></div>
<h3 id="setting-rate-limits">Setting rate limits<a class="headerlink" href="#setting-rate-limits" title="Permanent link">&para;</a></h3>
<p>Usually, rate limits set by CCXT are reliable and work well.
In case of problems related to rate-limits (usually DDOS Exceptions in your logs), it's easy to change rateLimit settings to other values.</p>
<p><code>json
"exchange": {
"name": "kraken",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 3100
},</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;kraken&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ccxt_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">&quot;enableRateLimit&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;ccxt_async_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;enableRateLimit&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rateLimit&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">3100</span>
<span class="w"> </span><span class="p">},</span>
</code></pre></div>
<p>This configuration enables kraken, as well as rate-limiting to avoid bans from the exchange.
<code>"rateLimit": 3100</code> defines a wait-event of 3.1s between each call. This can also be completely disabled by setting <code>"enableRateLimit"</code> to false.</p>
<div class="admonition note">
@@ -2402,31 +2902,31 @@ Binance accounts may use <code>BNB</code> for fees, and if a trade happens to be
<h3 id="binance-rsa-keys">Binance RSA keys<a class="headerlink" href="#binance-rsa-keys" title="Permanent link">&para;</a></h3>
<p>Freqtrade supports binance RSA API keys.</p>
<p>We recommend to use them as environment variable.</p>
<p><code>bash
export FREQTRADE__EXCHANGE__SECRET="$(cat ./rsa_binance.private)"</code></p>
<div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">FREQTRADE__EXCHANGE__SECRET</span><span class="o">=</span><span class="s2">&quot;</span><span class="k">$(</span>cat<span class="w"> </span>./rsa_binance.private<span class="k">)</span><span class="s2">&quot;</span>
</code></pre></div>
<p>They can however also be configured via configuration file. Since json doesn't support multi-line strings, you'll have to replace all newlines with <code>\n</code> to have a valid json file.</p>
<p><code>json
// ...
"key": "&lt;someapikey&gt;",
"secret": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBABACAFQA&lt;...&gt;s8KX8=\n-----END PRIVATE KEY-----"
// ...</code></p>
<div class="highlight"><pre><span></span><code><span class="c1">// ...</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&lt;someapikey&gt;&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;-----BEGIN PRIVATE KEY-----\nMIIEvQIBABACAFQA&lt;...&gt;s8KX8=\n-----END PRIVATE KEY-----&quot;</span>
<span class="c1">// ...</span>
</code></pre></div>
<h3 id="binance-futures">Binance Futures<a class="headerlink" href="#binance-futures" title="Permanent link">&para;</a></h3>
<p>Binance has specific (unfortunately complex) <a href="https://www.binance.com/en/support/faq/4f462ebe6ff445d4a170be7d9e897272">Futures Trading Quantitative Rules</a> which need to be followed, and which prohibit a too low stake-amount (among others) for too many orders.
Violating these rules will result in a trading restriction.</p>
<p>When trading on Binance Futures market, orderbook must be used because there is no price ticker data for futures.</p>
<p><code>jsonc
"entry_pricing": {
"use_order_book": true,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
"bids_to_ask_delta": 1
<div class="highlight"><pre><span></span><code> &quot;entry_pricing&quot;: {
&quot;use_order_book&quot;: true,
&quot;order_book_top&quot;: 1,
&quot;check_depth_of_market&quot;: {
&quot;enabled&quot;: false,
&quot;bids_to_ask_delta&quot;: 1
}
},
"exit_pricing": {
"use_order_book": true,
"order_book_top": 1
},</code></p>
&quot;exit_pricing&quot;: {
&quot;use_order_book&quot;: true,
&quot;order_book_top&quot;: 1
},
</code></pre></div>
<h4 id="binance-isolated-futures-settings">Binance isolated futures settings<a class="headerlink" href="#binance-isolated-futures-settings" title="Permanent link">&para;</a></h4>
<p>Users will also have to have the futures-setting "Position Mode" set to "One-way Mode", and "Asset Mode" set to "Single-Asset Mode".
These settings will be checked on startup, and freqtrade will show an error if this setting is wrong.</p>
@@ -2435,15 +2935,15 @@ These settings will be checked on startup, and freqtrade will show an error if t
<h4 id="binance-bnfcr-futures">Binance BNFCR futures<a class="headerlink" href="#binance-bnfcr-futures" title="Permanent link">&para;</a></h4>
<p>BNFCR mode are a special type of futures mode on Binance to work around regulatory issues in Europe.<br />
To use BNFCR futures, you will have to have the following combination of settings:</p>
<p><code>jsonc
{
<div class="highlight"><pre><span></span><code>{
// ...
"trading_mode": "futures",
"margin_mode": "cross",
"proxy_coin": "BNFCR",
"stake_currency": "USDT" // or "USDC"
&quot;trading_mode&quot;: &quot;futures&quot;,
&quot;margin_mode&quot;: &quot;cross&quot;,
&quot;proxy_coin&quot;: &quot;BNFCR&quot;,
&quot;stake_currency&quot;: &quot;USDT&quot; // or &quot;USDC&quot;
// ...
}</code></p>
}
</code></pre></div>
<p>The <code>stake_currency</code> setting defines the markets the bot will be operating in. This choice is really arbitrary.</p>
<p>On the exchange, you'll have to use "Multi-asset Mode" - and "Position Mode set to "One-way Mode".<br />
Freqtrade will check these settings on startup, but won't attempt to change them.</p>
@@ -2470,7 +2970,7 @@ The assumption for this mode is that the data is downloaded and unzipped keeping
Duplicate content will be ignored (based on timestamp) - though the assumption is that there is no gap in the data.</p>
<p>This means, if your "full" history ends in Q4 2022 - then both incremental updates Q1 2023 and Q2 2023 are available.
Not having this will lead to incomplete data, and therefore invalid results while using the data.</p>
<p><code>└── trades_csv
<div class="highlight"><pre><span></span><code>└── trades_csv
    ├── Kraken_full_history
   │   ├── BCHEUR.csv
   │   └── XBTEUR.csv
@@ -2479,16 +2979,16 @@ Not having this will lead to incomplete data, and therefore invalid results whil
   │   └── XBTEUR.csv
   └── Kraken_Trading_History_Q2_2023
      ├── BCHEUR.csv
      └── XBTEUR.csv</code></p>
      └── XBTEUR.csv
</code></pre></div>
<p>You can convert these files into freqtrade files:</p>
<p>``` bash
freqtrade convert-trade-data --exchange kraken --format-from kraken_csv --format-to feather</p>
<h1 id="convert-trade-data-to-different-ohlcv-timeframes">Convert trade data to different ohlcv timeframes<a class="headerlink" href="#convert-trade-data-to-different-ohlcv-timeframes" title="Permanent link">&para;</a></h1>
<p>freqtrade trades-to-ohlcv -p BTC/EUR BCH/EUR --exchange kraken -t 1m 5m 15m 1h
```</p>
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>convert-trade-data<span class="w"> </span>--exchange<span class="w"> </span>kraken<span class="w"> </span>--format-from<span class="w"> </span>kraken_csv<span class="w"> </span>--format-to<span class="w"> </span>feather
<span class="c1"># Convert trade data to different ohlcv timeframes</span>
freqtrade<span class="w"> </span>trades-to-ohlcv<span class="w"> </span>-p<span class="w"> </span>BTC/EUR<span class="w"> </span>BCH/EUR<span class="w"> </span>--exchange<span class="w"> </span>kraken<span class="w"> </span>-t<span class="w"> </span>1m<span class="w"> </span>5m<span class="w"> </span>15m<span class="w"> </span>1h
</code></pre></div>
<p>The converted data also makes downloading data possible, and will start the download after the latest loaded trade.</p>
<p><code>bash
freqtrade download-data --exchange kraken --dl-trades -p BTC/EUR BCH/EUR</code></p>
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>download-data<span class="w"> </span>--exchange<span class="w"> </span>kraken<span class="w"> </span>--dl-trades<span class="w"> </span>-p<span class="w"> </span>BTC/EUR<span class="w"> </span>BCH/EUR<span class="w"> </span>
</code></pre></div>
<div class="admonition warning">
<p class="admonition-title">Downloading data from kraken</p>
<p>Downloading kraken data will require significantly more memory (RAM) than any other exchange, as the trades-data needs to be converted into candles on your machine.
@@ -2501,15 +3001,15 @@ So, in order to mitigate Kraken API "Rate limit exceeded" exception, this config
</div>
<h2 id="kraken-futures">Kraken Futures<a class="headerlink" href="#kraken-futures" title="Permanent link">&para;</a></h2>
<p>Kraken Futures uses the exchange id <code>krakenfutures</code> and supports isolated futures mode.</p>
<p><code>jsonc
"exchange": {
"name": "krakenfutures",
"key": "your_exchange_key",
"secret": "your_exchange_secret"
<div class="highlight"><pre><span></span><code>&quot;exchange&quot;: {
&quot;name&quot;: &quot;krakenfutures&quot;,
&quot;key&quot;: &quot;your_exchange_key&quot;,
&quot;secret&quot;: &quot;your_exchange_secret&quot;
},
"trading_mode": "futures",
"margin_mode": "isolated",
"stake_currency": "USD"</code></p>
&quot;trading_mode&quot;: &quot;futures&quot;,
&quot;margin_mode&quot;: &quot;isolated&quot;,
&quot;stake_currency&quot;: &quot;USD&quot;
</code></pre></div>
<div class="admonition tip">
<p class="admonition-title">Stoploss on Exchange</p>
<p>Kraken Futures supports <code>stoploss_on_exchange</code> with both <code>limit</code> and <code>market</code> stop orders.
@@ -2526,14 +3026,14 @@ Freqtrade derives the <code>USD</code> balance from Kraken margin fields, so kee
</div>
<h2 id="kucoin">Kucoin<a class="headerlink" href="#kucoin" title="Permanent link">&para;</a></h2>
<p>Kucoin requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows:</p>
<p><code>json
"exchange": {
"name": "kucoin",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;kucoin&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_api_key_password&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div>
<p>Kucoin supports <a href="../configuration/#understand-order_time_in_force">time_in_force</a> with settings "GTC" (good till cancelled), "FOK" (full-or-cancel) and "IOC" (immediate-or-cancel) settings.</p>
<div class="admonition tip">
<p class="admonition-title">Stoploss on Exchange</p>
@@ -2550,14 +3050,14 @@ Kucoin accounts may use <code>KCS</code> for fees, and if a trade happens to be
</div>
<h2 id="okx">OKX<a class="headerlink" href="#okx" title="Permanent link">&para;</a></h2>
<p>OKX requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows:</p>
<p><code>json
"exchange": {
"name": "okx",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;okx&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_api_key_password&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div>
<p>If you've registered with OKX on the host my.okx.com (OKX EAA)- you will need to use <code>"myokx"</code> as the exchange name.
Using the wrong exchange will result in the error "OKX Error 50119: API key doesn't exist" - as the 2 are separate entities.</p>
<div class="admonition warning">
@@ -2612,28 +3112,28 @@ Other configurations (multiple bots on one account, manual non-bot trades on the
<h2 id="bitmart">Bitmart<a class="headerlink" href="#bitmart" title="Permanent link">&para;</a></h2>
<p>Bitmart requires the API key Memo (the name you give the API key) to go along with the exchange key and secret.
It's therefore required to pass the UID as well.</p>
<p><code>json
"exchange": {
"name": "bitmart",
"uid": "your_bitmart_api_key_memo",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;bitmart&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;uid&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_bitmart_api_key_memo&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_api_key_password&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div>
<div class="admonition warning">
<p class="admonition-title">Necessary Verification</p>
<p>Bitmart requires Verification Lvl2 to successfully trade on the spot market through the API - even though trading via UI works just fine with just Lvl1 verification.</p>
</div>
<h2 id="bitget">Bitget<a class="headerlink" href="#bitget" title="Permanent link">&para;</a></h2>
<p>Bitget requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows:</p>
<p><code>json
"exchange": {
"name": "bitget",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;bitget&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_secret&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_exchange_api_key_password&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div>
<p>Bitget supports <a href="../configuration/#understand-order_time_in_force">time_in_force</a> with settings "GTC" (good till cancelled), "FOK" (full-or-cancel), "IOC" (immediate-or-cancel) and "PO" (Post only) settings.</p>
<div class="admonition tip">
<p class="admonition-title">Stoploss on Exchange</p>
@@ -2656,13 +3156,13 @@ Freqtrade will attempt to detect the account type on startup - changing the acco
</div>
<p>Hyperliquid is a Decentralized Exchange (DEX). Decentralized exchanges work a bit different compared to normal exchanges. Instead of authenticating private API calls using an API key, private API calls need to be signed with the private key of your wallet (We recommend using an api Wallet for this, generated either on Hyperliquid or in your wallet of choice).
This needs to be configured like this:</p>
<p><code>json
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_eth_wallet_address", // This should NOT be your API Wallet Address!
"privateKey": "your_api_private_key",
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;hyperliquid&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;walletAddress&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_eth_wallet_address&quot;</span><span class="p">,</span><span class="w"> </span><span class="c1">// This should NOT be your API Wallet Address!</span>
<span class="w"> </span><span class="nt">&quot;privateKey&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_api_private_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div>
<ul>
<li>walletAddress in hex format: <code>0x&lt;40 hex characters&gt;</code> - Can be easily copied from your wallet - and should be your main wallet address, not your API Wallet Address.</li>
<li>privateKey in hex format: <code>0x&lt;64 hex characters&gt;</code> - Use the key the API Wallet shows on creation.</li>
@@ -2688,19 +3188,19 @@ Unfortunately, hyperliquid only offers 5000 historic candles, so backtesting wil
<h3 id="hyperliquid-vault-subaccount">Hyperliquid Vault / Subaccount<a class="headerlink" href="#hyperliquid-vault-subaccount" title="Permanent link">&para;</a></h3>
<p>Hyperliquid allows you to create either a vault or a subaccount.<br />
To use these with Freqtrade, you will need to use the following configuration pattern:</p>
<p><code>json
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_master_wallet_address", // Your master wallet address (not the API wallet address and not the vault/subaccount address).
"privateKey": "your_api_private_key", // API wallet private key (see https://app.hyperliquid.xyz/API). You'll only need the private key.
"ccxt_config": {
"options": {
"vaultAddress": "your_vault_address", // Optional, only if you want to use a vault ...
"subAccountAddress": "your_subaccount_address" // OR optional, only if you want to use a subaccount
}
},
// ...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;hyperliquid&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;walletAddress&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_master_wallet_address&quot;</span><span class="p">,</span><span class="w"> </span><span class="c1">// Your master wallet address (not the API wallet address and not the vault/subaccount address).</span>
<span class="w"> </span><span class="nt">&quot;privateKey&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_api_private_key&quot;</span><span class="p">,</span><span class="w"> </span><span class="c1">// API wallet private key (see https://app.hyperliquid.xyz/API). You&#39;ll only need the private key.</span>
<span class="w"> </span><span class="nt">&quot;ccxt_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;options&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;vaultAddress&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_vault_address&quot;</span><span class="p">,</span><span class="w"> </span><span class="c1">// Optional, only if you want to use a vault ...</span>
<span class="w"> </span><span class="nt">&quot;subAccountAddress&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_subaccount_address&quot;</span><span class="w"> </span><span class="c1">// OR optional, only if you want to use a subaccount</span>
<span class="w"> </span><span class="p">}</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>Your balance and trades will now be used from your vault / subaccount - and no longer from your main account.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
@@ -2712,13 +3212,13 @@ To use these with Freqtrade, you will need to use the following configuration pa
<p>Hyperliquid supports HIP-3 decentralized exchanges (DEXes), which are independent exchanges built on top of the Hyperliquid infrastructure.
These DEXes operate similarly to the main Hyperliquid exchange but are community-created and managed.</p>
<p>To trade on HIP-3 DEXes with Freqtrade, you need to add them to your configuration using the <code>hip3_dexes</code> parameter:</p>
<p><code>json
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_master_wallet_address",
"privateKey": "your_api_private_key",
"hip3_dexes": ["dex_name_1", "dex_name_2"]
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;hyperliquid&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;walletAddress&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_master_wallet_address&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;privateKey&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;your_api_private_key&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;hip3_dexes&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;dex_name_1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;dex_name_2&quot;</span><span class="p">]</span>
<span class="p">}</span>
</code></pre></div>
<p>Replace <code>"dex_name_1"</code> and <code>"dex_name_2"</code> with the actual names of the HIP-3 DEXes you want to trade on (e.g. <code>vntl</code> and <code>xyz</code>).</p>
<div class="admonition warning">
<p class="admonition-title">Performance and Rate Limit Impact</p>
@@ -2737,17 +3237,17 @@ Different HIP-3 DEXes may also use different quote currencies - so make sure to
</div>
<h2 id="bitvavo">Bitvavo<a class="headerlink" href="#bitvavo" title="Permanent link">&para;</a></h2>
<p>If your account is required to use an operatorId, you can set it in the configuration file as follows:</p>
<p><code>json
"exchange": {
"name": "bitvavo",
"key": "",
"secret": "",
"ccxt_config": {
"options": {
"operatorId": "123567"
}
},
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;bitvavo&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;key&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;secret&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;ccxt_config&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;options&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;operatorId&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;123567&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">}</span>
</code></pre></div>
<p>Bitvavo expects the <code>operatorId</code> to be an integer.</p>
<h2 id="all-exchanges">All exchanges<a class="headerlink" href="#all-exchanges" title="Permanent link">&para;</a></h2>
<p>Should you experience constant errors with Nonce (like <code>InvalidNonce</code>), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys.</p>
@@ -2755,8 +3255,8 @@ Different HIP-3 DEXes may also use different quote currencies - so make sure to
<ul>
<li>The Ocean (exchange id: <code>theocean</code>) exchange uses Web3 functionality and requires <code>web3</code> python package to be installed:</li>
</ul>
<p><code>shell
pip3 install web3</code></p>
<div class="highlight"><pre><span></span><code>pip3<span class="w"> </span>install<span class="w"> </span>web3
</code></pre></div>
<h3 id="getting-latest-price-incomplete-candles">Getting latest price / Incomplete candles<a class="headerlink" href="#getting-latest-price-incomplete-candles" title="Permanent link">&para;</a></h3>
<p>Most exchanges return current incomplete candle via their OHLCV/klines API interface.
By default, Freqtrade assumes that incomplete candle is fetched from the exchange and removes the last candle assuming it's the incomplete candle.</p>
@@ -2767,15 +3267,15 @@ By default, Freqtrade assumes that incomplete candle is fetched from the exchang
<p>Advanced options can be configured using the <code>_ft_has_params</code> setting, which will override Defaults and exchange-specific behavior.</p>
<p>Available options are listed in the exchange-class as <code>_ft_has_default</code>.</p>
<p>For example, to test the order type <code>FOK</code> with Kraken, and modify candle limit to 200 (so you only get 200 candles per API call):</p>
<p><code>json
"exchange": {
"name": "kraken",
"_ft_has_params": {
"order_time_in_force": ["GTC", "FOK"],
"ohlcv_candle_limit": 200
}
//...
}</code></p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;exchange&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;kraken&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;_ft_has_params&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;order_time_in_force&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;GTC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;FOK&quot;</span><span class="p">],</span>
<span class="w"> </span><span class="nt">&quot;ohlcv_candle_limit&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">//...</span>
<span class="p">}</span>
</code></pre></div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Please make sure to fully understand the impacts of these settings before modifying them.