问财量化选股策略逻辑
选股逻辑:振幅大于1、昨天有3连板、机构抄底。
选股逻辑分析
该选股逻辑主要是以市场活跃度、机构操作和一定的技术分析为参考因素。振幅大于1是反映市场活跃度的指标之一,昨天有3连板更加表明该股票当前有一定的市场关注度。机构抄底是反映股票可能存在低位抄底资金动向的指标之一。该选股逻辑选择了多个指标进行筛选,但仍可能存在筛选效率和精度不高、风险难以控制等问题。
有何风险?
以下是该选股策略存在的风险:
- 过度依赖技术分析、过度看重市场关注度,无法全面考虑股票的基本面表现;
- 机构抄底的数据来源和可靠性较难确定;
- 选股标准较为单一,不能充分考虑个股之间的差异性和行业差异性。
如何优化?
为了优化该选股逻辑,可以考虑以下优化方案:
- 加入资产负债表、利润表等财务指标作为选股指标之一,综合考虑选股的精度;
- 对于机构抄底指标,要根据实际情况和可靠数据进行判断,或者考虑将其作为辅助指标;
- 在选股标准中加入相对估值、板块轮动等指标,更加综合考虑股票的筛选。
最终的选股逻辑
改进后的选股逻辑如下:
- 筛选振幅大于1的股票;
- 在1的基础上,筛选昨天有3连板的股票;
- 在2的基础上,筛选机构抄底的股票;
- 在3的基础上,综合考虑较好的公司基本面、行业趋势、相对估值和板块轮动等,选取业绩稳定、有一定盈利能力和相对估值较低的股票。
同花顺指标公式代码参考
该选股逻辑的通达信指标公式如下:
C1 := (HIGH - LOW) > 1;
C2 := (REF(CLOSE, 1) > REF(CLOSE, 2)) AND (REF(CLOSE, 2) > REF(CLOSE, 3));
C3 := (CROSS(FILTER(MA(N, 2) > MA(N, 20), F), 0) > 0) AND (T[1]=LLV(LASTBAR,1,LOWEST));
SELECTOR := C1 AND C2 AND C3;
其中 T[1] 代表9:15这根K线的匹配价,LASTBAR 代表当前的K线索引,LOWEST 代表当日价格的最低价,N 代表均线的周期。这里引入了均线和机构抄底指标进行筛选。
python代码参考
import pandas as pd
from tqsdk import TqApi, TqAuth
api = TqApi(auth=TqAuth("YOUR_ACCOUNT", "YOUR_PASSWORD"))
klines = api.get_kline_serial("SHFE.rb2101", 24 * 60 * 60, data_length=300) # 获取 df 数据,周期为日K线
df = pd.DataFrame(klines)
C1 = (df['high'] - df['low'] >= 1)
C2 = df.groupby('contract.symbol')['close'].apply(lambda x: (x.shift(1) > x.shift(2)) & \
(x.shift(2) > x.shift(3))).astype(int)
N1, N2 = 2, 20
ema_short = df.groupby('contract.symbol')['close'].transform(lambda x: x.ewm(span=N1, min_periods=1).mean())
ema_long = df.groupby('contract.symbol')['close'].transform(lambda x: x.ewm(span=N2, min_periods=1).mean())
is_ema_long_above_short = ema_long > ema_short
F = 2 / (N1 + 1)
cross = (is_ema_long_above_short != is_ema_long_above_short.shift(1)) & \
(is_ema_long_above_short == True)
C3 = (cross.astype(int).rolling(LASTBAR).max() == 1) & \
(df['datetime'].dt.time == datetime.time(9, 15)) & \
(df['close'] == df['low'].rolling(min_periods=1, window=LASTBAR).min())
selector = (C1 & C2 & C3).astype(int)
result = df[selector == 1].index.tolist()
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
