Python量化交易学习笔记(十三)——按规则选股
2023-09-11 14:22:42 时间
下载数数据深沪6000多家公司、扩展因子、测试选股规则后,按照规则进行选股的过程。
选股规则
本文就选股规则所测试规则相同,即:
- 2日前倍量暴涨9%以上。
- 随后两日缩量调整。
- 收盘价在20日线上方。
- 20、30、60、120、250日线多头排列。
- 选股规则代码如下:
-
condition = df['value_boom_2a'].iloc[-1] and \ df['volume_2a'].iloc[-1] >= 2 * df['volume_3a'].iloc[-1] and \ df['volume_2a'].iloc[-1] > df['volume_1a'].iloc[-1] and \ df['volume_2a'].iloc[-1] > df['volume'].iloc[-1] and \ df['close'].iloc[-1] < df['close_2a'].iloc[-1] and \ df['close_1a'].iloc[-1] < df['close_2a'].iloc[-1] and \ df['close'].iloc[-1] > df['ma_20'].iloc[-1] and df['ma_30'].iloc[-1] > df['ma_60'].iloc[-1] \ > df['ma_120'].iloc[-1] > df['ma_250'].iloc[-1]
结果分析
选出的所有满足选股规则的股票,都会保存在csv文件中。
本文发布日期为2021年6月23日,当日只选出2只符合条件的股票,耗时880秒,csv文件截图如下。 -
C:\Python38\python.exe F:/test/src/com/gzh/demo49.py sz002285 sz300627 程序所耗时间: 880.6239831447601
-
通了基于历史数据的规则验证以及选股流程。这样就可以先找到靠谱的规则,然后在每日盘后自动选出满足规则的股票,再做交易。有历史数据分析做支撑,至少不会成为韭菜里最高的那一波。
-
import datetime import time import sys import os import pandas as pd # 获取当前目录 proj_path = os.path.dirname(os.path.abspath(sys.argv[0])) + '/../' if __name__ == '__main__': # 程序开始时的时间 time_start = time.time() # 读入股票代码 stk_code_file = proj_path + 'data/tdx/all_codes.csv' codes = pd.read_csv(stk_code_file, encoding='unicode_escape')['code'] code_list = [] for code in codes: input_file = proj_path + 'data/extension/d/hard_rules/' + code + '.csv' df = pd.read_csv(input_file, index_col=0) condition = df['value_boom_2a'].iloc[-1] and \ df['volume_2a'].iloc[-1] >= 2 * df['volume_3a'].iloc[-1] and \ df['volume_2a'].iloc[-1] > df['volume_1a'].iloc[-1] and \ df['volume_2a'].iloc[-1] > df['volume'].iloc[-1] and \ df['close'].iloc[-1] < df['close_2a'].iloc[-1] and \ df['close_1a'].iloc[-1] < df['close_2a'].iloc[-1] and \ df['close'].iloc[-1] > df['ma_20'].iloc[-1] and df['ma_30'].iloc[-1] > df['ma_60'].iloc[-1] \ > df['ma_120'].iloc[-1] > df['ma_250'].iloc[-1] if condition: code_list.append(code) print(code) pd.DataFrame(data=code_list, columns=['code']).to_csv(proj_path + 'data/temp/' + datetime.datetime.strftime( datetime.datetime.now(), '%Y-%m-%d-%H-%M-%S') + '.csv', index=False) # 程序结束时系统时间 time_end = time.time() print('程序所耗时间:', time_end - time_start)
为了便于相互交流学习,新建了微信群,感兴趣的读者请加微信。
相关文章
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
- Python任意参数的数量/预习课python基础
- python把一个列表画柱状图
- 零基础教你快速入门Python怎么学python入门?python新手学习路线
- 掌握Python语言能做什么?python对小白友好吗?
- 24岁非计算机专业工科妹子裸辞转行Python程序员,自学Python三个月,零基础如何系统学习python,从入门到精通?
- 【Python】自动化抢勾,python软件安装教程
- 人生苦短,我用Python!为什么现在越来越多的人转行python?
- 零基础自学Python需要多长时间从入门到精通?学python能兼职挣钱吗?怎么挣钱?
- 《Python数据挖掘:概念、方法与实践》一2.2 迈向关联规则
- 源码编译vi过程中进行配置时报“checking if compile and link flags for Python are sane... no: PYTHON DISABLED”怎么办?
- 【Python】【PyPI】twine模块打包python项目上传pypi
- 【python】+704个常用工具Python库
- python - 运算符与表达式
- 《Python Cookbook(第2版)中文版》——1.9 简化字符串的translate方法的使用
- python学习之OpenCV-Python模块的部分应用示例(生成素描图和动漫图)
- Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库
- Python使用Redis数据库
- Python学习---django多对多之Djanog默认表学习
- 华为OD机试 - 快递业务站(Python)
- 使用argparse改变python文件中的变量
- Python 框架 之 Django 绑定 MySql ,MVT 实现简单一个简单的浏览器(内附详细步骤)
- Unity 工具 之 报错 Jenkins 执行/调用 Python 脚本,报错提示 ‘python‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
- 数据结构和算法:Python实现选择排序
- 【Linux学习笔记】解决:yum install python-dev 报错(CentOS安装Python-dev库)
- [Python] 代码缩进规则