ФибоКанал S&R
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «fibochannel s&r.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
«ФибоКанал S&R» — это индикатор для TradingView, написанный на Pine Script v5 и отображаемый на основном графике. Он автоматически находит точки разворота цены (пивоты) с помощью встроенных функций ta.pivothigh и ta.pivotlow, а затем строит из них каналы поддержки и сопротивления, продлевая их вправо по графику.
Индикатор рисует горизонтальные линии и метки в точках пивотов, выделяет активные и неактивные линии канала разными цветами и стилями. Между линиями верхнего и нижнего канала возможна заливка с градиентной окраской, зависящей от значения RSI(14).
Дополнительно индикатор отображает уровни Фибоначчи — коррекции (0.236, 0.382, 0.5, 0.618, 0.786 и другие) и расширения (1.618, 2, -0.618, -1 и другие). Каждый уровень можно включать или отключать индивидуально, настраивая его цвет, толщину и стиль линии. Все параметры управляются через панель свойств индикатора.
Настройки программы
| Настройка | Описание |
|---|---|
| length | Период (количество баров) для определения точек разворота цены. |
| max_pivot_points | Максимальное количество хранимых точек разворота высоких и низких значений, используемых для построения канала. |
| channel_ext_length | Количество баров вправо, на которое продлеваются линии канала. |
| source | Источник данных (например, close), используемый для расчёта точек разворота. |
| show_plabels | Включает или отключает отображение текстовых меток в точках разворота. |
| ALB1 | Цвет меток для активных верхних точек разворота (пивотов высоких значений). |
| ALB2 | Цвет меток для активных нижних точек разворота (пивотов низких значений). |
| ILB1 | Цвет меток для неактивных верхних точек разворота. |
| ILB2 | Цвет меток для неактивных нижних точек разворота. |
| show_plines | Включает или отключает отображение горизонтальных линий в точках разворота. |
| ALN1 | Цвет горизонтальных линий для активных верхних точек разворота. |
| ALN2 | Цвет горизонтальных линий для активных нижних точек разворота. |
| ILN1 | Цвет горизонтальных линий для неактивных верхних точек разворота. |
| ILN2 | Цвет горизонтальных линий для неактивных нижних точек разворота. |
| show_chan | Включает или отключает отображение каналов поддержки и сопротивления. |
| show_extendL | Продлевает линии канала влево по графику при активации. |
| RLN | Цвет линии сопротивления в канале. |
| SLN | Цвет линии поддержки в канале. |
| d_fib | Включает или отключает отображение уровней Фибоначчи коррекции. |
| FRH | Цвет верхней части уровней Фибоначчи коррекции. |
| FRL | Цвет нижней части уровней Фибоначчи коррекции. |
| sfib_R01 | Включает или отключает уровень коррекции Фибоначчи 0.236. |
| sfib_R02 | Включает или отключает уровень коррекции Фибоначчи 0.382. |
| sfib_R03 | Включает или отключает уровень коррекции Фибоначчи 0.5. |
| sfib_R04 | Включает или отключает уровень коррекции Фибоначчи 0.618. |
| sfib_R05 | Включает или отключает уровень коррекции Фибоначчи 0.786. |
| sfib_R06 | Включает или отключает уровень коррекции Фибоначчи 0.09. |
| sfib_R07 | Включает или отключает уровень коррекции Фибоначчи 0.146. |
| sfib_R08 | Включает или отключает уровень коррекции Фибоначчи 0.35. |
| sfib_R09 | Включает или отключает уровень коррекции Фибоначчи 0.65. |
| sfib_R10 | Включает или отключает уровень коррекции Фибоначчи 0.886. |
| d_fib2 | Включает или отключает отображение уровней Фибоначчи расширения. |
| FEH | Цвет верхней части уровней Фибоначчи расширения. |
| FEL | Цвет нижней части уровней Фибоначчи расширения. |
| sfib_E01 | Включает или отключает уровень расширения Фибоначчи 1.618. |
| sfib_E02 | Включает или отключает уровень расширения Фибоначчи 2.0. |
| sfib_E03 | Включает или отключает уровень расширения Фибоначчи -0.618. |
| sfib_E04 | Включает или отключает уровень расширения Фибоначчи -1.0. |
| sfib_E05 | Включает или отключает уровень расширения Фибоначчи 1.13. |
| sfib_E06 | Включает или отключает уровень расширения Фибоначчи 1.272. |
| sfib_E07 | Включает или отключает уровень расширения Фибоначчи 1.41. |
| sfib_E08 | Включает или отключает уровень расширения Фибоначчи 1.786. |
| f_bg | Включает или отключает заливку области между линиями канала с градиентом по RSI. |
| GF2 | Цвет заливки канала при росте (при высоком значении RSI). |
| GF1 | Цвет заливки канала при падении (при низком значении RSI). |
| f_transp | Уровень прозрачности заливки канала (0 — непрозрачная, 100 — полностью прозрачная). |
| lwidth_piv | Толщина горизонтальных линий точек разворота. |
| lwidth_chan | Толщина линий канала поддержки и сопротивления. |
| lwidth_FR | Толщина линий уровней Фибоначчи коррекции. |
| lwidth_FE | Толщина линий уровней Фибоначчи расширения. |
| ppstyleAHL_input | Стиль линий для активных горизонталей точек разворота (сплошная, точечная или пунктирная). |
| ppstyleIHL_input | Стиль линий для неактивных горизонталей точек разворота. |
| ppstyleSRL_input | Стиль линий канала поддержки и сопротивления. |
| ppstyleFRL_input | Стиль линий для уровней Фибоначчи коррекции. |
| ppstyleFEL_input | Стиль линий для уровней Фибоначчи расширения. |
Поиск по коду файла
indicator("<[Комбинация Фибоначчи_каналы_поддержка/сопротивление]>","<[ФибоКанал: S&R]>" , overlay = true, max_bars_back = 5000)
groupPP = "Точки разворота"
groupPL = "Метки и линии разворотов"
groupSR = "Уровни поддержки и сопротивления"
groupFR = "Уровни Фибоначчи (коррекции)"
groupFE = "Уровни Фибоначчи (расширения)"
length = input(21, title="Длина", inline="PP1", group=groupPP)
max_pivot_points = input.float(5, minval=2, title="Глубина поиска", inline="PP2", group=groupPP)
max_h_pivot_points = max_pivot_points
max_l_pivot_points = max_pivot_points
min_difference = 0.0
channel_ext_length = input(14, title="Расширение линий", inline="EXT", group=groupPP)
source = input(close, title="Источник", inline="PP1", group=groupPP)
show_plabels = input.bool(true, title="Показывать метки", inline="PP4", group=groupPL)
d_lbl_pivh = show_plabels ? true : false
d_lbl_pivl = show_plabels ? true : false
ALB1 = input.color(color.new(#99D31B, 25), title="Активные", inline="PP4A", group=groupPL)
ALB2 = input.color(color.new(#FA5032, 25), title="", inline="PP4A", group=groupPL)
ILB1 = input.color(color.new(#99D31B, 75), title="| Неактивные", inline="PP4A", group=groupPL)
ILB2 = input.color(color.new(#FF4500, 75), title="", inline="PP4A", group=groupPL)
show_plines = input.bool(true, title="Показывать линии", inline="PP5", group=groupPL)
d_pivh = show_plines ? true : false
d_pivl = show_plines ? true : false
ALN1 = input.color(color.new(#99D31B, 50), title="Активные", inline="PP5A", group=groupPL)
ALN2 = input.color(color.new(#FA5032, 50), title="", inline="PP5A", group=groupPL)
ILN1 = input.color(color.new(#99D31B, 50), title="Неактивные", inline="PP5B", group=groupPL)
ILN2 = input.color(color.new(#FF4500, 50), title="", inline="PP5B", group=groupPL)
show_chan = input.bool(true, title="Показывать канал", inline="CH1", group=groupSR)
d_chanh = show_chan ? true : false
d_chanl = show_chan ? true : false
show_extendL = input.bool(false, title="Расширять линии", inline="CH1B", group=groupSR)
extendL = show_extendL ? extend.left : extend.none
RLN = input.color(color.new(#99D31B, 25), title="Сопротивление", inline="CH1A", group=groupSR)
SLN = input.color(color.new(#FA5032, 25), title="Поддержка", inline="CH1A", group=groupSR)
d_fib = input.bool(true, title="Показывать уровни", inline="CH2", group=groupFR)
FRH = input.color(color.new(#99D31B, 25), title="Верх", inline="CH2A", group=groupFR)
FRL = input.color(color.new(#FA5032, 25), title="Низ", inline="CH2A", group=groupFR)
sfib_R01 = input.bool(true, title="01", inline="CH21", group=groupFR)
sfib_R02 = input.bool(true, title="02", inline="CH22", group=groupFR)
sfib_R03 = input.bool(true, title="03", inline="CH23", group=groupFR)
sfib_R04 = input.bool(true, title="04", inline="CH24", group=groupFR)
sfib_R05 = input.bool(true, title="05", inline="CH25", group=groupFR)
fib_R01 = sfib_R01 ? input.float(0.236, title="", inline="CH21", group=groupFR) : na
fib_R02 = sfib_R02 ? input.float(0.382, title="", inline="CH22", group=groupFR) : na
fib_R03 = sfib_R03 ? input.float(0.5, title="", inline="CH23", group=groupFR) : na
fib_R04 = sfib_R04 ? input.float(0.618, title="", inline="CH24", group=groupFR) : na
fib_R05 = sfib_R05 ? input.float(0.786, title="", inline="CH25", group=groupFR) : na
sfib_R06 = input.bool(false, title="06", inline="CH21", group=groupFR)
sfib_R07 = input.bool(false, title="07", inline="CH22", group=groupFR)
sfib_R08 = input.bool(false, title="08", inline="CH23", group=groupFR)
sfib_R09 = input.bool(false, title="09", inline="CH24", group=groupFR)
sfib_R10 = input.bool(false, title="10", inline="CH25", group=groupFR)
fib_R06 = sfib_R06 ? input.float(0.09, title="", inline="CH21", group=groupFR) : na
fib_R07 = sfib_R07 ? input.float(0.146, title="", inline="CH22", group=groupFR) : na
fib_R08 = sfib_R08 ? input.float(0.35, title="", inline="CH23", group=groupFR) : na
fib_R09 = sfib_R09 ? input.float(0.65, title="", inline="CH24", group=groupFR) : na
fib_R10 = sfib_R10 ? input.float(0.886, title="", inline="CH25", group=groupFR) : na
d_fib2 = input.bool(true, title="Показывать уровни", inline="CH3", group=groupFE)
FEH = input.color(color.new(#99D31B, 25), title="Верх", inline="CH3A", group=groupFE)
FEL = input.color(color.new(#FA5032, 25), title="Низ", inline="CH3A", group=groupFE)
sfib_E01 = input.bool(true, title="01", inline="CH31", group=groupFE)
sfib_E02 = input.bool(false, title="02", inline="CH32", group=groupFE)
sfib_E03 = input.bool(true, title="03", inline="CH33", group=groupFE)
sfib_E04 = input.bool(false, title="04", inline="CH34", group=groupFE)
fib_E01 = sfib_E01 ? input.float(1.618, title="", inline="CH31", group=groupFE) : na
fib_E02 = sfib_E02 ? input.float(2, title="", inline="CH32", group=groupFE) : na
fib_E03 = sfib_E03 ? input.float(-0.618, title="", inline="CH33", group=groupFE) : na
fib_E04 = sfib_E04 ? input.float(-1, title="", inline="CH34", group=groupFE) : na
sfib_E05 = input.bool(false, title="05", inline="CH31", group=groupFE)
sfib_E06 = input.bool(false, title="06", inline="CH32", group=groupFE)
sfib_E07 = input.bool(false, title="07", inline="CH33", group=groupFE)
sfib_E08 = input.bool(false, title="08", inline="CH34", group=groupFE)
fib_E05 = sfib_E05 ? input.float(1.13, title="", inline="CH31", group=groupFE) : na
fib_E06 = sfib_E06 ? input.float(1.272, title="", inline="CH32", group=groupFE) : na
fib_E07 = sfib_E07 ? input.float(1.41, title="", inline="CH33", group=groupFE) : na
fib_E08 = sfib_E08 ? input.float(1.786, title="", inline="CH34", group=groupFE) : na
f_bg = input.bool(true, title="Заливка канала", inline="CH4", group=groupSR)
GF2 = input.color(color.new(#99D31B, 0), title="Рост", inline="CH4A", group=groupSR)
GF1 = input.color(color.new(#FF4500, 0), title="Падение", inline="CH4A", group=groupSR)
f_transp = input.float(97, title="| Прозрачность", inline="CH4A", group=groupSR)
lwidth_piv = input.int(1, minval=0, title="| Толщина", inline="PP5", group=groupPL)
lwidth_chan = input.int(2, minval=0, title="| Толщина", inline="CH1", group=groupSR)
lwidth_FR = input.int(1, minval=0, title="| Толщина", inline="CH2", group=groupFR)
lwidth_FE = input.int(1, minval=0, title="| Толщина", inline="CH3", group=groupFE)
i_line0 = "Сплошная"
i_line1 = "Точечная"
i_line2 = "Пунктирная"
ppstyleAHL_input = input.string(i_line2, title="|", options=[i_line0, i_line1, i_line2], inline="PP5A", group=groupPL)
ppstyleIHL_input = input.string(i_line1, title="|", options=[i_line0, i_line1, i_line2], inline="PP5B", group=groupPL)
ppstyleSRL_input = input.string(i_line0, title="|", options=[i_line0, i_line1, i_line2], inline="CH1A", group=groupSR)
ppstyleFRL_input = input.string(i_line1, title="|", options=[i_line0, i_line1, i_line2], inline="CH2A", group=groupFR)
ppstyleFEL_input = input.string(i_line1, title="|", options=[i_line0, i_line1, i_line2], inline="CH3A", group=groupFE)
f_getLineStyle(_inputStyle) =>
_return = _inputStyle == i_line1 ? line.style_dotted : _inputStyle == i_line2 ? line.style_dashed : line.style_solid
_return
var ph_index = array.new_int()
var pl_index = array.new_int()
var ph_value = array.new_float()
var pl_value = array.new_float()
interp(l, h, s) => l + (h - l) * s
var float ph_val = na
var float pl_val = na
ph = ta.pivothigh(source, length, length)
pl = ta.pivotlow(source, length, length)
if not na(ph)
bool ok = true
ph_val := high[length]
if array.size(ph_index) > 0
if array.size(ph_index) >= max_h_pivot_points
array.shift(ph_index)
array.shift(ph_value)
for i = 0 to array.size(ph_value) - 1
if math.abs(ph_val - array.get(ph_value, i)) < min_difference
ok := false
if ph_val > array.get(ph_value, i)
array.set(ph_value, i , ph_val)
array.set(ph_index, i , bar_index[length])
if ok
array.push(ph_index, bar_index[length])
array.push(ph_value, ph_val)
if not na(pl)
bool ok = true
pl_val := low[length]
if array.size(pl_index) > 0
if array.size(pl_index) >= max_l_pivot_points
array.shift(pl_index)
array.shift(pl_value)
for i = 0 to array.size(pl_value) - 1
if math.abs(pl_val - array.get(pl_value, i)) < min_difference
ok := false
if pl_val < array.get(pl_value, i)
array.set(pl_value, i , pl_val)
array.set(pl_index, i , bar_index[length])
if ok
array.push(pl_index, bar_index[length])
array.push(pl_value, pl_val)
var lines = array.new_line()
var labels = array.new_label()
var fibs = array.new_line()
var line line_fc_up = line(na)
var line line_fc_down = line(na)
var linefill fill_fc = linefill(na)
rsiValue = ta.rsi(close, 14)
if barstate.isconfirmed
ph_count = array.size(ph_index)
pl_count = array.size(pl_index)
for i = 0 to array.size(lines)
if array.size(lines) > 0
line.delete(array.shift(lines))
for i = 0 to array.size(labels)
if array.size(labels) > 0
label.delete(array.shift(labels))
if ph_count > 0
for i = 0 to ph_count - 1
if d_lbl_pivh
array.push(labels, label.new(array.get(ph_index, i), array.get(ph_value, i), "", style=label.style_label_down, color=ILB1, size=size.tiny))
if d_pivh
array.push(lines, line.new(array.get(ph_index, i), array.get(ph_value, i), bar_index + channel_ext_length, array.get(ph_value, i), color=ILN1, width=lwidth_piv, style=f_getLineStyle(ppstyleIHL_input), extend=extend.none))
if pl_count > 0
for i = 0 to pl_count - 1
if d_lbl_pivl
array.push(labels, label.new(array.get(pl_index, i), array.get(pl_value, i), "", style=label.style_label_up, color=ILB2, size=size.tiny))
if d_pivl
array.push(lines, line.new(array.get(pl_index, i), array.get(pl_value, i), bar_index + channel_ext_length, array.get(pl_value, i), color=ILN2, width=lwidth_piv, style=f_getLineStyle(ppstyleIHL_input), extend=extend.none))
if d_chanh
if ph_count > 1
tmp_arr = array.new_line()
for i = 0 to ph_count - 1
for j = 0 to ph_count - 1
h0 = array.get(ph_value, i)
h1 = array.get(ph_value, j)
h0i = array.get(ph_index, i)
h1i = array.get(ph_index, j)
if h0i < h1i
array.push(tmp_arr, line.new(h0i, h0, h1i, h1, color=RLN, width=lwidth_chan, extend=extend.none, style=f_getLineStyle(ppstyleSRL_input)))
if h0i > h1i
array.push(tmp_arr, line.new(h1i, h1, h0i, h0, color=RLN, width=lwidth_chan, extend=extend.none, style=f_getLineStyle(ppstyleSRL_input)))
int min_ind = na
float min_val = 100000.0
for i = 0 to array.size(tmp_arr) - 1
lp = line.get_price(array.get(tmp_arr, i), bar_index)
if lp > high
if min_val > math.abs(lp - close)
min_val := math.abs(lp - close)
min_ind := i
if not na(min_ind)
line.delete(line_fc_up[1])
best_line = array.get(tmp_arr, min_ind)
line_fc_up := line.new(line.get_x1(best_line), line.get_y1(best_line), line.get_x2(best_line), line.get_y2(best_line), color=RLN, width=lwidth_chan, extend=extendL, style=f_getLineStyle(ppstyleSRL_input))
for i = 0 to array.size(tmp_arr) - 1
if array.size(tmp_arr) > 0
line.delete(array.shift(tmp_arr))
for l in labels
if label.get_x(l) == line.get_x1(line_fc_up) or label.get_x(l) == line.get_x2(line_fc_up)
label.seПоказано первые 50% кода (символов: 19434)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.