Path: blob/master/ invest-robot-contest_S-TinkoffInvestRobot-main/drow.py
5925 views
import asyncio1import os2from datetime import timedelta34from tinkoff.invest import AsyncClient, CandleInterval5from tinkoff.invest.utils import now6import matplotlib.pyplot as plt7candels_g = []8candels_r = []9candels_k = []10nomers_g = []11nomers_r = []12nomers_k = []13candels = []14cans = []15take_profit = 0.05816stop_los = 1.1817nomer=018pos = 119plt.ion()20TOKEN = ""21async def main():22global nomer23global pos24global otkitie25global nomers_g26global nomers_r27global nomers_k28global candels_g29global candels_r30global candels_k31global cans32async with AsyncClient(TOKEN) as client:33async for candle in client.get_all_candles(34#id акции35figi="BBG000B9XRY4",36#время37from_=now() - timedelta(days=10),38#промежуток39interval=CandleInterval.CANDLE_INTERVAL_5_MIN,40):41#вывод42low = float(candle.low.units)+(float(candle.low.nano)*0.000000001)43hight = float(candle.high.units)+(float(candle.high.nano)*0.000000001)44cena = low+((hight-low)/2)45candels.append(cena)46if take_profit>stop_los:47if nomer ==0:48otkitie = candels[0]49plt.plot([0], [candels[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 = candels[0]92plt.plot([0], [candels[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(nomers_g, candels_g,'ro',color='g')134plt.plot(nomers_r, candels_r,'ro',color='r')135plt.plot(nomers_k, candels_k,'ro',color='k')136plt.plot(candels)137plt.draw()138plt.gcf().canvas.flush_events()139nomer+=1140if __name__ == "__main__":141asyncio.run(main())142#plt.axhline(y=(otkitie-mal),color="r")143#plt.axhline(y=(otkitie+mal),color="b")144#plt.axhline(y=(otkitie-bol),color="b")145#plt.axhline(y=(otkitie+bol),color="r")146#plt.axhline(y=(otkitie),color="k")147plt.ioff()148plt.show()149150