Combined Trendlines Breakouts
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mr mt4 indicator trendlines breakouts for tradingview 2.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор TradingView, написанный на Pine Script v6, отображает на графике трендовые линии, построенные по точкам разворота (pivot high / pivot low). Линии продлеваются вправо, и при пересечении ценой автоматически помечаются как пробитые. Встроены сигнальные маркеры и условия оповещений для отслеживания формирования и пробития трендовых линий.
Дополнительно индикатор рассчитывает каналы поддержки и сопротивления на основе пивотов и отображает их в виде прямоугольников с цветовой индикацией расположения цены. При выходе цены за границы каналов фиксируются события пробития. Опционально доступны overlay-средние скользящие (SMA/EMA) и отображение пивотных точек.
Предусмотрена настраиваемая водяная метка и информационная таблица. Индикатор работает поверх графика (overlay), поддерживает пользовательские параметры цвета, стиля, толщины линий и количества отображаемых элементов. Условия оповещений TradingView заданы для трендовых линий, их пробития, а также уровней поддержки и сопротивления.
Настройки программы
| Настройка | Описание |
|---|---|
| show_trendlines | Показывать трендовые линии — Включает или отключает отображение трендовых линий на графике. |
| upper_trendline_color | Цвет линии вверх — Цвет восходящей трендовой линии. |
| lower_trendline_color | Цвет линии вниз — Цвет нисходящей трендовой линии. |
| extendLine | Продление линий — Включает или отключает продление активных трендовых линий вправо. |
| linestyle_curr_inp | Стиль линий — Стиль активных трендовых линий: сплошная, пунктирная или точечная. |
| line_width_curr | Толщина линий — Толщина активных трендовых линий. |
| pivLen_L | Длина lookback — Длина левого lookback для определения точек разворота (pivot). |
| broken_color_up | Цвет пробитой линии вверх — Цвет восходящей пробитой трендовой линии. |
| broken_color_down | Цвет пробитой линии вниз — Цвет нисходящей пробитой трендовой линии. |
| extendLine_B | Продление пробитых линий — Включает или отключает продление пробитых трендовых линий вправо. |
| show_signals | Показывать сигналы — Включает или отключает отображение маркеров сигналов при пробитии трендовых линий. |
| broken_color_up_signal | Цвет сигнала вверх — Цвет маркера сигнала при пробитии восходящей трендовой линии. |
| broken_color_down_signal | Цвет сигнала вниз — Цвет маркера сигнала при пробитии нисходящей трендовой линии. |
| maxLines | Максимум пробитых линий — Максимальное количество отображаемых пробитых трендовых линий. |
| Source_tl | Источник цены — Источник цены для определения пробития трендовой линии: по закрытию (Close) или по диапазону High/Low. |
| linestyle_broken_inp | Стиль пробитых линий — Стиль линий пробитых трендовых линий: сплошная, пунктирная или точечная. |
| line_width_broken | Толщина пробитых линий — Толщина линий пробитых трендовых линий. |
| watermarki_supp | Показать водяную метку — Включает или отключает отображение водяной метки на графике. |
| i_tableYpos_oto_supp | Позиция по вертикали — Вертикальное положение информационной таблицы: сверху, по центру или снизу. |
| i_tableXpos_oto_supp | Позиция по горизонтали — Горизонтальное положение информационной таблицы: слева, по центру или справа. |
| i_height_oto_supp | Высота метки — Высота информационной таблицы водяной метки. |
| i_width_oto_supp | Ширина метки — Ширина информационной таблицы водяной метки. |
| i_c_text_oto_supp | Цвет текста метки — Цвет текста в информационной таблице водяной метки. |
| _bg_oto_supp | Цвет фона метки — Цвет фона информационной таблицы водяной метки. |
| i_textSize | Размер текста — Размер текста в информационной таблице: от tiny до auto. |
| Period | Период пивотов — Период для определения точек разворота (pivot) при построении трендовых линий с целями. |
| Trendtype | Тип разворота — Тип анализа разворотов: по теням (Wicks) или по телам свечей (Body). |
| Extensions | Продление — Задаёт длину продления трендовой линии: 25%, 50% или 75% от текущего барового интервала. |
| LineCol1 | Цвет заливки — Цвет заливки области внутри трендовой линии с целями. |
| ShowTargets | Показывать цели — Включает или скрывает отображение целевых уровней (TP) на графике. |
| prd | Период пивотов каналов — Период пивотов для расчёта каналов поддержки и сопротивления. |
| ppsrc | Источник пивотов — Источник данных для расчёта пивотов: High/Low или Close/Open. |
| ChannelW | Максимальная ширина канала % — Максимальная ширина канала в процентах, используемая при формировании каналов поддержки и сопротивления. |
| minstrength | Минимальная сила — Минимальная сила канала поддержки/сопротивления (количество касаний). |
| maxnumsr | Максимум каналов S/R — Максимальное количество отображаемых каналов поддержки и сопротивления. |
| loopback | Период обратного просмотра — Период обратного просмотра при расчёте уровней поддержки и сопротивления. |
| res_col | Цвет сопротивления — Цвет канала сопротивления. |
| sup_col | Цвет поддержки — Цвет канала поддержки. |
| inch_col | Целевой цвет канала — Цвет канала поддержки/сопротивления, когда цена находится внутри канала. |
| showpp | Показывать пивотные точки — Отображает или скрывает метки пивотных точек (H/L) на графике. |
| showsrbroken | Показывать пробитые каналы — Отображает или скрывает маркеры при пробитии каналов поддержки/сопротивления. |
| showthema1en | Показать MA 1 — Включает или отключает отображение первой скользящей средней. |
| showthema1len | Период MA 1 — Период первой скользящей средней. |
| showthema1type | Тип MA 1 — Тип первой скользящей средней: SMA или EMA. |
| showthema2en | Показать MA 2 — Включает или отключает отображение второй скользящей средней. |
| showthema2len | Период MA 2 — Период второй скользящей средней. |
| showthema2type | Тип MA 2 — Тип второй скользящей средней: SMA или EMA. |
Поиск по коду файла
indicator('Combined Trendlines Breakouts', overlay = true, max_bars_back = 501, max_lines_count = 500)
show_trendlines = input.bool(true, 'Show Trendlines', inline = 'tl_1', group = 'Trendlines')
upper_trendline_color = input.color(#9598a1, '', inline = 'tl_1', group = 'Trendlines')
lower_trendline_color = input.color(#9598a1, '', inline = 'tl_1', group = 'Trendlines')
extendLine = input.bool(true, 'Extend', inline = 'tl_1', group = 'Trendlines')
linestyle_curr_inp = input.string(defval = 'Solid', title = 'Style', options = ['Solid', 'Dotted', 'Dashed'], inline = 'tl_3', group = 'Trendlines')
line_width_curr = input.int(1, 'Width', step = 1, minval = 1, maxval = 4, inline = 'tl_3', group = 'Trendlines')
pivLen_L = input.int(20, 'Lookback', step = 1, minval = 1, inline = 'tl_5', group = 'Trendlines')
pivLen_R = pivLen_L
hideCrossed = not input.bool(true, 'Show Broken', inline = 'tl_2', group = 'Trendlines')
broken_color_up = input.color(#9598a1, '', inline = 'tl_2', group = 'Trendlines')
broken_color_down = input.color(#9598a1, '', inline = 'tl_2', group = 'Trendlines')
extendLine_B = input.bool(true, 'Extend', inline = 'tl_2', group = 'Trendlines')
show_signals = input.bool(false, 'Show Signals', inline = 'tl_s', group = 'Trendlines')
broken_color_up_signal = input.color(color.yellow, '', inline = 'tl_s', group = 'Trendlines')
broken_color_down_signal = input.color(color.yellow, '', inline = 'tl_s', group = 'Trendlines')
maxLines = input.int(3, 'Max Broken', step = 1, minval = 1, maxval = 50, inline = 'tl_2_B', group = 'Trendlines')
Source_tl = input.string('Close', 'Mitigation', options = ['Close', 'High/Low'], inline = 'tl_2_B', group = 'Trendlines')
linestyle_broken_inp = input.string(defval = 'Dashed', title = 'Style (Broken)', options = ['Solid', 'Dotted', 'Dashed'], inline = 'tl_2-1', group = 'Trendlines')
line_width_broken = input.int(1, 'Width', step = 1, minval = 1, maxval = 4, inline = 'tl_2-1', group = 'Trendlines')
lineStyle_curr = linestyle_curr_inp == 'Solid' ? line.style_solid : linestyle_curr_inp == 'Dotted' ? line.style_dotted : line.style_dashed
lineStyle_broken = linestyle_broken_inp == 'Solid' ? line.style_solid : linestyle_broken_inp == 'Dotted' ? line.style_dotted : line.style_dashed
s_close = request.security(ticker.standard(syminfo.tickerid), timeframe.period, close)
s_open = request.security(ticker.standard(syminfo.tickerid), timeframe.period, open)
s_high = request.security(ticker.standard(syminfo.tickerid), timeframe.period, high)
s_low = request.security(ticker.standard(syminfo.tickerid), timeframe.period, low)
var array<line> pivot_high_array = array.new_line()
var array<line> pivot_low_array = array.new_line()
ph_M = ta.pivothigh(s_high, pivLen_L, pivLen_R)
pl_M = ta.pivotlow(s_low, pivLen_L, pivLen_R)
ph = ta.pivothigh(s_high, pivLen_L, pivLen_R)
pl = ta.pivotlow(s_low, pivLen_L, pivLen_R)
var float prev_close_H = na
var float curr_close_H = na
var float prev_close_L = na
var float curr_close_L = na
var int X_prev_low = na
var float Y_prev_low = na
var int X_curr_low = na
var float Y_curr_low = na
var int X_curr_high = na
var float Y_curr_high = na
var int X_prev_high = na
var float Y_prev_high = na
maxLines := hideCrossed ? 0 : maxLines
tl_array_size_up = maxLines / 2
tl_array_size_dn = maxLines % 2 == 0 ? maxLines / 2 : maxLines / 2 + 1
newTrendLine(ptype, x1, y1, x2, y2) =>
new_trendline = line.new(x1, y1, x2, y2, extend = extendLine ? extend.right : extend.none, color = ptype == 'ph' ? upper_trendline_color : lower_trendline_color, width = line_width_curr, style = lineStyle_curr, xloc = xloc.bar_index)
if ptype == 'ph'
pivot_high_array.unshift(new_trendline)
else
pivot_low_array.unshift(new_trendline)
SlopeOfLine(line) =>
slopePh = (line.get_y2(line) - line.get_y1(line)) / (line.get_x2(line) - line.get_x1(line))
extendedPh = line.get_y2(line) - slopePh * (line.get_x2(line) - bar_index)
extendedPh
up_trend_line_formed = false
down_trend_line_formed = false
if bool(pl)
X_prev_low := X_curr_low
Y_prev_low := Y_curr_low
prev_close_L := curr_close_L
X_curr_low := bar_index[pivLen_R]
Y_curr_low := s_low[pivLen_R]
curr_close_L := s_close[pivLen_R]
if Y_prev_low < Y_curr_low and show_trendlines and Y_curr_low > prev_close_L
newTrendLine('pl', X_prev_low, Y_prev_low, X_curr_low, Y_curr_low)
down_trend_line_formed := true
down_trend_line_formed
if bool(ph)
X_prev_high := X_curr_high
Y_prev_high := Y_curr_high
prev_close_H := curr_close_H
X_curr_high := bar_index[pivLen_R]
Y_curr_high := s_high[pivLen_R]
curr_close_H := s_close[pivLen_R]
if Y_prev_high > Y_curr_high and show_trendlines and prev_close_H > Y_curr_high
newTrendLine('ph', X_prev_high, Y_prev_high, X_curr_high, Y_curr_high)
up_trend_line_formed := true
up_trend_line_formed
if close > Y_prev_high
Y_prev_high := 0.000000
Y_prev_high
if close < Y_prev_low
Y_prev_low := 9999999999.9999
Y_prev_low
alertcondition(down_trend_line_formed or up_trend_line_formed, 'Trendline Formed', 'Trendline Formed')
up_trend_line_broken = false
down_trend_line_broken = false
for x in pivot_low_array
var array<line> Down_Trend_Lines = array.new_line(tl_array_size_up)
var array<label> Down_Trend_Labels = array.new_label(tl_array_size_up)
src = Source_tl == 'Close' ? s_close : s_low
x.set_xy2(bar_index, SlopeOfLine(x))
if x.get_x2() - x.get_x1() > 300
x.delete()
if src < line.get_y2(x)
tl_line = line.new(line.get_x1(x), line.get_y1(x), line.get_x2(x), line.get_y2(x), color = broken_color_down, style = lineStyle_broken, width = line_width_broken, xloc = xloc.bar_index, extend = extendLine_B ? extend.right : extend.none)
down_trend_line_broken := true
Down_Trend_Lines.unshift(tl_line)
line.delete(x)
if Down_Trend_Lines.size() > tl_array_size_up
line.delete(Down_Trend_Lines.pop())
for x in pivot_high_array
var array<line> Up_Trend_Lines = array.new_line(tl_array_size_dn)
var array<label> Up_Trend_Labels = array.new_label(tl_array_size_dn)
src = Source_tl == 'Close' ? s_close : s_high
x.set_xy2(bar_index, SlopeOfLine(x))
if x.get_x2() - x.get_x1() > 300
x.delete()
if src > line.get_y2(x)
tl_line = line.new(line.get_x1(x), line.get_y1(x), line.get_x2(x), line.get_y2(x), color = broken_color_up, style = lineStyle_broken, width = line_width_broken, xloc = xloc.bar_index, extend = extendLine_B ? extend.right : extend.none)
up_trend_line_broken := true
Up_Trend_Lines.unshift(tl_line)
line.delete(x)
if Up_Trend_Lines.size() > tl_array_size_dn
line.delete(Up_Trend_Lines.pop())
plotshape(show_signals and up_trend_line_broken ? low : na, title = 'Trendline Broken Up', style = shape.xcross, textcolor = color.new(color.white, 0), size = size.small, location = location.belowbar, color = broken_color_up_signal, display = display.all - display.status_line, editable = false)
plotshape(show_signals and down_trend_line_broken ? high : na, title = 'Trendline Broken Down', style = shape.xcross, textcolor = color.new(color.white, 0), size = size.small, location = location.abovebar, color = broken_color_down_signal, display = display.all - display.status_line, editable = false)
alertcondition(up_trend_line_broken or down_trend_line_broken, 'Trendline Broken', 'Trendline Broken')
watermarki_supp = input.bool(true, 'Watermark', group = 'Author Sign') //confirm=true)
string i_tableYpos_oto_supp = input.string('top', 'Position', inline = '12', options = ['top', 'middle', 'bottom'])
string i_tableXpos_oto_supp = input.string('right', '', inline = '12', options = ['left', 'center', 'right'])
int i_height_oto_supp = input.int(7, 'Height', minval = 1, maxval = 100, inline = '13')
int i_width_oto_supp = input.int(30, 'Width', minval = 1, maxval = 100, inline = '13a')
color i_c_text_oto_supp = input.color(color.new(color.white, 0), '', inline = '14')
color _bg_oto_supp = input.color(color.new(color.blue, 70), '', inline = '14')
string i_textSize = input.string('normal', 'Size', inline = '14', options = ['tiny', 'small', 'normal', 'large', 'huge', 'auto'])
i_text2_supp = 'EarnWithEnigma'
i_text1_supp = 'When using the indicator EarnWithEnigma thank you'
var table watermark_supp = table.new(i_tableYpos_oto_supp + '_' + i_tableXpos_oto_supp, 1, 1)
if barstate.islast and watermarki_supp
varip bool _changeText_supp = true
_changeText_supp := not _changeText_supp
string _txt_supp = _changeText_supp ? i_text2_supp : i_text1_supp
table.cell(watermark_supp, 0, 0, i_text2_supp, i_width_oto_supp, i_height_oto_supp, i_c_text_oto_supp, text_size = i_textSize, bgcolor = _bg_oto_supp)
bool ChartTime = time > chart.left_visible_bar_time and time < chart.right_visible_bar_time
string CORE = '➞ Core Settings ????'
var bool TradeisON = false
var bool LongTrade = false
var bool ShortTrade = false
var float TP = 0.0
var float SL = 0.0
int BarTIME = time - time[1]
var line tpLine = na
var label LAB = na
var int UpdatedX = 0
var float UpdatedY = 0.0
var float UpdatedSLP = 0.0
var int UpdatedXLow = 0
var float UpdatedYLow = 0.0
var float UpdatedSLPLow = 0.0
int Period = input.int(10, title = ' Period ➞', group = CORE, inline = '001')
bool Trendtype = input.string(title = ' Type ➞', defval = 'Wicks', options = ['Wicks', 'Body'], group = CORE, inline = '001') == 'Wicks'
string Extensions = input.string(title = ' Extend ➞', defval = ' 25', options = [' 25', ' 50', ' 75'], group = CORE, inline = '001')
color LineCol1 = input.color(color.rgb(109, 111, 111, 19), '', group = CORE, inline = '001')
bool ShowTargets = input.bool(true, 'Show Targets', group = CORE, inline = '002')
ExtenSwitcher(ex) =>
switch ex
' 25' => 1
' 50' => 2
=> 3
WidthSwitcher(ex) =>
switch ex
'1' => 1
'2' => 2
=> 3
StyleSwitcher(style) =>
switch style
'Dashed' => line.style_dashed
'Dotted' => line.style_dotted
=> line.style_solid
method volAdj(int len) =>
math.min(ta.atr(len) * 0.3, close * (0.3 / 100))[20] / 2
Zband = volAdj(30)
method Trendlines(float src, int timeIndex, bool dir) =>
var int Start = 1
var int End = 0
var int TIME = 1
var float YEnd = 0
var float YStart = 0
var float Slope = 0
var line Line1 = line.new(na, na, na, na)
var line Line2 = line.new(na, na, na, na)
var line Line3 = line.new(na, na, na, na)
SCR = fixnan(src)
if ta.change(SCR) != 0
TIME := time[timeIndex]
YStart := SCR[1]
Start := TIME[1]
Slope := (SCR - YStart) / (TIME - Start)
Slope
EXTime = ExtenSwitcher(Extensions) * BarTIME * 25
End := TIME + EXTime
YEnd := SCR + EXTime * Slope
if ta.change(SCR) != 0 and not TradeisON[1]
LineCond = Slope * time < 0 ? dir ? na : color.rgb(11, 139, 7, 53) : dir ? color.rgb(212, 46, 0, 54) : na
if not na(LineCond) //and ChartTime
Line1 := line.new(Start, YStart, End, YEnd, xloc.bar_time, extend.none, color = color.new(color.white, 100))
Line2 := line.new(Start, YStart - Zband * 2, End, YEnd - Zband * 2, xloc.bar_time, extend.none, color = color.new(color.black, 100))
Line3 := line.new(Start, YStart - Zband * 1, End, YEnd - Zband * 1, xloc.bar_time, extend.none, color = color.new(color.black, 100))
linefill.new(Line3, Line2, color = LineCol1)
linefill.new(Line3, Line1, color = LineCond)
[Start, YStart, Slope]
PH = ta.pivothigh(Trendtype ? high : close > open ? close : open, Period, Period / 2)
PL = ta.pivotlow(Trendtype ? low : close > open ? open : close, Period, Period / 2)
method GetlinePrice(int TIME, float Price, float SLOP, int LookB) =>
Показано первые 50% кода (символов: 18671)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.