thrasher-corp / gocryptotrader

A cryptocurrency trading bot and framework supporting multiple exchanges written in Golang.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Change leverage for Binance margin asset

gschurck opened this issue · comments

How to change leverage for Binance margin asset ?

I see that the setLeverage function is only available for futures :

// SetLeverage sets the account's initial leverage for the asset type and pair
func (b *Binance) SetLeverage(ctx context.Context, item asset.Item, pair currency.Pair, _ margin.Type, amount float64, _ order.Side) error {
	switch item {
	case asset.USDTMarginedFutures:
		_, err := b.UChangeInitialLeverageRequest(ctx, pair, amount)
		return err
	case asset.CoinMarginedFutures:
		_, err := b.FuturesChangeInitialLeverage(ctx, pair, amount)
		return err
	default:
		return fmt.Errorf("%w %v", asset.ErrNotSupported, item)
	}
}

And that submitting an order with a leverage different than 0 or 1 is not supported :

// SubmitOrder submits a new order
func (b *Binance) SubmitOrder(ctx context.Context, s *order.Submit) (*order.SubmitResponse, error) {
	if err := s.Validate(); err != nil {
		return nil, err
	}
	var orderID string
	status := order.New
	var trades []order.TradeHistory
	if s.Leverage != 0 && s.Leverage != 1 {
		return nil, fmt.Errorf("%w received '%v'", order.ErrSubmitLeverageNotSupported, s.Leverage)
	}
        ...
}

Then how to change the leverage for Binance margin ?