需求:
1.使用tushare白获取某股票的历史行情数据
2.输出该股票所有收盘闭开盘上涨30%以上的日期
3.输出该股票所有开盘闭前日收盘跌幅超过2%的日期
4假如我从2010年1月1日开始,每月第一个交易日买入1收股票,每年最后一个交易日卖出所有股票, 到尽头为止,我的收益如何
import tushare as ts
import pandas as pd
import numpy as np
#获取股票的历史数据
df=ts.get_k_data(code='600519',start='2000-01-01')
#保存到本地
df.to_csv(“./maotai.csv”)
#数据预处理
#删除某一列
df=df.drop(labels=“Unnamed: 0”,axis=1)
也或者可以是
df.drop(labels=“Unnamed: 0”,axis=1,inplace = True)
#查看每一列对应的数据类型
df.info()
#将time这列转为时间类型序列
df["date"]=pd.to_daytime(df["date"])
#将df["date"]这列作为行索引
df.set_index(df['date'],inplace=True)
#第二步:输出该股票所有收盘闭开盘上涨30%以上的日期
df.loc[(df['open'] - df['close'])/df['open']>0.03].index
第三步:输出该股票所有开盘闭前日收盘跌幅超过2%的日期
df.loc[(df["open"]-df['close'].shift(1))/df['close'].shift(1)<-0.02 ].index
#第四步:假如我从2010年1月1日开始,每月第一个交易日买入1收股票,每年最后一个交易日卖出所有股票,到尽头为止,我的收益如何?
#提取数据
new_df=df['2010-01':'2020-02']
#买股票:需要找到某个月的第一个交易日对应的行数据
#找到每个月的第一天
df_monthly=new_df.resample('M').first()#数据的重新取样
#买入股票话费的总金额
cost=df_monthly['open'].sum()*100
#卖出股票的钱:特殊情况,2020年买入的股票卖不出去
#且将2020年最后一行切出去
df_yearly=new_df.resample('A').last()[:-1]
#卖出股票的钱到手的钱
resv=df_yearly['open'].sum()*1200
#最后手中剩余的股票需要菇凉其价值计算到总收益中
last_monry=200*new_df['close'][-1]
#计算总收益
resv + last_monry -cost