(supermind量化-)振幅大于1、2019分红比例>25%、至少5根均线重合的股票_

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

问财量化选股策略逻辑

本选股策略选取满足振幅大于1、2019年分红比例大于25%、至少5个均线重合的股票作为投资标的。

选股逻辑分析

本选股策略主要基于股票波动性、企业盈利能力和技术指标分析。振幅大于1可以反映股票波动性较高,存在投资机会;2019年分红比例大于25%反映企业盈利稳定性相对较高;至少5个均线重合则可以反映股票价格处于趋势爆发点,存在投资机会。

有何风险?

本选股策略可能存在市场风险、行业风险和股票特有的风险,如公司经营不善、财务数据造假、政策风险等。

如何优化?

本选股策略可以加入更多的技术指标,如MACD、RSI、DMI等,以便更好地确定股票趋势和价格波动性。同时,可以加入基本面相关的指标,如利润增长率、营收增长率等信息,以更全面地了解企业的盈利状况。另外,可以增加风险控制策略,如止盈保护、分散化投资等,以降低投资风险。

最终的选股逻辑

本选股策略选取满足以下条件的股票:

  1. 振幅大于1;
  2. 2019年分红比例大于25%;
  3. 至少5个均线重合。

同花顺指标公式代码参考

  • 振幅公式:
AVG(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(LOW,1))),ABS(REF(CLOSE,1)-REF(OPEN,1))),N)
  • 均线重叠公式:
((MA(C,5)+MA(C,10))<=(MA(C,20)+MA(C,30)+MA(C,60)+MA(C,120)+MA(C,250)) )&& ((MA(C,10)+MA(C,20))<=(MA(C,30)+MA(C,60)+MA(C,120)+MA(C,250)) ) && ((MA(C,30)+MA(C,60))<=(MA(C,120)+MA(C,250)))

python代码参考

import tushare as ts

# 获取所有 A 股列表
def get_all_stock():
    all_stock = ts.get_stock_basics()
    return all_stock

# 判断是否满足均线重叠条件
def is_ma_overlap(df):
    ma5 = df['close'].rolling(window=5).mean()
    ma10 = df['close'].rolling(window=10).mean()
    ma20 = df['close'].rolling(window=20).mean()
    ma30 = df['close'].rolling(window=30).mean()
    ma60 = df['close'].rolling(window=60).mean()
    ma120 = df['close'].rolling(window=120).mean()
    ma250 = df['close'].rolling(window=250).mean()
    if (ma5 + ma10 <= ma20 + ma30 + ma60 + ma120 + ma250).all() and \
    (ma10 + ma20 <= ma30 + ma60 + ma120 + ma250).all() and \
    (ma30 + ma60 <= ma120 + ma250).all():
        return True
    else:
        return False

# 选取满足条件的股票
def select_stock(market='sh'):
    selected_stocks = []
    all_stocks = get_all_stock()
    for stock in all_stocks.index:
        if all_stocks.loc[stock, 'name'][0] == '*':
            continue
        if all_stocks.loc[stock, 'outstanding'] * all_stocks.loc[stock, 'price'] > 1000:
            continue               
        if all_stocks.loc[stock, 'pb'] > 3:
            continue           
        if all_stocks.loc[stock, 'pe'] > 50:
            continue
        df = ts.get_hist_data(stock)
        if len(df) < 250:
            continue
        if not is_ma_overlap(df):
            continue
        if not (df.iloc[-1]['high'] - df.iloc[-1]['low']) > df.iloc[-2]['close']*0.01:
            continue
        if not df.loc[df.index[-1], 'shares'] > 0:
            continue
        if not df.loc[df.index[-1], 'esp'] > 0:
            continue
        if not df.loc[df.index[-1], 'bvps'] > 0:
            continue
        if not df.loc[df.index[-1], 'pb'] > 0:
            continue
        if not df.iloc[-1]['divi'] > 0:
            continue
        if not df.iloc[-1]['profits'] > 0:
            continue
        selected_stocks.append(stock)
    return selected_stocks

print(select_stock(market='sh'))

以上代码仅供参考,实现方法会因投资人情况和市场环境而异。

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

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

    模板如何使用?

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


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

评论