Class: Bybit::RestApi::PositionService

Inherits:
BaseService show all
Defined in:
lib/bybit/rest_api/position_service.rb

Instance Method Summary collapse

Methods inherited from BaseService

#initialize

Constructor Details

This class inherits a constructor from Bybit::RestApi::BaseService

Instance Method Details

#add_reduce_margin(category:, symbol:, margin:, **kwargs) ⇒ Hash

Manually add or reduce margin for an isolated margin position

POST /v5/position/add-margin

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • margin (String)

    Add or reduce. To add, then 10; to reduce, then -10

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :position_idx (Integer)

    Used to identify positions in different position modes

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



16
17
18
19
20
# File 'lib/bybit/rest_api/position_service.rb', line 16

def add_reduce_margin(category:, symbol:, margin:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, margin: margin)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/add-margin', body: params)
end

#confirm_new_risk_limit(category:, symbol:, **kwargs) ⇒ Hash

Confirm new risk limit to remove reduce-only restriction

POST /v5/position/confirm-pending-mmr

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



30
31
32
33
34
# File 'lib/bybit/rest_api/position_service.rb', line 30

def confirm_new_risk_limit(category:, symbol:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/confirm-pending-mmr', body: params)
end

#get_closed_pnl(category:, **kwargs) ⇒ Hash

Get closed profit and loss records

GET /v5/position/closed-pnl

Parameters:

  • category (String)

    Product type

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :symbol (String)

    Symbol name

  • :start_time (Integer)

    Start timestamp in ms

  • :end_time (Integer)

    End timestamp in ms

  • :limit (Integer)

    Limit for data size per page

  • :cursor (String)

    Cursor for pagination

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



66
67
68
69
70
# File 'lib/bybit/rest_api/position_service.rb', line 66

def get_closed_pnl(category:, **kwargs)
  params = kwargs.merge(category: category)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :get, path: '/v5/position/closed-pnl', params: params)
end

#get_closed_positions(category:, **kwargs) ⇒ Hash

Get closed option position records

GET /v5/position/get-closed-positions

Parameters:

  • category (String)

    Product type

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :symbol (String)

    Symbol name

  • :start_time (Integer)

    Start timestamp in ms

  • :end_time (Integer)

    End timestamp in ms

  • :limit (Integer)

    Limit for data size per page

  • :cursor (String)

    Cursor for pagination

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



48
49
50
51
52
# File 'lib/bybit/rest_api/position_service.rb', line 48

def get_closed_positions(category:, **kwargs)
  params = kwargs.merge(category: category)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :get, path: '/v5/position/get-closed-positions', params: params)
end

#get_move_position_history(**kwargs) ⇒ Hash

Get move position (block trade) history

GET /v5/position/move-history

Parameters:

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :category (String)

    Product type

  • :symbol (String)

    Symbol name

  • :start_time (Integer)

    Start timestamp in ms

  • :end_time (Integer)

    End timestamp in ms

  • :status (String)

    Move position status

  • :block_trade_id (String)

    Block trade ID

  • :limit (String)

    Limit for data size per page

  • :cursor (String)

    Cursor for pagination

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



86
87
88
89
90
# File 'lib/bybit/rest_api/position_service.rb', line 86

def get_move_position_history(**kwargs)
  params = kwargs.dup
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :get, path: '/v5/position/move-history', params: params)
end

#get_positions(category:, **kwargs) ⇒ Hash

Get position info (real-time)

GET /v5/position/list

Parameters:

  • category (String)

    Product type

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :symbol (String)

    Symbol name

  • :base_coin (String)

    Base coin

  • :settle_coin (String)

    Settle coin

  • :limit (Integer)

    Limit for data size per page

  • :cursor (String)

    Cursor for pagination

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



104
105
106
107
108
# File 'lib/bybit/rest_api/position_service.rb', line 104

def get_positions(category:, **kwargs)
  params = kwargs.merge(category: category)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :get, path: '/v5/position/list', params: params)
