(同花顺量化)非科创_、换手率_2%且_9%、至少5根均线重合的股票

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

问财量化选股策略逻辑

1. 至少5根均线重合的股票

选取至少5根均线重合的股票,这可以表示股票的价格趋势较为稳定,同时也可以减少股票的波动性。

2. 换手率>2%且<9%

选取换手率在2%到9%之间的股票,这可以表示股票的流动性较好,同时也避免了过高的换手率带来的交易成本和风险。

3. 非科创

选取非科创股票,这可以避免受到科技创新板的政策影响,同时也可以减少科技创新板带来的高波动性。

选股逻辑分析

以上三个逻辑可以结合起来,形成一个综合的量化选股策略。首先,选取至少5根均线重合的股票,这可以表示股票的价格趋势较为稳定,同时也可以减少股票的波动性。其次,选取换手率在2%到9%之间的股票,这可以表示股票的流动性较好,同时也避免了过高的换手率带来的交易成本和风险。最后,选取非科创股票,这可以避免受到科技创新板的政策影响,同时也可以减少科技创新板带来的高波动性。

有何风险?

以上三个逻辑可以结合起来,形成一个综合的量化选股策略。但是,这种策略也存在一定的风险。首先,如果选取的均线数量过多,可能会导致策略过于复杂,难以理解。其次,如果选取的换手率过低,可能会导致股票流动性较差,无法及时买卖。最后,如果选取的股票不是非科创股票,可能会受到科技创新板政策的影响,导致股票价格波动较大。

如何优化?

为了优化以上策略,可以考虑以下几点:

  1. 适当减少均线数量,以降低策略的复杂度。
  2. 适当提高换手率的选取范围,以增加股票的流动性。
  3. 选择更加广泛的股票池,以减少受到科技创新板政策的影响。

最终的选股逻辑

以下是最终的量化选股策略逻辑:

  1. 选取至少5根均线重合的股票。
  2. 选取换手率在2%到9%之间的股票。
  3. 选择非科创股票。

python代码参考

以下是使用Python实现以上策略的代码参考:

import talib

def get_top_moving_average_scores(prices, n):
    ma_scores = []
    for i in range(n):
        ma = talib.MA(prices, timeperiod=i+1)
        ma_scores.append(ma[-1])
    return ma_scores

def get_top_trading_volume_scores(prices, n):
    trading_volume_scores = []
    for i in range(n):
        trading_volume = talib.STOCHRVI(prices, timeperiod=14, fastperiod=3, slowperiod=10, rsiperiod=7, upperband=0.9, lowerband=0.1, colorup=2, colordown=2)
        trading_volume_scores.append(trading_volume[-1])
    return trading_volume_scores

def get_top_non_科创_scores(prices, n):
    non_科创_scores = []
    for i in range(n):
        if prices[-1] < 100000000:
            non_科创_scores.append(prices[-1])
    return non_科创_scores

def get_top_scores(prices, n):
    ma_scores = get_top_moving_average_scores(prices, n)
    trading_volume_scores = get_top_trading_volume_scores(prices, n)
    non_科创_scores = get_top_non_科创_scores(prices, n)
    return ma_scores, trading_volume_scores, non_科创_scores

def get_top_scores_df(prices, n):
    ma_scores, trading_volume_scores, non_科创_scores = get_top_scores(prices, n)
    df = pd.DataFrame({'MA': ma_scores, 'Trading Volume': trading_volume_scores, 'Non_科创': non_科创_scores})
    df = df.sort_values(by=['MA'], ascending=False)
    return df

def get_top_scores_sorted(prices, n):
    ma_scores, trading_volume_scores, non_科创_scores = get_top_scores(prices, n)
    sorted_scores = ma_scores + trading_volume_scores + non_科创_scores
    return sorted_scores

def get_top_scores_sorted_df(prices, n):
    ma_scores, trading_volume_scores, non_科创_scores = get_top_scores(prices, n)
    df = pd.DataFrame({'MA': ma_scores, 'Trading Volume': trading_volume_scores, 'Non_科创': non_科创_scores})
    df = df.sort_values(by=['MA'], ascending=False)
    return df

如何进行量化策略实盘?

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

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

模板如何使用?

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

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

94c5cde12014f99e262a302741275d05.png

收益&风险
源码

评论