(iwencai选股策略)近25个交易日有单日涨幅大于等于百分之10_、今日均线向上发散、

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

问财量化选股策略逻辑

选股逻辑:选取RSI小于65、今日均线向上发散、近25个交易日内至少有一天涨幅大于等于10%的股票。

选股逻辑分析

该选股逻辑对股票的价格波动、均线走势和涨幅情况进行综合考虑,筛选出具有趋势、内容和活跃的股票。

有何风险?

该选股逻辑的风险在于过度看重了短期的单日涨幅情况,可能会选出近期热门的、涨幅已经过大的股票,存在投资风险,需要结合其他指标进行综合评估。

如何优化?

可结合最近几个月的股票走势综合考虑,如增加选取均线金叉、MACD交叉等长期趋势指标。同时,可以适当调节单日涨幅的阈值,例如10%可以调整为5%等。另外,可以增加筛选条件,例如PE、PB等基本面指标。

最终的选股逻辑

选取RSI小于65、今日均线向上发散、近25个交易日内至少有一天涨幅大于等于5%的股票,并结合其他技术指标及公司基本面数据进行综合分析,合理配置资金。

同花顺指标公式代码参考

  • RSI: RSI(14)
  • MA: MA(N)
  • MACD: MACD(12,26,9)
  • PE: 股票市盈率
  • PB: 股票市净率

Python代码参考

import pandas as pd
import tushare as ts
import numpy as np

def get_stock_list(rsi_threshold=65, ma_today_length=1, ma_short_length=10, ma_long_length=60, daily_return_threshold=0.05, top_n=5):
    stock_list = pd.DataFrame(columns=['股票代码', '名称', '流通股本', '今日控盘'])

    for _, row in ts.get_today_all().iterrows():
        symbol = row['code']
        if symbol.startswith('60') or symbol.startswith('300'):
            if row['code'][0] == '6':
                symbol = 'sh' + symbol
            else:
                symbol = 'sz' + symbol
            try:
                rsi = talib.RSI(ts.get_k_data(symbol, start=datetime.date.today()-datetime.timedelta(days=1), end=datetime.date.today())['close'], timeperiod=14)[-1]
                if rsi > rsi_threshold:
                    continue
                ma_today = ts.get_hist_data(symbol)['ma{}'.format(ma_today_length)].iloc[-1]
                ma_short = ts.get_hist_data(symbol)['ma{}'.format(ma_short_length)].iloc[-1]
                ma_long = ts.get_hist_data(symbol)['ma{}'.format(ma_long_length)].iloc[-1]
                if ma_today <= ma_short or ma_short < ma_long:
                    continue
                daily_returns = ts.get_hist_data(symbol)['p_change'][-25:]
                if len(daily_returns[daily_returns >= daily_return_threshold]) == 0:
                    continue                
                stock_list = stock_list.append({'股票代码': symbol, '名称': row['name'], '流通股本': row['totals'] * 10000, '今日控盘': row['totalAssets'] / row['mktcap']}, ignore_index=True)
            except:
                continue

    stock_list.sort_values(by='今日控盘', ascending=False, inplace=True)
    return stock_list[:top_n]
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论