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