← К каталогу
Исходный код · ID 3836

Low Volatility Breakout + TP/SL Levels

breakout +tp-sl.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «Low Volatility Breakout + TP/SL Levels» предназначен для обнаружения пробок цены из зон низкой волатильности на графике TradingView. Он рассчитывает средний размер тела свечи за заданное окно и сравнивает текущий размер тела с этим средним, чтобы определить периоды консолидации. После достаточного количества консолидирующихся свечей индикатор отслеждает breakout-свечи с увеличенным размером тела.

При обнаружении пробоя индикатор отрисовывает уровни TP (Take Profit) и SL (Stop Loss) в виде горизонтальных линий и отображает их значения в таблице в правом верхнем углу графика. Расчёт уровней TP/SL возможен в двух режимах: через множитель средней свечной амплитуды или через проценты от цены закрытия.

Визуально индикатор показывает зоны консолидации в виде прямоугольников, сигналы пробоя — в виде треугольников, а также позволяет задавать цвета для бычьих и медвежьих сигналов. Встроенные условия оповещения TradingView уведомляют пользователя о возникновении бычьего или медвежьего пробоя.

Настройки программы

НастройкаОписание
length Период скользящего среднего для расчёта средней волатильности тела свечи.
consolidationMultiplier Множитель средней волатильности для определения консолидирующихся свечей с малым размером тела.
threshold Множитель средней волатильности для определения свечи пробоя с большим размером тела.
boxHeightMultiplier Множитель максимальной допустимой высоты зоны консолидации относительно начальной средней волатильности.
confirmBars Минимальное количество свечей консолидации для активации поиска пробоя.
showConsolidation Отображение прямоугольников, обозначающих зоны консолидации.
showBreakoutSignals Отображение маркеров пробоя (треугольников) на графике.
border_width Толщина границы прямоугольника зоны консолидации.
showTPSL Отображение уровней TP и SL (горизонтальных линий и таблицы) при пробое.
tpSlMode Режим расчёта уровней TP/SL: «Candle Multiplier» (через множитель средней амплитуды свечи) или «Percentage» (через проценты от цены закрытия).
tp_sl_length Период скользящего среднего для расчёта средней свечной амплитуды (high − low), используемой при определении TP/SL.
tp1Multiplier Множитель средней свечной амплитуды для расчёта первого уровня Take Profit в режиме «Candle Multiplier».
tp2Multiplier Множитель средней свечной амплитуды для расчёта второго уровня Take Profit в режиме «Candle Multiplier».
tp3Multiplier Множитель средней свечной амплитуды для расчёта третьего уровня Take Profit в режиме «Candle Multiplier».
slMultiplier Множитель средней свечной амплитуды для расчёта уровня Stop Loss в режиме «Candle Multiplier».
tp1Percent Процент от цены закрытия для расчёта первого уровня Take Profit в режиме «Percentage».
tp2Percent Процент от цены закрытия для расчёта второго уровня Take Profit в режиме «Percentage».
tp3Percent Процент от цены закрытия для расчёта третьего уровня Take Profit в режиме «Percentage».
slPercent Процент от цены закрытия для расчёта уровня Stop Loss в режиме «Percentage».
colorBull Цвет для бычьих сигналов: прямоугольников, линий и стрелок.
colorBear Цвет для медвежьих сигналов: прямоугольников, линий и стрелок.
Получить полный код

Поиск по коду файла

indicator('Low Volatility Breakout + TP/SL Levels', overlay=true, max_lines_count=500, max_boxes_count=500, max_labels_count=500)

int length = input.int(20, title='Volatility Window', group='Consolidation Settings')
float consolidationMultiplier = input.float(2, title='Consolidation Multiplier (for small candles)', minval=0.1, step=0.1, group='Consolidation Settings')
float threshold = input.float(1.5, title='Breakout Multiplier (for large candle)', minval=0.1, step=0.1, group='Consolidation Settings')
float boxHeightMultiplier = input.float(6.0, title='Box Height Multiplier', minval=0.1, step=0.1, group='Consolidation Settings')
int confirmBars = input.int(5, title='Min Consolidation Bars', minval=1, group='Consolidation Settings')
bool showConsolidation = input.bool(true, title='Show Consolidation Boxes', group='Consolidation Settings')
bool showBreakoutSignals = input.bool(true, title='Show Breakout Signals', group='Consolidation Settings')
int border_width = input.int(1, title='Box Border Width', minval=1, maxval=5, group='Consolidation Settings')

