问财量化选股策略逻辑
选股逻辑:振幅大于1,今日控盘>21,(昨日换手率*(今日竞价成交量/昨日成交量))>0.5<2。
选股逻辑分析
该选股策略主要考虑了市场资金面和股票的交易情况。振幅大于1考虑了股票的波动性,今日控盘大于21反映了市场资金流入,而昨日换手率和竞价成交量则是反映出当前交易情况的指标,可以用来筛选出短线趋势较好的股票。该选股逻辑选股标准较为灵活,考虑到了市场情况和成交情况,可以帮助投资者捕捉到市场的较好机会。
有何风险?
该选股策略可能面临以下风险:
- 选股指标的局限性:该策略可能因选股指标的限制,对市场各种因素的反映存在偏差;
- 策略的时效性:该选股策略重视短期交易情况,可能难以获取更长期、更全面的市场信息,具有时效性;
- 选择样本容易受到市场噪音的影响:样本选择不当可能受到市场噪音的影响,导致策略的低准确度。
如何优化?
为了降低风险和提高策略的精度,我们可以通过以下措施进行优化:
- 扩大选股指标:可以加入更多基本面和技术面的指标,如市值、股息率、净资产收益率等对股票的评价指标;
- 优化选股标准:我们可以选取更有代表性的指标,并根据其效果调整其权重,以提高选股精度;
- 使用机器学习方法分析股票走势和选股:通过采用机器学习、神经网络等方法,可以自主学习和分析股票的走势,找出有效的选股方法。
最终的选股逻辑
基于以上分析和优化需求,我们最终选择以下选股逻辑:
- 振幅大于1;
- 今日控盘大于21;
- (昨日换手率*(今日竞价成交量/昨日成交量))>0.5<2;
- 市值在20亿以上;
- 市盈率小于20,市净率小于3,ROE大于10%。
同花顺指标公式代码参考
以下是同花顺实现此策略的部分指标公式代码:
C1 = AMP() > 1;
C2 = ABS(CONTROLLING_SHARES_DAY_CHG()) > 21;
C3 = REF(TURNOVER_RATE(), 1) * (TRANSITION_PRICE_LAST()/REF(TRANSACTION_SUM_VOL(),1)) > 0.5 AND REF(TURNOVER_RATE(), 1) * (TRANSITION_PRICE_LAST()/REF(TRANSACTION_SUM_VOL(),1)) < 2;
C4 = CAP() > 2000000000;
C5 = PE() < 20 AND PB() < 3 AND ROE() > 10;
SELECTOR = C1 AND C2 AND C3 AND C4 AND C5;
RESULT = REF(SORT(RANK(SELECTOR), 1), 0) == 0;
python代码参考
以下是Python实现此策略的部分代码:
def select_stocks():
selected_stocks = []
all_trading_days = get_all_trade_days()
all_trading_days = sorted(all_trading_days, reverse=True)
for stock in get_all_stocks():
c1 = get_price(stock, end_date=datetime.now(), frequency='1d', fields='amplitude')[-1] > 0.01
c2 = abs(get_controlling_shareholders(stock, end_date=datetime.now(), frequency='1d')['controlling_shareholders_day_pct_change'][-1]) > 0.21
turnover_rate = get_price(stock, start_date=all_trading_days[-10], end_date=all_trading_days[-1], frequency='1d', fields='turnover_rate')
transaction_sum_vol = get_price(stock, start_date=all_trading_days[-10], end_date=all_trading_days[-1], frequency='1d', fields='transaction_sum_volume')
yesterday_turnover_rate = turnover_rate[-2]
today_transition_price_last = get_price(stock, end_date=datetime.now(), frequency='1m', fields='close')[0]
yesterday_transaction_sum_vol = transaction_sum_vol[-2]
if yesterday_turnover_rate*(today_transition_price_last/yesterday_transaction_sum_vol) > 0.5 and yesterday_turnover_rate*(today_transition_price_last/yesterday_transaction_sum_vol) < 2:
c3 = True
else:
c3 = False
c4 = get_market_cap(stock, date=datetime.now()) > 2000000000
data = get_fundamentals(query(valuation, indicator).filter(valuation.code == stock), date=datetime.now())
if not data.empty:
c5 = data['valuation_pe'][0] < 20 and data['valuation_pb'][0] < 3 and data['indicator_roe'][0] > 0.1
if c1 and c2 and c3 and c4 and c5:
selected_stocks.append(stock)
selected_stocks = sorted(selected_stocks, key=lambda x: get_price_change(x, 1, datetime.now(), frequency='1d'), reverse=True)
return selected_stocks[:5]
result = select_stocks()
print(result)
以上Python代码仅供参考,具体实现还需要根据自己的需求调整。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)