Проблема скрипта Swing Pine из-за ошибки RSI для Tradingview - PullRequest
0 голосов
/ 02 декабря 2018

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 25 марта 2019

Возможно, вы захотите попробовать функцию 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)
...