将tushare导入为tsimportxlrd将pandas导入为pdimportmatplotlib.pyplot作为pltts.set_token('************************')pro=ts.pro_api()defstrategy_invest(fund,money,c_rate,be_data,en_date):df=pro.fund_nav(ts_code=fund)df.sort_values(by=['end_date'],inplace=True)#按时间从小到大排序df=df.reset_index(drop=True)#indexremarkdf['tradingtime']=pd.to_datetime(df['end_date'])df=df[['tradingtime','unit_nav']]#onlyselectdate,and净值#设置投资时间df=df[df['交易时间']>=be_data]df=df[df['交易时间']<=en_date]df["每笔投资"]=moneydf["累计投资funds"]=df["每笔投资"].cumsum()c_rate=0.002df["每笔金额"]=df["每笔投资"]/df['unit_nav']*(1-c_rate)df["累计quantity"]=df["每个数量"].cumsum()df["盈亏"]=df["累计数量"]*df['unit_nav']-df["累计投资资金"]df["收益率"]=df["盈亏"]/df["累计投入资金"]*100回报dfdefget_draw(df):dfplot=df.copy()dfplot.index=dfplot["交易时间"]dfplot[["收益率"]].plot()plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文labelsnormallyplt.rcParams['axes.unicode_minus']=False#正常显示负号returnplt.show()defaverage_invest(df):dfstrategy=df.copy()dfstrategy["movingaverage"]=dfstrategy['unit_nav'].rolling(60).mean()#计算移动平均值dfstrategy=dfstrategy[["交易时间","unit_nav","movingaverage"]]dfstrategy.loc[dfstrategy['unit_nav']<=(dfstrategy["movingaverage"]*0.97),"每次投入资金"]=200dfstrategy.fillna(0,inplace=True)dfstrategy["累计投入资金"]=dfstrategy["每次投入资金"].cumsum()c_rate=0.002dfstrategy["每次金额"]=dfstrategy["每次investment"]/dfstrategy['unit_nav']*(1-c_rate)dfstrategy["累计数量"]=dfstrategy["每笔数量"].cumsum()dfstrategy["盈亏"]=dfstrategy["累计数量"]*dfstrategy['unit_nav']-dfstrategy["累计投入资金"]dfstrategy["收益率"]=dfstrategy["盈亏"]/dfstrategy["累计投入资金"]*100returndfstrategydf=strategy_invest(fund="001632.OF",money=50,be_data="2019-04-03",en_date="2020-04-04",c_rate=0.002)dfstrategy=average_invest(df)df=df[["交易时间","unit_nav","累计投资","盈亏","收益率"]]dfstrategy=dfstrategy[["交易时间","unit_nav","累计投资","盈亏","收益率"]]print(df.tail(3))get_draw(df)print(dfstrategy.tai??l(3))get_draw(dfstrategy)
