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

MEOW GOLD REVERSAL

meow gold reversal.pine
Вы автор или правообладатель?

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

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

О программе

MEOW GOLD REVERSAL — это индикатор TradingView, который выявляет развороты цены на основе захвата ликвидности и её последующего возврата. Система анализирует свинги на нескольких таймфреймах (M1, M5, M15, H1), определяет зоны ликвидности и формирует сигналы подтверждения на основе сдвига структуры, дисплейсмента и справедливых разрывов. Индикатор отображает стрелки BUY/SELL прямо на графике и предоставляет расширенный дашборд с информацией о текущей ситуации.

Встроенная система оценки качества позволяет фильтровать сигналы по числовому баллу, а дополнительные фильтры трендов по старшим таймфреймам (M30, H4, D, W) и сессионные ограничения помогают настроить условия под конкретный стиль торговли. Индикатор поддерживает автоматические торговые сессии (Азия, Лондон, Нью-Йорк) и позволяет задать временные рамки для каждой из них.

Для управления рисками индикатор рассчитывает уровень входа, стоп-лосс и пять тейков-профитов на основе ATR, отображая их в виде горизонтальных линий на графике. Доступны гибкие настройки визуала, включая цвета стрелок, информационные метки, отладочные маркеры и декоративные элементы. Полностью поддерживаются динамические оповещения TradingView с подробной информацией о каждом сигнале.

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

