下载数数据深沪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:Python38python.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)
为了便于相互交流学习,新建了微信群,感兴趣的读者请加微信。