#pine-script #trading
#pine-script #торговля
Вопрос:
Итак, мой код таков:
rsilength = input(14, title="RSI Length", type=input.integer)
//200 SMA
sma = sma(close, input(200))
rsiset = rsi(close, rsilength)
rsiW = security(syminfo.tickerid, "W", rsiset) // 1 Week
rsiD = security(syminfo.tickerid, "D", rsiset) // 1 Day
rsi4h = security(syminfo.tickerid, "240", rsiset) // 4h
if rsi4h == rsiset
sma := sma(close, input(1200))
if rsiD == rsiset
sma := sma(close, input(200))
if rsiW == rsiset
sma := sma(close, input(29))
Я пытаюсь корректно отобразить график sma на дневном, 4-часовом и недельном графиках.
Это работает. Линия SMA отлично отображается на всех 3 таймфреймах. Но я получаю предупреждение
Функция ‘sma’ должна вызываться при каждом вычислении для обеспечения согласованности. Рекомендуется извлечь вызов из этой области.
Есть ли способ написать то же самое и не получить предупреждение? RSI также работает просто отлично (я использую их далее по коду. Единственное, что меня беспокоит, это эти 3 предупреждения для каждого sma в ifs
Ответ №1:
//@version=4
study("My Script")
var int myInput = 1
rsilength = input(14, title="RSI Length", type=input.integer)
sma = sma(close, input(200))
rsiset = rsi(close, rsilength)
rsiW = security(syminfo.tickerid, "W", rsiset) // 1 Week
rsiD = security(syminfo.tickerid, "D", rsiset) // 1 Day
rsi4h = security(syminfo.tickerid, "240", rsiset) // 4h
if rsi4h == rsiset
myInput := input(1200, "input rsi4h")
else if rsiD == rsiset
myInput := input( 200, "input rsiD")
else if rsiW == rsiset
myInput := input( 29, "input rsiW")
sma := sma(close, myInput)
plot(sma)
Комментарии:
1. Я вижу, что вы установили rsilength = input(20). Я настроил его выше и забыл добавить его в свой код. Извините за это. Сейчас это исправим.
2. Обновил мой ответ, чтобы отразить ваш
rsilength
входной параметр.