问题标签 [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.
r - R Quantstrat & Shiny:getSymbols 错误
我正在尝试使用 quanstrat 创建一个闪亮的应用程序。代码在正常条件下完美运行;但是,当我将其放入 Shiny 时,它失败了。运行下面的代码时,我得到:
Error in get(symbol) : object 'BDCL' not found
我试图最小化这个可重现示例的无关代码,所以它不会很漂亮,但它应该显示问题。
ui.R:
服务器.R
从我的测试来看,违规行似乎是
似乎符号的数据正在被提取和保存,正如我提到的,当我不尝试使用 Shiny 时,这段代码可以正常工作。任何帮助将不胜感激!
会话信息()
r - Quantstrat 中的 158 个符号;没有交易
我已经针对单个符号和非常小的符号组测试了我的代码。我发现添加的符号越多,获得的交易就越少。例如,如果我只包括前五个符号,它们似乎都至少有一笔交易。如果我扩大到 20 个左右,那么一些符号有交易,但第一组中的所有符号都没有交易了。
我希望在 158 个符号列表中执行该策略。
我添加了并行包。这似乎没有帮助。我正在使用Guy Yollin 的 Luxor (MACD) 示例。
我最初的 applyStrategy 是:
上面没有返回错误,但也没有交易(再次,在较小的样本上进行测试,我确实得到了交易)。
我对 foreach/parallel 包的尝试是:
这段代码返回以下错误:
foreach(i = 1:length(symbols)) %dopar% out <- applyStrategy(strategy = strategy.st, 中的错误:分配目标扩展到非语言对象
所以,现在我自然是不知所措了。我可以单独做符号(昨天做的),但它花了很长时间,我知道它可以更简单。
任何建议都非常感谢!
r - quantstrat 逻辑错误 - 需要 TRUE/FALSE 的缺失值
在 quantstrat 中应用策略时出现此错误:
if (length(j) == 0 || (length(j) == 1 && j == 0)) { 中的错误:需要 TRUE/FALSE 的缺失值
我的代码如下:
我试图保持代码简单,以避免愚蠢的错误,但我仍然得到这个。applyStrategy 运行并列出数千个事务,30 分钟后,我收到此错误。我猜修复很简单,但我没有看到它。谢谢你的帮助!
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****
r - 运行 applySignals 时出现 Quantstrat 逻辑错误 - 需要 TRUE/FALSE 时缺少值
我在使用 Quantstrat 包在 R 中运行策略回测时遇到此错误。每当我尝试使用 applySignals 函数来测试信号时,它都会显示逻辑错误。我试图通过 na.omit(FB) 命令删除 NA,但是当您计算简单移动平均线时,您将在开始时拥有 NAS。有人可以建议我解决方案吗?
谢谢,
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:将小数点由逗号改为点,问题依旧。
r - 如何将指标、信号和规则添加到前期数据 quantstrat
我是一个新手,在通过 demo() 之后尝试创建自己的细菌测试代码。我正在使用蜡烛吞没模式策略,这是公式
我应该如何获取前一天的收盘价、最高价和开盘价?我应该如何向该策略添加指标、规则和信号。
到目前为止,我能够编写这么多代码,但被困在添加指标、规则和信号上
我能够使用此代码检索前一天的数据
但不知道如何添加predata's close
和比较mktdata
指标和信号的收盘价。
解决这个问题的任何想法
r - 如何向 quantstrat 添加多个条件?
当移动平均线(MV)50 超过 MV200 时买入股票,当 MV50 低于 MV200 时卖出。在这段代码中,我想再添加两个条件:
这个怎么做?
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)
:
这是head
1 分钟的数据(每分钟代表前一分钟的数据,例如时间戳 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 之前进行,因此我需要填写行直到下一个值,因为这是策略在逐行处理时将引用的内容。
现在,如果我再次查询该对象,
现在我们有了最终的对象,这里正在运行策略:
总而言之,这是执行多时间框架策略的最佳方法吗?
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
设置中,但我无法准确地弄清楚。