2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python股票交易接口实现股票分时图K线图及抓取level2行情的开发程序分析

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

时间:2020-12-18 17:29:42

相关推荐

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

大家对股票交易接口并不陌生,那么要想获取股票数据获取,也是可以通过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() /

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。