All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.tinkoff.piapi.core.InstrumentsService Maven / Gradle / Ivy

There is a newer version: 1.25
Show newest version
package ru.tinkoff.piapi.core;

import io.grpc.stub.StreamObserver;
import ru.tinkoff.piapi.contract.v1.*;
import ru.tinkoff.piapi.core.utils.DateUtils;
import ru.tinkoff.piapi.core.utils.Helpers;
import ru.tinkoff.piapi.core.utils.ValidationUtils;
import ru.tinkoff.piapi.contract.v1.InstrumentsServiceGrpc.InstrumentsServiceBlockingStub;
import ru.tinkoff.piapi.contract.v1.InstrumentsServiceGrpc.InstrumentsServiceStub;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.time.Instant;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.Function;

/**
 * Сервис предоставления справочной информации о ценных бумагах.
 * 

* Подробности в документации. */ public class InstrumentsService { private final InstrumentsServiceBlockingStub instrumentsBlockingStub; private final InstrumentsServiceStub instrumentsStub; InstrumentsService(@Nonnull InstrumentsServiceBlockingStub instrumentsBlockingStub, @Nonnull InstrumentsServiceStub instrumentsStub) { this.instrumentsBlockingStub = instrumentsBlockingStub; this.instrumentsStub = instrumentsStub; } /** * Получение (синхронное) купонов по облигациям. * * @param figi Тикер облигации. * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return информация о купонах облигации. */ @Nonnull public List getBondCouponsSync(@Nonnull String figi, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> instrumentsBlockingStub.getBondCoupons( GetBondCouponsRequest.newBuilder() .setFigi(figi) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build()).getEventsList()); } /** * Получение (асинхронное) купонов по облигациям. * * @param figi Тикер облигации. * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return информация о купонах облигации. */ @Nonnull public CompletableFuture> getBondCoupons(@Nonnull String figi, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> Helpers.unaryAsyncCall( observer -> instrumentsStub.getBondCoupons( GetBondCouponsRequest.newBuilder() .setFigi(figi) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build(), observer)) .thenApply(GetBondCouponsResponse::getEventsList)); } /** * Получение (синхронное) расписания торгов всех торговых площадок. *

* Начало периода не должно быть меньше полуночи текущих суток по Московскому времени. * * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return Расписания торгов. */ @Nonnull public List getTradingSchedulesSync(@Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> instrumentsBlockingStub.tradingSchedules( TradingSchedulesRequest.newBuilder() .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build()) .getExchangesList()); } /** * Получение (синхронное) расписания торгов торговой площадки. *

* Начало периода не должно быть меньше полуночи текущих суток по Московскому времени. * * @param exchange Наименование биржи или расчетного календаря. * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return Расписание торгов площадки (если таковая существует). */ @Nonnull public TradingSchedule getTradingScheduleSync(@Nonnull String exchange, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> instrumentsBlockingStub.tradingSchedules( TradingSchedulesRequest.newBuilder() .setExchange(exchange) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build()) .getExchangesList() .get(0)); } /** * Получение (синхронное) облигации по тикеру и бирже. * * @param ticker Тикер облигации. * @param classCode Биржевой класс-код. * @return Облигация (если таковая есть). */ @Nonnull public Bond getBondByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync(ticker, classCode, request -> instrumentsBlockingStub.bondBy(request).getInstrument()); } /** * Получение (синхронное) облигации по FIGI. * * @param figi FIGI облигации. * @return Облигация (если таковая есть). */ @Nonnull public Bond getBondByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.bondBy(request).getInstrument()); } /** * Получение (синхронное) облигации по uid. * * @param uid Уникальный идентификатор инструмента. * @return Облигация (если таковая есть). */ @Nonnull public Bond getBondByUidSync(@Nonnull String uid) { return getInstrumentByUidSync(uid, request -> instrumentsBlockingStub.bondBy(request).getInstrument()); } /** * Получение (синхронное) облигации по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Облигация (если таковая есть). */ @Nonnull public Bond getBondByPositionUidSync(@Nonnull String positionUid) { return getInstrumentByPositionUidSync(positionUid, request -> instrumentsBlockingStub.bondBy(request).getInstrument()); } /** * Получение (синхронное) списка облигаций доступных для торговли через Tinkoff Invest API. * * @return Список облигаций. */ @Nonnull public List getTradableBondsSync() { return getBondsSync(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (синхронное) списка всех облигаций доступных в Тинькофф Инвестиции. * * @return Список облигаций. */ @Nonnull public List getAllBondsSync() { return getBondsSync(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) списка облигаций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список облигаций. */ public List getBondsSync(InstrumentStatus instrumentStatus) { return Helpers.unaryCall(() -> instrumentsBlockingStub.bonds( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build()) .getInstrumentsList()); } /** * Получение (синхронное) валюты по тикеру и бирже. * * @param ticker Тикер валюты. * @param classCode Биржевой класс-код. * @return Валюта (если таковая есть). */ @Nonnull public Currency getCurrencyByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync( ticker, classCode, request -> instrumentsBlockingStub.currencyBy(request).getInstrument()); } /** * Получение (синхронное) валюты по FIGI. * * @param figi FIGI валюты. * @return Валюта (если таковая есть). */ @Nonnull public Currency getCurrencyByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.currencyBy(request).getInstrument()); } /** * Получение (синхронное) валюты по uid. * * @param uid Уникальный идентификатор инструмента. * @return Валюта (если таковая есть). */ @Nonnull public Currency getCurrencyByUidSync(@Nonnull String uid) { return getInstrumentByUidSync(uid, request -> instrumentsBlockingStub.currencyBy(request).getInstrument()); } /** * Получение (синхронное) валюты по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Валюта (если таковая есть). */ @Nonnull public Currency getCurrencyByPositionUidSync(@Nonnull String positionUid) { return getInstrumentByPositionUidSync(positionUid, request -> instrumentsBlockingStub.currencyBy(request).getInstrument()); } /** * Получение (синхронное) списка валют. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список валют. */ public List getCurrenciesSync(InstrumentStatus instrumentStatus) { return Helpers.unaryCall(() -> instrumentsBlockingStub.currencies( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка валют доступных для торговли через Tinkoff Invest API. * * @return Список валют. */ @Nonnull public List getTradableCurrenciesSync() { return getCurrenciesSync(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (синхронное) списка всех валют доступных в Тинькофф Инвестиции. * * @return Список валют. */ @Nonnull public List getAllCurrenciesSync() { return getCurrenciesSync(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) фонда по тикеру и бирже. * * @param ticker Тикер фонда. * @param classCode Биржевой класс-код. * @return Фонд (если таковой есть). */ @Nonnull public Etf getEtfByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync(ticker, classCode, request -> instrumentsBlockingStub.etfBy(request).getInstrument()); } /** * Получение (синхронное) фонда по FIGI. * * @param figi FIGI фонда. * @return Фонд (если таковой есть). */ @Nonnull public Etf getEtfByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.etfBy(request).getInstrument()); } /** * Получение (синхронное) фонда по uid. * * @param uid Уникальный идентификатор инструмента. * @return Фонд (если таковой есть). */ @Nonnull public Etf getEtfByUidSync(@Nonnull String uid) { return getInstrumentByUidSync(uid, request -> instrumentsBlockingStub.etfBy(request).getInstrument()); } /** * Получение (синхронное) фонда по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Фонд (если таковой есть). */ @Nonnull public Etf getEtfByPositionUidSync(@Nonnull String positionUid) { return getInstrumentByPositionUidSync(positionUid, request -> instrumentsBlockingStub.etfBy(request).getInstrument()); } /** * Получение (синхронное) списка фондов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список фондов. */ public List getEtfsSync(InstrumentStatus instrumentStatus) { return Helpers.unaryCall(() -> instrumentsBlockingStub.etfs( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка фондов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @param exchangeType Площадка, на которой торгуется инструмент, возможные значения. * Значения INSTRUMENT_EXCHANGE_UNSPECIFIED - не определено, * INSTRUNENT_EXCHANGE_DEALER - торговля внутри дилера; * @return Список фондов. */ public List getEtfsSync(InstrumentStatus instrumentStatus, InstrumentExchangeType exchangeType) { return Helpers.unaryCall(() -> instrumentsBlockingStub.etfs( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .setInstrumentExchange(exchangeType) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка фондов доступных для торговли через Tinkoff Invest API. * * @return Список фондов. */ @Nonnull public List getTradableEtfsSync() { return getEtfsSync(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (синхронное) списка всех фондов доступных в Тинькофф Инвестиции. * * @return Список фондов. */ @Nonnull public List getAllEtfsSync() { return getEtfsSync(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) фьючерса по тикеру и бирже. * * @param ticker Тикер фьючерса. * @param classCode Биржевой класс-код. * @return Фьючерс (если таковой есть). */ @Nonnull public Future getFutureByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync( ticker, classCode, request -> instrumentsBlockingStub.futureBy(request).getInstrument()); } /** * Получение (синхронное) фьючерса по FIGI. * * @param figi FIGI фьючерса. * @return Фьючерс (если таковой есть). */ @Nonnull public Future getFutureByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.futureBy(request).getInstrument()); } /** * Получение (синхронное) фьючерса по uid. * * @param uid Уникальный идентификатор инструмента. * @return Фьючерс (если таковой есть). */ @Nonnull public Future getFutureByUidSync(@Nonnull String uid) { return getInstrumentByUidSync(uid, request -> instrumentsBlockingStub.futureBy(request).getInstrument()); } /** * Получение (синхронное) фьючерса по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Фьючерс (если таковой есть). */ @Nonnull public Future getFutureByPositionUidSync(@Nonnull String positionUid) { return getInstrumentByPositionUidSync(positionUid, request -> instrumentsBlockingStub.futureBy(request).getInstrument()); } /** * Получение (синхронное) списка фьючерсов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список фьючерсов. */ public List getFuturesSync(InstrumentStatus instrumentStatus) { return Helpers.unaryCall(() -> instrumentsBlockingStub.futures( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка фьючерсов доступных для торговли через Tinkoff Invest API. * * @return Список фьючерсов. */ @Nonnull public List getTradableFuturesSync() { return getFuturesSync(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (синхронное) списка всех фьючерсов доступных в Тинькофф Инвестиции. * * @return Список фондов. */ @Nonnull public List getAllFuturesSync() { return getFuturesSync(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) акции по тикеру и бирже. * * @param ticker Тикер акции. * @param classCode Биржевой класс-код. * @return Акция (если таковой есть). */ @Nonnull public Share getShareByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync( ticker, classCode, request -> instrumentsBlockingStub.shareBy(request).getInstrument()); } /** * Получение (синхронное) акции по FIGI. * * @param figi FIGI акции. * @return Акция (если таковой есть). */ @Nonnull public Share getShareByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.shareBy(request).getInstrument()); } /** * Получение (синхронное) акции по uid. * * @param uid Уникальный идентификатор инструмента. * @return Акция (если таковой есть). */ @Nonnull public Share getShareByUidSync(@Nonnull String uid) { return getInstrumentByUidSync(uid, request -> instrumentsBlockingStub.shareBy(request).getInstrument()); } /** * Получение (синхронное) акции по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Акция (если таковой есть). */ @Nonnull public Share getShareByPositionUidSync(@Nonnull String positionUid) { return getInstrumentByPositionUidSync(positionUid, request -> instrumentsBlockingStub.shareBy(request).getInstrument()); } /** * Получение (синхронное) списка акций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список акций. */ public List getSharesSync(InstrumentStatus instrumentStatus) { return Helpers.unaryCall(() -> instrumentsBlockingStub.shares( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка акций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @param exchangeType Площадка, на которой торгуется инструмент, возможные значения. * Значения INSTRUMENT_EXCHANGE_UNSPECIFIED - не определено, * INSTRUNENT_EXCHANGE_DEALER - торговля внутри дилера; * @return Список акций. */ public List getSharesSync(InstrumentStatus instrumentStatus, InstrumentExchangeType exchangeType) { return Helpers.unaryCall(() -> instrumentsBlockingStub.shares( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .setInstrumentExchange(exchangeType) .build()) .getInstrumentsList()); } /** * Получение (синхронное) списка акций доступных для торговли через Tinkoff Invest API. * * @return Список акций. */ @Nonnull public List getTradableSharesSync() { return getSharesSync(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (синхронное) списка всех акций доступных в Тинькофф Инвестиции. * * @return Список акций. */ @Nonnull public List getAllSharesSync() { return getSharesSync(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) накопленного купонного дохода по облигации. * * @param figi FIGI облигации. * @param from Начало периода по часовому поясу UTC. * @param to Конец периода по часовому поясу UTC. * @return НКД по облигации (если есть). */ @Nonnull public List getAccruedInterestsSync(@Nonnull String figi, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> instrumentsBlockingStub.getAccruedInterests( GetAccruedInterestsRequest.newBuilder() .setFigi(figi) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build()) .getAccruedInterestsList()); } /** * Получение (синхронное) размера гарантийного обеспечения по фьючерсам. * * @param figi figi / instrument_uid инструмента. * @return Размер гарантийного обеспечения по фьючерсу (если есть). */ @Nonnull public GetFuturesMarginResponse getFuturesMarginSync(@Nonnull String figi) { return Helpers.unaryCall(() -> instrumentsBlockingStub.getFuturesMargin( GetFuturesMarginRequest.newBuilder() .setInstrumentId(figi) .build())); } /** * Получение (синхронное) основной информации об инструменте. * * @param ticker Тикер инструмента. * @param classCode Биржевой класс-код. * @return Основная информация об инструменте (если есть). */ @Nonnull public Instrument getInstrumentByTickerSync(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTickerSync(ticker, classCode, request -> instrumentsBlockingStub.getInstrumentBy(request).getInstrument()); } /** * Получение (синхронное) основной информации об инструменте. * * @param figi FIGI инструмента. * @return Основная информация об инструменте (если есть). */ @Nonnull public Instrument getInstrumentByFigiSync(@Nonnull String figi) { return getInstrumentByFigiSync(figi, request -> instrumentsBlockingStub.getInstrumentBy(request).getInstrument()); } /** * Получение (синхронное) событий выплаты дивидендов по инструменту. * * @param figi FIGI инструмента. * @param from Начало периода по часовому поясу UTC. * @param to Конец периода по часовому поясу UTC. * @return События выплаты дивидендов по инструменту (если есть). */ @Nonnull public List getDividendsSync(@Nonnull String figi, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> instrumentsBlockingStub.getDividends( GetDividendsRequest.newBuilder() .setFigi(figi) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build()) .getDividendsList()); } /** * Получение (синхронное) списка активов. * * @return Список активов. */ @Nonnull public List getAssetsSync() { return Helpers.unaryCall(() -> instrumentsBlockingStub.getAssets(AssetsRequest.getDefaultInstance()).getAssetsList()); } /** * Получение (асинхронное) списка активов. * * @return Список активов. */ @Nonnull public CompletableFuture> getAssets() { return Helpers.unaryAsyncCall( observer -> instrumentsStub.getAssets(AssetsRequest.getDefaultInstance(), observer)) .thenApply(AssetsResponse::getAssetsList); } /** * Получение (синхронное) актива по его идентификатору. * * @return Данные по активу. */ @Nonnull public AssetFull getAssetBySync(String uid) { return Helpers.unaryCall(() -> instrumentsBlockingStub.getAssetBy(AssetRequest.newBuilder().setId(uid).build()).getAsset()); } /** * Получение (асинхронное) актива по его идентификатору. * * @return Данные по активу. */ @Nonnull public CompletableFuture getAssetBy(String uid) { return Helpers.unaryAsyncCall(observer -> instrumentsStub.getAssetBy(AssetRequest.newBuilder().setId(uid).build(), observer)) .thenApply(AssetResponse::getAsset); } /** * Получение (асинхронное) расписания торгов всех торговых площадок. *

* Начало периода не должно быть меньше полуночи текущих суток по Московскому времени. * * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return Расписания торгов. */ @Nonnull public CompletableFuture> getTradingSchedules(@Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryAsyncCall( observer -> instrumentsStub.tradingSchedules( TradingSchedulesRequest.newBuilder() .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build(), observer)) .thenApply(TradingSchedulesResponse::getExchangesList); } /** * Получение (асинхронное) расписания торгов торговой площадки. *

* Начало периода не должно быть меньше полуночи текущих суток по Московскому времени. * * @param exchange Наименование биржи или расчетного календаря. * @param from Начало периода по часовому поясу UTC. * @param to Окончание периода по часовому поясу UTC. * @return Расписание торгов площадки (если таковая существует). */ @Nonnull public CompletableFuture getTradingSchedule(@Nonnull String exchange, @Nonnull Instant from, @Nonnull Instant to) { ValidationUtils.checkFromTo(from, to); return Helpers.unaryCall(() -> Helpers.unaryAsyncCall( observer -> instrumentsStub.tradingSchedules( TradingSchedulesRequest.newBuilder() .setExchange(exchange) .setFrom(DateUtils.instantToTimestamp(from)) .setTo(DateUtils.instantToTimestamp(to)) .build(), observer)) .thenApply(x -> x.getExchangesList().get(0))); } /** * Получение (асинхронное) облигации по тикеру и бирже. * * @param ticker Тикер облигации. * @param classCode Биржевой класс-код. * @return Облигация (если таковая есть). */ @Nonnull public CompletableFuture getBondByTicker(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTicker(ticker, classCode, instrumentsStub::bondBy, BondResponse::getInstrument); } /** * Получение (асинхронное) облигации по FIGI. * * @param figi FIGI облигации. * @return Облигация (если таковая есть). */ @Nonnull public CompletableFuture getBondByFigi(@Nonnull String figi) { return getInstrumentByFigi(figi, instrumentsStub::bondBy, BondResponse::getInstrument); } /** * Получение (асинхронное) облигации по uid. * * @param uid Уникальный идентификатор инструмента. * @return Облигация (если таковая есть). */ @Nonnull public CompletableFuture getBondByUid(@Nonnull String uid) { return getInstrumentByUid(uid, instrumentsStub::bondBy, BondResponse::getInstrument); } /** * Получение (асинхронное) облигации по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Облигация (если таковая есть). */ @Nonnull public CompletableFuture getBondByPositionUid(@Nonnull String positionUid) { return getInstrumentByPositionUid(positionUid, instrumentsStub::bondBy, BondResponse::getInstrument); } /** * Получение (асинхронное) списка облигаций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список облигаций. */ public CompletableFuture> getBonds(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.bonds( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(BondsResponse::getInstrumentsList); } /** * Получение (асинхронное) списка облигаций доступных для торговли через Tinkoff Invest API. * * @return Список облигаций. */ @Nonnull public CompletableFuture> getTradableBonds() { return getBonds(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех облигаций доступных в Тинькофф Инвестиции. * * @return Список облигаций. */ @Nonnull public CompletableFuture> getAllBonds() { return getBonds(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (асинхронное) валюты по тикеру и бирже. * * @param ticker Тикер валюты. * @param classCode Биржевой класс-код. * @return Валюта (если таковая есть). */ @Nonnull public CompletableFuture getCurrencyByTicker(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTicker( ticker, classCode, instrumentsStub::currencyBy, CurrencyResponse::getInstrument); } /** * Получение (асинхронное) валюты по FIGI. * * @param figi FIGI валюты. * @return Валюта (если таковая есть). */ @Nonnull public CompletableFuture getCurrencyByFigi(@Nonnull String figi) { return getInstrumentByFigi(figi, instrumentsStub::currencyBy, CurrencyResponse::getInstrument); } /** * Получение (асинхронное) валюты по uid. * * @param uid Уникальный идентификатор инструмента. * @return Валюта (если таковая есть). */ @Nonnull public CompletableFuture getCurrencyByUid(@Nonnull String uid) { return getInstrumentByUid(uid, instrumentsStub::currencyBy, CurrencyResponse::getInstrument); } /** * Получение (асинхронное) валюты по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Валюта (если таковая есть). */ @Nonnull public CompletableFuture getCurrencyByPositionUid(@Nonnull String positionUid) { return getInstrumentByPositionUid(positionUid, instrumentsStub::currencyBy, CurrencyResponse::getInstrument); } /** * Получение (асинхронное) списка валют. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список валют. */ public CompletableFuture> getCurrencies(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.currencies( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(CurrenciesResponse::getInstrumentsList); } /** * Получение (асинхронное) списка валют доступных для торговли через Tinkoff Invest API. * * @return Список валют. */ @Nonnull public CompletableFuture> getTradableCurrencies() { return getCurrencies(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех вслют доступных в Тинькофф Инвестиции. * * @return Список валют. */ @Nonnull public CompletableFuture> getAllCurrencies() { return getCurrencies(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (асинхронное) фонда по тикеру и бирже. * * @param ticker Тикер фонда. * @param classCode Биржевой класс-код. * @return Фонд (если таковой есть). */ @Nonnull public CompletableFuture getEtfByTicker(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTicker(ticker, classCode, instrumentsStub::etfBy, EtfResponse::getInstrument); } /** * Получение (синхронное) фонда по FIGI. * * @param figi FIGI фонда. * @return Фонд (если таковой есть). */ @Nonnull public CompletableFuture getEtfByFigi(@Nonnull String figi) { return getInstrumentByFigi(figi, instrumentsStub::etfBy, EtfResponse::getInstrument); } /** * Получение (синхронное) фонда по uid. * * @param uid Уникальный идентификатор инструмента. * @return Фонд (если таковой есть). */ @Nonnull public CompletableFuture getEtfByUid(@Nonnull String uid) { return getInstrumentByUid(uid, instrumentsStub::etfBy, EtfResponse::getInstrument); } /** * Получение (синхронное) фонда по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Фонд (если таковой есть). */ @Nonnull public CompletableFuture getEtfByPositionUid(@Nonnull String positionUid) { return getInstrumentByPositionUid(positionUid, instrumentsStub::etfBy, EtfResponse::getInstrument); } /** * Получение (асинхронное) списка фондов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список фондов. */ public CompletableFuture> getEtfs(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.etfs( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(EtfsResponse::getInstrumentsList); } /** * Получение (асинхронное) списка фондов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @param exchangeType Площадка, на которой торгуется инструмент, возможные значения. * Значения INSTRUMENT_EXCHANGE_UNSPECIFIED - не определено, * INSTRUNENT_EXCHANGE_DEALER - торговля внутри дилера; * @return Список фондов. */ public CompletableFuture> getEtfs(InstrumentStatus instrumentStatus, InstrumentExchangeType exchangeType) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.etfs( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .setInstrumentExchange(exchangeType) .build(), observer)) .thenApply(EtfsResponse::getInstrumentsList); } /** * Получение (асинхронное) списка фондов доступных для торговли через Tinkoff Invest API. * * @return Список фондов. */ @Nonnull public CompletableFuture> getTradableEtfs() { return getEtfs(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех фондов доступных в Тинькофф Инвестиции. * * @return Список фондов. */ @Nonnull public CompletableFuture> getAllEtfs() { return getEtfs(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (асинхронное) фьючерса по тикеру и бирже. * * @param ticker Тикер фьючерса. * @param classCode Биржевой класс-код. * @return Фьючерс (если таковой есть). */ @Nonnull public CompletableFuture getFutureByTicker(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTicker(ticker, classCode, instrumentsStub::futureBy, FutureResponse::getInstrument); } /** * Получение (асинхронное) фьючерса по FIGI. * * @param figi FIGI фьючерса. * @return Фьючерс (если таковой есть). */ @Nonnull public CompletableFuture getFutureByFigi(@Nonnull String figi) { return getInstrumentByFigi(figi, instrumentsStub::futureBy, FutureResponse::getInstrument); } /** * Получение (асинхронное) фьючерса по uid. * * @param uid Уникальный идентификатор инструмента. * @return Фьючерс (если таковой есть). */ @Nonnull public CompletableFuture getFutureByUid(@Nonnull String uid) { return getInstrumentByUid(uid, instrumentsStub::futureBy, FutureResponse::getInstrument); } /** * Получение (асинхронное) фьючерса по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Фьючерс (если таковой есть). */ @Nonnull public CompletableFuture getFutureByPositionUid(@Nonnull String positionUid) { return getInstrumentByPositionUid(positionUid, instrumentsStub::futureBy, FutureResponse::getInstrument); } /** * Получение (асинхронное) списка фьючерсов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список фьючерсов. */ public CompletableFuture> getFutures(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.futures( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(FuturesResponse::getInstrumentsList); } /** * Получение (асинхронное) списка фьючерсов доступных для торговли через Tinkoff Invest API. * * @return Список фьючерсов. */ @Nonnull public CompletableFuture> getTradableFutures() { return getFutures(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех фьючерсов доступных в Тинькофф Инвестиции. * * @return Список фондов. */ @Nonnull public CompletableFuture> getAllFutures() { return getFutures(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (асинхронное) акции по тикеру и бирже. * * @param ticker Тикер акции. * @param classCode Биржевой класс-код. * @return Акция (если таковой есть). */ @Nonnull public CompletableFuture getShareByTicker(@Nonnull String ticker, @Nonnull String classCode) { return getInstrumentByTicker(ticker, classCode, instrumentsStub::shareBy, ShareResponse::getInstrument); } /** * Получение (асинхронное) акции по FIGI. * * @param figi FIGI акции. * @return Акция (если таковой есть). */ @Nonnull public CompletableFuture getShareByFigi(@Nonnull String figi) { return getInstrumentByFigi(figi, instrumentsStub::shareBy, ShareResponse::getInstrument); } /** * Получение (асинхронное) акции по uid. * * @param uid Уникальный идентификатор инструмента. * @return Акция (если таковой есть). */ @Nonnull public CompletableFuture getShareByUid(@Nonnull String uid) { return getInstrumentByUid(uid, instrumentsStub::shareBy, ShareResponse::getInstrument); } /** * Получение (асинхронное) акции по positionUid. * * @param positionUid Уникальный идентификатор позиции. * @return Акция (если таковой есть). */ @Nonnull public CompletableFuture getShareByPositionUid(@Nonnull String positionUid) { return getInstrumentByPositionUid(positionUid, instrumentsStub::shareBy, ShareResponse::getInstrument); } /** * Получение (асинхронное) списка акций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список акций. */ public CompletableFuture> getShares(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.shares( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(SharesResponse::getInstrumentsList); } /** * Получение (асинхронное) списка акций. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @param exchangeType Площадка, на которой торгуется инструмент, возможные значения. * Значения INSTRUMENT_EXCHANGE_UNSPECIFIED - не определено, * INSTRUNENT_EXCHANGE_DEALER - торговля внутри дилера; * @return Список акций. */ public CompletableFuture> getShares(InstrumentStatus instrumentStatus, InstrumentExchangeType exchangeType) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.shares( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .setInstrumentExchange(exchangeType) .build(), observer)) .thenApply(SharesResponse::getInstrumentsList); } /** * Получение (асинхронное) списка акций доступных для торговли через Tinkoff Invest API. * * @return Список акций. */ @Nonnull public CompletableFuture> getTradableShares() { return getShares(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех акций доступных в Тинькофф Инвестиции. * * @return Список акций. */ @Nonnull public CompletableFuture> getAllShares() { return getShares(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (асинхронное) списка опционов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список опционов. */ public CompletableFuture> getOptions(InstrumentStatus instrumentStatus) { return Helpers.unaryAsyncCall( observer -> instrumentsStub.options( InstrumentsRequest.newBuilder() .setInstrumentStatus(instrumentStatus) .build(), observer)) .thenApply(OptionsResponse::getInstrumentsList); } /** * Получение (асинхронное) списка опционов доступных для торговли через Tinkoff Invest API. * * @return Список опционов. */ @Nonnull public CompletableFuture> getTradableOptions() { return getOptions(InstrumentStatus.INSTRUMENT_STATUS_BASE); } /** * Получение (асинхронное) списка всех опционов доступных в Тинькофф Инвестиции. * * @return Список опционов. */ @Nonnull public CompletableFuture> getAllOptions() { return getOptions(InstrumentStatus.INSTRUMENT_STATUS_ALL); } /** * Получение (синхронное) списка опционов. * * @param instrumentStatus статус инструмента. Значения INSTRUMENT_STATUS_BASE, INSTRUMENT_STATUS_ALL * @return Список опционов. */ public List





© 2015 - 2024 Weber Informatics LLC | Privacy Policy