НастройкаОписание
signalMode Определяет чувствительность фильтрации сигналов: Агрессивный — пониженный порог, Сбалансированный — стандартный, Строгий — повышенный порог оценки качества.
enableBuy Включает или отключает генерацию сигналов покупки.
enableSell Включает или отключает генерацию сигналов продажи.
setupExpiry Максимальное количество баров, в течение которых установка должна быть подтверждена, иначе она отменяется.
maxReclaimBars Максимальное количество баров, отведённое на возврат цены к захваченному уровню до отмены установки.
cooldownBars Минимальное количество баров между последовательными сигналами, предотвращающее частые повторные оповещения.
swingLeft Количество баров влево для определения свингов на графике M1, используемых для захвата ликвидности.
swingRight Количество баров вправо для определения свингов на графике M1, используемых для захвата ликвидности.
useM1Liquidity Включает или отключает использование уровней ликвидности с таймфрейма M1.
useHTFLiquidity Включает или отключает использование уровней ликвидности с таймфреймов M5, M15 и H1.
useSessionLiquidity Включает или отключает использование сессионных максимумов и минимумов как уровней ликвидности.
usePreviousDay Включает или отключает использование максимума и минимума предыдущего торгового дня как уровней ликвидности.
usePreviousWeek Включает или отключает использование максимума и минимума предыдущей торговой недели как уровней ликвидности.
minSweepATR Нижний предел глубины захвата ликвидности, выраженный в кратности ATR.
maxSweepATR Верхний предел глубины захвата ликвидности, выраженный в кратности ATR.
atrLength Период расчёта индикатора ATR, используемого для измерения волатильности и определения глубины захвата ликвидности.
minorLeft Количество баров влево для определения минорных свингов на графике M1.
minorRight Количество баров вправо для определения минорных свингов на графике M1.
requireMSS При активации требует сдвига рыночной структуры для подтверждения сигнала.
requireDisplacement При активации требует наличия дисплейсмента (сильного движения) для подтверждения сигнала.
displacementATR Множитель ATR, определяющий минимальный размер тела свечи для признания его дисплейсментом.
includeFVG Учитывает наличие справедливых разрывов при расчёте итоговой оценки качества сигнала.
requireFVG При активации требует наличия справедливого разрыва для подтверждения входа в позицию.
htf1 Первый старший таймфрейм, данные которого запрашиваются для контекстного анализа и определения общих свингов.
htf2 Второй старший таймфрейм, данные которого запрашиваются для контекстного анализа.
htf3 Третий старший таймфрейм, данные которого запрашиваются для контекстного анализа.
htfSwing Количество баров по каждой стороне для определения свингов на старших таймфреймах.
htfEMALength Период экспоненциальной скользящей средней, рассчитываемой на старших таймфреймах для определения тренда.
useHTFContext Включает или отключает использование данных старших таймфреймов для контекстного анализа при формировании сигналов.
requireHTFZone При активации требует, чтобы захваченный уровень находился вблизи важной зоны ликвидности старшего таймфрейма или сессии.
useHTFPD Учитывает соотношение цены к среднему значению старших таймфреймов (премия/дисконт) при принятии решения о сигнале.
allowCounterTrend Разрешает использование контртрендовых разворотов на старших таймфреймах при выполнении определённых условий по оценке качества.
counterTrendScore Минимальная оценка качества сигнала, необходимая для допущения контртрендового разворота на старшем таймфрейме.
htfZoneATR Множитель ATR, задающий допустимое расстояние от захваченного уровня до важной зоны ликвидности старшего ТФ.
useScore Включает или отключает фильтрацию сигналов по числовой оценке качества.
minimumScore Минимальная оценка качества сигнала, при которой он будет считаться допустимым для отображения.
useAdvancedTrend Включает дополнительные фильтры защиты тренда по нескольким таймфреймам для ограничения сигналов.
useM30Filter При активации дополнительного фильтра тренда сигналы разрешаются только при совпадении направления тренда M30.
useH4Filter При активации дополнительного фильтра тренда сигналы разрешаются только при совпадении направления тренда H4.
useDailyFilter При активации дополнительного фильтра тренда сигналы разрешаются только при совпадении направления дневного тренда.
useWeeklyFilter При активации дополнительного фильтра тренда сигналы разрешаются только при совпадении направления недельного тренда.
usePullbackFilter При активации дополнительного фильтра разрешает покупки только при бычьем откате и продажи только при медвежьем откате.
trendFastEMA Период быстрой экспоненциальной скользящей средней, используемой в дополнительных фильтрах тренда.
trendSlowEMA Период медленной экспоненциальной скользящей средней, используемой в дополнительных фильтрах тренда.
sessionTimezone Часовой пояс, используемый для определения начала и окончания торговых сессий.
asiaSession Задаёт временной диапазон азиатской торговой сессии для отслеживания сессионных уровней и фильтрации сигналов.
londonSession Задаёт временной диапазон лондонской торговой сессии для отслеживания сессионных уровней.
nySession Задаёт временной диапазон нью-йоркской торговой сессии для отслеживания сессионных уровней.
tradeSessionsOnly При активации разрешает генерацию сигналов только во время лондонской и нью-йоркской сессий.
avoidRollover При активации исключает сигналы в период перехода между дневными сессиями.
showTradeLevels Отображает горизонтальные линии последнего входа, стоп-лосса и пяти тейков-профитов при появлении сигнала.
stopBufferATR Множитель ATR, добавляемый к экстремуму установки для формирования уровня стоп-лосса.
maxStopATR Максимальное допустимое расстояние стоп-лосса, выраженное в кратности ATR, для контроля риска.
tp1ATR Множитель ATR для расчёта расстояния до первого тейка-профита от уровня входа.
tp2ATR Множитель ATR для расчёта расстояния до второго тейка-профита от уровня входа.
tp3ATR Множитель ATR для расчёта расстояния до третьего тейка-профита от уровня входа.
tp4ATR Множитель ATR для расчёта расстояния до четвёртого тейка-профита от уровня входа.
tp5ATR Множитель ATR для расчёта расстояния до пятого тейка-профита от уровня входа.
levelLength Количество баров вправо, на которое продлеваются горизонтальные линии уровней входа, стопа и тейков-профитов.
buyColor Цвет стрелки и меток, обозначающих подтверждённый сигнал покупки на графике.
sellColor Цвет стрелки и меток, обозначающих подтверждённый сигнал продажи на графике.
showScoreLabels Отображает числовую оценку качества рядом с подтверждёнными сигналами в виде меток.
showDebug Отображает или скрывает отладочные маркеры захвата ликвидности на графике.
showLiquidityLines Отображает или скрывает горизонтальные линии уровней ликвидности на графике.
showDashboard Включает или отключает информационный дашборд в правом верхнем углу графика.
showWatermark Отображает или скрывает водяной знак с названием бренда и инструмента в центре графика.
showGalaxy Включает или отключает фоновый эффект в виде тёмной галактической тонировки свечей.
showStars Включает или отключает декоративные звёзды на графике.
showCat Отображает или скрывает анимацию машущей кошки в водяном знаке.
enableAlerts Включает или отключает автоматические динамические оповещения TradingView при появлении новых сигналов.
Получить полный код

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

