aitree

目标:

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

类似的股票数据平台:

       聚宽(JoinQuant)量化交易平台是为量化爱好者(宽客)量身打造的云平台,我们为您提供精准的回测功能、高速实盘交易接口、易用的API文档、由易入难的策略库....

 

安装tushare:

        pip install tushare 

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

import tushare as ts
import pandas as pd
from pandas import Series,DataFrame

df= ts.get_k_data(\'600519\',start = \'1900-01-01\')  

    df.to_csv(\'./maotai.csv\')   #写到csv 

    data = pd.read_csv(\'./maotai.csv\',index_col=\'date\',parse_dates=[\'date\'])         #index_col=\'date\' --- 将date日期的作为行索引

                                                                                                                                      #parse_dates=[\'date\'] ---date 转为时间序列

    data.drop(labels=\'Unnamed: 0\',axis=1,inplace=True)    ---注意drop 删除里的axis=1 表示列,0表示行!

                                                                                                ---inplace=True 将删除的数据直接应用回源数据,如果inplace=False 会返回一个新的处理后的数据

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

   indexs = (data[\'close\'] - data[\'open\'])/data[\'open\'] > 0.03   

   indexs返回的是索引对应的true/false 数组,类似如下:

     结论:布尔值可以直接作为行索引

a     True
b    False
c     True
d    False
dtype: bool

   data.loc[indexs].index   # 查看 indexs 的所有索引

 

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

 data[\'close\'].shift(1) 表示前一条数据;索引上移

 

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

       知识点:1、字符串模糊切片: data[\'2010\':\'2019\']  ---索引中包含这个字符串就行

                      2、数据取样机制(resample(\'\')):根据规则进行指定数据的提取

                            \'M\' - 表示月  \'A\' - 表示年   \'D\' - 表示日  

                           new_data.resample(\'M\').first()  表示按月进行提取,取每月的第一个交易日的数据 

                                                                        ---注意:返回新的数组索引会变更

                           new_data.resample(\'A\').last()  表示取每年最后一个交易日的数据 

                                                                       ---注意:返回新的数组索引会变更

                      3、切片: 去除最后一行:  new_data.resample(\'A\').last().[:-1]  

                                        其中[:-1] 表示取0到最后一行,不包含最后一行

                     

 

分类:

技术点:

相关文章: