应用7:用小白量化智能体金融模块做一个股票选股工具
【小白量化智能体】包含有丰富的金融模块。可以让智能体写各种金融量化工具。
我用让小白量化智能体写一个股票选股工具。
我们给【小白量化智能体】一个程序生成话术。

帮我写一个 选股 的应用程序,要求能够输入。
原始股票池和保存的股票池,以及能够选择选股的周期。生成全部源代码。

【小白量化智能体】生成程序如下:

import tkinter as tk
from tkinter import ttk, filedialog, messagebox, scrolledtext
import time
import HP_global as g
import HP_tdx as htdx  # 小白量化行情模块
import HP_formula as hgs  # 小白通达信公式库
from HP_formula import *   # 小白股票指标公式函数库
#加V:  xblhzntclass StockSelectorApp:def __init__(self, root):self.root = rootself.root.title("股票选股工具")self.root.geometry("800x600")self.root.resizable(True, True)# 设置中文字体支持self.style = ttk.Style()self.style.configure("TLabel", font=("SimHei", 10))self.style.configure("TButton", font=("SimHei", 10))self.style.configure("TEntry", font=("SimHei", 10))self.style.configure("TCombobox", font=("SimHei", 10))# 初始选股公式self.initial_formula = '''XG:IF(C>=HHV(REF(H,1),10),1,0)*IF(V>=HHV(REF(V,1),10),1,0);'''self.create_widgets()def create_widgets(self):# 创建主框架main_frame = ttk.Frame(self.root, padding="10")main_frame.pack(fill=tk.BOTH, expand=True)# 原始股票池路径ttk.Label(main_frame, text="原始股票池路径:").grid(row=0, column=0, sticky=tk.W, pady=5)self.source_path_var = tk.StringVar(value="D:\\new_tdx\\T0002\\blocknew\\zxg8.blk")self.source_path_entry = ttk.Entry(main_frame, textvariable=self.source_path_var, width=60)self.source_path_entry.grid(row=0, column=1, sticky=tk.W, pady=5)ttk.Button(main_frame, text="浏览...", command=self.browse_source).grid(row=0, column=2, padx=5, pady=5)# 保存股票池路径ttk.Label(main_frame, text="保存股票池路径:").grid(row=1, column=0, sticky=tk.W, pady=5)self.save_path_var = tk.StringVar(value="D:\\new_tdx\\T0002\\blocknew\\zxg88.blk")self.save_path_entry = ttk.Entry(main_frame, textvariable=self.save_path_var, width=60)self.save_path_entry.grid(row=1, column=1, sticky=tk.W, pady=5)ttk.Button(main_frame, text="浏览...", command=self.browse_save).grid(row=1, column=2, padx=5, pady=5)# 选股周期选择ttk.Label(main_frame, text="选股周期:").grid(row=2, column=0, sticky=tk.W, pady=5)self.period_var = tk.IntVar(value=4)  # 4代表日线,默认值period_frame = ttk.Frame(main_frame)period_frame.grid(row=2, column=1, sticky=tk.W, pady=5)periods = {"5分钟线": 0,"15分钟线": 1,"30分钟线": 2,"1小时线": 3,"日线": 4,"周线": 5,"月线": 6}for idx, (text, value) in enumerate(periods.items()):ttk.Radiobutton(period_frame, text=text, variable=self.period_var, value=value).grid(row=0, column=idx, padx=8)# 选股公式编辑区域ttk.Label(main_frame, text="选股公式 (必须包含XG信号):").grid(row=3, column=0, sticky=tk.NW, pady=5)formula_frame = ttk.Frame(main_frame)formula_frame.grid(row=3, column=1, columnspan=2, sticky=tk.NSEW, pady=5)self.formula_text = scrolledtext.ScrolledText(formula_frame, height=6, width=70, wrap=tk.WORD, font=("SimHei", 10))self.formula_text.pack(fill=tk.BOTH, expand=True)self.formula_text.insert(tk.END, self.initial_formula)# 日志显示区域ttk.Label(main_frame, text="选股日志:").grid(row=4, column=0, sticky=tk.NW, pady=5)log_frame = ttk.Frame(main_frame)log_frame.grid(row=4, column=1, columnspan=2, sticky=tk.NSEW, pady=5)self.log_text = scrolledtext.ScrolledText(log_frame, height=10, width=70, wrap=tk.WORD, font=("SimHei", 10))self.log_text.pack(fill=tk.BOTH, expand=True)# 选股按钮button_frame = ttk.Frame(main_frame)button_frame.grid(row=5, column=1, pady=10)ttk.Button(button_frame, text="开始选股", command=self.start_selection).pack(pady=10)# 设置网格权重,使区域可扩展main_frame.columnconfigure(1, weight=1)main_frame.rowconfigure(3, weight=1)main_frame.rowconfigure(4, weight=2)def browse_source(self):filename = filedialog.askopenfilename(title="选择原始股票池文件",filetypes=[("通达信板块文件", "*.blk"), ("所有文件", "*.*")])if filename:self.source_path_var.set(filename)def browse_save(self):filename = filedialog.asksaveasfilename(title="保存选股结果",defaultextension=".blk",filetypes=[("通达信板块文件", "*.blk"), ("所有文件", "*.*")])if filename:self.save_path_var.set(filename)def log(self, message):"""在日志区域显示消息"""self.log_text.insert(tk.END, f"{time.strftime('%H:%M:%S')} - {message}\n")self.log_text.see(tk.END)  # 滚动到最后self.root.update_idletasks()  # 刷新界面def start_selection(self):"""开始选股过程"""# 清空日志self.log_text.delete(1.0, tk.END)# 获取用户输入source_path = self.source_path_var.get()save_path = self.save_path_var.get()period = self.period_var.get()formula = self.formula_text.get(1.0, tk.END).strip()# 验证输入if not source_path or not save_path:messagebox.showerror("错误", "请设置原始股票池和保存路径")returnif not formula:messagebox.showerror("错误", "请输入选股公式")returnif 'XG:' not in formula:if messagebox.askyesno("警告", "公式中未发现XG信号,可能导致选股失败,是否继续?"):self.log("警告:公式中未明确包含XG信号,可能无法正确选股")else:returntry:self.log("开始初始化通达信连接...")# 初始化通达信hq = htdx.TdxInit(ip='183.60.224.178', port=7709)if not hq:self.log("通达信连接失败,请检查网络或服务器地址")returnself.log(f"从 {source_path} 加载股票池...")# 获取自选股codes = htdx.getzxgfile(source_path)if not codes:self.log("未找到股票数据,请检查原始股票池文件")returnself.log(f"共加载 {len(codes)} 只股票,开始选股...")tgs1 = hgs.Tdxgs()selected_stocks = []# 遍历所有股票for i, (market, code) in enumerate(codes):try:# 显示进度if i % 10 == 0:self.log(f"正在处理第 {i+1}/{len(codes)} 只股票...")# 获取K线数据df = htdx.get_security_bars(nCategory=period, nMarket=market, code=code,nStart=0, nCount=200)if df is None or df.empty:self.log(f"股票 {code} 没有获取到数据,跳过")continue# 数据处理df.dropna(inplace=True)mydf = hgs.initmydf(df)tgs1.loaddf(mydf)mydf = tgs1.rungs(formula)  # 使用用户输入的公式# 检查选股信号if 'XG' in mydf.columns:xg = mydf['XG']else:mydf['XG'] = 0xg = mydf['XG']# 全局变量赋值(用于公式计算)global CLOSE, LOW, HIGH, OPEN, VOL, C, L, H, O, V, AMO, AMOUNTC = CLOSE = mydf['close']L = LOW = mydf['low']H = HIGH = mydf['high']O = OPEN = mydf['open']V = VOL = mydf['volume']AMO = AMOUNT = mydf['amount']# 检查最后一个交易日是否满足选股条件if xg.iloc[-1] > 0:selected_stocks.append((market, code))self.log(f"选中股票: {code}")except Exception as e:self.log(f"处理股票 {code} 时出错: {str(e)}")continue# 保存选股结果if selected_stocks:htdx.putzxgfile(selected_stocks, save_path)self.log(f"选股完成,共选中 {len(selected_stocks)} 只股票")self.log(f"结果已保存至: {save_path}")messagebox.showinfo("成功", f"选股完成,共选中 {len(selected_stocks)} 只股票")else:self.log("没有选中任何股票")messagebox.showinfo("结果", "没有选中任何股票")except Exception as e:self.log(f"选股过程出错: {str(e)}")messagebox.showerror("错误", f"选股过程出错: {str(e)}")
#加微信:xblhznt
if __name__ == "__main__":root = tk.Tk()app = StockSelectorApp(root)root.mainloop()

