如何用python分析股票涨跌(python模拟股票的数据分析)
导读:股票分析 需求:股票分析 使用tushare包获取某股票的历史行情数据。 输出该股票所有收盘比开盘上涨3%以上的日期。 输出该股票所有开盘比前日收盘跌幅超过2%的日期。 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日...
股票分析
需求:股票分析
使用tushare包获取某股票的历史行情数据 。 输出该股票所有收盘比开盘上涨3%以上的日期 。 输出该股票所有开盘比前日收盘跌幅超过2%的日期 。 假如我从2010年1月1日开始 ,每月第一个交易日买入1手股票 ,每年最后一个交易日卖出所有股票 ,到今天为止 ,我的收益如何? import tushare as ts import pandas as pd from pandas import DataFrame,Series import numpy as np #获取某只股票的历史行情数据 #code:字符串形式的股票代码 df = ts.get_k_data(code=000893,start=2000-01-27) #将互联网上获取的股票数据存储到本地 df.to_csv(./jiaomei.csv)#调用to_xxx方法将df中的数据写入到本地进行存储 #将本地存储的数据读入到df,自动添加了索引 df = pd.read_csv(jiaomei.csv) df.head() #删除df中指定的一列 df.drop(labels=Unnamed: 0,axis=1,inplace=True) #删除每一行的labels列 #查看每一列的数据类型 df.info() #将date列转为时间序列类型 df[date] = pd.to_datetime(df[date]) #将date列作为源数据的行索引 df.set_index(date,inplace=True)捕获上涨和下跌的日期
#输出该股票所有收盘比开盘上涨3%以上的日期 #伪代码:(收盘-开盘)/开盘 > 0.03 (df[open] - df[close]) / df[open] > 0.03 #在分析的过程中如果产生了boolean值则下一步马上将布尔值作为源数据的行索引 #如果布尔值作为df的行索引 ,则可以取出true对应的行数据 ,忽略false对应的行数据 df.loc[(df[open] - df[close]) / df[open] > 0.03] #获取了True对应的行数据(满足需求的行数据) df.loc[(df[open] - df[close]) / df[open] > 0.03].index #df的行数据 #输出该股票所有开盘比前日收盘跌幅超过2%的日期 #伪代码:(开盘-前日收盘)/前日收盘 < -0.02 (df[open] - df[close].shift(1))/df[close].shift(1) < -0.02 #shift[1]表示下移一行 #将布尔值作为源数据的行索引取出True对应的行数据 df.loc[(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 需求:假如我从2010年1月1日开始 ,每月第一个交易日买入1手股票 ,每年最后一个交易日卖出所有股票 ,到今天为止 ,我的收益如何? 分析: 时间节点:2010-2020 一手股票:100支股票 买: 一个完整的年需要买入1200支股票 卖: 一个完整的年需要卖出1200支股票 买卖股票的单价: 开盘价 new_df = df[2010-01:2020-02]买股票需要找到每个月的第一个交易日的行数据
#买股票:找每个月的第一个交易日对应的行数据(捕获到开盘价)==》每月的第一行数据 #根据月份从原始数据中提取指定的数据 #每月第一个交易日对应的行数据 df_monthly = new_df.resample(M).first()#数据的重新取样可以看到这里的索引出现的偏差 ,但是后面的数据是没有问题的
#买入股票花费的总金额 cost = df_monthly[open].sum()*100 93359.50000000001 #卖出股票到手的钱 #特殊情况:2020年买入的股票卖不出去 new_df.resample(A).last() #将2020年最后一行切出去 df_yearly = new_df.resample(A).last()[:-1] df_yearly #卖出股票到手的钱 resv = df_yearly[open].sum()*1200 81811.19999999998 #最后手中剩余的股票需要估量其价值计算到总收益中 #使用昨天的收盘价作为剩余股票的单价 last_monry = 200*new_df[close][-1] #计算总收益 resv+last_monry-cost -10965.300000000032 亏了 ,, , ,,创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!