Pine Script: «Не могу вызвать« security »внутри:« if »,« for »» - PullRequest
0 голосов
/ 21 января 2020

, поскольку я не могу найти какой-либо способ проверить свою стратегию Pine Script на нескольких символах, я создал способ l oop через весь сценарий.

В этом я сделал 10 переменных для 10 различных символов, таких как это:

ersteTicker = "AAPL"
zweiteTicker = "MSFT"
dritterTicker = "..."

Чем я зациклился от 1 до 10 и сделал 10 If-запросов, которые дают мне в каждом l oop правильный символ, подобный этому:

a = 1
    for i = 0 to 10
        if a == 1
            tickerID = ersteTicker
        if a == 2
            tickerID = .....

Теперь я хотя все должно быть в порядке, но теперь консоль возвращает сообщение об ошибке:

строка 75: не удается вызвать 'security' внутри: 'if', ' для '

Кто-нибудь знает, как обойти эту проблему ??

С наилучшими пожеланиями, Кристиан

PS: Я уже тестировал небольшой другой скрипт, и в этом скрипте консоль не возвращает мне это сообщение об ошибке, даже если я также сделал для l oop с функцией безопасности ..

(выглядит так)

//@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)

1 Ответ

1 голос
/ 21 января 2020

Вот пример глобальной безопасности. Безопасность не должна быть внутри ни для, ни для заявлений. Если вам нужно больше символов - используйте больше ценных бумаг. Но имейте в виду, что вы не можете выбрать символ из набора символов и вызвать безопасность с этим символом (потому что это будет изменяемая переменная, и вы не можете использовать их с безопасностью):

//@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)
...