Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_S-TinkoffInvestRobot-main/drow.py
5925 views
1
import asyncio
2
import os
3
from datetime import timedelta
4
5
from tinkoff.invest import AsyncClient, CandleInterval
6
from tinkoff.invest.utils import now
7
import matplotlib.pyplot as plt
8
candels_g = []
9
candels_r = []
10
candels_k = []
11
nomers_g = []
12
nomers_r = []
13
nomers_k = []
14
candels = []
15
cans = []
16
take_profit = 0.058
17
stop_los = 1.18
18
nomer=0
19
pos = 1
20
plt.ion()
21
TOKEN = ""
22
async def main():
23
global nomer
24
global pos
25
global otkitie
26
global nomers_g
27
global nomers_r
28
global nomers_k
29
global candels_g
30
global candels_r
31
global candels_k
32
global cans
33
async with AsyncClient(TOKEN) as client:
34
async for candle in client.get_all_candles(
35
#id акции
36
figi="BBG000B9XRY4",
37
#время
38
from_=now() - timedelta(days=10),
39
#промежуток
40
interval=CandleInterval.CANDLE_INTERVAL_5_MIN,
41
):
42
#вывод
43
low = float(candle.low.units)+(float(candle.low.nano)*0.000000001)
44
hight = float(candle.high.units)+(float(candle.high.nano)*0.000000001)
45
cena = low+((hight-low)/2)
46
candels.append(cena)
47
if take_profit>stop_los:
48
if nomer ==0:
49
otkitie = candels[0]
50
plt.plot([0], [candels[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 = candels[0]
93
plt.plot([0], [candels[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(nomers_g, candels_g,'ro',color='g')
135
plt.plot(nomers_r, candels_r,'ro',color='r')
136
plt.plot(nomers_k, candels_k,'ro',color='k')
137
plt.plot(candels)
138
plt.draw()
139
plt.gcf().canvas.flush_events()
140
nomer+=1
141
if __name__ == "__main__":
142
asyncio.run(main())
143
#plt.axhline(y=(otkitie-mal),color="r")
144
#plt.axhline(y=(otkitie+mal),color="b")
145
#plt.axhline(y=(otkitie-bol),color="b")
146
#plt.axhline(y=(otkitie+bol),color="r")
147
#plt.axhline(y=(otkitie),color="k")
148
plt.ioff()
149
plt.show()
150