indicator(
     "MEOW GOLD REVERSAL",
     shorttitle="MEOW GOLD",
     overlay=true,
     max_labels_count=500,
     max_lines_count=500,
     max_boxes_count=100)

gMain = "1. MAIN SETTINGS"
gLiq = "2. LIQUIDITY DETECTION"
gMSS = "3. MARKET STRUCTURE"
gHTF = "4. HTF CONTEXT"
gScore = "5. QUALITY SCORE"
gTrend = "6. OPTIONAL ADVANCED TREND FILTER"
gSession = "7. AUTOMATIC SESSIONS"
gRisk = "8. ENTRY / SL / 5 TARGETS"
gVisual = "9. VISUAL SETTINGS"
gDash = "10. DASHBOARD & GALAXY"
gAlert = "11. ALERTS"

signalMode = input.string(
     "Balanced",
     "Signal Sensitivity",
     options=["Aggressive","Balanced","Strict"],
     group=gMain)

enableBuy = input.bool(
     true,
     "Enable BUY Signals",
     group=gMain)

enableSell = input.bool(
     true,
     "Enable SELL Signals",
     group=gMain)

setupExpiry = input.int(
     12,
     "Maximum Setup Bars",
     minval=2,
     maxval=50,
     group=gMain)

maxReclaimBars = input.int(
     6,
     "Maximum Reclaim Bars",
     minval=1,
     maxval=30,
     group=gMain)

cooldownBars = input.int(
     8,
     "Signal Cooldown",
     minval=0,
     group=gMain)

swingLeft = input.int(
     4,
     "M1 Swing Left",
     minval=1,
     group=gLiq)

swingRight = input.int(
     3,
     "M1 Swing Right",
     minval=1,
     group=gLiq)

useM1Liquidity = input.bool(
     false,
     "Use M1 Swing Liquidity",
     group=gLiq)

useHTFLiquidity = input.bool(
     true,
     "Use M5/M15/H1 Liquidity",
     group=gLiq)

useSessionLiquidity = input.bool(
     false,
     "Use Session Liquidity",
     group=gLiq)

usePreviousDay = input.bool(
     false,
     "Use Previous Day High/Low",
     group=gLiq)

usePreviousWeek = input.bool(
     false,
     "Use Previous Week High/Low",
     group=gLiq)

minSweepATR = input.float(
     0.02,
     "Minimum Sweep Depth ATR",
     minval=0,
     step=0.01,
     group=gLiq)

maxSweepATR = input.float(
     2.0,
     "Maximum Sweep Depth ATR",
     minval=0.1,
     step=0.1,
     group=gLiq)

atrLength = input.int(
     14,
     "ATR Length",
     minval=1,
     group=gLiq)

minorLeft = input.int(
     2,
     "M1 Minor Swing Left",
     minval=1,
     group=gMSS)

minorRight = input.int(
     1,
     "M1 Minor Swing Right",
     minval=1,
     group=gMSS)

requireMSS = input.bool(
     true,
     "Require Market Structure Shift",
     group=gMSS)

requireDisplacement = input.bool(
     true,
     "Require Displacement",
     group=gMSS)

displacementATR = input.float(
     0.7,
     "Displacement Body ATR",
     minval=0.1,
     step=0.1,
     group=gMSS)

includeFVG = input.bool(
     true,
     "Include FVG In Quality Score",
     group=gMSS)

requireFVG = input.bool(
     false,
     "Require FVG For Entry",
     group=gMSS)

htf1 = input.timeframe(
     "5",
     "HTF 1",
     group=gHTF)

