问财量化选股策略逻辑
- 至少5根均线重合的股票
- 换手率>2%且<9%
- 今日均线向上发散
选股逻辑分析
- 这个策略基于技术分析,通过观察股票的均线和换手率来筛选出可能具有投资价值的股票。
- 首先,至少5根均线重合的股票通常被认为是趋势较为平缓的股票,这可能意味着市场对该股票的看法较为一致,从而减少市场风险。
- 其次,换手率>2%且<9%的股票通常被认为是活跃的股票,这意味着市场对该股票的关注度较高,同时也表明该股票的流通性较好。
- 最后,今日均线向上发散的股票通常被认为是市场看涨的信号,这可能意味着未来该股票的价格有上涨的趋势。
有何风险?
- 这个策略的局限性在于它只能基于历史数据进行分析,因此无法预测未来市场走势。
- 此外,这个策略只能筛选出部分股票,而不能保证筛选出的股票一定会有投资价值。
如何优化?
- 可以考虑加入更多均线的组合,以更准确地判断股票的趋势。
- 可以考虑加入其他技术指标,如MACD等,以更全面地分析股票的走势。
最终的选股逻辑
- 选取至少5根均线重合的股票
- 选取换手率>2%且<9%的股票
- 选取今日均线向上发散的股票
- 进行综合分析,筛选出可能具有投资价值的股票
python代码参考
import talib
def get_rolling_mean(data, n):
"""
获取n日的滚动平均值
data: 要计算平均值的数据序列
n: 滚动平均值的天数
"""
rolling_mean = talib.MA(data, n)
return rolling_mean
def get均线重合股票(data):
"""
获取至少5根均线重合的股票
data: 要计算均线重合的股票数据序列
"""
# 获取5日、10日、20日、60日和120日均线
ma5 = get_rolling_mean(data, 5)
ma10 = get_rolling_mean(data, 10)
ma20 = get_rolling_mean(data, 20)
ma60 = get_rolling_mean(data, 60)
ma120 = get_rolling_mean(data, 120)
# 计算5日、10日、20日、60日和120日均线的差值
diff5 = ma5[-1] - ma5[-6]
diff10 = ma10[-1] - ma10[-6]
diff20 = ma20[-1] - ma20[-6]
diff60 = ma60[-1] - ma60[-6]
diff120 = ma120[-1] - ma120[-6]
# 获取至少5根均线重合的股票
result = []
for i in range(len(diff5) - 6):
if diff5[i] == diff10[i] == diff20[i] == diff60[i] == diff120[i]:
result.append(data[i])
return result
def get_stocks_with_high_volume(data):
"""
获取换手率>2%且<9%的股票
data: 要计算换手率的股票数据序列
"""
# 获取股票的成交量数据
volume = data['volume']
# 获取换手率的计算公式
turnover = volume / data['close'] * 100
# 获取换手率>2%且<9%的股票
result = []
for i in range(len(turnover)):
if turnover[i] > 2 and turnover[i] < 9:
result.append(data[i])
return result
def get_stocks_with_upward_moving_average(data):
"""
获取今日均线向上发散的股票
data: 要计算均线的股票数据序列
"""
# 获取股票的均线数据
ma = talib.MA(data, 5)
# 获取今日均线向上发散的股票
result = []
for i in range(len(ma)):
if ma[i] > ma[i-1] and ma[i] > ma[i-2]:
result.append(data[i])
return result
def get_stocks筛选逻辑
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
