API KiteConnect, тики к подсвечникам
Я хотел бы сохранить данные тиков в подсвечниках, и я написал код для них. Что происходит, когда я запускаю код, данные разных инструментов смешиваются, хотя я пытался создать объект для каждого инструмента. Я также проверяю, является ли токен инструмента одинаковым или нет на каждом этапе (что, я полагаю, необязательно). Вот мой код, дайте мне знать, если кто-нибудь может диагностировать, где проблема.
Мой класс: `Класс Компания:
def __init__(self, token):
self.token = token
self.open = []
self.high = []
self.low = []
self.close = []
self.ohlc_list = {}
self.ohlc_list = [self.open,self.high,self.low,self.close]
self.ohlc = {}
self.ohlc = [0,0,0,0,True,60,0,];
def calc_ohlc(self, ticks, tf):
for company_data in ticks:
if((company_data['timestamp'].minute%tf == 0) and self.ohlc[4]==True):
if(self.token == company_data['instrument_token']):
self.ohlc[5] = company_data['timestamp'].minute + (tf-1)
if(self.token == company_data['instrument_token']):
self.ohlc[0] = company_data['last_price'];
self.ohlc[1] = company_data['last_price'];
self.ohlc[2] = company_data['last_price'];
self.ohlc[3] = company_data['last_price'];
if(self.token == company_data['instrument_token']):
self.ohlc_list[0].append(self.ohlc[0])
self.ohlc[4]=False
if(self.ohlc[4]==False):
if(company_data['last_price'] > self.ohlc[1]):
self.ohlc[1] = company_data['last_price']
print("NEW HIGH",self.ohlc[1])
if(company_data['last_price'] < self.ohlc[2]):
self.ohlc[2] = company_data['last_price']
print("NEW HIGH",self.ohlc[2])
if company_data['timestamp'].minute%self.ohlc[5] == 0 and company_data['timestamp'].second==59 and self.ohlc[4] == False:
if(self.token == company_data['instrument_token']):
self.ohlc[3] = company_data['last_price']
if(self.token == company_data['instrument_token']):
self.ohlc_list[1].append(self.ohlc[1])
self.ohlc_list[2].append(self.ohlc[2])
self.ohlc_list[3].append(self.ohlc[3])
self.ohlc[4] = True
print("TIME", company_data['timestamp'])
print(self.ohlc_list)
`
и создание объектов для одного и того же (sym - это список объектов):
for i in range(0,(len(trd_tkn1))):
sym.append(Company(trd_tkn1[i]))
и часть, которая получает тики от API:
def on_ticks(ws, ticks):
for i in range(0,(len(trd_tkn1))):
sym.calc_ohlc(ticks,3)