某不知名量化项目线上实操题

前言

原本是打开手机刷刷朋友圈缓解自闭情绪,机缘巧合就看到了这个计划在招新,心动了一秒,飞速把简历填好就发出去,收回一份线上实操题。…ddl又变多了,越发感到自闭。
虽然话是这样说,期中考后肝了一天做完下来感觉还是python很不熟练,之后应该好好写一份总结重新学一学numpy和pandas这两个库,也算是给之后的国赛做做准备吧。所以也许会有下篇也说不定呢
因为是一天的赶工所各方各面都比较随意!看看就好!

实操题推送

题目一

下载并用pandas导入sz50.xlsx的所有股票,索引设置为datetime,将所有股票的keys打印出来。

#读取excel,设置datatime为索引
df = pd.read_excel('sz50.xlsx',sheet_name=None,index_col=0)

#删掉数据为空的df
data = df.copy()
for i in (df.keys()):
    if(df[i].empty):
        data.pop(i)
print(data.keys())

题目二

读取data里的600036这只股票的DataFrame,将其收盘价转换成用Numpy的Array格式,并用talib计算10日均线值,返回ndarray的最后五个值.

#读取600036.XSHG的DataFrame,将其收盘价转换成用Numpy的Array格式
closeArray = data['600036.XSHG']['close'].values
#用talib计算10日均线值,返回ndarray的最后五个值
ma10=talib.SMA(closeArray,timeperiod=10)
print(ma10[ma10.size-5:ma10.size])

题目三

将MA的ndarray数据格式转换成Series格式,并加上datetime索引,最后将价格和MA值用Matplotlib展示出来.

#将MA的ndarray数据格式转换成Series格式,并加上datetime索引
ma10Series = pd.DataFrame(ma10,index=data['600036.XSHG'].index)
#最后将价格和MA值用Matplotlib展示出来
plt.plot(data['600036.XSHG'].index,data['600036.XSHG']['close'])
plt.plot(ma10Series.index,ma10Series)
plt.show()

题目四

用talib计算50只股票的周期为5的ROCR100,生成Dataframe,并将前5只股票的ROCR100(参数timeperiod=5)用一张图显示出来.

#用talib计算50只股票的周期为5的ROCR100,生成Dataframe
dateIndex=data['600000.XSHG'].index
#某几支股票的date不全,取全index按索引添加
ROCR100df=pd.DataFrame(index=dateIndex)
for name in data.keys():
    closeArray = data[name]['close'].values
    ROCR100Array=talib.ROCR100(closeArray,timeperiod=5)
    ROCR100=pd.DataFrame(ROCR100Array,index=data[name].index.values,columns=[name])
    ROCR100df=pd.merge(ROCR100df,ROCR100,left_index=True,right_index=True,how='left') #按左侧索引拼接dataframe
#print(ROCR100df)
#将前5只股票的ROCR100(参数timeperiod=5)用一张图显示出来
p1,=plt.plot(ROCR100df.index,ROCR100df.iloc[:,0])
p2,=plt.plot(ROCR100df.index,ROCR100df.iloc[:,1])
p3,=plt.plot(ROCR100df.index,ROCR100df.iloc[:,2])
p4,=plt.plot(ROCR100df.index,ROCR100df.iloc[:,3])
p5,=plt.plot(ROCR100df.index,ROCR100df.iloc[:,4])
plt.legend([p1,p2,p3,p4,p5],ROCR100df.columns.values[0:5])
plt.show()

题目五

用Panel来计算50只股票的MACD并且输出MACD的Panel的MultiIndex格式.

#用Panel来计算50只股票的MACD并且输出MACD的Panel的MultiIndex格式
panel_data={}
for name in data.keys():
    closeArray = data[name]['close'].values
    each_df=pd.DataFrame()
    each_df['datetime']=data[name].index
    each_df['MACD'],each_df['MACDsignal'],each_df['MACDhist'] = np.array(talib.MACD(closeArray,
                                                                fastperiod=6, slowperiod=12, signalperiod=9))
    panel_data[name]=each_df

panel=pd.Panel(panel_data)
panel_re=panel.transpose(2,1,0,copy=True)
print(panel_re.major_xs(33))
Reference:

[1]Ta-lib 函数一览
[2]pandas 0.22.0 documentation » API Reference » pandas.Panel

个人公众号:Yukei

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值