问财量化选股策略逻辑
选股逻辑为:RSI指标小于65、归属母公司股东的净利润同比增长率大于20%小于等于100%、三个技术指标同时金叉。该选股逻辑对技术面和基本面均有关注,通过股票的成交量、公司的盈利能力和股价走势,寻找具有投资价值的股票。
选股逻辑分析
该选股逻辑结合了技术面和基本面,通过RSI指标、归属母公司股东的净利润同比增长率和三个技术指标同时金叉来进行选股。要求股票的RSI指标小于65,表明此时股票处于下降趋势,有一定的买入机会;同时要求归属母公司股东的净利润同比增长率大于20%小于等于100%,说明公司具有增长性;最后需要三个技术指标同时出现金叉,表示股票价格走势向好。
有何风险?
该选股逻辑仅考虑了技术面和基本面的筛选,可能无法全面了解企业的财务状况。同时,三个技术指标同时金叉的条件相对严格,可能会排除掉一些潜在优质股票。此外,该选股逻辑无法处理复杂的市场情况和行情波动,且缺乏风险控制和资产分散化的要求。
如何优化?
可以增加其他技术指标、如MACD、KDJ等来获取更全面的技术信号。同时增加其他财务指标、如市盈率、市净率等,以获取更全面的公司估值信息,从而更全面地了解企业的财务状况。同时,可以考虑放宽三个技术指标同时金叉的条件,以减少可能排除掉的优质股票;并对筛选结果进行综合分析,以降低风险。
最终的选股逻辑
选股逻辑为:RSI指标小于65、归属母公司股东的净利润同比增长率大于20%小于等于100%、三个技术指标(可选MACD、KDJ、DMI等)同时金叉。该选股逻辑通过技术面和基本面相结合的方式,考虑了股票成交量、公司盈利能力和股价走势,寻找具有投资价值的股票。
同花顺指标公式代码参考
// 筛选A股
SELECT S_INFO_WINDCODE
FROM ASHAREDESCRIPTION
WHERE S_INFO_EXCHMARKET IN ('SZSE', 'SSE')
AND S_INFO_LISTEDSTATE = '上市'
AND S_INFO_LASTTRADEDATE IS NULL
AND S_INFO_WINDCODE IN (
SELECT S_INFO_WINDCODE
FROM ASHAREINCOME
WHERE S_FA_YEAR >= 2018
AND S_FA_REPORT_TYPE = 'A'
AND S_FA_PROFIT_PARENT_COMPANY > 0
AND S_FA_PROFIT_PARENT_COMPANY / LAG(S_FA_PROFIT_PARENT_COMPANY, 3) > 1
AND S_FA_PROFIT_PARENT_COMPANY / LAG(S_FA_PROFIT_PARENT_COMPANY, 3) <= 2
)
AND S_INFO_WINDCODE IN (
SELECT S_INFO_WINDCODE
FROM (
SELECT S_INFO_WINDCODE, S_DQ_AVGPRICE, MACD, KDJ, DMI
FROM ASHAREEODPRICES
WHERE TRADE_DT = 20210112
AND MACD >= 0
AND KDJ_K > KDJ_D
AND DMI_DI > DMI_MD
)
)
Python代码参考
# 导入需要用到的库
import pandas as pd
import tushare as ts
import talib
# 选股函数
def stock_picking(data):
# 计算RSI指标
rsi = talib.RSI(data['close'], timeperiod=14)
# 筛选A股
stock_list = ts.get_stock_basics().index.tolist()
data = data.loc[data.index.get_level_values(0).isin(stock_list)]
# 计算归属母公司股东的净利润同比增长率
data['net_profits_growth'] = data['net_profits'].pct_change()
# 计算三个技术指标并找出金叉
macd, signal, hist = talib.MACD(data['close'])
k, d = talib.STOCH(data['high'], data['low'], data['close'])
di_plus, di_minus = talib.PLUS_DI(data['high'], data['low'], data['close'])
filter_cond = (macd > signal) & (k > d) & (di_plus > di_minus)
# 筛选满足条件的股票
filter_cond = (rsi < 65) & (data['net_profits_growth'] > 0.2) & (data['net_profits_growth'] <= 1) & filter_cond
stock_list = data[filter_cond].index.tolist()
return stock_list
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