htf2 = input.timeframe(
     "15",
     "HTF 2",
     group=gHTF)

htf3 = input.timeframe(
     "60",
     "HTF 3",
     group=gHTF)

htfSwing = input.int(
     3,
     "HTF Swing Length",
     minval=1,
     group=gHTF)

htfEMALength = input.int(
     50,
     "HTF EMA Length",
     minval=5,
     group=gHTF)

useHTFContext = input.bool(
     true,
     "Enable HTF Context",
     group=gHTF)

requireHTFZone = input.bool(
     true,
     "Require Important HTF/Session Liquidity",
     group=gHTF)

useHTFPD = input.bool(
     true,
     "Use HTF Premium/Discount",
     group=gHTF)

allowCounterTrend = input.bool(
     true,
     "Allow HTF Countertrend Reversals",
     group=gHTF)

counterTrendScore = input.float(
     85,
     "Countertrend Minimum Score",
     minval=0,
     maxval=100,
     group=gHTF)

htfZoneATR = input.float(
     0.5,
     "HTF Zone Proximity ATR",
     minval=0,
     step=0.1,
     group=gHTF)

useScore = input.bool(
     true,
     "Enable Quality Score Filter",
     group=gScore)

minimumScore = input.float(
     70,
     "Minimum Quality Score",
     minval=0,
     maxval=100,
     group=gScore)

useAdvancedTrend = input.bool(
     false,
     "Enable Advanced Trend Protection",
     group=gTrend)

useM30Filter = input.bool(
     false,
     "Enable M30 Trend Filter",
     group=gTrend)

useH4Filter = input.bool(
     false,
     "Enable H4 Trend Filter",
     group=gTrend)

useDailyFilter = input.bool(
     false,
     "Enable Daily Trend Filter",
     group=gTrend)

useWeeklyFilter = input.bool(
     false,
     "Enable Weekly Trend Filter",
     group=gTrend)

usePullbackFilter = input.bool(
     false,
     "Enable Pullback Protection",
     group=gTrend)

trendFastEMA = input.int(
     21,
     "Fast Trend EMA",
     minval=2,
     group=gTrend)

trendSlowEMA = input.int(
     50,
     "Slow Trend EMA",
     minval=5,
     group=gTrend)

sessionTimezone = input.string(
     "Etc/UTC",
     "Session Timezone",
     group=gSession)

asiaSession = input.session(
     "0000-0700",
     "Asia Session",
     group=gSession)

londonSession = input.session(
     "0700-1200",
     "London Session",
     group=gSession)

nySession = input.session(
     "1200-2100",
     "New York Session",
     group=gSession)

tradeSessionsOnly = input.bool(
     false,
     "Trade London / NY Only",
     group=gSession)

avoidRollover = input.bool(
     false,
     "Avoid Rollover",
     group=gSession)

showTradeLevels = input.bool(
     true,
     "Show Latest Entry / SL / 5 TPs",
     group=gRisk)

stopBufferATR = input.float(
     0.3,
     "Stop Buffer ATR",
     minval=0,
     step=0.1,
     group=gRisk)

maxStopATR = input.float(
     4,
     "Maximum Stop Distance ATR",
     minval=0.5,
     group=gRisk)

tp1ATR = input.float(1.0,"TP1 ATR",group=gRisk)
tp2ATR = input.float(1.5,"TP2 ATR",group=gRisk)
tp3ATR = input.float(2.0,"TP3 ATR",group=gRisk)
tp4ATR = input.float(3.0,"TP4 ATR",group=gRisk)
tp5ATR = input.float(4.0,"TP5 ATR",group=gRisk)

levelLength = input.int(
     25,
     "Level Extension Bars",
     minval=5,
     maxval=200,
     group=gRisk)

buyColor = input.color(
     color.rgb(0,255,140),
     "BUY Arrow Color",
     group=gVisual)

sellColor = input.color(
     color.rgb(255,65,90),
     "SELL Arrow Color",
     group=gVisual)

showScoreLabels = input.bool(
     false,
     "Show Score Labels",
     group=gVisual)

