Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_S-TinkoffInvestRobot-main/real_time.py
5925 views
1
from tinkoff.invest import *
2
from tinkoff.invest import Client, RequestError
3
import time
4
import matplotlib.pyplot as plt
5
6
TOKEN = ""
7
def acc():
8
global id_ac
9
with Client(TOKEN) as client:
10
client.sandbox.open_sandbox_account()
11
id_ac = client.sandbox.open_sandbox_account().account_id #номер аккаунта
12
client.sandbox.sandbox_pay_in(account_id = id_ac,amount=MoneyValue(units=1000000,nano=0,currency="rub"))#пополнение счёта
13
print(client.sandbox.sandbox_pay_in(account_id = id_ac)) #вывод денег
14
acc()
15
grafs = []
16
stop_los = 1.18
17
take_profit = 0.058
18
candels_g = []
19
candels_r = []
20
candels_k = []
21
nomers_g = []
22
nomers_r = []
23
nomers_k = []
24
nomer=0
25
pos = 1
26
plt.ion()
27
def main():
28
global stop_los
29
global nomer
30
global pos
31
global take_profit
32
global nomers_g
33
global nomers_r
34
global nomers_k
35
global candels_g
36
global candels_r
37
global candels_k
38
for i in range(2000):
39
time.sleep(1)
40
print(i)
41
with Client(TOKEN) as client:
42
try:
43
price = client.market_data.get_last_prices(figi=["BBG000B9XRY4"])
44
cena = price.last_prices[0].price.units+price.last_prices[0].price.nano*0.000000001
45
vremia = price.last_prices[0].time.year,price.last_prices[0].time.month,price.last_prices[0].time.day,price.last_prices[0].time.hour,price.last_prices[0].time.minute,price.last_prices[0].time.second,price.last_prices[0].time.microsecond
46
grafs.append(cena)
47
if take_profit>stop_los:
48
if nomer ==0:
49
otkitie = grafs[0]
50
plt.plot([0], [grafs[0]], 'ro',color="k")
51
if pos ==1:
52
if cena <= otkitie-stop_los:
53
#g продажа на повышение
54
nomers_g.append(nomer)
55
candels_g.append(cena)
56
pos =2
57
if cena >= otkitie+stop_los:
58
#r продажа на понижение
59
nomers_r.append(nomer)
60
candels_r.append(cena)
61
pos =3
62
if pos ==2:
63
#k продать на понижение
64
if cena <= otkitie-take_profit:
65
nomers_k.append(nomer)
66
candels_k.append(cena)
67
pos =1
68
otkitie=cena
69
print("+")
70
elif cena >= otkitie+stop_los:
71
nomers_k.append(nomer)
72
candels_k.append(cena)
73
pos =1
74
otkitie=cena
75
print("-")
76
#k продать на повыщение
77
if pos ==3:
78
if cena >= otkitie+take_profit:
79
nomers_k.append(nomer)
80
candels_k.append(cena)
81
pos =1
82
otkitie=cena
83
print("+")
84
elif cena <= otkitie-stop_los:
85
nomers_k.append(nomer)
86
candels_k.append(cena)
87
pos =1
88
otkitie=cena
89
print("-")
90
elif take_profit<stop_los:
91
if nomer ==0:
92
otkitie = grafs[0]
93
plt.plot([0], [grafs[0]], 'ro',color="k")
94
if pos ==1:
95
if cena >= otkitie+take_profit:
96
#g продажа на повышение
97
nomers_g.append(nomer)
98
candels_g.append(cena)
99
pos =2
100
if cena <= otkitie-take_profit:
101
#r продажа на понижение
102
nomers_r.append(nomer)
103
candels_r.append(cena)
104
pos =3
105
if pos ==2:
106
#k продать на понижение
107
if cena <= otkitie-take_profit:
108
nomers_k.append(nomer)
109
candels_k.append(cena)
110
pos =1
111
otkitie=cena
112
print("+")
113
elif cena >= otkitie+stop_los:
114
nomers_k.append(nomer)
115
candels_k.append(cena)
116
pos =1
117
otkitie=cena
118
print("-")
119
#k продать на повыщение
120
if pos ==3:
121
if cena >= otkitie+take_profit:
122
nomers_k.append(nomer)
123
candels_k.append(cena)
124
pos =1
125
otkitie=cena
126
print("+")
127
elif cena <= otkitie-stop_los:
128
nomers_k.append(nomer)
129
candels_k.append(cena)
130
pos =1
131
otkitie=cena
132
print("-")
133
plt.clf()
134
plt.plot([0], [grafs[0]], 'ro',color="k")
135
plt.plot(nomers_g, candels_g,'ro',color='g')
136
plt.plot(nomers_r, candels_r,'ro',color='r')
137
plt.plot(nomers_k, candels_k,'ro',color='k')
138
plt.plot(grafs)
139
plt.draw()
140
plt.gcf().canvas.flush_events()
141
nomer+=1
142
except:
143
pass
144
if __name__ == "__main__":
145
main()
146
plt.ioff()
147
plt.show()
148