Проблема скрипта Swing Pine из-за ошибки RSI для Tradingview
Я хотел бы закодировать колебания RSI Failure. Вещи, которые мне нужны для расчета:
- Новый максимум закрытия / минимум с условиями перекупленности / продажи - Готово
- После этого закрытие выше / ниже при нормальных условиях RSI (дивергенция) - Готово
- Возьмите самое низкое / самое высокое значение RSI между этими новыми максимумами / минимумами закрытия - Проблема
- Когда 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)