R 语言金融数据分析

1. 简介

金融数据是一座金矿,无论是股票交易,期权交易,或者其他衍生品交易,都需要对相关的金融数据进行分析。传统的传统的交易员凭借过年的交易训练,每日人工盯盘,观察市场的变化。一个好的交易员,可以同时观测几个金融市场和几十个交易品种,随着金融产品的发展,中国市场A股股票已经超过3000支,债券超过7000支,共募基金接近4000支,还有很多金融的衍生产品。如此大量的金融产品,已经不是靠个人之力能够消化和分析的。

这个时候,计算机以及算法可以帮助我们进行交易,发现不合理的定价和交易机会,让一个程序来帮助我们赚钱。

本课程会讲解金融分析的基本知识,然后学习如何使用R语言来获取金融数据,并对数据进行基本的处理,最后进行分析。

量化投资

量化投资是指通过数量化方式及计算机程序化发出买卖指令,以获取稳定收益为目的的交易方式。在海外的发展已有30多年的历史,其投资业绩稳定,市场规模和份额不断扩大、得到了越来越多投资者认可。 事实上,互联网的发展,使得新概念在世界范围的传播速度非常快,作为一个概念,量化投资并不算新,国内投资者早有耳闻。但是,真正的量化基金在国内还比较罕见。同时,机器学习的发展也对量化投资起了促进作用

所以,对于国内而言,这是一个非常新,并且值得学习的一个领域。

其中,量化投资又包括,统计套利,算法交易,高频交易

统计套利是一种基于模型的套利策略,它从资产的历史交易数据找寻规律,发现两个或者两个以上的资产之间存在的套利机会,然后通过模型拟合资产价格的变化规律,设定交易阀值,通过计算机程序根据市场的实时信息自动发出交易信号而进行套利。

  • 成对交易,即价差交易,是统计套利最常用的策略,指在构建某一资产多头的同时,构建另一种资产的空头,并在将来某一时刻同时了结两资产的头寸。这是一种市场中性策略,可以免疫市场风险,通过捕捉两个或者多个资产之间的相对错误定价机会来 获得低风险收益。

算法交易又称自动交易、黑盒交易或者机器交易,它指的是通过使用计算机程序来发 出交易指令的方法。在交易中,程序可以决定的范围包括交易时间的选择、交易的价 格,甚至包括最后需要成交的证券数量。

  • 被动型算法交易除利用历史数据估计交易模型的关键参数外,不会根据市场的状况主 动选择交易的时机与交易的数量,而是按照一个既定的交易方针进行交易。该策略的 核心是减少滑价(目标价与实际成交均价的差)。被动型算法交易最成熟,使用也最 为广泛,如在国际市场上使用最多的成交量加权平均价格(VWAP)、时间加权平均 价格(TWAP)等都属于被动型算法交易。

  • 主动型算法交易也叫机会型算法交易。这类交易算法根据市场的状况做出实时的决策 ,判断是否交易、交易的数量、交易的价格等。

高频交易是指从那些人们无法 利用的极为短暂的市场变化中 寻求获利的计算机化交易,比 如,某种证券买入价和卖出价 差价的微小变化,或者某只股 票在不同交易所之间的微小价 差。这种交易的速度如此之快 ,以至于有些交易机构将自己 的“服务器群组”(server farms)安置到了离交易所的计 算机很近的地方,以缩短交易 指令通过光缆以光速旅行的距 离。

这种方法的要求就更加严格一些,需要有非常好的网络环境以及计算机性能,因此门槛更加高一些

Quant

什么是Quant

quant被称为金融矿工,quant的工作就是设计并实现金融的数学模型(主要采用计算机编程),包括衍生品定价,风险估价或预测市场行为等、

推荐一些书籍

2. R 语言与金融分析

R语言有一个非常大的资源库,就是R语言的包,可以通过一下链接直接查看R里面存在的包:https://cran.r-project.org/

其中金融分析有一个专门的模块,包含了各种个样金融分析的方法:

本课程学习的是Quantmod进行建模

安装

install.packages("quantmod") 
require("quantmod")

Quantmod 快速入门

Quantmod 是一个金融分析数据的一个框架,可以非常高效的从数据采集,数据的处理,到最后的数据的分析,建模。接下来通过一个例子进行快速的入门。

这个例子分为三步:

  1. 获取数据
  2. 使用Quantmod绘制图表
  3. 技术分析图

  4. 获取数据

quantmod支持从各个来源加载数据,比如:

  • 雅虎财经(OHLC数据)
  • Google 财经(OHLC数据)
  • Onada ,货币网站(外汇和金属)
  • Mysql
  • R的二进制文件
  • CSV文件
  • 其他(RODBC,economagic,Rbloomberg,……)

如何获取,假设我们要获取阿里巴巴的股票数据,首先我们要知道阿里巴巴的股票代码(BABA),其次是加载好quantmod包,然后使用getSymbols来获取数据

从yahoo 财经获取数据

require(quantmod)
require(tidyverse)
getSymbols("BABA",src="yahoo")
## [1] "BABA"
head(BABA)
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2014-09-19     92.70     99.70    89.95      93.89   271879400
## 2014-09-22     92.70     92.95    89.50      89.89    66657800
## 2014-09-23     88.94     90.48    86.62      87.17    39009800
## 2014-09-24     88.47     90.57    87.22      90.57    32088000
## 2014-09-25     91.09     91.50    88.50      88.92    28598000
## 2014-09-26     89.73     90.46    88.66      90.46    18340000
##            BABA.Adjusted
## 2014-09-19         93.89
## 2014-09-22         89.89
## 2014-09-23         87.17
## 2014-09-24         90.57
## 2014-09-25         88.92
## 2014-09-26         90.46

也可以筛选时间:

getSymbols("BABA",src="yahoo",from = '2018-01-01',to = '2019-01-01')
## [1] "BABA"
head(BABA)
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2018-01-02   176.399   184.100  175.700     183.65    29916900
## 2018-01-03   185.190   185.635  181.400     184.00    20121900
## 2018-01-04   185.900   187.747  184.430     185.71    19473800
## 2018-01-05   187.170   190.750  186.301     190.70    18168300
## 2018-01-08   190.460   191.660  189.070     190.33    16230100
## 2018-01-09   191.130   192.490  188.000     190.80    19495100
##            BABA.Adjusted
## 2018-01-02        183.65
## 2018-01-03        184.00
## 2018-01-04        185.71
## 2018-01-05        190.70
## 2018-01-08        190.33
## 2018-01-09        190.80

直接输入不同的股票代码,运行函数,就会将股票数据下载到本地.下载Google的股票数据

getSymbols("GOOG",src="yahoo",from = '2018-01-01',to = '2019-01-01')
## [1] "GOOG"
head(GOOG)
##            GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume
## 2018-01-02   1048.34   1066.94 1045.230    1065.00     1237600
## 2018-01-03   1064.31   1086.29 1063.210    1082.48     1430200
## 2018-01-04   1088.00   1093.57 1084.002    1086.40     1004600
## 2018-01-05   1094.00   1104.25 1092.000    1102.23     1279100
## 2018-01-08   1102.23   1111.27 1101.620    1106.94     1047600
## 2018-01-09   1109.40   1110.57 1101.231    1106.26      902500
##            GOOG.Adjusted
## 2018-01-02       1065.00
## 2018-01-03       1082.48
## 2018-01-04       1086.40
## 2018-01-05       1102.23
## 2018-01-08       1106.94
## 2018-01-09       1106.26
  1. 绘制图片 然后我们有了一些数据,接下来进行可视化,使用Quantmod可以非常方面的对金融数据进行可视化,chartSeries,barChart,candleChart和lineChart,可以很方便的绘制条形图,折线图和蜡烛图.

绘制google股票的条形图

barChart(GOOG,subset='last 1 months')

绘制google股票数据的蜡烛图

candleChart(GOOG,col = TRUE,theme ="white",subset='last 2 months')

绘制Google股票的折线图

chartSeries(x = GOOG,subset='last 5 months',type = 'line')

  1. 技术分析图

添加技术分析图非常简单,只要在原先绘制图形的基础之上(蜡烛图,折线图,条形图)添加技术曲线,我们这里添加技术曲线图,这里添加的是平均趋向指标ADX,这里简单的介绍一些平均趋向指标ADX:

平均趋向指标ADX(Average Directional Index)是另一种常用的趋势衡量指标,ADX 无法告诉你趋势的发展方向。可是,如果趋势存在, ADX 可以衡量趋势 的强度。 ADX 读数上升,代表趋势转强;如果 ADX 读数下降,意味着趋势转弱。

