问财量化选股策略逻辑
选股逻辑:振幅大于1,底部抬高,涨幅在-5%到2.6%之间。
选股逻辑分析
该选股逻辑主要从技术面出发,筛选振幅大于1,底部抬高的股票,再结合涨幅在一定范围内进行选择,认为这些股票可能存在较好的上涨潜力。
有何风险?
该选股逻辑中涨幅的范围不够精准,可能忽略了一些波动幅度较小但趋势稳定的股票。同时过度依赖技术面指标也可能忽略公司的基本面数据变化。另外,组合多个指标后,也容易出现信号冲突的情况。
如何优化?
该选股策略可以结合其他指标如市盈率、市净率等基本面数据进行筛选和参考,减少主观性,提高选股准确度。同时可以使用机器学习等算法对策略进行深度优化和提升。另外,定义更加精准的涨幅阈值也可以提高选股策略的精度。
最终的选股逻辑
在分析和优化该选股策略后,我们可以得到最终的选股逻辑:
- 振幅大于1;
- 底部抬高;
- 涨幅在-5%到2.6%之间;
- 剔除ST和*ST股票;
- 止损条件:当股价低于布林带中轨或超过布林带上轨时,卖出。
同花顺指标公式代码参考
以下是在同花顺上实现该选股策略的指标公式代码:
C1:AMP() > 1;
C2:BOTTOM(HIGH,C1)>BOTTOM(HIGH,C1+1);
C3: (C1+1)*OPEN/REF(CLOSE,C1) < 1.026 AND (C1+1)*OPEN/REF(CLOSE,C1) > 0.95;
C4: MV <= 10000000;
C5: NOT(INSTR('ST',SINFO) OR INSTR('*ST',SINFO));
SELECTOR:=C1 AND C2 AND C3 AND C4 AND C5;
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,底部抬高,涨幅在-5%到2.6%之间的个股
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['open'].shift(C1) * (1 + C3) >= sdf['close']) & \
(sdf['open'].shift(C1) * (1 - C3) <= sdf['close']) & \
(~sdf['scode'].str.contains('ST')) & \
(~sdf['scode'].str.contains('*ST'))
# 加入止损策略:当股价低于布林带中轨或超过布林带上轨时,卖出
sdf['mean'] = sdf['close'].rolling(window=20).mean()
sdf['std'] = sdf['close'].rolling(window=20).std()
sdf['upper'] = sdf['mean'] + 2 * sdf['std']
sdf['lower'] = sdf['mean'] - 2 * sdf['std']
sdf['sell_signal'] = (sdf['close'] < sdf['lower']) | (sdf['close'] > sdf['upper'])
selected_stocks = selected_stocks & (~sdf['sell_signal'])
# 返回选中个股的代码
return selected_stocks['symbol'].tolist()
通过在Python中实现该选股逻辑,可以更加灵活地结合多种技术指标和基本面数据进行深度筛选和智能选股,同时也可以利用机器学习和其他算法不断完善略策略,以达到更优秀的选股表现。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