end

#move_position(from_uid:, to_uid:, list:, **kwargs) ⇒ Hash

Move positions between UIDs via block trade

POST /v5/position/move-positions

Parameters:

  • from_uid (String)

    Original UID (from which the position is moved)

  • to_uid (String)

    Target UID (to which the position is moved)

  • list (Array)

    Positions to move (array of objects)

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



119
120
121
122
123
# File 'lib/bybit/rest_api/position_service.rb', line 119

def move_position(from_uid:, to_uid:, list:, **kwargs)
  params = kwargs.merge(from_uid: from_uid, to_uid: to_uid, list: list)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/move-positions', body: params)
end

#set_auto_add_margin(category:, symbol:, auto_add_margin:, **kwargs) ⇒ Hash

Enable or disable auto-add-margin for a position

POST /v5/position/set-auto-add-margin

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • auto_add_margin (Integer)

    0: disable, 1: enable

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :position_idx (Integer)

    Used to identify positions in different position modes

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



135
136
137
138
139
# File 'lib/bybit/rest_api/position_service.rb', line 135

def set_auto_add_margin(category:, symbol:, auto_add_margin:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, auto_add_margin: auto_add_margin)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/set-auto-add-margin', body: params)
end

#set_leverage(category:, symbol:, buy_leverage:, sell_leverage:, **kwargs) ⇒ Hash

Set leverage for a position

POST /v5/position/set-leverage

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • buy_leverage (String)

    Buy leverage

  • sell_leverage (String)

    Sell leverage

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



151
152
153
154
155
# File 'lib/bybit/rest_api/position_service.rb', line 151

def set_leverage(category:, symbol:, buy_leverage:, sell_leverage:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, buy_leverage: buy_leverage, sell_leverage: sell_leverage)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/set-leverage', body: params)
end

#set_trading_stop(category:, symbol:, tpsl_mode:, position_idx:, **kwargs) ⇒ Hash

Set take profit, stop loss, and trailing stop for a position

POST /v5/position/trading-stop

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • tpsl_mode (String)

    TP/SL mode: Full or Partial

  • position_idx (Integer)

    Used to identify positions in different position modes

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :take_profit (String)

    Take profit price

  • :stop_loss (String)

    Stop loss price

  • :trailing_stop (String)

    Trailing stop

  • :tp_trigger_by (String)

    Take profit trigger price type

  • :sl_trigger_by (String)

    Stop loss trigger price type

  • :active_price (String)

    Trailing stop trigger price

  • :tp_size (String)

    Take profit size (Partial mode)

  • :sl_size (String)

    Stop loss size (Partial mode)

  • :tp_limit_price (String)

    The limit order price when take profit price is triggered

  • :sl_limit_price (String)

    The limit order price when stop loss price is triggered

  • :tp_order_type (String)

    Take profit order type: Market or Limit

  • :sl_order_type (String)

    Stop loss order type: Market or Limit

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



179
180
181
182
183
# File 'lib/bybit/rest_api/position_service.rb', line 179

def set_trading_stop(category:, symbol:, tpsl_mode:, position_idx:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, tpsl_mode: tpsl_mode, position_idx: position_idx)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/trading-stop', body: params)
end

#switch_position_mode(category:, mode:, **kwargs) ⇒ Hash

Switch position mode between one-way and hedge mode

POST /v5/position/switch-mode

Parameters:

  • category (String)

    Product type

  • mode (Integer)

    Position mode: 0 (Merged Single), 3 (Both Sides)

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :symbol (String)

    Symbol name

  • :coin (String)

    Coin

Returns:

  • (Hash)

    Bybit V5 ApiResponse envelope (retCode / retMsg / result / retExtInfo / time).

See Also:



195
196
197
198
199
# File 'lib/bybit/rest_api/position_service.rb', line 195

def switch_position_mode(category:, mode:, **kwargs)
  params = kwargs.merge(category: category, mode: mode)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/position/switch-mode', body: params)
end