Adaptive 2-Pole Trend Bands [supfabio]Adaptive 2-Pole Trend Bands is a volatility-aware trend filtering indicator designed to identify the dominant market direction while providing dynamic reference zones around price.
Instead of relying on traditional moving averages, this indicator uses a two-pole digital filter to smooth price action while maintaining responsiveness. Around this central trend line, a multi-band structure based on ATR is applied to help traders evaluate pullbacks, extensions, and potential exhaustion areas within a trend.
Core Concept
The indicator is built around three key ideas:
Digital Trend Filtering
Volatility-Adjusted Bands
Trend Persistence Measurement
These components work together to separate meaningful price movement from noise and to provide context for how far price has moved relative to recent volatility.
Two-Pole Trend Filter
At its core, the indicator uses a two-pole smoothing filter, which produces a cleaner trend curve than common moving averages.
Compared to standard averages, this approach:
Reduces market noise
Produces smoother transitions
Responds faster to genuine trend changes
Avoids excessive lag in trending markets
The result is a trend line that represents the structural direction of price, rather than short-term fluctuations.
Adaptive Multi-Band System
Around the central trend filter, the indicator plots four independent volatility-based bands, each derived from the Average True Range (ATR).
Each band represents a different degree of price extension:
Band 1: Shallow pullbacks and minor reactions
Band 2: Moderate extensions within a trend
Band 3: Strong directional moves
Band 4: Extreme extensions relative to recent volatility
Because the bands are ATR-based, they automatically adapt to changing market conditions, expanding during high volatility and contracting during calmer periods.
This makes the indicator suitable for both slow and fast markets without manual recalibration.
Trend State Detection
The color of the central filter dynamically reflects trend persistence, not just direction:
Sustained upward movement highlights bullish conditions
Sustained downward movement highlights bearish conditions
Transitional phases are visually distinct, helping identify regime changes
This logic is based on how long price has maintained directional behavior, reducing sensitivity to isolated candles or short-lived spikes.
Practical Applications
This indicator can be used as:
A trend filter for discretionary or systematic strategies
A context tool to evaluate pullbacks versus overextension
A risk reference to avoid entries in extreme price zones
A confirmation layer when combined with price action or momentum tools
It performs consistently across different asset classes, including futures, cryptocurrencies, forex, indices, and equities.
Configuration
Key parameters such as filter length, damping factor, and band multipliers are fully configurable, allowing traders to adapt the indicator to different timeframes and trading styles.
Important Notes
This indicator does not predict future price movement
It does not generate guaranteed buy or sell signals
Best results are achieved when used in combination with sound risk management and additional confirmation tools
Past behavior does not imply future performance
Disclaimer
This indicator is provided for educational and analytical purposes only and should not be considered financial advice.
Se quiser, posso:
Criar uma versão resumida para a primeira linha da publicação
Ajustar o texto para um tom mais técnico ou mais comercial
Traduzir para português mantendo o inglês como idioma principal
Revisar o título para SEO dentro da Biblioteca Pública
Göstergeler ve stratejiler
Prince Break and RetestHow to use the new visuals (super simple)
When the script prints RETEST BUY or RETEST SELL, you will instantly see:
ENTRY line (lime)
SL line (orange)
TP1 line (teal)
TP2 line (purple)
Entry Mode options
Close = enter at the close of the retest signal candle (simplest)
Box Edge = enter at the box edge (more “limit-order-ish”)
For your style (break + retest), start with Close.
Golden hour 1130 1230 Session LinesGolden Hour 11:30–12:30 Session Lines
Overview :
Calculate the session high and low between 11:30 AM and 12:30 PM and mark the lines.
Trading Rule
Once the price breaks either side (high or low), it will continue to move further in that direction.
Session Time : 11:30 AM – 12:30 PM
Key Levels : Session High & Session Low
Strategy : Breakout continuation in the direction of the break
CODEX OB + BBMA V1CODEX OB + BBMA is a multi-purpose Smart Money Concepts (SMC) indicator that automatically detects and visualizes key institutional trading elements such as Order Blocks, Fair Value Gaps, Rejection Blocks, Break of Structure, Pivots, High Volume Bars, and several qualitative SMC signals.
In addition to SMC tools, this indicator also incorporates multi-timeframe BBMA logic, allowing traders to view higher-timeframe momentum, trend direction, and volatility envelopes directly from the current chart. This makes it easier to align SMC setups—like OB, FVG, and BOS—with BBMA structure such as MA touches, re-entry zones, extreme candles, and volatility expansions.
This combination helps traders identify institutional footprints, multi-timeframe confluence, and displacement-based setups with high clarity.
RSI with Multi-Level OB/OS (65/70 & 35/30)With a revised 65 and 35 level for higher probability of winning
NYSE Open Close Session Map by o0psiNYSE Open Close Session Map by o0psi
This indicator highlights the regular US cash session window (default 09:30–16:00 New York time) and makes the key session bars obvious on the chart.
What it shows
A marker on the session OPEN bar
A marker on the session CLOSE bar (last in-session candle)
Optional background highlight for the full session window
Optional labels for the session high and session low bars (based on intraday price during the session)
How it works
The script detects bars inside the selected session window (New York timezone). It anchors OPEN on the first in-session bar, updates the session high/low while the session is active, then anchors CLOSE on the final in-session bar and labels the high/low bars where they occurred.
Notes
Session range precision depends on chart timeframe (lower timeframes capture extremes more precisely).
This is a charting/visualization tool and does not provide trading advice.
ORB + FVG A+ PRO (All-in-One) [QQQ]Configurable ORB + FVG + filters (VIX, ORB range, relative volume) + A+ PRO (retest at the FVG edge + rejection) + anti-fakeout + orange reminder “CONFIRM POC/HVN (Volume Profile)” right when the A+ signal appears
Regime EngineRegime Engine
Overview
Regime Engine is a market regime detection system that classifies price action into bullish, bearish, or neutral states using weighted exponential moving average analysis. Once the regime is identified, the indicator generates buy and sell signals based on Donchian channel breakouts, filtered by ADX trend strength and RSI momentum conditions.
The Money Line
The core of regime detection is the Money Line, a weighted combination of two exponential moving averages. By default, the short EMA (8 periods) receives 60% weight while the long EMA (24 periods) receives 40% weight. This weighting allows the Money Line to be more responsive than a simple long-period average while remaining smoother than a short-period average alone.
The Money Line changes color based on the current regime: green for bullish, red for bearish, and yellow for neutral. This provides immediate visual feedback about the market state.
Regime Classification
The indicator determines market regime by comparing the relative positions of the short and long EMAs while also considering RSI levels to avoid classifying overbought or oversold conditions as trend states.
Bullish regime is identified when the short EMA is above the long EMA and RSI is not in overbought territory. This combination suggests upward momentum that is not yet exhausted.
Bearish regime is identified when the short EMA is below the long EMA and RSI is not in oversold territory. This indicates downward momentum with room to continue.
Neutral regime applies when the EMAs are close together or RSI conditions prevent trend classification. The indicator provides two optional methods for enhanced neutral detection.
Neutral Zone Detection
Markets often transition through periods where trend direction is unclear. The indicator offers two complementary methods for detecting these neutral zones.
The slope method examines the rate of change of the Money Line relative to ATR. When the Money Line is moving slowly (slope below a tolerance threshold), the market is classified as neutral regardless of EMA positioning.
The EMA distance method calculates the percentage distance between the short and long EMAs. When they are within a specified percentage of each other, the EMAs are considered too close to reliably indicate direction.
Either or both methods can be enabled, and if either triggers, the regime is classified as neutral.
Donchian Channel Signals
Buy and sell signals are generated when price interacts with the Donchian channel boundaries. The Donchian channel plots the highest high and lowest low over a lookback period (default 20 bars), offset by one bar to prevent repainting.
Buy signals trigger when price touches or breaks below the lower Donchian band, indicating a potential support level. Sell signals trigger when price touches or breaks above the upper Donchian band, indicating potential resistance.
An optional setting requires the close to confirm the break rather than just the wick, providing more conservative signal generation.
ADX Trend Strength Filter
The Average Directional Index filters signals to ensure they occur during trending conditions. When enabled, signals only fire if ADX exceeds the threshold (default 24), confirming that the market has sufficient directional momentum for breakout trades to succeed.
The indicator uses Wilder's original smoothing method for ADX calculation, providing the traditional interpretation of trend strength values.
RSI Momentum Filter
RSI provides additional signal filtering to ensure entries occur at favorable momentum levels. Buy signals require RSI to be at or below the oversold threshold (default 30), indicating potential exhaustion of selling pressure. Sell signals require RSI to be at or above the overbought threshold (default 70), suggesting exhaustion of buying pressure.
These filters can be disabled for traders who prefer unfiltered Donchian breakout signals.
BBWP Volatility Monitoring
Bollinger Band Width Percentile measures current volatility relative to its historical range. The indicator calculates BB width and ranks it against the specified lookback period (default 252 bars, approximately one trading year).
BBWP above 70% indicates elevated volatility, which may signal trend acceleration or potential reversals. BBWP below 30% indicates compressed volatility, often preceding significant moves. The information panel displays the current BBWP reading with color coding to highlight these conditions.
Signal Cooldown
To prevent signal clustering during extended breakout periods, a configurable cooldown prevents new signals of the same type for a specified number of bars after each signal. This ensures each signal represents a distinct trading opportunity.
Visual Components
The Donchian channel can display shaded bands between the upper and lower boundaries. The shading color reflects the current regime: green for bullish, magenta for bearish, and blue for neutral. This provides at-a-glance context for where price is trading within its recent range.
An ADX strength bar at the bottom of the chart uses color coding: white for weak trend (ADX below 15), orange for ranging (ADX 15-24), and blue for trending (ADX above 24). This matches the trend strength display in the information panel.
Price labels appear at signal locations showing the signal type and entry price. Labels are automatically cleaned up after reaching a configurable history limit to maintain chart performance.
Signal candles are highlighted in blue, making it easy to identify exactly which bars generated signals when reviewing historical performance.
Information Panel
A compact table displays key metrics: current regime bias, trend strength classification, BBWP volatility reading, RSI level, and ADX value. Each metric is color-coded to highlight favorable or unfavorable conditions.
The panel can be positioned at any corner or middle edge of the chart. An alternative label-based display anchored to the chart is also available for those who prefer that format.
Trend Persistence Option
By default, the regime is recalculated on every bar. An optional persistence mode changes this behavior so that the regime only changes on EMA crossovers. This reduces regime flipping during choppy conditions but may delay regime recognition during gradual trend changes.
How to Use
Monitor the Money Line color and information panel for current regime. In bullish regimes, focus on buy signals at the lower Donchian band as potential pullback entries. In bearish regimes, focus on sell signals at the upper band as potential short entries or exit points.
Use the ADX strength indicator to gauge signal reliability. Signals during trending conditions (blue ADX bar) have historically higher success rates than signals during ranging conditions (orange bar) or weak trends (white bar).
Watch BBWP for volatility context. Low BBWP readings suggest a significant move may be developing, while high readings indicate the current move may be overextended.
The combination of regime awareness, Donchian breakout signals, and ADX/RSI filtering provides a structured approach to identifying trading opportunities across different market conditions.
Settings Guidance
The default settings work well for cryptocurrency and forex markets on intraday timeframes. For stocks or longer timeframes, consider increasing the EMA periods and Donchian lookback. The ADX threshold can be adjusted based on the typical ADX range for the traded instrument.
The RSI filter levels can be relaxed (higher oversold, lower overbought) for more signals or tightened for higher-quality but less frequent signals. The cooldown period should be adjusted based on timeframe, with shorter timeframes typically requiring longer cooldown periods.
Previous Day Week Month Highs & Lows [MHA Finverse]Previous Day Week Month Highs & Lows is a comprehensive multi-timeframe indicator that automatically plots previous period highs and lows across Daily, Weekly, Monthly, 4-Hour, and 8-Hour timeframes. Perfect for identifying key support and resistance levels that often act as magnets for price action.
How It Works
The indicator retrieves the highest high and lowest low from the previous completed period for each selected timeframe. Lines extend forward into current price action, allowing you to see when price approaches or breaks these critical levels in real-time. The indicator tracks the exact bar where each high and low occurred, ensuring accurate historical placement.
---
Key Features
Multi-Timeframe Levels:
• Current Daily, Previous Daily, 4H, 8H, Weekly, and Monthly highs/lows
• Fully customizable colors and line styles (Solid, Dashed, Dotted)
• Adjustable line width and extension length
Visual Enhancements:
• Price labels showing exact level values
• Range position percentage (distance from high/low)
• Optional period boxes highlighting timeframe ranges
• Day and date labels for reference
Trading Tools:
• Breakout markers when price crosses key levels
• Touch count tracking (how many times price tested each level)
• Time at level display (consolidation detection)
• Customizable thresholds for touch and time analysis
Alert System:
• Individual alerts for each timeframe: Daily High/Low Break, 4H High/Low Break, 8H High/Low Break, Weekly High/Low Break, Monthly High/Low Break
• Toggle switches to enable/disable alerts per timeframe
• Clear messages showing which level was broken and at what price
---
How to Use
Setup:
1. Enable your preferred timeframes in "Highs & Lows MTF" settings
2. Customize colors and styles to match your chart
3. Turn on visual features like price labels and range percentages
4. Set up alerts by creating specific alert conditions or using toggle switches
Trading Applications:
Breakout Trading: Watch for strong momentum when price breaks above previous highs or below previous lows
Support/Resistance: Use these levels as potential reversal points for entry/exit signals
Range Trading: Trade between previous highs and lows using the range position indicator
Stop Loss Placement: Place stops just beyond previous highs (shorts) or lows (longs)
Multiple Timeframe Confirmation: Combine timeframes for stronger signals (e.g., Daily near Weekly support)
---
Best Practices
• Use Weekly/Monthly for swing trading, Daily/4H/8H for day trading
• Combine with volume or momentum indicators for confirmation
• Multiple timeframe levels clustering together create high-probability zones
• The more touches a level has, the more significant it becomes
---
Disclaimer
This indicator is a technical analysis tool for identifying price levels based on historical data. It does not guarantee profits or predict future movements. Trading involves substantial risk. Always use proper risk management and never risk more than you can afford to lose.
Gold Sniper V21: M15 Holding MasterGold Sniper Entry (Follow Trend to enter)
My Indicator :
- Clarify the M30 in Up/Down Trend
- Only entry the trade in M1/M5 Timeframe to make a Sniper Entry.
- Indicator will show when to TP before the Trend Change
Realtime Position CalculatorRisk management is the single most important factor in trading success. This indicator automates the process of position sizing in real-time based on your account risk and a dynamic technical Stop Loss. It eliminates the need for manual calculations and helps you execute trades faster while adhering to strict risk management rules.
How it Works
The indicator visually places a Stop Loss line based on recent market structure (Highs/Lows) and instantly calculates the required position size (Contracts/Lots) to match your defined monetary risk.
1. Dynamic Stop Loss : It identifies the highest high (for Shorts) or lowest low (for Longs) over a user-defined lookback period.
2. Position Calculation : It calculates the distance between the current price and the Stop Loss level.
3. Formula : Contract Size = Risk Amount / (Distance * Point Value)
4. Actual vs. Target Risk : Because of the rounding, the script calculates and displays the Actual Risk (e.g., $95) alongside your Target Risk (e.g., $100), so you know exactly what is at stake.
Key Features
Real-time Calculation : Updates instantly as price moves.
Copy Trading Support : Includes an "Account Multiplier" setting. If you trade 10 accounts via a copy trader, set the multiplier to 10. The indicator will show the total contract size needed across all accounts.
Point Value Support : Works for Stocks/Crypto (Point Value = 1) and Futures (e.g., ES = 50, NQ = 20).
Customizable UI : Toggle specific data on/off in the label (e.g., hide price, show only contracts). Adjustable label offset to keep the chart clean.
Settings Guide
Trade Direction : Toggle between Long and Short setups. Add the indicator two times and set another for Longs and another for Shorts so you can see both direction at the same time.
Risk Amount : Your max risk in currency (e.g., $100).
Lookback : How many bars back to look for the SL pivot (e.g., 10 bars).
Point Value : Crucial for Futures. Use 1.0 for Crypto/Stocks. Use tick value/point value for futures (e.g., 50 for ES).
Account Multiplier : Multiply the position size for multiple accounts.
Label Offset : Move the information label to the right to avoid overlapping with price action.
Disclaimer
This tool is for informational and educational purposes only. Always verify calculations manually before executing trades. Past performance is not indicative of future results.
RS vs Indexes By Shashi MishraRS vs Indexes giving details about strength of the sripts against the TIDE which is indexes that you can follow , for example small cap index 100 / 250
Global M2 YoY % Change (USD) 10W-12W LEADthe base script is from @dylanleclair I modified it slightly according to the views on liquidity by professionals — average estimated lead time to price of btc, leading 10-12 weeks. liquidity and bitcoin’s price performance track pretty close and so it’s a cool tool for phase recognition, forward guidance and expectation management.
PEAD ScreenerPEAD Screener - Post-Earnings Announcement Drift Scanner
═══════════════════════════════════════════════════════════════
WHY EARNINGS ANNOUNCEMENTS CREATE OPPORTUNITY
═══════════════════════════════════════════════════════════════
The days immediately following an earnings announcement are among the noisiest periods for any stock. Within hours, the market must digest new information about a company's profits, revenue, and future outlook. Analysts scramble to update their models. Institutions rebalance positions. Retail traders react to headlines.
This chaos creates a well-documented phenomenon called Post-Earnings Announcement Drift (PEAD): stocks that beat expectations tend to keep rising, while those that miss tend to keep falling - often for weeks after the initial announcement. Academic research has confirmed this pattern persists across decades and markets.
But not every earnings surprise is equal. A company that beats estimates by 5 cents might move very differently than one that beats by 5 cents with unusually high volume, or one where both earnings AND revenue exceeded expectations. Raw numbers alone don't tell the full story.
═══════════════════════════════════════════════════════════════
HOW "STANDARDIZED UNEXPECTED" METRICS CUT THROUGH THE NOISE
═══════════════════════════════════════════════════════════════
This screener uses a statistical technique to measure how "surprising" a result truly is - not just whether it beat or missed, but how unusual that beat or miss was compared to the company's own history.
The core idea: convert raw surprises into Z-scores.
A Z-score answers the question: "How many standard deviations away from normal is this result?"
- A Z-score of 0 means the result was exactly average
- A Z-score of +2 means the result was unusually high (better than ~95% of historical results)
- A Z-score of -2 means the result was unusually low
By standardizing surprises this way, we can compare apples to apples. A small-cap biotech's $0.02 beat might actually be more significant than a mega-cap's $0.50 beat, once we account for each company's typical variability.
This screener applies this standardization to three dimensions: earnings (SUE), revenue (SURGE), and volume (SUV).
═══════════════════════════════════════════════════════════════
THE 9 SCREENING CRITERIA
═══════════════════════════════════════════════════════════════
─────────────────────────────────────────
1. SUE (Standardized Unexpected Earnings)
─────────────────────────────────────────
WHAT IT IS:
SUE measures how surprising an earnings result was, adjusted for the company's historical forecast accuracy.
Calculation: Take the earnings surprise (actual EPS minus analyst estimate), then divide by the standard deviation of past forecast errors. This uses a rolling window of the last 8 quarters by default.
Formula: SUE = (Actual EPS - Estimated EPS) / Standard Deviation of Past Errors
HOW TO INTERPRET:
- SUE > +2.0: Strongly positive surprise - earnings beat expectations by an unusually large margin. These stocks often continue drifting higher.
- SUE between 0 and +2.0: Modest positive surprise - beat expectations, but within normal range.
- SUE between -2.0 and 0: Modest negative surprise - missed expectations, but within normal range.
- SUE < -2.0: Strongly negative surprise - significant miss. These stocks often continue drifting lower.
For long positions, look for SUE values above +2.0, ideally combined with positive SURGE.
─────────────────────────────────────────
2. SURGE (Standardized Unexpected Revenue)
─────────────────────────────────────────
WHAT IT IS:
SURGE applies the same standardization technique to revenue surprises. While earnings can be manipulated through accounting choices, revenue is harder to fake - it represents actual sales.
Calculation: Take the revenue surprise (actual revenue minus analyst estimate), then divide by the standard deviation of past revenue forecast errors.
Formula: SURGE = (Actual Revenue - Estimated Revenue) / Standard Deviation of Past Errors
HOW TO INTERPRET:
- SURGE > +1.5: Strongly positive revenue surprise - the company sold significantly more than expected.
- SURGE between 0 and +1.5: Modest positive surprise.
- SURGE < 0: Revenue missed expectations.
The most powerful signals occur when BOTH SUE and SURGE are positive and elevated (ideally SUE > 2.0 AND SURGE > 1.5). This indicates the company beat on both profitability AND top-line growth - a much stronger signal than either alone.
When SUE and SURGE diverge significantly (e.g., high SUE but negative SURGE), treat with caution - the earnings beat may have come from cost-cutting rather than genuine growth.
─────────────────────────────────────────
3. SUV (Standardized Unexpected Volume)
─────────────────────────────────────────
WHAT IT IS:
SUV detects unusual trading volume after accounting for how volatile the stock is. More volatile stocks naturally have higher volume, so raw volume comparisons can be misleading.
Calculation: This uses regression analysis to model the expected relationship between price volatility and volume. The "unexpected" volume is the residual - how much actual volume deviated from what the model predicted. This residual is then standardized into a Z-score.
In plain terms: SUV asks "Given how much this stock typically moves, is today's volume unusually high or low?"
HOW TO INTERPRET:
- SUV > +2.0: Exceptionally high volume relative to the stock's volatility. This often signals institutional activity - big players moving in or out.
- SUV between +1.0 and +2.0: Elevated volume - above normal interest.
- SUV between -1.0 and +1.0: Normal volume range.
- SUV < -1.0: Unusually quiet - less activity than expected.
High SUV combined with positive price movement suggests accumulation (buying). High SUV combined with negative price movement suggests distribution (selling).
─────────────────────────────────────────
4. % From D0 Close
─────────────────────────────────────────
WHAT IT IS:
This measures how far the current price has moved from the closing price on its initial earnings reaction day (D0). The "reaction day" is the first trading day that fully reflects the earnings news - typically the day after an after-hours announcement, or the announcement day itself for pre-market releases.
Calculation: ((Current Price - D0 Close) / D0 Close) × 100
HOW TO INTERPRET:
- Positive values: Stock has gained ground since earnings. The higher the percentage, the stronger the post-earnings drift.
- 0% to +5%: Modest positive drift - earnings were received well but momentum is limited.
- +5% to +15%: Strong drift - buyers continue accumulating.
- > +15%: Exceptional drift - significant institutional interest likely.
- Negative values: Stock has given back gains or extended losses since earnings. May indicate the initial reaction was overdone, or that sentiment is deteriorating.
This metric is most meaningful within the first 5-20 trading days after earnings. Extended drift (maintaining gains over 2+ weeks) is a stronger signal than a quick spike that fades.
─────────────────────────────────────────
5. # Pocket Pivots
─────────────────────────────────────────
WHAT IT IS:
Pocket Pivots are a volume-based pattern developed by Chris Kacher and Gil Morales. They identify days where institutional buyers are likely accumulating shares without causing obvious breakouts.
Calculation: A Pocket Pivot occurs when:
- The stock closes higher than it opened (up day)
- The stock closes higher than the previous day's close
- Today's volume exceeds the highest down-day volume of the prior 10 trading sessions
The screener counts how many Pocket Pivots have occurred since the earnings announcement.
HOW TO INTERPRET:
- 0 Pocket Pivots: No detected institutional accumulation patterns since earnings.
- 1-2 Pocket Pivots: Some institutional buying interest - worth monitoring.
- 3+ Pocket Pivots: Strong accumulation signal - institutions appear to be building positions.
Pocket Pivots are most significant when they occur:
- Immediately following earnings announcements
- Near moving average support (10-day, 21-day, or 50-day)
- On above-average volume
- After a period of price consolidation
Multiple Pocket Pivots in a short period suggest sustained institutional demand, not just a one-day event.
─────────────────────────────────────────
6. ADX/DI (Trend Strength and Direction)
─────────────────────────────────────────
WHAT IT IS:
ADX (Average Directional Index) measures trend strength regardless of direction. DI (Directional Indicator) shows whether the trend is bullish or bearish.
Calculation: ADX uses a 14-period lookback to measure how directional (trending) price movement is. Values range from 0 to 100. The +DI and -DI components compare upward and downward movement.
The screener shows:
- ADX value (trend strength)
- Direction indicator: "+" for bullish (price trending up), "-" for bearish (price trending down)
HOW TO INTERPRET:
- ADX < 20: Weak trend - the stock is moving sideways, choppy. Not ideal for momentum trading.
- ADX 20-25: Trend is emerging - potentially starting a directional move.
- ADX 25-40: Strong trend - clear directional movement. Good for momentum plays.
- ADX > 40: Very strong trend - powerful move in progress, but may be extended.
The direction indicator (+/-) tells you which way:
- "25+" means ADX of 25 with bullish direction (uptrend)
- "25-" means ADX of 25 with bearish direction (downtrend)
For post-earnings plays, ideal setups show ADX rising above 25 with positive direction, confirming the earnings reaction is developing into a sustained trend rather than a one-day spike.
─────────────────────────────────────────
7. Institutional Buying PASS
─────────────────────────────────────────
WHAT IT IS:
This proprietary composite indicator detects patterns consistent with institutional accumulation at three stages after earnings:
EARLY (Days 0-4): Looks for "large block" buying on the earnings reaction day (exceptionally high volume with a close in the upper half of the day's range) combined with follow-through buying on the next day.
MID (Days 5-9): Checks for sustained elevated volume (averaging 1.5x the 20-day average) combined with positive drift and consistent upward price movement (more up days than down days).
LATE (Days 10+): Detects either visible accumulation (positive drift with high volume) OR stealth accumulation (positive drift with unusually LOW volume - suggesting smart money is quietly building positions without attracting attention).
HOW TO INTERPRET:
- Check mark/value of '1': Institutional buying pattern detected. The stock shows characteristics consistent with large players accumulating shares.
- X mark/value of '0': No institutional buying pattern detected. This doesn't mean institutions aren't buying - just that the typical footprints aren't visible.
A passing grade here adds conviction to other bullish signals. Institutions have research teams, information advantages, and long time horizons. When their footprints appear in the data, it often precedes sustained moves.
Important: This is a pattern detection tool, not a guarantee. Always combine with other analysis.
─────────────────────────────────────────
8. Strong ATR Drift PASS
─────────────────────────────────────────
WHAT IT IS:
This measures whether the stock has drifted significantly relative to its own volatility. Instead of asking "did it move 10%?", it asks "did it move more than 1.5 ATRs?"
ATR (Average True Range) measures a stock's typical daily movement. A volatile stock might move 5% daily, while a stable stock might move 0.5%. Using ATR normalizes for this difference.
Calculation:
ATR Drift = (Current Close - D0 Close) / D0 ATR in dollars
The indicator passes when ATR Drift exceeds 1.5 AND at least 5 days have passed since earnings.
HOW TO INTERPRET:
- Check mark/value of '1': The stock has drifted more than 1.5 times its average daily range since earnings - a statistically significant move that suggests genuine momentum, not just noise.
- X mark/value of '0': The drift (if any) is within normal volatility bounds - could just be random fluctuation.
Why wait 5 days? The immediate post-earnings reaction (days 0-2) often includes gap fills and noise. By day 5, if the stock is still extended beyond 1.5 ATRs from the earnings close, it suggests real buying pressure, not just a reflexive gap.
A passing grade here helps filter out stocks that "beat earnings" but haven't actually moved meaningfully. It focuses attention on stocks where the market is voting with real capital.
─────────────────────────────────────────
9. Days Since D0
─────────────────────────────────────────
WHAT IT IS:
Simply counts the number of trading days since the earnings reaction day (D0).
HOW TO INTERPRET:
- Days 0-5 (Green): Fresh earnings - the information is new, institutional repositioning is active, and momentum trades are most potent. This is the "sweet spot" for PEAD strategies.
- Days 6-10 (Neutral): Mid-period - some edge remains but diminishing. Good for adding to winning positions, less ideal for new entries.
- Days 11+ (Red): Extended period - most of the post-earnings drift has typically played out. Higher risk that momentum fades or reverses.
Research shows PEAD effects are strongest in the first 5-10 days after earnings, then decay. Beyond 20-30 days, the informational advantage of the earnings surprise is largely priced in.
Use this to prioritize: focus on stocks with strong signals that are still in the early window, and be more selective about entries as days accumulate.
═══════════════════════════════════════════════════════════════
PUTTING IT ALL TOGETHER
═══════════════════════════════════════════════════════════════
You can use this screener in the chart view or in the Screener.
One combination of the above filters to develop a shortlist of positive drift candidates may be:
- SUE > 2.0 (significant earnings beat)
- SURGE > 1.5 (significant revenue beat)
- Positive % From D0 Close (price confirming the good news)
- Institutional Buying PASS (big players accumulating)
- Strong ATR Drift PASS (statistically significant movement)
- Days Since D0 < 10 (still in the active drift window)
No single indicator is sufficient. The power comes from convergence - when multiple independent measures all point the same direction.
═══════════════════════════════════════════════════════════════
SETTINGS
═══════════════════════════════════════════════════════════════
Key adjustable parameters:
- SUE Method: "Analyst-based" uses consensus estimates; "Time-series" uses year-over-year comparison
- Window Size: Number of quarters used for standardization (default: 8)
- ATR Drift Threshold: Minimum ATR multiple for "strong" classification (default: 1.5)
- Institutional Buying thresholds: Adjustable volume and CLV parameters
═══════════════════════════════════════════════════════════════
DISCLAIMER
═══════════════════════════════════════════════════════════════
This screener is a research tool, not financial advice. Past patterns do not guarantee future results. Always conduct your own due diligence and manage risk appropriately. Post-earnings trading involves significant uncertainty and volatility. The 'SUE' in this indicator does not represent a real person; any similarity to actual Sue's (or Susans for that matter) living or dead is quite frankly ridiculous, not to mention coincidental.
Hammer Strategy (CLOSE ON NEXT BAR) [WORKING]Adjustable hammer and inverted hammer candle
Ham? INV? is the hammer
Entry on HAM, INV OR HAM?, INV? close next bar
EMA Color Cross + Trend Arrows V6//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
Basit BUY SELL//@version=5
indicator("Basit Yeşil Al - Kırmızı Sat", overlay=true)
// Mum renkleri
yesil = close > open
kirmizi = close < open
// Yeşil mumda AL oku
plotshape(yesil, title="AL", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.large, text="AL")
// Kırmızı mumda SAT oku
plotshape(kirmizi, title="SAT", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.large, text="SAT")
Renkli Parabolic SAR - Sade Versiyon//@version=5
indicator("Renkli Parabolic SAR - Sade Versiyon", overlay=true)
// === PSAR Ayarları ===
psarStart = input.float(0.02, "PSAR Başlangıç (Step)", step=0.01)
psarIncrement = input.float(0.02, "PSAR Artış (Increment)", step=0.01)
psarMax = input.float(0.2, "PSAR Maksimum (Max)", step=0.01)
// === PSAR Hesaplama ===
psar = ta.sar(psarStart, psarIncrement, psarMax)
// === Trend Tespiti ===
bull = close > psar
bear = close < psar
// === Renk Ayarları ===
barColor = bull ? color.new(color.green, 0) : color.new(color.red, 0)
psarColor = bull ? color.green : color.red
bgColor = bull ? color.new(color.green, 90) : color.new(color.red, 90)
// === Mum ve PSAR ===
barcolor(barColor)
plotshape(bull, title="PSAR Bull", location=location.belowbar, style=shape.circle, size=size.tiny, color=color.green)
plotshape(bear, title="PSAR Bear", location=location.abovebar, style=shape.circle, size=size.tiny, color=color.red)
// === Arka Plan ===
bgcolor(bgColor)
// === Al / Sat Sinyalleri ===
buySignal = ta.crossover(close, psar)
sellSignal = ta.crossunder(close, psar)
plotshape(buySignal, title="AL", location=location.belowbar, style=shape.triangleup, size=size.large, color=color.lime)
plotshape(sellSignal, title="SAT", location=location.abovebar, style=shape.triangledown, size=size.large, color=color.red)
// === Alarm Koşulları ===
alertcondition(buySignal, title="AL Sinyali", message="Parabolic SAR Al Sinyali")
alertcondition(sellSignal, title="SAT Sinyali", message="Parabolic SAR Sat Sinyali")
Al Brooks - Bar CountIndicator Purpose:
This indicator displays bar counts on the chart to help traders identify important time nodes and cycle transitions
Features smart session filtering with automatic futures/stock detection and appropriate trading session counting
Core Features:
Smart asset detection: Auto-detect futures and stocks
Session filter toggle: Choose all-day or session-specific counting
Auto timezone handling: Chicago time for futures, NY time for stocks
Flexible display control: Customizable display frequency and label size
Session Settings:
8:30-15:15 (CT) / Futures mode: Chicago time 8:30-15:15 (CT)
9:30-16:00 (ET) / Stock mode: New York time 9:30-16:00 (ET)
All-day mode: Count from first bar of the day
Timeframe Correspondence:
Multiples of 3: Correspond to 15-minute chart update cycles
Multiples of 12: Correspond to 1-hour chart update cycles
18: Key nodes, important time turning points
Pro trade by Amit// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0) creativecommons.org
//@version=5
import HeWhoMustNotBeNamed/utils/1 as ut
import Trendoscope/ohlc/1 as o
import Trendoscope/LineWrapper/1 as wr
import Trendoscope/ZigzagLite/2 as zg
import Trendoscope/abstractchartpatterns/5 as p
import Trendoscope/basechartpatterns/6 as bp
indicator("Installing Wait....", "Automatic Chart Pattern", overlay = true, max_lines_count=500, max_labels_count=500, max_polylines_count = 100)
openSource = input.source(open, '', inline='cs', group='Source', display = display.none)
highSource = input.source(high, '', inline='cs', group='Source', display = display.none)
lowSource = input.source(low, '', inline='cs', group='Source', display = display.none)
closeSource = input.source(close, '', inline='cs', group='Source', display = display.none, tooltip = 'Source on which the zigzag and pattern calculation is done')
useZigzag1 = input.bool(true, '', group = 'Zigzag', inline='z1', display = display.none)
zigzagLength1 = input.int(8, step=5, minval=1, title='', group='Zigzag', inline='z1', display=display.none)
depth1 = input.int(55, "", step=25, maxval=500, group='Zigzag', inline='z1', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 1')
useZigzag2 = input.bool(false, '', group = 'Zigzag', inline='z2', display = display.none)
zigzagLength2 = input.int(13, step=5, minval=1, title='', group='Zigzag', inline='z2', display=display.none)
depth2 = input.int(34, "", step=25, maxval=500, group='Zigzag', inline='z2', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 2')
useZigzag3 = input.bool(false, '', group = 'Zigzag', inline='z3', display = display.none)
zigzagLength3 = input.int(21, step=5, minval=1, title='', group='Zigzag', inline='z3', display=display.none)
depth3 = input.int(21, "", step=25, maxval=500, group='Zigzag', inline='z3', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 3')
useZigzag4 = input.bool(false, '', group = 'Zigzag', inline='z4', display = display.none)
zigzagLength4 = input.int(34, step=5, minval=1, title='', group='Zigzag', inline='z4', display=display.none)
depth4 = input.int(13, "", step=25, maxval=500, group='Zigzag', inline='z4', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 4')
numberOfPivots = input.int(5, "Number of Pivots", , 'Number of pivots used for pattern identification.', group='Scanning', display = display.none)
errorThresold = input.float(20.0, 'Error Threshold', 0.0, 100, 5, 'Error Threshold for trend line validation', group='Scanning', display = display.none)
flatThreshold = input.float(20.0, 'Flat Threshold', 0.0, 30, 5, 'Ratio threshold to identify the slope of trend lines', group='Scanning', display = display.none)
lastPivotDirection = input.string('both', 'Last Pivot Direction', , 'Filter pattern based on the last pivot direction. '+
'This option is useful while backtesting individual patterns. When custom is selected, then the individual pattern last pivot direction setting is used',
group='Scanning', display=display.none)
checkBarRatio = input.bool(true, 'Verify Bar Ratio ', 'Along with checking the price, also verify if the bars are proportionately placed.', group='Scanning', inline = 'br', display = display.none)
barRatioLimit = input.float(0.382, '', group='Scanning', display = display.none, inline='br')
avoidOverlap = input.bool(true, 'Avoid Overlap', group='Scanning', inline='a', display = display.none)
repaint = input.bool(false, 'Repaint', 'Avoid Overlap - Will not consider the pattern if it starts before the end of an existing pattern '+
'Repaint - Uses real time bars to search for patterns. If unselected, then only use confirmed bars.',
group='Scanning', inline='a', display = display.none)
allowChannels = input.bool(true, 'Channels', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g')
allowWedges = input.bool(true, 'Wedge', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g')
allowTriangles = input.bool(true, 'Triangle', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g',
tooltip = 'Channels - Trend Lines are parralel to each other creating equidistance price channels'+
' \t- Ascending Channel \t- Descending Channel \t- Ranging Channel'+
' Wedges - Trend lines are either converging or diverging from each other and both the trend lines are moving in the same direction'+
' \t- Rising Wedge (Expanding) \t- Rising Wedge (Contracting) \t- Falling Wedge (Expanding) \t- Falling Wedge (Contracting)'+
' Triangles - Trend lines are either converging or diverging from each other and both trend lines are moving in different directions'+
' \t- Converging Triangle \t- Diverging Triangle \t- Ascending Triangle (Contracting) \t- Ascending Triangle (Expanding) \t- Descending Triangle(Contracting) \t- Descending Triangle(Expanding)')
allowRisingPatterns = input.bool(true, 'Rising', group='Pattern Groups - Direction', display = display.none, inline = 'd')
allowFallingPatterns = input.bool(true, 'Falling', group='Pattern Groups - Direction', display = display.none, inline = 'd')
allowNonDirectionalPatterns = input.bool(true, 'Flat/Bi-Directional', group='Pattern Groups - Direction', display = display.none, inline = 'd',
tooltip = 'Rising - Either both trend lines are moving up or one trend line is flat and the other one is moving up.'+
' \t- Ascending Channel \t- Rising Wedge (Expanding) \t- Rising Wedge (Contracting) \t- Ascending Triangle (Expanding) \t- Ascending Triangle (Contracting)'+
' Falling - Either both trend lines are moving down or one trend line is flat and the other one is moving down.'+
' \t- Descending Channel \t- Falling Wedge (Expanding) \t- Falling Wedge (Contracting) \t- Descending Triangle (Expanding) \t- Descending Triangle (Contracting)'+
' Flat/Bi-Directional - Trend Lines move in different directions or both flat.'+
' \t- Ranging Channel \t- Converging Triangle \t- Diverging Triangle')
allowExpandingPatterns = input.bool(true, 'Expanding', group='Pattern Groups - Formation Dynamics', display = display.none, inline = 'f')
allowContractingPatterns = input.bool(true, 'Contracting', group='Pattern Groups - Formation Dynamics', display = display.none, inline='f')
allowParallelChannels = input.bool(true, 'Parallel', group = 'Pattern Groups - Formation Dynamics', display = display.none, inline = 'f',
tooltip = 'Expanding - Trend Lines are diverging from each other.'+
' \t- Rising Wedge (Expanding) \t- Falling Wedge (Expanding) \t- Ascending Triangle (Expanding) \t- Descending Triangle (Expanding) \t- Diverging Triangle'+
' Contracting - Trend Lines are converging towards each other.'+
' \t- Rising Wedge (Contracting) \t- Falling Wedge (Contracting) \t- Ascending Triangle (Contracting) \t- Descending Triangle (Contracting) \t- Converging Triangle'+
' Parallel - Trend Lines are almost parallel to each other.'+
' \t- Ascending Channel \t- Descending Channel \t- Ranging Channel')
allowUptrendChannel = input.bool(true, 'Ascending ', group = 'Price Channels', inline='uc', display = display.none)
upTrendChannelLastPivotDirection = input.string('both', '', , inline='uc', group='Price Channels', display = display.none,
tooltip='Enable Ascending Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowDowntrendChannel = input.bool(true, 'Descending', group = 'Price Channels', inline='dc', display = display.none)
downTrendChannelLastPivotDirection = input.string('both', '', , inline='dc', group='Price Channels', display = display.none,
tooltip='Enable Descending Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRangingChannel = input.bool(true, 'Ranging ', group = 'Price Channels', inline='rc', display = display.none)
rangingChannelLastPivotDirection = input.string('both', '', , inline='rc', group='Price Channels', display = display.none,
tooltip='Enable Ranging Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingWedgeExpanding = input.bool(true, 'Rising ', inline='rwe', group = 'Expanding Wedges', display = display.none)
risingWedgeExpandingLastPivotDirection = input.string('down', '', , inline='rwe', group='Expanding Wedges', display = display.none,
tooltip='Enable Rising Wedge (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingWedgeExpanding = input.bool(true, 'Falling ', inline='fwe', group = 'Expanding Wedges', display = display.none)
fallingWedgeExpandingLastPivotDirection = input.string('up', '', , inline='fwe', group='Expanding Wedges', display = display.none,
tooltip='Enable Falling Wedge (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingWedgeContracting = input.bool(true, 'Rising ', inline='rwc', group = 'Contracting Wedges', display = display.none)
risingWedgeContractingLastPivotDirection = input.string('down', '', , inline='rwc', group='Contracting Wedges', display = display.none,
tooltip='Enable Rising Wedge (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingWedgeContracting = input.bool(true, 'Falling ', inline='fwc', group = 'Contracting Wedges', display = display.none)
fallingWedgeContractingLastPivotDirection = input.string('up', '', , inline='fwc', group='Contracting Wedges', display = display.none,
tooltip='Enable Falling Wedge (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingTriangleExpanding = input.bool(true, 'Ascending ', inline='rte', group = 'Expanding Triangles', display = display.none)
risingTriangleExpandingLastPivotDirection = input.string('up', '', , inline='rte', group='Expanding Triangles', display = display.none,
tooltip='Enable Ascending Triangle (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingTriangleExpanding = input.bool(true, 'Descending', inline='fte', group = 'Expanding Triangles', display = display.none)
fallingTriangleExpandingLastPivotDirection = input.string('down', '', , inline='fte', group='Expanding Triangles', display = display.none,
tooltip='Enable Descending Triangle (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowExpandingTriangle = input.bool(true, 'Diverging ', inline='dt', group = 'Expanding Triangles', display = display.none)
divergineTriangleLastPivotDirection = input.string('both', '', , inline='dt', group='Expanding Triangles', display = display.none,
tooltip='Enable Diverging Triangle and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingTriangleConverging= input.bool(true, 'Ascending ', inline='rtc', group = 'Contracting Triangles', display = display.none)
risingTriangleContractingLastPivotDirection = input.string('up', '', , inline='rtc', group='Contracting Triangles', display = display.none,
tooltip='Enable Ascending Triangle (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingTriangleConverging = input.bool(true, 'Descending', inline='ftc', group = 'Contracting Triangles', display = display.none)
fallingTriangleContractingLastPivotDirection = input.string('down', '', , inline='ftc', group='Contracting Triangles', display = display.none,
tooltip='Enable Descending Triangle (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowConvergingTriangle = input.bool(true, 'Converging ', inline='ct', group = 'Contracting Triangles', display = display.none)
convergingTriangleLastPivotDirection = input.string('both', '', , inline='ct', group='Contracting Triangles', display = display.none,
tooltip='Enable Converging Triangle and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowedPatterns = array.from(
false,
allowUptrendChannel and allowRisingPatterns and allowParallelChannels and allowChannels,
allowDowntrendChannel and allowFallingPatterns and allowParallelChannels and allowChannels,
allowRangingChannel and allowNonDirectionalPatterns and allowParallelChannels and allowChannels,
allowRisingWedgeExpanding and allowRisingPatterns and allowExpandingPatterns and allowWedges,
allowFallingWedgeExpanding and allowFallingPatterns and allowExpandingPatterns and allowWedges,
allowExpandingTriangle and allowNonDirectionalPatterns and allowExpandingPatterns and allowTriangles,
allowRisingTriangleExpanding and allowRisingPatterns and allowExpandingPatterns and allowTriangles,
allowFallingTriangleExpanding and allowFallingPatterns and allowExpandingPatterns and allowTriangles,
allowRisingWedgeContracting and allowRisingPatterns and allowContractingPatterns and allowWedges,
allowFallingWedgeContracting and allowFallingPatterns and allowContractingPatterns and allowWedges,
allowConvergingTriangle and allowNonDirectionalPatterns and allowContractingPatterns and allowTriangles,
allowFallingTriangleConverging and allowFallingPatterns and allowContractingPatterns and allowTriangles,
allowRisingTriangleConverging and allowRisingPatterns and allowContractingPatterns and allowTriangles
)
getLastPivotDirectionInt(lastPivotDirection)=>lastPivotDirection == 'up'? 1 : lastPivotDirection == 'down'? -1 : 0
allowedLastPivotDirections = array.from(
0,
lastPivotDirection == 'custom'? getLastPivotDirectionInt(upTrendChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(downTrendChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(rangingChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingWedgeExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingWedgeExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(divergineTriangleLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingTriangleExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingTriangleExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingWedgeContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingWedgeContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(convergingTriangleLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingTriangleContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingTriangleContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection)
)
theme = input.string('Dark', title='Theme', options= , group='Display', inline='pc',
tooltip='Chart theme settings. Line and label colors are generted based on the theme settings. If dark theme is selected, '+
'lighter colors are used and if light theme is selected, darker colors are used. '+
'Pattern Line width - to be used for drawing pattern lines', display=display.none)
patternLineWidth = input.int(2, '', minval=1, inline='pc', group = 'Display', display = display.none)
showPatternLabel = input.bool(true, 'Pattern Label', inline='pl1', group = 'Display', display = display.none)
patternLabelSize = input.string(size.normal, '', , inline='pl1', group = 'Display', display = display.none,
tooltip = 'Option to display Pattern Label and select the size')
showPivotLabels = input.bool(true, 'Pivot Labels ', inline='pl2', group = 'Display', display = display.none, tooltip = 'Option to display pivot labels and select the size')
pivotLabelSize = input.string(size.normal, '', , inline='pl2', group = 'Display', display = display.none)
showZigzag = input.bool(true, 'Zigzag', inline='z', group = 'Display', display = display.none)
zigzagColor = input.color(color.blue, '', inline='z', group = 'Display', display = display.none, tooltip = 'Option to display zigzag within pattern and the default zigzag line color')
deleteOldPatterns = input.bool(true, 'Max Patterns', inline='do', group = 'Display', display = display.none)
maxPatterns = input.int(20, '', minval=1, step=5, inline = 'do', group = 'Display', display = display.none, tooltip = 'If selected, only last N patterns will be preserved on the chart.')
errorRatio = errorThresold/100
flatRatio = flatThreshold/100
showLabel = true
offset = 0
type Scanner
bool enabled
string ticker
string timeframe
p.ScanProperties sProperties
p.DrawingProperties dProperties
array patterns
array zigzags
method getZigzagAndPattern(Scanner this, int length, int depth, array ohlcArray, int offset=0)=>
var zg.Zigzag zigzag = zg.Zigzag.new(length, depth, 0)
var map lastDBar = map.new()
zigzag.calculate(array.from(highSource, lowSource))
var validPatterns = 0
mlzigzag = zigzag
if(zigzag.flags.newPivot)
while(mlzigzag.zigzagPivots.size() >= 6+offset)
lastBar = mlzigzag.zigzagPivots.first().point.index
lastDir = int(math.sign(mlzigzag.zigzagPivots.first().dir))
if(lastDBar.contains(mlzigzag.level)? lastDBar.get(mlzigzag.level) < lastBar : true)
lastDBar.put(mlzigzag.level, lastBar)
= mlzigzag.find(this.sProperties, this.dProperties, this.patterns, ohlcArray)
if(valid)
validPatterns+=1
currentPattern.draw()
this.patterns.push(currentPattern, maxPatterns)
alert('New Pattern Alert')
else
break
mlzigzag := mlzigzag.nextlevel()
true
method scan(Scanner this)=>
var array ohlcArray = array.new()
var array patterns = array.new()
ohlcArray.push(o.OHLC.new(openSource, highSource, lowSource, closeSource))
if(useZigzag1)
this.getZigzagAndPattern(zigzagLength1, depth1, ohlcArray)
if(useZigzag2)
this.getZigzagAndPattern(zigzagLength2, depth2, ohlcArray)
if(useZigzag3)
this.getZigzagAndPattern(zigzagLength3, depth3, ohlcArray)
if(useZigzag4)
this.getZigzagAndPattern(zigzagLength4, depth4, ohlcArray)
var scanner = Scanner.new(true, "", "",
p.ScanProperties.new(offset, numberOfPivots, errorRatio, flatRatio, checkBarRatio, barRatioLimit, avoidOverlap, allowedPatterns=allowedPatterns, allowedLastPivotDirections= allowedLastPivotDirections, themeColors = ut.getColors(theme)),
p.DrawingProperties.new(patternLineWidth, showZigzag, 1, zigzagColor, showPatternLabel, patternLabelSize, showPivotLabels, pivotLabelSize, deleteOnPop = deleteOldPatterns),
array.new())
if(barstate.isconfirmed or repaint)
scanner.scan()
Heikin-Ashi Bar & Line with Signals//@version=6
indicator("Heikin-Ashi Bar & Line with Signals", overlay=true)
// Heikin-Ashi hesaplamaları
var float haOpen = na // İlk değer için var kullanıyoruz
haClose = (open + high + low + close) / 4
haOpen := na(haOpen) ? (open + close)/2 : (haOpen + haClose )/2
haHigh = math.max(high, haOpen, haClose)
haLow = math.min(low, haOpen, haClose)
// Renkler
haBull = haClose >= haOpen
haColor = haBull ? color.new(color.green, 0) : color.new(color.red, 0)
// HA Barları
plotcandle(haOpen, haHigh, haLow, haClose, color=haColor, wickcolor=haColor)
// HA Line
plot(haClose, title="HA Close Line", color=color.yellow, linewidth=2)
// Trend arka planı
bgcolor(haBull ? color.new(color.green, 85) : color.new(color.red, 85))
// Al/Sat sinyalleri
longSignal = haBull and haClose > haOpen and haClose < haOpen
shortSignal = not haBull and haClose < haOpen and haClose > haOpen
plotshape(longSignal, title="Al Sinyali", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortSignal, title="Sat Sinyali", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
Gamma & Volatility Levels [Pro]General Purpose
This indicator analyzes volatility levels and expected price movements, combining gamma concepts (financial options) with volatility analysis to identify support and resistance zones.
Main Components
High Volatility Level (HVL): Calculates a volatility level based on the simple moving average (SMA) of the price plus one standard deviation. This level is represented by an orange line showing where volatility is concentrated.
Expected Movement (Movimiento Esperante): Uses the Average True Range (ATR) multiplied by an adjustable factor to project potential upward and downward movement ranges from the current price. It is drawn in green (upward) and red (downward).
Gamma Levels (Nivelas Gamma): Identifies two key levels: the call resistance (highest high of the last 50 periods) in blue, and the put support (lowest low) in purple. These are based on recent extreme prices.
Additional Information: The indicator calculates the percentage distance between the current price and the HVL, displaying it in a label.
Visual Elements
Colored lines on the chart for each level.
Labels with exact values next to each line.
A table in the upper right corner summarizing all calculated values.
Options to show or hide each element according to preference.
This is a useful tool for traders who work with options or seek to identify levels of extreme volatility and dynamic support/resistance zones.






















