问财量化选股策略逻辑
首先,我们定义一个函数来筛选至少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亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