showDebug = input.bool(
     false,
     "Show Liquidity Debug",
     group=gVisual)

showLiquidityLines = input.bool(
     false,
     "Show Liquidity Levels",
     group=gVisual)

showDashboard = input.bool(
     true,
     "Show Dashboard",
     group=gDash)

showWatermark = input.bool(
     true,
     "Show MEOW FOREX TOOLS",
     group=gDash)

showGalaxy = input.bool(
     false,
     "Enable Galaxy Background",
     group=gDash)

showStars = input.bool(
     false,
     "Enable Decorative Stars",
     group=gDash)

showCat = input.bool(
     true,
     "Show Waving Cat",
     group=gDash)

enableAlerts = input.bool(
     true,
     "Enable Dynamic Alerts",
     group=gAlert)

color darkBG = color.rgb(8,12,24)
color darkHeader = color.rgb(20,27,45)

color gold = color.rgb(255,205,75)
color white = color.rgb(235,240,250)

color muted = color.rgb(150,165,185)
color green = color.rgb(0,240,145)
color red = color.rgb(255,75,100)

f_htfData() =>

    float ph = ta.pivothigh(
         high,
         htfSwing,
         htfSwing)

    float pl = ta.pivotlow(
         low,
         htfSwing,
         htfSwing)

    float swingH = ta.valuewhen(
         not na(ph),
         ph,
         0)

    float swingL = ta.valuewhen(
         not na(pl),
         pl,
         0)

    float ema = ta.ema(close,htfEMALength)

    [
         swingH[1],
         swingL[1],
         close[1],
         ema[1]
     ]

f_trend() =>

    float ef = ta.ema(close,trendFastEMA)
    float es = ta.ema(close,trendSlowEMA)

    int direction =
         close>ef and ef>es ? 1 :
         close<ef and ef<es ? -1 :
         0

    direction[1]

f_session(string sess) =>

    bool inside = not na(
         time(timeframe.period,sess,sessionTimezone))

    var float currentH = na
    var float currentL = na

    var float previousH = na
    var float previousL = na

    if inside and not inside[1]

        currentH := high
        currentL := low

    else if inside

        currentH := math.max(
             nz(currentH,high),
             high)

        currentL := math.min(
             nz(currentL,low),
             low)

    if not inside and inside[1]

        previousH := currentH
        previousL := currentL

    [previousH,previousL,inside]

f_trendText(int d) =>

    d==1 ? "BULLISH" :
     d==-1 ? "BEARISH" :
     "NEUTRAL"

f_trendColor(int d) =>

    d==1 ? green :
     d==-1 ? red :
     gold

f_near(float price,float level,float distance) =>

    not na(level) and
     math.abs(price-level)<=distance

atr = ta.atr(atrLength)

body = math.abs(close-open)

bullish = close>open
bearish = close<open

bullDisplacement =
     bullish and
     body>=atr*displacementATR

bearDisplacement =
     bearish and
     body>=atr*displacementATR

bullFVG =
     low>high[2] and bullish

bearFVG =
     high<low[2] and bearish

pivotHigh = ta.pivothigh(
     high,
     swingLeft,
     swingRight)

pivotLow = ta.pivotlow(
     low,
     swingLeft,
     swingRight)

minorPH = ta.pivothigh(
     high,
     minorLeft,
     minorRight)

minorPL = ta.pivotlow(
     low,
     minorLeft,
     minorRight)

var float m1High = na
var float m1Low = na

var float minorHigh = na
var float minorLow = na

[h5,l5,c5,e5] = request.security(
     syminfo.tickerid,
     htf1,
     f_htfData(),
     lookahead=barmerge.lookahead_on)

[h15,l15,c15,e15] = request.security(
     syminfo.tickerid,
     htf2,
     f_htfData(),
     lookahead=barmerge.lookahead_on)

[h60,l60,c60,e60] = request.security(
     syminfo.tickerid,
     htf3,
     f_htfData(),
     lookahead=barmerge.lookahead_on)

trend30 = request.security(
     syminfo.tickerid,
     "30",
     f_trend(),
     lookahead=barmerge.lookahead_on)

