问财量化选股策略逻辑
选股逻辑:在RSI小于65、昨日竞价换手率大于0.26、非ST、10点之前根据五部涨停战法选择股票的条件下,选择股票。
选股逻辑分析
除了RSI和竞价换手率的条件外,加入了非ST和五部涨停战法的限制。五部涨停战法是一种短期技术分析方法,在选股策略中被广泛使用。该策略根据股价涨停的类型和涨停板之间的交易关系,选出短期具备较高上涨概率的股票。
有何风险?
五部涨停战法在短期选股上具备一定可行性,但仍存在无法避免的市场风险和偶然性波动。非ST条件也无法完全避免股价波动及公司经营风险等因素对股价变化的影响。
如何优化?
-
结合基本面指标的分析:可以根据股票的财务状况等基本面指标进行进一步的筛选和判断,以改善选股逻辑的可靠性。
-
考虑主题投资的因素:在股票市场中,主题投资往往对股价会有较大的影响,因此在筛选股票时可以考虑关注某些热门行业或主题,提高选股的有效性和准确性。
-
综合运用多个选股因素:可以考虑添加和筛选其他可靠的指标,如MACD、RSV、量比等,以获得更全面的股票信息。
最终的选股逻辑
选股标准为:RSI小于65、昨日竞价换手率大于0.26、非ST、10点之前根据五部涨停战法选择股票
同花顺指标公式代码参考
// RSI小于65
CONDITION1 = RSI(C,14) < 65;
// 昨日竞价换手率大于0.26
CONDITION2 = Turnover > 0.26;
// 非ST
CONDITION3 = NOT(ABANDONED);
// 五部涨停战法
MASK1 = C > Ref(C,1) AND C < 1.098*Ref(C,1) AND Ref(HIGH,1) < Ref(HIGH,2);
MASK2 = C > 1.098*Ref(C,1) AND C < 1.196*Ref(C,1) AND Ref(HIGH,1) < Ref(HIGH,3);
MASK3 = C > 1.196*Ref(C,1) AND C < 1.294*Ref(C,1) AND Ref(HIGH,1) < Ref(HIGH,4);
MASK4 = C > 1.294*Ref(C,1) AND C < 1.392*Ref(C,1) AND Ref(HIGH,1) < Ref(HIGH,5);
CONDITION4 = SUM(MASK1 OR MASK2 OR MASK3 OR MASK4, 5) == 5;
// 筛选符合条件的股票
SELECT (CONDITION1 AND CONDITION2 AND CONDITION3 AND CONDITION4);
python代码参考
import tushare as ts
import talib
def select_stocks(stocks):
res = []
for stock in stocks:
k_data = ts.get_k_data(stock, start='2018-01-01', end='2021-08-31', ktype='D')
if len(k_data) >= 250:
rsi = talib.RSI(k_data['close'].astype(float).values, timeperiod=14)[-1]
turnover = k_data['turnover'].astype(float).values[-2] / 100
is_st = 'ST' in ts.get_stock_basics().loc[stock]['name']
abandon = ts.get_stock_basics().loc[stock]['abandoned'] == '1'
mask1 = (k_data['close'] > k_data['close'].shift(1)) & (k_data['close'] < 1.098*k_data['close'].shift(1)) & (k_data['high'].shift(1) < k_data['high'].shift(2))
mask2 = (k_data['close'] > 1.098*k_data['close'].shift(1)) & (k_data['close'] < 1.196*k_data['close'].shift(1)) & (k_data['high'].shift(1) < k_data['high'].shift(3))
mask3 = (k_data['close'] > 1.196*k_data['close'].shift(1)) & (k_data['close'] < 1.294*k_data['close'].shift(1)) & (k_data['high'].shift(1) < k_data['high'].shift(4))
mask4 = (k_data['close'] > 1.294*k_data['close'].shift(1)) & (k_data['close'] < 1.392*k_data['close'].shift(1)) & (k_data['high'].shift(1) < k_data['high'].shift(5))
condition4 = mask1[-5:].sum() == 5 or mask2[-5:].sum() == 5 or mask3[-5:].sum() == 5 or mask4[-5:].sum() == 5
if rsi < 65 and turnover > 0.26 and not is_st and not abandon and condition4:
res.append(stock)
return res
stocks = ts.get_stock_basics().index
res = select_stocks(stocks)
print(res)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


