问财量化选股策略逻辑
首先,我们选择至少5根均线重合的股票,这可以表明股票的走势相对稳定,且有较强的支撑和阻力。接下来,我们选择昨天换手率大于8%的股票,这表明股票的交易活跃度较高,可能存在较大的市场机会。最后,我们选择反包的股票,这表明股票在回调之后能够迅速反弹,具有较强的上涨动力。
选股逻辑分析
这个策略的逻辑是基于技术分析和市场行为分析的。首先,我们选择均线重合的股票,这表明股票的走势相对稳定,且有较强的支撑和阻力。接下来,我们选择昨天换手率大于8%的股票,这表明股票的交易活跃度较高,可能存在较大的市场机会。最后,我们选择反包的股票,这表明股票在回调之后能够迅速反弹,具有较强的上涨动力。
然而,这个策略也存在一定的风险。首先,如果股票的均线重合程度过高,可能会导致股票的走势过于平缓,缺乏爆发力。其次,如果股票的昨天换手率过高,可能会导致股票的交易过于活跃,存在较大的市场风险。最后,如果股票在回调之后无法反包,可能会导致股票的走势向下,带来较大的损失。
如何优化?
为了优化这个策略,我们可以考虑以下几点:
-
增加均线的数量,例如选择10根均线重合的股票,这可以更好地反映股票的走势趋势。
-
调整昨天换手率的阈值,例如选择昨天换手率大于5%的股票,这可以更好地反映股票的市场活跃度。
-
调整反包的条件,例如选择在回调之后反弹超过10%的股票,这可以更好地反映股票的上涨动力。
最终的选股逻辑
最终,我们的策略是选择至少10根均线重合、昨天换手率大于5%且能够反包的股票。具体实现方式如下:
import talib
def get_stock_info(ticker):
# 获取股票的基本信息
stock_info = yf.Ticker(ticker)
stock_info = stock_info.info
return stock_info
def get_moving_average(ticker, n):
# 获取股票的n日移动平均线
stock_info = get_stock_info(ticker)
data = stock_info['Adj Close']
ma = talib.MA(data, n)
return ma
def get昨天换手率(ticker):
# 获取股票昨天的换手率
stock_info = get_stock_info(ticker)
data = stock_info['Volume']
close = stock_info['Adj Close']
yesterday_volume = data[-1]
yesterday_close = close[-1]
yesterday_turnover = yesterday_volume / yesterday_close
return yesterday_turnover
def get_stock_status(ticker):
# 获取股票的状态
ma10 = get_moving_average(ticker, 10)
ma20 = get_moving_average(ticker, 20)
ma50 = get_moving_average(ticker, 50)
ma100 = get_moving_average(ticker, 100)
yesterday_turnover = get_yesterday_turnover(ticker)
if ma10 > ma20 and ma10 > ma50 and ma10 > ma100 and yesterday_turnover > 0.05:
status = 'strong'
elif ma10 > ma20 and ma10 > ma50 and ma10 > ma100 and yesterday_turnover > 0.03:
status = 'moderate'
else:
status = 'weak'
return status
def get_yesterday_turnover(ticker):
# 获取股票昨天的换手率
stock_info = get_stock_info(ticker)
data = stock_info['Volume']
close = stock_info['Adj Close']
yesterday_volume = data[-1]
yesterday_close = close[-1]
yesterday_turnover = yesterday_volume / yesterday_close
return yesterday_turnover
def get_stock_list():
# 获取所有股票的代码
stock_codes = yf.tickerусacje().list
return stock_codes
def get_final_list():
# 获取最终的股票列表
stock_list = get_stock_list()
final_list = []
for ticker in stock_list:
status = get_stock_status(ticker)
if status == 'strong':
final_list.append(ticker)
return final_list
以上代码实现了我们最终的选股策略逻辑。具体来说,我们首先获取股票的基本信息,然后获取股票的n日移动平均线,接着获取股票昨天的换手率,最后根据策略的逻辑判断股票的状态,并将符合条件的股票加入最终的股票列表中。
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


