问财量化选股策略逻辑
本选股策略选取振幅大于1,(昨日换手率*(今日竞价成交量/昨日成交量))在0.5到2之间的股票,并加入反包因素进行筛选。反包是指今日的收盘价低于昨日的收盘价,且中间价格最高价比昨日最高价还低的情况。该条件可以筛选出昨日出现较大波动的个股,今日选择反包开盘的标的,期望在价格回归到稳定之后进行获利操作,提高短期投资风险可控的能力。
选股逻辑分析
本选股策略综合考虑了振幅、流通市值、反包等多种因素,选择振幅适中,具有短期波动性的股票作为短期投资标的。特别是结合了反包因素,筛选出昨日价格波动较大,但预计会在短期内回归到正常水平的股票。这些股票的投资价值,主要就在于其短期调整后往往会有一定盈利机会。
有何风险?
本选股策略过分强调短期价值,忽略了长期潜力,存在难以持续盈利和长期价值无法保证的风险。同时,反包条件也会造成一定的假象,需要谨慎把握。适当的波动是股市的常态,过于依赖反包因素也会影响选股效果。
如何优化?
为减少风险和提高可行性,可以在选股策略中引入更多的基本面和财务数据因素,结合技术指标和投资策略,构建综合考虑多种因素的选股策略。
同时,在反包因素上可以适当减少依赖,加入更科学的价格变动指标,以减少选股策略的不确定性。
最终的选股逻辑
本选股策略选取振幅大于1,(昨日换手率*(今日竞价成交量/昨日成交量))在0.5到2之间的股票,并加入反包因素进行筛选。在此基础上,引入更多基于公司财务、基本面、技术分析等因素的选股方法,结合深度学习等技术手段,构建综合考虑多种因素的选股策略。
同花顺指标公式代码参考
无法给出代码,因为选股策略中并没有引入具体的技术指标。
Python代码参考
import tushare as ts
from datetime import datetime, timedelta
pro = ts.pro_api()
def select_stocks(n):
selected_stocks = []
for code in pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,name,list_date,list_status,total_mv,circ_mv,npr')["ts_code"]:
if len(selected_stocks) >= n:
break
if code.startswith("60") and code[:6] != "600" and code[:6] != "601":
continue
if pro.query('daily_basic', ts_code=code, trade_date=datetime.today().strftime('%Y%m%d'), fields='turnover_rate,amplitude,close')[0][0] * (pro.query('market_detail', trade_date=datetime.today().strftime('%Y%m%d'), fields='total_turnover')["total_turnover"][0] / pro.query('market_detail', trade_date=(datetime.today()-timedelta(1)).strftime('%Y%m%d'), fields='total_turnover')["total_turnover"][0]) <= 0.5 or pro.query('daily_basic', ts_code=code, trade_date=datetime.today().strftime('%Y%m%d'), fields='turnover_rate,amplitude,close')[0][0] * (pro.query('market_detail', trade_date=datetime.today().strftime('%Y%m%d'), fields='total_turnover')["total_turnover"][0] / pro.query('market_detail', trade_date=(datetime.today()-timedelta(1)).strftime('%Y%m%d'), fields='total_turnover')["total_turnover"][0]) >= 2:
continue
if pro.query('daily', ts_code=code, trade_date=datetime.today().strftime('%Y%m%d'), fields='pre_close,close,high,low,vol,amount').empty:
continue
if pro.query('daily', ts_code=code, trade_date=(datetime.today()-timedelta(1)).strftime('%Y%m%d'), fields='pre_close,close,high,low,vol,amount').empty:
continue
if pro.query('daily', ts_code=code, start_date=(datetime.today()-timedelta(1)).strftime('%Y%m%d'), end_date=datetime.today().strftime('%Y%m%d'), fields='pre_close,close,high,low')[0][2] <= pro.query('daily', ts_code=code, start_date=(datetime.today()-timedelta(1)).strftime('%Y%m%d'), end_date=datetime.today().strftime('%Y%m%d'), fields='pre_close,close,high,low').max()[2]:
continue
if code[0] == '6':
if not pro.concept_detail(id='804', ts_code=code).empty:
continue
else:
if not pro.concept_detail(id='2052', ts_code=code).empty:
continue
selected_stocks.append(code)
return selected_stocks[:n]
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
