问财量化选股策略逻辑
选股逻辑:振幅大于1,深证主板中市盈率0-29.01,市净率0-3.11的股票,9点25分涨幅小于6%。
选股逻辑分析
该选股逻辑除了考虑振幅、市盈率和市净率等基本面因素外,还考虑了股票在开盘后一个特定时间点的涨跌情况,可充分反映股票的热度和市场情绪。此外,该策略仍然适用于深证主板,有一定的地域或板块限制。
有何风险?
- 开盘后的特定时间点不一定具有统计意义,可能受到噪声和其他干扰因素的影响,导致筛选不准确;
- 涨幅限制过高,可能会忽略部分表现良好的股票。
如何优化?
为了优化该选股策略,我们可以考虑以下方面:
- 考虑波动率等更全面的技术指标,可以提高选股精确度;
- 调整涨幅限制值,根据实际需求、历史数据和统计学知识等因素决定;
- 可以加入其他筛选条件,如每日换手率等相关因素,形成更为全面的选股方案。
最终的选股逻辑
经过分析和优化之后,我们提出如下完善后的选股逻辑:
- 振幅大于1的深证主板股票;
- 市盈率在0-29.01,市净率在0-3.11;
- 股票开盘后9点25分的涨幅小于6%。
同花顺指标公式代码参考
- 无
Python代码参考
利用Tushare库和pandas数据框架的选股Python代码如下:
import pandas as pd
import tushare as ts
def is_selected(code):
'''
判断股票是否符合选股逻辑
'''
# 基本面指标筛选
stock_basics = ts.get_stock_basics()
base = stock_basics[stock_basics.index==code]
if base.empty or base['pe'].values[0] < 0 or base['pe'].values[0] > 29.01 or \
base['pb'].values[0] < 0 or base['pb'].values[0] > 3.11 or base['area'].values[0] != '深圳':
return False
# 技术指标筛选
k_data = ts.get_k_data(code, autype='qfq', start=(datetime.now()-timedelta(days=30)).strftime('%Y-%m-%d'), end=datetime.now().strftime('%Y-%m-%d'))
if k_data['high'].sub(k_data['low'].shift()).div(k_data['close'].shift()).iloc[-1] < 0.01:
return False
if k_data.iloc[0]['open'] != k_data.iloc[0]['high']:
return False
if k_data.iloc[0]['open']/k_data.iloc[-2]['close'] - 1 >= 0.06:
return False
return True
# 获取符合选股逻辑要求的股票列表
selected_stocks = ts.get_stock_basics().index[ts.get_stock_basics().apply(is_selected, axis=1)].tolist()
# 根据选股结果进行后续交易操作
for code in selected_stocks:
pass # 参考其他交易策略
该代码在前一个选股逻辑的基础上增加了开盘后涨幅的计算和判断条件。需要注意的是,由于Tushare不提供开盘价的数据,因此我们通过计算最高价和前一天的数据来近似开盘价。为了防止API受限,我们设置了查询时间段 和 区分单独查询。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


