quantaxis学习,小白进阶2阶段(使用):自己调用学习使用数据,并处理数据
发布于 2 个月前 作者 James1010422846 245 次浏览 来自 分享

要求:1.熟悉相关调用函数。 2.因为获取数据均为dataframe格式,所以,需要熟悉使用dataframe用法,不熟悉可以使用菜鸟学python的文档(https://www.runoob.com/python3/python3-basic-syntax.html),进行练习

本人接下来将做几个简单case,做说明。 #1.获取2019年1年内所有的股票数据,并筛选增长最快的top10 2.2019年年末获取roe大于20的所有股票代码 3.设定一个指标,并选择一只股票应用,检测效果

任务1答案: import QUANTAXIS as QA import pandas as pd import numpy as np import tushare as ts ts.set_token(your token) pro = ts.pro_api()

#查询当前所有正常上市交易的股票列表 data = pro.query(‘stock_basic’, exchange=’’, list_status=‘L’, fields=‘ts_code,symbol,name,area,industry,list_date’) code = data[‘ts_code’][:10] #这里做了阉割,数据太多,就选10个测试下效果。

code.to_frame()

list(code[‘ts_code’]) #1·获取2019年1年内所有的股票数据,并筛选增长最快的top10 li = [] for code1 in list(code[‘ts_code’]): da = QA.QA_fetch_stock_day_adv(code1,‘2019-01-01’,‘2019-12-31’).data

growth = (da['close'][-1]-da['close'][0])/da['close'][0]
#code['growth'].append(growth)
#print(growth)
li+=[growth]

code[‘growth’]=li code.sort_values([“growth”],ascending=True).head(5)

任务2答案:(弄死我了,特别是code的问题,tushare是这种格式000001.SZ,然后quantaxis认可的格式为000001,所以一直失败,好不容易搞不明白,希望后来的人注意这个坑) li = [] for code1 in list(code[‘ts_code’]):

da = QA.QA_fetch_financial_report(code1[0:6],['2019-03-31','2019-06-30','2019-09-31','2019-12-31','2020-03-31'])

li+=[da['ROE'][-1]]

code[‘roe’]=li code.loc[(code[“roe”]>20)]

任务3答案: 本人设定一个什么指标呢,指标:roe>10,多头排列,40个交易日,没有创新高或新低。 import QUANTAXIS as QA import pandas as pd import numpy as np import tushare as ts ts.set_token(‘2e810ef6770f417c9b23185576df21c7cc3082095479c5845d2e3ea6’) pro = ts.pro_api()

#查询当前所有正常上市交易的股票列表 data = pro.query(‘stock_basic’, exchange=’’, list_status=‘L’, fields=‘ts_code,symbol,name,area,industry,list_date’) code = data[‘ts_code’][:10] code =code.to_frame() code[‘ts_code’] #获取股票池 li = [] for code1 in list(code[‘ts_code’]):

da = QA.QA_fetch_financial_report(code1[0:6],['2019-03-31','2019-06-30','2019-09-31','2019-12-31','2020-03-31'])

li+=[da['ROE'][-1]]

code[‘roe’]=li gp = code.loc[(code[“roe”]>10)] gp 制定策略: def s1(data, roe=10, s=5,m=10,l=20,c=40): ""“ 1.多头,5日上穿10,10穿20,40日没有破新低,买入信号参考。 2.40日新低,卖出信号参考。 ”"" CLOSE = data.close

sc = QA.MA(CLOSE,s)
mc = QA.MA(CLOSE,m)
lc = QA.MA(CLOSE,l)

lv =QA.LLV(data['close'],c)
    


return pd.DataFrame({'Long_Short':(QA.CROSS(sc,mc)&QA.CROSS(mc,lc)), 'New_L': QA.CROSS(lv,CLOSE[-1])})

运行策略, for code1 in list(gp[‘ts_code’]): da = QA.QA_fetch_stock_day_adv(code1[:6],‘2019-01-01’,‘2019-01-31’).to_qfq().add_func(s1) print(da)

回到顶部