def activeContactDataAvailable(self, tableData): log.log("activeContactDataAvailable") self.activeContactsWidget.clear() try: hLabels = ["STRIKE", "TYPE", "%Chng", "OI", "LTP"] rowCnt = len(tableData) colCnt = len(hLabels) self.activeContactsWidget.setRowCount(rowCnt) self.activeContactsWidget.setColumnCount(colCnt) self.activeContactsWidget.verticalHeader().setVisible(False) self.activeContactsWidget.horizontalHeader().setVisible(True) self.activeContactsWidget.horizontalHeader().setStyleSheet("font-weight:bold;border:1px") self.activeContactsWidget.setHorizontalHeaderLabels(hLabels) self.activeContactsWidget.setSortingEnabled(False) for r in range(rowCnt): for c in range(colCnt): self.activeContactsWidget.setItem(r,c, QtGui.QTableWidgetItem(str(tableData[r][c]))) self.activeContactsWidget.resizeColumnsToContents() self.activeContactsWidget.setSortingEnabled(True) self.activeContactsWidget.sortItems(1, QtCore.Qt.AscendingOrder) except: log.log("Exception in activeContactDataAvailable")
def HeavyWeightsDataAvailable(self, niftyHeavyWightsData): if [] == self.graphs: return try: heavyWeightsTimePrice = {} heavyWeightsTimeVol = {} for record in niftyHeavyWightsData: time = record[0] ltp = record[2] vol = record[3] if time in heavyWeightsTimePrice: heavyWeightsTimePrice[time] = heavyWeightsTimePrice[time] + ltp heavyWeightsTimeVol[time] = heavyWeightsTimeVol[time] + vol else: heavyWeightsTimePrice[time] = ltp heavyWeightsTimeVol[time] = vol #Heavy weights chart price = [] time_x = [] for pr in heavyWeightsTimePrice.values(): price.append(pr) for tm in heavyWeightsTimePrice.keys(): time_x.append(tm) for plot in self.graphs: if plot.objectName() == "NiftyHeavy": plot.setData(x = [self.TimeStamp(time) for time in time_x], y = price, pen='y') #Heavy weights volume chart if len(time_x) < 2: return volume = [] time_x.pop(0) volPrv = None for vl in heavyWeightsTimeVol.values(): if None != volPrv: volume.append(vl-volPrv) volPrv = vl ''' volume = np.random.random(len(time_x)) print(time_x) print(volume) #print(heavyWeightsTimeVol.values()) ''' for plot in self.graphs: if plot.objectName() == "Volume": plot.setOpts(x = [self.TimeStamp(time) for time in time_x], height=volume, width=0.3, brush='r') except: log.log("Exception in HeavyWeightsDataAvailable")
def OtmstoShowChanged(self): self.otms2Read = int(self.otmsToShowSpn.currentText()) self.CalAtmOtmRangeToRead() self.DeleteExistingGraphs() self.AddEmptyGraphs2View() log.log("OtmstoShowChanged : " + str(self.otms2Read)) if None != self.read_thread: self.otms2ShowSgnl.emit(self.otmsToShow)
def heaveyWeightsChanged(self): self.heavyWeightsList.clear() heavyWightsWdg = self.grpBox.children() for chld in heavyWightsWdg: if str(type(QtGui.QCheckBox())) == str(type(chld)): if chld.isChecked(): self.heavyWeightsList.append(chld.text()) self.heaveyWeightsChdSgnl.emit(self.heavyWeightsList) log.log("Heavy weights changed : " + str(self.heavyWeightsList))
def InitDataAvailble(self, expiryList): log.log("InitDataAvailble, expiry list = " + str(expiryList)) self.expiry = expiryList[0] self.expirySelction.addItems(expiryList) #Start pulling data only when we get expiry self.write_thread = dt.DataWriteThread() self.writeDataStateSgnl.connect(self.write_thread.SetWriteDataState) self.write_thread.start() self.read_thread.SetExpiry(self.expiry) self.read_thread.start() self.expirySelction.currentIndexChanged.connect(self.ExpirySelectionChanged) self.AddEmptyGraphs2View()
def NiftyPriceAvailable(self, niftyData): try: price = niftyData['Price'] time_x = niftyData['Time'] if [] == price or [] == time_x: return for plot in self.graphs: if plot.objectName() == "Nifty": pen = pg.mkPen(color=(0, 255, 0), width=1, style=QtCore.Qt.DotLine) plot.setData(x = [self.TimeStamp(time) for time in time_x], y = price, pen=pen) except: log.log("Exception in NiftyPriceAvailable")
def PEOIDataAvailable(self, peData): try: strike = peData['Strike'] time_x = peData['Time'] pe_oi_y = peData['OI'] if [] == strike or [] == time_x or [] == pe_oi_y: return for plot in self.graphs: if plot.objectName() == str(strike)+"PE": plot.setData(x = [self.TimeStamp(time) for time in time_x], y = pe_oi_y, pen='b') except: log.log("Exception in PEOIDataAvailable")
def CEOIDataAvailable(self, ceData): try: strike = ceData['Strike'] time_x = ceData['Time'] ce_oi_y = ceData['OI'] niftyPrc = ceData['Nifty'] if [] == strike or [] == time_x or [] == ce_oi_y or [] == niftyPrc: return for plot in self.graphs: if plot.objectName() == str(strike): plot.setData(x = [self.TimeStamp(time) for time in time_x], y = ce_oi_y, pen='r') elif plot.objectName() == str(strike)+"Nifty": if True == self.ShowNiftyOnOI: pen = pg.mkPen(color=(0, 255, 0), width=1, style=QtCore.Qt.DotLine) plot.setData(x = [self.TimeStamp(time) for time in time_x], y = niftyPrc, pen=pen) else: plot.setData(x = [], y = []) ######## check plot.hide() except: log.log("Exception in CEOIDataAvailable")
def NiftyDataAvailable(self, niftyPrice): self.currentPrice = int(niftyPrice) self.CalAtmOtmRangeToRead() if self.init_data_thread is None: log.log("NiftyDataAvailable, initializing all threads") self.read_thread = dt.DataReadThread(self.expiry, self.heavyWeightsList) self.read_thread.ceSignal.connect(self.CEOIDataAvailable) self.read_thread.peSignal.connect(self.PEOIDataAvailable) self.read_thread.niftySignal.connect(self.NiftyPriceAvailable) self.read_thread.niftyHeavyWeightsSgnl.connect(self.HeavyWeightsDataAvailable) self.read_thread.UpdateOtmsToShow(self.otmsToShow) self.expiryChngSgnl.connect(self.read_thread.SetExpiry) self.timePeriodChngSgnl.connect(self.read_thread.SetTimePeriod) self.otms2ShowSgnl.connect(self.read_thread.SetOtmsToShow) self.updateOtms2ShowSgnl.connect(self.read_thread.UpdateOtmsToShow) self.readDataSgnl.connect(self.read_thread.ReadData) self.heaveyWeightsChdSgnl.connect(self.read_thread.UpdateHeavyWeightsList) self.init_data_thread = dt.InitDataThread() self.init_data_thread.signal.connect(self.InitDataAvailble) self.init_data_thread.start()
def ShowNiftyChartOnOIChart(self): self.ShowNiftyOnOI = self.niftyChrtChkBx.isChecked() log.log("ShowNiftyChartOnOIChart : " + str(self.ShowNiftyOnOI)) if None != self.read_thread: self.readDataSgnl.emit()
def ReadDuringMarketHrs(self): state = self.marketHrs.isChecked() log.log("readDuringMarketHrs : " + str(state)) if None != self.write_thread and None != self.init_nifty_thread: self.writeDataStateSgnl.emit(state)
def TimePeriodChanged(self): period = self.timePeriod.currentText() log.log("TimePeriodChanged : " + period) if None != self.read_thread: self.timePeriodChngSgnl.emit(int(period))
def ExpirySelectionChanged(self): self.expiry = self.expirySelction.currentText() log.log("ExpirySelectionChanged : " + self.expiry) if None != self.read_thread: self.expiryChngSgnl.emit(self.expiry)