利用聚宽网络进行金融量化分析。标的为000001平安银行,买入时佣金万分之2,卖出时佣金万分之2,加千分之一印花税, 每笔交易佣金最低扣3块钱。 Ma5=5日均线。当前价格大于5日均线的1.1倍是全仓买入。当前价格低于5日均线时则全仓卖出。同时回测从2018年4月1日到2020年4月1日两年之间的回测结果,并将回测图表。
5日均线1.1倍怎么弄啊?
步骤:
从历史数据中获取最近5个交易日的收盘价。
计算这5个收盘价的平均值,得到5日均线。
将5日均线乘以1.1,得到1.1倍的均线。
import jqdatasdk as jq
import pandas as pd
# 连接聚宽数据
jq.auth("聚宽账号", "聚宽密码") # 替换为您的聚宽账号和密码
# 获取平安银行的历史数据
df = jq.get_price("000001.XSHE", start_date="2018-03-27", end_date="2020-04-01", frequency="daily")
# 计算5日均线
df['ma5'] = df['close'].rolling(window=5).mean()
# 计算5日均线的1.1倍
df['ma5_1.1'] = df['ma5'] * 1.1
# 输出回测结果
print(df[['close', 'ma5', 'ma5_1.1']])
使用了聚宽提供的数据接口来获取平安银行的历史数据,并计算了5日均线和5日均线的1.1倍。可以根据自己的需求进一步调整代码来进行回测和绘制图表。
不知道你这个问题是否已经解决, 如果还没有解决的话:从退货和未退货两个方面,按照年、月对订单数和订单额进行分组。
查看退货商品数和退货金额:
# 退货商品数表
df1 = df_return[df_return['Year']==2010]
df2 = df_return[df_return['Year']==2011]
temp1 = df2['Quantity'].groupby(df2['Month']).sum()
temp1 = pd.DataFrame(temp1).rename(columns={'Quantity':'2011'})
temp1['2010']=df1['Quantity'].groupby(df1['Month']).sum()
temp1 = temp1.reset_index()
# 退货金额表
df3 = df_return[df_return['Year']==2010]
df4 = df_return[df_return['Year']==2011]
temp2 = df4['Total'].groupby(df4['Month']).sum()
temp2 = pd.DataFrame(temp2).rename(columns={'Total':'2011'})
temp2['2010']=df3['Total'].groupby(df3['Month']).sum()
temp2 = temp2.reset_index()
temp1.head()
用折线图、散点图和柱状图显示各个月份的退回订单数和退回订单额
plt.figure(figsize=(10,10))
plt.subplot(2, 1, 1)
x1=temp1['month']
y1=np.abs(temp1['2011'])
y2=np.abs(temp1['2010'])
plt.scatter(x1,y2,c='g')
plt.plot(x1,y1)
plt.xlabel('月份')
plt.ylabel('退回订单数')
plt.legend(['2011年','2010年'],loc='upper center')
plt.subplot(2, 1, 2)
x2=temp2['month']
y3=np.abs(temp2['2011'])
y4=np.abs(temp2['2010'])
plt.bar(x1,y3)
plt.plot(x1,y4,c='g',marker='o')
plt.xlabel('月份')
plt.ylabel('退回订单额')
plt.legend(['2010年','2011年'],loc='upper center')
plt.show()
从图中看出,相比于其他月份,1、12月份的退货金额和退货比例都很大,推测可能是此时西方人处于圣诞节之类的节日,购物的频次大,同时相应的退货频次会较大,类似于我国的双十一,购买增长会伴随着退货增加。
同理,再画出未退回的商品数和金额图: