当前位置: 首页 > news >正文

python_PyQt5开发验证K线视觉想法工具V1.2_批量验证

目录

运行情况:

​编辑

结果json文件格式:

 代码:


承接 【python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段】 博文

地址:python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段_程序猿与金融与科技的博客-CSDN博客

运行情况:

1 选择“批量验证”

2 选择时间区间,与验证的数据相同的时间区间

3 选择股票日数据所在文件夹

4 选择标记结果json文件

5 可以选择某一个股票显示结果,也可以通过“上一个”,“下一个”按钮切换股票查看对应股票标记

结果json文件格式:

 代码:

 界面布局

 1 在 EyeCheckMainWidget 类中实现 fill_stack_widget_two 方法

    def fill_stack_widget_two(self):batch_choice_daily_dir_btn = QtWidgets.QPushButton('选择股票日数据文件夹')batch_choice_daily_dir_btn.clicked.connect(self.batch_choice_daily_dir_btn_clicked)self.batch_choice_daily_dir_lineedit = QtWidgets.QLineEdit()batch_results_file_btn = QtWidgets.QPushButton('批量结果json文件')batch_results_file_btn.clicked.connect(self.batch_results_file_btn_clicked)self.batch_results_file_lineedit = QtWidgets.QLineEdit()batch_layout_one = QtWidgets.QFormLayout()batch_layout_one.addRow(batch_choice_daily_dir_btn,self.batch_choice_daily_dir_lineedit)batch_layout_one.addRow(batch_results_file_btn,self.batch_results_file_lineedit)self.batch_targets_combox = QtWidgets.QComboBox()self.batch_targets_combox.currentTextChanged.connect(self.batch_targets_combox_currentTextChanged)batch_pre_btn = QtWidgets.QPushButton('上一个')batch_pre_btn.clicked.connect(self.batch_pre_btn_clicked)batch_next_btn = QtWidgets.QPushButton('下一个')batch_next_btn.clicked.connect(self.batch_next_btn_clicked)batch_layout_two = QtWidgets.QHBoxLayout()batch_layout_two.addWidget(self.batch_targets_combox)batch_layout_two.addWidget(batch_pre_btn)batch_layout_two.addWidget(batch_next_btn)batch_layout = QtWidgets.QVBoxLayout()batch_layout.addLayout(batch_layout_one)batch_layout.addLayout(batch_layout_two)self.stack_two.setLayout(batch_layout)pass

2 在 EyeCheckMainWidget 类  init_data 方法

    def init_data(self):self.please_select_str: str = '-- 请选择 --'self.single_settingMark_widget: QtWidgets.QWidget = Noneself.target_column_list: List[str] = ['xTick', 'open', 'close', 'highest', 'lowest']self.target_names_list: List[str] = []self.target_marks_map: Dict = {}self.batch_current_target_name: str = Nonepass

