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)


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

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

相关文章
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
8692 1
|
数据可视化 数据处理 Python
如何使用Python实现一个基于均线的交易策略
【10月更文挑战第9天】本文介绍了如何使用Python实现一个基于均线的交易策略。主要步骤包括导入所需库(如`pandas`、`numpy`和`matplotlib`),加载股票或期货的历史数据,计算均线和其他指标,实现交易策略逻辑,以及可视化交易结果。示例代码展示了如何根据均线交叉点进行开仓、止损和止盈操作,并提供了注意事项,如数据来源、交易成本和风险管理。
1168 7
|
数据可视化 数据挖掘 数据安全/隐私保护
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
时间序列动量策略(TSMOM)是一种基于资产价格趋势的量化交易方法,通过建立多头或空头头寸捕捉市场惯性。然而,传统TSMOM策略因风险敞口不稳定而面临收益波动问题。波动率调整技术通过动态调节头寸规模,维持恒定风险水平,优化了策略表现。本文系统分析了波动率调整TSMOM的原理、实施步骤及优势,强调其在现代量化投资中的重要地位,并探讨关键参数设定与实际应用考量,为投资者提供更平稳的风险管理体验。
931 4
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
1371 13
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
1162 5
|
数据采集 人工智能 自然语言处理
AI Agent 金融助理0-1 Tutorial 利用Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股) AI Finance Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
1256 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
数据可视化 数据处理 数据库
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
1483 2
|
数据可视化 IDE 开发者
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
3492 1

热门文章

最新文章

推荐镜像

更多