Demand:
- 使用tushare包获取某股票的历史行情数据。
- 输出该股票所有收盘比开盘上涨3%以上的日期。
- 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
- 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
使用tushare包获取某股票的历史行情数据
import tushare as ts
df = ts.get_k_data(\'600519\',start=\'1900-01-01\')
df.to_csv(\'./maotai.csv\')
#输出该股票所有收盘比开盘上涨3%以上的日期
df = pd.read_csv(\'./maotai.csv\')
df.drop(labels=\'Unnamed: 0\',axis=1,inplace=True)
#验证data列中数据的数据类型
type(df[\'date\'][9])
#将date这一列的数据先转成时间类型然后将其作为原数据的行索引
df = pd.read_csv(\'./maotai.csv\',index_col=\'date\',parse_dates=[\'date\'])
df.drop(labels=\'Unnamed: 0\',axis=1,inplace=True)
#(收盘-开盘)/开盘 > 0.03
(df[\'close\'] - df[\'open\']) / df[\'open\'] > 0.03
#True:满足需求
#false:不满足
#返回了满足需求的行数据
df.loc[(df[\'close\'] - df[\'open\']) / df[\'open\'] > 0.03]
#获取了满足需求的日期
df.loc[(df[\'close\'] - df[\'open\']) / df[\'open\'] > 0.03].index
#结论:如果获取了一组布尔值,接下来改组布尔值就直接作为元数据的行索引
(df[\'open\'] - df[\'close\'].shift(1))/df[\'close\'].shift(1) < -0.02
#满足需求的行数据
df.loc[(df[\'open\'] - df[\'close\'].shift(1))/df[\'close\'].shift(1) < -0.02].index
df_new = df[\'2010\':\'2019\']
#数据的重新取样的机制(resample):根据指定好的规则进行指定数据的提取
df_monthly = df_new.resample(\'M\').first()
#计算出买股票一共花了多少钱
cost_monry = df_monthly[\'open\'].sum()*100
df_yearly = df_new.resample(\'A\').last()
df_yearly = df_yearly[:-1]
recv_monry = df_yearly[\'open\'].sum()*1200
last_price = df.iloc[-1][\'close\']
cunHuo_price = last_price * 900
#计算总收益
cunHuo_price+recv_monry-cost_monry