问财量化选股策略逻辑
- 至少5根均线重合的股票
- 10日涨幅大于0小于35
- 换手率3%-12%
选股逻辑分析
- 5根均线重合,意味着股票的价格趋势比较稳定,且有较强的支撑和阻力,有利于股票的长期走势。
- 10日涨幅大于0小于35,说明股票近期有一定的上涨趋势,但还没有达到过高的程度,可以避免追高风险。
- 换手率3%-12%,说明股票的流动性适中,交易活跃度较高,有利于股票的交易和流通。
有何风险?
- 该策略只考虑了股票的短期趋势和流动性,没有考虑公司的基本面和行业前景等因素,可能会导致选出的股票表现不佳。
- 如果股票的价格波动较大,可能会导致均线的重合程度不明显,影响策略的准确性。
如何优化?
- 可以考虑加入更多的均线和指标,如20日均线、MACD等,以更全面地分析股票的趋势和风险。
- 可以结合公司的基本面和行业前景等因素,对股票进行更全面的评估和筛选,以提高策略的准确性。
最终的选股逻辑
- 选取至少5根均线重合的股票
- 10日涨幅大于0小于35
- 换手率3%-12%
- 结合公司的基本面和行业前景等因素,对股票进行更全面的评估和筛选
python代码参考
import talib
import pandas as pd
def get_rolling_average(prices, n):
"""计算n日的滚动平均值"""
return prices.rolling(n).mean()
def get_crossed_moving_average(prices, fast_n, slow_n):
"""判断fast_n日移动平均线是否交叉slow_n日移动平均线"""
fast_ma = get_rolling_average(prices, fast_n)
slow_ma = get_rolling_average(prices, slow_n)
if fast_ma[-1] > slow_ma[-1]:
return True
else:
return False
def get_stable_stock(prices, n1, n2, n3):
"""判断股票是否为稳定股票"""
ma1 = get_rolling_average(prices, n1)
ma2 = get_rolling_average(prices, n2)
ma3 = get_rolling_average(prices, n3)
if ma1[-1] == ma2[-1] == ma3[-1]:
return True
else:
return False
def get_crossing_stable_stock(prices, n1, n2, n3):
"""判断股票是否为稳定股票,并且是否出现均线交叉"""
ma1 = get_rolling_average(prices, n1)
ma2 = get_rolling_average(prices, n2)
ma3 = get_rolling_average(prices, n3)
if ma1[-1] == ma2[-1] == ma3[-1] and get_crossed_moving_average(prices, n1, n2):
return True
else:
return False
def get_stable_stocks(prices):
"""获取至少5根均线重合的稳定股票"""
n1 = 10
n2 = 20
n3 = 30
stocks = []
for i in range(len(prices)):
if get_crossing_stable_stock(prices, n1, n2, n3):
stocks.append(prices[i])
return stocks
def get_stocks_with_positive_trend(prices):
"""获取10日涨幅大于0小于35的股票"""
stocks = []
for i in range(len(prices)):
if prices[i] > prices[i-10] and prices[i] < prices[i-10] + 35:
stocks.append(prices[i])
return stocks
def get_stocks_with_positive_trend_and_stable_prices(prices):
"""获取10日涨幅大于0小于35的稳定股票"""
stocks = []
for i in range(len(prices)):
if prices[i] > prices[i-10] and prices[i] < prices[i-10] + 35 and get_stable_stock(prices, 10, 20, 30):
stocks.append(prices[i])
return stocks
def get_stocks_with_positive_trend_and_stable_prices_with换手率限制(prices, min换手率):
"""获取10日涨幅大于0小于35的稳定股票,并且换手率大于等于min换手率"""
stocks = []
for i in range(len(pr
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
