简单学量化在rqalpha中研究2每日获取10支小市值股票

原本想在rqalpha中好好回测一个小市值策略,但发现个人版的rqalpha找不到市值等基本面的数据。于是利用了myquant的数据,然而又喜又忧,喜的是可以用,忧的是只能返回大约一个月左右的数据,所以想回测的日期超过2个月,基本不可能。然而,回测一个策略的日期至少几年起。

但回测工作不能停滞,后续将研究积累本地数据,那样便可以随心所欲的利用数据了。这次先将已完成的代码贡献出来(工程进行到每天选出10支最小市值股票):

from rqalpha.api import *
from rqalpha import run_func
from gm.api import *
#设置掘金的token
set_token('***')
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
	pass
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
#获取所有股票代码
	data=all_instruments(type='CS',date='20231207')
#过滤ST
	data=data[~data['symbol'].str.contains('ST')]
#过滤退市
	data=data[~data['symbol'].str.contains('退')]
#过滤科创板
	data=data[data['order_book_id'].str[0:2]!='68']
#将股票代码一列转换成列表
	datal=data['order_book_id'].tolist()
#将米筐的代码转换成掘金的,后续要在掘金中查询市值
	datagm=[]
	for i in datal:
		a=code_rq_to_gm(i)
		datagm.append(a)
#在掘金中查询市值
	tmv=stk_get_daily_mktvalue_pt(symbols=datagm, fields='tot_mv',trade_date=context.now.strftime('%Y-%m-%d'), df=True)
#按市值由小到大升序排列
	tmv=tmv.sort_values(by='tot_mv')
#取前10名的代码生成购买列表
	buylist=tmv.iloc[0:10]['symbol'].tolist()
	buylistmk=[]
	for j in buylist:
		b=code_gm_to_qr(j)
		buylistmk.append(b)
	print(buylistmk)
#自定义函数,将米筐的代码转换成掘金的。
def code_rq_to_gm(rqcode):
	if rqcode[-1]=='E':#深市
		gmcode='SZSE.'+rqcode[0:6]
	else:
		gmcode='SHSE.'+rqcode[0:6]
	return(gmcode)
#自定义函数,将掘金的代码转换成米筐的,下单的。
def code_gm_to_qr(gmcode):
	if gmcode[1]=='Z':#深市
		rqcode=gmcode[-6:]+'.XSHE'
	else:
		rqcode=gmcode[-6:]+'.XSHG'
	return(rqcode)
#回测的参数,为了演示,只回测了两个交易日
config = {
"base": {
"start_date": "2023-11-29",
"end_date": "2023-11-30",
"benchmark": "000300.XSHG",
"accounts": {
"stock": 100000
}
},
"extra": {
"log_level": "verbose",
},
"mod": {
"sys_analyser": {
"enabled": True,
"plot": False
}
}
}
# 您可以指定您要传递的参数
#run_func(init=init, before_trading=before_trading, handle_bar=handle_bar, config=config)
results=run_func(init=init, handle_bar=handle_bar, config=config)

2023-11-29选出的代码:[‘600768.XSHG’, ‘600455.XSHG’, ‘300478.XSHE’, ‘300929.XSHE’, ‘605081.XSHG’, ‘000691.XSHE’, ‘002633.XSHE’, ‘300321.XSHE’, ‘603389.XSHG’, ‘600539.XSHG’]

2023-11-30选出的代码:[‘600768.XSHG’, ‘600455.XSHG’, ‘300478.XSHE’, ‘300929.XSHE’, ‘000691.XSHE’, ‘605081.XSHG’, ‘002633.XSHE’, ‘300321.XSHE’, ‘300665.XSHE’, ‘603389.XSHG’]

两天的代码中,只有1支不一样,如果在实盘中,那11月30日就要卖出一只,买入一支了。

(以上仅为实验数据,不作为投资建议!)

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/75021
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日 下午2:38
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注