BarCoreLibrary "BarCore"
BarCore is a foundational library for technical analysis, providing essential functions for evaluating the structural properties of candlesticks and inter-bar relationships.
It prioritizes ratio-based metrics (0.0 to 1.0) over absolute prices, making it asset-agnostic and ideal for robust pattern recognition, momentum analysis, and volume-weighted pressure evaluation.
Key modules:
- Structure & Range: High-precision bar and body metrics with relative positioning.
- Wick Dynamics: Absolute and relative wick analysis for identifying price rejection.
- Inter-bar Logic: Containment, coverage, and quantitative price overlap (Ratio-based).
- Gap Intelligence: Real body and price gaps with customizable significance thresholds.
- Flow & Pressure: Volume-weighted buying/selling pressure and Money Flow metrics.
isBuyingBar()
Checks if the bar is a bullish (up) bar, where close is greater than open.
Returns: bool True if the bar closed higher than it opened.
isSellingBar()
Checks if the bar is a bearish (down) bar, where close is less than open.
Returns: bool True if the bar closed lower than it opened.
barMidpoint()
Calculates the absolute midpoint of the bar's total range (High + Low) / 2.
Returns: float The midpoint price of the bar.
barRange()
Calculates the absolute size of the bar's total range (High to Low).
Returns: float The absolute difference between high and low.
barRangeMidpoint()
Calculates half of the bar's total range size.
Returns: float Half the bar's range size.
realBodyHigh()
Returns the higher price between the open and close.
Returns: float The top of the real body.
realBodyLow()
Returns the lower price between the open and close.
Returns: float The bottom of the real body.
realBodyMidpoint()
Calculates the absolute midpoint of the bar's real body.
Returns: float The midpoint price of the real body.
realBodyRange()
Calculates the absolute size of the bar's real body.
Returns: float The absolute difference between open and close.
realBodyRangeMidpoint()
Calculates half of the bar's real body size.
Returns: float Half the real body size.
upperWickRange()
Calculates the absolute size of the upper wick.
Returns: float The range from high to the real body high.
lowerWickRange()
Calculates the absolute size of the lower wick.
Returns: float The range from the real body low to low.
openRatio()
Returns the location of the open price relative to the bar's total range (0.0 at low to 1.0 at high).
Returns: float The ratio of the distance from low to open, divided by the total range.
closeRatio()
Returns the location of the close price relative to the bar's total range (0.0 at low to 1.0 at high).
Returns: float The ratio of the distance from low to close, divided by the total range.
realBodyRatio()
Calculates the ratio of the real body size to the total bar range.
Returns: float The real body size divided by the bar range. Returns 0 if barRange is 0.
upperWickRatio()
Calculates the ratio of the upper wick size to the total bar range.
Returns: float The upper wick size divided by the bar range. Returns 0 if barRange is 0.
lowerWickRatio()
Calculates the ratio of the lower wick size to the total bar range.
Returns: float The lower wick size divided by the bar range. Returns 0 if barRange is 0.
upperWickToBodyRatio()
Calculates the ratio of the upper wick size to the real body size.
Returns: float The upper wick size divided by the real body size. Returns 0 if realBodyRange is 0.
lowerWickToBodyRatio()
Calculates the ratio of the lower wick size to the real body size.
Returns: float The lower wick size divided by the real body size. Returns 0 if realBodyRange is 0.
totalWickRatio()
Calculates the ratio of the total wick range (Upper Wick + Lower Wick) to the total bar range.
Returns: float The total wick range expressed as a ratio of the bar's total range. Returns 0 if barRange is 0.
isBodyExpansion()
Checks if the current bar's real body range is larger than the previous bar's real body range (body expansion).
Returns: bool True if realBodyRange() > realBodyRange() .
isBodyContraction()
Checks if the current bar's real body range is smaller than the previous bar's real body range (body contraction).
Returns: bool True if realBodyRange() < realBodyRange() .
isWithinPrevBar(inclusive)
Checks if the current bar's range is entirely within the previous bar's range.
Parameters:
inclusive (bool) : If true, allows equality (<=, >=). Default is false.
Returns: bool True if High < High AND Low > Low .
isCoveringPrevBar(inclusive)
Checks if the current bar's range fully covers the entire previous bar's range.
Parameters:
inclusive (bool) : If true, allows equality (<=, >=). Default is false.
Returns: bool True if High > High AND Low < Low .
isWithinPrevBody(inclusive)
Checks if the current bar's real body is entirely inside the previous bar's real body.
Parameters:
inclusive (bool) : If true, allows equality (<=, >=). Default is false.
Returns: bool True if the current body is contained inside the previous body.
isCoveringPrevBody(inclusive)
Checks if the current bar's real body fully covers the previous bar's real body.
Parameters:
inclusive (bool) : If true, allows equality (<=, >=). Default is false.
Returns: bool True if the current body fully covers the previous body.
isOpenWithinPrevBody(inclusive)
Checks if the current bar's open price falls within the real body range of the previous bar.
Parameters:
inclusive (bool) : If true, includes the boundary prices. Default is false.
Returns: bool True if the open price is between the previous bar's real body high and real body low.
isCloseWithinPrevBody(inclusive)
Checks if the current bar's close price falls within the real body range of the previous bar.
Parameters:
inclusive (bool) : If true, includes the boundary prices. Default is false.
Returns: bool True if the close price is between the previous bar's real body high and real body low.
isPrevOpenWithinBody(inclusive)
Checks if the previous bar's open price falls within the current bar's real body range.
Parameters:
inclusive (bool) : If true, includes the boundary prices. Default is false.
Returns: bool True if open is between the current bar's real body high and real body low.
isPrevCloseWithinBody(inclusive)
Checks if the previous bar's closing price falls within the current bar's real body range.
Parameters:
inclusive (bool) : If true, includes the boundary prices. Default is false.
Returns: bool True if close is between the current bar's real body high and real body low.
isOverlappingPrevBar()
Checks if there is any price overlap between the current bar's range and the previous bar's range.
Returns: bool True if the current bar's range has any intersection with the previous bar's range.
bodyOverlapRatio()
Calculates the percentage of the current real body that overlaps with the previous real body.
Returns: float The overlap ratio (0.0 to 1.0). 1.0 means the current body is entirely within the previous body's price range.
isCompletePriceGapUp()
Checks for a complete price gap up where the current bar's low is strictly above the previous bar's high, meaning there is zero price overlap between the two bars.
Returns: bool True if the current low is greater than the previous high.
isCompletePriceGapDown()
Checks for a complete price gap down where the current bar's high is strictly below the previous bar's low, meaning there is zero price overlap between the two bars.
Returns: bool True if the current high is less than the previous low.
isRealBodyGapUp()
Checks for a gap between the current and previous real bodies.
Returns: bool True if the current body is completely above the previous body.
isRealBodyGapDown()
Checks for a gap between the current and previous real bodies.
Returns: bool True if the current body is completely below the previous body.
gapRatio()
Calculates the percentage difference between the current open and the previous close, expressed as a decimal ratio.
Returns: float The gap ratio (positive for gap up, negative for gap down). Returns 0 if the previous close is 0.
gapPercentage()
Calculates the percentage difference between the current open and the previous close.
Returns: float The gap percentage (positive for gap up, negative for gap down). Returns 0 if previous close is 0.
isGapUp()
Checks for a basic gap up, where the current bar's open is strictly higher than the previous bar's close. This is the minimum condition for a gap up.
Returns: bool True if the current open is greater than the previous close (i.e., gapRatio is positive).
isGapDown()
Checks for a basic gap down, where the current bar's open is strictly lower than the previous bar's close. This is the minimum condition for a gap down.
Returns: bool True if the current open is less than the previous close (i.e., gapRatio is negative).
isSignificantGapUp(minRatio)
Checks if the current bar opened significantly higher than the previous close, as defined by a minimum percentage ratio.
Parameters:
minRatio (float) : The minimum required gap percentage ratio. Default is 0.03 (3%).
Returns: bool True if the gap ratio (open vs. previous close) is greater than or equal to the minimum ratio.
isSignificantGapDown(minRatio)
Checks if the current bar opened significantly lower than the previous close, as defined by a minimum percentage ratio.
Parameters:
minRatio (float) : The minimum required gap percentage ratio. Default is 0.03 (3%).
Returns: bool True if the absolute value of the gap ratio (open vs. previous close) is greater than or equal to the minimum ratio.
trueRangeComponentHigh()
Calculates the absolute distance from the current bar's High to the previous bar's Close, representing one of the components of the True Range.
Returns: float The absolute difference: |High - Close |.
trueRangeComponentLow()
Calculates the absolute distance from the current bar's Low to the previous bar's Close, representing one of the components of the True Range.
Returns: float The absolute difference: |Low - Close |.
isUpperWickDominant(minRatio)
Checks if the upper wick is significantly long relative to the total range.
Parameters:
minRatio (float) : Minimum ratio of the wick to the total bar range. Default is 0.7 (70%).
Returns: bool True if the upper wick dominates the bar's range.
isUpperWickNegligible(maxRatio)
Checks if the upper wick is very small relative to the total range.
Parameters:
maxRatio (float) : Maximum ratio of the wick to the total bar range. Default is 0.05 (5%).
Returns: bool True if the upper wick is negligible.
isLowerWickDominant(minRatio)
Checks if the lower wick is significantly long relative to the total range.
Parameters:
minRatio (float) : Minimum ratio of the wick to the total bar range. Default is 0.7 (70%).
Returns: bool True if the lower wick dominates the bar's range.
isLowerWickNegligible(maxRatio)
Checks if the lower wick is very small relative to the total range.
Parameters:
maxRatio (float) : Maximum ratio of the wick to the total bar range. Default is 0.05 (5%).
Returns: bool True if the lower wick is negligible.
isSymmetric(maxTolerance)
Checks if the upper and lower wicks are roughly equal in length.
Parameters:
maxTolerance (float) : Maximum allowable percentage difference between the two wicks. Default is 0.15 (15%).
Returns: bool True if wicks are symmetric within the tolerance level.
isMarubozuBody(minRatio)
Candle with a very large body relative to the total range (minimal wicks).
Parameters:
minRatio (float) : Minimum body size ratio. Default is 0.9 (90%).
Returns: bool True if the bar has minimal wicks (Marubozu body).
isLargeBody(minRatio)
Candle with a large body relative to the total range.
Parameters:
minRatio (float) : Minimum body size ratio. Default is 0.6 (60%).
Returns: bool True if the bar has a large body.
isSmallBody(maxRatio)
Candle with a small body relative to the total range.
Parameters:
maxRatio (float) : Maximum body size ratio. Default is 0.4 (40%).
Returns: bool True if the bar has small body.
isDojiBody(maxRatio)
Candle with a very small body relative to the total range (indecision).
Parameters:
maxRatio (float) : Maximum body size ratio. Default is 0.1 (10%).
Returns: bool True if the bar has a very small body.
isLowerWickExtended(minRatio)
Checks if the lower wick is significantly extended relative to the real body size.
Parameters:
minRatio (float) : Minimum required ratio of the lower wick length to the real body size. Default is 2.0 (Lower wick must be at least twice the body's size).
Returns: bool True if the lower wick's length is at least `minRatio` times the size of the real body.
isUpperWickExtended(minRatio)
Checks if the upper wick is significantly extended relative to the real body size.
Parameters:
minRatio (float) : Minimum required ratio of the upper wick length to the real body size. Default is 2.0 (Upper wick must be at least twice the body's size).
Returns: bool True if the upper wick's length is at least `minRatio` times the size of the real body.
isStrongBuyingBar(minCloseRatio, maxOpenRatio)
Checks for a bar with strong bullish momentum (open near low, close near high), indicating high conviction.
Parameters:
minCloseRatio (float) : Minimum required ratio for the close location (relative to range, e.g., 0.7 means close must be in the top 30%). Default is 0.7 (70%).
maxOpenRatio (float) : Maximum allowed ratio for the open location (relative to range, e.g., 0.3 means open must be in the bottom 30%). Default is 0.3 (30%).
Returns: bool True if the bar is bullish, opened in the low extreme, and closed in the high extreme.
isStrongSellingBar(maxCloseRatio, minOpenRatio)
Checks for a bar with strong bearish momentum (open near high, close near low), indicating high conviction.
Parameters:
maxCloseRatio (float) : Maximum allowed ratio for the close location (relative to range, e.g., 0.3 means close must be in the bottom 30%). Default is 0.3 (30%).
minOpenRatio (float) : Minimum required ratio for the open location (relative to range, e.g., 0.7 means open must be in the top 30%). Default is 0.7 (70%).
Returns: bool True if the bar is bearish, opened in the high extreme, and closed in the low extreme.
isWeakBuyingBar(maxCloseRatio, maxBodyRatio)
Identifies a bar that is technically bullish but shows significant weakness, characterized by a failure to close near the high and a small body size.
Parameters:
maxCloseRatio (float) : Maximum allowed ratio for the close location relative to the range (e.g., 0.6 means the close must be in the bottom 60% of the bar's range). Default is 0.6 (60%).
maxBodyRatio (float) : Maximum allowed ratio for the real body size relative to the bar's range (e.g., 0.4 means the body is small). Default is 0.4 (40%).
Returns: bool True if the bar is bullish, but its close is weak and its body is small.
isWeakSellingBar(minCloseRatio, maxBodyRatio)
Identifies a bar that is technically bearish but shows significant weakness, characterized by a failure to close near the low and a small body size.
Parameters:
minCloseRatio (float) : Minimum required ratio for the close location relative to the range (e.g., 0.4 means the close must be in the top 60% of the bar's range). Default is 0.4 (40%).
maxBodyRatio (float) : Maximum allowed ratio for the real body size relative to the bar's range (e.g., 0.4 means the body is small). Default is 0.4 (40%).
Returns: bool True if the bar is bearish, but its close is weak and its body is small.
balanceOfPower()
Measures the net pressure of buyers vs. sellers within the bar, normalized to the bar's range.
Returns: float A value between -1.0 (strong selling) and +1.0 (strong buying), representing the strength and direction of the close relative to the open.
buyingPressure()
Measures the net buying volume pressure based on the close location and volume.
Returns: float A numerical value representing the volume weighted buying pressure.
sellingPressure()
Measures the net selling volume pressure based on the close location and volume.
Returns: float A numerical value representing the volume weighted selling pressure.
moneyFlowMultiplier()
Calculates the Money Flow Multiplier (MFM), which is the price component of Money Flow and CMF.
Returns: float A normalized value from -1.0 (strong selling) to +1.0 (strong buying), representing the net directional pressure.
moneyFlowVolume()
Calculates the Money Flow Volume (MFV), which is the Money Flow Multiplier weighted by the bar's volume.
Returns: float A numerical value representing the volume-weighted money flow. Positive = buying dominance; negative = selling dominance.
isAccumulationBar()
Checks for basic accumulation on the current bar, requiring both positive Money Flow Volume and a buying bar (closing higher than opening).
Returns: bool True if the bar exhibits buying dominance through its internal range location and is a buying bar.
isDistributionBar()
Checks for basic distribution on the current bar, requiring both negative Money Flow Volume and a selling bar (closing lower than opening).
Returns: bool True if the bar exhibits selling dominance through its internal range location and is a selling bar.
Wskaźniki i strategie
Alg0 Hal0 Peekab00 WindowDescription: Alg0 Hal0 Peekaboo Window
The Alg0 Hal0 Peekaboo Window is a specialized volatility and breakout tracking tool designed to isolate price action within a specific rolling time window. By defining a custom lookback period (defaulting to 4.5 hours), this indicator identifies the "Peekaboo Window"—the high and low range established during that time—and provides real-time visual alerts when price "peeks" outside of that established zone.
This tool is particularly effective for intraday traders who look for volatility contraction (ranges) followed by expansion (breakouts).
How It Works
The indicator dynamically calculates the highest high and lowest low over a user-defined hourly duration. Unlike static daily ranges, the Peekaboo Window moves with the price, providing a "rolling" zone of support and resistance based on recent market history.
Key Features
Rolling Lookback Window: Define your duration in hours (e.g., 4.5h) to capture specific session cycles.
Dynamic Visual Range: High and low levels are automatically plotted and filled with a background color for instant visual recognition of the "value area."
Peak Markers: Small diamond markers identify exactly where the local peaks and valleys were formed within your window.
Breakout Signals: Triangle markers trigger the moment price closes outside the window, signaling a potential trend continuation or reversal.
Unified Alerting: Integrated alert logic notifies you the second a breakout occurs, including the exact price level of the breach.
How to Use the Peekaboo Window
1. Identify the "Squeeze"
When the Peekaboo Window (the shaded area) begins to narrow or "flatten," it indicates the market is entering a period of consolidation. During this time, price is contained within the green (High) and red (Low) lines.
2. Trading Breakouts
The primary signal occurs when a Breakout Triangle appears:
Green Triangle Up: Price has closed above the window's resistance. Look for long entries or a continuation of bullish momentum.
Red Triangle Down: Price has closed below the window's support. Look for short entries or a continuation of bearish momentum.
3. Support & Resistance Rejections
The yellow diamond Peak Markers show you where the market has previously struggled to move further. If the price approaches these levels again without a breakout signal, they can serve as high-probability areas for mean-reversion trades (trading back toward the center of the window).
4. Customizing Your Strategy
Scalping: Lower the Lookback Duration (e.g., 1.5 hours) to catch micro-breakouts.
Swing/Intraday: Keep the default 4.5 hours or increase it to 8+ hours to capture major session ranges (like the London or New York opens).
Settings Overview
Lookback Duration: Set the "width" of your window in hours.
Window Area Fill: Customize the color and transparency of the range background.
Line Customization: Adjust the thickness and style (Solid/Dashed/Dotted) of the boundary lines.
Breakout Markers: Toggle the visibility of the triangles and diamonds to keep your chart clean.
Williams Fractal MA Pullback Strategy (1.5 RR) - BY DANISHOverview
This strategy is a price action and moving average-based scalping strategy designed for low timeframes (1m, 5m, 15m). It combines trend alignment with pullbacks to key moving averages and uses Williams Fractals as entry triggers.
It aims to catch high-probability scalping trades in the direction of the prevailing trend while keeping strict risk management with a 1.5:1 risk-to-reward ratio.
Indicators Used
Three Simple Moving Averages (SMA):
Fast SMA: 20 periods (Green)
Medium SMA: 50 periods (Yellow)
Slow SMA: 100 periods (Red)
Williams Fractals (Period 2):
Identifies short-term local highs (red) and lows (green) for potential reversal or continuation setups.
Trend Rules
Bullish Trend (Long Setup):
Fast SMA (20) > Medium SMA (50) > Slow SMA (100)
Moving averages must not be crossing
Bearish Trend (Short Setup):
Slow SMA (100) > Medium SMA (50) > Fast SMA (20)
Moving averages must not be crossing
This ensures trades are only taken in the direction of the prevailing trend.
Entry Rules
Long Entry (Buy):
Price pulls back to either the 20 SMA (fast) or 50 SMA (medium) without closing below the 100 SMA (slow).
A green Williams Fractal forms after the pullback.
Confirm all trend alignment rules (20>50>100).
Enter a long position at the close of the candle that confirms the fractal.
Short Entry (Sell):
Price pulls back to either the 20 SMA (fast) or 50 SMA (medium) without closing above the 100 SMA (slow).
A red Williams Fractal forms after the pullback.
Confirm all trend alignment rules (100>50>20).
Enter a short position at the close of the candle that confirms the fractal.
Risk Management & Stop Loss
Long Trades:
If price stayed above 50 SMA during pullback → SL is just below 50 SMA
If price dipped below 50 SMA but stayed above 100 SMA → SL is just below 100 SMA
Short Trades:
If price stayed below 50 SMA during pullback → SL is just above 50 SMA
If price rose above 50 SMA but stayed below 100 SMA → SL is just above 100 SMA
Take Profit (TP)
Fixed 1.5 Risk-to-Reward ratio
TP = Risk × 1.5
This ensures each trade has a positive expectancy and follows consistent risk-reward management.
Additional Rules
Fractals Confirmation:
The strategy waits for 2 bars to close before confirming the fractal signal to avoid repainting.
No trades are taken if the price violates the 100-period SMA during the pullback.
Designed for scalping on low timeframes: 1m, 5m, or 15m charts.
Visuals on Chart
SMA Lines:
20 SMA (Green)
50 SMA (Yellow)
100 SMA (Red)
Fractal Arrows:
Green fractal → potential long entry
Red fractal → potential short entry
Trade Highlights: Strategy plots entries and exit levels automatically with stop loss and take profit.
How to Use
Add the script to a 1m, 5m, or 15m chart.
Enable the strategy tester to see backtesting results.
Follow the trend alignment rules strictly for high-probability scalping trades.
Optionally, combine with volume filters or market structure analysis for better performance.
Benefits
Trades only in aligned trend direction, avoiding counter-trend traps.
Pullback + fractal logic provides high-probability entries.
Risk-to-reward of 1.5:1 ensures good risk management.
Avoids fractal repainting by waiting for candle close.
Ideal Conditions
Works best on volatile assets like crypto or forex pairs with clear trending moves.
Best applied to liquid markets with tight spreads for scalping.
✅ Summary:
Trend-aligned scalping strategy
Pullback to MA + fractal confirmation
Fixed 1.5 RR risk management
Works on low timeframes (1m, 5m, 15m)
Clean visual signals with SMMAs and fractals
Synthetic Renko Overlay + Instant Expansion Alert✔ Builds Renko bricks internally
✔ Overlays them on ANY chart (3m recommended)
✔ Detects sudden aggressive brick growth
✔ Fires alert on the FIRST push
✔ Works for NQ / ES / BTC / any market
Google Trends: Keyword "Altcoin" (Cryptollica)Google Trends: Keyword "Altcoin"
2013-2026 Google Trend
CRYPTOLLICA
ICT 1st Pres. FVGs & RTH Open Gaps version 13/01/2026
ICT 1st Pres. FVGs & RTH Open Gaps
By Timo Haapsaari (@hqtimppa) based on ICT (Inner Circle Trader / Michael J.
Huddleston) teachings.
This indicator identifies and displays:
• First Presented Fair Value Gaps (FVGs) after Midnight Open (00:00 NY)
• First Presented FVGs after NY Open (09:30 NY)
• Regular Trading Hours (RTH) Opening Gaps (16:14 close vs 09:30 open)
All detections are based on 1-minute data for accuracy across any timeframe.
Special thanks to cephxs (https:x.com/dyk_ceph) for inspiration on settings
structure and visual appearance.
Happy trading! 📈
eBacktesting - Learning: PD ArrayseBacktesting - Learning: PD Arrays helps you practice one of the most important “Smart Money” ideas: price tends to react from specific delivery areas (PD Arrays) like Imbalances (FVGs), Order Blocks, and Breakers.
Use this to train your eyes to:
- Spot where an imbalance/OB is created (often after displacement)
- Wait for price to return into that area
- Study the reaction (hold, reject, or slice through) and what that implies next
These indicators are built to pair perfectly with the eBacktesting extension, where traders can practice these concepts step-by-step. Backtesting concepts visually like this is one of the fastest ways to learn, build confidence, and improve trading performance.
Educational use only. Not financial advice.
Daily Upside LinePlots an intraday upside line.
Uses proprietary breakout score logic to show when intraday setups are ripe for continuation.
Finds the average of these lines to plot the upside line
VWAP x EMA9 Crossover (FLIP BUY/SELL)Another simple script, please use as needed and provide any feedback back or recommendations
SMC Alpha Engine [PhenLabs]📊 SMC Alpha Engine
Version: PineScript™ v6
📌 Description
The SMC Alpha Engine is a comprehensive Smart Money Concepts indicator that automates institutional trading pattern recognition. Built for traders who understand that confluence is king, this indicator stacks multiple SMC elements together and scores them in real-time, allowing you to focus exclusively on high-probability setups.
Rather than manually tracking HTF bias, market structure, liquidity levels, order blocks, and fair value gaps separately, the SMC Alpha Engine consolidates everything into a unified scoring system. When enough factors align, you get a signal. When they don’t, you wait. This systematic approach removes emotion and subjectivity from SMC trading.
The indicator is designed around one core principle: only trade when the probabilities are stacked in your favor. By requiring multiple confluence factors before generating signals, it filters out the noise and keeps you focused on setups that institutional traders actually care about.
🚀 Points of Innovation
Automated confluence scoring system that evaluates 6 distinct SMC factors in real-time
HTF-to-LTF bias alignment ensuring trades flow with institutional direction
Intelligent liquidity sweep detection using wick-ratio analysis for confirmation
ATR-based FVG quality filtering that eliminates noise and shows only significant imbalances
Anti-spam signal logic preventing overtrading during volatile market conditions
Session-aware killzone integration timing entries with institutional activity windows
🔧 Core Components
HTF Bias Engine: Analyzes higher timeframe swing structure to establish directional bias using pivot high/low comparisons
Market Structure Module: Detects BOS (Break of Structure) and CHoCH (Change of Character) with real-time confirmation
Premium/Discount Calculator: Dynamically maps price zones relative to recent swing range equilibrium
Liquidity Tracker: Monitors swing points as liquidity targets and identifies sweep events with rejection confirmation
POI Detector: Identifies valid Order Blocks with displacement requirements and Fair Value Gaps with ATR filtering
Confluence Scorer: Aggregates all factors into bull/bear scores displayed on real-time dashboard
🔥 Key Features
Multi-timeframe analysis combining HTF directional bias with LTF precision entries
Customizable confluence threshold from 1 (low filter) to 5 (sniper mode)
Three killzone sessions: London (02:00-05:00), NY AM (08:30-11:00), NY PM (13:30-16:00)
Flexible mitigation options for OBs and FVGs: Wick, Close, 50%, or None
Visual structure labeling for BOS and CHoCH events on chart
Real-time info dashboard showing all current market conditions and scores
Built-in alert conditions for BOS, liquidity sweeps, and high-confluence signals
🎨 Visualization
Premium Zone: Red-tinted box above equilibrium indicating sell-side interest areas
Discount Zone: Green-tinted box below equilibrium indicating buy-side interest areas
Equilibrium Line: Dotted gray line marking the 50% level of current range
Order Blocks: Color-coded boxes (green for bullish, red for bearish) showing institutional candles
Fair Value Gaps: Teal boxes for bullish FVGs, maroon boxes for bearish FVGs
Killzone Backgrounds: Blue (London), Orange (NY AM), Purple (NY PM) session highlighting
Info Table: Top-right dashboard displaying HTF bias, LTF trend, zone, killzone status, and scores
📖 Usage Guidelines
HTF Settings
HTF Timeframe - Default: 60 - Controls higher timeframe for directional bias
HTF Swing Length - Default: 10, Range: 3+ - Determines pivot sensitivity for HTF trend
Market Structure Settings
LTF Swing Length - Default: 3, Range: 1-10 - Controls swing detection sensitivity
Show BOS/CHoCH - Default: Off - Toggles structure labels on chart
Show Strong/Weak Points - Default: Off - Displays swing point classifications
POI Settings
Show Valid Order Blocks - Default: Off - Displays OBs that caused displacement
Show Unmitigated FVGs - Default: On - Shows active fair value gaps
Filter FVG by ATR - Default: On - Only shows FVGs larger than 0.5x ATR
OB Mitigation Type - Options: Wick, Close, None - Determines when OBs are invalidated
FVG Mitigation Type - Options: Wick, Close, 50%, None - Determines when FVGs are filled
Confluence Settings
Minimum Score for Signal - Default: 4, Range: 1-5 - Required confluence level for entries
Show Entry Signals - Default: On - Toggles LONG/SHORT labels on chart
✅ Best Use Cases
Trend continuation trades during active killzone sessions with HTF alignment
Discount zone entries on bullish HTF bias with recent liquidity sweep below
Premium zone shorts on bearish HTF bias after liquidity grab above recent highs
Reversal identification following CHoCH with POI confluence in optimal zone
Filtering existing strategy signals by requiring minimum confluence score
⚠️ Limitations
HTF bias detection requires sufficient price history for accurate pivot identification
Liquidity sweep detection depends on wick-ratio settings and may miss some events
Order blocks require displacement confirmation which may exclude some valid zones
Confluence scoring is probabilistic and does not guarantee profitable outcomes
Killzone times are based on EST/EDT and require timezone adjustment for other regions
Signal spam prevention may delay valid signals by up to 10 bars after previous signal
💡 What Makes This Unique
Unified SMC Framework: Combines all major SMC concepts into one cohesive indicator rather than requiring multiple tools
Objective Scoring System: Removes subjectivity by quantifying confluence into measurable scores
Institutional Timing Integration: Built-in killzone awareness ensures signals align with high-volume sessions
Quality Filtering: ATR-based FVG filtering and displacement-required OBs eliminate low-quality setups
Anti-Overtrading Logic: Smart signal spacing prevents emotional trading during choppy conditions
🔬 How It Works
Step 1: HTF Bias Determination
Analyzes higher timeframe pivot highs and lows
Compares consecutive pivots to identify HH/HL (bullish) or LH/LL (bearish) sequences
Establishes directional filter that all signals must respect
Step 2: LTF Structure Mapping
Detects swing points on execution timeframe
Identifies BOS when price closes beyond confirmed swing level
Recognizes CHoCH when structure break occurs against current trend
Step 3: Confluence Calculation
Awards +1 for HTF bias alignment
Awards +1 for active killzone timing
Awards +1 for optimal zone positioning (discount for longs, premium for shorts)
Awards +1 for price at unmitigated POI
Awards +1 for recent liquidity sweep in trade direction
Awards +1 for recent supportive structure break
Step 4: Signal Generation
Compares total score against user-defined minimum threshold
Requires candle confirmation (bullish close for longs, bearish close for shorts)
Applies 10-bar spacing filter to prevent signal clustering
💡 Note:
This indicator is designed for traders already familiar with Smart Money Concepts. While it automates detection and scoring, understanding why each factor matters will significantly improve your ability to filter signals and manage trades effectively. Use the minimum confluence setting to match your risk tolerance, higher values mean fewer but higher-quality signals.
Heikin Ashi Swing Setup DailyTFHeikin Ashi Swing Setup is a trend-following swing trading indicator designed for Daily timeframe traders.
This indicator combines:
Heikin Ashi candle strength
EMA-based trend confirmation
RSI momentum filter
ATR-based price expansion logic
The goal is to capture strong directional swing moves while avoiding sideways and noisy markets.
BUY Signal Logic
Strong bullish Heikin Ashi candle (no lower wick)
Price above EMA 50
EMA slope upward (trend confirmation)
RSI between 50–70
Price sufficiently away from EMA (ATR filter)
SELL Signal Logic
Strong bearish Heikin Ashi candle (no upper wick)
Price below EMA 50
EMA slope downward
RSI between 30–50
ATR-based price expansion confirmed
Recommended Usage
Timeframe: Daily
Markets: Stocks & Indices
Holding Period: 5–20 trading days
Best used with:
Weekly trend analysis
Supply & Demand zones
Previous swing highs/lows
LANZ Origins🔷 LANZ Origins – Multi-Framework Liquidity, Structure & Risk Management Overlay
LANZ Origins is a multi-tool TradingView indicator designed to provide session context, liquidity mapping, imbalance visualization, higher-timeframe candle projection, and a fixed-SL lot size calculator.
It includes:
Risk & Lot Size Panel (up to 5 accounts):
Calculates lot size using a fixed Stop Loss in pips and a standard pip value assumption ($10 per pip per 1.0 lot). For each enabled account, it displays the estimated lots and dollar risk based on account capital and risk %. The panel is fully customizable (colors, text size, visibility).
Session Backgrounds (New York time):
Colors the chart by time blocks: Day Division, No Action Zone, Killzone, and Hold Session, helping traders visually segment the trading day.
Asian Range Liquidity Box (19:00–02:00 NY):
Draws a dynamic box tracking the session high/low, plus an optional midline (50%) with optional label. The script correctly handles sessions that cross midnight.
Imbalance Detector:
Detects and draws Fair Value Gaps (FVG), Opening Gaps (OG), and Volume Imbalances (VI) with adjustable filters (min width by points/%/ATR and extension). Optionally shows a dashboard summarizing frequency and fill rate.
ICT HTF Candles Overlay:
Projects selected higher-timeframe candles to the right of price (e.g., 30m enabled by default), with optional labels, remaining time, trace lines (O/C/H/L) and internal imbalance highlights for those HTF candle sets.
30m ZigZag projected to all timeframes:
Computes ZigZag pivots from the 30-minute timeframe and draws them on any chart timeframe, including an optional live extending leg.
LANZ Origins does not execute trades and does not generate buy/sell entries. It is a visual framework for analysis, context, and risk planning.
MES ORB Fakeout Alert - No RSIVWAP Integration: In 2025/2026 trading, price action often "reverses" to the VWAP. If the MES breaks the ORB High but stays below the VWAP, it’s a high-probability fakeout. This script catches that.
Relative Volume (Effort vs. Result): Instead of RSI, it looks at the Volume SMA. If the market tries to break a level with less volume than the 20-candle average, the "effort" isn't there, and the "result" (the breakout) is likely a lie.
Automatic Session Handling: It specifically looks at America/New_York time to ensure the 9:30 AM open is captured correctly regardless of where you are located.
Trend ComboI have just combined Vwap with EMA's, along with a Parabolic Sar to help with timing potential entries and exits. Always use a stop loss.
QUARTERS THEORY XAUUSDThe “Quarter Theory XAUUSD” indicator on TradingView is designed to automatically plot horizontal price levels in $25 increments on your chart, providing traders with a clear visual representation of key psychological and technical price points. These levels are particularly useful for instruments like XAU/USD, where price often reacts to round numbers, forming support and resistance zones that can be leveraged for both scalping and swing trading strategies. By showing all $25 increments as horizontal white lines, the indicator ensures that traders can quickly identify potential entry and exit points, without the need for manual drawing or repeated calculations.
The indicator works by calculating the nearest $25 multiple relative to the current market price and then drawing horizontal lines across the chart for all increments within a defined range. This range can be customized to suit the instrument being traded; for example, for gold (XAU/USD), a typical range might extend from 0 to 5000, covering all practical price levels that could be relevant in both high and low market conditions. By using Pine Script’s persistent variables, the indicator efficiently creates these lines only once at the start of the chart, avoiding unnecessary resource usage and preventing TradingView from slowing down, which can happen if lines are redrawn every bar.
From a trading perspective, these levels serve multiple purposes. For scalpers, the $25 increments act as micro support and resistance points, helping to determine short-term price reactions and potential breakout zones. Scalpers can use these levels to enter positions with tight stop-loss orders just beyond a level and take profits near the next $25 increment, which aligns with common price behavior patterns in highly liquid instruments. For swing traders, the same levels provide broader context, allowing them to identify areas where price might pause or reverse over several days. Swing traders can use these levels to align trades with the prevailing trend, particularly when combined with other indicators such as moving averages or trendlines.
Another key advantage of the Quarterly Levels indicator is its simplicity and visual clarity. By plotting lines in a uniform white color and extending them to the right, the chart remains clean and easy to read, allowing traders to focus on price action and market dynamics rather than cluttered technical drawings. This visual consistency also helps in backtesting and strategy development, as traders can quickly see how price interacts with each level over time. Additionally, the use of round-number increments leverages the psychological tendencies of market participants, as many traders place stop orders or entry points near these levels, making them natural zones of interest.
Overall, the Quarterly Levels indicator combines efficiency, clarity, and practical trading utility into a single tool. It streamlines chart analysis, highlights meaningful price zones, and supports both scalping and swing trading approaches, making it an essential addition to a trader’s toolkit. By understanding how to integrate these levels into trading strategies, traders can make more informed decisions, manage risk effectively, and identify high-probability trade setups across various market conditions.
CausalityLib - granger casuality and transfer entropy helpersLibrary "CausalityLib"
Causality Analysis Library - Transfer Entropy, Granger Causality, and Causality Filtering
f_shannon_entropy(data, num_bins)
Calculate Shannon entropy of data distribution
Parameters:
data (array) : Array of continuous values
num_bins (int) : Number of bins for discretization
Returns: Entropy value (higher = more randomness)
f_calculate_te_score(primary_arr, ticker_arr, window, bins, lag)
Calculate Transfer Entropy from source to target
Parameters:
primary_arr (array) : Target series (e.g., primary ticker returns)
ticker_arr (array) : Source series (e.g., basket ticker returns)
window (int) : Window size for TE calculation
bins (int) : Number of bins for discretization
lag (int) : Lag for source series
Returns: - TE score and direction (-1 or 1)
f_correlation_at_lag(primary_arr, ticker_arr, lag, window, correlation_method)
Calculate Pearson correlation at specific lag
Parameters:
primary_arr (array) : Primary series
ticker_arr (array) : Ticker series
lag (int) : Lag value (positive = ticker lags primary)
window (int) : Window size for correlation
correlation_method (string) : Correlation method to use ("Pearson", "Spearman", "Kendall")
Returns: Correlation coefficient
f_calculate_granger_score(primary_arr, ticker_arr, window, max_lag, correlation_method)
Calculate Granger causality score with lag testing
Parameters:
primary_arr (array) : Primary series
ticker_arr (array) : Ticker series
window (int) : Window size for correlation
max_lag (int) : Maximum lag to test
correlation_method (string) : Correlation method to use
Returns: - Granger score and directional beta
f_partial_correlation(x_arr, y_arr, z_arr, window)
Calculate partial correlation between X and Y controlling for Z
Parameters:
x_arr (array) : First series
y_arr (array) : Second series
z_arr (array) : Mediator series
window (int) : Window size for correlation
Returns: Partial correlation coefficient
f_pcmci_filter_score(raw_score, primary_arr, ticker_arr, mediator1, mediator2, mediator3, mediator4, window)
PCMCI Filter: Adjust Granger score by checking for mediating tickers
Parameters:
raw_score (float) : Original Granger score
primary_arr (array) : Primary series
ticker_arr (array) : Ticker series
mediator1 (array) : First potential mediator series
mediator2 (array) : Second potential mediator series
mediator3 (array) : Third potential mediator series
mediator4 (array) : Fourth potential mediator series
window (int) : Window size for correlation
Returns: Filtered score (reduced if causality is indirect/spurious)
TrendlinesTrendline S&R
This indicator is an automated technical analysis tool designed to identify the most relevant Support and Resistance (S&R) zones based on market pivots. Unlike standard pivot indicators that clutter the chart with historic lines, this script uses a "Closest-to-Price" algorithm to display only the single most relevant Support (Green) and Resistance (Red) zone currently interacting with price action.
It solves common frustrations with automated trendlines—specifically the issue of lines disappearing immediately upon a breakout—by introducing a Stability Buffer.
Key Features & Importance
The script scans hundreds of potential trendlines but only draws the one geographically closest to the current price.
Importance: This ensures you are looking at the zone that matters right now. It filters out distant or irrelevant historic lines, keeping your chart clean and focused on immediate price action.
🛡️ 5-Bar Stability Buffer (Anti-Flicker)
Feature: A hardcoded 5-bar "memory" prevents the zone from disappearing the moment price touches or breaks it.
Importance: This is critical for trading breakouts. It allows you to see the zone persist while price breaches it, helping you distinguish between a true breakout, a fakeout, or a retest, without the reference level vanishing from your screen.
🔍 Dynamic Pivot Filtering
Feature: Uses a restricted Pivot Strength (5-15) and Minimum Confirmation (2-8 touches).
Importance: By enforcing these limits, the indicator ignores insignificant market noise and micro-swings, ensuring that drawn zones represent structural market levels with genuine liquidity.
🔔 Integrated Alert System
Feature: Built-in alerts for "Zone Breakout" (candle close crossing the zone) and "Zone Touch" (wick entering the zone).
Importance: Allows you to set the indicator and walk away. You will be notified instantly when price interacts with these key levels, removing the need to stare at the chart.
📉 Adaptive Tolerance (Fixed ATR)
Feature: Uses a fixed ATR multiplier internally to determine the width of the zone.
Importance: This automatically adjusts the thickness of the support/resistance zone based on the asset's volatility.
Settings Guide
Bars to Apply: How far back in history the script looks for pivots (Default: 300).
Pivot Source: Choose between calculating from "High/Low" (wicks) or "Close" (bodies).
Pivot Strength: The number of bars required on each side to define a swing point (Range: 5–15).
Min Pivot Confirmation: The minimum number of touches required to validate a trendline (Range: 2–8).
How to Use
Add the indicator to your chart.
Adjust Pivot Strength if you want to catch smaller swings (lower number) or major structures (higher number).
Set an alert in TradingView by clicking the "Clock" icon, selecting this indicator, and choosing "Zone Breakout" or "Zone Touch".
Google Trends: ETH (Cryptollica)Google Trends: ETH (Cryptollica)
Google Trends data since 2016, Keyword: ETH
EMA + VWAP Strategy# EMA + VWAP Crossover Strategy
## Overview
This is a trend-following intraday strategy that combines fast and slow EMAs with VWAP to identify high-probability entries. It's designed primarily for 5-15 minute charts and includes a smart filter to avoid trading when VWAP is ranging flat.
## How It Works
### Core Concept
The strategy uses three main components working together:
- **Fast EMA (9)** - Responds quickly to price changes and generates entry signals
- **Slow EMA (21)** - Acts as a trend filter to keep you on the right side of the market
- **VWAP** - Serves as a dynamic support/resistance level and the primary trigger for entries
### Entry Rules
**Long Entry:**
- EMA 9 crosses above VWAP (bullish momentum)
- EMA 9 is above EMA 21 (confirming uptrend)
- VWAP has a clear directional slope (not flat/ranging)
- Only during weekdays (Monday-Friday)
**Short Entry:**
- EMA 9 crosses below VWAP (bearish momentum)
- EMA 9 is below EMA 21 (confirming downtrend)
- VWAP has a clear directional slope (not flat/ranging)
- Only during weekdays (Monday-Friday)
### The VWAP Flat Filter
One of the key features is the VWAP slope filter. When VWAP is moving sideways (flat), it indicates the market is likely consolidating or ranging. The strategy skips these periods because crossover signals tend to be less reliable in choppy conditions. You'll see small gray diamonds at the top of the chart when VWAP is considered flat.
### Risk Management
The strategy uses a proper risk-reward approach with multiple stop loss options:
1. **ATR-Based (Recommended)** - Adapts to market volatility automatically. Default is 1.5x ATR(14), which gives your trades room to breathe while protecting capital.
2. **Swing Low/High** - Places stops at recent price structure points for a more technical approach.
3. **Slow EMA** - Uses the trend-defining EMA as your stop level, good for trend-following with wider stops.
4. **Fixed Percentage** - Simple percentage-based stops if you prefer consistency.
Take profits are automatically calculated based on your risk-reward ratio (default 2:1), meaning if you risk $100, you're aiming to make $200.
### Weekday Trading Filter
The strategy includes an option to trade only Monday through Friday. This is particularly useful for crypto markets where weekend liquidity can be thin and price action more erratic. You can toggle this on/off to test whether avoiding weekends improves your results.
### Visual Features
- **Color-coded background** - Green tint when EMA 9 is above EMA 21 (bullish bias), red tint when below (bearish bias)
- **ATR bands** - Dotted lines showing where stops would be placed (when using ATR stops)
- **Active trade levels** - Solid red line for your stop loss, green line for your take profit when you're in a position
- **Weekend highlighting** - Gray background on Saturdays and Sundays when weekday filter is active
## Best Practices
**Timeframe:** Designed for 5-minute charts but can be adapted to other intraday timeframes.
**Markets:** Works on any liquid market - stocks, forex, crypto, futures. Just make sure there's enough volume.
**Position Sizing:** The strategy uses percentage of equity by default. Adjust based on your risk tolerance.
**Backtesting Tips:**
- Test with and without the weekday filter to see which performs better on your instrument
- Try different ATR multipliers (1.0-2.5) to find the sweet spot between stop-outs and letting profits run
- Experiment with risk-reward ratios (1.5R, 2R, 3R) to optimize for your win rate
**What to Watch:**
- Win rate vs. profit factor balance
- How many trades are filtered out by the VWAP flat condition
- Performance difference between weekdays and weekends
- Whether the trend filter (EMA 21) is keeping you out of bad trades
## Parameters You Can Adjust
- Fast EMA length (default 9)
- Slow EMA length (default 21)
- VWAP flat threshold (default 0.01%)
- Stop loss type and parameters
- Risk-reward ratio
- Weekday trading on/off
- ATR length and multiplier
## Disclaimer
This strategy is for educational purposes. Past performance doesn't guarantee future results. Always test thoroughly on historical data and paper trade before risking real money. Use proper position sizing and never risk more than you can afford to lose.
---
*Built with Pine Script v5 for TradingView*






















