如何在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
相关产品推荐
相关产品推荐

