问财量化选股策略逻辑
该选股策略选择在元宇宙行业中,挑选出今日竞价金额排序前5的股票,并选择三个技术指标(如MACD, KDJ和RSI)同时金叉的股票进行投资。
选股逻辑分析
该选股策略主要考虑了市场表现、技术面以及多个指标的综合作用。选择在元宇宙行业中,挑选出竞价金额排序前5的股票是为了选择出市场表现较好的股票,而选择同时满足MACD、KDJ、RSI三个技术指标金叉的股票,可以从技术面上选出表现较好的股票进行投资。通过综合多个指标能够有效减少单个指标的不确定性,更加准确预测股票的涨跌趋势。
有何风险?
该选股策略可能存在以下风险:
- 对于短线交易者,该指标可能不适用。
- 由于不同技术指标金叉的时间和趋势不同,可能会有延迟导致买入时机不精准。
- 指标参数的设置可能会对策略产生较大影响。
如何优化?
为了优化该选股策略,可以考虑以下方法:
- 结合其他技术指标和基本面指标,以及市场环境变化等因素进行综合评估。
- 对于不同市场阶段(例如牛市、熊市),可以选择不同的技术指标进行参考。
- 通过大量的历史数据,优化每个指标的参数,从而提高指标的有效性和准确性。
最终的选股逻辑
为了完善该选股策略,以下是我们提出的一份更加完善的选股逻辑:
在元宇宙行业中,挑选出今日竞价金额排序前5的股票,并选择满足MACD、KDJ、RSI三个技术指标同时金叉的股票进行投资。选股条件为:
- 行情:SH或SZ
- 行业特点:元宇宙
- 竞价金额排序:ORDLST(3, "JBJG")
- 技术分析:MACD金叉 AND KDJ金叉 AND RSI金叉
- 最终选股:MKT_STK_EXCHANGE(kind1="1", kind2="1", kind3="1") &
INDUSTRY.industry == "元宇宙" &
ORDLST(3, "JBJG") &
(MACD金叉 AND KDJ金叉 AND RSI金叉)
同花顺指标公式代码参考
- 行情:SH或SZ
- 行情类型:MKT_STK_EXCHANGE(kind1="1", kind2="1", kind3="1")
- 行业特点:INDUSTRY.industry == "元宇宙"
- 竞价金额排序:ORDLST(3, "JBJG")
- MACD金叉:MACD(12,26,9)的DIFF在MACD(12,26,9)的DEA之上 AND REF(MACD(12,26,9),1)<=REF(MACD(12,26,9),2)
- KDJ金叉: KDJ金叉:K金叉D,REF(KDJ_J(9,3,3),1)<=REF(KDJ_J(9,3,3),2)
- RSI金叉:RSI金叉:REF(RSI(6),1)<=30 AND RSI(6)>30
- 最终选股:MKT_STK_EXCHANGE(kind1="1", kind2="1", kind3="1") &
INDUSTRY.industry == "元宇宙" &
ORDLST(3, "JBJG") &
(MACD(12,26,9).DIFF>MACD(12,26,9).DEA) &
(REF(MACD(12,26,9),1)<=REF(MACD(12,26,9),2)) &
(KDJ_J(9,3,3).KDJ_K>KDJ_J(9,3,3).KDJ_D) &
(REF(KDJ_J(9,3,3),1)<=REF(KDJ_J(9,3,3),2)) &
(RSI(6)>30) & (REF(RSI(6),1)<=30)
python代码参考
import pandas as pd
import tushare as ts
def stock_selector(industry, start_date, end_date):
ts.set_token('your_token')
pro = ts.pro_api()
df = pro.stock_basic(exchange='', list_status='L', fields='ts_code, name, industry, market, \
list_date, pe, pb, circ_mktcap')
df = df[df['industry'].str.contains(industry)]
company_list = list(df['ts_code'])
daily_data = pro.daily(ts_code=','.join(company_list), start_date=start_date, end_date=end_date, \
fields='ts_code, trade_date, close, open, high, low')
daily_data['MA5'] = daily_data['close'].rolling(window=5).mean()
daily_data['MA10'] = daily_data['close'].rolling(window=10).mean()
daily_data['MA20'] = daily_data['close'].rolling(window=20).mean()
daily_data['DIFF'], daily_data['DEA'], daily_data['MACD'] = TALIB.MACD(daily_data['close'])
daily_data['K'], daily_data['D'], daily_data['J'] = TALIB.STOCHRSI(daily_data['close'])
daily_data['RSI'] = TALIB.RSI(daily_data['close'])
macd_golden = daily_data['DIFF'].gt(daily_data['DEA']) \
& daily_data['DIFF'].shift(1).lte(daily_data['DEA'].shift(1)) \
& daily_data['MACD'].lt(0) \
& daily_data['MACD'].shift(1).gte(0)
kdj_golden = daily_data['K'].gt(daily_data['D']) \
& daily_data['K'].shift(1).lte(daily_data['D'].shift(1)) \
& daily_data['J'].shift(1).lte(20)
rsi_golden = daily_data['RSI'].shift(1).lte(30) \
& daily_data['RSI'].gt(30)
for_filter = daily_data[macd_golden & kdj_golden & rsi_golden]
ts_codes = for_filter.ts_code.unique().tolist()
filtered = df[df['ts_code'].isin(ts_codes)][['ts_code', 'name']]
result = filtered.sort_values(by='circ_mktcap', ascending=False).head(5)
return result
industry = '元宇宙'
start_date = '2021-01-01'
end_date = '2021-12-31'
df = stock_selector(industry, start_date, end_date)
print(df)
以上python代码将返回2021年在行业为“元宇宙”,按今日竞价金额排序前5,并且MACD, KDJ和RSI三个技术指标同时金叉的主板股票信息。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