单就 ADX 本身来说,由于指标落后价格走势,所以算不上是很好的指标,不适 合单就 ADX 进行操作。可是,如果与其他指标配合运用, ADX 可以确认市场 是否存在趋势,并衡量趋势的强度。

一般来说,ADX指数大于30,认为趋势非常强劲,小于20,表示没有什么趋势变化。

candleChart(GOOG,col = TRUE,theme ="white",subset='last 2 months')

addADX()

3. Quantmod 详细介绍-第一部分

Quantmod包中的函数一共分为三部分:

  1. ETL类函数
  2. 分析类函数
  3. 展现类函数

我们从数据开始

读取数据

常用的数据类型

常用的ELT函数

getSymbols()

最常用的获取数据的函数就是getSymbols()函数,其可以满足大部分的数据获取需求.

  1. 获取股票的某一时间段的日数据
getSymbols(Symbols = 'BABA',src = 'yahoo',from = '2018-01-01',to = '2019-01-01' )
## [1] "BABA"
head(BABA)
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2018-01-02   176.399   184.100  175.700     183.65    29916900
## 2018-01-03   185.190   185.635  181.400     184.00    20121900
## 2018-01-04   185.900   187.747  184.430     185.71    19473800
## 2018-01-05   187.170   190.750  186.301     190.70    18168300
## 2018-01-08   190.460   191.660  189.070     190.33    16230100
## 2018-01-09   191.130   192.490  188.000     190.80    19495100
##            BABA.Adjusted
## 2018-01-02        183.65
## 2018-01-03        184.00
## 2018-01-04        185.71
## 2018-01-05        190.70
## 2018-01-08        190.33
## 2018-01-09        190.80
  1. 获取指数数据

假如想要获取泸深300指数的日数据,直接通过代码也可以下载下来,其代码是000300.ss

setSymbolLookup(WK=list(name='000300.ss',src='yahoo'))
getSymbols("WK")
## Warning: 000300.ss contains missing values. Some functions will not work if
## objects contain missing values in the middle of the series. Consider using
## na.omit(), na.approx(), na.fill(), etc to remove or replace them.
## [1] "WK"
WK %>% head()
##            000300.SS.Open 000300.SS.High 000300.SS.Low 000300.SS.Close
## 2007-01-04        2067.09        2067.09       2067.09         2067.09
## 2007-01-05        2072.88        2072.88       2072.88         2072.88
## 2007-01-08        2131.56        2131.56       2131.56         2131.56
## 2007-01-09        2200.09        2200.09       2200.09         2200.09
## 2007-01-10        2255.97        2255.97       2255.97         2255.97
## 2007-01-11        2231.63        2231.63       2231.63         2231.63
##            000300.SS.Volume 000300.SS.Adjusted
## 2007-01-04                0            2067.09
## 2007-01-05                0            2072.88
## 2007-01-08                0            2131.56
## 2007-01-09                0            2200.09
## 2007-01-10                0            2255.97
## 2007-01-11                0            2231.63

下载国内数据这里稍微提一下,quantmod 包默认是访问 yahoo finance 的数据,其中包括上证和深证的股票数据,还有港股数据。

上证代码是 ss,深证代码是 sz,港股代码是 hk

比如茅台:6000519.ss,万科 000002.sz,长江实业 0001.hk

getFX函数

使用这个函数可以从oanda上获取汇率数据

getFX("EUR/USD",from="2005-01-01")
## Warning in getSymbols.oanda(Symbols = Currencies, from = from, to = to, :
## Oanda only provides historical data for the past 180 days. Symbol: EUR/USD
## [1] "EURUSD"
EURUSD %>% head()
##             EUR.USD
## 2018-09-28 1.161492
## 2018-09-29 1.160420
## 2018-09-30 1.160466
## 2018-10-01 1.159054
## 2018-10-02 1.154828
## 2018-10-03 1.154086

getFinancials() 函数

使用这个函数可以从Google Finace 上面下载财务报表,下载阿里巴巴的财务报表

getFinancials("BABA")

需要注意的是,这个应为需要使用到Google ,因此国内可能使用不了,因此在这里稍微提一下

分析类函数

分析类函数分为几个部分:

  1. is族函数
  2. has族函数
  3. 列名函数
  4. 计算函数

is 族函数

is 族函数是用来判断数据类型的,有

  1. is.OHLC
  2. is.OHLCV
  3. is.BBO
  4. is.TBBO
  5. is.HLC
is.OHLC(BABA)
## [1] TRUE
is.OHLCV(BABA)
## [1] TRUE
is.HLC(BABA)
## [1] TRUE

has函数组

检查数据里面是否包含某类型的数据

  • has.OHLC()
  • has.HLC()
  • has.OHLCV()
  • has.Op()
  • has.Hi()
  • has.Lo()
  • has.Cl()
  • has.Vo()
  • has.Ad()
  • has.Ask()
  • has.Bid()
  • has.Price()
  • has.Qty()
  • has.Trade()
has.OHLC(BABA)
## [1] TRUE TRUE TRUE TRUE
has.HLC(BABA)
## [1] TRUE TRUE TRUE
has.OHLCV(BABA)
## [1] TRUE TRUE TRUE TRUE TRUE
has.Op(BABA) 
## [1] TRUE
has.Hi(BABA) 
## [1] TRUE
has.Lo(BABA) 
## [1] TRUE
has.Cl(BABA) 
## [1] TRUE
has.Vo(BABA) 
## [1] TRUE
has.Ad(BABA) 
## [1] TRUE
has.Ask(BABA)
## [1] FALSE
has.Bid(BABA)
## [1] FALSE
has.Price(BABA) 
## [1] FALSE
has.Qty(BABA)
## [1] FALSE
has.Trade(BABA)
## [1] FALSE

列名函数

提取某种数据类型

  • Op()
  • Hi()
  • Lo()
  • Cl()
  • Vo()
  • Ad()
  • HLC()
  • OHLC()
Op(BABA) %>% head()
##            BABA.Open
## 2018-01-02   176.399
## 2018-01-03   185.190
## 2018-01-04   185.900
## 2018-01-05   187.170
## 2018-01-08   190.460
## 2018-01-09   191.130
Hi(BABA) %>% head()
##            BABA.High
## 2018-01-02   184.100
## 2018-01-03   185.635
## 2018-01-04   187.747
## 2018-01-05   190.750
## 2018-01-08   191.660
## 2018-01-09   192.490
Lo(BABA) %>% head()
##            BABA.Low
## 2018-01-02  175.700
## 2018-01-03  181.400
## 2018-01-04  184.430
## 2018-01-05  186.301
## 2018-01-08  189.070
## 2018-01-09  188.000
Cl(BABA)  %>% head()
##            BABA.Close
## 2018-01-02     183.65
## 2018-01-03     184.00
## 2018-01-04     185.71
## 2018-01-05     190.70
## 2018-01-08     190.33
## 2018-01-09     190.80
Vo(BABA)  %>% head()
##            BABA.Volume
## 2018-01-02    29916900
## 2018-01-03    20121900
## 2018-01-04    19473800
## 2018-01-05    18168300
## 2018-01-08    16230100
## 2018-01-09    19495100
Ad(BABA)  %>% head()
##            BABA.Adjusted
## 2018-01-02        183.65
## 2018-01-03        184.00
## 2018-01-04        185.71
## 2018-01-05        190.70
## 2018-01-08        190.33
## 2018-01-09        190.80
HLC(BABA)  %>% head()
##            BABA.High BABA.Low BABA.Close
## 2018-01-02   184.100  175.700     183.65
## 2018-01-03   185.635  181.400     184.00
## 2018-01-04   187.747  184.430     185.71
## 2018-01-05   190.750  186.301     190.70
## 2018-01-08   191.660  189.070     190.33
## 2018-01-09   192.490  188.000     190.80
OHLC(BABA) %>% head()
##            BABA.Open BABA.High BABA.Low BABA.Close
## 2018-01-02   176.399   184.100  175.700     183.65
## 2018-01-03   185.190   185.635  181.400     184.00
## 2018-01-04   185.900   187.747  184.430     185.71
## 2018-01-05   187.170   190.750  186.301     190.70
## 2018-01-08   190.460   191.660  189.070     190.33
## 2018-01-09   191.130   192.490  188.000     190.80

