69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
"""Example - How to get figi by name of ticker."""
|
|
import logging
|
|
import os
|
|
|
|
from pandas import DataFrame
|
|
|
|
from t_tech.invest import Client, SecurityTradingStatus
|
|
from t_tech.invest.services import InstrumentsService
|
|
from t_tech.invest.utils import quotation_to_decimal
|
|
|
|
TOKEN = os.environ["INVEST_TOKEN"]
|
|
|
|
logging.basicConfig(format="%(asctime)s %(levelname)s:%(message)s", level=logging.DEBUG)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def main():
|
|
"""Example - How to get figi by name of ticker."""
|
|
|
|
ticker = "VTBR" # "BRH3" "SBER" "VTBR"
|
|
|
|
with Client(TOKEN) as client:
|
|
instruments: InstrumentsService = client.instruments
|
|
tickers = []
|
|
for method in ["shares", "bonds", "etfs", "currencies", "futures"]:
|
|
for item in getattr(instruments, method)().instruments:
|
|
tickers.append(
|
|
{
|
|
"name": item.name,
|
|
"ticker": item.ticker,
|
|
"class_code": item.class_code,
|
|
"figi": item.figi,
|
|
"uid": item.uid,
|
|
"type": method,
|
|
"min_price_increment": quotation_to_decimal(
|
|
item.min_price_increment
|
|
),
|
|
"scale": 9 - len(str(item.min_price_increment.nano)) + 1,
|
|
"lot": item.lot,
|
|
"trading_status": str(
|
|
SecurityTradingStatus(item.trading_status).name
|
|
),
|
|
"api_trade_available_flag": item.api_trade_available_flag,
|
|
"currency": item.currency,
|
|
"exchange": item.exchange,
|
|
"buy_available_flag": item.buy_available_flag,
|
|
"sell_available_flag": item.sell_available_flag,
|
|
"short_enabled_flag": item.short_enabled_flag,
|
|
"klong": quotation_to_decimal(item.klong),
|
|
"kshort": quotation_to_decimal(item.kshort),
|
|
}
|
|
)
|
|
|
|
tickers_df = DataFrame(tickers)
|
|
|
|
ticker_df = tickers_df[tickers_df["ticker"] == ticker]
|
|
if ticker_df.empty:
|
|
logger.error("There is no such ticker: %s", ticker)
|
|
return
|
|
|
|
figi = ticker_df["figi"].iloc[0]
|
|
print(f"\nTicker {ticker} have figi={figi}\n")
|
|
print(f"Additional info for this {ticker} ticker:")
|
|
print(ticker_df.iloc[0])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|