Class: Bybit::RestApi::BotService

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

#close_combo_bot(bot_id:, **kwargs) ⇒ Hash

Close a running futures combo bot by bot ID

POST /v5/fcombobot/close

Parameters:

  • bot_id (Integer)

    Combo bot ID to close

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :stop_type (Integer)

    Stop type identifier

Returns:

  • (Hash)

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



38
39
40
41
# File 'lib/bybit/rest_api/bot_service.rb', line 38

def close_combo_bot(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fcombobot/close', body: body)
end

#close_dca_bot(bot_id:, close_mode:, **kwargs) ⇒ Hash

Close a running DCA bot with a specified settlement mode

POST /v5/dca/close-bot

Parameters:

  • bot_id (Integer)

    Identifier of the DCA bot to close

  • close_mode (Integer)

    Settlement mode used to close the bot

Returns:

  • (Hash)

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



13
14
15
16
# File 'lib/bybit/rest_api/bot_service.rb', line 13

def close_dca_bot(bot_id:, close_mode:, **kwargs)
  body = kwargs.merge(bot_id: bot_id, close_mode: close_mode)
  @session.sign_request(method: :post, path: '/v5/dca/close-bot', body: body)
end

#close_futures_grid_bot(bot_id:, **kwargs) ⇒ Hash

Close a running futures grid bot by bot ID

POST /v5/fgridbot/close

Parameters:

  • bot_id (Integer)

    Bot ID of the futures grid bot to close

Returns:

  • (Hash)

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



116
117
118
119
# File 'lib/bybit/rest_api/bot_service.rb', line 116

def close_futures_grid_bot(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fgridbot/close', body: body)
end

#close_futures_martingale_bot(bot_id:, **kwargs) ⇒ Hash

Close a running futures Martingale bot by bot ID

POST /v5/fmartingalebot/close

Parameters:

  • bot_id (Integer)

    Bot ID

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :stop_type (String)

    Stop type

Returns:

  • (Hash)

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



218
219
220
221
# File 'lib/bybit/rest_api/bot_service.rb', line 218

def close_futures_martingale_bot(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fmartingalebot/close', body: body)
end

#close_grid_bot(grid_id:, close_mode:, **kwargs) ⇒ Hash

Close a running spot grid bot with a specified settlement mode

POST /v5/grid/close-grid

Parameters:

  • grid_id (Integer)

    Grid bot ID

  • close_mode (Integer)

    Close/settlement mode

Returns:

  • (Hash)

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



303
304
305
306
# File 'lib/bybit/rest_api/bot_service.rb', line 303

def close_grid_bot(grid_id:, close_mode:, **kwargs)
  body = kwargs.merge(grid_id: grid_id, close_mode: close_mode)
  @session.sign_request(method: :post, path: '/v5/grid/close-grid', body: body)
end

#create_combo_bot(leverage:, init_margin:, adjust_position_mode:, symbol_settings:, **kwargs) ⇒ Hash

Create a new futures combo bot with multi-symbol portfolio and rebalancing

POST /v5/fcombobot/create

Parameters:

  • leverage (String)

    Leverage setting for the combo bot

  • init_margin (String)

    Initial margin for the combo bot

  • adjust_position_mode (Integer)

    Position adjustment mode

  • symbol_settings (Array)

    Per-symbol configuration settings for the combo bot

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :adjust_position_percent (String)

    Position adjustment percent

  • :adjust_position_time_interval (Integer)

    Position adjustment time interval

  • :sl_percent (String)

    Stop loss percent

  • :tp_percent (String)

    Take profit percent

  • :source (Integer)

    Source identifier

  • :block_source (Integer)

    Block source identifier

  • :create_type (Integer)

    Bot creation type

  • :followed_bot_id (Integer)

    ID of the bot being followed

  • :init_bonus (String)

    Initial bonus amount

  • :trailing_stop_percent (String)

    Trailing stop percent

  • :channel (String)

    Channel identifier

Returns:

  • (Hash)

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



63
64
65
66
67
68
69
70
71
# File 'lib/bybit/rest_api/bot_service.rb', line 63

def create_combo_bot(leverage:, init_margin:, adjust_position_mode:, symbol_settings:, **kwargs)
  body = kwargs.merge(
    leverage: leverage,
    init_margin: init_margin,
    adjust_position_mode: adjust_position_mode,
    symbol_settings: symbol_settings
  )
  @session.sign_request(method: :post, path: '/v5/fcombobot/create', body: body)
end

#create_dca_bot(parameters:, **kwargs) ⇒ Hash

Create a new DCA (Dollar-Cost Averaging) bot with custom parameters

POST /v5/dca/create-bot

Parameters:

  • parameters (Hash)

    DCA bot configuration parameters

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :tools_discovery_parameter (Hash)

    Tools discovery parameter object

  • :channel (String)

    Channel identifier

Returns:

  • (Hash)

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



26
27
28
29
# File 'lib/bybit/rest_api/bot_service.rb', line 26

def create_dca_bot(parameters:, **kwargs)
  body = kwargs.merge(parameters: parameters)
  @session.sign_request(method: :post, path: '/v5/dca/create-bot', body: body)
end

#create_futures_grid_bot(symbol:, grid_mode:, min_price:, max_price:, cell_number:, leverage:, grid_type:, total_investment:, **kwargs) ⇒ Hash

Create a new futures grid trading bot with specified parameters

POST /v5/fgridbot/create

Parameters:

  • symbol (String)

    Trading symbol

  • grid_mode (Integer)

    Grid mode selector

  • min_price (String)

    Lower bound of the grid price range

  • max_price (String)

    Upper bound of the grid price range

  • cell_number (Integer)

    Number of grid cells

  • leverage (String)

    Leverage to use for the grid bot

  • grid_type (Integer)

    Grid type (arithmetic/geometric)

  • total_investment (String)

    Total investment amount

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :take_profit_per (String)

    Take profit percentage

  • :stop_loss_per (String)

    Stop loss percentage

  • :entry_price (String)

    Entry price for the bot

  • :source (Integer)

    Source identifier

  • :followed_grid_id (Integer)

    ID of the grid bot being copied

  • :tools_discovery_parameter (Hash)

    Tools discovery parameter payload

  • :stop_loss_price (String)

    Stop loss trigger price

  • :take_profit_price (String)

    Take profit trigger price

  • :tp_sl_type (Integer)

    Take-profit/stop-loss type

  • :block_source (Integer)

    Block source identifier

  • :create_type (Integer)

    Create type identifier

  • :init_bonus (String)

    Initial bonus amount

  • :business_remark (String)

    Business remark note

  • :trailing_stop_per (String)

    Trailing stop percentage

  • :move_up_price (String)

    Move-up trigger price

  • :move_down_price (String)

    Move-down trigger price

  • :channel (String)

    Client channel identifier

Returns:

  • (Hash)

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



151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/bybit/rest_api/bot_service.rb', line 151

def create_futures_grid_bot(symbol:, grid_mode:, min_price:, max_price:, cell_number:, leverage:, grid_type:, total_investment:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    grid_mode: grid_mode,
    min_price: min_price,
    max_price: max_price,
    cell_number: cell_number,
    leverage: leverage,
    grid_type: grid_type,
    total_investment: total_investment
  )
  @session.sign_request(method: :post, path: '/v5/fgridbot/create', body: body)
end

#create_futures_martingale_bot(symbol:, martingale_mode:, leverage:, price_float_percent:, add_position_percent:, add_position_num:, init_margin:, round_tp_percent:, **kwargs) ⇒ Hash

Create a new futures Martingale bot with DCA averaging strategy

POST /v5/fmartingalebot/create

Parameters:

  • symbol (String)

    Trading symbol

  • martingale_mode (String)

    Martingale mode

  • leverage (String)

    Leverage

  • price_float_percent (String)

    Price float percent triggering next add position

  • add_position_percent (String)

    Add position percent per averaging step

  • add_position_num (Integer)

    Number of add position steps

  • init_margin (String)

    Initial margin

  • round_tp_percent (String)

    Round take-profit percent

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :auto_cycle_toggle (String)

    Auto cycle toggle

  • :sl_percent (String)

    Stop-loss percent

  • :entry_price (String)

    Entry price

  • :source (String)

    Source

  • :followed_bot_id (Integer)

    Followed bot ID

  • :block_source (String)

    Block source

  • :create_type (String)

    Create type

  • :init_bonus (String)

    Initial bonus

  • :channel (String)

    Channel

Returns:

  • (Hash)

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



245
246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/bybit/rest_api/bot_service.rb', line 245

def create_futures_martingale_bot(symbol:, martingale_mode:, leverage:, price_float_percent:, add_position_percent:, add_position_num:, init_margin:, round_tp_percent:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    martingale_mode: martingale_mode,
    leverage: leverage,
    price_float_percent: price_float_percent,
    add_position_percent: add_position_percent,
    add_position_num: add_position_num,
    init_margin: init_margin,
    round_tp_percent: round_tp_percent
  )
  @session.sign_request(method: :post, path: '/v5/fmartingalebot/create', body: body)
end

#create_grid_bot(symbol:, max_price:, min_price:, total_investment:, cell_number:, **kwargs) ⇒ Hash

Create a new spot grid trading bot

POST /v5/grid/create-grid

Parameters:

  • symbol (String)

    Trading pair symbol

  • max_price (String)

    Upper bound price of the grid

  • min_price (String)

    Lower bound price of the grid

  • total_investment (String)

    Total investment amount

  • cell_number (Integer)

    Number of grid cells

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :followed_grid_id (Integer)

    ID of the grid bot being copied/followed

  • :source (Integer)

    Creation source identifier

  • :entry_price (String)

    Entry price for the bot

  • :stop_loss_price (String)

    Stop loss price

  • :take_profit_price (String)

    Take profit price

  • :tools_discovery_parameter (Hash)

    Tools discovery parameter object

  • :base_investment (String)

    Base asset investment amount

  • :quote_investment (String)

    Quote asset investment amount

  • :invest_mode (Integer)

    Investment mode

  • :block_source (Integer)

    Block source identifier

  • :create_type (Integer)

    Creation type

  • :ts_percent (String)

    Trailing stop percent

  • :enable_trailing (Boolean)

    Whether to enable trailing

  • :limit_up_price (String)

    Upper limit price

  • :channel (String)

    Channel identifier

Returns:

  • (Hash)

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



333
334
335
336
337
338
339
340
341
342
# File 'lib/bybit/rest_api/bot_service.rb', line 333

def create_grid_bot(symbol:, max_price:, min_price:, total_investment:, cell_number:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    max_price: max_price,
    min_price: min_price,
    total_investment: total_investment,
    cell_number: cell_number
  )
  @session.sign_request(method: :post, path: '/v5/grid/create-grid', body: body)
end

#get_combo_detail(bot_id:, **kwargs) ⇒ Hash

Get full details of a futures combo bot including PnL, positions, and status

POST /v5/fcombobot/detail

Parameters:

  • bot_id (Integer)

    Combo bot ID

Returns:

  • (Hash)

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



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

def get_combo_detail(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fcombobot/detail', body: body)
end

#get_combo_limit(leverage:, init_margin:, adjust_position_mode:, symbol_settings:, **kwargs) ⇒ Hash

Validate combo bot input parameters and return allowable ranges

POST /v5/fcombobot/getlimit

Parameters:

  • leverage (String)

    Leverage setting

  • init_margin (String)

    Initial margin

  • adjust_position_mode (Integer)

    Position adjustment mode

  • symbol_settings (Array)

    Per-symbol configuration settings

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :adjust_position_percent (String)

    Position adjustment percent

  • :adjust_position_time_interval (Integer)

    Position adjustment time interval

  • :sl_percent (String)

    Stop loss percent

  • :tp_percent (String)

    Take profit percent

  • :need_to_slippage (Boolean)

    Whether to include slippage in validation

  • :app_name (String)

    Application name identifier

  • :trailing_stop_percent (String)

    Trailing stop percent

Returns:

  • (Hash)

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



100
101
102
103
104
105
106
107
108
# File 'lib/bybit/rest_api/bot_service.rb', line 100

def get_combo_limit(leverage:, init_margin:, adjust_position_mode:, symbol_settings:, **kwargs)
  body = kwargs.merge(
    leverage: leverage,
    init_margin: init_margin,
    adjust_position_mode: adjust_position_mode,
    symbol_settings: symbol_settings
  )
  @session.sign_request(method: :post, path: '/v5/fcombobot/getlimit', body: body)
end

#get_futures_grid_detail(bot_id:, **kwargs) ⇒ Hash

Get full details of a futures grid bot including PnL, positions, and status

POST /v5/fgridbot/detail

Parameters:

  • bot_id (Integer)

    Bot ID of the futures grid bot

Returns:

  • (Hash)

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



171
172
173
174
# File 'lib/bybit/rest_api/bot_service.rb', line 171

def get_futures_grid_detail(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fgridbot/detail', body: body)
end

#get_futures_martingale_detail(bot_id:, **kwargs) ⇒ Hash

Get full details of a futures Martingale bot including PnL, positions, and round progress

POST /v5/fmartingalebot/detail

Parameters:

  • bot_id (Integer)

    Bot ID

Returns:

  • (Hash)

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



265
266
267
268
# File 'lib/bybit/rest_api/bot_service.rb', line 265

def get_futures_martingale_detail(bot_id:, **kwargs)
  body = kwargs.merge(bot_id: bot_id)
  @session.sign_request(method: :post, path: '/v5/fmartingalebot/detail', body: body)
end

#get_futures_martingale_limit(symbol:, martingale_mode:, leverage:, **kwargs) ⇒ Hash

Validate Martingale bot input parameters and return allowable ranges

POST /v5/fmartingalebot/getlimit

Parameters:

  • symbol (String)

    Trading symbol

  • martingale_mode (String)

    Martingale mode

  • leverage (String)

    Leverage

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :price_float_percent (String)

    Price float percent

  • :add_position_percent (String)

    Add position percent

  • :add_position_num (Integer)

    Number of add position steps

  • :init_margin (String)

    Initial margin

  • :round_tp_percent (String)

    Round take-profit percent

  • :sl_percent (String)

    Stop-loss percent

  • :entry_price (String)

    Entry price

  • :need_to_slippage (Boolean)

    Whether to include slippage

  • :app_name (String)

    App name

Returns:

  • (Hash)

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



287
288
289
290
291
292
293
294
# File 'lib/bybit/rest_api/bot_service.rb', line 287

def get_futures_martingale_limit(symbol:, martingale_mode:, leverage:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    martingale_mode: martingale_mode,
    leverage: leverage
  )
  @session.sign_request(method: :post, path: '/v5/fmartingalebot/getlimit', body: body)
end

#get_grid_detail(grid_id:, **kwargs) ⇒ Hash

Query full details of a specific grid bot by grid_id

POST /v5/grid/query-grid-detail

Parameters:

  • grid_id (Integer)

    Grid bot ID

Returns:

  • (Hash)

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



350
351
352
353
# File 'lib/bybit/rest_api/bot_service.rb', line 350

def get_grid_detail(grid_id:, **kwargs)
  body = kwargs.merge(grid_id: grid_id)
  @session.sign_request(method: :post, path: '/v5/grid/query-grid-detail', body: body)
end

#validate_futures_grid_input(symbol:, cell_number:, min_price:, max_price:, leverage:, grid_type:, grid_mode:, **kwargs) ⇒ Hash

Validate futures grid bot input parameters and return allowable ranges

POST /v5/fgridbot/validate

Parameters:

  • symbol (String)

    Trading symbol

  • cell_number (Integer)

    Number of grid cells

  • min_price (String)

    Lower bound of the grid price range

  • max_price (String)

    Upper bound of the grid price range

  • leverage (String)

    Leverage to validate

  • grid_type (Integer)

    Grid type (arithmetic/geometric)

  • grid_mode (Integer)

    Grid mode selector

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :stop_loss_price (String)

    Stop loss trigger price

  • :take_profit_price (String)

    Take profit trigger price

  • :tp_sl_type (Integer)

    Take-profit/stop-loss type

  • :entry_price (String)

    Entry price

  • :stop_loss_per (String)

    Stop loss percentage

  • :take_profit_per (String)

    Take profit percentage

  • :trailing_stop_per (String)

    Trailing stop percentage

  • :init_margin (String)

    Initial margin amount

  • :move_up_price (String)

    Move-up trigger price

  • :move_down_price (String)

    Move-down trigger price

Returns:

  • (Hash)

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



198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/bybit/rest_api/bot_service.rb', line 198

def validate_futures_grid_input(symbol:, cell_number:, min_price:, max_price:, leverage:, grid_type:, grid_mode:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    cell_number: cell_number,
    min_price: min_price,
    max_price: max_price,
    leverage: leverage,
    grid_type: grid_type,
    grid_mode: grid_mode
  )
  @session.sign_request(method: :post, path: '/v5/fgridbot/validate', body: body)
end

#validate_grid_input(symbol:, cell_number:, min_price:, max_price:, total_investment:, **kwargs) ⇒ Hash

Validate spot grid bot parameters before creation

POST /v5/grid/validate-input

Parameters:

  • symbol (String)

    Trading pair symbol

  • cell_number (Integer)

    Number of grid cells

  • min_price (String)

    Lower bound price of the grid

  • max_price (String)

    Upper bound price of the grid

  • total_investment (String)

    Total investment amount

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :stop_loss (String)

    Stop loss price

  • :take_profit (String)

    Take profit price

  • :entry_price (String)

    Entry price for the bot

  • :base_investment (String)

    Base asset investment amount

  • :quote_investment (String)

    Quote asset investment amount

  • :invest_mode (Integer)

    Investment mode

  • :ts_percent (String)

    Trailing stop percent

  • :enable_trailing (Boolean)

    Whether to enable trailing

  • :limit_up_price (String)

    Upper limit price

Returns:

  • (Hash)

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



374
375
376
377
378
379
380
381
382
383
# File 'lib/bybit/rest_api/bot_service.rb', line 374

def validate_grid_input(symbol:, cell_number:, min_price:, max_price:, total_investment:, **kwargs)
  body = kwargs.merge(
    symbol: symbol,
    cell_number: cell_number,
    min_price: min_price,
    max_price: max_price,
    total_investment: total_investment
  )
  @session.sign_request(method: :post, path: '/v5/grid/validate-input', body: body)
end