Стратегия линейного прорыва
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «linear breakthrough strategy.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «Стратегия линейного прорыва» отображает на графике TradingView прямоугольники (боксы), группирующие бары по направлению тренда: бычьи и медвежьи сегменты визуализируются разными цветами. При включённом режиме отображения на основном графике боксы рисуются поверх свечей, иначе — в отдельном окне. Индикатор работает на заданном количестве последних баров и строит последовательность линий разрыва ценовых уровней.
Дополнительно индикатор рисует линию тренда, уровни разворота, вероятность продолжения текущего тренда и линию цены закрытия. Включена таблица временных последовательностей, отображающая статистику частоты роста и падения по разным временным интервалам. При активном управлении рисками линия тренда помечается крестиком, если расстояние до уровня разворота превышает заданный максимальный риск.
Настроены оповещения на изменение тренда (Long/Short) и на пробитие ценовых уровней с возможностью выбора частоты срабатывания. Цветовая палитра позволяет настраивать цвета подтверждённых и неподтверждённых баров, границ, линий тренда и пробития, а также стиль линий пробития. Flip-Flop переключает раскраску боксов при смене направления тренда.
Настройки программы
| Настройка | Описание |
|---|---|
| nol | Количество линий (уровней), используемых для определения разворота тренда. |
| totalbars | Максимальное количество баров, используемых для построения графика линейного прорыва. |
| overlay | Отображает графические элементы индикатора на основном графике или в отдельном окне. |
| gap | Включает или отключает отображение разрывов между группами баров на графике. |
| showTrend | Отображает линию текущего тренда и маркеры условий Long/Short. |
| uptcol | Цвет линии тренда для бычьего направления. |
| dntcol | Цвет линии тренда для медвежьего направления. |
| trendwidth | Толщина линии тренда. |
| riskmanagement | Включает или отключает фильтр управления рисками на основе максимального допустимого риска. |
| maximumrisk | Максимально допустимый риск в процентах от цены открытия. Если расстояние до уровня разворота превышает это значение, сделка не открывается. |
| breakout | Включает или отключает отображение линий пробития ценовых уровней. |
| breakoutucol | Цвет линии пробития для бычьего направления. |
| breakoutdcol | Цвет линии пробития для медвежьего направления. |
| breakoutlstylei | Стиль линии пробития: сплошная, пунктирная или точечная. |
| flipflop | Включает или отключает режим Flip-Flop, при котором боксы меняют цвет при смене направления тренда. |
| flipflopcol | Целевой цвет боксов в режиме Flip-Flop при смене направления тренда. |
| showProbability | Отображает метку с вероятностью продолжения текущего тренда. |
| showreversal | Отображает уровень разворота и метку с его значением. |
| showclosingp | Отображает линию цены закрытия последнего бара. |
| showtable | Отображает таблицу временных последовательностей со статистикой частоты роста и падения. |
| tableoverlay | Определяет, отображать ли таблицу на основном графике или в отдельном окне. |
| tabletype | Тип отображения таблицы: визуальный (с цветными столбцами) или числовой. |
| tableposy | Вертикальное расположение таблицы: сверху, по центру или снизу. |
| tableposx | Горизонтальное расположение таблицы: слева, по центру или справа. |
| txtsize | Размер текста в таблице: мельчайший, малый, нормальный или большой. |
| upbarsbg | Цвет заливки бычьих баров. |
| upbarsbguc | Цвет неподтверждённых бычьих баров. |
| upbarsbd | Цвет границы бычьих баров. |
| dnbarsbg | Цвет заливки медвежьих баров. |
| dnbarsbguc | Цвет неподтверждённых медвежьих баров. |
| dnbarsbd | Цвет границы медвежьих баров. |
| alertfrequency | Частота срабатывания оповещений: один раз при закрытии бара или один раз при появлении бара. |
| longshortalert | Включает или отключает оповещения о смене направления тренда Long/Short. |
| longAmsg | Текст сообщения, отправляемого при оповещении о смене тренда на бычий. |
| shortAmsg | Текст сообщения, отправляемого при оповещении о смене тренда на медвежий. |
| breakoutalert | Включает или отключает оповещения о пробитии ценовых уровней. |
| bolongAmsg | Текст сообщения, отправляемого при оповещении о пробитии вверх. |
| boshortAmsg | Текст сообщения, отправляемого при оповещении о пробитии вниз. |
Поиск по коду файла
indicator("<[Стратегия линейного прорыва]>", shorttitle = "<[LBC-RU]>", max_boxes_count = 500, max_bars_back = 4000, max_lines_count = 500)
var risktt = "Если расстояние между точкой входа и уровнем разворота (Трейлинг стоп-лосс) больше максимального риска, сделка не должна открываться"
nol = input.int(defval = 3, title = "Количество линий", minval = 1, tooltip = "Количество линий для проверки разворота")
totalbars = input.int(defval = 30000, title = "Максимальное количество баров", minval = 10, step = 500, tooltip = "Общее количество баров для построения графика Line Break")
overlay = input.bool(defval = false, title = "Отображать на основном графике")
gap = input.string(defval = "Off", title = "Разрывы", options =["Off", "On"])
showTrend = input.bool(defval = true, title = "Тренд", inline = "shwt")
uptcol = input.color(defval = color.lime, title = "", inline = "shwt")
dntcol = input.color(defval = color.red, title = "", inline = "shwt")
trendwidth = input.int(defval = 2, title = "", minval = 1, maxval = 5, inline = "shwt")
riskmanagement = input.bool(defval = false, title = "Управление рисками")
maximumrisk = input.float(defval = 1.0, title = " Максимальный риск %", minval = 0, step = 0.1, tooltip = risktt) / 100
breakout = input.bool(defval = true, title = "Пробитие", inline = "bo")
breakoutucol = input.color(defval = color.blue, title = "", inline = "bo")
breakoutdcol = input.color(defval = color.navy, title = "", inline = "bo")
breakoutlstylei = input.string(defval = "Dotted", title = "", options = ["Solid", "Dashed", "Dotted"], inline = "bo")
flipflop = input.bool(defval = true, title = "Flip-Flop", inline = "ff")
flipflopcol = input.color(defval = #b2b5be, title = "", inline = "ff")
showProbability = input.bool(defval = true, title = "Вероятность продолжения")
showreversal = input.bool(defval = true, title = "Уровень разворота")
showclosingp = input.bool(defval = true, title = "Цена закрытия")
showtable = input.bool(defval = true, title = "Таблица временных последовательностей", inline = "table")
tableoverlay = input.bool(defval = false, title = "Основной график", inline = "table")
tabletype = input.string(defval = "Visual", title = " Тип таблицы", options = ["Visual", "Numbers"])
tableposy = input.string(defval='bottom', title=' Расположение', options=['bottom', 'middle', 'top'], inline='tabpos')
tableposx = input.string(defval='left', title='', options=['left', 'center', 'right'], inline='tabpos')
txtsize = input.string(defval = size.small, title = " Размер текста", options = [size.tiny, size.small, size.normal, size.large])
upbarsbg = input.color(defval = #36a845, title = "Бычьи бары", inline = "upbc", tooltip ="Цвета подтвержденных, неподтвержденных баров и границ")
upbarsbguc = input.color(defval = color.blue, title = "", inline = "upbc")
upbarsbd = input.color(defval = #74e05e, title = "", inline = "upbc")
dnbarsbg = input.color(defval = #d11d17, title = "Медвежьи бары", inline = "dnbc", tooltip ="Цвета подтвержденных, неподтвержденных баров и границ")
dnbarsbguc = input.color(defval = color.navy, title = "", inline = "dnbc")
dnbarsbd = input.color(defval = #f7525f, title = "", inline = "dnbc")
alertfrequency = input.string(defval = alert.freq_once_per_bar, title = "Частота оповещений", options = [alert.freq_once_per_bar_close, alert.freq_once_per_bar], group = "Оповещения")
longshortalert = input.bool(defval = true, title = "Оповещение Long/Short")
longAmsg = input.string(defval = "Тренд бычий", title = " Сообщение Long", inline = "1")
shortAmsg = input.string(defval = "Тренд медвежий", title = " Сообщение Short", inline = "2")
breakoutalert = input.bool(defval = true, title = "Оповещение о пробое")
bolongAmsg = input.string(defval = "Пробитие вверх", title = " Сообщение Long", inline = "3")
boshortAmsg = input.string(defval = "Пробитие вниз", title = " Сообщение Short", inline = "4")
method addtoarray(float [] this, float value) =>
this.pop()
this.unshift(value)
method addtoarray(int [] this, int value) =>
this.pop()
this.unshift(value)
getIndex(value)=>
index = value < 11 ? value - 1 :
value > 10 and value <= 12 ? 10 :
value > 12 and value <= 15 ? 11 :
12
getText(value)=>
txt = value < 11 ? str.tostring(value) :
value == 11 ? "11-12" :
value == 12 ? "13-15" :
">15"
method addtrendcount(matrix<int> this, int value, int trend) =>
index = getIndex(value)
cc = trend == -1 ? 0 : 1
this.set(index, cc, 1 + this.get(index, cc))
drawBox(l, t, r, b, bcol, bgcol)=>
ret = overlay ? box.new(left = l, top = t, right = r, bottom = b, border_width = 1, border_color = bcol, bgcolor = bgcol, force_overlay = true) :
box.new(left = l, top = t, right = r, bottom = b, border_width = 1, border_color = bcol, bgcolor = bgcol)
var trend = close >= open ? 1 : -1
var closes = array.new_float(500, close)
var opens = array.new_float(500, open)
var counts = array.new_int(500, 0)
var trcounts = matrix.new<int>(13, 2, 0)
var count = 0
var trcount = 1
var firstone = true
var breakoutlstyle = breakoutlstylei == "Solid" ? line.style_solid : breakoutlstylei == "Dashed" ? line.style_dashed : line.style_dotted
if bar_index >= last_bar_index - totalbars and (not barstate.isrealtime or barstate.isconfirmed)
if bar_index == last_bar_index - totalbars
trend := close >= open ? 1 : -1
count := 0
trcount := 1
closes.fill(close)
opens.fill(open)
count += 1
if trend == 1
if close < math.min(array.min(array.slice(opens, 0, nol)), array.min(array.slice(closes, 0, nol)))
if firstone
firstone := false
else
trcounts.addtrendcount(trcount, trend)
trend := -1
trcount := 0
if close > closes.get(0) or trend == -1
opens.addtoarray(trend == -1 ? opens.get(0) : closes.get(0))
closes.addtoarray(close)
counts.addtoarray(count)
count := 0
trcount += 1
else if trend == -1
if close > math.max(array.max(array.slice(opens, 0, nol)), array.max(array.slice(closes, 0, nol)))
if firstone
firstone := false
else
trcounts.addtrendcount(trcount, trend)
trend := 1
trcount := 0
if close < closes.get(0) or trend == 1
opens.addtoarray(trend == 1 ? opens.get(0) : closes.get(0))
closes.addtoarray(close)
counts.addtoarray(count)
count := 0
trcount += 1
if barstate.islast and matrix.max(trcounts) > 0
var boxes = array.new_box(closes.size())
xloc = bar_index
ccounts = counts.copy()
ccounts.unshift(count + 1)
for x = 0 to (array.size(boxes) > 0 ? array.size(boxes) - 1 : na)
box.delete(boxes.pop())
for x = 0 to closes.size() -1
if x < closes.size() -1
if bar_index - x < 1 or closes.get(x) == closes.get(x + 1) and opens.get(x) == opens.get(x + 1)
continue
bgcol = closes.get(x) > opens.get(x) ? upbarsbg : dnbarsbg
bdcol = closes.get(x) > opens.get(x) ? upbarsbd : dnbarsbd
if flipflop and x > 0 and x < closes.size() - 1
if closes.get(x) > opens.get(x) and closes.get(x - 1) < opens.get(x - 1) and closes.get(x + 1) < opens.get(x + 1) or
closes.get(x) < opens.get(x) and closes.get(x - 1) > opens.get(x - 1) and closes.get(x + 1) > opens.get(x + 1)
bgcol := flipflopcol
left = gap == "On" ? xloc - ccounts.get(x) : bar_index - x - 1
right = gap == "On" ? xloc : bar_index - x
if overlay
boxes.unshift(box.new(left = left, top = closes.get(x), right = right, bottom = opens.get(x), border_width = 1, border_color = bdcol, bgcolor = bgcol, force_overlay = true))
else
boxes.unshift(box.new(left = left, top = closes.get(x), right = right, bottom = opens.get(x), border_width = 1, border_color = bdcol, bgcolor = bgcol))
xloc -= ccounts.get(x)
if barstate.isrealtime
var box rtbox = na
box.delete(rtbox)
if trend == 1
if close < opens.get(0)
rtbox := drawBox(bar_index, opens.get(0), bar_index + 1, close, dnbarsbguc, dnbarsbguc)
else if close > closes.get(0)
rtbox := drawBox(bar_index, close, bar_index + 1,closes.get(0), upbarsbguc, upbarsbguc)
if trend == -1
if close > opens.get(0)
rtbox := drawBox(bar_index, close, bar_index + 1, opens.get(0), upbarsbguc, upbarsbguc)
else if close < closes.get(0)
rtbox := drawBox(bar_index, closes.get(0), bar_index + 1, close, dnbarsbguc, dnbarsbguc)
if breakout and closes.size() > 12
a_allLines = line.all
if array.size(a_allLines) > 0
for i = 0 to array.size(a_allLines) - 1
line.delete(array.get(a_allLines, i))
xloc := bar_index
for x = 0 to closes.size() - 10
t = closes.get(x) > opens.get(x) ? 1 : -1
bout = 0.
min = opens.get(x)
max = opens.get(x)
xloc1 = bar_index
for y = 0 to closes.size() - 2
if y - x > 150
break
if y < x + 3
if y > x and (t == 1 and closes.get(y) > closes.get(x) or t == -1 and closes.get(y) < closes.get(x))
break
Показано первые 50% кода (символов: 14235)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.