(supermind)振幅大于1、今日控盘>21、周线MA5金叉MA10_

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

问财量化选股策略逻辑

选股逻辑:振幅大于1,今日控盘>21,周线MA5金叉MA10。

选股逻辑分析

该选股策略主要考虑了技术面和市场资金面。振幅大于1考虑了股票的波动性,今日控盘大于21反映了市场资金流入,而周线MA5金叉MA10是考虑了股票的技术面情况,可以反映出股票在中短期内的走势,从而进行选股。该选股逻辑选股标准比较严格,其选出的股票应当具有一定的投资价值,更充分地表达了行情的多方面信息。

有何风险?

该选股策略可能面临以下风险:

  1. 内在风险:该策略可能因为过分注重历史数据,而无法充分反映当前市场状况,影响其选股准度;
  2. 风险控制不够严格:该策略可能对市场情绪的选股标准存在一定偏差,需要对风险控制进行更多的考虑;
  3. 策略过于依赖技术面:该策略可能过度注重技术面的因素,导致价值投资的考量不足,选出的股票可能具有较高的投机性。

如何优化?

为了降低风险和提高策略的精度,我们可以通过以下措施进行优化:

  1. 加强对基本面的分析:结合一些基本面的指标进行选股,能够减轻直接依赖技术面的策略的风险;
  2. 调整选股标准:我们可以设定某些标准的分值,并根据其重要性分配相应的权重,以减轻某些标准的影响;
  3. 加强对市场变化的监测:通过对市场变化的持续监测和分析,对选股策略进行及时调整,降低其风险。

最终的选股逻辑

基于以上分析和优化需求,我们最终选择以下选股逻辑:

  1. 振幅大于1;
  2. 今日控盘大于21;
  3. 周线MA5金叉MA10;
  4. 市值在50亿以上;
  5. 市盈率小于50,PEG < 2, 年净利润增长率 > 0。

同花顺指标公式代码参考

以下是同花顺实现此策略的部分指标公式代码:

C1 = AMP() > 1;
C2 = ABS(CONTROLLING_SHARES_DAY_CHG()) > 21;
C3 = CROSS(MA(CLOSE, 5), MA(CLOSE, 10));
C4 = CAP() > 5000000000;
C5 = PE() < 50 AND PEG() < 2 AND NPGRATE() > 0;
SELECTOR = C1 AND C2 AND C3 AND C4 AND C5;
RESULT = REF(SORT(RANK(SELECTOR), 1), 0) == 0;

python代码参考

以下是Python实现此策略的部分代码:

def select_stocks():
    selected_stocks = []
    ma5 = {}
    ma10 = {}
    all_trading_days = get_all_trade_days()
    all_trading_days = sorted(all_trading_days, reverse=True)
    for stock in get_all_stocks():
        c1 = get_price(stock, end_date=datetime.now(), frequency='1d', fields='amplitude')[-1] > 0.01
        c2 = abs(get_controlling_shareholders(stock, end_date=datetime.now(), frequency='1d')['controlling_shareholders_day_pct_change'][-1]) > 0.21
        closed_price = get_price(stock, start_date=all_trading_days[-20], end_date=all_trading_days[-1], frequency='1w', fields='close')
        ma5[stock] = talib.SMA(closed_price, timeperiod=5)
        ma10[stock] = talib.SMA(closed_price, timeperiod=10)
        c3 = ma5[stock][-1] > ma10[stock][-1] and ma5[stock][-2] < ma10[stock][-2]
        c4 = get_market_cap(stock, date=datetime.now()) > 5000000000
        data = get_fundamentals(query(valuation, indicator).filter(valuation.code == stock), date=datetime.now())
        if not data.empty:
            c5 = data['valuation_pe'][0] < 50 and data['valuation_peg'][0] < 2 and data['indicator_net_profit_yoy'][0] > 0
        if c1 and c2 and c3 and c4 and c5:
            selected_stocks.append(stock)
    selected_stocks = sorted(selected_stocks, key=lambda x: get_price_change(x, 1, datetime.now(), frequency='1d'), reverse=True)
    return selected_stocks[:5]

result = select_stocks()
print(result)

以上Python代码仅供参考,具体实现还需要根据自己的需求调整。

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

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

    模板如何使用?

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


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

评论