3 在 EyeCheckMainWidget 类 增加批量验证用到的方法

    def caculate_k_data_and_show(self,daily_file:str,title_name:str):left_point = self.left_point.date().toString('yyyy-MM-dd')right_point = self.right_point.date().toString('yyyy-MM-dd')left_datetime = datetime.datetime.strptime(left_point, '%Y-%m-%d')right_datetime = datetime.datetime.strptime(right_point, '%Y-%m-%d')if left_datetime >= right_datetime:QtWidgets.QMessageBox.information(self,'提示','请选择时间区间',QtWidgets.QMessageBox.Yes)returndf = pd.read_csv(daily_file, encoding='utf-8')df = df.loc[df['openPrice'] > 0].copy()df['o_date'] = pd.to_datetime(df['tradeDate'])df = df.loc[(df['o_date'] >= left_point) & (df['o_date'] <= right_point)].copy()df['open'] = df['openPrice'] * df['accumAdjFactor']df['close'] = df['closePrice'] * df['accumAdjFactor']df['highest'] = df['highestPrice'] * df['accumAdjFactor']df['lowest'] = df['lowestPrice'] * df['accumAdjFactor']df['xTick'] = df['tradeDate']k_data = {'whole_df': df,'whole_header': ['日期', '开盘', '收盘', '最高', '最低'],'whole_pd_header': self.target_column_list}self.graph_widget.first_setData(k_data)self.graph_title_label.setText(title_name)passdef batch_choice_daily_dir_btn_clicked(self):path = QtWidgets.QFileDialog.getExistingDirectory(self,'打开股票日数据所在目录','.')if not path:returnself.batch_choice_daily_dir_lineedit.setText(path)def batch_results_file_btn_clicked(self):path,_ = QtWidgets.QFileDialog.getOpenFileName(self,'打开标记计算结果json文件','.','JSON(*.json)')if not path:returntry:with open(path,'r',encoding='utf-8') as fr:json_obj = json.load(fr)self.target_marks_map = json_objself.target_names_list.clear()self.target_names_list = list(json_obj.keys())self.batch_targets_combox.clear()self.batch_current_target_name = Noneself.batch_targets_combox.addItem(self.please_select_str)self.batch_targets_combox.addItems(self.target_names_list)self.batch_results_file_lineedit.setText(path)passexcept Exception as e:print(e)QtWidgets.QMessageBox.information(self,'提示',e.__str__(),QtWidgets.QMessageBox.Yes)returnpassdef batch_targets_combox_currentTextChanged(self,txt:str):cur_txt = self.batch_targets_combox.currentText()if not cur_txt or cur_txt == self.please_select_str:returnself.batch_current_target_name = cur_txtself.batch_show_current_target()passdef batch_pre_btn_clicked(self):if not self.batch_current_target_name:self.batch_current_target_name = self.target_names_list[-1]else:node_index = self.target_names_list.index(self.batch_current_target_name)if node_index <=0:self.batch_current_target_name = self.target_names_list[-1]else:self.batch_current_target_name = self.target_names_list[node_index-1]passself.batch_show_current_target()passdef batch_next_btn_clicked(self):if not self.batch_current_target_name:self.batch_current_target_name = self.target_names_list[0]else:node_index = self.target_names_list.index(self.batch_current_target_name)if node_index >= len(self.target_names_list)-1:self.batch_current_target_name = self.target_names_list[0]else:self.batch_current_target_name = self.target_names_list[node_index+1]self.batch_show_current_target()passdef batch_show_current_target(self):self.mark_table.clear_table_contents()one_node = self.target_marks_map[self.batch_current_target_name]self.mark_table.set_data(one_node)# daily_file,title_namedaily_dir = self.batch_choice_daily_dir_lineedit.text()daily_file = daily_dir + os.path.sep + self.batch_current_target_name + '.csv'if not daily_dir or not os.path.exists(daily_file):QtWidgets.QMessageBox.information(self,'提示','股票日数据目录没有选择,或对应日数据不存在',QtWidgets.QMessageBox.Yes)returnself.caculate_k_data_and_show(daily_file,self.batch_current_target_name)self.graph_widget.add_marks(one_node)pass

相关文章:

python_PyQt5开发验证K线视觉想法工具V1.2_批量验证

目录 运行情况&#xff1a; ​编辑 结果json文件格式&#xff1a; 代码&#xff1a; 承接 【python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段】 博文 地址&#xff1a;python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段_程序猿与金融与科技的博客-…...

应急响应-web后门(中间件)的排查思路

0x01 获取当前网络架构 语言&#xff0c;数据库&#xff0c;中间件&#xff0c;系统环境等 0x02 分析思路 1.利用时间节点筛选日志行为 2.利用已知的漏洞在日志进行特征搜索&#xff0c;快速定位到目标ip等信息 3.后门查杀&#xff0c;获取后门信息&#xff0c;进一步定位目…...

XML 学习笔记 7:XSD

本文章内容参考自&#xff1a; W3school XSD 教程 Extensible Markup Language (XML) 1.0 (Second Edition) XML Schema 2001 XML Schema Part 2: Datatypes Second Edition 文章目录 1、XSD 是什么2、XSD 内置数据类型 - built-in datatypes2.1、基本数据类型 19 种2.1.1、基本…...

neo4j图数据库基础操作命令(CQL语法)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

vscode无法连接远程服务器的可能原因:远程服务器磁盘爆了

vscode输入密码后一直等待&#xff0c;无法进入远程服务器终端&#xff1a; 同时Remote-SSH输出包含以下内容 在日志中的以下几个部分&#xff1a; [17:15:05.529] > wget download failed 这表明VS Code尝试在远程服务器上下载VS Code服务器时失败了。> Cannot write…...

SSL 证书过期巡检脚本 (Python 版)

哈喽大家好&#xff0c;我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 &#xff08;文章&#xff1a;《SSL 证书过期巡检脚本》&#xff09;&#xff0c;后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 &#xff08;完整代码…...

从0到1自学网络安全(黑客)【附学习路线图+配套搭建资源】

前言 网络安全产业就像一个江湖&#xff0c;各色人等聚集。相对于欧美国家基础扎实&#xff08;懂加密、会防护、能挖洞、擅工程&#xff09;的众多名门正派&#xff0c;我国的人才更多的属于旁门左道&#xff08;很多白帽子可能会不服气&#xff09;&#xff0c;因此在未来的…...

Michael.W基于Foundry精读Openzeppelin第20期——EnumerableMap.sol

0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[forge-std]&#xff1a;v1.5.6 0.1 EnumerableMap.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/structs/EnumerableMap.sol EnumerableMap库提供了Bytes32ToB…...

