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)
      

        

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

  • 相关阅读:
    接口测试的维度
    python每个文件都需要顶部注释,那今天介绍一个方法,只需要设置一次,下次新建python文件后,注释自动出现在顶部的方法
    反射的4个方法
    python3 导入包总提示no moudle named xxx
    http.client.ResponseNotReady: Request-sent
    jmeter Linux环境执行总报错 cannot allocate memory
    xpath提取包含标签的所有文本内容
    使用python批量插入wordpress-从理清表结构开始
    Cloudways托管迁移中遇到的问题
    wordpress后台数据库表分析
  • 原文地址:https://www.cnblogs.com/gzhbk/p/14922489.html
Copyright © 2011-2022 走看看