量化交易学习笔记五 - 一个选股小测试

2023-12-07 21:59

本文主要是介绍量化交易学习笔记五 - 一个选股小测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇已经做了批量股票日k数据获取并保存的窗口,今天就来结合实际情况利用下这些数据做个小测试。

前几天有朋友问我类似000623吉林敖东4/19这根跳空长上影出现后,类似的k线后续会如何演绎,那就正好以这个条件来做个选股测试,返回一定时间范围内出现这样形态k线的股票代码及出现的日期。

 形态一定要量化成数据才可操作,翻译一下:

'''
1.次日跳空高开(次日开盘价>前日收盘价[幅度3%以上]);
2.次日收长上影,阳线(次日最高价/次日收盘价[幅度3.5%以上],次日收盘价>次日开盘价)
3.次日成交量放大(次日成交量>前日成交量[幅度3倍以上])
'''

有了明确目标,就开干:

1.数据,之前已经按代码为文件名将tushare获取的数据逐个保存在目录下。所以思路就是遍历该目录所有文件,pd读取文件,逐行遍历pd数据,符合条件的记录股票代码及日期

import os
import pandas as pd
import numpy as npdef analysisfiles(_path=""):if _path == "":print("目录未设定")return_result = np.empty((0, 3))  #为结果建立空数组_files = os.listdir(_path)print("共",len(_files),"文件待处理...")#遍历目录for file in _files:#数据预处理_pd = pd.read_csv(_path + "/" + file)#_pd['trade_date'] = pd.to_datetime(_pd['trade_date']) #转换为日期类型,此处会转换失败所以不操作了_pd = _pd.sort_values('trade_date',ascending=True) #按日期升序排列#数据分析'''1.次日跳空高开(次日开盘价>前日收盘价[幅度3%以上]);2.次日收长上影,阳线(次日最高价>次日收盘价[幅度3.5%以上],次日收盘价>次日开盘价)3.次日成交量放大(次日成交量>前日成交量[幅度3倍以上])'''for i in range(len(_pd)):#最后一条数据不处理if i == len(_pd)-1:break#这里用的效率最低下的下标循环if _pd.iloc[i+1]['open']>_pd.iloc[i]['close'] and _pd.iloc[i+1]['open']/_pd.iloc[i]['close']>=1.03 :#print("满足条件1")if _pd.iloc[i+1]['close']>=_pd.iloc[i+1]['open'] and _pd.iloc[i+1]['high']/_pd.iloc[i+1]['close']>=1.035 :#print("满足条件2")if _pd.iloc[i+1]['vol']/_pd.iloc[i]['vol']>=3:#print("满足条件3")#同时满足所有条件,记录进数组。同时记录了一下出现跳空k线后7日的收盘价涨幅if i+8 < len(_pd):new_row = np.array([_pd.iloc[i]['ts_code'],_pd.iloc[i]['trade_date'],round(_pd.iloc[i+8]['close']/_pd.iloc[i+1]['close']-1,2)*100])else:new_row = np.array([_pd.iloc[i]['ts_code'],_pd.iloc[i]['trade_date'],"nan"])_result = np.vstack([_result, new_row])breakprint("分析中..."+str(round(_pi/len(_files)*100,0))+"%")#返回结果print("end")print(_result)

得到结果:

[['000785.SZ' '20230113' '4.0']
 ['000863.SZ' '20230413' 'nan']
 ['002140.SZ' '20230406' 'nan']
 ['002479.SZ' '20230330' '1.0']
 ['002661.SZ' '20230112' '1.0']
 ['002755.SZ' '20230210' '-1.0']
 ['002807.SZ' '20230117' '-3.0']
 ['002817.SZ' '20230413' 'nan']
 ['002819.SZ' '20230201' '-1.0']
 ['600109.SH' '20230217' '-4.0']
 ['600193.SH' '20230331' '-5.0']
 ['600405.SH' '20230203' '4.0']
 ['600446.SH' '20230109' '0.0']
 ['600753.SH' '20230118' '11.0']
 ['603079.SH' '20230206' '-4.0']
 ['603158.SH' '20230301' '-12.0']
 ['603982.SH' '20230120' '5.0']]

经过验证,还是结果还是正确的。从结果走势也可以看到,基本涨跌对半开,所以光这一个异动并不能说明什么问题,还是需要结合更多指标来看

这里的知识点主要有以下几点:

1.文件遍历。这个比较简单

2.pandas的framedata对象遍历。我选了最直观,但是效率最低下的下标遍历方法。如果遍历1年的股票日k,需要10来分钟。后续还大有优化空间。

3.把传统的描述语言转化成清晰的数据

另外也提下碰到的一些问题,望大神解答:

主文件a中用tkinter定义了窗体win,及进度条控件。文件a中调用b文件定义的函数b(),如何在b()中反过来刷新win窗体中的进度条?

好了,下次我们尽量多尝试些指标,也测试下多指标融合的选股方法,要结合backtrader一起来看了

这篇关于量化交易学习笔记五 - 一个选股小测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467491

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示