Class: Bybit::RestApi::TradeService

Inherits:
BaseService show all
Defined in:
lib/bybit/rest_api/trade_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

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

Amend an open unfilled or partially filled order.

POST /v5/order/amend

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :order_id (String)

    Order ID

  • :order_link_id (String)

    User customised order ID

  • :order_iv (String)

    Implied volatility (options)

  • :trigger_price (String)

    Trigger price

  • :qty (String)

    Order quantity

  • :price (String)

    Order price

  • :tpsl_mode (String)

    TP/SL mode

  • :take_profit (String)

    Take profit price

  • :stop_loss (String)

    Stop loss price

  • :tp_trigger_by (String)

    Take profit trigger price type

  • :sl_trigger_by (String)

    Stop loss trigger price type

  • :trigger_by (String)

    Trigger price type

  • :tp_limit_price (String)

    Take profit limit price

  • :sl_limit_price (String)

    Stop loss limit price

Returns:

  • (Hash)

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

See Also:



51
52
53
54
55
# File 'lib/bybit/rest_api/trade_service.rb', line 51

def amend_order(category:, symbol:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/amend', body: params)
end

#batch_amend_orders(category:, request:, **kwargs) ⇒ Hash

Batch amend multiple orders in a single request.

POST /v5/order/amend-batch

Parameters:

  • category (String)

    Product type

  • request (Array)

    Array of order amend objects

Returns:

  • (Hash)

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

See Also:



65
66
67
68
69
# File 'lib/bybit/rest_api/trade_service.rb', line 65

def batch_amend_orders(category:, request:, **kwargs)
  params = kwargs.merge(category: category, request: request)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/amend-batch', body: params)
end

#batch_cancel_orders(category:, request:, **kwargs) ⇒ Hash

Batch cancel multiple orders in a single request.

POST /v5/order/cancel-batch

Parameters:

  • category (String)

    Product type

  • request (Array)

    Array of order cancel objects

Returns:

  • (Hash)

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

See Also:



79
80
81
82
83
# File 'lib/bybit/rest_api/trade_service.rb', line 79

def batch_cancel_orders(category:, request:, **kwargs)
  params = kwargs.merge(category: category, request: request)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/cancel-batch', body: params)
end

#batch_create_orders(category:, request:, **kwargs) ⇒ Hash

Batch place multiple orders in a single request.

POST /v5/order/create-batch

Parameters:

  • category (String)

    Product type

  • request (Array)

    Array of order create objects

Returns:

  • (Hash)

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

See Also:



93
94
95
96
97
# File 'lib/bybit/rest_api/trade_service.rb', line 93

def batch_create_orders(category:, request:, **kwargs)
  params = kwargs.merge(category: category, request: request)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/create-batch', body: params)
end

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

Cancel all open orders for a product line, symbol, or coin.

POST /v5/order/cancel-all

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

  • :order_filter (String)

    Order filter

  • :stop_order_type (String)

    Stop order type

Returns:

  • (Hash)

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

See Also:



111
112
113
114
115
# File 'lib/bybit/rest_api/trade_service.rb', line 111

def cancel_all_orders(category:, **kwargs)
  params = kwargs.merge(category: category)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/cancel-all', body: params)
end

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

Cancel a single open order by orderId or orderLinkId.

POST /v5/order/cancel

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :order_id (String)

    Order ID

  • :order_link_id (String)

    User customised order ID

  • :order_filter (String)

    Order filter

Returns:

  • (Hash)

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

See Also:



128
129
130
131
132
# File 'lib/bybit/rest_api/trade_service.rb', line 128

def cancel_order(category:, symbol:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/cancel', body: params)
end

#create_order(category:, symbol:, side:, order_type:, qty:, **kwargs) ⇒ Hash

Place a new order for spot, linear, inverse, or option products.

POST /v5/order/create

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • side (String)

    Buy or Sell

  • order_type (String)

    Market or Limit

  • qty (String)

    Order quantity

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :is_leverage (Integer)

    Whether to borrow (spot margin)

  • :market_unit (String)

    Unit for spot market order quantity

  • :slippage_tolerance_type (String)

    Slippage tolerance type

  • :slippage_tolerance (String)

    Slippage tolerance value

  • :price (String)

    Order price

  • :trigger_direction (Integer)

    Conditional order trigger direction

  • :order_filter (String)

    Order filter

  • :trigger_price (String)

    Trigger price

  • :trigger_by (String)

    Trigger price type

  • :order_iv (String)

    Implied volatility (options)

  • :time_in_force (String)

    Time in force

  • :position_idx (Integer)

    Position mode index

  • :order_link_id (String)

    User customised order ID

  • :take_profit (String)

    Take profit price

  • :stop_loss (String)

    Stop loss price

  • :tp_trigger_by (String)

    Take profit trigger price type

  • :sl_trigger_by (String)

    Stop loss trigger price type

  • :reduce_only (Boolean)

    Reduce-only flag

  • :close_on_trigger (Boolean)

    Close on trigger flag

  • :smp_type (String)

    Self match prevention type

  • :mmp (Boolean)

    Market maker protection flag (options)

  • :tpsl_mode (String)

    TP/SL mode

  • :tp_limit_price (String)

    Take profit limit price

  • :sl_limit_price (String)

    Stop loss limit price

  • :tp_order_type (String)

    Take profit order type

  • :sl_order_type (String)

    Stop loss order type

  • :bbo_side_type (String)

    BBO side type

  • :bbo_level (String)

    BBO level

  • :rpi_taker_access (Boolean)

    RPI taker access flag

Returns:

  • (Hash)

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

See Also:



174
175
176
177
178
# File 'lib/bybit/rest_api/trade_service.rb', line 174

def create_order(category:, symbol:, side:, order_type:, qty:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, side: side, order_type: order_type, qty: qty)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/create', body: params)
end

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

Get Trade History

GET /v5/execution/list

Parameters:

  • category (String)

    Product type

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :symbol (String)

    Symbol name

  • :order_id (String)

    Order ID

  • :order_link_id (String)

    User customised order ID

  • :base_coin (String)

    Base coin

  • :settle_coin (String)

    Settle coin

  • :start_time (Integer)

    The start timestamp (ms)

  • :end_time (Integer)

    The end timestamp (ms)

  • :exec_type (String)

    Execution type

  • :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:



23
24
25
26
27
# File 'lib/bybit/rest_api/trade_service.rb', line 23

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

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

Query unfilled or partially filled orders in real-time.

GET /v5/order/realtime

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

  • :order_id (String)

    Order ID

  • :order_link_id (String)

    User customised order ID

  • :open_only (Integer)

    Open-only filter

  • :order_filter (String)

    Order filter

  • :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:



210
211
212
213
214
# File 'lib/bybit/rest_api/trade_service.rb', line 210

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

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

Query historical orders that have been fully filled or cancelled.

GET /v5/order/history

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

  • :order_id (String)

    Order ID

  • :order_link_id (String)

    User customised order ID

  • :order_filter (String)

    Order filter

  • :order_status (String)

    Order status

  • :start_time (Integer)

    Start time (ms)

  • :end_time (Integer)

    End time (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:



234
235
236
237
238
# File 'lib/bybit/rest_api/trade_service.rb', line 234

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

#get_spot_borrow_quota(category:, symbol:, side:, **kwargs) ⇒ Hash

Query the available borrow quota for spot margin trading.

GET /v5/order/spot-borrow-check

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • side (String)

    Buy or Sell

Returns:

  • (Hash)

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

See Also:



249
250
251
252
253
# File 'lib/bybit/rest_api/trade_service.rb', line 249

def get_spot_borrow_quota(category:, symbol:, side:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, side: side)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :get, path: '/v5/order/spot-borrow-check', params: params)
end

#pre_check_order(category:, symbol:, side:, order_type:, qty:, **kwargs) ⇒ Hash

Pre-check an order before submission to validate parameters and margin.

POST /v5/order/pre-check

Parameters:

  • category (String)

    Product type

  • symbol (String)

    Symbol name

  • side (String)

    Buy or Sell

  • order_type (String)

    Market or Limit

  • qty (String)

    Order quantity

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :price (String)

    Order price

  • :is_leverage (Integer)

    Whether to borrow (spot margin)

  • :time_in_force (String)

    Time in force

  • :position_idx (Integer)

    Position mode index

  • :order_link_id (String)

    User customised order ID

  • :take_profit (String)

    Take profit price

  • :stop_loss (String)

    Stop loss price

  • :tp_trigger_by (String)

    Take profit trigger price type

  • :sl_trigger_by (String)

    Stop loss trigger price type

  • :reduce_only (Boolean)

    Reduce-only flag

  • :tpsl_mode (String)

    TP/SL mode

  • :tp_limit_price (String)

    Take profit limit price

  • :sl_limit_price (String)

    Stop loss limit price

  • :tp_order_type (String)

    Take profit order type

  • :sl_order_type (String)

    Stop loss order type

  • :order_iv (String)

    Implied volatility (options)

Returns:

  • (Hash)

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

See Also:



282
283
284
285
286
# File 'lib/bybit/rest_api/trade_service.rb', line 282

def pre_check_order(category:, symbol:, side:, order_type:, qty:, **kwargs)
  params = kwargs.merge(category: category, symbol: symbol, side: side, order_type: order_type, qty: qty)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/pre-check', body: params)
end

#set_dcp_time_window(time_window:, **kwargs) ⇒ Hash

Set DCP time window (alias endpoint for Disconnected Cancel All Protection).

POST /v5/order/disconnected-cancel-all

Parameters:

  • time_window (Integer)

    DCP time window in seconds

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :product (String)

    Product type for DCP

Returns:

  • (Hash)

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

See Also:



188
189
190
191
192
# File 'lib/bybit/rest_api/trade_service.rb', line 188

def set_dcp_time_window(time_window:, **kwargs)
  params = kwargs.merge(time_window: time_window)
  params = Bybit::Utils::WireKeys.camelize(params)
  @session.sign_request(method: :post, path: '/v5/order/disconnected-cancel-all', body: params)
end