问财量化选股策略逻辑
本策略逻辑为:RSI指标小于65,涨跌幅×超大单净量,三个技术指标(如MACD、KDJ、DMA等)同时金叉。综合考虑技术面因素,筛选出近期表现相对较好的个股。
选股逻辑分析
本选股策略主要关注技术面因素,在RSI指标小于65的基础上,将涨跌幅×超大单净量作为资金面因素,并要求三个技术指标(如MACD、KDJ、DMA等)同时金叉,以体现股票当前的相对强势。筛选出符合条件的个股,有望具有进一步上涨的潜力。
有何风险?
在该选股策略中,不同的技术指标可能存在冲突或矛盾的情况。同时,资金面因素涨跌幅和超大单净量也可能存在突发事件和不确定性的影响。
如何优化?
可加入其他技术面指标如RSI等综合筛选,同时加入基本面因素如ROE、营收增长率等,以提高选股策略的稳定性和准确性。
最终的选股逻辑
本选股策略为:RSI指标小于65,涨跌幅×超大单净量,三个技术指标(如MACD、KDJ、DMA等)同时金叉。综合考虑技术面因素,筛选出近期表现相对较好的个股。
同花顺指标公式代码参考
无
python代码参考
# 导入需要使用的库
import math
import pandas as pd
import tushare as ts
# 选股函数
def stock_picking():
# 获取RSI指标小于65,涨跌幅×超大单净量,三个技术指标(如MACD、KDJ、DMA等)同时金叉的股票
data = ts.get_today_all()
data = data.dropna()
filter_data = data[(data['pb'] > 0)
& (data['pe'] > 0)
& (data['rsi_14'] < 65)
& (data['changepercent'] * data['superBigNetInflowRatio'] > 1)]
macd = data.groupby('code').apply(lambda x: MACD(x['trade'])[0]).reset_index()
kdj = data.groupby('code').apply(lambda x: KDJ(x['high'], x['low'], x['trade'])[0]).reset_index()
dma = data.groupby('code').apply(lambda x: DMA(x['high'], x['low'], x['trade'], 10, 50, 10)[0]).reset_index()
filter_data = pd.merge(filter_data, macd, on='code', how='left')
filter_data = pd.merge(filter_data, kdj, on='code', how='left')
filter_data = pd.merge(filter_data, dma, on='code', how='left')
filter_data = filter_data[(filter_data['dif'] > filter_data['dea']) & (filter_data['kdj_k'] > filter_data['kdj_d']) & (filter_data['dma_dif'] > filter_data['dma_dem'])]
return filter_data
# MACD指标函数
def MACD(close):
# 计算EMA12和EMA26
EMA12 = close.ewm(span=12, adjust=False).mean()
EMA26 = close.ewm(span=26, adjust=False).mean()
# 计算DIF
DIF = EMA12 - EMA26
# 计算DEA
DEA = DIF.ewm(span=9, adjust=False).mean()
# 计算MACD
MACD = (DIF - DEA) * 2
return DIF, DEA, MACD
# KDJ指标函数
def KDJ(high, low, close, n=9, m1=3, m2=3):
# 计算RSV
max_high = high.rolling(n, min_periods=1).max()
min_low = low.rolling(n, min_periods=1).min()
RSV = (close - min_low) / (max_high - min_low) * 100
# 计算K值和D值
k_values = RSV.ewm(com=m1 - 1, adjust=False).mean()
d_values = k_values.ewm(com=m2 - 1, adjust=False).mean()
# 计算J值
j_values = k_values * 3 - d_values * 2
return k_values, d_values, j_values
# DMA指标函数
def DMA(high, low, close, n, m, p):
# 计算MA
MA_n = close.rolling(n, min_periods=1).mean()
MA_m = close.rolling(m, min_periods=1).mean()
# 计算DIF
DIF = MA_n - MA_m
# 计算DMA
DMA = DIF.rolling(p, min_periods=1).mean()
# 计算DMA的DEA
DEA = DMA.rolling(7, min_periods=1).mean()
return DIF, DMA, DEA
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
