问财量化选股策略逻辑
选股逻辑包括:RSI小于65,外盘/内盘大于1.3,企业性质。
选股逻辑分析
该选股策略在RSI小于65和外盘/内盘大于1.3的基础上,加入了企业性质这一指标,考虑了市场情绪和企业基本面。该策略的优势在于能够综合分析多个角度,筛选出较佳股票。
有何风险?
- 企业性质指标选择可能不够准确,偏离了实际情况;
- 企业性质难以量化,可能造成选股误差;
- 如果企业属性是主观判断,可能存在人为干预和不准确的情况。
如何优化?
为了优化选股策略,可以尝试以下方式:
- 通过更加科学的手段量化企业属性,减少主观错误;
- 将企业性质分解成更加有效的企业基本面指标,加入到选股逻辑中;
- 根据市场需求和行情适当调整策略参数,以求达到更好的选股效果。
最终的选股逻辑
选股逻辑应包括RSI小于65,外盘/内盘大于1.3,企业基本面指标。企业基本面指标可以考虑财务指标、盈利情况、市场地位等具体因素。综合考虑市场情绪和企业基本面,以更好地筛选符合标准的股票。
同花顺指标公式代码参考
选股公式:(
( zft(2) <= 0 )
AND ( zft(24) > 0 )
AND ( rsi(14) > 40 AND rsi(14) < 65 )
AND ( otv(120)/itv(120) >= 1.3 )
AND ( f04 NOT CONTAINS "ST" )
AND ( yf2 >= 0.05 AND yf2 <= 0.3 )
AND ( qf("财务数据.date",12) < 100
AND qf("财务数据.date",6) < 25
AND qf("财务数据.date",0) < 10
AND qf("财务数据.llbqd",12) < 0
AND qf("财务数据.llbqd",6) < 0
AND qf("财务数据.llbqd",0) < 0
AND qf("财务数据.jbmgsy",12) > 0
AND qf("财务数据.jbmgsy",6) > 0
AND qf("财务数据.jbmgsy",0) > 0
)
AND ( index_data.adv_21 > 0 )
AND ( stock_data.市盈率 < 50 )
AND ( index_data.f1 > 0 )
AND ( chk_cpdm(0,8) > 600000)
)
python代码参考
import akshare as ak
import pandas as pd
from datetime import datetime, date, timedelta
# 获取当前A股股票列表
stock_list = ak.stock_zh_a_spot_em()
picked_stocks = []
for stock_code in stock_list.index:
# 获取股票数据
history_quotes = ak.stock_zh_a_daily(stock_code)
if history_quotes is None or len(history_quotes) < 60 or history_quotes.iloc[-1]["open"] <= 0 or history_quotes.iloc[-1]["volume"] <= 0:
continue
if (datetime.now().date() - datetime.strptime(history_quotes.iloc[-1]["date"], "%Y-%m-%d").date()).days < 60:
continue
rsi = ak.stock_zh_index_daily_tx(stock_code)
if rsi is None or len(rsi) < 14 or rsi.iloc[-1]["rsi14"] >= 65 or rsi.iloc[-1]["rsi14"] <= 40:
continue
day_quotes = ak.stock_zh_a_minute_em(stock_code, period="daily")
if day_quotes is None or len(day_quotes) < 2:
continue
if day_quotes.iloc[-1]["b_volume"] / day_quotes.iloc[-1]["last_volume"] <= 1.3:
continue
stock_info = stock_list.loc[stock_code]
if "ST" in stock_info["名称"]:
continue
finance_data = ak.stock_financial_report_sina(stock_code)
if finance_data is None or len(finance_data) < 12:
continue
if finance_data.iloc[-1]["净利润同比增长率"] < 0 or finance_data.iloc[-2]["净利润同比增长率"] < 0 or finance_data.iloc[-3]["净利润同比增长率"] < 0:
continue
if finance_data.iloc[-1]["基本每股收益"] <= 0 or finance_data.iloc[-2]["基本每股收益"] <= 0 or finance_data.iloc[-3]["基本每股收益"] <= 0:
continue
if finance_data.iloc[-1]["总资产利润率"] <= 0 or finance_data.iloc[-2]["总资产利润率"] <= 0 or finance_data.iloc[-3]["总资产利润率"] <= 0:
continue
pe_ratio = ak.stock_a_board(stock_code)["pe_ratio"][0]
if pe_ratio > 50:
continue
picked_stocks.append({"code": stock_code})
# 输出符合条件的股票代码和名称
for stock in picked_stocks:
stock_info = stock_list.loc[stock["code"]]
if stock_info["名称"] == "None":
continue
print(f"{stock['code']}、{stock_info['名称']}")
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


