问题标签 [quantstrat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
990 浏览

r - R Quantstrat & Shiny:getSymbols 错误

我正在尝试使用 quanstrat 创建一个闪亮的应用程序。代码在正常条件下完美运行;但是,当我将其放入 Shiny 时,它失败了。运行下面的代码时,我得到:

Error in get(symbol) : object 'BDCL' not found

我试图最小化这个可重现示例的无关代码,所以它不会很漂亮,但它应该显示问题。

ui.R:

服务器.R

从我的测试来看,违规行似乎是

似乎符号的数据正在被提取和保存,正如我提到的,当我不尝试使用 Shiny 时,这段代码可以正常工作。任何帮助将不胜感激!

会话信息()

0 投票
0 回答
174 浏览

r - Quantstrat 中的 158 个符号;没有交易

我已经针对单个符号和非常小的符号组测试了我的代码。我发现添加的符号越多,获得的交易就越少。例如,如果我只包括前五个符号,它们似乎都至少有一笔交易。如果我扩大到 20 个左右,那么一些符号有交易,但第一组中的所有符号都没有交易了。

我希望在 158 个符号列表中执行该策略。

我添加了并行包。这似乎没有帮助。我正在使用Guy Yollin 的 Luxor (MACD) 示例

我最初的 applyStrategy 是:

上面没有返回错误,但也没有交易(再次,在较小的样本上进行测试,我确实得到了交易)。

我对 foreach/parallel 包的尝试是:

这段代码返回以下错误:

foreach(i = 1:length(symbols)) %dopar% out <- applyStrategy(strategy = strategy.st, 中的错误:分配目标扩展到非语言对象

所以,现在我自然是不知所措了。我可以单独做符号(昨天做的),但它花了很长时间,我知道它可以更简单。

上传到 Dropbox 的示例脚本

任何建议都非常感谢!

0 投票
1 回答
719 浏览

r - quantstrat 逻辑错误 - 需要 TRUE/FALSE 的缺失值

在 quantstrat 中应用策略时出现此错误:

if (length(j) == 0 || (length(j) == 1 && j == 0)) { 中的错误:需要 TRUE/FALSE 的缺失值

我的代码如下:

我试图保持代码简单,以避免愚蠢的错误,但我仍然得到这个。applyStrategy 运行并列出数千个事务,30 分钟后,我收到此错误。我猜修复很简单,但我没有看到它。谢谢你的帮助!

0 投票
1 回答
196 浏览

r - 在 quantstrat/blotter 中使用 R 中的 addDiv(command)

在 R 中使用 addDiv 命令的格式是什么?就输入而言,我知道如何使用该功能,但我无法弄清楚它应该放在哪里超出一般的想法。我是否将它放在我实例化投资组合的位置之后?以下是 R 提供的帮助文章:

将现金股息交易添加到投资组合中。

描述

添加现金红利不会影响头寸数量,就像拆分一样。

用法

论据

Portfolio 一个投资组合名称,指向一个以 结构的投资组合对象initPortf

Symbol 投资组合中包含的符号的工具标识符,例如 IBM。

TxnDate 交易日期为 ISO 8601,例如“2008-09-01”或“2010-01-05 09:54:23.12345”。

DivPerShare 每股或每单位数量支付的现金股利金额。

TxnFees 与交易相关的费用,例如佣金。阅读详情。

ConMult 如果未在工具规范中定义,则符号的合约或工具乘数。

verbose 如果TRUE(默认)该函数将交易的元素以一行的形式打印到屏幕上,例如“2007-01-08 IBM 50 @ 77.6”。禁止使用FALSE.

... 任何其他传递参数。

笔记

**# TODO 将 TxnTypes 添加到 $txn 表

**# TODO 添加 AsOfDate****

0 投票
1 回答
215 浏览

r - 运行 applySignals 时出现 Quantstrat 逻辑错误 - 需要 TRUE/FALSE 时缺少值

我在使用 Quantstrat 包在 R 中运行策略回测时遇到此错误。每当我尝试使用 applySignals 函数来测试信号时,它都会显示逻辑错误。我试图通过 na.omit(FB) 命令删除 NA,但是当您计算简单移动平均线时,您将在开始时拥有 NAS。有人可以建议我解决方案吗?

谢谢,

0 投票
1 回答
1050 浏览

r - 使用 chart_Series 函数绘制 OHLC 数据

名为 XXXZZZ.csv 的货币对的 OHLC(开-高-低-收)和交易量数据(格式为 DD.MM.YYYY HH:mm 的每小时数据)的 csv 文件:

我加载 quantstrat 包并初始化:

我用 read.zoo 读取了 csv 文件(因为我无法使 quantmod::getSymbols 工作):

这会产生一个“xts”和“zoo”对象,其中一个索引列是日期列,其他 5 个列是 OHLC 和卷。

结果是:

那么如何将 XXXZZZ 操作为时间序列对象呢?如果不同,答案是否不仅涵盖每小时数据,还涵盖从 1 秒到每月的数据?

Suggestion.1:将小数点由逗号改为点,问题依旧。

0 投票
0 回答
336 浏览

r - 如何将指标、信号和规则添加到前期数据 quantstrat

我是一个新手,在通过 demo() 之后尝试创建自己的细菌测试代码。我正在使用蜡烛吞没模式策略,这是公式

我应该如何获取前一天的收盘价、最高价和开盘价?我应该如何向该策略添加指标、规则和信号。

到目前为止,我能够编写这么多代码,但被困在添加指标、规则和信号上

我能够使用此代码检索前一天的数据

但不知道如何添加predata's close和比较mktdata指标和信号的收盘价。

解决这个问题的任何想法

0 投票
2 回答
829 浏览

r - 如何向 quantstrat 添加多个条件?

当移动平均线(MV)50 超过 MV200 时买入股票,当 MV50 低于 MV200 时卖出。在这段代码中,我想再添加两个条件:

这个怎么做?

0 投票
1 回答
1180 浏览

r - 使用 quantstrat 执行多时间框架策略的正确方法是什么?

这是我正在与 quantstrat 合作的多时间框架策略的示例。这是执行多时间框架策略的正确方法还是我做错了?在 quantstrat 演示或谷歌搜索中,我没有遇到任何其他执行多时间框架的示例。

为了保持策略部分简单(这不是某人会交易的策略)并保持对多时间框架方面的关注,我将演示一个使用分时数据5 分钟 OHLC 数据的简单策略。策略逻辑是当分时数据上穿 5 分钟数据的 30 周期 SMA 时买入,当分时数据下穿同一 SMA 时平仓。

例如:如果策略是平的,时间是 13:02,之前观察到的 5 分钟数据的 30 周期 SMA 是 90.55(对于 12:55-结束 13:00 的周期),并且分时数据从低于 90.55 到高于它 (90.56) 是买入,当分时数据再次收盘低于它时,它退出头寸。

为了实现这一点,我需要将分时数据和 5 分钟、30 周期 SMA 放入同一个对象中,以便 quantstrat 进行处理。我得到了 5 分钟的 OHLC xts 并计算了它的 30 周期 SMA。然后我将它合并到刻度数据 xts 对象中,这将为我提供一个包含所有刻度数据的对象,然后每 5 分钟我将获得最后一个观察到的 5 分钟、30 周期 SMA 的一行。

如果在 13:00 有一个 30 周期的 SMA 值,这是针对 12:55-13:00 的 5 分钟。由于 SMA 的下一次更新是 5 分钟后,我需要填写行,直到观察到下一个值(在 13:05)等等。

这是head刻度数据(我拥有的刻度数据不包括毫秒,但我使用以下方法使行独一无二make.index.unique(clemtick)

这是head1 分钟的数据(每分钟代表前一分钟的数据,例如时间戳 09:01:00 == 09:00:00 - 09:01:00 的数据):

将 1 分钟数据转换为 5 分钟数据:

您会注意到第一个 OHLC 是 09:04:00,这是由于该to.minutes5函数的工作方式,这在此线程中进行了讨论。本质上是第一个时间戳 09:04:00 == OHLC 4 分钟数据,从 09:00:00 到 09:04:00。09:09:00 时间戳是从 09:04:00 到 09:09:00 的下一个完整 5 分钟。理想情况下,我希望每个时间戳为 5、10、15 等,但我还没有弄清楚如何做到这一点。

将 5min 数据的 30 SMA 转换为分时数据

这将使用 SMA 创建一个新列。SMA 需要 30 个周期来计算第一个值,并且SMA 只会出现在每 5 分钟的时间戳(11:29:00、11:34:00、11:39,...)。看起来像:

现在我需要SMA30用重复值填充列。11:29:00的值适用SMA30于 11:24:00 - 11:29:00 的 OHLC。该值的下一次更新将在 11:34:00 之前进行,因此我需要填写行直到下一个值,因为这是策略在逐行处理时将引用的内容。

现在,如果我再次查询该对象,

现在我们有了最终的对象,这里正在运行策略:

总而言之,这是执行多时间框架策略的最佳方法吗?

0 投票
1 回答
1059 浏览

r - 从 R 转换为 quantstrat 设置以进行交易策略回测

我正在尝试使用“quantstrat”包对交易策略进行回测。我的策略由 4 个指标、3 个不同的 EMA 和 1 个滞后 EMA 组成。

我想在以下情况下做多:EMA1 > EMA2 & EMA1 > EMA3 & EMA1_lag < EMA1 我想在以下情况下平仓平仓:EMA1 < EMA3

这很简单,但我无法将其写入 quantstrat 环境。

这是两个示例中使用的数据完整性检查功能:

这是我想要的吸墨纸代码:

我尝试使用 quantstrat(使用add.indicator, add.signal, add.rule)复制上述策略,但结果肯定不同。这里是 quantstrat 的第二个代码:

谁能帮我理解为什么第二个代码没有给出相同的结果?我认为我的错误在add.indicator, add.signal,add.rule设置中,但我无法准确地弄清楚。