Skip to content

Commit

Permalink
Merge pull request #42 from singlesly/feat#40-implement-switch-leverage
Browse files Browse the repository at this point in the history
feat: implement switch margin mode #40
singlesly authored Oct 12, 2023
2 parents a4595f8 + 65ab81d commit 256cb0c
Showing 2 changed files with 61 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/bingx-client/services/trade.service.ts
Original file line number Diff line number Diff line change
@@ -8,6 +8,8 @@ import {
BingxSwitchMarginModeEndpoint,
MarginType,
} from '@app/bingx/endpoints/bingx-switch-margin-mode-endpoint';
import { BingxSwitchLeverageEndpoint } from '@app/bingx/endpoints/bingx-switch-leverage-endpoint';
import { OrderPositionSideEnum } from '@app/bingx';

export class TradeService {
constructor(private readonly requestExecutor: RequestExecutorInterface) {}
@@ -42,4 +44,15 @@ export class TradeService {
new BingxSwitchMarginModeEndpoint(symbol, marginType, account),
);
}

public switchLeverage(
symbol: string,
leverage: number,
side: OrderPositionSideEnum,
account: AccountInterface,
) {
return this.requestExecutor.execute(
new BingxSwitchLeverageEndpoint(symbol, leverage, side, account),
);
}
}
48 changes: 48 additions & 0 deletions src/bingx/endpoints/bingx-switch-leverage-endpoint.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import {
AccountInterface,
DefaultSignatureParameters,
Endpoint,
EndpointInterface,
OrderPositionSideEnum,
SignatureParametersInterface,
} from '@app/bingx';

export interface SwitchLeverageResponse {}

export interface SwitchLeverageInterface {
symbol: string;
leverage: number;
side: OrderPositionSideEnum;
}

export class BingxSwitchLeverageEndpoint
extends Endpoint
implements EndpointInterface<SwitchLeverageResponse>
{
constructor(
private readonly symbol: string,
private readonly leverage: number,
private readonly side: OrderPositionSideEnum,
readonly account: AccountInterface,
) {
super(account);
}

method(): 'get' | 'post' | 'put' | 'patch' | 'delete' {
return 'post';
}

parameters(): SignatureParametersInterface {
return new DefaultSignatureParameters({
symbol: this.symbol,
leverage: this.leverage.toString(10),
side: this.side,
});
}

path(): string {
return '/openApi/swap/v2/trade/leverage';
}

readonly t!: SwitchLeverageResponse;
}

0 comments on commit 256cb0c

Please sign in to comment.