需求一:
获取某支股票的历史行情时数据
df = ts.get_k_data(code='600519',start='2000-01-01') 获取某只股票数据df . to_csv('./maotai.csv') #将得到的数据存储在当前目录下df = pd.read_csv('./maotai.csv') #将本地存储的文件读入df中
df.drop(lables='unnamed:0', axis=1, inplace=True) # 删除数据中的某一列df('date') = pd.to_datetime(df['date']) # 将time这一列转为时间序列类型
输出该股票所有收盘比开盘上涨3%以上的日期
A = ( df['open']-df['close'] ) / df['open'] > 0.03 # 得到bool值B =df.loc[ ( A] # 得到True所对应的行数据B. index # 这些行数据对应的行索引——date
输出该股票所有开盘比收盘跌幅超过2%的日期
df['close'].shift(1) #将close这一列整体下移一行A = (df['open']-df['close'].shift(1) ) / df['close'] .shift(1) < -0.02 # 返回跌幅是否超过0.02:bool类型B = df.loc[ A ] # 得到True所在的行数据B.index # 得到True的行数据的行索引
假设我从1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
new_df = df['-01','-02'] # 根据行索引确定数据范围df_monthly = new_df.resample('M').first() #根据月重新取样,得到每个月的第一个数据——记为df_monthlycost = df_monthly['open'].sum() * 100 #用开盘价计算买股票的总花费
new_df.resample('A').last() #根据年重新取样,得到每年最后一行数据——记为df_yearlydf_yearly = new_df.resample('A').last()[:-1] #由于还没有卖出股票,因此切掉最后一年revs = df_yearly['open'].sum() * 1200 #每年的总收入
# 切掉最后一年之后,手里还有两个月的股票没有卖出,估计这些股票的价值,用昨天的收盘价作为卖出这些股票的单价last_money = 200 * new_df['close'][-1] #手中的股票的价值
需求二:双均线策略制定
df = pd.read_csv('./maotai.csv').drop('Unnamed:0',axis=1)df['date'] = pd.to_datetime(df['date'])df.set_index('date',inplace=True)
ma5 = df['close'].rolling(5).mean()ma10 = df['close'].rolling(10).mean()ma30 = df['close'].rolling(30).mean()
画图:5日均线和30日均线
也可以切片其中一段时间的图:
import matplotlib.pyplot as plt%matplotlib inlineplt.plot(ma5[50:180])plt.plot(ma10)
金叉死叉判断方法:
判断死叉:
death_ex = s1 & s2.shift(1) # 判断是否为死叉,返回的是bool值,True对应的是死叉death_date = df.loc[death_ex] . index #死叉对应的行数据的行索引gloden_ex = ~(s1 | s2.shift(1)) #False代表金叉gloden_date = df.loc(gloden_ex).index
判断金叉:
金叉为什么是尽量买入:股票只能一手一手买,因此可能不会正好买100000元的股票。
切对应时间段:
推荐:聚宽
如果觉得《数据分析——DataFrame基础操作巩固—股票分析》对你有帮助,请点赞、收藏,并留下你的观点哦!