量化双均线策略:(一)通过tushare获取股票数据
2018-01-26 22:27
483 查看
之前几篇通过爬虫与mysql数据库获取到所有股票数据,存在一个比较难处理的问题,就是数据为未复权,无法策略回测。为了获取到已复权数据,也是找了很多接口,最终发现tushare是一个不错的选择,不用存储在本地,程序运行时候保证联网,直接获取数据,最重要的是可以选择前复权或者后复权。
以下引用自官方网站http://tushare.org/index.html
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
主要通过调用get_k_data函数获取前复权的股票数据。
可以先统一将需要的data存储到DataRepository对象中,每个策略只需要一个数据库,故使用单例模式创建。
每个策略输入为一组code_list,然后将每个code对应的df存储到dict中当做data_repository对象的成员变量,方便随时调用。
由于tushare返回的数据并没有均线数据,可以通过rolling函数求得。
In [53]: print(df['close'].rolling(5).mean())
223 NaN
224 NaN
225 NaN
226 NaN
227 37.802
228 37.942
229 38.138
230 38.272
231 38.574
232 38.950
233 38.900
234 38.552
235 38.388
236 38.066
Name: close, dtype: float64
然后df.dropna()里面的how参数可以选择any或者all,any指某行只要有na就舍弃掉,all指只有当某行全部为na时候才舍弃。
df.dropna()返回的是一个复制对象,原来的df并不改变,需要赋值到原df。
以下引用自官方网站http://tushare.org/index.html
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
主要通过调用get_k_data函数获取前复权的股票数据。
#coding=utf-8 import tushare as ts df = ts.get_k_data('002415', start='2017-04-10', end='2017-12-08') print(type(df)) ''' 结果如下: df <class 'pandas.core.frame.DataFrame'> 某一行<class 'pandas.core.series.Series'> date open close high low volume code 62 2017-04-10 21.267 21.280 21.510 21.024 116265.0 002415 63 2017-04-11 21.280 21.090 21.353 20.749 194550.0 002415 64 2017-04-12 21.103 21.044 21.353 20.808 135027.0 002415 65 2017-04-13 21.051 21.261 21.313 20.919 139556.0 002415 66 2017-04-14 21.701 21.412 22.042 21.333 276923.0 002415 67 2017-04-17 21.537 21.635 21.865 21.392 182432.0 002415 68 2017-04-18 21.858 22.469 22.548 21.727 366464.0 002415 69 2017-04-19 22.771 22.600 22.915 22.311 232475.0 002415
可以先统一将需要的data存储到DataRepository对象中,每个策略只需要一个数据库,故使用单例模式创建。
#coding=utf-8 import tushare as ts import pandas as pd import numpy as np import math def singleton(cls): def wrapper(code_list, starttime, endtime): if cls._instance is None: cls._instance = cls(code_list, starttime, endtime) return cls._instance return wrapper @singleton #DataRepository = singleton(DataRepository) class DataRepository(object): _instance = None def __init__(self, code_list, starttime, endtime): self.all_data = {} for code in code_list: df = ts.get_k_data(code, starttime, endtime) df['ma5'] = df['close'].rolling(5).mean() df['ma10'] = df['close'].rolling(10).mean() df = df.dropna(how='any') self.all_data[code] = df def get_onecode_df(self, code): return self.all_data[code]
每个策略输入为一组code_list,然后将每个code对应的df存储到dict中当做data_repository对象的成员变量,方便随时调用。
由于tushare返回的数据并没有均线数据,可以通过rolling函数求得。
In [53]: print(df['close'].rolling(5).mean())
223 NaN
224 NaN
225 NaN
226 NaN
227 37.802
228 37.942
229 38.138
230 38.272
231 38.574
232 38.950
233 38.900
234 38.552
235 38.388
236 38.066
Name: close, dtype: float64
然后df.dropna()里面的how参数可以选择any或者all,any指某行只要有na就舍弃掉,all指只有当某行全部为na时候才舍弃。
df.dropna()返回的是一个复制对象,原来的df并不改变,需要赋值到原df。
相关文章推荐
- python量化分系列之---使用tushare获取股票实时分笔数据延时有多大
- android 股票数据通过日K获取周K的数据 算法 源码
- 基于tushare获取股票历史行情数据包括后复权和未复权的_导入数据库
- Wind量化平台-C++获取股票数据-C++金融数据分析利器 V5.0
- 使用tushare获取股票实时分笔数据延时有多大
- 通过Jquery异步获取股票实时数据
- [Python]通过网易财经接口获取股票和指数的历史数据
- 使用tushare获取股票实时分笔数据延时有多大
- [Python]通过网易财经接口获取股票和指数的历史数据
- Matlab通过sina web接口获取个数即时股票数据函数实现代码
- 【大数据部落】r语言多均线量化策略回测
- 量化交易----获取沪深300股票数据
- 通过Yahoo Finance API获取股票数据
- jquery通过新浪财经的接口获取股票走势图和股票数据
- 使用Python来获取国内股票数据的方法:TuShare
- 使用tushare获取股票历史数据和实时分笔数据
- 使用tushare获取股票历史数据和实时分笔数据
- 获取股票实时交易数据的方法
- 通过URL获取数据
- 获取服务器数据通过Gson解析显示Listview上