问财量化选股策略逻辑
选股逻辑为:振幅大于1,换手率>2%且<9%,KDJ指标中K值增长。该选股策略主要以技术面指标为主,即振幅、换手率和KDJ指标中K值增长,以筛选出潜在股票走势较强的标的。
选股逻辑分析
该选股逻辑主要以技术面指标为主,通过振幅和换手率来判断股票的走势和市场认可度,同时加入KDJ指标中K值增长的要求,以筛选出潜在走势较强的标的,该选股策略较为具有针对性和操作性。
有何风险?
该选股策略也存在一定的风险。首先,单纯依靠技术面指标可能会忽略掉一些股票的基本面因素,也可能会错过一些优质标的。其次,KDJ指标中K值增长的时间长度不好确定,在一些特殊行情中可能会导致误判,如在震荡行情中,KDJ指标中K值不易上升,但一定会有一些股票震荡行情中也有较好表现,可能会被排除掉。
如何优化?
为减少筛选出来的标的中的误判,可以加入更多的技术面指标,如MACD、RSI等指标,以充分判断股票的走势情况。同时,可以将KDJ指标中K值增长的时间长度作为可调节参数,并加入更多的行情判断,以取得更好的结果。
最终的选股逻辑
选股条件为:振幅大于1,换手率>2%且<9%,KDJ指标中K值增长。同时,加入更加完备的技术面指标,并将KDJ指标中K值增长的时间长度作为可调节参数,以更准确地筛选出符合条件的标的。
同花顺指标公式代码参考
选股条件为:振幅大于1,换手率>2%且<9%,KDJ指标中K值增长。
C1: ABS((HIGH/LOW-1)*100)>=1;//振幅大于1
C2: TURNOVER>2 AND TURNOVER<9;//换手率大于2%小于9%
C3: REF((CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,2)>REF((CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,3);//KDJ指标中K值增长
SYMBOL: C1 AND C2 AND C3;
Python代码参考
import pandas as pd
import tushare as ts
def select_stocks(length):
ts.set_token('your token')
pro = ts.pro_api()
# 获取股票数据
stock_data = pro.stock_basic(list_status='L', exchange='SSE', fields='ts_code,symbol,name,industry,list_date')
current_date = '20220308'
# 筛选符合条件的股票
selected_stocks = []
for index, row in stock_data.iterrows():
code = row['ts_code']
info = {}
info['code'] = code
info['name'] = row['name']
# 排除科创板股票
industry = row['industry']
if industry.startswith('688'):
continue
# 获取技术数据
tech_data = pro.daily(ts_code=code, start_date='20220301', end_date=current_date, fields='high,low,close,vol,open')
if tech_data.empty:
continue
# 获取KDJ指标中K值
kdj_data = pro.index_daily(ts_code='000001.SH', start_date='20220301', end_date=current_date, fields='close,low,high')
kdj_n = 9
kdj_rsv = (tech_data['close'] - tech_data['low'].rolling(kdj_n).min()) / (tech_data['high'].rolling(kdj_n).max() - tech_data['low'].rolling(kdj_n).min())
kdj_k = pd.DataFrame({'kdj_k': [50]}).append(kdj_rsv.apply(lambda x: 2/3 * kdj_k.iloc[-1]['kdj_k'] + 1/3 * x * 100)).reset_index(drop=True)
# 获取KDJ指标中K值增长
kdj_k_growth = (kdj_k['kdj_k'] - kdj_k.shift(1)['kdj_k']).iloc[-1]
high = tech_data.iloc[-1]['high']
low = tech_data.iloc[-1]['low']
if kdj_k_growth > 0 and (high - low) > 1 and tech_data.iloc[-1]['vol'] / pro.stock_basic(ts_code=code).iloc[0]['total_share'] > 0.02 and tech_data.iloc[-1]['vol'] / pro.stock_basic(ts_code=code).iloc[0]['total_share'] < 0.09:
selected_stocks.append(info)
if len(selected_stocks) >= length:
break
return selected_stocks
致辞
本次问答为问财量化选股策略逻辑的第六十四篇,该选股策略主要以技术面指标为主,加入KDJ指标中K值增长的要求,以筛选出潜在股票走势较强的标的。在未来的选股过程中,应该结合更多的市场因素,建立更全面、更科学的量化分析体系,以获得更好的选股效果。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
