我正在尝试创建隔夜跳空交易回测器。这个想法是让算法在市场收盘前的下午 3:59 进入多头,并在满足多头条件时在开市后的上午 9:00 退出多头。在这种情况下,多头条件只是前两次开盘的隔夜缺口大于 10%。我认为最简单的方法是定义会话时间并在所需的进入和退出时间为 marketOpen 和 marketClose 创建一个变量。这样做的代码行没有给我错误,所以我相信它们是正确的。但是,当我在以下用于计算每日差距百分比的代码行中使用这些变量时,我收到一个参数错误,提示我无法使用参数调用“operator -”。我已经尝试了所有我能想到的方法,从将输入函数添加到 gapSize 1 & 2 行、添加引号、括号等。我相信如果我能让算法接受这些变量,策略就会起作用。非常感谢任何帮助和/或建议。
'''
//@version=4
strategy(title="Gap Strategy", overlay=true)
t = time(resolution=timeframe.period, session="0930-1600")
marketOpen = input(defval="0930", title="marketOpen", type=input.time)
marketClose = input(defval="1559", title="marketClose", type=input.time)
gapSize1 = ((marketOpen[2] - marketClose[3]) / marketClose[3]) * 100
gapSize2 = ((marketOpen[1] - marketClose[2]) / marketClose[2]) * 100
longCondition = (gapSize1 > 10) and (gapSize2 > 10)
if (longCondition)
strategy.order(id="buy", long=true, when=marketClose[1])
strategy.order(id="sell", long=false, when=marketOpen)
'''
答案 0 :(得分:0)
您的脚本中存在三个错误。首先,您尝试将历史运算符 []
应用于输入变量 marketOpen
和 marketClose
。历史运算符 []
仅适用于系列类型。其次,您已经定义了 marketOpen
类型的变量 marketClose
和 input.time
,并且您正在尝试根据它们的值计算价格差距。第三,将在您指定的下午 3:59 之前检查进入多头头寸的条件 longCondition
。