• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

python股票交易接口实现股票分时图K线图和抓取level2行情的开发程序

武飞扬头像
Q_121463726
帮助1

大家对股票交易接口并不陌生,那么要想获取股票数据获取,也是可以通过python股票交易接口实现股票分时图K线图及抓取level2行情的开发程序分析如下:

import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QWidget, QApplication,QMainWindow
from Public.RequestUtils import StocksRequest
# 绘制行情类
class 分时画图工具类(QWidget):
    # 设置grid的上下左右补丁边距
    左侧补丁边距 = 45
    右侧补丁边距 = 245
    顶部补丁边距 = 25
    底部补丁边距 = 17
    总宽 = 左侧补丁边距 右侧补丁边距
    总高 = 顶部补丁边距 底部补丁边距
    主窗宽 = 0
    表格高度 = 0
    表格宽度 = 0

    def __init__(self, parent):
        # 初始化
        super(分时画图工具类, self).__init__()
        self.parent = parent
        self.paint = QtGui.QPainter()
        # 度量尺对象
        self.metrics = self.paint.fontMetrics()
        # 设置字体库
        self.字体库 = dict()
        self.字体库['默认字体'] = QtGui.QFont('Serif', 9, QtGui.QFont.Light)
        self.字体库['雅黑加粗字体'] = QtGui.QFont('Serif', 12, QtGui.QFont.Bold)
        self.字体库['雅黑字体'] = QtGui.QFont('Serif', 12, QtGui.QFont.Light)
        self.设置当前字体('默认字体')
        # 设置笔刷样式库
        self.笔刷样式库 = dict()
        # 红色 1px粗  1px点 2px距 线条
        self.笔刷样式库['红色1px虚线'] = QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.DashLine)
        self.笔刷样式库['红色1px虚线'].setDashPattern([1, 2])

        self.笔刷样式库['红色1px线'] = QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.SolidLine)
        self.笔刷样式库['红色2px线'] = QtGui.QPen(QtCore.Qt.red, 2, QtCore.Qt.SolidLine)
        self.笔刷样式库['红色3px线'] = QtGui.QPen(QtCore.Qt.red, 3, QtCore.Qt.SolidLine)
        self.笔刷样式库['黄色1px线'] = QtGui.QPen(QtCore.Qt.yellow, 1, QtCore.Qt.SolidLine)
        self.笔刷样式库['白色1px线'] = QtGui.QPen(QtCore.Qt.white, 1, QtCore.Qt.SolidLine)
        self.笔刷样式库['灰色1px线'] = QtGui.QPen(QtCore.Qt.gray, 1, QtCore.Qt.SolidLine)
        self.笔刷样式库['绿色1px线'] = QtGui.QPen(QtCore.Qt.green, 1, QtCore.Qt.SolidLine)
        self.笔刷样式库['绿色2px线'] = QtGui.QPen(QtCore.Qt.green, 2, QtCore.Qt.SolidLine)

        self.笔刷样式库['亮蓝1px虚线'] = QtGui.QPen(QtCore.Qt.cyan, 1, QtCore.Qt.DashLine)
        self.笔刷样式库['亮蓝1px虚线'].setDashPattern([3, 2])


    def 开始绘制(self):
        self.绘制表格()
        self.绘制左右侧的价格刻度()
        self.绘制时间轴刻度()
        self.绘制表格上方的股票信息()
        self.绘制股价走势()
        self.绘制成交量走势表格()
        self.绘制成交量()
        self.绘制盘口()

    def redraw(self):
        self.repaint()
    def paintEvent(self, event):
        # 获得窗口的长和宽
        主窗口大小 = self.parent.size()
        self.主窗宽 = 主窗口大小.width()
        self.主窗高 = 主窗口大小.height()
        self.表格高度 = self.主窗高 - self.顶部补丁边距
        self.表格宽度 = self.主窗宽 - self.总宽 - 2
        self.paint.begin(self)
        self.开始绘制()
        self.paint.end()  # 结束
    def 设置当前字体(self, code='默认字体'):
        self.paint.setFont(self.字体库[code])

    '''设置使用的笔刷'''

    def 设置当前笔刷(self, code='default'):
        self.paint.setPen(self.笔刷样式库[code])

    def 绘制表格(self):
        self.设置当前笔刷('红色1px线')
        self.paint.setBrush(QtCore.Qt.NoBrush)

        # 画分主边框
        self.paint.drawRect(0, 0,self.主窗宽 - 1,self.主窗高-1)
        self.paint.drawRect(self.左侧补丁边距, self.顶部补丁边距,self.主窗宽 - self.总宽, self.主窗高 )
        # 成交量和走势的分界线(成交量和走势三七割)
        self.paint.drawLine(self.左侧补丁边距, self.表格高度 * 0.7 self.顶部补丁边距,self.主窗宽 - self.右侧补丁边距, self.表格高度 * 0.7 self.顶部补丁边距)
        self.paint.drawLine(self.左侧补丁边距, self.表格高度  * 0.7 self.顶部补丁边距 self.底部补丁边距, self.主窗宽 - self.右侧补丁边距,self.表格高度 * 0.7 self.顶部补丁边距 self.底部补丁边距)

        # 股票昨收中间线走势
        self.paint.drawLine(self.左侧补丁边距 1, self.表格高度 * 0.35 self.顶部补丁边距,self.主窗宽 - self.右侧补丁边距, self.表格高度 * 0.35 self.顶部补丁边距)
        # 其他线条
        #self.paint.drawLine(0, self.主窗高 - self.底部补丁边距, self.主窗宽 - self.右侧补丁边距 44,self.主窗高 - self.底部补丁边距)
        #self.paint.drawLine(0, self.主窗高 - self.底部补丁边距 16, self.主窗宽, self.主窗高 - self.底部补丁边距 16)
        self.paint.drawLine(self.主窗宽 - self.右侧补丁边距 44, 0,self.主窗宽 - self.右侧补丁边距 44, self.主窗高 - self.底部补丁边距 16)


    def 绘制表格上方的股票信息(self):
        self.设置当前笔刷('黄色1px线')
        self.paint.drawText(4 self.左侧补丁边距, self.顶部补丁边距 - 4, str(self.parent.股票数据['股票名称']))  # 股票名称
        self.paint.drawText(4 self.左侧补丁边距 140, self.顶部补丁边距 - 4 , str('均价线:'))  # 均价线
        上一个交易日收盘价 = self.parent.股票数据['上一个交易日收盘价']
        今收 = self.parent.股票数据['当前价']
        均价 =  self.parent.股票数据['分时数据']['均价'][-1]

        if 上一个交易日收盘价 > 今收:
            self.设置当前笔刷('绿色1px线')
            str_1 = '%.2f -%.2f' % (今收, 上一个交易日收盘价 - 今收)
        if 上一个交易日收盘价 == 今收:
            self.设置当前笔刷('白色1px线')
            str_1 = '%.2f %.2f' % (今收, 0.00)
        if 上一个交易日收盘价 < 今收:
            self.设置当前笔刷('红色1px虚线')
            str_1 = '%.2f %.2f' % (今收, 今收 - 上一个交易日收盘价)

        self.paint.drawText(4 self.左侧补丁边距 60, self.顶部补丁边距 - 4, str(str_1))
        self.paint.drawText(4 self.左侧补丁边距 185, self.顶部补丁边距 - 4, str('%.2f' % 均价))  #

        # 涨停价
        self.设置当前笔刷('红色1px虚线')
        self.paint.drawText(4 self.左侧补丁边距 230, self.顶部补丁边距 - 4,
                            str('涨停价:%.2f' % (self.parent.股票数据['涨停价'])))  # 均价
        # 跌停价
        self.设置当前笔刷('绿色1px线')
        self.paint.drawText(4 self.左侧补丁边距 310, self.顶部补丁边距 - 4,
                            str('跌停价:%.2f' % (self.parent.股票数据['跌停价'])))  # 均价

    def 绘制成交量走势表格(self):

        当日最高成交量 = self.parent.股票数据['当前最高成交量']
        间隔偏移 = 当日最高成交量 / (self.表格高度 * 0.3)
        self.设置当前笔刷('红色1px线')
        grid_num = 6
        x = grid_num
        cnt = self.表格高度 * 0.3 / grid_num
        for i in range(1, grid_num):
            self.设置当前笔刷('红色1px虚线')
            # 计算坐标
            y1 = self.顶部补丁边距 (self.表格高度 * 0.7) i * cnt
            x1 = self.左侧补丁边距
            x2 = self.左侧补丁边距 self.主窗宽 - self.总宽

            self.paint.drawLine(x1, y1, x2, y1)  # 画价位虚线

            vol_int = int(cnt * x * 间隔偏移)
            vol_str = str(vol_int)
            fw = self.metrics.width(vol_str)  # 获得文字宽度
            fh = self.metrics.height() /

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggeaac
系列文章
更多 icon
同类精品
更多 icon
继续加载