bool showTPSL = input.bool(true, title='Show TP/SL Levels', group='Risk Management Settings')
string tpSlMode = input.string('Candle Multiplier', title='TP/SL Calculation Mode', options=['Candle Multiplier', 'Percentage'], group='Risk Management Settings')

int tp_sl_length = input.int(50, title='Average Candle Length Period', group='Risk Management Settings')
float tp1Multiplier = input.float(2.0, title='TP1×', minval=0.1, step=0.1, group='Risk Management Settings')
float tp2Multiplier = input.float(3.0, title='TP2×', minval=0.1, step=0.1, group='Risk Management Settings')
float tp3Multiplier = input.float(4.0, title='TP3×', minval=0.1, step=0.1, group='Risk Management Settings')
float slMultiplier = input.float(2.0, title='SL×', minval=0.1, step=0.1, group='Risk Management Settings')

float tp1Percent = input.float(2.0, title='TP1 %', minval=0.01, step=0.01, group='Risk Management Settings')
float tp2Percent = input.float(3.0, title='TP2 %', minval=0.01, step=0.01, group='Risk Management Settings')
float tp3Percent = input.float(4.0, title='TP3 %', minval=0.01, step=0.01, group='Risk Management Settings')
float slPercent = input.float(1.5, title='SL %', minval=0.01, step=0.01, group='Risk Management Settings')

color colorBull = input.color(color.green, 'Bullish Color (box + lines + arrows)', group='Colors')
color colorBear = input.color(color.red,   'Bearish Color (box + lines + arrows)', group='Colors')

var table tpSlTable = table.new(position.top_right, 2, 5, bgcolor=color.new(color.black, 80), border_width=1, frame_color=color.gray)

float avgBody = ta.sma(math.abs(close[1] - open[1]), length)
float currBody = math.abs(close - open)
bool isConsolidating = currBody < avgBody * consolidationMultiplier

var int consCount = 0
var float highestInRange = na
var float lowestInRange = na
var float maxBodyInConsolidation = 0.0
var float initialAvgBody = na
var int beginIndex = na
var bool setupActive = false

bool bullishBreakout = false
bool bearishBreakout = false

if isConsolidating
    consCount += 1
    if not setupActive
        setupActive := true
        beginIndex := bar_index
        highestInRange := high
        lowestInRange := low
        maxBodyInConsolidation := currBody
        initialAvgBody := avgBody
    else
        highestInRange := math.max(highestInRange, high)
        lowestInRange := math.min(lowestInRange, low)
        maxBodyInConsolidation := math.max(maxBodyInConsolidation, currBody)
else if consCount >= confirmBars and setupActive
    float boxHeight = highestInRange - lowestInRange
    bool validBox = boxHeight <= initialAvgBody * boxHeightMultiplier

    bullishBreakout := currBody >= initialAvgBody * threshold and currBody > maxBodyInConsolidation and close > open and close > highestInRange and validBox
    bearishBreakout := currBody >= initialAvgBody * threshold and currBody > maxBodyInConsolidation and close < open and close < lowestInRange and validBox

    if (bullishBreakout or bearishBreakout) and showConsolidation
        color boxClr = bullishBreakout ? colorBull : colorBear
        box.new(left=beginIndex, top=highestInRange, right=bar_index, bottom=lowestInRange, bgcolor=color.new(boxClr, 85), border_color=boxClr, border_width=border_width)

    consCount := 0
    setupActive := false
    highestInRange := na
    lowestInRange := na
    maxBodyInConsoli

Показано первые 50% кода (символов: 7349)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
734,90₽ ≈ $8.98