计算函数

  • Delt() 计算变化率
  • Lag() 求滞后k期
  • Next() 求K个后的数据
  • findPeaks() 找出峰值
  • findValleys() 找出谷值
  • seriesIncr() 差分后大于限值的点
  • seriesDecr() 差分后小于限值的点
  • endpoints() 寻找节点
  • to.weekly() 将OHLC数据转化为周数据
  • to.monthly() 将PHLC数据转化为月数据
  • periodicity() 返回数据的日期范围
  1. Delt()函数

主要是用来计算一个序列的一个阶段到另一个阶段的变化率或者计算两个序列之间的 变化率

举例子:

这个例子差分:

head(Delt(Op(BABA)))
##            Delt.1.arithmetic
## 2018-01-02                NA
## 2018-01-03       0.049835883
## 2018-01-04       0.003833857
## 2018-01-05       0.006831652
## 2018-01-08       0.017577652
## 2018-01-09       0.003517788

两列数据的差值

head(Delt(Op(BABA),Cl(BABA)))
##            Delt.0.arithmetic
## 2018-01-02      0.0411056294
## 2018-01-03     -0.0064258437
## 2018-01-04     -0.0010219850
## 2018-01-05      0.0188598549
## 2018-01-08     -0.0006825842
## 2018-01-09     -0.0017265840

差分之后取对数

head(Delt(Op(BABA),type = 'log'))
##             Delt.1.log
## 2018-01-02          NA
## 2018-01-03 0.048633850
## 2018-01-04 0.003826527
## 2018-01-05 0.006808422
## 2018-01-08 0.017424951
## 2018-01-09 0.003511615
  1. to.weekly()和to.monthly()函数

转化成为州数据和月数据

to.weekly(BABA) %>% head()
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2018-01-05   176.399    190.75   175.70     190.70    87680900
## 2018-01-12   190.460    192.49   186.58     187.79    77859000
## 2018-01-19   190.400    191.74   179.32     184.05    78280100
## 2018-01-26   184.975    205.23   181.68     205.22   129009700
## 2018-02-02   204.830    206.20   186.80     187.31   157131400
## 2018-02-09   183.700    190.47   168.88     176.67   146661400
##            BABA.Adjusted
## 2018-01-05        190.70
## 2018-01-12        187.79
## 2018-01-19        184.05
## 2018-01-26        205.22
## 2018-02-02        187.31
## 2018-02-09        176.67
to.monthly(BABA) %>% head()
##         BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume BABA.Adjusted
##  1 2018   176.399    206.20   175.70     204.29   445098300        204.29
##  2 2018   192.750    199.49   168.88     186.14   445029900        186.14
##  3 2018   186.180    201.50   175.45     183.54   382712800        183.54
##  4 2018   182.810    183.63   166.13     178.54   323383100        178.54
##  5 2018   177.580    202.28   175.77     198.01   412503300        198.01
##  6 2018   199.500    211.70   182.04     185.53   408863800        185.53

4. Quantmod 详细介绍-第二部分

计算函数

用于计算不同阶段的收益率

  • periodReturn()
  • dailyReturn()
  • weeklyReturn()
  • monthlyReturn()
  • quarterlyReturn()
  • annualReturn()
  • yearlyReturn()
  • allReturn()

计算每一天的收益率

periodReturn(BABA,period="daily") %>% head()
##            daily.returns
## 2018-01-02   0.041105629
## 2018-01-03   0.001905832
## 2018-01-04   0.009293516
## 2018-01-05   0.026869796
## 2018-01-08  -0.001940194
## 2018-01-09   0.002469400

筛选时间

periodReturn(BABA,period="daily",subset ="2018-01-01::2019-01-01") %>% head()
##            daily.returns
## 2018-01-02   0.041105629
## 2018-01-03   0.001905832
## 2018-01-04   0.009293516
## 2018-01-05   0.026869796
## 2018-01-08  -0.001940194
## 2018-01-09   0.002469400

选取不同的计算方式

periodReturn(BABA,period="daily",subset ="2018-01-01::2019-01-01",type="arithmetic")  %>% head()
##            daily.returns
## 2018-01-02   0.041105629
## 2018-01-03   0.001905832
## 2018-01-04   0.009293516
## 2018-01-05   0.026869796
## 2018-01-08  -0.001940194
## 2018-01-09   0.002469400
periodReturn(BABA,period="daily",subset ="2018-01-01::2019-01-01",type="log") %>% head()
##            daily.returns
## 2018-01-02   0.040283254
## 2018-01-03   0.001904018
## 2018-01-04   0.009250597
## 2018-01-05   0.026515142
## 2018-01-08  -0.001942079
## 2018-01-09   0.002466357

计算周收益率

修改一下参数即可实现

periodReturn(BABA,period="weekly") %>%  head()
##            weekly.returns
## 2018-01-05     0.08107186
## 2018-01-12    -0.01525959
## 2018-01-19    -0.01991581
## 2018-01-26     0.11502308
## 2018-02-02    -0.08727221
## 2018-02-09    -0.05680423

计算全收益率

可以计算出来不同时间维度的收益率信息

allReturns(BABA) %>% head()
##                   daily     weekly monthly quarterly yearly
## 2018-01-02           NA         NA      NA        NA     NA
## 2018-01-03  0.001905832         NA      NA        NA     NA
## 2018-01-04  0.009293516         NA      NA        NA     NA
## 2018-01-05  0.026869796 0.08107186      NA        NA     NA
## 2018-01-08 -0.001940194         NA      NA        NA     NA
## 2018-01-09  0.002469400         NA      NA        NA     NA

绘图函数

使用quantmod 可以非常快速绘制出金融数据的图形,这里的图形分为两个部分:

  1. 基本图形- 条形图,蜡烛图,折线图
  2. 技术分析图

chartSeries()

chartSeries() 是最主要的绘图函数,可以绘制条形图,蜡烛图,线图

chartSeries(BABA)

设置主题

chartSeries(BABA,theme = 'white.mono')

筛选时间与主题命名

chartSeries(BABA,name="BABA CHART",subset="2018-12-01::2019-03-01")

绘制条形图

chartSeries(BABA,name="BABA CHART",subset="2018-12-01::2019-03-01",type = 'bars')

绘制折线图

chartSeries(BABA,name="BABA CHART",subset="2018-12-01::2019-03-01",type = 'line')

reChart()

使用这个函数可以在不重新再画一张新的图的前提下修改已经画出来的图

chartSeries(BABA,name="BABA CHART",subset="2018-12-01::2019-03-01",type = 'line')

reChart(type="candlesticks",show.grid=TRUE)

barChart()

使用这个函数直接绘制条形图

barChart(BABA)

candleChart()

使用这个函数直接绘制蜡烛图

candleChart(BABA,theme="white")

lineChart()

直接绘制折线图

lineChart(BABA,theme="white")

5.Quantmod 详细介绍-第三部分

技术分析图

技术分析图的背景

简单地说,技术分析就是看图,技术分析探讨股票价格、交易量和时间的相互关系,以此判定股票下一步运动的可能 方向。技术分析的目的是确定股票的走势以及走势的转变。炒手们根据技术分析提供的信号 ,买进卖出以赚取差价。

技术分析图函数

  • addADX()
  • addATR()
  • addBBands()
  • addCCI()
  • addCMF()
  • addCMO()
  • addMomentum()
  • addExpiry()
  • addSAR()
  • addSMA()
  • addSMI()
  • addDEMA()
  • addDPO()
  • addROC()
  • addRSI()
  • addVo()
  • addWMA()
  • addWPR()
  • addZLEMA()
  1. addADX()
  • ADX:平均趋向指标ADX(Average Directional Index)是另一种常用的趋势衡量指标
  • 特点:ADX 无法告诉你趋势的发展方向。可是,如果趋势存在, ADX 可以衡量趋势 的强度。 ADX 读数上升,代表趋势转强;如果 ADX 读数下降,意味着趋势转 弱。
  • 缺点:单就 ADX 本身来说,由于指标落后价格走势,所以算不上是很好的指标,不适 合单就 ADX 进行操作。可是,如果与其他指标配合运用, ADX 可以确认市场 是否存在趋势,并衡量趋势的强度。

