docs(exchange): add Kraken Futures notes
This commit is contained in:
@@ -268,6 +268,7 @@ If `--convert` is also provided, the resample step will happen automatically and
|
|||||||
|
|
||||||
!!! Note "Kraken user"
|
!!! Note "Kraken user"
|
||||||
Kraken users should read [this](exchanges.md#historic-kraken-data) before starting to download data.
|
Kraken users should read [this](exchanges.md#historic-kraken-data) before starting to download data.
|
||||||
|
Kraken Futures uses standard OHLCV downloads and does not require `--dl-trades`.
|
||||||
|
|
||||||
Example call:
|
Example call:
|
||||||
|
|
||||||
|
|||||||
@@ -217,6 +217,44 @@ freqtrade download-data --exchange kraken --dl-trades -p BTC/EUR BCH/EUR
|
|||||||
Please pay attention that rateLimit configuration entry holds delay in milliseconds between requests, NOT requests/sec rate.
|
Please pay attention that rateLimit configuration entry holds delay in milliseconds between requests, NOT requests/sec rate.
|
||||||
So, in order to mitigate Kraken API "Rate limit exceeded" exception, this configuration should be increased, NOT decreased.
|
So, in order to mitigate Kraken API "Rate limit exceeded" exception, this configuration should be increased, NOT decreased.
|
||||||
|
|
||||||
|
## Kraken Futures
|
||||||
|
|
||||||
|
Kraken Futures uses the exchange id `krakenfutures` and supports isolated futures mode.
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
"exchange": {
|
||||||
|
"name": "krakenfutures",
|
||||||
|
"key": "your_exchange_key",
|
||||||
|
"secret": "your_exchange_secret",
|
||||||
|
"ccxt_config": {"enableRateLimit": true},
|
||||||
|
"ccxt_async_config": {"enableRateLimit": true},
|
||||||
|
"triggerSignal": "mark" // "mark" (default), "last", or "index"
|
||||||
|
},
|
||||||
|
"trading_mode": "futures",
|
||||||
|
"margin_mode": "isolated",
|
||||||
|
"stake_currency": "USD"
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! Tip "Stoploss on Exchange"
|
||||||
|
Kraken Futures supports `stoploss_on_exchange` with both `limit` and `market` stop orders.
|
||||||
|
Use `exchange.triggerSignal` to select the trigger price source (`mark`, `last`, or `index`).
|
||||||
|
|
||||||
|
!!! Note "Collateral"
|
||||||
|
Kraken Futures is USD-settled. Kraken allows EUR collateral, but USD is the recommended stake currency.
|
||||||
|
|
||||||
|
!!! Note "Pair format"
|
||||||
|
Futures pairs use CCXT symbols, for example `BTC/USD:USD`.
|
||||||
|
|
||||||
|
### Data download
|
||||||
|
|
||||||
|
Kraken Futures uses normal OHLCV downloads.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
freqtrade download-data --exchange krakenfutures --trading-mode futures --pairs BTC/USD:USD --timeframes 1m 5m
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: OHLCV requests are capped at 2000 candles per call, so large downloads may take longer.
|
||||||
|
|
||||||
## Kucoin
|
## Kucoin
|
||||||
|
|
||||||
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:
|
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:
|
||||||
|
|||||||
@@ -54,21 +54,13 @@ def available_exchanges(ccxt_module: CcxtModuleType | None = None) -> list[str]:
|
|||||||
return [x for x in exchanges if validate_exchange(x)[0]]
|
return [x for x in exchanges if validate_exchange(x)[0]]
|
||||||
|
|
||||||
|
|
||||||
def _exchange_has_helper(
|
def _exchange_has_helper(ex_has: dict[str, Any], required: dict[str, list[str]]) -> list[str]:
|
||||||
ex_has_or_exchange: dict[str, Any] | ccxt.Exchange,
|
|
||||||
required: dict[str, list[str]],
|
|
||||||
) -> list[str]:
|
|
||||||
"""
|
"""
|
||||||
Checks availability of methods (or their replacement)s in a merged has-dict.
|
Checks availability of methods (or their replacement)s in a merged has-dict.
|
||||||
:param ex_has: merged "has" dict (ccxt + freqtrade overrides)
|
:param ex_has: merged "has" dict (ccxt + freqtrade overrides)
|
||||||
:param required: dict of required methods, with possible replacement methods as list
|
:param required: dict of required methods, with possible replacement methods as list
|
||||||
:return: list of missing required methods
|
:return: list of missing required methods
|
||||||
"""
|
"""
|
||||||
if isinstance(ex_has_or_exchange, dict):
|
|
||||||
ex_has = ex_has_or_exchange
|
|
||||||
else:
|
|
||||||
ex_has = getattr(ex_has_or_exchange, "has", {}) or {}
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
k
|
k
|
||||||
for k, v in required.items()
|
for k, v in required.items()
|
||||||
|
|||||||
Reference in New Issue
Block a user