程序运行和执行窗口如下:
在程序中输入一个选股指标公式,自动进行选股。
在这里插入图片描述
上面给出了自动生成Python选股工具的程序的示例。

《小白量化智能体》相当一位计算机本科生免费帮你写指标公式,免费写Python策略,写Python量化工具,辅助你做机器学习、深度学习量化研究。
本身是支持中文Python语法和西文Python语法的集成开发工具,适合7岁-70岁人都适合学习中文Python编程。

今天的文章先写到这里,欢迎继续关注我的博客。后面我还介绍更多的【小白量化智能体】开发Python策略的知识。
超越自己是我的每一步!我的进步就是你的进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92327.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92327.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92327.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt Frameless Widget跨平台无边框窗口

Qt开发的窗口程序,它的标题栏样式是无法修改的,这个是系统来控制,程序可以调整标题,图标等,但是各个系统可能表现不一致,比如说标题,window10下在标题栏最左边,而UOS则在中间&#x…

使用 IntelliJ IDEA + Spring JdbcTemplate 操作 MySQL 指南

使用 IntelliJ IDEA Spring JdbcTemplate 操作 MySQL 完全指南 一、开发环境搭建(基于 IDEA) 1. 创建 Spring Boot 项目 打开 IDEA → New Project → Spring Initializr选择: Project SDK: Java 17依赖项:Spring Web, Spring…