trendH4 = request.security(
     syminfo.tickerid,
     "240",
     f_trend(),
     lookahead=barmerge.lookahead_on)

trendD = request.security(
     syminfo.tickerid,
     "D",
     f_trend(),
     lookahead=barmerge.lookahead_on)

trendW = request.security(
     syminfo.tickerid,
     "W",
     f_trend(),
     lookahead=barmerge.lookahead_on)

[pdH,pdL] = request.security(
     syminfo.tickerid,
     "D",
     [high[1],low[1]],
     lookahead=barmerge.lookahead_on)

[pwH,pwL] = request.security(
     syminfo.tickerid,
     "W",
     [high[1],low[1]],
     lookahead=barmerge.lookahead_on)

[asiaH,asiaL,inAsia] =
     f_session(asiaSession)

[ldnH,ldnL,inLondon] =
     f_session(londonSession)

[nyH,nyL,inNY] =
     f_session(nySession)

string sessionName =
     inLondon ? "LONDON" :
     inNY ? "NEW YORK" :
     inAsia ? "ASIA" :
     "OFF SESSION"

bool sessionOK =
     not tradeSessionsOnly or
     inLondon or
     inNY

bool rolloverOK =
     not avoidRollover or
     not na(time(
         timeframe.period,
         "2100-2200",
         sessionTimezone)) == false

bull5 = c5>e5
bear5 = c5<e5

bull15 = c15>e15
bear15 = c15<e15

bull60 = c60>e60
bear60 = c60<e60

int htfTrend =
     bull15 and bull60 ? 1 :
     bear15 and bear60 ? -1 :
     0

emaFast = ta.ema(close,trendFastEMA)
emaSlow = ta.ema(close,trendSlowEMA)

bool extraBuyOK = true
bool extraSellOK = true

if useAdvancedTrend

    if useM30Filter

        extraBuyOK := extraBuyOK and trend30==1
        extraSellOK := extraSellOK and trend30==-1

    if useH4Filter

        extraBuyOK := extraBuyOK and trendH4==1
        extraSellOK := extraSellOK and trendH4==-1

    if useDailyFilter

        extraBuyOK := extraBuyOK and trendD==1
        extraSellOK := extraSellOK and trendD==-1

    if useWeeklyFilter

        extraBuyOK := extraBuyOK and trendW==1
        extraSellOK := extraSellOK and trendW==-1

    if usePullbackFilter

        extraBuyOK :=
             extraBuyOK and
             emaFast>emaSlow and
             close>emaFast

        extraSellOK :=
             extraSellOK and
             emaFast<emaSlow and
             close<emaFast

bool valid15 =
     not na(h15) and
     not na(l15) and
     h15>l15

bool valid60 =
     not na(h60) and
     not na(l60) and
     h60>l60

float mid15 = (h15+l15)/2
float mid60 = (h60+l60)/2

bool buyPD =
     (not valid15 or close<=mid15) or
     (not valid60 or close<=mid60)

bool sellPD =
     (not valid15 or close>=mid15) or
     (not valid60 or close>=mid60)

array<float> highs = array.new_float()
array<float> lows = array.new_float()

array<float> importantHighs = array.new_float()
array<float> importantLows = array.new_float()

if useM1Liquidity

    array.push(highs,m1High)
    array.push(lows,m1Low)

if useHTFLiquidity

    array.push(highs,h5)
    array.push(highs,h15)
    array.push(highs,h60)

    array.push(lows,l5)
    array.push(lows,l15)
    array.push(lows,l60)

    array.push(importantHighs,h5)
    array.push(importantHighs,h15)
    array.push(importantHighs,h60)

    array.push(importantLows,l5)
    array.push(importantLows,l15)
    array.push(importantLows,l60)

if usePreviousDay

    array.push(highs,pdH)
    array.push(lows,pdL)

    array.push(importantHighs,pdH)
    array.push(importantLows,pdL)

if usePreviousWeek

    array.push(highs,pwH)
    array.push(lows,pwL)

    array.push(importantHighs,pwH)
    array.push(importantLows,pwL)

