Melona pressures and ema (by 3dots)
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «melona pressures and ema (by 3dots)_5974369984854366962.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.