一般来说,ADX指数大于,就可以认为有很强的变化趋势,小于20,则认为变化趋势并不明显

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addADX()

  1. addATR()
  • ATR: 真实波动幅度均值ATR(Average True Range)是一个用来测量价格的波动性的指 标,即显示市场变化率的指标

  • ATR是一个独特的波动性的指标,反映了一定程度的兴趣或漠不关心的举动。强大的移 动,在任何一个方向,往往伴随着大范围或大的真实波动幅度。这是特别真实的开头 的一招。平凡的举动可能会伴随着相对狭窄的范围内。因此,ATR可用于验证的热情, 此举背后或突破。

  • ATR指标在早期多用于期货市场上,但现在也用于股票、外汇等金融市场,ATR指标值越高,则价格趋势逆转的几率就越大,ATR指标值越小,则价格趋势逆转的几率就越小

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addATR()

  1. addBBands()
  • BBbands:BOLL指标又叫布林线指标,其英文全称是“Bolinger Bands”,布林线 (BOLL)由约翰 布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从 而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称 为布林带

  • 原理:一般而言,股价的运动总是围绕某一价值中枢(如均线、成本线等)在一定的 范围内变动,布林线指标指标正是在上述条件的基础上,引进了“股价信道”的概念 ,其认为股价信道的宽窄随着股价波动幅度的大小而变化,而且股价信道又具有变异 性,它会随着股价的变化而自动调整。正是由于它具有灵活性、直观性和趋势性的特 点,BOLL指标渐渐成为投资者广为应用的市场上热门指标。

  • 作用:通常在股价盘整的过程中,投资者最想知道的一定是股价要盘整到什么时候才会产生行情。因为如果太早买入股票,而股票却又迟迟不涨,资金的利用率就会降低 ,而且投资者还要承担股价下跌的风险。而布林线指标则恰恰可以在这时发挥其神奇的作用,对盘整的结束给予正确的提示,使投资者避免太早买入股票。

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addBBands()

  1. addCCI()
  • CCI: 买超卖指标CCI(Commodity Channel Index) 专门测量股价是否已超出常态分布范围

  • 原理:CCI指标是一种超买超卖指标。所谓超买超卖指标,顾名思义,“超买”,就是已 经超出买方的能力,买CCI指标进股票的人数超过了一定比例,那么,这时候应该反 向卖出股票。“超卖”则代表卖方卖股票卖过了头,卖股票的人数超过一定比例时,反而 应该买进股票。这是在一般常态行情,但是,如果行情是超乎寻常的强势,则超买超 卖指标会突然间失去方向,行情不停的持续前进,群众似乎失去了控制,对于原价的 这种脱序行为,CCI指标提供了不同度的看法。这样就有利于投资者更好的研判行情, 特别是那些短期内暴涨暴跌的非常态行情。CCI与其他指标一起使用时,可以是一个有价值的工具,以确定潜在的资产的价格高峰和低谷,并从而为投资者提供合理的证据 估计的资产价格运动方向的变化。

  • CCI通常会处于-100到100之间。一般来说,当CCI上升超过100时,买入;当CCI下降 低于-100时,卖出。

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addCCI()

  1. addRSI()
  • RSI: 相对强弱指数RSI(Relative Strength Index)是一个测量速度和变化的价格变动 的指标
  • RSI 0到100之间振荡。
  • 用法:一般情况下, 超买: RSI>70 超卖: 低于30
chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addRSI()

  1. addVo()
  • Vo: 成交量指标Vo(Volumes)显示了投资者对市场的兴趣大小,成交量大,表示投资 者的兴趣大,成交量小,表示投资者的兴趣小。

  • 用法:

1.如果成交量高,表示市场中人参与得多,兴趣大,这样可能会更巩固一个趋势,或者是 一个新的趋势的开始; 2.如果成交量低,表示市场中人参与得少,兴趣小,这样可能会是一个逆转的趋势,或者 表示市场趋势比较稳定,没有大的波动; 3.如果成交量突然增加或降低,表示一个可能的逆转; 4.如果成交量渐渐地降低,表示价格变动比较快速

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addVo()

  • WPR: 威廉指标WPR(Williams Percent R)表示市场处于超买还是超卖状态

  • 作用:威廉指数主要用于研究股价的波动,通过分析股价波动变化中的峰与谷决定买卖时机。它利用振荡点来反映市场的超买超卖现象,可以预测循期内的高点与低点,从而显示出有效的买卖信号,是用来分析市场短期行情走势的技术指示。

  • 用法: WPR>80 即处于超卖状态,行情即将见底,应当考虑买进。 WPR>20 即处于超买状态,行情即将见顶,应当考虑卖出。

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addWPR()

  1. addSAR ()
  • SAR:抛物线转向指标SAR(Stop and Reveres)显示了市场价格变化的趋势,它是一个 领先指标。

  • 用法:

1、当股票股价从SAR曲线下方开始向上突破SAR曲线时,为买入信号,预示着股价一轮上 升行情可能展开,投资者应迅速及时地买进股票。 2、当股票股价向上突破SAR曲线后继续向上运动而SAR曲线也同时向上运动时,表明股价 的上涨趋势已经形成,SAR曲线对股价构成强劲的支撑,投资者应坚决持股待涨或逢低加 码买进股票。 3、当股票股价从SAR曲线上方开始向下突破SAR曲线时,为卖出信号,预示着股价一轮下 跌行情可能展开,投资者应迅速及时地卖出股票。 4、当股票股价向下突破SAR曲线后继续向下运动而SAR曲线也同时向下运动,表明股价的 下跌趋势已经形成,SAR曲线对股价构成巨大的压力,投资者应坚决持币观望或逢高减磅

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addSAR()

  1. addDPO()
  • DPO: 区间震荡线DPO(Detrended price Oscillator),是由惠特曼·巴塞特(Walt Bressert)提出的。是一个排除价格趋势的震荡指标。它试图通过扣除前期移动 平均价来消除长期趋势对价格波动的干扰,从而便于发现价格短期的波动和超买 超卖水平。

  • 用法: DPO>0,表明目前处于多头市场;DPO<0,表明目前处于空头市场。 在0轴上方,设定一条超买线,当DPO波动至超买线时,股价会形成短期高点。 在0轴下方,设定一条超卖线,当DPO波动至超卖线时,股价会形成短期低点。 超买超卖的范围随个股的不同而不同,使用者应自行设定。

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addDPO()

  1. addCMF()

haikin Money Flow(CMF)是自1966年以来股票经纪人Marc Chaikin开发的另一个指标 CMF指标背后的想法在于结合价格和交易量,以便在选定的时期内查看货币流入(流入市场或流出市场)。默认CMF期限 - 21天。

CMF高于零 - 看涨信号 - 指标显示买入压力的迹象 CMF低于零 - 看跌信号 - 该指标显示抛售压力的迹象

因此,当CMF高于零时,将寻求买入,而当它低于零时卖出。

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addCMF()

  1. addCMO()

钱德动量摆动指标(ChandeMomentumOsciliator,简称CMO)是由图莎尔·钱德发明的,与其他动量指标摆动指标如相对强弱指标(RSI)和随机指标(KDJ)不同,钱德动量指标在计算公式的分子中采用上涨日和下跌日的数据。

当CMO大于50时,处于超买状态;当CMO小于50时处于超卖状态。    CMO的绝对值日越高,趋势越强。较低的CMO绝对值(0附近)标示标的证券在水平方向波动。   

chartSeries(BABA,name="BABA CANDLECHART",type="candlesticks") 

addCMO()

6. 案例分析

通常情况下,我们关注的不仅仅是单个股票是否能够获利或者获利多少,我们更关注 的是各个股票的利润率比较。下面我们来讲述一个通过用quantmod分析各大股票的 利润率来看应该选择那些股票。

require("quantmod")
stocks <- c("BABA","GOOG","MSFT","ORCL")
date_begin <- as.Date("2018-10-01")
date_end <- as.Date("2019-03-01")
tickers <- getSymbols(stocks, from = date_begin, to = date_end) 
dataset <- Ad(get(tickers[1]))
for (i in 2:length(tickers)) {
dataset <- merge(dataset, Ad(get(tickers[i])))
}


return_lag <- 5
data <- ROC(dataset, return_lag, type = "discrete")  #Calculate the (rate of) change of a series over n periods.
names(data) <-stocks


data %>% head() # 得到了每一支股票的收益率
##                   BABA        GOOG        MSFT        ORCL
## 2018-10-01          NA          NA          NA          NA
## 2018-10-02          NA          NA          NA          NA
## 2018-10-03          NA          NA          NA          NA
## 2018-10-04          NA          NA          NA          NA
## 2018-10-05          NA          NA          NA          NA
## 2018-10-08 -0.06703704 -0.03876826 -0.04117295 -0.04710418

