量化分析:把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中,边学边练,实验多次,最终搞定。

  1. import tushare as ts
  2. import pandas as pd
  3. # 得到15分钟数据(股票300336,始于2016-01-01,止于2016-05-24,15分钟数据)
  4. data = ts.get_hist_data('300336','2016-01-01','2016-05-24','15')
  5. # 数据存盘
  6. data.to_csv('15-300336-2016.csv')
  7. # 读出数据,DataFrame格式
  8. df = pd.read_csv('15-300336-2016.csv')
  9. # 从df中选取数据段,改变段名;新段'Adj Close'使用原有段'close'的数据
  10. df2 = pd.DataFrame({'Date Time' : df['date'], 'Open' : df['open'],
  11. 'High' : df['high'],'Close' : df['close'],
  12. 'Low' : df['low'],'Volume' : df['volume'],
  13. 'Adj Close':df['close']})
  14. # 按照Yahoo格式的要求,调整df2各段的顺序
  15. dt = df2.pop('Date Time')
  16. df2.insert(0,'Date Time',dt)
  17. o = df2.pop('Open')
  18. df2.insert(1,'Open',o)
  19. h = df2.pop('High')
  20. df2.insert(2,'High',h)
  21. l = df2.pop('Low')
  22. df2.insert(3,'Low',l)
  23. c = df2.pop('Close')
  24. df2.insert(4,'Close',c)
  25. v = df2.pop('Volume')
  26. df2.insert(5,'Volume',v)
  27. # 新格式数据存盘,不保存索引编号
  28. df2.to_csv("15-1.csv", index=False)

量化分析:把Tushare数据源,规整成PyalgoTrade所需格式的更多相关文章

  1. 量化分析获取数据的3种姿势(压箱底的神器Tushare)

    自打入门量化分析起,就有相当部分的时间在与数据打交道,从数据的获取.清洗到使用,对分析而言既是繁琐的,也是必须的.有大牛曾经说,量化分析有8成的开发时间都在处理数据. 为了节省时间,将更多精力投入到策 ...

  2. 量化分析v1

    量化分析v1 # -*- coding: utf-8 -*- """ Created on Wed Apr 11 10:13:32 2018 @author: chens ...

  3. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

  4. python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

    python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...

  5. C# 将DataTable数据源转换成实体类

    using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...

  6. 利用R语言打造量化分析平台

    利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...

  7. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...

  8. OKEx量化分析报告[2017-12-09]

    OKEx量化分析报告[2017-12-09] [分析时间]2017-12-09 15:24 [分析对象]OKEx [计价币种]USDT [报告内容]DASH_USDT短期    -3.8中期     ...

  9. day31 堡垒机尾声 + Python与金融量化分析(一)

    堡垒机尾声: 代码案例:https://github.com/liyongsan/git_class/tree/master/day31 课堂笔记:file send: 1.选择本地文件 2.远程路径 ...

随机推荐

  1. PAT 1139 First Contact[难][模拟]

    1139 First Contact(30 分) Unlike in nowadays, the way that boys and girls expressing their feelings o ...

  2. WordPress配置

    1.准备工作: 下载comsenzexp.exe 下载wordpress.zip 2.安装comsenzexp.exe,安装有个wwwroot目录: 3.解压wordpress.zip,然后ctrl+ ...

  3. 20155310 2016-2017-2 《Java程序设计》第七周学习总结

    20155310 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 认识时间与日期 •时间的度量 •GMT(格林威治标准时间):现在不是标 ...

  4. 解决android studio 模拟器取法启动声音的错误

    Emulator: dsound: Reason: No sound driver is available https://jingyan.baidu.com/article/a65957f4348 ...

  5. 20145104张家明 《Java程序设计》第4周学习总结

    20145104张家明 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 1.继承的定义及目的 面向对象中,子类继承父类,避免重复的行为定义.不过并非为了避免重复定义行为就使用 ...

  6. 初识PHP(三)面向对象特性

    PHP5开始支持面向对象的编程方式.PHP的面向对象编程方法和别的语言区别不大,下面对PHP面向编程基本语法进行简单记录. 一.声明对象 声明方法: class Say{ public functio ...

  7. firefox_flash_install_on_kali

    手动安装firefox的flash的步骤 1> 下载flash的tar.gz安装包 firefox http://get2.adobe.com/cn/flashplayer/otherversi ...

  8. 生成二维码Base64图片

    这个写了,但是自己没有用,发现浏览器有的不兼容 代码: string str = System.Configuration.ConfigurationManager.AppSettings[" ...

  9. HDU 2955 Robberies(概率DP,01背包)题解

    题意:给出规定的最高被抓概率m,银行数量n,然后给出每个银行被抓概率和钱,问你不超过m最多能拿多少钱 思路:一道好像能直接01背包的题,但是有些不同.按照以往的逻辑,dp[i]都是代表i代价能拿的最高 ...

  10. Rest和WebService的区别

    有好多人问我们在设计底层服务的时候到底是应该选择目前最流行的RestFul架构还是选择老牌的webService呢?今天我就将这两个概念做一下阐述,到底什么情况下选择什么比较合理. 首先需要了解:RE ...