从愤怒的小鸟来看Unity武器拖尾的特效优化

目录 前言 素材下载 介绍 官方文档 不添加拖尾的效果 添加拖尾 代码控制拖尾生成 拖尾排序问题 效果 修改拖尾高度和存活时间 效果 待机时无拖尾 效果 参考 前言 在游戏开发过程中,我们经常需要为武器添加拖尾特效,效果如下所示 Unity 自…

Web开发模式 前端渲染 后端渲染 身份认证

Web 开发模式 # 目前主流的Web 开发模式 两种 一、基于 服务器端渲染 的传统 Web开发模式 二、基于 前后端分离 的新型 Web开发模式# 服务端渲染的优缺点# 优点:1. 前端耗时少因为服务端负责动态生成 HTML内容,浏览器(包括手…

C++ WonderTrader 源码分析之浮点数处理

介绍 在WonderTrader的文件decimal.h中封装了一些用于浮点数(double)处理的工具函数,主要目的是解决浮点数精度误差带来的比较问题,以及进行一些常用运算(四舍五入、比较、取模等)。下面我们逐行详细解释每…

指针——练习

sizeof和strlensizeofsizeof是用来计算变量所占内存空间大小的,单位是字节,如果操作数是类型,计算的是使用类型创建的变量所占内存空间的大小。sizeof只关注占用内存空间的大小,不在乎内存中存放什么数据。我们来看一下这个代码&a…

华为云 Flexus 部署 coze-studio

华为云 Flexus 部署 coze-studio 一、前置 主机和程序:云主机(Flexus L ubuntu) coze-studio 部署方式:docker(提前装好的) 字节跳动开源AI智能体开发平台Coze,具备极低的硬件门槛——2核CPU…

Linux系统编程Day7 -- 基于Linux系统知识的第一个程序

往期内容回顾 自动化构建工具-make/Makefile gcc/g编译及链接 Vim工具的使用 Linux常用工具(yum与vim) ​​​​​​ Linux系统编程Day4-- Shell与权限 编写第一个Linux程序 今天我们要利用我们所学到的Linux语言来编译第一个Linux程序,在进行…

安卓264和265编码器回调编码数据写入.265或者.264文件、查看编码数据是否正确、转换为Mp4文件、查看Mp4文件信息等方法合集