但是可以看到,存在一些缺失值,因此,进行一些处理,下面列举了三种缺失值的处理方法

data_omit <- na.omit(dataset) # 去除缺失值
data_locf <- na.locf(dataset) # 把上一个观测值填补上来
data_approx <- na.approx(dataset) # 线性近似填补数据
data_spline <- na.spline(dataset) #用三次样条填补数据

再重新进行计算

return_lag <- 5
data <- na.omit(ROC(dataset, return_lag, type = "discrete")) 
names(data) <-stocks

data %>% head()
##                   BABA        GOOG        MSFT        ORCL
## 2018-10-08 -0.06703704 -0.03876826 -0.04117295 -0.04710418
## 2018-10-09 -0.08294323 -0.05107035 -0.02509778 -0.02707546
## 2018-10-10 -0.14830327 -0.10119289 -0.07823216 -0.04723608
## 2018-10-11 -0.09114206 -0.07607495 -0.06099826 -0.05437647
## 2018-10-12 -0.04746823 -0.04084332 -0.02283070 -0.03991892
## 2018-10-15 -0.04618231 -0.04936593 -0.02931884 -0.04153742

用图表来直观地对比一下这四个股票的收益率的情况

plot(data[,1],type="p",main="Returns of stocks",ylab="returns",xlab="time",ylim=c(0,0.12))

points(data[,2],col="green")

points(data[,3],col="blue")

points(data[,4],col="orange")

lines(data[,1],col="black")

lines(data[,2],col="green")

lines(data[,3],col="blue")

lines(data[,4],col="orange")

可以看到阿里巴巴股票的收益率是很不错的,可以分析一下阿里巴巴股票历年的股票趋势

chartSeries(BABA,from = '2015-01-01',to='2015-12-31')

chartSeries(BABA,from = '2016-01-01',to='2016-12-31') 

chartSeries(BABA,from = '2017-01-01',to='2017-12-31') 

chartSeries(BABA,from = '2018-01-01',to='2018-12-31')

看完趋势之后,我们对于股票18年的数据进行技术分析

chartSeries(BABA,from = '2018-01-01',to='2018-12-31')

addADX()

addSAR()

addCCI() 

addRSI() 

addBBands()

构建追涨杀跌模型

追涨杀跌模型是金融市场的专业术语,“追涨杀跌的操作方法是金融市场中在金融产品(股票,期货,外汇等)价格上涨的时候买入,以期待涨得更多,并以更高的价格卖出获利;在价格下跌的时候卖出进行止损,不管之前金融产品买入价格是多少,都立即卖出,避免更大的损失。

  1. 追涨

分为两种,短线追涨和中线追涨

  • 短线追涨:当天股价已经涨了5个点或更多,这时追进去买入,期待当天收盘涨停,等下一个交易日高价卖出,这就是短线追涨。由于中国股票市场的交易规则的特殊性,A股股价每日最大变动10%,并且是T+1交易,即今日买进,第二天才能卖出。

  • 中线追涨:某支股票的股价已经上涨了一段时间,走势很强,底部上涨已经有30%或更多,这个时追进去买入,期待后势持续上涨,是中线追涨。

不论短线追涨还是中线追涨,我们追涨的理由和判断的标准都是一样的,“涨得好的股票说明走势很强,那么追强势股期待股票持续上涨”。但从另一个角度看,追涨的风险也是很大的,关键在于我们不知道它能涨到什么时候,到什么位置可能会回调,什么时候是庄家出货。所以说追涨技巧性很强,什么情况下能追,什么情况下不能追,都是很有讲究的

  1. 追涨杀跌的技巧

要进行追涨杀跌的操作,那么要定义什么是追涨,什么是杀跌。简单粗暴的定义可以选择当日涨幅超过5%的股票进行买入,第二天开盘卖出或者止损位卖出。

下面以中线追涨为例子,进行建模和程序实现,对于中线追涨,策略定义为,当股价向上突破最近20天的最高价的时候买入,当股价跌破近10天的最低价格卖出,阿里巴巴的数据进行建模,时间范围从2016年1月到2018年12月

getSymbols(Symbols = "BABA",src = 'yahoo',from = '2016-01-01',to = '2019-02-01')
## [1] "BABA"

构建追涨杀跌模型最重要的一步是要判断在在哪个位置追涨,以及在哪个位置杀跌

up <- 0
down <- 0
# 从第二十天开始
BUY <- FALSE
n_up <- 1
n_down <- 1
for (i in 21:dim(BABA)[1]) {
  if(1==1){
    Type <- all(as.numeric(BABA[i,4]) >= as.numeric(BABA[(i-20):(i-1),4]))
    if(Type==TRUE){
      up[n_up] <- i
      n_up <- n_up+1
      BUY <- TRUE
    }
  }
  
  if(BUY==TRUE){
     Type <- all(as.numeric(BABA[i,4]) <= as.numeric(BABA[(i-10):(i-1),4]))
    if(Type==TRUE){
      down[n_down] <- i
      n_down <- n_down+1
      BUY <- FALSE
    }
  }
  
}

up
##   [1]  40  41  43  44  48  52  53  54  55  60  61  63  70  75  99 103 125
##  [18] 126 131 132 134 136 137 138 140 149 151 152 153 154 155 170 171 178
##  [35] 179 182 183 255 257 258 259 266 267 268 287 300 303 305 308 312 320
##  [52] 324 327 328 329 330 333 334 335 340 342 343 344 345 349 358 360 361
##  [69] 370 375 379 383 384 385 386 388 394 396 402 409 410 411 412 413 414
##  [86] 428 431 432 446 447 448 462 463 466 467 477 479 504 505 506 507 509
## [103] 518 519 520 521 554 555 589 590 591 595 604 608 609 615 617 645 719
## [120] 725 732 733 735 736 760 765 766 767 771 774 775
down
##  [1]  80 100 111 196 405 436 452 472 482 527 559 622 648 744

于是,这里得出了买入和卖出的点,下面我们来模拟交易,并且假设没有手续费,假设本金是100000,每一次买1000

Trade <- function(capital = 100000,fixMoney=1000){
  j=1
  tmp <- FALSE
  mystock <- 0
  for (i in 1:length(up)) {
    if(up[i]<down[j]|tmp ==TRUE){
      tmp <- FALSE
      if(capital>0){
        
        stock <- fixMoney/as.numeric(BABA[up[i],4])
        mystock <- mystock+stock
        capital <- capital - fixMoney
        print(paste("第",i,'次买入',"此时股票",mystock,'还有本金',capital))
      }else{print("没有资金买入了")}
    }else if(mystock!=0){
      capital <- capital + mystock*as.numeric(BABA[up[j],4])
      j=j+1
      tmp <- TRUE
      print(paste("第",j-1,'次卖出','此时本金为',capital))
      if(j>length(down)){
        break()
      }
      mystock <- 0
      stock <- 10000/as.numeric(BABA[up[i],4])
      mystock <- mystock+stock
      capital <- capital - fixMoney
    }
    
    
  }
  return(capital)
  
}



