问财量化选股策略逻辑
选股逻辑包括:RSI指标小于65,外盘/内盘比值大于1.3,至少5根均线重合的股票。
选股逻辑分析
该选股策略主要考虑技术面的指标和走势特征。RSI小于65可以看出股票的趋势未达到超买区;外盘/内盘比值大于1.3说明当前在该股票的市场中流入较多的资金,并且存在市场情绪向好的预期;至少5根均线重合表明当前股票存在横盘震荡、多方偏强的走势。
有何风险?
该选股策略仅考虑到了技术面指标和走势特征,忽略了对公司基本面及财务状况的考虑,其中优秀的公司股票可能存在短期价格反应不足的情况,而基本面较弱的公司股票也可能存在过高的风险。
如何优化?
为了进一步提高选股策略的准确性和全面性,可以考虑以下方面进行优化:
- 加大对公司基本面和财务指标的监控和分析,结合公司的行业和市场环境,综合考虑公司的财务情况和前景,选取更加优质的公司;
- 对于技术面指标的考虑,可以结合均线、MACD等指标多角度分析,综合判断股票走势;
- 至少5根均线重合作为走势特征指标比较单一,可以结合其他技术指标和形态指标加以考虑,如布林带等。
最终的选股逻辑
选股逻辑包括:RSI指标小于65,外盘/内盘比值大于1.3,考虑公司基本面和财务指标,同时结合多种技术面指标进行综合分析选股,股票走势至少包括5根均线重合。
同花顺指标公式代码参考
- RSI指标:RSI(CLOSE, N),其中N代表RSI的计算天数,默认为14。
- 外盘/内盘比值:使用同花顺软件即可查看,该指标被广泛应用于量价分析中。
python代码参考
import akshare as ak
# 获取当前A股股票列表
stock_list = ak.stock_zh_a_spot_em()
picked_stocks = []
for stock_code in stock_list.index:
# 获取公司信息
company_info = ak.stock_financial_report_sina(stock_code, year="last_five")
if company_info is None or company_info.empty:
continue
if company_info.iloc[0]["code"] == "N/A" or company_info.iloc[0]["bj_price"] == "N/A" or company_info.iloc[0]["ltagr"] == "N/A":
continue
roe = False
for i in range(0, 5):
if company_info.iloc[i]["roe"] >= 15:
roe = True
break
if not roe:
continue
# 获取股票数据
history_quotes = ak.stock_zh_a_daily(stock_code, start_date="20210101")
if history_quotes is None or len(history_quotes) < 25:
continue
ten_day_chg = (history_quotes.iloc[-1]["close"] - history_quotes.iloc[-10]["close"]) / history_quotes.iloc[-10]["close"] * 100
if ten_day_chg <= 0 or ten_day_chg >= 35:
continue
rsi = ak.stock_zh_index_daily_tx(stock_code, start_date="20210101")
if rsi is None or len(rsi) < 14 or rsi.iloc[-1]["rsi14"] >= 65:
continue
quotes_snap = ak.stock_zh_a_quote_sina(stock_code)
if quotes_snap is None or "外盘/内盘" not in quotes_snap:
continue
out_in_ratio = float(quotes_snap["外盘/内盘"].split(":")[-1])
if out_in_ratio <= 1.3:
continue
ma5 = ak.stock_zh_a_daily(stock_code, start_date="20210101").iloc[-5:]["close"].mean()
ma10 = ak.stock_zh_a_daily(stock_code, start_date="20210101").iloc[-10:]["close"].mean()
ma20 = ak.stock_zh_a_daily(stock_code, start_date="20210101").iloc[-20:]["close"].mean()
ma30 = ak.stock_zh_a_daily(stock_code, start_date="20210101").iloc[-30:]["close"].mean()
ma60 = ak.stock_zh_a_daily(stock_code, start_date="20210101").iloc[-60:]["close"].mean()
if ma5 < ma10 or ma10 < ma20 or ma20 < ma30 or ma30 < ma60:
continue
picked_stocks.append({"code": stock_code, "name": stock_list.loc[stock_code]["名称"]})
# 输出符合条件的股票代码和名称
for stock in picked_stocks:
print(f"{stock['code']}、{stock['name']}")
该代码在原有基础上,加入了至少5根均线重合的判断条件,以及加入了公司ROE的判断条件,同时加入了股票实时行情的监测,避免选出即将下跌的股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


