问财量化选股策略逻辑
选股逻辑为:振幅大于1、9点25分涨幅小于6%、昨日竞价换手率大于0.26。该选股策略综合考虑了股票波动性、短期走势和市场交易情况等指标。
选股逻辑分析
在前一个选股逻辑的基础上,加入了昨日竞价换手率这一判断市场交易情况的指标。竞价换手率是指收盘竞价时的成交量占当日成交量的比例,可衡量市场对个股交易的关注度。通过综合考虑多个指标,筛选出波动性小、短期走势良好、市场关注度高的个股。
有何风险?
选股逻辑中,关于竞价换手率的指标,存在着过度追求市场热度和流动性的风险,忽略了个股的长期趋势和基本面情况。此外,过度强调短期走势和波动性,也会导致忽略了市场情况的变化。
如何优化?
可以考虑引入更多的技术分析和基本面分析的指标,如RSI、MACD等技术指标,PE、PB、EPS等基本面指标,进一步筛选符合要求的股票。另外,可以对竞价换手率指标进行改进,引入更多市场交易活跃性和市场情况方面的指标,从而提高选股策略的鲁棒性和准确性。
最终的选股逻辑
选股逻辑为:振幅大于1、9点25分涨幅小于6%、昨日竞价换手率大于0.26,满足以上条件的股票作为短期投资标的。该选股策略综合考虑了多个指标,有助于发现波动性小、短期走势良好、市场关注度高的个股,具备短期投资价值。
同花顺指标公式代码参考
FZ_RANGE > 1 AND LAST<=LAST[1]*1.06 AND (VOLP>=0.26) AND (MA(CLOSE,5)>MA(CLOSE,10)) AND (MA(CLOSE,10)>MA(CLOSE,20))
其中,FZ_RANGE表示振幅大小,LAST表示当天的收盘价,LAST[1]表示前一天的收盘价,VOLP表示当天竞价换手率,MA(CLOSE,5)、MA(CLOSE,10)和MA(CLOSE,20)分别表示收盘价的5、10、20日均线。通过以上指标查找符合条件的股票。
Python代码参考
import tushare as ts
from datetime import datetime, timedelta
def get_selected_stocks():
pro = ts.pro_api()
selected_stocks = []
for ts_code in pro.stock_basic(exchange='', list_status='L', fields='ts_code').ts_code:
# 振幅大于1
k_data = pro.daily(ts_code=ts_code, start_date=(datetime.now()-timedelta(days=30)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,high,low,close')
highest_price = k_data['high'][0]
lowest_price = k_data['low'][0]
for idx, k in k_data.iterrows():
if idx > 5:
break
if k['high'] >= highest_price:
highest_price = k['high']
if k['low'] <= lowest_price:
lowest_price = k['low']
if highest_price / lowest_price <= 1:
continue
# 9点25分涨幅小于6%
tick_data = pro.tick(ts_code=ts_code, date=datetime.now().strftime('%Y%m%d'))
current_price = tick_data[tick_data['time'] == '09:25:00']['price'].values[0]
pre_close = pro.daily(ts_code=ts_code, start_date=(datetime.now()-timedelta(days=6)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,close', freq='1D').iloc[1]['close']
if current_price / pre_close >= 1.06:
continue
# 昨日竞价换手率大于0.26
vol = pro.moneyflow(ts_code=ts_code, start_date=(datetime.now()-timedelta(days=2)).strftime('%Y%m%d'), end_date=(datetime.now()-timedelta(days=1)).strftime('%Y%m%d'), fields='ts_code,trade_date,vol')
if vol['vol'][0] / pro.daily(ts_code=ts_code, start_date=(datetime.now()-timedelta(days=3)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,vol').iloc[-1]['vol'] < 0.26:
continue
# 主升起动
k_data = pro.daily(ts_code=ts_code, start_date=(datetime.now()-timedelta(days=60)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,high,low,close')
close_ma5 = k_data['close'].rolling(window=5).mean()
close_ma10 = k_data['close'].rolling(window=10).mean()
close_ma20 = k_data['close'].rolling(window=20).mean()
if (close_ma5.iloc[-1] > close_ma10.iloc[-1]) and (close_ma10.iloc[-1] > close_ma20.iloc[-1]):
selected_stocks.append(ts_code)
return selected_stocks
在Python代码中,通过使用tushare库获取股票数据,进而筛选符合条件的股票。通过振幅指标判断个股波动性情况,引入当前价格和前日收盘价计算出短期涨幅,使用竞价换手率和主升起动指标判断市场交易情况和趋势情况。通过以上指标查找符合条件的股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)