深入探索二叉树:应用、计算和遍历

当涉及到二叉树的计算问题时&#xff0c;我们可以进一步介绍如何计算叶子节点数、树的宽度和叶子的深度&#xff0c;并解释三种常见的二叉树遍历方式&#xff1a;先序遍历、中序遍历和后序遍历。 1. 计算叶子节点数 叶子节点是指没有子节点的节点&#xff0c;也就是树中的末端…...

关于 1 + 1 = 2 的证明

1 1 2 首先是皮亚诺的自然数公理 意大利数学家皮亚诺提出的关于自然数的 5 5 5 条公理如下&#xff08;定义 S ( x ) S(x) S(x) 为自然数 x x x 的后继&#xff09;&#xff1a; 0 0 0 是自然数每一个自然数 n n n 都有一个自然数后继记为 S ( n ) S(n) S(n) 0 0 0 不是…...

【C++】——内存管理

目录 回忆C语言内存管理C内存管理方式new deleteoperator new与operator delete函数new和delete的实现原理定位new表达式(placement-new)malloc/free和new/delete的区别 回忆C语言内存管理 void Test() {int* p1 (int*)malloc(sizeof(int));free(p1);int* p2 (int*)calloc(4…...

Jmeter录制HTTPS脚本

Jmeter录制HTTPS脚本 文章目录 添加“HTTP代理服务器”设置浏览器代理证书导入存在问题 添加“HTTP代理服务器” 设置浏览器代理 保持端口一致 证书导入 点击一下启动让jmeter自动生成证书&#xff0c;放在bin目录下&#xff1a; 打开jmeter的SSL管理器选择刚刚生成的证书&…...

Linux 的Centos 7 安装 启动 Google Chrome

我之所以在Centos上安装Chrome主要是为了让Web自动化测试工具可以启动Chrome&#xff0c;协助我做一些工作。 参考&#xff1a;centos7 google-chrome的安装与启动 - 简书 1.安装chrome逻辑 1. 下载安装包 2. 安装 3. 启动 》这就是在window上的逻辑&#xff0c;只是用命令行…...

DNS WEB HTTP

DNS与域名 网络是基于 TCP/IP 协议进行通信和连接的。 每一台主机都有唯一的标识&#xff0c;用于区别在网络上成千上万个用户和计算机。即固定的IP地址&#xff08;32位二进制数转换成为十进制数——点分十进制&#xff09;。每一个与网络相连接的计算机和服务器都被指派一个…...

微信小程序animation动画,微信小程序animation动画无限循环播放

需求是酱紫的&#xff1a; 页面顶部的喇叭通知&#xff0c;内容不固定&#xff0c;宽度不固定&#xff0c;就是做走马灯&#xff08;轮播&#xff09;效果&#xff0c;从左到右的走马灯&#xff08;轮播&#xff09;&#xff0c;每播放一遍暂停 1500ms &#xff5e; 2000ms 刚…...

node.js

什么是Node.js Node.js 是一个免费的、开源的、跨平台的 JavaScript 运行时环境,使开发者可以搭建服务器端的JavaScript应用程序 概念: 使用Node.js编写后端程序 // 支持前端工程化 ​ 后端程序&#xff1a;提供接口和数据 &#xff0c;网页资源 ​ 前端工程化:对代码压缩&…...

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息 第七章 小程序远程数据请求、获取个人信息 文章目录 【微信小程序创作之路】- 小程序远程数据请求、获取个人信息前言一、远程数据请求1.本地环境2.正式域名 二、获取用户个人信息1.展示当前用户的身份信息2.获取用…...

XML基础知识讲解

文章目录 1. xml简介2. xml快速入门3. xml的元素(标签)定义4. xml标签的命名规范5. xml的属性定义和注释6. 转义字符7. CDATA区8. xml的处理指令9. xml的约束 1. xml简介 XML&#xff08;eXtensible Markup Language&#xff09;是一种用于描述数据的标记语。 它以纯文本的方…...

(十二)大数据实战——hadoop集群之HDFS高可用自动故障转移

前言 本节内容主要介绍一下hadoop集群下实现HDFS高可用的自动故障转移&#xff0c;HDFS高可用的自动故障转移主要通过zookeeper实现故障的监控和主节点的切换。自动故障转移为 HDFS 部署增加了两个新组件&#xff1a;ZooKeeper 和 ZKFailoverController &#xff08;ZKFC&…...

Ubuntu下载deb包及其依赖包

一、简介 有时我们需要在离线环境使用提前准备好的deb包&#xff0c;然后只需要在新机器使用dpkg -i安装即可。 二、命令 apt-get download $(apt-rdepends &#xff08;需要下载的包&#xff0c;可以有多个&#xff09; | grep -v "^ " | sed s/debconf-2.0/debco…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...