[原]量化投资教程:用R语言打造量化分析平台

概述

和Python计算环境中的tushare包一样,在R中我们使用quantmod包接入第三方数据源,实现自定义量化分析平台的构建。

本文打算以陌陌的股票分析为背景,介绍如何通过quantmod包构建专属的量化分析平台。什么是quantmod

quantmod就是提供给宽客们使用的专业模块,Quantmod本身提供强大的数据接入能力,默认是雅虎财经的数据源,此外quantmod还以绘制专业的行情分析图表以及各种技术指标计算等功能著称,常常只要几行函数就能完成从数据获取和处理到画图的复杂功能,其工作效率之高让行家里手都觉得膛目结舌。利用API读取在线行情

首先,我们利用雅虎财经的默认接口直接体验一下读取多只股票。原理

利用API读取的方式,我们需要设定一个读取序列和对应的配置,获取行情函数getSymbols类似于原生的assign和get函数,用函数的方式将变量名传入后完成变量的赋值。

基于这个原理,我写了一个Quote函数来优化参数配置的体验。首先我们需要定义一个股票池序列,然后调用Quote函数获取某只股票的行情返回数据。

下面以美股的陌陌、360和A股的平安银行为例:代码

# 加载quantmod包

if(!require(quantmod)){

install.packages("quantmod")

}

# 股票行情匹配函数

Quote = function(code){

index = match(code,universes)

temp = lapply(universes,get)

return(temp[[index]])

}

# 基本配置

universes <

from = "2015-01-04"

to = Sys.Date() # 结束时间设为当前日期

src= "yahoo" # 来源雅虎财经

# 行情加载 速度有点慢,耐心等待

quantmod::getSymbols(universes,from=from,to=to,src=src)

# 绘制行情

quantmod::chartSeries(Quote("MOMO"),up.col='red',dn.col='green',TA="addVo(); addADX();addMACD(); addSMA(n=10);addBBands(n=14,sd=2,draw=\"bands\")")效果利用CSV读取离线行情

接着,在离线模式或者网络访问缓慢的情况下,我们也可以用一些实现准备好的CSV文件来读取行情。原理

分析底层数据结构后,我们知道quantmod包读取后的数据格式是 xts 和 zoo,我们只需要将csv文件按一定的格式读取到内存后再进行相应变换,quantmod强大的分析和作图能力就可以为我们所用。

zoo本身是一种时间序列格式,而xts则是在这基础上一种时间序列格式的加强版。在读取csv的时候,我们需要用首行确定header。在转化为zoo时,我们则需要首列来确定时间序列对应的时间。最后通过xts转化为可以被quantmod识别的xts时间序列对象。下面以平安银行为例:代码

# 加载 zoo 时间序列包

library(zoo)

library(quantmod)

# 配置文件路径

filePath = '/Users/harryzhu/temp.csv'

# 读取CSV并转化时间格式

csv

csv$LZ_GPA_QUOTE_TCLOSE

# 转化为zoo类型

temp = read.zoo(csv)

# 转化我xts类型

payh =as.xts(temp[,1]);colnames(payh)="Close"

# 制图

chartSeries(payh,name="000001.SZ")

# 添加MACD曲线

addMACD()效果指标计算

参考官方文档,我们知道,利用quantmod和TTR包,我们可以快速计算常见指标,下面是对应的计算列表。

指标名TTR 函数名quantmod 函数名威尔斯怀尔德移动方向指标ADXaddADX真实波幅ATRaddATR布林通道BBandsaddBBands布林带宽N/AaddBBands百分比布林带N/AaddBBands顺势指标CCIaddCCI资金流动CMFaddCMF钱德动量指标CMOaddCMO双指数移动平均线DEMAaddDEMA离势价格偏离指数DPOaddDPO指数平滑移动平均线EMAaddEMA价格信封N/AaddEnvelope指数量权移动平均线EVWMAaddEVWMA期权期货到期N/AaddExpiry异同平均线MACDaddMACD动量momentumaddMomentum变动率ROCaddROC相对强弱指数RSIaddRSI转折点信号SARaddSAR简单移动平均线SMAaddSMA随机动量指数SMIaddSMI三重平滑振荡指数TRIXaddTRIX成交量N/AaddVo加权移动平均法WMAaddWMA零延迟指数移动平均线ZLEMAaddZLEMA

尾注

综上所述,我们可以发现,利用quantmod包,我们可以快速实现各种姿势的行情获取以及常见的关键指标的计算和绘制。参考资料作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR 专栏:FinanceR - SegmentFault,如果涉及源代码请注明GitHub地址:harryprince (HarryZhu) · GitHub。微信号: harryzhustudio

商业使用请联系作者。

