第二节:练习题

一、股票数据分析

题目:

1、使用tushare包获取某股票的历史行情数据。
2、输出该股票所有收盘比开盘上涨3%以上的日期。
3、输出该股票所有开盘比前日收盘跌幅超过2%的日期。
4、假如我从201011日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

答案:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts

1、使用tushare包获取某股票的历史行情数据

df = ts.get_k_data("600519",start="1988-01-01")
df.to_csv("E:\\Test\\600519.csv")
df = pd.read_csv("E:\\Test\\600519.csv", index_col='date', parse_dates=['date'])[['open','close','high','low']]
df

2、输出该股票所有收盘比开盘上涨3%以上的日期

df[(df['close']-df['open'])/df['open']>=0.03].index

3、输出该股票所有开盘比前日收盘跌幅超过2%的日期

df[(df['open'] - df['close'].shift(1)) / df['close'].shift(1) <= -0.02].index

4、假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

price_last = df['open'][-1] # 当天开盘价
df = df['2010-01':] #剔除首尾无用的数据
df_monthly = df.resample("M").first() # 每个月第一天的数据
df_yearly = df.resample("A").last()[:-1] # 每年最后一天的数据
cost_money = 0
hold = 0
for year in range(2010, 2020):
cost_money -= df_monthly[str(year)]['open'].sum()*100 # 每月第一天买入一手
hold += len(df_monthly[str(year)]['open']) * 100 # 当前持有股票数量
if year != 2019:
cost_money += df_yearly[str(year)]['open'][0] * hold # 每年最一天卖出所有股票(卖出价格以当天开盘价为准)
hold = 0 # 持有股票归零
cost_money += hold * price_last # 当前收益和当前持有股票价值之和
print(cost_money)

二、查看历史金叉死叉日期

题目

1、使用tushare包获取某股票的历史行情数据
2、使用pandas包计算该股票历史数据的5日均线和60日均线
3、使用matplotlib包可视化历史数据的收盘价和两条均线
4、分析输出所有金叉日期和死叉日期
5、如果我从假如我从201011日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?

答案

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts

1、使用tushare包获取某股票的历史行情数据

df = ts.get_k_data("600623",start="1988-01-01")
df.to_csv("E:\\Test\\600623.csv")
df = pd.read_csv("E:\\Test\\600623.csv",index_col='date', parse_dates=['date'])[['open','close','low','high']]

2、使用pandas包计算该股票历史数据的5日均线和60日均线

求取均线有三种方式:

# 创建五日均线和30均线列为缺失值
df['ma5'] = np.nan
df['ma30'] = np.nan
top:-10em;
width:100%;
height:10em;
background: -webkit-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);
background-image: -moz-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);
background-image: -o-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);
background-image: linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);
background-image: -ms-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);">

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 沪ICP备2022009235号 沪公网安备31011802005110号 青浦区尚茂路798弄 联系方式-13697081366