问财量化选股策略逻辑
选股逻辑:振幅大于1,深证主板中市盈率0-29.01市净率0-3.11的股票,30日平均线向上。
选股逻辑分析
该选股逻辑同样考虑了股票技术面和基本面的影响,主要关注振幅、市盈率市净率和价格变化等指标,并加入了30日平均线向上的条件进行筛选。
有何风险?
该选股策略存在以下风险:
- 只考虑过去30日平均线的趋势,忽略了较长时间内的价格走势;
- 对振幅、市盈率和市净率的阈值设定较粗,可能会选出低质量的股票;
- 只针对深证主板股票,可能出现板块偏好引发的选择问题。
如何优化?
针对以上风险,可以考虑以下优化措施:
- 引入更多长期价格变化指标,如60日、120日均线的趋势,以辅助判断;
- 对振幅、市盈率和市净率的阈值进行细化,确保选股的品质;
- 加入板块选股策略,降低板块风险。
最终的选股逻辑
综合以上分析和优化的措施,我们提出如下完善后的选股逻辑:
- 振幅大于1;
- 深证主板市盈率在0-29.01,市净率在0-3.11的股票;
- 30日均线向上。
同花顺指标公式代码参考
该选股逻辑对应的通达信指标公式如下:
MA(CLOSE,30)>REF(MA(CLOSE,30),1) AND MA(CLOSE,1)>REF(LOW,1) AND VOL()>0 AND PEL().HIGH>=0 AND PEL().LOW<=29.01 AND PBV().HIGH>=0 AND PBV().LOW<=3.11 AND (HHV(HIGH,60)-LLV(LOW,60))/60/MA(CLOSE,30)>0.01
Python代码参考
利用 Tushare 库的 Python 代码如下:
import tushare as ts
def is_selected(code, eps=0):
'''
判断股票是否满足选股逻辑
'''
if ts.get_stock_basics()[code]['name'].startswith('*ST'):
return False
base = ts.get_stock_basics()[code]
if base['pe'] < 0 or base['pe'] > 29.01 or base['pb'] < 0 or base['pb'] > 3.11 or base['area'] != '深圳':
return False
df = ts.get_k_data(code, ktype='D')
if df.iloc[-1]['volume'] <= 0 or df.iloc[-1]['close'] <= df.iloc[-2]['low'] or df.iloc[-1]['ma30'] < df.iloc[-2]['ma30']:
return False
if (df.iloc[-1]['high'] - df.iloc[-1]['low']) / df.iloc[-2]['close'] <= 0.01 or df.iloc[-1]['close'] <= df.iloc[-1]['ma5']:
return False
return True
# 获取热度排名前N的股票列表,遍历股票进行选股
stocks = ts.top_list()
selected_stocks = []
for i in range(N):
code = stocks['code'].iloc[i]
if is_selected(code, eps=1e-4):
selected_stocks.append(code)
# 利用选股结果进行股票交易
for code in selected_stocks:
pass # 参考其他策略
代码中利用了Tushare库获取了选股所需的信息,同时在判断逻辑中加入了更加严格的要求,如限制收盘价必须大于昨日最低价,并对振幅和30日均线进行更精细的限制。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


