Class: InvestTinkoff::V1::Client
- Inherits:
-
ClientBase
- Object
- ClientBase
- InvestTinkoff::V1::Client
- Defined in:
- lib/invest_tinkoff/v1/client.rb
Direct Known Subclasses
Constant Summary collapse
- TIME_FORMAT =
'%FT%T%:z'
- CANDLES_INTERVALS =
%w[1min 2min 3min 5min 10min 15min 30min hour day week month]
Instance Attribute Summary collapse
-
#broker_account_id ⇒ Object
Returns the value of attribute broker_account_id.
Instance Method Summary collapse
-
#initialize(token:, broker_account_id: nil, logger: nil) ⇒ Client
constructor
token - рабочий API token broker_account_id (опционально) - идентификатор счета logger (опиционально) - например: Rails.logger.
-
#market_bonds ⇒ Object
Получение списка облигаций.
-
#market_candles(figi:, from:, to:, interval:) ⇒ Object
Получение исторических свечей по FIGI Пример figi: ‘BBG000B9XRY4’ Пример from: Time.zone.now.beginning_of_week Пример to: Time.zone.now Пример interval: :1min, :2min, :3min, :5min, :10min, :15min, :30min, :hour, :day, :week, :month.
-
#market_currencies ⇒ Object
Получение списка валютных пар.
-
#market_etfs ⇒ Object
Получение списка ETF.
-
#market_orderbook(figi:, depth: 20) ⇒ Object
Получение стакана по FIGI Пример figi: ‘BBG000B9XRY4’.
-
#market_search_by_figi(figi) ⇒ Object
Получение инструмента по FIGI Пример figi: ‘BBG000B9XRY4’.
-
#market_search_by_ticker(ticker) ⇒ Object
Получение инструмента по тикеру Пример tiker: ‘AAPL’.
-
#market_stocks ⇒ Object
Получение списка акций.
-
#operations(from:, to:, figi: nil) ⇒ Object
Получение списка операций Пример from: Time.zone.now.beginning_of_week Пример to: Time.zone.now Пример figi (опиционально): ‘BBG000B9XRY4’.
-
#orders ⇒ Object
Получение списка активных заявок.
-
#orders_cancel(id) ⇒ Object
Отмена заявки.
-
#orders_limit_order(figi:, operation:, lots:, price:) ⇒ Object
Создание лимитной заявки Пример figi: ‘BBG000B9XRY4’ Пример operation: :buy, :sell.
-
#orders_market_order(figi:, operation:, lots:) ⇒ Object
Создание рыночной заявки Пример figi: ‘BBG000B9XRY4’ Пример operation: :buy, :sell.
-
#portfolio ⇒ Object
Получение портфеля клиента.
-
#portfolio_currencies ⇒ Object
Получение валютных активов клиента.
-
#user_accounts ⇒ Object
Получение брокерских счетов клиента.
Constructor Details
#initialize(token:, broker_account_id: nil, logger: nil) ⇒ Client
token - рабочий API token broker_account_id (опционально) - идентификатор счета logger (опиционально) - например: Rails.logger
14 15 16 17 18 19 20 |
# File 'lib/invest_tinkoff/v1/client.rb', line 14 def initialize token:, broker_account_id: nil, logger: nil super( token: token, broker_account_id: broker_account_id, logger: logger ) end |
Instance Attribute Details
#broker_account_id ⇒ Object
Returns the value of attribute broker_account_id.
9 10 11 |
# File 'lib/invest_tinkoff/v1/client.rb', line 9 def broker_account_id @broker_account_id end |
Instance Method Details
#market_bonds ⇒ Object
Получение списка облигаций
89 90 91 |
# File 'lib/invest_tinkoff/v1/client.rb', line 89 def market_bonds get_api_request '/market/bonds' end |
#market_candles(figi:, from:, to:, interval:) ⇒ Object
Получение исторических свечей по FIGI Пример figi: ‘BBG000B9XRY4’ Пример from: Time.zone.now.beginning_of_week Пример to: Time.zone.now Пример interval: :1min, :2min, :3min, :5min, :10min, :15min, :30min, :hour, :day, :week, :month
114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/invest_tinkoff/v1/client.rb', line 114 def market_candles figi:, from:, to:, interval: raise ArgumentError, 'interval' unless CANDLES_INTERVALS.include? interval.to_s get_api_request( '/market/candles', { figi: figi, from: from.strftime(TIME_FORMAT), to: to.strftime(TIME_FORMAT), interval: interval } ) end |
#market_currencies ⇒ Object
Получение списка валютных пар
99 100 101 |
# File 'lib/invest_tinkoff/v1/client.rb', line 99 def market_currencies get_api_request '/market/currencies' end |
#market_etfs ⇒ Object
Получение списка ETF
94 95 96 |
# File 'lib/invest_tinkoff/v1/client.rb', line 94 def market_etfs get_api_request '/market/etfs' end |
#market_orderbook(figi:, depth: 20) ⇒ Object
Получение стакана по FIGI Пример figi: ‘BBG000B9XRY4’
105 106 107 |
# File 'lib/invest_tinkoff/v1/client.rb', line 105 def market_orderbook figi:, depth: 20 get_api_request '/market/orderbook', { figi: figi, depth: depth } end |
#market_search_by_figi(figi) ⇒ Object
Получение инструмента по FIGI Пример figi: ‘BBG000B9XRY4’
130 131 132 |
# File 'lib/invest_tinkoff/v1/client.rb', line 130 def market_search_by_figi figi get_api_request '/market/search/by-figi', { figi: figi } end |
#market_search_by_ticker(ticker) ⇒ Object
Получение инструмента по тикеру Пример tiker: ‘AAPL’
136 137 138 |
# File 'lib/invest_tinkoff/v1/client.rb', line 136 def market_search_by_ticker ticker get_api_request '/market/search/by-ticker', { ticker: ticker } end |
#market_stocks ⇒ Object
Получение списка акций
84 85 86 |
# File 'lib/invest_tinkoff/v1/client.rb', line 84 def market_stocks get_api_request '/market/stocks' end |
#operations(from:, to:, figi: nil) ⇒ Object
Получение списка операций Пример from: Time.zone.now.beginning_of_week Пример to: Time.zone.now Пример figi (опиционально): ‘BBG000B9XRY4’
148 149 150 151 152 153 154 155 |
# File 'lib/invest_tinkoff/v1/client.rb', line 148 def operations from:, to:, figi: nil query = { from: from.strftime(TIME_FORMAT), to: to.strftime(TIME_FORMAT) } query.merge! figi: figi if figi.present? get_api_request '/operations', query end |
#orders ⇒ Object
Получение списка активных заявок
27 28 29 |
# File 'lib/invest_tinkoff/v1/client.rb', line 27 def orders get_api_request '/orders' end |
#orders_cancel(id) ⇒ Object
Отмена заявки
61 62 63 |
# File 'lib/invest_tinkoff/v1/client.rb', line 61 def orders_cancel id post_api_request '/orders/cancel', query: { orderId: id } end |
#orders_limit_order(figi:, operation:, lots:, price:) ⇒ Object
Создание лимитной заявки Пример figi: ‘BBG000B9XRY4’ Пример operation: :buy, :sell
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/invest_tinkoff/v1/client.rb', line 34 def orders_limit_order figi:, operation:, lots:, price: post_api_request( '/orders/limit-order', body: { lots: lots, operation: operation.to_s.capitalize, price: price }, query: { figi: figi } ) end |
#orders_market_order(figi:, operation:, lots:) ⇒ Object
Создание рыночной заявки Пример figi: ‘BBG000B9XRY4’ Пример operation: :buy, :sell
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/invest_tinkoff/v1/client.rb', line 49 def orders_market_order figi:, operation:, lots: post_api_request( '/orders/market-order', body: { lots: lots, operation: operation.to_s.capitalize }, query: { figi: figi } ) end |
#portfolio ⇒ Object
Получение портфеля клиента
70 71 72 |
# File 'lib/invest_tinkoff/v1/client.rb', line 70 def portfolio get_api_request '/portfolio' end |
#portfolio_currencies ⇒ Object
Получение валютных активов клиента
75 76 77 |
# File 'lib/invest_tinkoff/v1/client.rb', line 75 def portfolio_currencies get_api_request '/portfolio/currencies' end |
#user_accounts ⇒ Object
Получение брокерских счетов клиента
162 163 164 |
# File 'lib/invest_tinkoff/v1/client.rb', line 162 def user_accounts get_api_request '/user/accounts' end |