1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      怎么使用PyQtGraph繪制精美的股票行情K線圖-創(chuàng)新互聯(lián)

      這篇文章主要介紹怎么使用PyQtGraph繪制精美的股票行情K線圖,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

      10年積累的成都網(wǎng)站設計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有漢中免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

      pyqtgraph是Python平臺上一種功能強大的2D/3D繪圖庫,相對于matplotlib庫,由于其在內(nèi)部實現(xiàn)方式上,使用了高速計算的numpy信號處理庫以及Qt的GraphicsView框架,因此它在大數(shù)據(jù)量的處理及快速顯示方面有著天然的優(yōu)勢,非常適合于需要快速繪圖更新、視頻或?qū)崟r交互性的操作場合,在數(shù)學、科學和工程領域都有著廣泛的應用。

      K線圖介紹

      對于股票交易者來講,K線圖是弄清股票一段時間走勢的一種最基本的圖形工具,K線分為陽線和陰線,陽線和陰線都包含了開盤價、收盤價、最高價和最低價,一般K線如下圖所示:

      當收盤價大于開盤價時,稱為陽線,在圖形上一般用紅色表示,反之,當收盤價低于開盤價時,稱為陰線,在圖形上一般用綠色表示。由于其形狀頗似一根根蠟燭,K線圖有時也叫做蠟燭圖。

      # -*- coding: utf-8 -*-
      
      # Form implementation generated from reading ui file 'QWidget_plot.ui'
      #
      # Created by: PyQt4 UI code generator 4.11.4
      #
      # WARNING! All changes made in this file will be lost!
      
      import sys
      reload(sys)
      sys.setdefaultencoding('utf-8')
      from PyQt4 import QtCore, QtGui
      import datetime
      import pyqtgraph as pg
      import tushare as ts
      
      try:
        _fromUtf8 = QtCore.QString.fromUtf8
      except AttributeError:
        def _fromUtf8(s):
          return s
      
      try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
          return QtGui.QApplication.translate(context, text, disambig, _encoding)
      except AttributeError:
        def _translate(context, text, disambig):
          return QtGui.QApplication.translate(context, text, disambig)
      
      class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
          MainWindow.setObjectName(_fromUtf8("MainWindow"))
          MainWindow.resize(800, 600)
          self.centralwidget = QtGui.QWidget(MainWindow)
          self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
          self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
          self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout"))
          self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
          self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
          MainWindow.setCentralWidget(self.centralwidget)
          self.menubar = QtGui.QMenuBar(MainWindow)
          self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31))
          self.menubar.setObjectName(_fromUtf8("menubar"))
          MainWindow.setMenuBar(self.menubar)
      
          self.drawChart = DrawChart(ktype='D')
          self.verticalLayout_2.addWidget(self.drawChart.pyqtgraphDrawChart())
      
          self.retranslateUi(MainWindow)
          QtCore.QMetaObject.connectSlotsByName(MainWindow)
      
        def retranslateUi(self, MainWindow):
          MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
      
      class DrawChart():
        def __init__(self, code='sz50', start=str(datetime.date.today() - datetime.timedelta(days=200)), end=str(datetime.date.today() + datetime.timedelta(days=1)), ktype='D'):
          self.code = code
          self.start = start
          self.end = end
          self.ktype = ktype
          self.data_list, self.t = self.getData()
      
        def pyqtgraphDrawChart(self):
          try:
            self.item = CandlestickItem(self.data_list)
            self.xdict = {0: str(self.hist_data.index[0]).replace('-', '/'), int((self.t + 1) / 2) - 1: str(self.hist_data.index[int((self.t + 1) / 2)]).replace('-', '/'), self.t - 1: str(self.hist_data.index[-1]).replace('-', '/')}
            self.stringaxis = pg.AxisItem(orientation='bottom')
            self.stringaxis.setTicks([self.xdict.items()])
            self.plt = pg.PlotWidget(axisItems={'bottom': self.stringaxis}, enableMenu=False)
      
            self.plt.addItem(self.item)
            # self.plt.showGrid(x=True, y=True)
      
            return self.plt
          except:
            return pg.PlotWidget()
      
        def getData(self):
          self.start = str(datetime.date.today() - datetime.timedelta(days=150))
          self.end = str(datetime.date.today() + datetime.timedelta(days=1))
          self.hist_data = ts.get_hist_data(self.code, self.start, self.end, self.ktype).sort_index()[-300:-1]
          data_list = []
          t = 0
          for dates, row in self.hist_data.iterrows():
            open, high, close, low, volume, price_change, p_change, ma5, ma10, ma20 = row[:10]
            datas = (t, open, close, low, high, volume, price_change, p_change, ma5, ma10, ma20)
            data_list.append(datas)
            t += 1
          return data_list, t
      
      class CandlestickItem(pg.GraphicsObject):
        def __init__(self, data):
          pg.GraphicsObject.__init__(self)
          self.data = data
          self.generatePicture()
      
        def generatePicture(self):
          self.picture = QtGui.QPicture()
          p = QtGui.QPainter(self.picture)
          p.setPen(pg.mkPen('w'))
          w = (self.data[1][0] - self.data[0][0]) / 3.
          prema5 = 0
          prema10 = 0
          prema20 = 0
          for (t, open, close, min, max, volume, price_change, p_change, ma5, ma10, ma20) in self.data:
            if open > close:
              p.setPen(pg.mkPen('g'))
              p.setBrush(pg.mkBrush('g'))
            else:
              p.setPen(pg.mkPen('r'))
              p.setBrush(pg.mkBrush('r'))
            p.drawLine(QtCore.QPointF(t, min), QtCore.QPointF(t, max))
            p.drawRect(QtCore.QRectF(t - w, open, w * 2, close - open))
            if prema5 != 0:
              p.setPen(pg.mkPen('w'))
              p.setBrush(pg.mkBrush('w'))
              p.drawLine(QtCore.QPointF(t-1, prema5), QtCore.QPointF(t, ma5))
            prema5 = ma5
            if prema10 != 0:
              p.setPen(pg.mkPen('c'))
              p.setBrush(pg.mkBrush('c'))
              p.drawLine(QtCore.QPointF(t-1, prema10), QtCore.QPointF(t, ma10))
            prema10 = ma10
            if prema20 != 0:
              p.setPen(pg.mkPen('m'))
              p.setBrush(pg.mkBrush('m'))
              p.drawLine(QtCore.QPointF(t-1, prema20), QtCore.QPointF(t, ma20))
            prema20 = ma20
          p.end()
      
        def paint(self, p, *args):
          p.drawPicture(0, 0, self.picture)
      
        def boundingRect(self):
          return QtCore.QRectF(self.picture.boundingRect())
      
      if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        MainWindow = QtGui.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())

      怎么使用PyQtGraph繪制精美的股票行情K線圖

      以上是“怎么使用PyQtGraph繪制精美的股票行情K線圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      當前名稱:怎么使用PyQtGraph繪制精美的股票行情K線圖-創(chuàng)新互聯(lián)
      文章網(wǎng)址:http://www.ef60e0e.cn/article/dgssjp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        海口市| 尚志市| 安图县| 江门市| 张家川| 黎平县| 苍南县| 民和| 铜陵市| 灵璧县| 泾阳县| 九龙县| 虞城县| 井陉县| 修武县| 西藏| 开封市| 楚雄市| 翁源县| 三都| 沁水县| 酉阳| 会理县| 岚皋县| 襄汾县| 美姑县| 嘉禾县| 张家口市| 马山县| 东阳市| 芮城县| 洛扎县| 略阳县| 临朐县| 佛学| 尖扎县| 五常市| 米易县| 昌邑市| 民县| 郁南县|