量化分析:把Tushare数据源,规整成PyalgoTrade所需格式
量化分析:把Tushare数据源,规整成PyalgoTrade所需格式
分析A股历史数据,首先需要确定数据来源。如果只想做日k线、周k线的技术分析,可以用PyalgoTrade直接从yahoo、google等下载数据,用不着Tushare。但是,如果想做分钟k线的技术分析,或者想了解基本面和消息面的数据,就用得着Tushare了。
PyalgoTrade使用的基本数据格式有两种,一是Yahoo格式,二是NinjaTrader格式。
Yahoo格式的数据分段为:
- 日线数据:Date,Open,High,Low,Close,Volume,Adj Close
- 分钟数据:Date Time,Open,High,Low,Close,Volume,Adj Close
Tushare提供的数据格式,日k线、分钟线均为:
- date:日期
- open:开盘价
- high:最高价
- close:收盘价
- low:最低价
- volume:成交量
- price_change:价格变动
- p_change:涨跌幅
- ma5:5日均价
- ma10:10日均价
- ma20:20日均价
- v_ma5:5日均量
- v_ma10:10日均量
- v_ma20:20日均量
- turnover:换手率[注:指数无此项]
把Tushar数据转换成Yahoo格式,原本很简单。但我对Pandas不熟,只好找来相关pdf书,加上Baidu,在Jupyter Notebook中,边学边练,实验多次,最终搞定。
- import tushare as ts
- import pandas as pd
- # 得到15分钟数据(股票300336,始于2016-01-01,止于2016-05-24,15分钟数据)
- data = ts.get_hist_data('300336','2016-01-01','2016-05-24','15')
- # 数据存盘
- data.to_csv('15-300336-2016.csv')
- # 读出数据,DataFrame格式
- df = pd.read_csv('15-300336-2016.csv')
- # 从df中选取数据段,改变段名;新段'Adj Close'使用原有段'close'的数据
- df2 = pd.DataFrame({'Date Time' : df['date'], 'Open' : df['open'],
- 'High' : df['high'],'Close' : df['close'],
- 'Low' : df['low'],'Volume' : df['volume'],
- 'Adj Close':df['close']})
- # 按照Yahoo格式的要求,调整df2各段的顺序
- dt = df2.pop('Date Time')
- df2.insert(0,'Date Time',dt)
- o = df2.pop('Open')
- df2.insert(1,'Open',o)
- h = df2.pop('High')
- df2.insert(2,'High',h)
- l = df2.pop('Low')
- df2.insert(3,'Low',l)
- c = df2.pop('Close')
- df2.insert(4,'Close',c)
- v = df2.pop('Volume')
- df2.insert(5,'Volume',v)
- # 新格式数据存盘,不保存索引编号
- df2.to_csv("15-1.csv", index=False)
量化分析:把Tushare数据源,规整成PyalgoTrade所需格式的更多相关文章
- 量化分析获取数据的3种姿势(压箱底的神器Tushare)
自打入门量化分析起,就有相当部分的时间在与数据打交道,从数据的获取.清洗到使用,对分析而言既是繁琐的,也是必须的.有大牛曾经说,量化分析有8成的开发时间都在处理数据. 为了节省时间,将更多精力投入到策 ...
- 量化分析v1
量化分析v1 # -*- coding: utf-8 -*- """ Created on Wed Apr 11 10:13:32 2018 @author: chens ...
- 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据
财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...
- python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据
python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...
- C# 将DataTable数据源转换成实体类
using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...
- 利用R语言打造量化分析平台
利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...
- MyBatis 源码分析 - 内置数据源
1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...
- OKEx量化分析报告[2017-12-09]
OKEx量化分析报告[2017-12-09] [分析时间]2017-12-09 15:24 [分析对象]OKEx [计价币种]USDT [报告内容]DASH_USDT短期 -3.8中期 ...
- day31 堡垒机尾声 + Python与金融量化分析(一)
堡垒机尾声: 代码案例:https://github.com/liyongsan/git_class/tree/master/day31 课堂笔记:file send: 1.选择本地文件 2.远程路径 ...
随机推荐
- [py]python中的==和is的区别
is比较id id(a) == id(b) == id(c) a is d #false ==比较值 a==b #true 举个例子:a = 1 b = a c = 1 d = 1.0 这里有3个对象 ...
- 2.2 The Object Model -- Reopening Classes and Instances
1. 你不需要一开始定义一个类的全部内容,你可以通过使用reopen方法重新打开一个类并定义新的属性. Person.reopen({ isPerson: true }); Person.create ...
- (1)了解cocostudio基础
操作界面 Cocos Studio的界面主要分为菜单栏.工具栏.对象面板.资源面板.画布面板.属性面板.动画面板.输出窗口.状态栏九部分组成,如下图: 菜单栏 菜单栏为Cocos Studio ...
- SqlServer2005 各版本区别
SQL2005 分五个版本,如下所列, 1.Enterprise(企业版), 2.Development(开发版), 3.Workgroup,(工作群版) 4.Standard,(标准版) 5.Exp ...
- 2018-2019 ICPC, NEERC, Northern Eurasia Finals (Unrated, Online Mirror, ICPC Rules, Teams Preferred) Solution
A. Alice the Fan Solved. 题意: 两个人打网球,要求teamA 的得分与其他队伍拉开尽量大 输出合法的方案 思路: $dp[i][j][k][l] 表示 A 赢i局,其他队伍赢 ...
- cookie的存取删
存: document.cookie = "name=Kevin;expires="+new Date().getDate()+7; //有效期7天 取: function Get ...
- php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
在升级了php7.2.0版本之后,重新启动php-fpm过程中遇到一个报错. An another FPM instance seems to already listen on /tmp/php-c ...
- 常用php操作redis命令整理(三)LIST类型
LIST 头元素和尾元素:头元素指的是列表左端/前端第一个元素,尾元素指的是列表右端/后端第一个元素.举个例子,列表list包含三个元素:x, y, z,其中x是头元素,而z则是尾元素.空列表:指不包 ...
- js的函数作用域
1.js作用域 //在函数内部声明的变量,如果不加var,则自动变成window的成员//预处理:扫描代码,看到var或者函数就生效./*function f(){a = 8;//var a = 8; ...
- sql批处理(batch)的简单使用
批处理指的是一次操作中执行多条SQL语句,相比于一次一次执行效率会提高很多 批处理主要是分两步: 将要执行的SQL语句保存 执行SQL语句 Statement和PreparedStatement都支持 ...