Error handling 松树文字:“松树”;Can';t调用&x27;安全';内:和#x27;如果'';对于'&引用;

Error handling 松树文字:“松树”;Can';t调用&x27;安全';内:和#x27;如果'';对于'&引用;,error-handling,pine-script,Error Handling,Pine Script,因为我找不到任何方法在多个符号上测试我的Pine脚本策略,所以我创建了一种循环遍历整个脚本的方法 在这篇文章中,我为10个不同的符号制作了10个变量,如下所示: ersteTicker = "AAPL" zweiteTicker = "MSFT" dritterTicker = "..." 然后,我从1循环到10,并进行了10次If查询,这在每个循环中为我提供了正确的符号,如下所示: a = 1 for i = 0 to 10 if a == 1

因为我找不到任何方法在多个符号上测试我的Pine脚本策略,所以我创建了一种循环遍历整个脚本的方法

在这篇文章中,我为10个不同的符号制作了10个变量,如下所示:

ersteTicker = "AAPL"
zweiteTicker = "MSFT"
dritterTicker = "..."
然后,我从1循环到10,并进行了10次If查询,这在每个循环中为我提供了正确的符号,如下所示:

a = 1
    for i = 0 to 10
        if a == 1
            tickerID = ersteTicker
        if a == 2
            tickerID = .....
现在我认为一切都应该正常,但是现在控制台返回一条错误消息,名为:

第75行:无法在内部调用“安全性”:“如果”、“对于”

有人知道如何绕过这个问题吗

致意 基督教徒

注意:我已经测试了一个小的其他脚本,在这个脚本中,控制台不会返回这个错误消息,即使我也做了一个带有安全功能的for循环

(看起来像这样)


这里有一个全球安全的例子。证券不得在for或if声明中。如果你需要更多的符号-使用更多的证券。但请记住,您不能从一组符号中选择一个符号并使用该符号调用安全性(因为它是可变变量,您不能将它们与安全性一起使用):


为什么需要在循环/if内部调用这里的安全性?您是否尝试过将其置于/if的语句之外,并在/if的语句中只参考证券的价值?Hello@Michel__T.,我需要使用证券功能来获取特定符号在特定时间段的特定价格。在我的代码中,我使用每日和每小时的时间框架。这就是为什么我需要这个安全功能。如果我想得到不同符号(如f.e、AAPL、MSFT、GOOG等)的价格,我也需要这个函数。或者您知道获取此数据的其他方法吗?我不介意使用secutiy,但为什么它位于的
中?使安全性全球化,代码就会工作。在for循环中,有我的整个scipt。在这个脚本中,我想比较每小时的价格和每天的价格。所以我需要这个for循环中的安全函数。。。或者你的意思是我应该在for循环之外创建一个函数,而不仅仅是在for循环中调用这个函数?这行吗?我在下面提供了一些代码作为示例,我是如何实现该功能的。谢谢!!我会试试这个版本!
//@version=3
strategy("Meine Strategie", overlay=true)
tickerID = "ADS"
vergleichstimeframe = "D"
TaesRSLPeriode = 200
a = 1

myEma() => ema(close, TaesRSLPeriode)
for i = 0 to 10 
    if ( a == 1)
        Daily_ema = security(tickerID, vergleichstimeframe, myEma())
        //plot(Daily_ema*TagesRSLGrenzwert)

        longCondition = crossover(sma(close, 14), sma(close, 28))
        if (longCondition)
            strategy.entry("My Long Entry Id", strategy.long)

        shortCondition = crossunder(sma(close, 14), sma(close, 28))
        if (shortCondition)
            strategy.entry("My Short Entry Id", strategy.short)
//@version=3
strategy("Meine Strategie", overlay=true)
tickerID = "ADS"
vergleichstimeframe = "D"
TaesRSLPeriode = 200
a = 1

myEma() => ema(close, TaesRSLPeriode)

// this always must stay global 
Daily_ema = security(tickerID, vergleichstimeframe, myEma())
// here you could put more secureties:
//Daily_ema1 = security(tickerID1, vergleichstimeframe, myEma())
//Daily_ema2 = security(tickerID2, vergleichstimeframe, myEma())
//Daily_ema3 = security(tickerID3, vergleichstimeframe, myEma())
// ...

for i = 0 to 10 
    if a == 1
        if Daily_ema > Daily_ema[i] // actual using of the security's result
            strategy.entry("My Long Entry Id", strategy.long)