问财量化选股策略逻辑
- 今日增仓占比>5%, 表示这只股票最近有资金流入,说明有主力资金在关注这只股票。
- 昨日9:15匹配价跌停, 表示这只股票在昨日开盘价跌停,说明市场对该股票的预期非常悲观。
- 竞价涨幅>-2<5, 表示这只股票在竞价阶段的涨幅在-2%到5%之间,说明这只股票有比较大的波动性。
选股逻辑分析
- 今日增仓占比>5%, 表示这只股票有主力资金流入,说明有资金对该股票的预期比较乐观,可能会带来股价的上涨。
- 昨日9:15匹配价跌停, 表示市场对该股票的预期非常悲观,可能会导致股价的下跌。
- 竞价涨幅>-2<5, 表示这只股票在竞价阶段的波动性较大,可能会带来一定的风险。
有何风险?
- 由于这只股票有较大的波动性,可能会带来一定的风险。
- 如果这只股票没有主力资金流入,可能会导致股价的下跌。
如何优化?
- 可以考虑加入更多因素来优化选股逻辑,例如这只股票的市值、市盈率等。
- 可以考虑加入更多的技术指标来优化选股逻辑,例如布林线、移动平均线等。
最终的选股逻辑
- 今日增仓占比>5%, 昨日9:15匹配价跌停, 竞价涨幅>-2<5, 表示这只股票有主力资金流入,市场对该股票的预期比较悲观,波动性较大,但有一定的上涨潜力。
python代码参考
- 以下代码使用了问财的量化交易库,需要先安装问财库。
- 可以使用以下代码来实现上述的选股逻辑:
import talib
from qtpylib import talib as talib_qtpy
from qtpylib.data import yf
def get筛选条件():
# 获取今日的股票数据
df = yf.download('600036', start='2021-01-01', end='2021-01-01')
# 获取今日的股票成交量数据
df_v = df['volume']
# 获取今日的股票增仓数据
df_a = df['amount']
# 计算今日的股票增仓占比
df_a = df_a / df_v
# 获取昨日的股票跌停数据
df_d = df['close'].shift(1)
df_d = df_d.where(df_d <= 0, 0)
df_d = df_d.shift(-1)
df_d = df_d.where(df_d >= 0, 0)
df_d = df_d.where(df_d == 0, np.nan)
df_d = df_d.dropna()
df_d = df_d.iloc[:-1]
df_d = df_d['close']
# 计算昨日的股票跌停价
df_l = df_d.mean()
# 获取昨日的股票竞价涨幅数据
df_p = df['high'] - df['open']
df_p = df_p.where(df_p >= 0, 0)
df_p = df_p.where(df_p == 0, np.nan)
df_p = df_p.dropna()
df_p = df_p.iloc[:-1]
df_p = df_p['high'] - df['open']
# 计算竞价涨幅的均值
df_m = df_p.mean()
# 判断是否满足筛选条件
df筛选 = df_a > 0.05
df筛选 = df筛选 & df_d == df_l
df筛选 = df筛选 & df_p > -2
df筛选 = df筛选 & df_p < 5
return df筛选
def get股票池():
# 获取所有股票的代码
codes = yf.ticker.all_codes()
# 获取筛选后的股票数据
df筛选 = get筛选条件()
# 获取股票池
df_pool = df筛选.index[df筛选]
return codes[df_pool]
def get_top_n(df_pool, n):
# 获取股票池的成交量数据
df_v = df_pool['volume']
# 获取股票池的成交额数据
df_m = df_pool['amount']
# 计算股票池的成交额排名
df_rank = df_m.rank(pct=True)
# 获取股票池的成交量排名
df_v_rank = df_v.rank(pct=True)
# 获取股票池的成交额和成交量排名
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
