(同花顺量化)500日内至少2次涨停_、圆弧形、至少5根均线重合的股票

用户头像神盾局量子研究部
2023-08-31 发布

问财量化选股策略逻辑

  • 至少5根均线重合的股票
  • 圆弧形
  • 500日内至少2次涨停

选股逻辑分析

  • 这个策略基于均线和形态的结合,寻找股票在短期内有强烈的上涨趋势。
  • 首先,筛选出至少5根均线重合的股票,这表明这些股票的短期和中期趋势较为一致,有利于上涨。
  • 然后,寻找股票形态上的圆弧形,这表明股票价格在短期内有明显的上涨趋势,并且可能即将突破。
  • 最后,筛选出500日内至少2次涨停的股票,这表明股票在短期内有较强的爆发力和上涨动力。

有何风险?

  • 这个策略可能过于侧重于短期趋势,而忽略了长期趋势的影响。
  • 如果股票形态上的圆弧形不够明显,或者股票在短期内没有达到2次涨停的目标,那么这个策略可能会失效。
  • 在使用这个策略时,需要密切关注市场动态和股票的基本面,以避免因为市场变化而带来的风险。

如何优化?

  • 可以考虑加入更多均线的筛选条件,以更准确地判断股票的趋势。
  • 可以尝试使用其他形态来代替圆弧形,以提高策略的准确性和可靠性。
  • 可以考虑加入更多的筛选条件,例如股票的市值、市盈率等,以更全面地评估股票的价值和风险。

最终的选股逻辑

  • 筛选出至少5根均线重合的股票
  • 筛选出形态上符合圆弧形的股票
  • 筛选出500日内至少2次涨停的股票
  • 考虑加入更多均线的筛选条件
  • 考虑加入其他形态来代替圆弧形
  • 考虑加入更多的筛选条件,例如股票的市值、市盈率等

python代码参考

  • import talib

  • import pandas as pd

  • import numpy as np

  • def check_ma_convergence(df, ma_list):

    • for i in range(1, len(ma_list)):
    • if ma_list[i] > ma_list[i-1]:
      
    •     if df['close'].iloc[i] > df['close'].iloc[i-1] * (1+ma_list[i]):
      
    •         return True
      
    • else:
      
    •     if df['close'].iloc[i] < df['close'].iloc[i-1] * (1-ma_list[i]):
      
    •         return True
      
    • return False
  • def check_rounding(df):

    • for i in range(1, len(df)):
    • if df['close'].iloc[i] - df['close'].iloc[i-1] > 0.001:
      
    •     if df['close'].iloc[i] - df['close'].iloc[i-1] > df['close'].iloc[i-1] * 0.05:
      
    •         return True
      
    • else:
      
    •     if df['close'].iloc[i] - df['close'].iloc[i-1] < -0.001:
      
    •         return True
      
    • return False
  • def get_rounding(df):

    • df['rounding'] = np.where(df['close'].diff() > 0, 1, np.where(df['close'].diff() < 0, -1, 0))
    • df['rounding'] = np.where(df['rounding'] > 0.05, 1, np.where(df['rounding'] < -0.05, -1, df['rounding']))
    • df['rounding'] = np.where(df['rounding'] > 0, 1, np.where(df['rounding'] < 0, -1, df['rounding']))
    • df['rounding'] = np.where(df['rounding'] > 0.001, 1, np.where(df['rounding'] < -0.001, -1, df['rounding']))
    • return df
  • def get_ma(df, ma_list):

    • ma = pd.Series(df['close'].rolling(window=ma_list).mean(), name='ma_' + ma_list[0])
    • for i in range(1, len(ma_list)):
    • ma = pd.Series(ma * (1+ma_list[i]), name='ma_' + ma_list[i])
      
    • return ma
  • def get_rounding_ma(df):

    • df = get_rounding(df)
    • ma_list = [10, 20, 30, 40,

如何进行量化策略实盘?

请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

select_sentence = '市值小于100亿' #选股语句。

模板如何使用?

点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。

如果有任何问题请添加 下方的二维码进群提问。

94c5cde12014f99e262a302741275d05.png

收益&风险
源码

评论