Pine Script 策略中的参数错误

时间:2021-02-01 14:15:29

标签: pine-script

我正在尝试创建隔夜跳空交易回测器。这个想法是让算法在市场收盘前的下午 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)

'''

1 个答案:

答案 0 :(得分:0)

您的脚本中存在三个错误。首先,您尝试将历史运算符 [] 应用于输入变量 marketOpenmarketClose。历史运算符 [] 仅适用于系列类型。其次,您已经定义了 marketOpen 类型的变量 marketCloseinput.time,并且您正在尝试根据它们的值计算价格差距。第三,将在您指定的下午 3:59 之前检查进入多头头寸的条件 longCondition