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

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

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

ea robofibo source v.11.2.mq4MetaTrader 4 · 1 общих теговᴇɴᴛʀʏ.txtTradingView · 1 общих теговzonestrategy.mqhMetaTrader 5 · 1 общих теговxauusd_simple_strategy7.mq4MetaTrader 4 · 1 общих теговxauusd_grok_presisi_scalper_v1.4 - anti detach.mq5MetaTrader 5 · 1 общих теговxauusd_gold_perfect.mq4MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

Получить полный код

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

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 = "نمایش جدول وضعیت", group = "تنظیمات جدول")
tablePosition = input.string("top_right", title = "موقعیت جدول", options = ["top_right", "top_left", "bottom_right", "bottom_left"], group = "تنظیمات جدول")
tableTextSize = input.string("small", title = "اندازه متن جدول", options = ["tiny", "small", "normal", "large"], group = "تنظیمات جدول")

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(bullish

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

Что вы получите после оплаты

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

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

Стоимость полного кода: 867 ₽