找不到函数或函数引用(使用 request.security)
Could not find function or function reference (using request.security)
函数bigTEMA就在那里,但是pinescript找不到。也许我用的 request.security 错了?
基本上,我只是试图在 tema 和 sma 以小时为单位上涨时触发买入,但只有在 60 分钟内收盘价低于特定平均线时。下面是代码,可能会更清楚。
//@version=5
strategy("XXX", overlay=true, default_qty_type=strategy.cash, default_qty_value=100, calc_on_every_tick=true)
//INDICATORS
temaLength = input.int(9, minval=1)
ema1 = ta.ema(close, temaLength)
ema2 = ta.ema(ema1, temaLength)
ema3 = ta.ema(ema2, temaLength)
tema = 3 * (ema1 - ema2) + ema3
fastMA = ta.sma(close, 10)
bigTEMA = request.security(syminfo.tickerid, "60", tema, lookahead=barmerge.lookahead_off)
plot(bigTEMA, "TEMA", color=color.orange)
bigMA = request.security(syminfo.tickerid, "60", fastMA, lookahead=barmerge.lookahead_off)
plot(bigMA, "fastMA", color=color.orange)
bigCLOSE = request.security(syminfo.tickerid, "60", close, lookahead=barmerge.lookahead_off)
plot(bigCLOSE, "bigCLOSE", color=color.red)
bigOPEN = request.security(syminfo.tickerid, "60", open, lookahead=barmerge.lookahead_off)
plot(bigOPEN, "bigOPEN", color=color.green)
MAOPEN = ta.sma(open, 20)
plot(MAOPEN, "BIGOPEN", color=color.green)
MACLOSE = ta.sma(close, 20)
plot(MACLOSE, "BIGCLOSE", color=color.red)
// STRATEGY CONDITIONS
longCond = bigTEMA > bigTEMA(12) and bigMA > bigMA(12)
long1 = bigCLOSE > bigOPEN and ta.crossunder(close, MAOPEN)
long2 = bigCLOSE <= bigOPEN and ta.crossunder(close, MACLOSE)
i_startTime = input.time(defval = timestamp("25 Jan 2022 00:00 +0000"), title = "Start Time")
inDateRange = time >= i_startTime
// STRATEGY ENTRY
if ((long1 or long2) and longCond and inDateRange)
strategy.entry("long", strategy.long)
您没有名为 bigTEMA 的函数。您有一个名为 bigTEMA 的变量。这是一个很大的不同,也是导致您的问题的原因。 bigMA 同样的问题。
下面两行定义了两个变量。
bigTEMA = request.security(syminfo.tickerid, "60", tema, lookahead=barmerge.lookahead_off)
bigMA = request.security(syminfo.tickerid, "60", fastMA, lookahead=barmerge.lookahead_off)
在这里你试图将这些变量用作函数并将 12 传递给它们,这是不正确的,因此是错误的。
longCond = bigTEMA > bigTEMA(12) and bigMA > bigMA(12)
函数bigTEMA就在那里,但是pinescript找不到。也许我用的 request.security 错了?
基本上,我只是试图在 tema 和 sma 以小时为单位上涨时触发买入,但只有在 60 分钟内收盘价低于特定平均线时。下面是代码,可能会更清楚。
//@version=5
strategy("XXX", overlay=true, default_qty_type=strategy.cash, default_qty_value=100, calc_on_every_tick=true)
//INDICATORS
temaLength = input.int(9, minval=1)
ema1 = ta.ema(close, temaLength)
ema2 = ta.ema(ema1, temaLength)
ema3 = ta.ema(ema2, temaLength)
tema = 3 * (ema1 - ema2) + ema3
fastMA = ta.sma(close, 10)
bigTEMA = request.security(syminfo.tickerid, "60", tema, lookahead=barmerge.lookahead_off)
plot(bigTEMA, "TEMA", color=color.orange)
bigMA = request.security(syminfo.tickerid, "60", fastMA, lookahead=barmerge.lookahead_off)
plot(bigMA, "fastMA", color=color.orange)
bigCLOSE = request.security(syminfo.tickerid, "60", close, lookahead=barmerge.lookahead_off)
plot(bigCLOSE, "bigCLOSE", color=color.red)
bigOPEN = request.security(syminfo.tickerid, "60", open, lookahead=barmerge.lookahead_off)
plot(bigOPEN, "bigOPEN", color=color.green)
MAOPEN = ta.sma(open, 20)
plot(MAOPEN, "BIGOPEN", color=color.green)
MACLOSE = ta.sma(close, 20)
plot(MACLOSE, "BIGCLOSE", color=color.red)
// STRATEGY CONDITIONS
longCond = bigTEMA > bigTEMA(12) and bigMA > bigMA(12)
long1 = bigCLOSE > bigOPEN and ta.crossunder(close, MAOPEN)
long2 = bigCLOSE <= bigOPEN and ta.crossunder(close, MACLOSE)
i_startTime = input.time(defval = timestamp("25 Jan 2022 00:00 +0000"), title = "Start Time")
inDateRange = time >= i_startTime
// STRATEGY ENTRY
if ((long1 or long2) and longCond and inDateRange)
strategy.entry("long", strategy.long)
您没有名为 bigTEMA 的函数。您有一个名为 bigTEMA 的变量。这是一个很大的不同,也是导致您的问题的原因。 bigMA 同样的问题。
下面两行定义了两个变量。
bigTEMA = request.security(syminfo.tickerid, "60", tema, lookahead=barmerge.lookahead_off)
bigMA = request.security(syminfo.tickerid, "60", fastMA, lookahead=barmerge.lookahead_off)
在这里你试图将这些变量用作函数并将 12 传递给它们,这是不正确的,因此是错误的。
longCond = bigTEMA > bigTEMA(12) and bigMA > bigMA(12)