Skip to content

Commit

Permalink
Merge pull request #18735 from carlosmiei/kucoinfutures-setleverage
Browse files Browse the repository at this point in the history
feat(krakenfutures): add setLeverage and fetchLeverage
  • Loading branch information
kroitor committed Aug 1, 2023
2 parents e6ca158 + cf47082 commit e806dac
Showing 1 changed file with 56 additions and 1 deletion.
57 changes: 56 additions & 1 deletion ts/src/krakenfutures.ts
Expand Up @@ -50,6 +50,7 @@ export default class krakenfutures extends Exchange {
'fetchIndexOHLCV': false,
'fetchIsolatedPositions': false,
'fetchLeverageTiers': true,
'fetchLeverage': true,
'fetchMarketLeverageTiers': 'emulated',
'fetchMarkets': true,
'fetchMarkOHLCV': true,
Expand All @@ -63,7 +64,7 @@ export default class krakenfutures extends Exchange {
'fetchPremiumIndexOHLCV': false,
'fetchTickers': true,
'fetchTrades': true,
'setLeverage': false,
'setLeverage': true,
'setMarginMode': false,
'transfer': true,
},
Expand Down Expand Up @@ -108,6 +109,8 @@ export default class krakenfutures extends Exchange {
'recentorders',
'fills',
'transfers',
'leveragepreferences',
'pnlpreferences',
],
'post': [
'sendorder',
Expand All @@ -119,6 +122,10 @@ export default class krakenfutures extends Exchange {
'cancelallordersafter',
'withdrawal', // for futures wallet -> kraken spot wallet
],
'put': [
'leveragepreferences',
'pnlpreferences',
],
},
'charts': {
'get': [
Expand Down Expand Up @@ -2048,6 +2055,54 @@ export default class krakenfutures extends Exchange {
});
}

async setLeverage (leverage, symbol: string = undefined, params = {}) {
/**
* @method
* @name krakenfutures#setLeverage
* @description set the level of leverage for a market
* @see https://docs.futures.kraken.com/#http-api-trading-v3-api-multi-collateral-set-the-leverage-setting-for-a-market
* @param {float} leverage the rate of leverage
* @param {string} symbol unified market symbol
* @param {object} [params] extra parameters specific to the delta api endpoint
* @returns {object} response from the exchange
*/
this.checkRequiredSymbol ('setLeverage', symbol);
await this.loadMarkets ();
const request = {
'maxLeverage': leverage,
'symbol': this.marketId (symbol).toUpperCase (),
};
//
// { result: 'success', serverTime: '2023-08-01T09:40:32.345Z' }
//
return await this.privatePutLeveragepreferences (this.extend (request, params));
}

async fetchLeverage (symbol: string = undefined, params = {}) {
/**
* @method
* @name krakenfutures#fetchLeverage
* @description fetch the set leverage for a market
* @see https://docs.futures.kraken.com/#http-api-trading-v3-api-multi-collateral-get-the-leverage-setting-for-a-market
* @param {string} symbol unified market symbol
* @param {object} [params] extra parameters specific to the krakenfutures api endpoint
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
*/
this.checkRequiredSymbol ('fetchLeverage', symbol);
await this.loadMarkets ();
const request = {
'symbol': this.marketId (symbol).toUpperCase (),
};
//
// {
// result: 'success',
// serverTime: '2023-08-01T09:54:08.900Z',
// leveragePreferences: [ { symbol: 'PF_LTCUSD', maxLeverage: '5.00' } ]
// }
//
return await this.privateGetLeveragepreferences (this.extend (request, params));
}

handleErrors (code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
if (response === undefined) {
return undefined;
Expand Down

0 comments on commit e806dac

Please sign in to comment.