if useSessionLiquidity

    array.push(highs,asiaH)
    array.push(highs,ldnH)
    array.push(highs,nyH)

    array.push(lows,asiaL)
    array.push(lows,ldnL)
    array.push(lows,nyL)

    array.push(importantHighs,asiaH)
    array.push(importantHighs,ldnH)
    array.push(importantHighs,nyH)

    array.push(importantLows,asiaL)
    array.push(importantLows,ldnL)
    array.push(importantLows,nyL)

float sweptHigh = na
float sweptLow = na

float highDepth = 0
float lowDepth = 0

if not na(atr) and atr>0

    for level in highs

        if not na(level)

            float depth = (high-level)/atr

            if high>level and
                 depth>=minSweepATR and
                 depth<=maxSweepATR

                if depth>highDepth

                    highDepth := depth
                    sweptHigh := level

    for level in lows

        if not na(level)

            float depth = (level-low)/atr

            if low<level and
                 depth>=minSweepATR and
                 depth<=maxSweepATR

                if depth>lowDepth

                    lowDepth := depth
                    sweptLow := level

bool importantBuy = false
bool importantSell = false

float zoneDistance = atr*htfZoneATR

if not na(sweptHigh)

    for level in importantHighs

        if f_near(sweptHigh,level,zoneDistance)

            importantSell := true

if not na(sweptLow)

    for level in importantLows

        if f_near(sweptLow,level,zoneDistance)

            importantBuy := true

var int setupDirection = 0
var int setupBar = na

var float setupLevel = na
var float setupExtreme = na
var float setupStructure = na

var bool setupImportant = false
var bool setupReclaimed = false

var bool setupMSS = false
var bool setupDisp = false
var bool setupFVG = false

var bool setupPD = false

var int reclaimBar = na
var int lastSignalBar = -10000

bool buySignal = false
bool sellSignal = false

bool debugBuy = false
bool debugSell = false

float signalScore = na
float signalEntry = na
float signalSL = na

float tp1 = na
float tp2 = na
float tp3 = na
float tp4 = na
float tp5 = na

string signalMessage = ""

var string lastSignalText = "NONE"
var float lastScore = na
var float lastEntry = na
var int totalSignals = 0

if barstate.isconfirmed and not na(atr) and atr>0

    if setupDirection!=0

        int age = bar_index-setupBar

        bool expired =
             age>setupExpiry

        if setupDirection==1 and not setupReclaimed

            setupExtreme :=
                 math.min(setupExtreme,low)

        if setupDirection==-1 and not setupReclaimed

            setupExtreme :=
                 math.max(setupExtreme,high)

        if not setupReclaimed

            if setupDirection==1 and close>setupLevel

                setupReclaimed := true
                reclaimBar := bar_index

            if setupDirection==-1 and close<setupLevel

                setupReclaimed := true
                reclaimBar := bar_index

        bool reclaimExpired =
             not setupReclaimed and
             age>maxReclaimBars

        bool invalidated = false

        if setupReclaimed and bar_index>reclaimBar

            invalidated :=
                 setupDirection==1 ?
                 low<setupExtreme :
                 high>setupExtreme

        if expired or reclaimExpired or invalidated

            setupDirection := 0

        else if setupReclaimed

            if setupDirection==1 and not na(setupStructure)

                if close>setupStructure

                    setupMSS := true

            if setupDirection==-1 and not na(setupStructure)

                if close<setupStructure

                    setupMSS := true

            if setupDirection==1 and bullDisplacement

                setupDisp := true

            if setupDirection==-1 and bearDisplacement

                setupDisp := true

            if setupDirection==1 and bullFVG

                setupFVG := true

            if setupDirection==-1 and bearFVG

                setupFVG := true

            bool mssOK =
                 not requireMSS or setupMSS

            bool dispOK =
                 not requireDisplacement or setupDisp

            bool fvgOK =
                 not requireFVG or setupFVG

            bool directionOK =
                 setupDirection==1 ?
                 bullish :
                 bearish

 

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

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

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

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

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

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

Стоимость полного кода
2 285,20₽ ≈ $28.35