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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.