(同花顺量化)500日内至少2次涨停_、前25天有涨停、至少5根均线重合的股票

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

问财量化选股策略逻辑

首先,我们定义一个函数来筛选至少5根均线重合的股票:

def has_consecutive_moving_average(candles):
    # 计算股票的均线
    moving_averages = candles['close'].rolling(window=5).mean()
    # 找到至少5根均线重合的股票
    consecutive_moving_averages = moving_averages.where(moving_averages.diff() > 0, other=np.nan)
    consecutive_moving_averages = consecutive_moving_averages.where(consecutive_moving_averages > 0, other=np.nan)
    consecutive_moving_averages = consecutive_moving_averages.where(consecutive_moving_averages > 0, other=np.nan)
    consecutive_moving_averages = consecutive_moving_averages.where(consecutive_moving_averages > 0, other=np.nan)
    consecutive_moving_averages = consecutive_moving_averages.where(consecutive_moving_averages > 0, other=np.nan)
    return consecutive_moving_averages.notnull().sum() >= 5

接下来,我们定义一个函数来筛选前25天有涨停的股票:

def has_stocks_with_sudden_gain(candles):
    # 计算股票的涨幅
    gains = candles['close'].pct_change()
    # 筛选出前25天涨幅超过20%的股票
    stocks_with_sudden_gain = gains.where(gains > 0.2, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    return stocks_with_sudden_gain.notnull().sum() >= 25

最后,我们定义一个函数来筛选500日内至少2次涨停的股票:

def has_stocks_with_sudden_gain多次(candles):
    # 计算股票的涨幅
    gains = candles['close'].pct_change()
    # 筛选出500日内涨幅超过20%的股票
    stocks_with_sudden_gain = gains.where(gains > 0.2, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    # 筛选出至少2次涨幅超过20%的股票
    stocks_with_sudden_gain_multiple = stocks_with_sudden_gain.where(stocks_with_sudden_gain > 0, other=np.nan)
    stocks_with_sudden_gain_multiple = stocks_with_sudden_gain_multiple.where(stocks_with_sudden_gain_multiple > 0, other=np.nan)
    stocks_with_sudden_gain_multiple = stocks_with_sudden_gain_multiple.where(stocks_with_sudden_gain_multiple > 0, other=np.nan)
    stocks_with_sudden_gain_multiple = stocks_with_sudden_gain_multiple.where(stocks_with_sudden_gain_multiple > 0, other=np.nan)
    stocks_with_sudden_gain_multiple = stocks_with_sudden_gain_multiple.where(stocks_with_sudden_gain_multiple > 0, other=np.nan)
    return stocks_with_sudden_gain_multiple.notnull().sum() >= 2

选股逻辑分析

以上三个函数分别筛选了至少5根均线重合的股票、前25天有涨停的股票和500日内至少2次涨停的股票。这些筛选条件可以有效地过滤掉一些不具备投资价值的股票,从而提高最终选出的股票的质量。

有何风险?

这些筛选条件可能会过滤掉一些具备投资价值的股票,例如在市场回调期间,股票可能会经历一段时间的下跌,导致均线重合、前25天有涨停或500日内至少2次涨停的股票数量减少。因此,在使用这些筛选条件进行投资决策时,需要谨慎考虑市场风险。

如何优化?

为了更好地优化这些筛选条件,可以考虑加入更多的因素,例如股票的市值、盈利能力、财务状况等。此外,可以使用更多的数据来源,例如财务

如何进行量化策略实盘?

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

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

模板如何使用?

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

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

94c5cde12014f99e262a302741275d05.png

收益&风险
源码

评论