Path: blob/master/ invest-robot-contest_S-TinkoffInvestRobot-main/real_time.py
5925 views
from tinkoff.invest import *1from tinkoff.invest import Client, RequestError2import time3import matplotlib.pyplot as plt45TOKEN = ""6def acc():7global id_ac8with Client(TOKEN) as client:9client.sandbox.open_sandbox_account()10id_ac = client.sandbox.open_sandbox_account().account_id #номер аккаунта11client.sandbox.sandbox_pay_in(account_id = id_ac,amount=MoneyValue(units=1000000,nano=0,currency="rub"))#пополнение счёта12print(client.sandbox.sandbox_pay_in(account_id = id_ac)) #вывод денег13acc()14grafs = []15stop_los = 1.1816take_profit = 0.05817candels_g = []18candels_r = []19candels_k = []20nomers_g = []21nomers_r = []22nomers_k = []23nomer=024pos = 125plt.ion()26def main():27global stop_los28global nomer29global pos30global take_profit31global nomers_g32global nomers_r33global nomers_k34global candels_g35global candels_r36global candels_k37for i in range(2000):38time.sleep(1)39print(i)40with Client(TOKEN) as client:41try:42price = client.market_data.get_last_prices(figi=["BBG000B9XRY4"])43cena = price.last_prices[0].price.units+price.last_prices[0].price.nano*0.00000000144vremia = 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.microsecond45grafs.append(cena)46if take_profit>stop_los:47if nomer ==0:48otkitie = grafs[0]49plt.plot([0], [grafs[0]], 'ro',color="k")50if pos ==1:51if cena <= otkitie-stop_los:52#g продажа на повышение53nomers_g.append(nomer)54candels_g.append(cena)55pos =256if cena >= otkitie+stop_los:57#r продажа на понижение58nomers_r.append(nomer)59candels_r.append(cena)60pos =361if pos ==2:62#k продать на понижение63if cena <= otkitie-take_profit:64nomers_k.append(nomer)65candels_k.append(cena)66pos =167otkitie=cena68print("+")69elif cena >= otkitie+stop_los:70nomers_k.append(nomer)71candels_k.append(cena)72pos =173otkitie=cena74print("-")75#k продать на повыщение76if pos ==3:77if cena >= otkitie+take_profit:78nomers_k.append(nomer)79candels_k.append(cena)80pos =181otkitie=cena82print("+")83elif cena <= otkitie-stop_los:84nomers_k.append(nomer)85candels_k.append(cena)86pos =187otkitie=cena88print("-")89elif take_profit<stop_los:90if nomer ==0:91otkitie = grafs[0]92plt.plot([0], [grafs[0]], 'ro',color="k")93if pos ==1:94if cena >= otkitie+take_profit:95#g продажа на повышение96nomers_g.append(nomer)97candels_g.append(cena)98pos =299if cena <= otkitie-take_profit:100#r продажа на понижение101nomers_r.append(nomer)102candels_r.append(cena)103pos =3104if pos ==2:105#k продать на понижение106if cena <= otkitie-take_profit:107nomers_k.append(nomer)108candels_k.append(cena)109pos =1110otkitie=cena111print("+")112elif cena >= otkitie+stop_los:113nomers_k.append(nomer)114candels_k.append(cena)115pos =1116otkitie=cena117print("-")118#k продать на повыщение119if pos ==3:120if cena >= otkitie+take_profit:121nomers_k.append(nomer)122candels_k.append(cena)123pos =1124otkitie=cena125print("+")126elif cena <= otkitie-stop_los:127nomers_k.append(nomer)128candels_k.append(cena)129pos =1130otkitie=cena131print("-")132plt.clf()133plt.plot([0], [grafs[0]], 'ro',color="k")134plt.plot(nomers_g, candels_g,'ro',color='g')135plt.plot(nomers_r, candels_r,'ro',color='r')136plt.plot(nomers_k, candels_k,'ro',color='k')137plt.plot(grafs)138plt.draw()139plt.gcf().canvas.flush_events()140nomer+=1141except:142pass143if __name__ == "__main__":144main()145plt.ioff()146plt.show()147148