一、写入文件 1、变量定义 private FileOutputStream m265FileOutputStream null; private File m265File null; private static final String HEVC_265_FILE_NAME "output.265"; // 或 .265 private static final String AVC_264_FILE_NAME "output.264&qu…

如何打造一支AI时代下的IT团队,为企业战略目标快速赋能

执行摘要 在当前AI技术迅猛发展的背景下,中国中小企业正面临着前所未有的数字化转型机遇与挑战。据最新调研显示,2025年全球AI市场规模将突破5000亿美元,而中国AI应用占比已达35%。与此同时,AI领域人才缺口高达1000万人&#xff0…

机器学习-LinearRegression

1、 关键数学知识点: 边缘概率密度 联合密度对非关注变量积分:fX(x)∫fX,Y(x,y)dyf_X(x)∫f_{X,Y}(x,y)dyfX​(x)∫fX,Y​(x,y)dy; 条件概率密度 切片 fX∣Y(x∣y)fX,Y(x,y)/fY(y)f_{X|Y}(x|y)f_{X,Y}(x,y)/f_Y(y)fX∣Y​(x∣y)fX,Y​(x,y)…

解决微信小程序中如何把npm构建的模块与主包分离,构建到分包上面

1、配置分包2、复制packge.json到分包中3、在project.config.json中增加npm配置4、终端执行npm i下载模块5、构建npm到miniprogram_npm中

自动驾驶中的传感器技术21——Camera(12)

自动驾驶摄像头的图像评测 摄像头的性能受到环境光照、天气条件、运动模糊等因素的影响,因此需要通过多方面的评测来确保其在各种场景下的可靠性。 在自动驾驶领域,图像质量评估不仅关注图像的清晰度、分辨率等传统指标,还需要结合目标检测…

AI+OA原生应用 麦当秀AIPPT

麦当秀也在WAIC期间重新定义AIOA一、什么是“原生AI”?“原生AI”可以理解为:AI系统本身具备完整的办公能力,不需要依赖传统办公软件(如Word、Excel、PPT)作为载体。也就是说,用户可以直接通过AI系统完成文…

K8S 入门操作

之前一直用kubectl这个命令操作,这些都是基于命令来操作K8S kubectl get pods kubectl get nodes kubectl get svc kubectl create deployment... kubectl expose deployment...kubectl 文档 命令行工具 (kubectl) | Kubernetes 命令参考 Kubectl Reference Doc…

蒙文OCR识别技术难点实现及应用场景剖析

一、蒙文OCR识别核心技术难点1. 文字特性带来的识别挑战连写特性:蒙文字符存在复杂的连写形式(词首、词中、词尾变形)方向特异性:传统蒙文为垂直书写(现代也有横排),需特殊方向处理字符相似性&a…

通过docker构建一个java镜像

通过docker构建一个java镜像 FROM zlyxzq/centos7:v1 VOLUME /tmp WORKDIR /app COPY /target/aa.jar /root/app/aa.jarENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneENV JAVA_HOME /usr/local/java ENV PA…

SpringBoot学习日记 Day5:解锁企业级开发核心技能

一、前言:从玩具项目到生产系统经过前四天的学习,我们已经能够开发基础功能了。但要让应用真正具备生产价值,还需要掌握数据库高级操作、事务控制、缓存优化等企业级开发技能。今天就来攻克这些关键知识点!二、JPA进阶&#xff1a…

将英文PDF文件完整地翻译成中文的4类方式

文章目录一、在线翻译服务(最快捷,适合临时查看)1.1 代表工具:1.2 操作流程(以Google翻译为例)1.3 优点和缺点1.4 适用场景二、专业软件(最佳平衡,兼顾格式与质量)2.1 代…

【分享】我国八大沙漠空间矢量范围

今天小编整理分享的是 我国八大沙漠空间矢量范围shp。▲ 我国八大沙漠空间矢量范围概况数据概况我国八大沙漠空间矢量范围。中国八大沙漠。分别为腾格里沙漠,塔克拉马干沙漠,巴丹吉林沙漠,库布奇沙漠,乌兰布和沙漠,库…