python平均分和低于平均分_python定投交易与低于平均值交易比较

import tushare as ts

import xlrd

import pandas as pd

import matplotlib.pyplot as plt

ts.set_token('**********************')

pro = ts.pro_api()

def strategy_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)#index重新标记

df['交易时间'] = pd.to_datetime(df['end_date'])

df=df[['交易时间','unit_nav']]#只选日期,和净值

#设置投资时间

df=df[df['交易时间']>=be_data]

df=df[df['交易时间']<=en_date]

df["每次投入资金"]=money

df["累计投入资金"]=df["每次投入资金"].cumsum()

c_rate=0.002

df["每次数量"]=df["每次投入资金"]/df['unit_nav']*(1-c_rate)

df["累计数量"]=df["每次数量"].cumsum()

df["盈亏"]=df["累计数量"]*df['unit_nav']-df["累计投入资金"]

df["收益率"]=df["盈亏"]/df["累计投入资金"]*100

return df

def get_draw(df):

dfplot=df.copy()

dfplot.index=dfplot["交易时间"]

dfplot[["收益率"]].plot()

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

return plt.show()

def average_invest(df):

dfstrategy=df.copy()

dfstrategy["移动平均值"] = dfstrategy['unit_nav'].rolling(60).mean() # 计算移动平均值

dfstrategy=dfstrategy[["交易时间","unit_nav","移动平均值"]]

dfstrategy.loc[dfstrategy['unit_nav']<=(dfstrategy["移动平均值"]*0.97),"每次投入资金"]=200

dfstrategy.fillna(0,inplace=True)

dfstrategy["累计投入资金"]=dfstrategy["每次投入资金"].cumsum()

c_rate=0.002

dfstrategy["每次数量"]=dfstrategy["每次投入资金"]/dfstrategy['unit_nav']*(1-c_rate)

dfstrategy["累计数量"]=dfstrategy["每次数量"].cumsum()

dfstrategy["盈亏"]=dfstrategy["累计数量"]*dfstrategy['unit_nav']-dfstrategy["累计投入资金"]

dfstrategy["收益率"]=dfstrategy["盈亏"]/dfstrategy["累计投入资金"]*100

return dfstrategy

df=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.tail(3))

get_draw(dfstrategy)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值