2-深度学习挖短线股1

选短线个股的流程

(1)数据预处理,根据短线个股筛选标准,给个股日线数据打标。
(2)模型训练,针对每只股票,训练得到分类模型。
(3)结果预测,根据训练得到的模型,计算股票每日的分类预测值。
(4)策略回测,基于股票每日的分类预测值,回测策略收益情况。
(5)个股筛选,如果策略验证可行,即可根据模型筛选出当前符合买入条件的股票。

数据预处理

       将短线个股的筛选问题处理为使用深度学习解决的分类问题,目标是筛选出10个交易日内,上涨幅度大于10%的股票。这里选择2017年12月31日及之前的数据作为训练数据,2018年1月1日之后的数据用于做预测。

股票范围选择

        为了应用深度学习算法,需要有足够的训练数据。为此,选择2016年1月1日至2017年12月31日内日线数量多于300的个股,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Jun  4 10:42:49 2025@author: Administrator
"""
import pandas as pd  # 导入pandas库,用于数据处理和分析stk_code_file = './stk_data/stk_list.csv'  # 定义股票代码文件的路径
stk_list = pd.read_csv(stk_code_file)['code'].tolist()  # 读取股票代码文件,提取code列并转换为列表pd_stocks_list = []  # 初始化符合条件的股票代码列表
for stk_code in stk_list:  # 遍历所有股票代码df = pd.read_csv('./stk_data/d/{}.csv'.format(stk_code))  # 读取单只股票的日线数据# 筛选出2016年到2017年的数据,并检查交易天数是否超过300天if df[(df['date'] >= '2016-01-01') & (df['date'] <= '2017-12-31')].shape[0] > 300:pd_stocks_list.append(stk_code)  # 如果符合条件,将股票代码添加到结果列表out_df = pd.DataFrame(pd_stocks_list, columns = ['code'])  # 将结果列表转换为DataFrame
out_df.to_csv('./stk_data/dp_stock_list.csv', index = False)  # 将结果保存为CSV文件,不包含行索引

训练数据计算

选择2017年12月31日及之前的数据作为训练数据,计算训练数据的输入特征及分类标签。将10个交易内上涨幅度超过10%的股票标记为类别1,其他股票标记为类别0。为了给深度学习模型提供更多的输入维度,可以基于日线数据的开盘价、收盘价、最高价、最低价、成交量等进行扩展。这里只扩展5、10、20、30、60、120、240均线及均量线数据,后续可根据需要计算MACD、KDJ、RSI等指标数据,进一步扩展输入维度。

程序的主要处理流程是:首先定义了买入信号的计算逻辑,即未来 N 个交易日内涨幅达到 INC_PER 则标记为买入信号;然后读取股票代码列表,逐个处理每只股票的数据,计算多种移动平均线指标;最后根据预设条件生成买入信号,并将所有处理后的数据保存到新文件中。注释部分还列出了其他可扩展的技术指标计算函数,方便后续扩展使用。

# -*- coding: utf-8 -*-
"""
Created on Thu Jun  5 08:54:22 2025@author: Administrator
"""
from __future__ import (absolute_import, division, print_function,unicode_literals)
import datetime  # 用于datetime对象操作
import os.path  # 用于管理路径
import sys  # 用于在argvTo[0]中找到脚本名称
import pandas as pd
import numpy as np
# 引入topq_talib,计算技术指标
script_path = os.path.dirname(os.path.abspath(sys.argv[0]))
talib_path = os.path.join(script_path, '../../TQDat/TQDown2020v1/topqt/')
sys.path.append(talib_path)
import topq_talib1 as tt # 类别标准:N个交易日内上涨INC_PER
N = 10
INC_PER = 0.1# n 天内上涨inc_per,生成买入信号
def calc_buy_signal(df, n, inc_per):df = df[df.notnull().T.all()]  # 过滤掉包含缺失值的行buy = np.zeros(df.shape[0])  # 初始化买入信号数组,全部设为0df.insert(df.shape[1], 'buy', buy)  # 在DataFrame中插入buy列df = df.copy()  # 复制DataFrame,避免后续操作影响原数据row_i = 0for row_i in range(df.shape[0]):  # 遍历每一行for n_i in range(n):  # 在未来n天内查找# 如果未来某天的收盘价相比当前行的收盘价涨幅超过inc_per,则标记为买入信号if row_i + n_i + 1 < df.shape[0] and \df.iloc[row_i + n_i + 1].at['close'] - df.iloc[row_i].at['close'] > inc_per * df.iloc[row_i].at['close']:df.loc[df.index[row_i], 'buy'] = 1  # 设置买入信号为1break  # 找到符合条件的日期后跳出循环return df# 读入股票代码
stk_code_file = './stk_data/dp_stock_list.csv'
stk_pools = pd.read_csv(stk_code_file, encoding = 'gbk')  # 读取股票代码池
# 对每个股票添加衍生数据
for stk_code in stk_pools['code']:  # 遍历每个股票代码# 读入数据input_file = './stk_data/d/' + stk_code + '.csv'if not os.path.exists(input_file):  # 检查文件是否存在continue  # 不存在则跳过当前股票df = pd.read_csv(input_file, index_col = 0)  # 读取股票数据,使用第一列作为索引df = df.sort_index(ascending = True)  # 按索引升序排列数据# 计算移动平均线(MA)ma_list = [5, 10, 20, 30, 60, 120, 240]for i in ma_list:df = tt.MA_n(df, i)  # 计算不同周期的移动平均线# 计算成交量移动平均线(vol_MA)vol_ma_list = [5, 10, 20, 30, 60, 120, 240]for i in vol_ma_list:df = tt.vol_MA_n(df, i)  # 计算不同周期的成交量移动平均线'''可扩展指标#BBANDSdf = tt.BBANDS_UpLow(df, 20)#MACDdf = tt.MACD020(df, 12, 26)#KDJdf = tt.KDJ(df, 9, 3)#RSIdf = tt.RSI(df, 14)# A/Dad_list = [5, 10, 20, 30, 60, 120, 240]for i in ad_list:df = tt.ACCDIST(df, i)# ATRcdatr_list = [5, 10, 20, 30, 60, 120, 240]for i in atr_list:df = tt.ATR(df, i)'''df = calc_buy_signal(df, N, INC_PER)  # 计算买入信号# 写出文件output_file = './baostock/data_ext/' + stk_code +'.csv'df.to_csv(output_file)  # 将处理后的数据保存到新文件print(stk_code + ' done!')  # 打印处理完成的股票代码

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

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

相关文章

【数据分析】探索婴儿年龄变化对微生物群落(呼吸道病毒和细菌病原体)结构的影响

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍1. 混合效应逻辑回归模型2. 随机森林模型3. Maaslin2 分析加载R包数据下载导入数据数据预处理混合效应逻辑回归模型分析微生物群落结构随年龄的变化随机森林模型预测病原体定植Maas…

实战:子组件获取父组件订单信息

最佳实践建议 优先使用 props&#xff1a;适合父子组件直接通信&#xff0c;数据流向清晰复杂场景用 eventBus&#xff1a;跨组件通信推荐使用 mitt 库避免过度使用 $parent&#xff1a;会导致组件耦合度高&#xff0c;难以维护provide/inject 适用于跨层级&#xff1a;如主题…

Spring Security深度解析:构建企业级安全框架

Spring Security深度解析:构建企业级安全框架 本文将深入探讨Spring Security安全框架的核心原理、架构设计和实际应用,帮助开发者全面掌握企业级应用安全防护技术。 目录 Spring Security概述核心架构与原理认证机制详解授权机制详解核心组件分析配置与集成高级特性应用安全…

计算矩阵A和B的乘积

根据矩阵乘法规则&#xff0c;编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写&#xff0c;函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…

《Brief Bioinform》: 鼠脑单细胞与Stereo-seq数据整合算法评估

一、写在前面 基因捕获效率、分辨率一直是空间转录组细胞类型识别的拦路虎&#xff0c;许多算法能够整合单细胞(single-cell, sc)或单细胞核(single-nuclear, sn)数据与空间转录组数据&#xff0c;从而帮助空转数据的细胞类型注释。此前我们介绍过近年新出炉的Stereo-seq平台&…

camera功能真的那么难用吗

背景 Android开发工作过程中&#xff0c;经常需要用到camera相关能力&#xff0c;比如&#xff1a;人脸识别&#xff0c;ai识别&#xff0c;拍照预览&#xff0c;摄像头录制等等需求。都需要使用到camera&#xff0c;且需要拿到camera的预览数据。但是每次开发这块代码都比较繁…

USART 串口通信全解析:原理、结构与代码实战

文章目录 USARTUSART简介USART框图USART基本结构数据帧起始位侦测数据采样波特率发生器串口发送数据 主要代码串口接收数据与发送数据主要代码 USART USART简介 一、USART 的全称与基本定义 英文全称 USART&#xff1a;Universal Synchronous Asynchronous Receiver Transmi…

LeetCode 152. 乘积最大子数组 - 动态规划解法详解

文章目录 问题描述解题思路动态规划状态定义状态转移方程完整代码实现复杂度分析示例解析关键点说明总结问题描述 给定一个整数数组 nums,请找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组对应的乘积。 示例: 输入: [2,3,-2,4] 输出: 6 解…

Python: 操作 Excel折叠

💡Python 操作 Excel 折叠(分组)功能详解(openpyxl & xlsxwriter 双方案) 在处理 Excel 报表或数据分析时,我们常常希望通过 折叠(分组)功能 来提升表格的可读性和组织性。本文将详细介绍如何使用 Python 中的两个主流 Excel 操作库 —— openpyxl 和 xlsxwriter …

28、元组的遍历

const_cast 只能用于指针或引用类型&#xff0c;而不能用于基本类型如 int。 在的代码中&#xff0c;试图将 i 转换为 const_cast<int>(i)&#xff0c;这是不合法的。 可以使用模板函数来获取元组中的元素&#xff0c;而不是使用 const_cast。以下是修正后的代码&#x…

sendDefaultImpl call timeout(rocketmq)

rocketmq 连接异常 senddefaultimpl call timeout-腾讯云开发者社区-腾讯云 第一种情况&#xff1a; 修改broker 的配置如下&#xff0c;注意brokerIP1 这个配置必须有&#xff0c;不然 rocketmq-console 显示依然是内网地址 caused by: org.apache.rocketmq.remoting.excep…

【仿生机器人】仿生机器人智能架构:从感知到个性的完整设计

仿生机器人智能架构&#xff1a;从感知到个性的完整设计 仿生机器人不仅需要模拟人类的外表&#xff0c;更需要具备类人的认知、情感和个性特征。本研究提出了一个综合性的软件架构&#xff0c;实现了从环境感知到情感生成、从实时交互到人格塑造的完整智能系统。该架构突破了…

Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?

Spring Boot 的独立部署&#xff08;即打包为可执行 JAR/WAR 文件&#xff09;本身并不会直接丧失架构优势&#xff0c;但其是否体现架构价值取决于具体应用场景和设计选择。以下是关键分析&#xff1a; 一、独立部署与架构优势的关系 内嵌容器的优势保留 Spring Boot 独立部署…

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…

2025年6月3日面试总结

1. 面试官问一台机器内存或者磁盘占用99% 再点一下就挂了&#xff0c;个人刚开始反应内存不足加内存&#xff0c;磁盘不足加磁盘&#xff0c;还有啥办法&#xff0c;有些时候没干过的事一定要大胆&#xff0c;敲命令都敲不成&#xff0c;只能换磁盘了和加内存了&#xff0c;要么…

从上下文学习和微调看语言模型的泛化:一项对照研究

大型语言模型表现出令人兴奋的能力&#xff0c;但也可以从微调中表现出令人惊讶的狭窄泛化。例如&#xff0c;他们可能无法概括为简单的关系反转&#xff0c;或者无法根据训练信息进行简单的逻辑推理。这些未能从微调中概括出来的失败可能会阻碍这些模型的实际应用。另一方面&a…

解决cocos 2dx/creator2.4在ios18下openURL无法调用的问题

由于ios18废弃了旧的openURL接口&#xff0c;我们需要修改CCApplication-ios.mm文件的Application::openURL方法&#xff1a; //修复openURL在ios18下无法调用的问题 bool Application::openURL(const std::string &url) {// NSString* msg [NSString stringWithCString:…

Go 语言并发编程基础:Goroutine 的创建与调度

Go 语言的并发模型是其最显著的语言特性之一。Goroutine 是 Go 实现并发的核心机制&#xff0c;它比线程更轻量&#xff0c;调度效率极高。 本章将带你了解 Goroutine 的基本概念、创建方式以及背后的调度机制。 一、什么是 Goroutine&#xff1f; Goroutine 是由 Go 运行时&a…

网页绘制表格

说明&#xff1a; border"1"&#xff1a;设置表格边框宽度为 1 像素&#xff08;可调整数值改变边框粗细&#xff09;。cellspacing"0"&#xff1a;设置单元格间距为 0&#xff08;去除边框间的空白间隙&#xff09;。<thead>&#xff1a;定义表头区…

Python爬虫实战:研究Unirest库相关技术

一、引言 在当今信息爆炸的时代,网络数据的获取与分析变得尤为重要。Python 作为一种功能强大且易于学习的编程语言,在网络爬虫领域有着广泛的应用。Unirest 库是一个轻量级的 HTTP 客户端库,它提供了简洁的 API,使得发送 HTTP 请求变得更加容易。本论文将详细分析如何使用…