Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/client.py
5925 views
from datetime import datetime1from tinkoff.invest import Client, RequestError, OrderDirection, OrderType23import tinkoff_creds4from pandas import DataFrame567TOKEN = tinkoff_creds.test_token_v28910def buy(ticker):11"""12Функция для покупки акции по ticker13"""14try:15with Client(TOKEN) as client:16# Получаем figi по названию ticker17figi = get_figi(ticker=ticker)1819request_to_buy = client.orders.post_order(20order_id=str(datetime.utcnow().timestamp()),21figi=figi,22quantity=1,23account_id=tinkoff_creds.account_id_test,24direction=OrderDirection.ORDER_DIRECTION_BUY,25order_type=OrderType.ORDER_TYPE_MARKET26)2728print(request_to_buy)2930except RequestError as ex:31return ex323334def sell(ticker):35"""36Функция для продажи акции по ticker37"""38try:39with Client(TOKEN) as client:40# Получаем figi по названию ticker41figi = get_figi(ticker=ticker)4243request_to_sell = client.orders.post_order(44order_id=str(datetime.utcnow().timestamp()),45figi=figi,46quantity=1,47account_id=tinkoff_creds.account_id_test,48direction=OrderDirection.ORDER_DIRECTION_SELL,49order_type=OrderType.ORDER_TYPE_MARKET50)5152print(request_to_sell)5354except RequestError as ex:55return ex565758def get_figi(ticker):59"""60Функция для получения figi по ticker61"""62try:63with Client(TOKEN) as client:64instruments = client.instruments65df = DataFrame(instruments.shares().instruments, columns=['name', 'figi', 'ticker'])66instrument_figi = df[df['ticker'] == ticker]['figi'].iloc[0]6768return instrument_figi6970except RequestError as ex:71return ex727374def get_ticker(figi):75"""76Функция для получения ticker по figi77"""78try:79with Client(TOKEN) as client:80instruments = client.instruments81df = DataFrame(instruments.shares().instruments, columns=['name', 'figi', 'ticker'])82instrument_ticker = df[df['figi'] == figi]['ticker'].iloc[0]8384return instrument_ticker8586except RequestError as ex:87return ex888990def get_current_stocks():91"""92Функция для получения акций в портфеле93"""94try:95with Client(TOKEN) as client:96instruments = client.operations.get_positions(account_id=tinkoff_creds.account_id_test)97df = DataFrame(instruments.securities, columns=['figi', 'balance'])98stocks = list(df['figi'])99100return stocks101102except RequestError as ex:103return ex104105106107