Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/client.py
5925 views
1
from datetime import datetime
2
from tinkoff.invest import Client, RequestError, OrderDirection, OrderType
3
4
import tinkoff_creds
5
from pandas import DataFrame
6
7
8
TOKEN = tinkoff_creds.test_token_v2
9
10
11
def buy(ticker):
12
"""
13
Функция для покупки акции по ticker
14
"""
15
try:
16
with Client(TOKEN) as client:
17
# Получаем figi по названию ticker
18
figi = get_figi(ticker=ticker)
19
20
request_to_buy = client.orders.post_order(
21
order_id=str(datetime.utcnow().timestamp()),
22
figi=figi,
23
quantity=1,
24
account_id=tinkoff_creds.account_id_test,
25
direction=OrderDirection.ORDER_DIRECTION_BUY,
26
order_type=OrderType.ORDER_TYPE_MARKET
27
)
28
29
print(request_to_buy)
30
31
except RequestError as ex:
32
return ex
33
34
35
def sell(ticker):
36
"""
37
Функция для продажи акции по ticker
38
"""
39
try:
40
with Client(TOKEN) as client:
41
# Получаем figi по названию ticker
42
figi = get_figi(ticker=ticker)
43
44
request_to_sell = client.orders.post_order(
45
order_id=str(datetime.utcnow().timestamp()),
46
figi=figi,
47
quantity=1,
48
account_id=tinkoff_creds.account_id_test,
49
direction=OrderDirection.ORDER_DIRECTION_SELL,
50
order_type=OrderType.ORDER_TYPE_MARKET
51
)
52
53
print(request_to_sell)
54
55
except RequestError as ex:
56
return ex
57
58
59
def get_figi(ticker):
60
"""
61
Функция для получения figi по ticker
62
"""
63
try:
64
with Client(TOKEN) as client:
65
instruments = client.instruments
66
df = DataFrame(instruments.shares().instruments, columns=['name', 'figi', 'ticker'])
67
instrument_figi = df[df['ticker'] == ticker]['figi'].iloc[0]
68
69
return instrument_figi
70
71
except RequestError as ex:
72
return ex
73
74
75
def get_ticker(figi):
76
"""
77
Функция для получения ticker по figi
78
"""
79
try:
80
with Client(TOKEN) as client:
81
instruments = client.instruments
82
df = DataFrame(instruments.shares().instruments, columns=['name', 'figi', 'ticker'])
83
instrument_ticker = df[df['figi'] == figi]['ticker'].iloc[0]
84
85
return instrument_ticker
86
87
except RequestError as ex:
88
return ex
89
90
91
def get_current_stocks():
92
"""
93
Функция для получения акций в портфеле
94
"""
95
try:
96
with Client(TOKEN) as client:
97
instruments = client.operations.get_positions(account_id=tinkoff_creds.account_id_test)
98
df = DataFrame(instruments.securities, columns=['figi', 'balance'])
99
stocks = list(df['figi'])
100
101
return stocks
102
103
except RequestError as ex:
104
return ex
105
106
107