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

Melona pressures and ema (by 3dots)

melona pressures and ema (by 3dots)_5974369984854366962.pine

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Melona pressures and ema (by 3dots) — это индикатор для TradingView, который отображается поверх свечей на графике цены. Индикатор выполняет расчёт технических показателей средствами Pine Script v5 и визуализирует зоны давления (Single Candle Order Blocks) на основе одиночных свечных паттернов.

Основная функция индикатора — обнаружение бычьих и медвежьих зон давления. Бычий паттерн формируется при определённых соотношениях цен открытия и закрытия трёх последовательных свечей, аналогично для медвежьего паттерна. Обнаруженные зоны отрисовываются в виде цветных прямоугольников на графике.

Индикатор включает таблицу статуса, отображающую текущее положение цены относительно зон давления, уровень волатильности, значение RSI и объём торгов. Также рассчитывается скользящая средняя (WMA, 50 периодов) с каналом на основе диапазона, которая отображается цветной линией на графике.

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

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

НастройкаОписание
showPressure Показывать одиночные зоны давления — Включает или отключает отображение одиночных зон давления (Order Blocks) в виде цветных прямоугольников на графике.
mitigationStyle Метод определения пробития — Выбор метода определения пробития зоны давления: Close (по цене закрытия) или Wick (по тени свечи).
showLast Показать последние X зон давления — Количество отображаемых одиночных зон давления на графике (от 1 до 15).
volatilityFilter Применить фильтр волатильности — Включает фильтрацию зон давления по волатильности. При включении отображаются только зоны, у которых ATR выше среднего значения.
bullishScobColor Цвет бычьих зон давления — Задаёт цвет прямоугольников бычьих зон давления на графике.
bearishScobColor Цвет медвежьих зон давления — Задаёт цвет прямоугольников медвежьих зон давления на графике.
allowOverlap Разрешить перекрывающиеся зоны давления — Разрешает или запрещает перекрытие нескольких зон давления на графике. При отключении overlapping зоны будут отклоняться.
showStatusTable Показать таблицу статуса — Включает или отключает отображение таблицы статуса с информацией о положении цены, волатильности, RSI и объёме.
tablePosition Положение таблицы — Задаёт положение таблицы статуса на графике: верхний правый, верхний левый, нижний правый или нижний левый угол.
tableTextSize Размер текста таблицы — Задаёт размер текста в таблице статуса: tiny, small, normal или large.
useTrueRange Использовать True Range — Определяет, использовать ли истинный диапазон (True Range) или разницу High-Low для расчёта ширины канала вокруг скользящей средней.
multy Множитель базового канала — Множитель базового канала, задаёт ширину канала вокруг скользящей средней.
Получить полный код

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

indicator("Melona pressures and ema (by 3dots)" , overlay = true)

averageTrueRange = ta.atr(14)
volatilityDeviation = 2 * ta.stdev(averageTrueRange, 21)
movingAverageATR = ta.sma(averageTrueRange, 21)
upperVolatility = movingAverageATR + volatilityDeviation
lowerVolatility = movingAverageATR - volatilityDeviation
volatilityRatio = (averageTrueRange - lowerVolatility) / (upperVolatility - lowerVolatility)
volatilityPercentage = (40 * volatilityRatio + 30)

showPressure = input.bool(true, title = "Show Single Candle Order Block (Pressure)", group = "Single Candle Order Block Settings")
mitigationStyle = input.string("Close", title = "Mitigation Method", options = ["Close", "Wick"], group = "Single Candle Order Block Settings")
showLast = input.int(10, title = "Show Last X Single Candle Order Blocks", group = "Single Candle Order Block Settings", minval = 1, maxval = 15)
volatilityFilter = input.bool(false, title = "Apply Volatility Filter", group = "Single Candle Order Block Settings",
 tooltip ="Enables filtering of Order Blocks based on volatility. When enabled, only Order Blocks with an Average True Range (ATR) above the mean value of the ATR")