r语言 python 股票_如何用R语言下载到国内股票数据?相关推荐

  1. r语言 python 书_推荐关于R的几本书

    推荐几本学习R语言的好书.嘻嘻. 本书涉及数据科学家感兴趣的核心话题,教会读者从各种各样的数据源中提取数据,并运用现有的公开可用的R函数和R功能包来处理这些数据.在很多情况下,处理结果能够以图形的方式 ...

  2. python轮胎_如何用数据分析方法剖析途虎轮胎数据

    前言 本次分析只是用途虎养车网案例分享数据学习方法和方法论,禁止用作商业目的,同时声明数据与关键指标未必真实有效. 概述 笔者将通过以下环节,展示整个过程. 涉及知识: 结构化思维,描述性分析,探索性 ...

  3. r语言平均值显著性检验_最全的R语言统计检验方法_数据挖掘中R语言的运用

    最全的R语言统计检验方法_数据挖掘中R语言的运用 统计检验是将抽样结果和抽样分布相对照而作出判断的工作.主要分5个步骤:建立假设 求抽样分布 选择显著性水平和否定域 计算检验统计量 判定 假设检验(h ...

  4. 机械优化黄金分割法c语言编程,黄金分割法_机械优化设计_C语言程序.doc

    黄金分割法_机械优化设计_C语言程序黄金分割法_机械优化设计_C语言程序 黄金分割法的优化设计 实验报告 学院:机电工程 机制自动化11-03班 学号:541102010326 姓名:刘点点 1,黄金 ...

  5. excel和python建模_如何用Python提高办公(Excel)效率?

    1 T: G2 ^3 U. x0 ?. W* A: `如何用Python提高办公(Excel)效率? ; m+ Z; f& U4 H' I这几天在家里利用网络视频教程学习了一下简单的Pytho ...

  6. python 图灵完备_有什么配置语言是图灵完备的吗?

    34 235 天前   3 这个问题很有意思,因为我前两个月看到了 #18 提到的 Dhall 的作者的一篇博客: http://www.haskellforall.com/2020/01/why-d ...

  7. 易语言 python库_精易Python支持库 (1.1#1205版)发布啦!

    精易Python支持库 (1.1#1205版) 本支持库提供了 6 种库定义数据类型,提供了 87 种命令. 支持库说明 该支持库为易语言调用并执行Python代码.文件提供了支持. 使用本支持库,可 ...

  8. 如何用c语言读取硬盘串号_如何用C语言实现OOP

    我们知道面向对象的三大特性分别是:封装.继承.多态.很多语言例如:C++和Java等都是面向对象的编程语言,而我们通常说C是面向过程的语言,那么是否可以用C实现简单的面向对象呢?答案是肯定的!C有一种 ...

  9. 四大会计师事务所python数据分析_如何用Python进行数据分析

    利用手中一份虚拟的朝阳医院销售数据,为大家浅析一下用Python进行数据分析的过程.数据分析过程 一.理解数据 首先导入excel文件 #导入excel文件 fileNameStr="朝阳医 ...

  10. python 化学计量学_强烈推荐!八个鲜为人知的大数据学习网站!

    越来越多的管理者意识到数据分析对经济发展.企业运营的重要意义.在古代,得琅琊阁者得天下:现在,得大数据者得天下. 总结的数据分析五步走: 1.锁定分析目标,梳理思路,叫纸上谈兵: 2.把杂乱的数据整理 ...

最新文章

  1. python中weekid什么意思_week_one-python格式化输出
  2. Android--查找程序根目录下所有文件/Java IO操作
  3. Omi框架学习之旅 - 插件机制之omi-touch 及原理说明
  4. face recongnition
  5. 圆形渐变shader_Flutter 中渐变的高级用法
  6. Android -- 重置Bitmap大小Bitmap转角度
  7. springclould项目启动报错Could not resolve placeholder
  8. 激活anaconda的环境出现source: no such file or directory: activate
  9. idea java调用python代码
  10. 【推理加速】博客翻译:利用融合conv和bn的方法加速模型
  11. 编译优化之 - 常量传播入门
  12. 一元三次方程的解法史
  13. php做一个文章页面,thinkphp教程-文章内容页上一页下一页功能实现
  14. 【读书笔记】码农翻身 - 简介
  15. 腾讯云Web应用防火墙有什么用?Web应用防火墙是防御原理介绍
  16. android app 闪退的原因
  17. 3w+字详解 23 种设计模式(多图 + 代码)
  18. [0879]《兽医诊断技术》主观题
  19. Stratifyd:了解数据串联五步骤,解锁数据孤岛难题
  20. UDP的epoll并发框架-UDP Listener解决OpenUOM的并发问题

热门文章

  1. protues仿真技巧——制作PCB图
  2. python PDF文件转JPG
  3. matlab pn,PN序列生成代码快速参考
  4. 文献挖掘:SATI文献题录信息统计分析工具初试
  5. PMBOK(第六版) PMP笔记——《六》第六章(项目进度管理)
  6. 降本增效促提升---豪越创新企业后勤管理模式
  7. 2021-07-20 计算两个日期间的工作日天数VBA函数
  8. python爬淘宝评论源代码_python3爬取淘宝信息代码分析
  9. php千图网解析,PHP素材资源解析平台源码V8.0(thinkPHP框架内核)
  10. 易语言5.71程序静态破解