(supermind)振幅大于1、底部抬高、昨日股价大于250日均线_

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

问财量化选股策略逻辑

选股逻辑:振幅大于1,底部抬高,昨日股价大于250日均线。

选股逻辑分析

该选股逻辑同样是从技术面出发,认为振幅大于1表示股票波动较大,底部抬高则表示股票已经反弹,昨日股价大于250日均线则表示股票价格处于长期上涨的趋势中。因此,综合这些技术指标进行选股,也是一种相对简单而又实用的方法。

有何风险?

该选股逻辑仍然只考虑了股票的技术面,忽略了公司的基本面,选择到的个股可能并不是质量或者估值水平较高的公司。同时,昨日股价大于250日均线虽然可以较好的反映股票的长期上涨趋势,但对于处于短期下跌或震荡的股票会产生一定的误判,因此在实际应用过程中需要注意该问题,还需加入其他指标进行筛选。

如何优化?

相较于前一个选股逻辑,这里加入了趋势方面的指标,更能较好的体现股票的长期上涨趋势。但类似地,我们可以加入更多基础面数据的评估,如市盈率、市净率等因素,排除那些估值过高或盈利能力较弱的企业,并加入其他技术面指标进行筛选,如MACD、KDJ等指标。

最终的选股逻辑

在分析和优化该选股策略后,我们可以得到最终的选股逻辑:

  1. 振幅大于1;
  2. 底部抬高;
  3. 昨日股价大于250日均线;
  4. 20日均线在250日均线上方;
  5. 市盈率<60;
  6. 市净率<10;
  7. 过去5年盈利稳定;
  8. 剔除ST和*ST股票;
  9. 止损条件:30日均线以下止损,或下跌超过8%止损。

同花顺指标公式代码参考

以下是在同花顺上实现该选股策略的指标公式代码:

C1: AMP()>1;
C2: BOTTOM(HIGH,C1)>BOTTOM(HIGH,C1+1);
C3: CLOSE>MA(VOL,C2,250);
C4: MA(CLOSE,C2,20)>MA(CLOSE,C2,250);
C5: PE<=60 AND PB<=10;
C6: PROFITS5>0;
C7: MV<=10000000;
C8: NOT(INSTR('ST',SINFO) OR INSTR('*ST',SINFO));
SELECTOR:=C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8;
RESULT:=SELECTOR;

Python代码参考

以下是Python实现该选股逻辑的部分代码:

from stockstats import _STOCK_COMPARABLE_INDEXES, StockDataFrame

# 定义股票池
s_pool = ['SH.600000', 'SH.600036', 'SH.600519', 'SZ.000858', 
          'SZ.000333', 'SH.601398', 'SH.601288', 'SZ.000002', 
          'SZ.000651', 'SH.600030']

# 筛选振幅大于1,底部抬高,昨日股价大于250日均线的个股
selected_stocks = (sdf['amp'] > 1) & \
                  (sdf['low'].rolling(window=C1).apply(lambda x: (np.argmax(x[-C1:]) == C1 - 1) and (np.argmax(x[:-C1]) < np.argmax(x[-C1:])), raw=False)) & \
                  (sdf['close'] > sdf['close'].rolling(window=250).mean().shift(1)) & \
                  (sdf['close'].rolling(window=20).mean() > sdf['close'].rolling(window=250).mean()) & \
                  (sdf['pe'] <= 60) & \
                  (sdf['pb'] <= 10) & \
                  (sdf['profits5'] > 0) & \
                  (~sdf['scode'].str.contains('ST')) & \
                  (~sdf['scode'].str.contains('*ST'))

# 加入止损策略:30日均线以下止损,或者下跌超过8%止损
sdf['ma30'] = sdf['close'].rolling(window=30).mean()
sdf['sell_signal'] = (sdf['close'] < sdf['ma30']) | ((sdf['close'] - sdf['close'].shift(1)) / sdf['close'].shift(1) < -0.08)
selected_stocks = selected_stocks & (~sdf['sell_signal'])

# 返回选中个股的代码
return selected_stocks['symbol'].tolist()

通过在Python中实现该选股逻辑并加入基本面数据和市场趋势等因素进行筛选,可以提高选股的质量和准确度,让我们更加准确地发现具有上涨潜力的股票。

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

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

    模板如何使用?

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


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

评论