(iwencai量化)反包_、昨天换手率>8%、至少5根均线重合的股票

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

问财量化选股策略逻辑

首先,我们选择至少5根均线重合的股票,这可以表明股票的走势相对稳定,且有较强的支撑和阻力。接下来,我们选择昨天换手率大于8%的股票,这表明股票的交易活跃度较高,可能存在较大的市场机会。最后,我们选择反包的股票,这表明股票在回调之后能够迅速反弹,具有较强的上涨动力。

选股逻辑分析

这个策略的逻辑是基于技术分析和市场行为分析的。首先,我们选择均线重合的股票,这表明股票的走势相对稳定,且有较强的支撑和阻力。接下来,我们选择昨天换手率大于8%的股票,这表明股票的交易活跃度较高,可能存在较大的市场机会。最后,我们选择反包的股票,这表明股票在回调之后能够迅速反弹,具有较强的上涨动力。

然而,这个策略也存在一定的风险。首先,如果股票的均线重合程度过高,可能会导致股票的走势过于平缓,缺乏爆发力。其次,如果股票的昨天换手率过高,可能会导致股票的交易过于活跃,存在较大的市场风险。最后,如果股票在回调之后无法反包,可能会导致股票的走势向下,带来较大的损失。

如何优化?

为了优化这个策略,我们可以考虑以下几点:

  1. 增加均线的数量,例如选择10根均线重合的股票,这可以更好地反映股票的走势趋势。

  2. 调整昨天换手率的阈值,例如选择昨天换手率大于5%的股票,这可以更好地反映股票的市场活跃度。

  3. 调整反包的条件,例如选择在回调之后反弹超过10%的股票,这可以更好地反映股票的上涨动力。

最终的选股逻辑

最终,我们的策略是选择至少10根均线重合、昨天换手率大于5%且能够反包的股票。具体实现方式如下:

import talib

def get_stock_info(ticker):
    # 获取股票的基本信息
    stock_info = yf.Ticker(ticker)
    stock_info = stock_info.info
    return stock_info

def get_moving_average(ticker, n):
    # 获取股票的n日移动平均线
    stock_info = get_stock_info(ticker)
    data = stock_info['Adj Close']
    ma = talib.MA(data, n)
    return ma

def get昨天换手率(ticker):
    # 获取股票昨天的换手率
    stock_info = get_stock_info(ticker)
    data = stock_info['Volume']
    close = stock_info['Adj Close']
    yesterday_volume = data[-1]
    yesterday_close = close[-1]
    yesterday_turnover = yesterday_volume / yesterday_close
    return yesterday_turnover

def get_stock_status(ticker):
    # 获取股票的状态
    ma10 = get_moving_average(ticker, 10)
    ma20 = get_moving_average(ticker, 20)
    ma50 = get_moving_average(ticker, 50)
    ma100 = get_moving_average(ticker, 100)
    yesterday_turnover = get_yesterday_turnover(ticker)
    if ma10 > ma20 and ma10 > ma50 and ma10 > ma100 and yesterday_turnover > 0.05:
        status = 'strong'
    elif ma10 > ma20 and ma10 > ma50 and ma10 > ma100 and yesterday_turnover > 0.03:
        status = 'moderate'
    else:
        status = 'weak'
    return status

def get_yesterday_turnover(ticker):
    # 获取股票昨天的换手率
    stock_info = get_stock_info(ticker)
    data = stock_info['Volume']
    close = stock_info['Adj Close']
    yesterday_volume = data[-1]
    yesterday_close = close[-1]
    yesterday_turnover = yesterday_volume / yesterday_close
    return yesterday_turnover

def get_stock_list():
    # 获取所有股票的代码
    stock_codes = yf.tickerусacje().list
    return stock_codes

def get_final_list():
    # 获取最终的股票列表
    stock_list = get_stock_list()
    final_list = []
    for ticker in stock_list:
        status = get_stock_status(ticker)
        if status == 'strong':
            final_list.append(ticker)
    return final_list

以上代码实现了我们最终的选股策略逻辑。具体来说,我们首先获取股票的基本信息,然后获取股票的n日移动平均线,接着获取股票昨天的换手率,最后根据策略的逻辑判断股票的状态,并将符合条件的股票加入最终的股票列表中。

如何进行量化策略实盘?

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

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

模板如何使用?

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

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

94c5cde12014f99e262a302741275d05.png

收益&风险
源码

评论