應用7:用小白量化智能體金融模塊做一個股票選股工具

應用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。▲ 我國八大沙漠空間矢量范圍概況數據概況我國八大沙漠空間矢量范圍。中國八大沙漠。分別為騰格里沙漠,塔克拉馬干沙漠,巴丹吉林沙漠,庫布奇沙漠,烏蘭布和沙漠,庫…