Trade(capital = 100000,fixMoney = 1000)
## [1] "第 1 次买入 此时股票 14.1123339809154 还有本金 99000"
## [1] "第 2 次买入 此时股票 28.1474217002137 还有本金 98000"
## [1] "第 3 次买入 此时股票 41.9940014032519 还有本金 97000"
## [1] "第 4 次买入 此时股票 55.7133046508757 还有本金 96000"
## [1] "第 5 次买入 此时股票 69.2249918955268 还有本金 95000"
## [1] "第 6 次买入 此时股票 82.6930053635403 还有本金 94000"
## [1] "第 7 次买入 此时股票 95.8077594619009 还有本金 93000"
## [1] "第 8 次买入 此时股票 108.610217369948 还有本金 92000"
## [1] "第 9 次买入 此时股票 121.40121250937 还有本金 91000"
## [1] "第 10 次买入 此时股票 134.081912323208 还有本金 90000"
## [1] "第 11 次买入 此时股票 146.735335234171 还有本金 89000"
## [1] "第 12 次买入 此时股票 159.380757271465 还有本金 88000"
## [1] "第 13 次买入 此时股票 171.937261698342 还有本金 87000"
## [1] "第 14 次买入 此时股票 184.251016313706 还有本金 86000"
## [1] "第 1 次卖出 此时本金为 99056.0272002402"
## [1] "第 16 次买入 此时股票 135.469279127964 还有本金 97056.0272002402"
## [1] "第 2 次卖出 此时本金为 106708.213338108"
## [1] "第 18 次买入 此时股票 138.293644025268 还有本金 104708.213338108"
## [1] "第 3 次卖出 此时本金为 114695.780447906"
## [1] "第 20 次买入 此时股票 134.993550842993 还有本金 112695.780447906"
## [1] "第 21 次买入 此时股票 147.227463547517 还有本金 111695.780447906"
## [1] "第 22 次买入 此时股票 159.326676805855 还有本金 110695.780447906"
## [1] "第 23 次买入 此时股票 171.408349347174 还有本金 109695.780447906"
## [1] "第 24 次买入 此时股票 183.253883861401 还有本金 108695.780447906"
## [1] "第 25 次买入 此时股票 195.089604345144 还有本金 107695.780447906"
## [1] "第 26 次买入 此时股票 206.889014374643 还有本金 106695.780447906"
## [1] "第 27 次买入 此时股票 218.653720256996 还有本金 105695.780447906"
## [1] "第 28 次买入 此时股票 230.385301949431 还有本金 104695.780447906"
## [1] "第 29 次买入 此时股票 241.836120420728 还有本金 103695.780447906"
## [1] "第 30 次买入 此时股票 252.732928012429 还有本金 102695.780447906"
## [1] "第 31 次买入 此时股票 262.911045060775 还有本金 101695.780447906"
## [1] "第 32 次买入 此时股票 272.986611811405 还有本金 100695.780447906"
## [1] "第 33 次买入 此时股票 282.62237987496 还有本金 99695.7804479062"
## [1] "第 34 次买入 此时股票 292.196338981919 还有本金 98695.7804479062"
## [1] "第 35 次买入 此时股票 301.752913996795 还有本金 97695.7804479062"
## [1] "第 36 次买入 此时股票 311.186876260946 还有本金 96695.7804479062"
## [1] "第 37 次买入 此时股票 320.330987369723 还有本金 95695.7804479062"
## [1] "第 4 次卖出 此时本金为 119044.705796954"
## [1] "第 39 次买入 此时股票 116.523307939309 还有本金 117044.705796954"
## [1] "第 40 次买入 此时股票 126.859225251971 还有本金 116044.705796954"
## [1] "第 41 次买入 此时股票 137.174884209766 还有本金 115044.705796954"
## [1] "第 42 次买入 此时股票 147.336452742981 还有本金 114044.705796954"
## [1] "第 43 次买入 此时股票 157.195468813178 还有本金 113044.705796954"
## [1] "第 44 次买入 此时股票 166.805309474524 还有本金 112044.705796954"
## [1] "第 45 次买入 此时股票 176.402238733552 还有本金 111044.705796954"
## [1] "第 46 次买入 此时股票 185.90974966719 还有本金 110044.705796954"
## [1] "第 47 次买入 此时股票 195.376757414999 还有本金 109044.705796954"
## [1] "第 48 次买入 此时股票 204.700766739008 还有本金 108044.705796954"
## [1] "第 49 次买入 此时股票 213.938642027691 还有本金 107044.705796954"
## [1] "第 50 次买入 此时股票 223.070228017435 还有本金 106044.705796954"
## [1] "第 51 次买入 此时股票 232.022779735051 还有本金 105044.705796954"
## [1] "第 52 次买入 此时股票 240.970524743144 还有本金 104044.705796954"
## [1] "第 53 次买入 此时股票 249.823216039644 还有本金 103044.705796954"
## [1] "第 54 次买入 此时股票 258.66416724784 还有本金 102044.705796954"
## [1] "第 55 次买入 此时股票 267.370418260323 还有本金 101044.705796954"
## [1] "第 56 次买入 此时股票 276.029926175299 还有本金 100044.705796954"
## [1] "第 57 次买入 此时股票 284.687934833308 还有本金 99044.7057969543"
## [1] "第 58 次买入 此时股票 293.258383924841 还有本金 98044.7057969543"
## [1] "第 59 次买入 此时股票 301.726501749148 还有本金 97044.7057969543"
## [1] "第 60 次买入 此时股票 310.059835082481 还有本金 96044.7057969543"
## [1] "第 61 次买入 此时股票 318.382071822753 还有本金 95044.7057969543"
## [1] "第 62 次买入 此时股票 326.691861030325 还有本金 94044.7057969543"
## [1] "第 63 次买入 此时股票 334.929093184571 还有本金 93044.7057969543"
## [1] "第 64 次买入 此时股票 342.992308990003 还有本金 92044.7057969543"
## [1] "第 65 次买入 此时股票 351.008341054131 还有本金 91044.7057969543"
## [1] "第 66 次买入 此时股票 358.9847307492 还有本金 90044.7057969543"
## [1] "第 67 次买入 此时股票 366.943979459478 还有本金 89044.7057969543"
## [1] "第 68 次买入 此时股票 373.969411720977 还有本金 88044.7057969543"
## [1] "第 69 次买入 此时股票 380.948266134069 还有本金 87044.7057969543"
## [1] "第 70 次买入 此时股票 387.895122826258 还有本金 86044.7057969543"
## [1] "第 71 次买入 此时股票 394.797863452431 还有本金 85044.7057969543"
## [1] "第 72 次买入 此时股票 401.656103722073 还有本金 84044.7057969543"
## [1] "第 73 次买入 此时股票 408.367513118046 还有本金 83044.7057969543"
## [1] "第 74 次买入 此时股票 415.055581424946 还有本金 82044.7057969543"
## [1] "第 75 次买入 此时股票 421.641894978443 还有本金 81044.7057969543"
## [1] "第 76 次买入 此时股票 428.145960019093 还有本金 80044.7057969543"
## [1] "第 77 次买入 此时股票 434.564857540964 还有本金 79044.7057969543"
## [1] "第 78 次买入 此时股票 440.911646146534 还有本金 78044.7057969543"
## [1] "第 79 次买入 此时股票 447.207289719831 还有本金 77044.7057969543"
## [1] "第 5 次卖出 此时本金为 110142.518203534"
## [1] "第 81 次买入 此时股票 68.7964616865659 还有本金 108142.518203534"
## [1] "第 82 次买入 此时股票 74.7666109402973 还有本金 107142.518203534"
## [1] "第 83 次买入 此时股票 80.6750304380816 还有本金 106142.518203534"
## [1] "第 84 次买入 此时股票 86.4070031531807 还有本金 105142.518203534"
## [1] "第 85 次买入 此时股票 92.0952851949052 还有本金 104142.518203534"
## [1] "第 86 次买入 此时股票 97.6828137997689 还有本金 103142.518203534"
## [1] "第 87 次买入 此时股票 103.238986831354 还有本金 102142.518203534"
## [1] "第 88 次买入 此时股票 108.792382517066 还有本金 101142.518203534"
## [1] "第 6 次卖出 此时本金为 109220.352605426"
## [1] "第 90 次买入 此时股票 60.3787990546846 还有本金 107220.352605426"
## [1] "第 91 次买入 此时股票 65.7932773110658 还有本金 106220.352605426"
## [1] "第 7 次卖出 此时本金为 111237.090000395"
## [1] "第 93 次买入 此时股票 59.4602463330882 还有本金 109237.090000395"
## [1] "第 94 次买入 此时股票 64.7839261738821 还有本金 108237.090000395"
## [1] "第 95 次买入 此时股票 70.0886846828407 还有本金 107237.090000395"
## [1] "第 8 次卖出 此时本金为 112711.71723106"
## [1] "第 97 次买入 此时股票 57.6138475019524 还有本金 110711.71723106"
## [1] "第 9 次卖出 此时本金为 115215.967828763"
## [1] "第 99 次买入 此时股票 59.8861865112735 还有本金 113215.967828763"
## [1] "第 100 次买入 此时股票 65.2709259561436 还有本金 112215.967828763"
## [1] "第 101 次买入 此时股票 70.5147645284116 还有本金 111215.967828763"
## [1] "第 102 次买入 此时股票 75.7558545927551 还有本金 110215.967828763"
## [1] "第 103 次买入 此时股票 80.9566035276456 还有本金 109215.967828763"
## [1] "第 104 次买入 此时股票 86.0709082640764 还有本金 108215.967828763"
## [1] "第 105 次买入 此时股票 91.113009761156 还有本金 107215.967828763"
## [1] "第 106 次买入 此时股票 95.9858291507241 还有本金 106215.967828763"
## [1] "第 10 次卖出 此时本金为 113785.410411574"
## [1] "第 108 次买入 此时股票 55.2291200316263 还有本金 111785.410411574"
## [1] "第 11 次卖出 此时本金为 116150.167712445"
## [1] "第 110 次买入 此时股票 58.0598823254899 还有本金 114150.167712445"
## [1] "第 111 次买入 此时股票 63.1538663822775 还有本金 113150.167712445"
## [1] "第 112 次买入 此时股票 68.1880991905449 还有本金 112150.167712445"
## [1] "第 113 次买入 此时股票 73.2081795874336 还有本金 111150.167712445"
## [1] "第 114 次买入 此时股票 78.1019841268054 还有本金 110150.167712445"
## [1] "第 115 次买入 此时股票 82.8878181270806 还有本金 109150.167712445"
## [1] "第 116 次买入 此时股票 87.670676317411 还有本金 108150.167712445"
## [1] "第 117 次买入 此时股票 92.4131594591046 还有本金 107150.167712445"
## [1] "第 12 次卖出 此时本金为 114458.200547297"
## [1] "第 119 次买入 此时股票 57.0675306103512 还有本金 112458.200547297"
## [1] "第 13 次卖出 此时本金为 117003.058628038"
## [1] "第 121 次买入 此时股票 70.4036996090748 还有本金 115003.058628038"
## [1] "第 122 次买入 此时股票 76.6795878047793 还有本金 114003.058628038"
## [1] "第 123 次买入 此时股票 82.8961736171839 还有本金 113003.058628038"
## [1] "第 124 次买入 此时股票 89.0034166211157 还有本金 112003.058628038"
## [1] "第 14 次卖出 此时本金为 119231.026002835"
## [1] 119231
chartSeries(BABA,type = 'line')

