zoukankan      html  css  js  c++  java
  • Python量化交易学习笔记(十三)——按规则选股

    下载数数据深沪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)
      

        

      为了便于相互交流学习,新建了微信群,感兴趣的读者请加微信。

  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/gzhbk/p/14922489.html
Copyright © 2011-2022 走看看