bullishScobColor = input.color(color.new(#00FF00, 80), title = "Bullish/Bearish Pressure Block Color", group = "Single Candle Order Block Style Settings", inline = "color")
bearishScobColor = input.color(color.new(#BD10E0, 80), title = " ", group = "Single Candle Order Block Style Settings", inline = "color")

allowOverlap = input.bool(true, title = "Allow Overlapping Pressure Zones", group = "Single Candle Order Block Settings",
 tooltip = "When enabled, allows multiple pressure zones to overlap. When disabled, overlapping zones will be rejected.")

showStatusTable = input.bool(true, title = "Show status table", group = "Table settings")
tablePosition = input.string("top_right", title = "Table position", options = ["top_right", "top_left", "bottom_right", "bottom_left"], group = "Table settings")
tableTextSize = input.string("small", title = "Table text size", options = ["tiny", "small", "normal", "large"], group = "Table settings")

isSellnow=false
isBuynow=false

type Pressure
    float top
    float bottom
    int barStart
    box block
    bool broken

var array<Pressure> bullishScobArray = array.new<Pressure>()    
var array<Pressure> bearishScobArray = array.new<Pressure>()   

buyPressure=false
sellPressure=false
buyMainob=false
sellMainob=false

var inBullishZone = false
var inBearishZone = false

var bool bullishPressureOnClose = false
var bool bearishPressureOnClose = false

var table statusTable = na

f_getTextSize(textSizeString) =>
    switch textSizeString
        "tiny" => size.tiny
        "small" => size.small
        "normal" => size.normal
        "large" => size.large

f_getTablePosition(positionString) =>
    switch positionString
        "top_right" => position.top_right
        "top_left" => position.top_left
        "bottom_right" => position.bottom_right
        "bottom_left" => position.bottom_left

f_check_overlap(array<Pressure> scobArray, float top, float bottom) =>
    overlap = false
    if scobArray.size() > 1
        for i = 0 to array.size(scobArray) - 1
            scobElement = array.get(scobArray, i)
            if ((top < scobElement.top and top > scobElement.bottom) or (bottom > scobElement.bottom and bottom < scobElement.top))
                overlap:= true
    overlap

detectBullishSCOB = open[2] > close[2] and close[1] > open[1] and close > open and low[1] < low[2] and close > high[1]
detectBearishSCOB = open[2] < close[2] and close[1] < open[1] and close < open and high[1] > high[2] and close < low[1]

detectBullishOnClose = barstate.isconfirmed and detectBullishSCOB
detectBearishOnClose = barstate.isconfirmed and detectBearishSCOB

atrw = ta.atr(14)
atrFilter = ta.sma(atrw,200)

if barstate.isfirst
    bullishPressureOnClose := false
    bearishPressureOnClose := false

    if showStatusTable
        statusTable := table.new(f_getTablePosition(tablePosition), 1, 6, bgcolor = color.new(color.black, 95), border_width = 1,force_overlay = true)
        table.cell(statusTable, 0, 0, "Price status", text_color = color.green, bgcolor = color.new(color.gray, 75), text_size = f_getTextSize(tableTextSize))
        table.cell(statusTable, 0, 1, "Out of pressures", text_color = color.green, bgcolor = color.new(color.gray, 95), text_size = f_getTextSize(tableTextSize))

if barstate.isconfirmed
    bullishPressureOnClose := detectBullishSCOB
    bearishPressureOnClose := detectBearishSCOB

if detectBearishSCOB
    newScob = Pressure.new(top = high[1], bottom = low[1], barStart = time[1], block = na, broken = false)
    buyPressure := false
    sellPressure := true

    shouldAdd = allowOverlap ? true : not f_check_overlap(bearishScobArray, newScob.top, newScob.bottom)
    if shouldAdd
        if volatilityFilter and atrw > atrFilter
            array.push(bearishScobArray, newScob)
        if not volatilityFilter
            array.push(bearishScobArray, newScob)
    if bearishScobArray.size() > 20
        testScob = bearishScobArray.shift()
        box.delete(testScob.block)

if detectBullishSCOB
    newScob = Pressure.new(top = high[1], bottom = low[1], barStart = time[1], block = na, broken = false)
    buyPressure := true
    sellPressure := false

    shouldAdd = allowOverlap ? true : not f_check_overlap(bullishScobArray, newScob.top, newScob.bottom)
    if shouldAdd
        if volatilityFilter and atrw > atrFilter
            array.push(bu

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

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

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

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

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

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

Стоимость полного кода
867,60₽ ≈ $10.60