BABA[up,]
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2016-03-01    70.020    71.840   69.860      70.86    14007700
## 2016-03-02    72.040    72.040   70.750      71.25    10503000
## 2016-03-04    70.960    72.960   70.720      72.22    10763600
## 2016-03-07    72.200    73.980   72.000      72.89    11244500
## 2016-03-11    72.580    74.010   72.220      74.01    11219200
## 2016-03-17    73.760    74.370   73.510      74.25     9423900
## 2016-03-18    74.970    76.300   74.710      76.25    13350100
## 2016-03-21    77.090    79.680   76.940      78.11    15493300
## 2016-03-22    77.000    78.550   76.908      78.18     9148400
## 2016-03-30    79.010    79.550   78.540      78.86    10696000
## 2016-03-31    78.500    79.840   78.410      79.03    11318500
## 2016-04-04    78.330    79.550   78.320      79.08     9817300
## 2016-04-13    78.740    79.720   78.500      79.64    14150900
## 2016-04-20    79.000    81.735   78.990      81.21    14911900
## 2016-05-24    79.170    81.310   79.070      81.12    16707700
## 2016-05-31    81.000    82.030   80.200      82.00    78861400
## 2016-06-30    78.310    79.760   78.280      79.53    12485300
## 2016-07-01    79.120    80.050   79.120      79.65     7271300
## 2016-07-11    79.330    81.900   79.240      81.46    17417500
## 2016-07-12    81.790    82.880   81.510      81.74    15294100
## 2016-07-14    81.180    82.240   80.860      81.74     9361500
## 2016-07-18    80.600    82.790   80.600      82.65    12113600
## 2016-07-19    82.480    83.690   82.050      82.77     9799400
## 2016-07-20    83.270    84.700   83.230      84.42    13991000
## 2016-07-22    84.000    84.500   83.810      84.49     5988400
## 2016-08-04    83.750    84.980   83.690      84.75    10714500
## 2016-08-08    84.990    85.020   84.300      85.00    11528200
## 2016-08-09    85.050    85.630   84.800      85.24    15349200
## 2016-08-10    86.010    87.730   86.010      87.33    28195900
## 2016-08-11    92.140    92.800   91.260      91.77    54078300
## 2016-08-12    92.980    98.350   92.910      98.25    71968300
## 2016-09-02    97.970    99.665   97.970      99.25    17482600
## 2016-09-06   100.450   104.300  100.450     103.78    32803800
## 2016-09-15   102.620   104.480  102.530     104.45    20795900
## 2016-09-16   104.000   105.390  103.860     104.64    20363500
## 2016-09-21   102.460   106.190  102.210     106.00    22997100
## 2016-09-22   107.570   109.760  107.480     109.36    35627700
## 2017-01-05    91.910    94.810   91.640      94.37    16821500
## 2017-01-09    94.160    95.650   93.310      94.72    10792900
## 2017-01-10    96.400    97.904   95.550      96.75    14780600
## 2017-01-11    96.920    97.450   95.600      96.94     8735900
## 2017-01-23    96.480    98.670   96.260      98.41    14090300
## 2017-01-24   103.150   103.190   99.940     101.43    37181500
## 2017-01-25   102.460   104.270  101.900     104.06    23322800
## 2017-02-22   102.480   105.200  102.420     104.20    15779400
## 2017-03-13   103.520   106.250  103.470     105.18    16118900
## 2017-03-16   105.250   105.650  104.301     105.63    12445200
## 2017-03-20   106.230   108.200  105.940     107.25    12447900
## 2017-03-23   106.950   108.830  106.440     108.25    13410800
## 2017-03-29   107.970   109.740  107.690     109.51     8788700
## 2017-04-10   109.000   111.880  108.840     111.70    14798600
## 2017-04-17   110.910   111.870  110.300     111.76     7128100
## 2017-04-20   111.530   113.600  111.480     112.96    13773500
## 2017-04-21   112.800   113.170  112.300     113.11     8968300
## 2017-04-24   114.040   115.160  114.020     114.86    13386600
## 2017-04-25   115.540   115.820  114.800     115.48    11434600
## 2017-04-28   115.900   115.990  115.000     115.50     6955700
## 2017-05-01   115.630   117.240  115.500     116.68     7332100
## 2017-05-02   117.070   118.690  117.000     118.09    10048200
## 2017-05-09   118.620   120.000  118.070     120.00    15219900
## 2017-05-11   120.130   120.500  118.250     120.16    11375500
## 2017-05-12   120.160   120.468  119.510     120.34     9823900
## 2017-05-15   121.030   121.490  120.031     121.40    11125500
## 2017-05-16   121.980   124.340  121.740     124.02    18222100
## 2017-05-22   124.980   125.590  123.555     124.75    13493200
## 2017-06-05   124.020   125.560  123.870     125.37    10030600
## 2017-06-07   125.080   125.910  124.110     125.64     9431600
## 2017-06-08   142.510   143.700  135.210     142.34    80936900
## 2017-06-21   138.820   143.500  138.020     143.29    30911600
## 2017-06-28   142.650   144.370  141.480     143.95    17759800
## 2017-07-05   141.160   145.000  140.330     144.87    16995800
## 2017-07-11   144.290   145.870  143.260     145.81    13519900
## 2017-07-12   147.380   149.300  146.850     149.00    14955800
## 2017-07-13   149.520   150.000  148.000     149.52    11683400
## 2017-07-14   150.120   152.250  149.690     151.83    11469400
## 2017-07-18   151.080   154.600  150.480     153.75    15313000
## 2017-07-26   152.530   156.000  152.360     155.79    14466300
## 2017-07-28   153.960   158.960  152.820     157.56    14449400
## 2017-08-07   154.830   158.990  154.370     158.84    15906400
## 2017-08-16   160.000   160.350  158.535     159.50    21318300
## 2017-08-17   166.120   168.000  163.510     163.92    56840300
## 2017-08-18   165.360   169.500  164.100     167.50    31492500
## 2017-08-21   168.290   170.600  166.980     169.25    22352300
## 2017-08-22   170.020   174.770  169.640     174.46    24481900
## 2017-08-23   172.900   176.230  172.750     175.80    21939000
## 2017-09-13   175.750   179.100  175.560     178.97    22060700
## 2017-09-18   178.890   180.290  177.750     179.98    22919800
## 2017-09-19   180.690   180.870  179.250     180.07    14751900
## 2017-10-09   178.970   183.132  178.750     182.09    15011600
## 2017-10-10   181.650   184.460  181.360     183.12    13201300
## 2017-10-11   183.000   184.700  182.601     184.69    11974400
## 2017-10-31   183.570   185.120  181.811     184.89    21256700
## 2017-11-01   187.880   188.880  183.580     186.08    28594700
## 2017-11-06   184.070   188.250  184.000     187.84    19873100
## 2017-11-07   189.580   189.860  187.000     188.51    17781000
## 2017-11-21   190.350   191.560  188.800     190.90    19639500
## 2017-11-24   189.390   191.700  188.700     191.19     9887300
## 2018-01-02   176.399   184.100  175.700     183.65    29916900
## 2018-01-03   185.190   185.635  181.400     184.00    20121900
## 2018-01-04   185.900   187.747  184.430     185.71    19473800
## 2018-01-05   187.170   190.750  186.301     190.70    18168300
## 2018-01-09   191.130   192.490  188.000     190.80    19495100
## 2018-01-23   185.280   192.400  183.540     192.28    31305900
## 2018-01-24   194.710   198.860  192.400     195.53    34497300
## 2018-01-25   196.340   199.590  194.100     198.33    23421600
## 2018-01-26   200.330   205.230  199.210     205.22    23768600
## 2018-03-15   198.440   201.500  196.520     199.06    33504600
## 2018-03-16   198.400   200.380  197.260     200.28    26948700
## 2018-05-04   180.400   190.600  178.620     188.89    57788300
## 2018-05-07   190.410   196.600  190.300     195.35    29862200
## 2018-05-08   194.200   197.340  193.010     196.31    21856300
## 2018-05-14   195.900   200.000  195.870     198.64    17627100
## 2018-05-25   197.570   201.500  197.210     199.20    21270000
## 2018-06-01   199.500   204.990  199.450     204.34    23131900
## 2018-06-04   205.120   209.750  204.730     208.95    19357000
## 2018-06-12   206.950   209.800  206.900     209.08    15910900
## 2018-06-14   207.720   211.120  207.510     210.86    18838300
## 2018-07-25   190.610   198.350  190.140     197.98    20735400
## 2018-11-07   150.770   152.800  148.940     152.50    17884400
## 2018-11-15   152.900   157.400  150.890     156.22    30083500
## 2018-11-27   154.640   157.940  153.580     156.46    17911800
## 2018-11-28   159.010   159.800  155.260     159.34    20767100
## 2018-11-30   157.900   160.860  156.720     160.86    35071200
## 2018-12-03   168.640   168.800  163.510     163.74    31174000
## 2019-01-09   149.890   153.350  148.500     151.92    20214100
## 2019-01-16   152.810   155.390  151.500     154.84    14810800
## 2019-01-17   152.110   158.550  151.900     155.97    16153200
## 2019-01-18   158.450   159.490  154.730     157.02    19611400
## 2019-01-25   158.910   160.500  157.430     159.21    16451800
## 2019-01-30   161.290   167.840  160.500     166.82    36997700
## 2019-01-31   167.800   169.730  165.700     168.49    21219500
##            BABA.Adjusted
## 2016-03-01         70.86
## 2016-03-02         71.25
## 2016-03-04         72.22
## 2016-03-07         72.89
## 2016-03-11         74.01
## 2016-03-17         74.25
## 2016-03-18         76.25
## 2016-03-21         78.11
## 2016-03-22         78.18
## 2016-03-30         78.86
## 2016-03-31         79.03
## 2016-04-04         79.08
## 2016-04-13         79.64
## 2016-04-20         81.21
## 2016-05-24         81.12
## 2016-05-31         82.00
## 2016-06-30         79.53
## 2016-07-01         79.65
## 2016-07-11         81.46
## 2016-07-12         81.74
## 2016-07-14         81.74
## 2016-07-18         82.65
## 2016-07-19         82.77
## 2016-07-20         84.42
## 2016-07-22         84.49
## 2016-08-04         84.75
## 2016-08-08         85.00
## 2016-08-09         85.24
## 2016-08-10         87.33
## 2016-08-11         91.77
## 2016-08-12         98.25
## 2016-09-02         99.25
## 2016-09-06        103.78
## 2016-09-15        104.45
## 2016-09-16        104.64
## 2016-09-21        106.00
## 2016-09-22        109.36
## 2017-01-05         94.37
## 2017-01-09         94.72
## 2017-01-10         96.75
## 2017-01-11         96.94
## 2017-01-23         98.41
## 2017-01-24        101.43
## 2017-01-25        104.06
## 2017-02-22        104.20
## 2017-03-13        105.18
## 2017-03-16        105.63
## 2017-03-20        107.25
## 2017-03-23        108.25
## 2017-03-29        109.51
## 2017-04-10        111.70
## 2017-04-17        111.76
## 2017-04-20        112.96
## 2017-04-21        113.11
## 2017-04-24        114.86
## 2017-04-25        115.48
## 2017-04-28        115.50
## 2017-05-01        116.68
## 2017-05-02        118.09
## 2017-05-09        120.00
## 2017-05-11        120.16
## 2017-05-12        120.34
## 2017-05-15        121.40
## 2017-05-16        124.02
## 2017-05-22        124.75
## 2017-06-05        125.37
## 2017-06-07        125.64
## 2017-06-08        142.34
## 2017-06-21        143.29
## 2017-06-28        143.95
## 2017-07-05        144.87
## 2017-07-11        145.81
## 2017-07-12        149.00
## 2017-07-13        149.52
## 2017-07-14        151.83
## 2017-07-18        153.75
## 2017-07-26        155.79
## 2017-07-28        157.56
## 2017-08-07        158.84
## 2017-08-16        159.50
## 2017-08-17        163.92
## 2017-08-18        167.50
## 2017-08-21        169.25
## 2017-08-22        174.46
## 2017-08-23        175.80
## 2017-09-13        178.97
## 2017-09-18        179.98
## 2017-09-19        180.07
## 2017-10-09        182.09
## 2017-10-10        183.12
## 2017-10-11        184.69
## 2017-10-31        184.89
## 2017-11-01        186.08
## 2017-11-06        187.84
## 2017-11-07        188.51
## 2017-11-21        190.90
## 2017-11-24        191.19
## 2018-01-02        183.65
## 2018-01-03        184.00
## 2018-01-04        185.71
## 2018-01-05        190.70
## 2018-01-09        190.80
## 2018-01-23        192.28
## 2018-01-24        195.53
## 2018-01-25        198.33
## 2018-01-26        205.22
## 2018-03-15        199.06
## 2018-03-16        200.28
## 2018-05-04        188.89
## 2018-05-07        195.35
## 2018-05-08        196.31
## 2018-05-14        198.64
## 2018-05-25        199.20
## 2018-06-01        204.34
## 2018-06-04        208.95
## 2018-06-12        209.08
## 2018-06-14        210.86
## 2018-07-25        197.98
## 2018-11-07        152.50
## 2018-11-15        156.22
## 2018-11-27        156.46
## 2018-11-28        159.34
## 2018-11-30        160.86
## 2018-12-03        163.74
## 2019-01-09        151.92
## 2019-01-16        154.84
## 2019-01-17        155.97
## 2019-01-18        157.02
## 2019-01-25        159.21
## 2019-01-30        166.82
## 2019-01-31        168.49
BABA[down,]
##            BABA.Open BABA.High BABA.Low BABA.Close BABA.Volume
## 2016-04-27     78.30     78.62    76.57      77.65    11491900
## 2016-05-25     78.53     79.20    74.12      75.59    49606600
## 2016-06-10     76.43     77.05    75.76      75.92    10421100
## 2016-10-11    107.89    107.97   104.75     105.23    14916600
## 2017-08-10    156.20    156.50   151.25     151.77    19298900
## 2017-09-25    176.48    177.00   167.50     169.59    34033700
## 2017-10-17    179.58    180.12   175.30     175.32    20132200
## 2017-11-14    184.30    184.38   181.15     181.79    14475300
## 2017-11-29    185.25    185.41   173.62     179.91    40204100
## 2018-02-05    183.70    190.47   179.90     180.53    31084000
## 2018-03-22    190.75    192.39   184.60     184.65    25355700
## 2018-06-21    205.84    206.00   201.04     202.21    13963800
## 2018-07-30    190.22    190.59   182.06     184.82    19906300
## 2018-12-14    147.71    150.70   145.72     149.00    15560700
##            BABA.Adjusted
## 2016-04-27         77.65
## 2016-05-25         75.59
## 2016-06-10         75.92
## 2016-10-11        105.23
## 2017-08-10        151.77
## 2017-09-25        169.59
## 2017-10-17        175.32
## 2017-11-14        181.79
## 2017-11-29        179.91
## 2018-02-05        180.53
## 2018-03-22        184.65
## 2018-06-21        202.21
## 2018-07-30        184.82
## 2018-12-14        149.00

需要联系我可以添加我的微信