Проблема скрипта Swing Pine из-за ошибки RSI для Tradingview

Я хотел бы закодировать колебания RSI Failure. Вещи, которые мне нужны для расчета:

  1. Новый максимум закрытия / минимум с условиями перекупленности / продажи - Готово
  2. После этого закрытие выше / ниже при нормальных условиях RSI (дивергенция) - Готово
  3. Возьмите самое низкое / самое высокое значение RSI между этими новыми максимумами / минимумами закрытия - Проблема
  4. Когда RSI пересекает показание RSI, упомянутое в пункте 3, предоставьте обратную связь о завершенном сбое отказа - Quasi-done

Мне уже удалось предупредить, когда произойдет расхождение, так что пункты 1 и 2 в порядке. Но как получить самое низкое / самое высокое значение RSI между этими барами?

Я попробовал что-то вроде этого для свинга на вершине неудачи (AKA Bearish Failure Swing):

lowestrsi = valuewhen(bearishdivergence, lowest(rsi, barssince(overbought)), 0)

Я думал так: найти бар с медвежьей дивергенцией и вернуть самое низкое значение RSI между этим баром и баром до этого с условием перекупленности.

Но это не работает, потому что второй аргумент lowest() не может быть серией! Если вы замените этот аргумент числом, скажем, 10, он отлично работает, и я получаю уведомление о сбое. Но проблема в том, что для этого не существует значения по умолчанию. Это означает, что вы не можете жестко закодировать что-то вроде "10" или другого числа.

Вопрос: Как мне получить самый низкий RSI между барами, упомянутыми в точках 1 и 2? Или как превратить ряд в целое число? Это вообще возможно? Или можно получить одно целое число из ряда?

0 ответов

Возможно, вы захотите попробовать функцию RicardoSantos "Самый высокий / самый низкий". Это помогло мне как обходной путь к аналогичной проблеме в прошлом: https://www.tradingview.com/script/32ohT5SQ-Function-Highest-Lowest/

//@version=2
study(title='Function Highest/Lowest', overlay=true)
src = input(close)
length = input(10)

f_highest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] >= _value ? _src[_i] : _value
    _return = _value

f_lowest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] <= _value ? _src[_i] : _value
    _return = _value

h = f_highest(src, length)
l = f_lowest(src, length)

plot(h)
plot(l)
Другие вопросы по тегам