(iwencai量化策略)rsi小于65_、60开头的股票、至少5根均线重合的股票

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

问财量化选股策略逻辑

在问财量化选股策略中,我们采用了至少5根均线重合的股票、60开头的股票和RSI小于65的条件进行筛选。具体来说,我们首先筛选出所有60日均线、120日均线、250日均线、30日均线和5日均线重合的股票,然后从中筛选出60日均线在最上方的股票作为最终的股票池。接着,我们对股票池中的股票进行RSI指标的计算,选择RSI小于65的股票作为最终的股票池。最后,我们对股票池中的股票进行排序,选择排名前100的股票作为最终的股票池。

选股逻辑分析

该策略的逻辑是基于技术分析和趋势跟踪,通过筛选出均线重合和RSI小于65的股票,来筛选出具有较强趋势和较低风险的股票。该策略的缺点是可能会漏掉一些具有较强趋势但短期RSI指标较高的股票,同时也可能会筛选出一些短期趋势较弱但长期RSI指标较低的股票。因此,该策略需要结合其他因素进行综合分析,以提高筛选效果。

有何风险?

该策略的最主要的风险是市场风险。由于该策略基于技术分析和趋势跟踪,因此可能会受到市场波动的影响,导致筛选出的股票表现不佳。此外,该策略可能会漏掉一些具有较强趋势但短期RSI指标较高的股票,从而导致错过一些机会。

如何优化?

为了优化该策略,我们可以考虑结合其他因素进行综合分析,例如加入股票的市值、财务指标等。此外,我们还可以考虑使用其他技术指标进行筛选,例如MACD、布林线等。同时,我们还可以通过调整筛选条件和排序规则来提高筛选效果。

最终的选股逻辑

最终的选股逻辑如下:

def select_stock():
    # 筛选出至少5根均线重合的股票
    stocks = get_stocks_with_converging_ma()
    
    # 筛选出60日均线在最上方的股票
    stocks = get_stocks_with_60ma_at_top(stocks)
    
    # 筛选出RSI小于65的股票
    stocks = get_stocks_with_rsi_less_than_65(stocks)
    
    # 对股票池中的股票进行排序,选择排名前100的股票作为最终的股票池
    stocks = sort_stocks(stocks, ascending=False)
    return stocks[:100]

python代码参考

def get_stocks_with_converging_ma():
    # 获取所有60日、120日、250日、30日和5日均线重合的股票
    ma_list = [60, 120, 250, 30, 5]
    stocks = []
    for stock in get_all_stocks():
        ma = {}
        for ma_length in ma_list:
            ma[ma_length] = stock['close'].rolling(ma_length).mean()
        if all(ma[ma_length] == ma[ma_length - 1] for ma_length in ma_list):
            stocks.append(stock)
    return stocks

def get_stocks_with_60ma_at_top(stocks):
    # 获取60日均线在最上方的股票
    stocks = []
    for stock in stocks:
        if stock['close'].rolling(60).mean() > stock['close'].rolling(120).mean():
            stocks.append(stock)
    return stocks

def get_stocks_with_rsi_less_than_65(stocks):
    # 筛选出RSI小于65的股票
    stocks = []
    for stock in stocks:
        rsi = get_rsi(stock['close'])
        if rsi < 65:
            stocks.append(stock)
    return stocks

def sort_stocks(stocks, ascending=True):
    # 对股票池中的股票进行排序,选择排名前100的股票作为最终的股票池
    stocks = stocks.copy()
    stocks['score'] = stocks.apply(get_score, axis=1)
    stocks = stocks.sort_values(by='score', ascending=ascending)
    return stocks[:100]

def get_score(stock):
    # 计算股票的得分
    ma_list = [60, 120, 250, 30, 5]
    rsi = get_rsi(stock['close'])
    score = 0
    for ma_length in ma_list:
        score += ma_length * (stock['close'].rolling(ma_length).mean() - stock['close'].rolling(ma_length - 1).mean()) ** 2
    score += 10 * (rsi -

## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

模板如何使用?

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


## 如果有任何问题请添加 下方的二维码进群提问。
![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
收益&风险
源码

评论

需要帮助?

试试AI小助手吧