python股票量化交易(15)---使用pyqt5构建股票交易北向资金

简介: python股票量化交易(15)---使用pyqt5构建股票交易北向资金

获取北向资金数据


如果我们需要构建北向资金界面,首先也是需要获取到北向资金的交易数据。我们直接上代码:

import akshare as ak
from PyQt5 import QtCore
from PyQt5.QtCore import pyqtSignal
from pandas import DataFrame
class NchThread(QtCore.QThread):
    _signal = pyqtSignal(DataFrame)
    def __init__(self):
        super(NchThread, self).__init__()
    def run(self):
        df = ak.stock_em_hsgt_board_rank(symbol="北向资金增持行业板块排行", indicator="今日")
        self._signal.emit(df)


这里,获取网络数据同样也需要在线程中获取,并返回给界面。


pyqt5构建北向资金界面


同之前的龙虎榜数据一样,我们通过QTableWidget组件进行构建,代码与上篇类似,我们直接上代码:

class MyFrom(QMainWindow):
  # 北向资金
    def init_nch(self):
        self.nchGrid = QGridLayout()
        self.nchGrid.setSpacing(5)
        self.nchTab.setLayout(self.nchGrid)
        self.nchThread = NchThread()
        self.nchThread._signal.connect(self.nchThead_callbacklog)
        self.nchThread.start()
    def nchThead_callbacklog(self, df):
        ft = QFont()
        ft.setPointSize(10)
        ft.setBold(True)
        nchtableWidget = QTableWidget(len(df), 6)
        nchtableWidget.setHorizontalHeaderLabels(
            ['名称', '最新涨跌幅', '北向资金今日持股-股票只数', "北向资金今日增持估计-市值", "今日增持最大股-市值", "今日减持最大股-市值"])
        nchtableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 不可编辑
        nchtableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)  # 禁止拖拽
        nchtableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)  # 只能选中一行
        nchtableWidget.itemClicked.connect(self.tableWidget_connect)
        nchtableWidget.verticalHeader().setVisible(False)
        nchtableWidget.setShowGrid(False)  # 不显示子线条
        nchtableWidget.setColumnWidth(0, 150)  # 设置第一列宽
        nchtableWidget.setColumnWidth(1, 100)  # 设置第二列宽
        nchtableWidget.setColumnWidth(2, 200)  # 设置第三列宽
        nchtableWidget.setColumnWidth(3, 210)  # 设置第三列宽
        nchtableWidget.setColumnWidth(4, 200)  # 设置第三列宽
        nchtableWidget.setColumnWidth(5, 200)  # 设置第三列宽
        for idx, row in df.iterrows():
            if float(row["最新涨跌幅"]) < 0:
                m_color = QColor(0, 255, 0)
            elif float(row["最新涨跌幅"]) > 0:
                m_color = QColor(255, 0, 0)
            else:
                m_color = QColor(255, 255, 255)
            newItem0 = QTableWidgetItem(str(row["名称"]))
            newItem0.setFont(ft)
            newItem0.setForeground(QBrush(m_color))
            newItem1 = QTableWidgetItem(str(row["最新涨跌幅"]))
            newItem1.setFont(ft)
            newItem1.setForeground(QBrush(m_color))
            newItem2 = QTableWidgetItem(str(row["北向资金今日持股-股票只数"]))
            newItem2.setFont(ft)
            newItem2.setForeground(QBrush(m_color))
            newItem3 = QTableWidgetItem(str(row["北向资金今日增持估计-市值"]))
            newItem3.setFont(ft)
            newItem3.setForeground(QBrush(m_color))
            newItem4 = QTableWidgetItem(str(row["今日增持最大股-市值"]))
            newItem4.setFont(ft)
            newItem4.setForeground(QBrush(m_color))
            newItem5 = QTableWidgetItem(str(row["今日减持最大股-市值"]))
            newItem5.setFont(ft)
            newItem5.setForeground(QBrush(m_color))
            newItem0.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            newItem1.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            newItem2.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            newItem3.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            newItem4.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            newItem5.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            nchtableWidget.setItem(idx, 0, newItem0)
            nchtableWidget.setItem(idx, 1, newItem1)
            nchtableWidget.setItem(idx, 2, newItem2)
            nchtableWidget.setItem(idx, 3, newItem3)
            nchtableWidget.setItem(idx, 4, newItem4)
            nchtableWidget.setItem(idx, 5, newItem5)
        self.nchGrid.addWidget(nchtableWidget, 0, 0, 16, 16)


运行之后,显示的效果如下图所示:

软件资源代码下载地址:点击下载

相关文章
|
3天前
|
数据库 Python
Python实践:从零开始构建你的第一个Web应用
使用Python和轻量级Web框架Flask,你可以轻松创建Web应用。先确保安装了Python,然后通过`pip install Flask`安装Flask。在`app.py`中编写基本的&quot;Hello, World!&quot;应用,定义路由`@app.route(&#39;/&#39;)`并运行`python app.py`启动服务器。扩展应用,可添加新路由显示当前时间,展示Flask处理动态内容的能力。开始你的Web开发之旅吧!【6月更文挑战第13天】
|
3天前
|
Python 存储 数据处理
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
|
4天前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
4天前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
4天前
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
4天前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的无人机视角高精度太阳能电池板检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割
基于YOLOv8深度学习的无人机视角高精度太阳能电池板检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割
|
4天前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的高压输电线绝缘子缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
基于YOLOv8深度学习的高压输电线绝缘子缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
4天前
|
机器学习/深度学习 算法 安全
基于YOLOv8深度学习的危险区域人员闯入检测与报警系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、区域闯入
基于YOLOv8深度学习的危险区域人员闯入检测与报警系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、区域闯入
|
4天前
|
机器学习/深度学习 人工智能 安全
实战 | 基于YOLOv8深度学习的反光衣检测与预警系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、人工智能
实战 | 基于YOLOv8深度学习的反光衣检测与预警系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、人工智能
|
4天前
|
机器学习/深度学习 计算机视觉 Python
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数(3)
深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数