Double Top/Bottom Screener - Today Only V4//@version=6
indicator("Double Top/Bottom Screener - Today Only", overlay=true, max_lines_count=500)
// Inputs
leftBars = input.int(5, "Left Bars")
rightBars = input.int(5, "Right Bars")
tolerance = input.float(0.02, "Max Difference (e.g., 0.02 for 2 cents)", step=0.01)
atrLength = input.int(14, "ATR Length for Normalized Distance", minval=1)
requiredPeaks = input.int(3, "Required Identical Peaks", minval=2, maxval=5)
// Declarations of persistent variables and arrays
var array resistanceLevels = array.new(0)
var array resistanceCounts = array.new(0)
var array supportLevels = array.new(0)
var array supportCounts = array.new(0)
var array resLines = array.new(0)
var array supLines = array.new(0)
var bool hasDoubleTop = false
var bool hasDoubleBottom = false
var float doubleTopLevel = na
var float doubleBottomLevel = na
var int todayStart = na
var float nearestDoubleLevel = na // Explicitly declared as na by default
// Step 1: Identify Swing Highs/Lows
swingHigh = ta.pivothigh(high, leftBars, rightBars)
swingLow = ta.pivotlow(low, leftBars, rightBars)
// Today's premarket start (04:00 AM ET)
todayStart := timestamp(syminfo.timezone, year, month, dayofmonth, 4, 0, 0)
// Clear arrays and delete lines on the first bar or new day
if barstate.isfirst or (dayofmonth != dayofmonth and time >= todayStart)
// Delete all existing lines only if arrays are not empty
if array.size(resLines) > 0
for i = array.size(resLines) - 1 to 0
line.delete(array.get(resLines, i))
if array.size(supLines) > 0
for i = array.size(supLines) - 1 to 0
line.delete(array.get(supLines, i))
// Clear arrays
array.clear(resistanceLevels)
array.clear(supportLevels)
array.clear(resistanceCounts)
array.clear(supportCounts)
array.clear(resLines)
array.clear(supLines)
// Reset flags and levels
hasDoubleTop := false
hasDoubleBottom := false
doubleTopLevel := na
doubleBottomLevel := na
nearestDoubleLevel := na // Ensure reset on new day
// Add new swings only if today and after premarket
if not na(swingHigh) and time >= todayStart and dayofmonth == dayofmonth
bool isEqualHigh = false
int peakIndex = -1
float prevLevel = na
if array.size(resistanceLevels) > 0
for i = 0 to array.size(resistanceLevels) - 1
prevLevel := array.get(resistanceLevels, i)
if math.abs(swingHigh - prevLevel) <= tolerance
isEqualHigh := true
peakIndex := i
break
if isEqualHigh and peakIndex >= 0
array.set(resistanceCounts, peakIndex, array.get(resistanceCounts, peakIndex) + 1)
if array.get(resistanceCounts, peakIndex) == requiredPeaks
hasDoubleTop := true
doubleTopLevel := prevLevel
else
array.push(resistanceLevels, swingHigh)
array.push(resistanceCounts, 1)
line newResLine = line.new(bar_index - rightBars, swingHigh, bar_index, swingHigh, color=color.red, width=2, extend=extend.none)
array.push(resLines, newResLine)
if not na(swingLow) and time >= todayStart and dayofmonth == dayofmonth
bool isEqualLow = false
int peakIndex = -1
float prevLevel = na
if array.size(supportLevels) > 0
for i = 0 to array.size(supportLevels) - 1
prevLevel := array.get(supportLevels, i)
if math.abs(swingLow - prevLevel) <= tolerance
isEqualLow := true
peakIndex := i
break
if isEqualLow and peakIndex >= 0
array.set(supportCounts, peakIndex, array.get(supportCounts, peakIndex) + 1)
if array.get(supportCounts, peakIndex) == requiredPeaks
hasDoubleBottom := true
doubleBottomLevel := prevLevel
else
array.push(supportLevels, swingLow)
array.push(supportCounts, 1)
line newSupLine = line.new(bar_index - rightBars, swingLow, bar_index, swingLow, color=color.green, width=2, extend=extend.none)
array.push(supLines, newSupLine)
// Monitor and remove broken levels/lines; reset pattern if the equal level breaks
if array.size(resistanceLevels) > 0
for i = array.size(resistanceLevels) - 1 to 0
float level = array.get(resistanceLevels, i)
if close > level
line.delete(array.get(resLines, i))
array.remove(resLines, i)
array.remove(resistanceLevels, i)
array.remove(resistanceCounts, i)
if level == doubleTopLevel
hasDoubleTop := false
doubleTopLevel := na
nearestDoubleLevel := na // Reset if level breaks
if array.size(supportLevels) > 0
for i = array.size(supportLevels) - 1 to 0
float level = array.get(supportLevels, i)
if close < level
line.delete(array.get(supLines, i))
array.remove(supLines, i)
array.remove(supportLevels, i)
array.remove(supportCounts, i)
if level == doubleBottomLevel
hasDoubleBottom := false
doubleBottomLevel := na
nearestDoubleLevel := na // Reset if level breaks
// Limit arrays (after removals)
if array.size(resistanceLevels) > 10
line oldLine = array.shift(resLines)
line.delete(oldLine)
array.shift(resistanceLevels)
array.shift(resistanceCounts)
if array.size(supportLevels) > 10
line oldLine = array.shift(supLines)
line.delete(oldLine)
array.shift(supportLevels)
array.shift(supportCounts)
// Pattern Signal: 1 only if the exact required number of peaks is met
patternSignal = (hasDoubleTop or hasDoubleBottom) ? 1 : 0
// New: Nearest Double Level Price - Only update if pattern is active today and on current day
if time >= todayStart and dayofmonth == dayofmonth // Restrict to today
if patternSignal == 1 // Only set if pattern is active
if hasDoubleTop and not na(doubleTopLevel)
nearestDoubleLevel := doubleTopLevel
if hasDoubleBottom and not na(doubleBottomLevel)
nearestDoubleLevel := na(nearestDoubleLevel) ? doubleBottomLevel : (math.abs(close - doubleBottomLevel) < math.abs(close - nearestDoubleLevel) ? doubleBottomLevel : nearestDoubleLevel)
else
nearestDoubleLevel := na // Reset to na if no pattern today
else
nearestDoubleLevel := na // Reset for all historical bars
// New: Distance to Nearest Level (using ATR for normalization)
var float atr = ta.atr(atrLength)
var float distanceNormalizedATR = na
if not na(nearestDoubleLevel) and not na(atr) and atr > 0
distanceNormalizedATR := math.abs(close - nearestDoubleLevel) / atr
// Outputs
plot(patternSignal, title="Pattern Signal", color=patternSignal == 1 ? color.purple : na, style=plot.style_circles)
plot(nearestDoubleLevel, title="Nearest Double Level Price", color=color.orange)
plot(distanceNormalizedATR, title="Normalized Distance (ATR)", color=color.green)
bgcolor(patternSignal == 1 ? color.new(color.purple, 80) : na)
if patternSignal == 1 and barstate.isconfirmed
alert("Double Pattern detected on " + syminfo.ticker + " at " + str.tostring(close), alert.freq_once_per_bar_close)
if barstate.islast
var table infoTable = table.new(position.top_right, 1, 3, bgcolor=color.new(color.black, 50))
table.cell(infoTable, 0, 0, "Pattern: " + str.tostring(patternSignal), bgcolor=patternSignal == 1 ? color.purple : color.gray)
table.cell(infoTable, 0, 1, "Level: " + str.tostring(nearestDoubleLevel, "#.##"), bgcolor=color.orange)
table.cell(infoTable, 0, 2, "ATR Dist: " + str.tostring(distanceNormalizedATR, "#.##"), bgcolor=color.green)
Penunjuk dan strategi
Opening Range BoxThis indicator, called the "Opening Range Box," is a visual tool that helps you track the start of key trading sessions like London and New York (or whatever session you set).
It does three main things:
Finds the Daily 'First Move': It automatically calculates the High and Low reached during the first 30 minutes (or whatever time you set) of each defined session.
Draws a Box: It immediately draws a colored, transparent box on your chart from the moment the session starts. The top of the box is the OR High, and the bottom is the OR Low. This box acts as a clear reference for the session's initial boundaries.
Extends the Levels: After the initial 30 minutes are over, the box stops growing vertically (it locks in the OR High/Low) but continues to stretch out horizontally for the rest of the trading session. This allows you to easily see how the price reacts to the opening levels throughout the day.
In short: It visually highlights the most important price levels established at the very beginning of the major market sessions.
Multi-Timeframe Dual MA Downside DetectorThis indicator is designed to highlight potential downside moves using two customizable moving averages (MA1 and MA2) across multiple timeframes. It works on any chart and provides a visual cue when the price is trading below both selected moving averages on a red/down candle.
Key Features:
Dual Moving Averages: Supports EMA, SMA, VWMA, and HMA for both MA1 and MA2.
Multi-Timeframe Support: Each moving average can be calculated on a different timeframe, allowing higher timeframe trend context on lower timeframe charts.
Downside Detection: Highlights candles where the close is below both moving averages and forms a down candle (close < open).
Visual Signals:
Plots MA1 (orange) and MA2 (blue) on the chart.
Colors the downside candles blue when the price is below both MAs.
Customizable: Easily adjust the MA type, length, and timeframe to suit your trading style.
Usage:
Helps identify strong bearish conditions or potential pullbacks.
Can be combined with other technical analysis tools for trend confirmation.
Works across any market, instrument, or timeframe
by Gadirov Ultra BO Signals with Alerts & Soundsby Gadirov Ultra BO Signals with Alerts & Sounds for binary 1 minute
VIX BanditThis is a momentum indicator that identifies potential VIX bottoms by using seven configurable Williams %R oscillators simultaneously.
Green dots🟢appear below the bar when all %R series agree the VIX is extremely oversold.
Fuchsia dots🟣appear above the bar when VIX reverts to its long-term average (an EMA).
I hope this helps you spot moments of maximum optimism and trade the subsequent panic, somehow.
VWAP Exhaustion Bars - HyruVWAP Exhaustion Bars
Quick visual spotting of market exhaustion levels with color-coded RSI bars and VWAP bands.
What it does:
Colors candles based on RSI exhaustion levels (5 red shades for overbought, 4 green for oversold)
Shows rolling VWAP with standard deviation bands
Drops triangle alerts when price hits the bands - red for resistance, green for support
Built-in alerts for extreme levels and band touches
Perfect for:
Scalping reversals at exhaustion points
Identifying potential bounce zones
Quick visual confirmation of overbought/oversold conditions
Clean, fast, and gets straight to the point. No clutter, just actionable signals when you need them most.
Default settings work great, but tweak the RSI length and thresholds to match your trading style.
Opening Range BoxThis indicator, called the "Opening Range Box," is a visual tool that helps you track the start of key trading sessions like London and New York.
It does three main things:
Finds the Daily 'First Move': It automatically calculates the High and Low reached during the first 30 minutes (or whatever time you set) of each defined session.
Draws a Box: It immediately draws a colored, transparent box on your chart from the moment the session starts. This box acts as a clear reference for the session's initial boundaries.
Extends the Levels: After the initial 30 minutes are over, the box stops growing vertically (it locks in the OR High/Low) but continues to stretch out horizontally for the rest of the trading session. This allows you to easily see how the price reacts to the opening levels throughout the day.
In short: It visually highlights the most important price levels established at the very beginning of the major market sessions.
Ultimate BB Squeeze [Final]This indicator gives the move as it is about to happen and I have even added adx to the same so as to have a directional trade and not get stopped by loss.
EMA/SMA Market Indicator V1 (Situational Awareness Uptrend)Red condition (highest priority in code)
Background = red if any of these are true:
Close < 10MA
OR Close < 20MA
OR (10MA and 20MA slopes ≤ threshold → “flat/down”)
Green condition (only if not red)
Background = green if:
(Close > 10MA or Close > 20MA)
AND Close > 50MA
Otherwise = nothing (transparent)
If neither red nor green is true → background is off.
So when is there no background?
Close is not below 10MA
Close is not below 20MA
MAs are not both flat/down
AND the price fails the “green test” (ex. under 50MA, or not above 10/20).
by Gadirov new Best Big Candle Change with Alerts for binaryby Gadirov new Best Big Candle Change with Alerts for binary
By Gadirov Best Big Candle Change Indicator for binary 1 minuteBy Gadirov Best Big Candle Change Indicator for binary 1 minute
Ch Enhanced Buy Sell Volume// ========================================
// 📊 HOW TO READ THIS INDICATOR 📊
// ========================================
//
// 🟢 GREEN BARS (Above Zero) = BUY VOLUME
// 🔴 RED BARS (Below Zero) = SELL VOLUME
//
// 💡 BAR COLORS MEANING:
// • DARK GREEN = Strong buyer dominance (high conviction buying)
// • LIGHT GREEN = Weak buyer dominance (low conviction)
// • DARK RED = Strong seller dominance (high conviction selling)
// • LIGHT RED = Weak seller dominance (low conviction)
//
// 🎯 TRADING SIGNALS:
// • Tall dark green bars = Strong bullish momentum
// • Tall dark red bars = Strong bearish momentum
// • Light colored bars = Weak conviction, potential reversal
// • Green bars > Red bars = Buyers winning
// • Red bars > Green bars = Sellers winning
//
// 📈 BULLISH SIGNALS:
// • Buy% > 70% = Strong buying interest
// • Dark green bars with high delta = Professional buying
// • Buy volume above yellow MA line = Above average buying
//
// 📉 BEARISH SIGNALS:
// • Sell% > 70% = Strong selling pressure
// • Dark red bars with high delta = Professional selling
// • Sell volume below yellow MA line = Above average selling
//
// ⚠️ WARNING SIGNALS:
// • Price up + Red dominance = Bearish divergence
// • Price down + Green dominance = Bullish divergence
// • Low delta (<10%) = Market indecision
//
// 📊 INFO TABLE (Top-Right):
// • Buy%: Percentage of volume that was buying
// • Sell%: Percentage of volume that was selling
// • Delta%: Strength of dominance (difference between buy/sell)
// • Dom: Which side is currently dominant (BUYERS/SELLERS)
//
// 🟡 YELLOW LINES = Volume Moving Average
// • Upper line: Reference for buy volume (green bars)
// • Lower line: Reference for sell volume (red bars)
// • Above yellow = Higher than average volume
// • Below yellow = Lower than average volume
Previous Day Close (PDC)pdc price just watch how it reacts it will say if bearish or bullish on day or can get a good entry took a while to make who likes it
Dr.Yazdani V063 Session OR + A-Lines
**ACD Indicator: Mark Fisher's Opening Range Breakout Strategy**
**Overview**
The ACD system, developed by legendary trader Mark Fisher in his book *The Logical Trader*, is a powerful methodology for identifying high-probability trade setups based on the market's opening range (OR). This indicator automates Layers 1 and 2 of the ACD strategy, helping you spot breakout opportunities, trend direction, and key support/resistance levels. Perfect for day traders, scalpers, and swing traders in forex, stocks, futures, or crypto.
**How It Works**
1. **Opening Range (OR)**: Calculated from the high/low of the first X minutes (default: 30-60 min) of major sessions (e.g., Tokyo, London, New York).
2. **A Levels**: Drawn at a percentage (default: 0.5% of OR range or ATR-based) above/below the OR. A breakout above A-Up signals a bullish setup; below A-Down signals bearish.
3. **C Levels**: Wider levels (default: 1-2% or ATR multiplier) for stronger confirmation. Breakouts here confirm trend strength and filter fakeouts.
4. **Pivot Ranges**: Includes daily and N-day pivots to gauge overall market bias (above pivots = bullish; below = bearish).
**Key Features**
- **Customizable Sessions**: Tokyo (00:00-01:00 GMT), London (08:00-09:00 GMT), New York (13:30-14:30 GMT) – adjustable.
- **ATR Integration**: Uses Average True Range for dynamic A/C levels (period: 14 by default).
- **Visual Alerts**: Color-coded lines (green for bullish, red for bearish) + optional labels for breakouts.
- **Pivot Display**: Show/hide daily or multi-day pivots with customizable colors.
- **Risk Management**: Built-in stop-loss suggestions based on OR width.
**Trading Rules**
- **Bullish Setup**: Price breaks and holds above A-Up → Enter long at C-Up confirmation. Target: Next pivot or 1:2 risk-reward.
- **Bearish Setup**: Price breaks below A-Down → Enter short at C-Down.
- **Avoid Fakeouts**: Wait for stabilization (e.g., close above/below level).
- **Trend Filter**: Combine with PMA (Pivot Moving Average) for Layer 3 confirmation (search "ACD PMA" in TradingView).
**Settings Guide**
- **OR Timeframe**: Session start time and duration (e.g., 30 min).
- **A Multiplier (%)**: Distance for A levels (default: 0.5).
- **C Multiplier (%)**: Distance for C levels (default: 1.0).
- **ATR Period**: For volatility-based levels (default: 14).
- **Show Pivots**: Toggle daily/N-day ranges.
This indicator balances supply/demand by analyzing volume and price action within the opening range. Backtest on your favorite pairs (e.g., EURUSD, BTCUSD) and adjust for your style. Not financial advice – always use proper risk management!
**Inspired by**: Mark Fisher's ACD Methodology. Open-source for community review. Questions? Comment below!
#ACD #OpeningRange #Breakout #DayTrading #FisherStrategy
Ultra High-Prob MTF BO Signals for binary take returnUltra High-Prob MTF BO Signals for binary take return
Double Pattern Screener v7 //@version=6
indicator("Double Pattern Screener", shorttitle="DPS", overlay=false)
// Screener Inputs
leftBars = input.int(5, "Left Bars", minval=3, maxval=10)
rightBars = input.int(5, "Right Bars", minval=3, maxval=10)
tolerance = input.float(0.02, "Max Difference", step=0.01)
atrLength = input.int(14, "ATR Length", minval=1)
// NEW: Filter for number of equal peaks
filterPeaks = input.int(3, "Filter: Show Only X Equal Peaks", minval=2, maxval=5)
enableFilter = input.bool(true, "Enable Peak Count Filter")
// Arrays for tracking swings
var array todaySwingLevels = array.new(0)
var array swingCounts = array.new(0)
var array isResistance = array.new(0)
var array swingBars = array.new(0)
var int maxEqualPeaks = 0
var float nearestEqualLevel = na
var float distanceToNearest = na
var bool hasPattern = false
// Detect swings
swingHigh = ta.pivothigh(high, leftBars, rightBars)
swingLow = ta.pivotlow(low, leftBars, rightBars)
// Track current day
currentDay = dayofmonth
isNewDay = currentDay != currentDay
// Clear on new day
if barstate.isfirst or isNewDay
array.clear(todaySwingLevels)
array.clear(swingCounts)
array.clear(isResistance)
array.clear(swingBars)
maxEqualPeaks := 0
nearestEqualLevel := na
distanceToNearest := na
hasPattern := false
// Function to find matching level
findMatchingLevel(newLevel, isHigh) =>
matchIndex = -1
if array.size(todaySwingLevels) > 0
for i = 0 to array.size(todaySwingLevels) - 1
existingLevel = array.get(todaySwingLevels, i)
existingIsResistance = array.get(isResistance, i)
if math.abs(newLevel - existingLevel) <= tolerance and existingIsResistance == isHigh
matchIndex := i
break
matchIndex
// Process swing highs
if not na(swingHigh)
matchIndex = findMatchingLevel(swingHigh, true)
if matchIndex >= 0
newCount = array.get(swingCounts, matchIndex) + 1
array.set(swingCounts, matchIndex, newCount)
// Update max equal peaks
if newCount > maxEqualPeaks
maxEqualPeaks := newCount
else
array.push(todaySwingLevels, swingHigh)
array.push(swingCounts, 1)
array.push(isResistance, true)
array.push(swingBars, bar_index)
// Process swing lows
if not na(swingLow)
matchIndex = findMatchingLevel(swingLow, false)
if matchIndex >= 0
newCount = array.get(swingCounts, matchIndex) + 1
array.set(swingCounts, matchIndex, newCount)
// Update max equal peaks
if newCount > maxEqualPeaks
maxEqualPeaks := newCount
else
array.push(todaySwingLevels, swingLow)
array.push(swingCounts, 1)
array.push(isResistance, false)
array.push(swingBars, bar_index)
// Remove broken levels
if array.size(todaySwingLevels) > 0
for i = array.size(todaySwingLevels) - 1 to 0
level = array.get(todaySwingLevels, i)
isRes = array.get(isResistance, i)
levelBroken = isRes ? close > level : close < level
if levelBroken
removedCount = array.get(swingCounts, i)
array.remove(todaySwingLevels, i)
array.remove(swingCounts, i)
array.remove(isResistance, i)
array.remove(swingBars, i)
// Recalculate max if we removed the highest count
if removedCount == maxEqualPeaks
maxEqualPeaks := 0
if array.size(swingCounts) > 0
for j = 0 to array.size(swingCounts) - 1
count = array.get(swingCounts, j)
if count > maxEqualPeaks
maxEqualPeaks := count
// Calculate nearest equal level and distance
nearestEqualLevel := na
distanceToNearest := na
smallestDistance = 999999.0
if array.size(todaySwingLevels) > 0
for i = 0 to array.size(todaySwingLevels) - 1
count = array.get(swingCounts, i)
level = array.get(todaySwingLevels, i)
// Only consider levels with 2+ touches
if count >= 2
distance = math.abs(close - level)
if distance < smallestDistance
smallestDistance := distance
nearestEqualLevel := level
distanceToNearest := distance
// Pattern detection with filter
hasPattern := false
if maxEqualPeaks >= 2
if enableFilter
hasPattern := maxEqualPeaks == filterPeaks
else
hasPattern := true
// Screener outputs
patternSignal = hasPattern ? 1 : 0
numberEqualPeaks = maxEqualPeaks
nearestLevelPrice = nearestEqualLevel
distanceCents = distanceToNearest
// Calculate ATR normalized distance
atr = ta.atr(atrLength)
atrDistance = not na(distanceToNearest) and not na(atr) and atr > 0 ? distanceToNearest / atr : na
// Plot screener values
plot(patternSignal, title="Pattern Signal", display=display.data_window)
plot(numberEqualPeaks, title="Number Equal Peaks", display=display.data_window)
plot(nearestLevelPrice, title="Nearest Equal Level Price", display=display.data_window)
plot(distanceCents, title="Distance to Nearest (Price Units)", display=display.data_window)
plot(atrDistance, title="ATR Normalized Distance", display=display.data_window)
// Table for current symbol info
if barstate.islast
var table infoTable = table.new(position.top_right, 2, 6, bgcolor=color.new(color.black, 70))
table.cell(infoTable, 0, 0, "Symbol:", bgcolor=color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 1, 0, syminfo.ticker, bgcolor=color.new(color.blue, 50), text_color=color.white)
table.cell(infoTable, 0, 1, "Pattern:", bgcolor=color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 1, 1, str.tostring(patternSignal), bgcolor=patternSignal == 1 ? color.new(color.purple, 50) : color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 0, 2, "Equal Peaks:", bgcolor=color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 1, 2, str.tostring(numberEqualPeaks), bgcolor=color.new(color.yellow, 50), text_color=color.black)
table.cell(infoTable, 0, 3, "Nearest Level:", bgcolor=color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 1, 3, str.tostring(nearestLevelPrice, "#.####"), bgcolor=color.new(color.orange, 50), text_color=color.white)
table.cell(infoTable, 0, 4, "Distance:", bgcolor=color.new(color.gray, 50), text_color=color.white)
table.cell(infoTable, 1, 4, str.tostring(distanceCents, "#.####"), bgcolor=color.new(color.green, 50), text_color=color.white)
table.cell(infoTable, 0, 5, "Filter Active:", bgcolor=color.new(color.gray, 50), text_color=color.white)
filterText = enableFilter ? str.tostring(filterPeaks) + " peaks" : "OFF"
table.cell(infoTable, 1, 5, filterText, bgcolor=enableFilter ? color.new(color.red, 50) : color.new(color.gray, 50), text_color=color.white)
Double Top/Bottom Screener - Today Only v6 I want to create screener for stock that are traded on Nysa, nasdaq and amex. there will be filter by volume shares traded today more then 1mln, and this screener need to search among all that stocks (approximately 1000 symbols) on 1 minute timeframe, for 2 equal highs/ or lows, I will want set parameters what I mean by "equal", and I want to regulate setting by 2 -3-4-5 equal highs or lows searching. when there will be such stock I want to see it on the list, or have alert, .how can I create such screener If I don;t now coding and with low budget, and with less time
30-10-3 MAX,min dinamici Supported timeframes: The script works only on timeframes of 1 minute or lower (including second-based timeframes).
Displayed levels: The highs and lows of the last closed candle are plotted for the 30-minute, 10-minute, and 3-minute timeframes.
Updates: The levels update only when a candle closes in the respective timeframe (e.g., every 30 minutes for the 30m levels).
Visualization: Dashed lines for highs and lows (blue for 30m, green for 10m, red for 3m).
Labels indicating "Max 30m", "Min 30m", etc., positioned above the highs and below the lows.
by Gadirov 1-Min Big Candle Change Optimized for binaryby Gadirov 1-Min Big Candle Change Optimized for binary
By Gadirov Reliable 3M Binary Signals for binary codeBy Gadirov Reliable 3M Binary Signals for binary code
Repulse OB/OS Z-Score (v3)🔹 What this script does
This indicator is an enhanced version of the Repulse, originally developed by Eric Lefort. The Repulse measures bullish and bearish pressure in the market by analyzing price momentum and crowd behavior.
In this version, I introduce a Z-Score transformation to the Repulse values. The Z-Score converts raw outputs into a standardized statistical scale, allowing traders to identify when pressure is abnormally high or low relative to historical conditions.
🔹 How it works
Repulse Core: The original Repulse calculation compares buying vs. selling pressure, highlighting shifts in momentum.
Z-Scoring Method: Repulse values are normalized around their mean and scaled by standard deviation. This transforms the indicator into a dimensionless metric, where:
Positive Z-Scores indicate stronger-than-usual bullish pressure.
Negative Z-Scores indicate stronger-than-usual bearish pressure.
Bands: Thresholds such as ±1 or ±2 Z-Scores can help detect when pressure is stretched, potentially signaling exhaustion or reversal points.
🔹 Why it’s useful
Statistical Clarity: Traders can instantly see whether current pressure is normal or extreme.
Cross-Asset Comparisons: Because Z-Scores are standardized, signals can be compared across different markets or timeframes.
Mean Reversion Tool: Extreme Z-Score values often precede turning points, making this a versatile addition to trend and momentum analysis.
🔹 How to use it
Apply the indicator to any chart and timeframe.
Watch for Z-Scores above +2 (possible overheated bullish pressure) or below –2 (possible oversold/exhaustion).
Use these levels as contextual signals, not standalone triggers. Best results come from combining with price structure, support/resistance, or volume analysis.
⚠️ Note: This script does not predict price. It highlights statistical extremes in pressure to support decision-making. Always use in combination with other tools and risk management practices.
2nd 1H: Midpoints (white=2nd mid, blue=2-candle range mid)2nd 1H: Midpoints (white=2nd mid, blue=2-candle range mid)
TW All in OneIts a overlap strategy, giving signals for buy and sell.
Mostly suitable for Bank Nifty. Nifty and crude oil