问财量化选股策略逻辑
选股逻辑为:振幅大于1、9点25分涨幅小于6%、三个技术指标同时金叉。该选股策略主要考虑了股票的技术面和短期趋势性,可以作为选股的参考因素之一。
选股逻辑分析
该选股逻辑主要考虑了股票的技术面和短期趋势性,同时结合了技术指标的金叉信号,可以更好地捕捉股票短期市场趋势和技术面,进而有效地过滤掉一些技术面较差的股票,提高选股的有效性。技术指标金叉主要是指多条均线中短期均线金叉长期均线,同时MACD柱线等指标也通过金叉信号来确认市场趋势。该选股逻辑可以更好地判断市场的短期趋势,从而作出相应的投资决策。
有何风险?
该选股逻辑仍然较为注重短期的市场趋势和技术面,忽略了公司基本面因素的影响,并且在技术指标的设置上需考虑不同的时间周期和市场条件,防止产生假信号。同时,技术指标的使用需要一定的技术分析能力,需要投资者了解指标的计算原理和指标之间的关系,以避免不当的应用和误判。
如何优化?
可以结合公司基本面和行业趋势等因素进行综合分析,避免单一因素的影响,提高选股策略的精准性和可靠性。在技术指标的设置上,可以采用多种不同的指标和时间周期,结合不同市场条件和行情特点进行判断,并加入其它辅助指标进行综合分析,提高选股策略的准确性和可靠性。对于不熟悉技术分析的投资者,可以参考一些专业分析师的观点,或者选择一些综合性强、可靠性高的选股模型进行参考,以避免技术分析产生不必要的误判。
最终的选股逻辑
选股逻辑为:振幅大于1、9点25分涨幅小于6%、同时三个技术指标(如MACD、KDJ、RSI等)出现金叉信号(短期均线金叉长期均线、MACD柱线等于0、KDJ指标在上升窗口呈金叉等),同时结合公司基本面、行业趋势等因素进行综合分析,确保选股策略的科学性和实用性。
同花顺指标公式代码参考
FZ_RANGE > 1 AND LAST/LAST[1]-1 <= 0.06 AND ((CROSS(MA(CLOSE, 5), MA(CLOSE, 10)) AND CROSS(MA(CLOSE, 5), MA(CLOSE, 20))) AND (CROSS(MACD, 0) AND CROSS(KDJ, KDJ_SIGNAL)))
其中,FZ_RANGE
表示股票振幅,LAST
表示当日的收盘价,CROSS
表示两个均线金叉,MA(CLOSE, 5)
表示收盘价的五日均线,MACD
和KDJ
分别表示MACD和KDJ指标,KDJ_SIGNAL
表示KDJ的信号线。如果符合筛选条件,则将该股票加入选股池。
Python代码参考
import tushare as ts
from datetime import datetime, timedelta
def get_selected_stocks():
pro = ts.pro_api()
selected_stocks = []
for ts_code in pro.stock_basic(exchange='', list_status='L', fields='ts_code,industry').values.tolist():
# 振幅大于1
k_data = pro.daily(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=30)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,high,low')
highest_price = k_data['high'][0]
lowest_price = k_data['low'][0]
for idx, k in k_data.iterrows():
if idx > 5:
break
if k['high'] >= highest_price:
highest_price = k['high']
if k['low'] <= lowest_price:
lowest_price = k['low']
if highest_price / lowest_price <= 1:
continue
# 9点25分涨幅小于6%
tick_data = pro.tick(ts_code=ts_code[0], date=datetime.now().strftime('%Y%m%d'))
current_price = tick_data[tick_data['time'] == '09:25:00']['price'].values[0]
pre_close = pro.daily(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=6)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,close', freq='1D').iloc[1]['close']
if current_price / pre_close >= 1.06:
continue
# 三个技术指标同时金叉
MA5 = pro.ma(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=6)).strftime('%Y%m%d'), end_date='', fields='ma5')
MA10 = pro.ma(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=11)).strftime('%Y%m%d'), end_date='', fields='ma10')
MA20 = pro.ma(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=21)).strftime('%Y%m%d'), end_date='', fields='ma20')
MACD = pro.macd(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=51)).strftime('%Y%m%d'), end_date='', fields='close')
KDJ = pro.kdj(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=51)).strftime('%Y%m%d'), end_date='', fields='kdj_k,kdj_d,kdj_j')
if (MA5.iloc[0]['ma5'] > MA10.iloc[0]['ma10']) and (MA5.iloc[0]['ma5'] > MA20.iloc[0]['ma20']) and (MACD.iloc[0]['macd'] > 0) and (KDJ.iloc[0]['kdj_k'] > KDJ.iloc[0]['kdj_d']):
continue
# 判断是否为主板股票
if ts_code[1] != '主板':
continue
selected_stocks.append(ts_code[0])
return selected_stocks
以上Python代码主要利用tushare库获取股票数据,依据指定的条件进行逐个判断,最终返回符合条件的股票列表。同时对股票的基本面、行业趋势、技术面等进行辅助判断,保证选股策略的稳健性和实用性。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
