QMT的小市值策略2.0版本(仓位控制与技术指标)
开发成功,qmt小市值策略,随策略配入大盘择时的资金配置使用,再加入动量策略,排序选择,涨幅最大的股票,进行购买。根据大盘的数据,选择资金仓位,然后同时设置动量策略,
·
开发成功,qmt小市值策略,随策略配入大盘择时的资金配置使用,
再加入动量策略,排序选择,涨幅最大的股票,进行购买。
不废话,上图


开始解读代码:
ContextInfo.Stock = '000001.SH'
ContextInfo.zj = 1
ContextInfo.m_days = 25 #动量参考天数
dpprice = get_price(ContextInfo,ContextInfo.Stock )
if dpprice>3300:
ContextInfo.zj = 0.3
elif dpprice>3200:
ContextInfo.zj = 0.4
elif dpprice>3100:
ContextInfo.zj = 0.5
elif dpprice>3000:
ContextInfo.zj = 0.6
elif dpprice>2900:
ContextInfo.zj = 0.7
elif dpprice>2900:
ContextInfo.zj = 0.9
else:
ContextInfo.zj = 1
根据大盘的数据,选择资金仓位,然后同时设置动量策略,
动量策略:
def score(ContextInfo,code_list):
score_list = []
start_time = timetag_to_datetime(ContextInfo.get_bar_timetag(ContextInfo.barpos-ContextInfo.m_days),'%Y%m%d')
end_time = timetag_to_datetime(ContextInfo.get_bar_timetag(ContextInfo.barpos),'%Y%m%d')
for i in code_list:
#etf = adjust_stock(etf)
data = ContextInfo.get_market_data_ex(fields=["close"],stock_code=[i], period = "1d", start_time = start_time, end_time = end_time,count=ContextInfo.m_days)
df = data[i]
y = df['log'] = np.log(df.close)
x = df['num'] = np.arange(df.log.size)
slope, intercept = np.polyfit(x, y, 1)
annualized_returns = math.pow(math.exp(slope), 250) - 1
r_squared = 1 - (sum((y - (slope * x + intercept))**2) / ((len(y) - 1) * np.var(y, ddof=1)))
score = annualized_returns * r_squared
score_list.append(score)
df = pd.DataFrame(index=code_list, data={'score':score_list})
df = df.sort_values(by='score', ascending=False)
rank_list = list(df.index)
return rank_list
本策略采用小市值技术指标策略,叠加动量策略,所有选取品种,都是历史长期优势上市公司,基本面稳定。
总结:
通过本文的学习,相信你已经掌握如何在QMT学会小市值叠加技术指标策略了。希望本文可以帮助你!
更多推荐


所有评论(0)