计算Donchian Channel技术指标的更改日期

时间:2018-11-28 04:20:28

标签: r date quantitative-finance quantstrat difftime

我正在尝试创建一个动态n每天变化的指标。基本上,我正在制定一种策略,当股票价格达到其历史最高价时进入交易。

我认为做到这一点的最佳方法是使用Donchian Chanel,并在收盘价等于或大于所有先前DC高点时输入。为此,我需要:

n =(算法的当前日期-开始日期)。

这样,该指标将从第一天开始起作用,并且不会因为该策略贯穿多年的数据而“忘记”之前的高点。我遇到的问题是,我不知道如何编写能以简单的计算方式表达当前策略日期的代码/函数。我能想到的最好的代码是:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="wrap">
  <header>
    <nav>
      <a href='#' id="nav-button">Expand</a>
      <div id="nav-content"></div>
    </nav>
  </header>

  <div id="centered-box"></div>

  <footer>This is the footer</footer>
</div>

dcn当然是我的Donichan频道n。我遇到的问题是,无论我尝试使用什么代替as.Date(datePos),它始终告诉我“找不到对象'datePos'”。我尝试使用我在代码中先前指定的其他内容,例如:日期,时间戳。

任何建议都会很有帮助。

1 个答案:

答案 0 :(得分:0)

您不能将DonchianChanneln一起使用。 n必须是该函数的固定整数。您需要创建自数据集开始以来的“最高价”交易功能。

这实现了您想要的;只需从中创建一个函数并将其作为add.indicator

的函数即可提供
library(quantmod)
getSymbols("SPY")

SPY_max <- runMax(Cl(SPY), n = 1, cumulative = TRUE)

SPY$all_time_high <-  Cl(SPY) >= SPY_max

chart_Series(SPY["2018/", 1:4])

tail(SPY[SPY$all_time_high == 1,], 10)
#            SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted all_time_high
# 2018-01-19   279.80   280.41  279.14    280.41  140920100     273.9762             1
# 2018-01-22   280.17   282.69  280.11    282.69   91322400     276.2038             1
# 2018-01-23   282.74   283.62  282.37    283.29   97084700     276.7901             1
# 2018-01-25   284.16   284.27  282.40    283.30   84587300     276.7998             1
# 2018-01-26   284.25   286.63  283.96    286.58  107743100     280.0046             1
# 2018-08-24   286.44   287.67  286.38    287.51   57487400     283.3048             1
# 2018-08-27   288.86   289.90  288.68    289.78   57072400     285.5416             1
# 2018-08-28   290.30   290.42  289.40    289.92   46943500     285.6796             1
# 2018-08-29   290.16   291.74  289.89    291.48   61485500     287.2167             1
# 2018-09-20   292.64   293.94  291.24    293.58  100360600     289.2860             

all_time_high列返回1时,您所讨论的时间序列将处于历史最高水平。

enter image description here