(iwencai量化策略)竞价涨幅>-2<5_、昨天龙虎榜、至少5根均线重合的股票

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

问财量化选股策略逻辑

首先,我们需要找到至少5根均线重合的股票。这可以通过计算股票的均线数量来实现。我们可以使用以下代码:

def get均线数量(data):
    # 计算股票的均线数量
    num_lines = 0
    for i in range(5, 0, -1):
        if data['close'].rolling(i).mean().count() > 0:
            num_lines += 1
    return num_lines

接下来,我们需要找到昨天龙虎榜中出现的股票。这可以通过查询龙虎榜数据来实现。我们可以使用以下代码:

def get_yesterday_bars(data):
    # 获取昨天的龙虎榜数据
    bars = data['date'].where(data['date'] == pd.Timedelta(days=1))
    return bars

然后,我们需要找到竞价涨幅大于-2且小于5的股票。这可以通过筛选数据来实现。我们可以使用以下代码:

def get_bars_with_positive_price_change(data):
    # 获取竞价涨幅大于-2且小于5的股票
    bars = data[(data['pre_close'] > data['close'] - 2) & (data['pre_close'] < data['close'] + 5)]
    return bars

最后,我们需要将这些条件结合起来,找到至少5根均线重合的昨天龙虎榜中出现的竞价涨幅大于-2且小于5的股票。我们可以使用以下代码:

def get_qualified_bars(data):
    # 获取至少5根均线重合的昨天龙虎榜中出现的竞价涨幅大于-2且小于5的股票
    bars = get_yesterday_bars(data)
    bars = bars.merge(get_bars_with_positive_price_change(data), on='date')
    bars = bars.merge(get均线数量(bars), on='date')
    bars = bars[bars['num_lines'] >= 5]
    return bars

选股逻辑分析

该策略的逻辑是,首先计算股票的均线数量,然后获取昨天的龙虎榜数据,再筛选出竞价涨幅大于-2且小于5的股票,最后将这些条件结合起来,找到至少5根均线重合的昨天龙虎榜中出现的竞价涨幅大于-2且小于5的股票。

该策略的优点是能够筛选出符合条件的股票,从而缩小股票池。缺点是需要计算多个指标,可能会增加计算时间。此外,该策略可能会漏掉一些符合条件的股票,因为筛选条件比较严格。

有何风险?

该策略可能会漏掉一些符合条件的股票,因为筛选条件比较严格。此外,该策略可能会将一些不符合条件的股票纳入股票池,从而增加投资风险。

如何优化?

为了优化该策略,我们可以考虑增加筛选条件,例如筛选出成交量较大的股票或盈利能力较强的股票。此外,我们还可以考虑使用其他技术指标来筛选股票,例如MACD或RSI。

最终的选股逻辑

最终的选股逻辑如下:

def get_qualified_bars(data):
    # 获取至少5根均线重合的昨天龙虎榜中出现的竞价涨幅大于-2且小于5的股票
    bars = get_yesterday_bars(data)
    bars = bars.merge(get_bars_with_positive_price_change(data), on='date')
    bars = bars.merge(get均线数量(bars), on='date')
    bars = bars[bars['num_lines'] >= 5]
    bars = bars.merge(get_volume(bars), on='date')
    bars = bars[bars['volume'] > 1000000]
    bars = bars.merge(get_profit(bars), on='date')
    bars = bars[bars['profit'] > 0.01]
    return bars

其中,get_volumeget_profit函数分别计算股票的成交量和盈利能力。这些函数的代码可以参考以下伪代码:

def get_volume(data):
    # 计算股票的成交量
    bars = data['date'].where(data['date'] == pd.Timedelta(days=1))
    volume = bars['volume'].sum()
    return volume

def get_profit(data):
    # 计算股票的盈利能力
    bars = data['date'].where(data['date'] == pd.Timedelta(days=1))
    close = bars['close']
    open = bars['open']
    profit = close - open
    return profit

如何进行量化策略实盘?

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

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

模板如何使用?

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

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

94c5cde12014f99e262a302741275d05.png

收益&风险
源码

评论