<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Add.indicator on 格物堂</title><link>https://gewutang.cn/tags/add.indicator/</link><description>Recent content in Add.indicator on 格物堂</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 01 Sep 2013 00:00:00 +0000</lastBuildDate><atom:link href="https://gewutang.cn/tags/add.indicator/index.xml" rel="self" type="application/rss+xml"/><item><title>add.indicator函数笔记</title><link>https://gewutang.cn/2013/09/01/notes-on-add.indicator/</link><pubDate>Sun, 01 Sep 2013 00:00:00 +0000</pubDate><guid>https://gewutang.cn/2013/09/01/notes-on-add.indicator/</guid><description>&lt;p&gt;add.indicator函数是quantstrat包中的主函数之一。它的主要功能是生成信号指示器。这种解释方法有点绕口。举个例子说起来更容易明白。假如说，我们想测试这样一个策略：即当某支股票的价格低于5日算术平均时，买入该股票；高于5日算术平均时卖出该股票。那么，在这个测试过程中，我们要用到 SMA(price,n=5) 这个序列（SMA函数的作用是计算算术平均），既然要用到这个序列，那么得首先生成这个序列， add.indicator函数就是干这个的，是用来生成序列的。&lt;/p&gt;&#10;&lt;p&gt;看看帮助文档中的 add.indicator 函数的参数：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;add.indicator(strategy, name, arguments,&#10; parameters = NULL, label = NULL, ..., enabled = TRUE,&#10; indexnum = NULL, store = FALSE)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;strategy参数是策略名。在quantstrat 包的框架中，所有指示器（indicator）都从属于策略（strategy），因此，使用add.indicator函数时要率先指定策略名；name参数的作用是指定生成指示器所用的R函数，比如，这里我们用到的函数是SMA ，那么，此时的name参数就是SMA；arguments参数也是个从属参数，它的作用是指定name 参数对应的那个函数的参数。好绕口！说人话的话是这样的：SMA函数除了要输入时间序列参数x 外，还得指定做算术平均时候的时间跨度n，而这个n就是在aruments中指定的。label参数的作用是设定指示器的标签，这样在生成指示器序列时，指示器的序列名的后缀会是该标签的内容。该参数默认是 name+ind。其它参数暂时不怎么重要，就不闲扯了，多说无益，上代码：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;##定义一个策略，名字名为 str_sma &#10;strategy(&amp;quot;str_sma&amp;quot;, store=TRUE)&#10;##获取策略的标的，名字为 SPY&#10;getSymbols(&amp;quot;SPY&amp;quot;, src='yahoo')&#10;##添加指示器&#10;add.indicator('str.sma', 'SMA', arguments=list(x=quote(Ad(SPY)), n=20),label=&amp;quot;sma.20&amp;quot;)&#10;##查看策略的结构&#10;str(getStrategy('str.sma')$indicators)&#10;## 执行指示器&#10;out &amp;lt;- applyIndicators('str.sma', SPY)&#10;## 查看指示器结果&#10;tail(out)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;</description></item></channel></rss>