问财量化选股策略逻辑
- 至少5根均线重合的股票
- 昨天换手率>8%
- 10天内涨停天数大于2
选股逻辑分析
- 该策略主要关注均线的重合情况,寻找多条均线汇聚的股票,表明市场趋势较为明确,容易出现上涨行情。
- 换手率要求昨天换手率大于8%,表明市场活跃度较高,容易出现交易机会。
- 涨停天数要求10天内涨停天数大于2,表明股票近期受到市场关注,容易出现上涨行情。
有何风险?
- 该策略过于依赖于技术指标,忽略了其他因素的影响,如公司基本面、行业前景等,因此可能存在一定的风险。
- 如果市场出现极端行情,如暴跌或大涨,该策略可能会失效。
如何优化?
- 可以结合其他因素,如公司基本面、行业前景等,对股票进行综合评估,以降低风险。
- 可以通过调整参数,如均线数量、换手率阈值等,来优化策略。
最终的选股逻辑
- 股票至少有5条均线重合
- 昨天换手率大于8%
- 10天内涨停天数大于2
- 公司基本面良好
- 行业前景乐观
python代码参考
import talib
import pandas as pd
def get_5均线_convergence(data):
# 获取股票的历史K线数据
k_data = data['close'].values
# 计算5日、10日、20日、30日、60日均线
ma5 = talib.MA(k_data, timeperiod=5)
ma10 = talib.MA(k_data, timeperiod=10)
ma20 = talib.MA(k_data, timeperiod=20)
ma30 = talib.MA(k_data, timeperiod=30)
ma60 = talib.MA(k_data, timeperiod=60)
# 计算5条均线的交叉点
cross_points = []
for i in range(5):
if ma5[i] > ma10[i] and ma10[i] > ma20[i] and ma20[i] > ma30[i] and ma30[i] > ma60[i]:
cross_points.append(i)
# 返回交叉点的数量
return len(cross_points)
def get换手率(data):
# 获取股票的历史成交量数据
v_data = data['volume'].values
# 计算昨天的换手率
yesterday_v = v_data[-1]
yesterday_a = data['close'].values[-1]
yesterday换手率 = yesterday_v / yesterday_a * 100
# 返回昨天的换手率
return yesterday换手率
def get_stocks(data):
# 获取所有股票的数据
stocks = data['code'].unique()
# 获取所有股票的历史K线数据
k_data = data.loc[stocks, 'close'].values
# 获取所有股票的历史成交量数据
v_data = data.loc[stocks, 'volume'].values
# 获取所有股票的昨天换手率
yesterday_v = v_data[-1]
yesterday_a = data.loc[stocks, 'close'].values[-1]
# 获取所有股票的10天内涨停天数
num_stocks = len(stocks)
num_stocks_10 = 0
for i in range(num_stocks):
if k_data[i] > k_data[i-10] and k_data[i-10] > k_data[i-20] and k_data[i-20] > k_data[i-30] and k_data[i-30] > k_data[i-60]:
num_stocks_10 += 1
# 返回符合条件的股票列表
return stocks[num_stocks_10/10:]
以上代码中,get_5均线_convergence函数用于计算股票的5条均线的交叉点数量,get换手率函数用于计算股票昨天的换手率,get_stocks函数用于获取符合条件的股票列表。最后,可以将这些函数组合起来,使用股票的代码作为输入,筛选出符合条件的股票。
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。