def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" # Create objects volume_picture = QtGui.QPicture() painter = QtGui.QPainter(volume_picture) # Set painter color if bar.close_price >= bar.open_price: painter.setPen(self._up_pen) painter.setBrush(self._up_brush) else: painter.setPen(self._down_pen) painter.setBrush(self._down_brush) # Draw volume body rect = QtCore.QRectF( ix - BAR_WIDTH, 0, BAR_WIDTH * 2, bar.volume ) painter.drawRect(rect) # Finish painter.end() return volume_picture
def generatePicture(self): self.picture = QtGui.QPicture() p = QtGui.QPainter(self.picture) # 白色 p.setPen(pg.mkPen('w')) prema5 = 0 prema10 = 0 prema20 = 0 for m in self.data: if prema5 != 0 and self.period == 5: # 白色 p.setPen(pg.mkPen('w')) p.setBrush(pg.mkBrush('w')) p.drawLine(QtCore.QPointF(m.t - 1, prema5), QtCore.QPointF(m.t, m.ma)) prema5 = m.ma if prema10 != 0 and self.period == 10: # 青色 p.setPen(pg.mkPen('c')) p.setBrush(pg.mkBrush('c')) p.drawLine(QtCore.QPointF(m.t - 1, prema10), QtCore.QPointF(m.t, m.ma)) prema10 = m.ma if prema20 != 0 and self.period == 20: # 品色 p.setPen(pg.mkPen('m')) p.setBrush(pg.mkBrush('m')) p.drawLine(QtCore.QPointF(m.t - 1, prema20), QtCore.QPointF(m.t, m.ma)) prema20 = m.ma p.end()
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" value = self.values[ix] last_value = self.values[ix - 1] # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Set painter color painter.setPen(self.yellow_pen) # painter.setBrush(self.yellow_brush) # Draw Line if np.isnan(last_value) or np.isnan(value): # print(ix - 1, last_value,ix, value,) pass else: start_point = QtCore.QPointF(ix - 1, last_value) end_point = QtCore.QPointF(ix, value) painter.drawLine(start_point, end_point) # Draw Circle # painter.drawEllipse(QtCore.QPointF(ix, self.values[ix]), 2, 2) # Finish painter.end() return picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" # Create objects candle_picture = QtGui.QPicture() painter = QtGui.QPainter(candle_picture) # Set painter color if bar.close_price >= bar.open_price: painter.setPen(self._up_pen) painter.setBrush(self._up_brush) else: painter.setPen(self._down_pen) painter.setBrush(self._down_brush) # Draw candle shadow painter.drawLine(QtCore.QPointF(ix, bar.high_price), QtCore.QPointF(ix, bar.low_price)) # Draw candle body if bar.open_price == bar.close_price: painter.drawLine( QtCore.QPointF(ix - BAR_WIDTH, bar.open_price), QtCore.QPointF(ix + BAR_WIDTH, bar.open_price), ) else: rect = QtCore.QRectF(ix - BAR_WIDTH, bar.open_price, BAR_WIDTH * 2, bar.close_price - bar.open_price) painter.drawRect(rect) # Finish painter.end() return candle_picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" rsi_value = self.get_rsi_value(ix) last_rsi_value = self.get_rsi_value(ix - 1) # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Draw RSI line painter.setPen(self.yellow_pen) end_point = QtCore.QPointF(ix, rsi_value) start_point = QtCore.QPointF(ix - 1, last_rsi_value) painter.drawLine(start_point, end_point) # Draw oversold/overbought line painter.setPen(self.white_pen) painter.drawLine( QtCore.QPointF(ix, 70), QtCore.QPointF(ix - 1, 70), ) painter.drawLine( QtCore.QPointF(ix, 30), QtCore.QPointF(ix - 1, 30), ) # Finish painter.end() return picture
def _draw_item_picture(self, min_ix: int, max_ix: int) -> None: """ Draw the picture of item in specific range. """ self._item_picuture = QtGui.QPicture() painter = QtGui.QPainter(self._item_picuture) for n in range(min_ix, max_ix): bar_picture = self._bar_picutures[n] bar_picture.play(painter) painter.end()
def _draw_item_picture(self, min_ix: int, max_ix: int) -> None: """ Draw the picture of item in specific range. """ self._item_picuture = QtGui.QPicture() painter = QtGui.QPainter(self._item_picuture) for ix in range(min_ix, max_ix): bar_picture = self._bar_picutures[ix] if bar_picture is None: bar = self._manager.get_bar(ix) bar_picture = self._draw_bar_picture(ix, bar) self._bar_picutures[ix] = bar_picture bar_picture.play(painter) painter.end()
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" macd_value = self.get_macd_value(ix) last_macd_value = self.get_macd_value(ix - 1) # # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # # Draw macd lines if np.isnan(macd_value[0]) or np.isnan(last_macd_value[0]): # print("略过macd lines0") pass else: end_point0 = QtCore.QPointF(ix, macd_value[0]) start_point0 = QtCore.QPointF(ix - 1, last_macd_value[0]) painter.setPen(self.white_pen) painter.drawLine(start_point0, end_point0) if np.isnan(macd_value[1]) or np.isnan(last_macd_value[1]): # print("略过macd lines1") pass else: end_point1 = QtCore.QPointF(ix, macd_value[1]) start_point1 = QtCore.QPointF(ix - 1, last_macd_value[1]) painter.setPen(self.yellow_pen) painter.drawLine(start_point1, end_point1) if not np.isnan(macd_value[2]): if (macd_value[2] > 0): painter.setPen(self.red_pen) painter.setBrush(pg.mkBrush(255, 0, 0)) else: painter.setPen(self.green_pen) painter.setBrush(pg.mkBrush(0, 255, 0)) painter.drawRect(QtCore.QRectF(ix - 0.3, 0, 0.6, macd_value[2])) else: # print("略过macd lines2") pass painter.end() return picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" sma_value = self.get_sma_value(ix) last_sma_value = self.get_sma_value(ix - 1) # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Set painter color painter.setPen(self.blue_pen) # Draw Line start_point = QtCore.QPointF(ix-1, last_sma_value) end_point = QtCore.QPointF(ix, sma_value) painter.drawLine(start_point, end_point) # Finish painter.end() return picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" boll_value = self.get_boll_value(ix) last_boll_value = self.get_boll_value(ix - 1) # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Set painter color painter.setPen(self.blue_pen) if last_boll_value==0: # Draw Line start_point = QtCore.QPointF(0, 0) end_point = QtCore.QPointF(0, 0) painter.drawLine(start_point, end_point) else: # Draw Line start_point = QtCore.QPointF(ix-1, last_boll_value["upper"]) end_point = QtCore.QPointF(ix, boll_value["upper"]) painter.drawLine(start_point, end_point) start_point = QtCore.QPointF(ix-1, last_boll_value["lower"]) end_point = QtCore.QPointF(ix, boll_value["lower"]) painter.drawLine(start_point, end_point) start_point = QtCore.QPointF(ix-1, last_boll_value["middle"]) end_point = QtCore.QPointF(ix, boll_value["middle"]) painter.setPen(self.white_pen) painter.drawLine(start_point, end_point) # Finish painter.end() return picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" rsi_value = self.values[ix] last_rsi_value = self.values[ix - 1] # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Draw RSI line painter.setPen(self.yellow_pen) if np.isnan(last_rsi_value) or np.isnan(rsi_value): # print(ix - 1, last_rsi_value,ix, rsi_value,) pass else: end_point = QtCore.QPointF(ix, rsi_value) start_point = QtCore.QPointF(ix - 1, last_rsi_value) painter.drawLine(start_point, end_point) # Draw oversold/overbought line painter.setPen(self.white_pen) painter.drawLine( QtCore.QPointF(ix, 70), QtCore.QPointF(ix - 1, 70), ) painter.drawLine( QtCore.QPointF(ix, 30), QtCore.QPointF(ix - 1, 30), ) # Finish painter.end() return picture
def _draw_bar_picture(self, ix: int, bar: BarData) -> QtGui.QPicture: """""" last_bar = self._manager.get_bar(ix - 1) # Create objects picture = QtGui.QPicture() painter = QtGui.QPainter(picture) # Set painter color painter.setPen(self.white_pen) # Draw Line end_point = QtCore.QPointF(ix, bar.close_price) if last_bar: start_point = QtCore.QPointF(ix - 1, last_bar.close_price) else: start_point = end_point painter.drawLine(start_point, end_point) # Finish painter.end() return picture
def lineNumberAreaPaintEvent(self, event): mypainter = QtGui.QPainter(self.lineNumberArea) mypainter.fillRect(event.rect(), Qt.lightGray) block = self.firstVisibleBlock() blockNumber = block.blockNumber() top = self.blockBoundingGeometry(block).translated( self.contentOffset()).top() bottom = top + self.blockBoundingRect(block).height() # Just to make sure I use the right font height = self.fontMetrics().height() while block.isValid() and (top <= event.rect().bottom()): if block.isVisible() and (bottom >= event.rect().top()): number = str(blockNumber + 1) mypainter.setPen(Qt.black) mypainter.drawText(0, top, self.lineNumberArea.width(), height, Qt.AlignRight, number) block = block.next() top = bottom bottom = top + self.blockBoundingRect(block).height() blockNumber += 1