You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在quantstrat中使用自有xts数据并配置自定义indicator参数?

quantstrat本地数据回测及自定义Indicator问题解答

问题1:如何在add.indicator中指定自有回测数据bt_xts?

你不需要在add.indicator里直接指定bt_xts,mktdata是quantstrat策略运行时的通用数据占位符——当你调用回测核心函数applyStrategy时,传入的bt_xts会自动替换mktdata作为策略运行的数据源。

只需确保bt_xts是标准xts格式(包含OHLCV列,行索引为时间序列),回测时通过applyStrategy传入即可,示例代码如下:

# 假设已完成strategy1.st策略初始化
# 运行回测时传入自定义数据bt_xts
results <- applyStrategy(strategy = strategy1.st, portfolios = "your_portfolio", mktdata = bt_xts)

add.indicator里依然保留mktdata的引用,策略运行时会自动映射到你传入的bt_xts。

问题2:如何正确指定自定义sentiment函数的日期参数?

你的sentiment函数需要日期参数,而xts对象的日期是它的行索引,无需从列中提取,直接用index(mktdata)即可获取当前数据的时间序列索引。修正后的代码及函数示例如下:

修正add.indicator代码

add.indicator(strategy1.st, name = "sentiment",
              arguments = list(date = quote(index(mktdata))), 
              label = "sentiment")

示例sentiment函数实现

sentiment <- function(date) {
  # 获取星期几(lubridate::wday返回1=周日,2=周一…7=周六,可按需调整)
  weekday <- lubridate::wday(date)
  # 根据星期几返回信号:0=观望,1=看涨,2=看跌
  dplyr::case_when(
    weekday == 2 ~ 1,  # 周一触发看涨信号
    weekday == 5 ~ 2,  # 周五触发看跌信号
    TRUE ~ 0           # 其他时间观望
  )
}

策略运行时,index(mktdata)会自动获取bt_xts的时间索引,传入sentiment函数计算对应信号。


内容的提问来源于stack exchange,提问作者aik3e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:20:37