Cycle VTLs – with Scaled Channels "Cycle VTLs – with Scaled Channels" for TradingView plots Valid Trend Lines (VTLs) based on Hurst's Cyclic Theory, connecting consecutive price peaks (downward VTLs) or troughs (upward VTLs) for specific cycles. It uses up to eight Simple Moving Averages (SMAs) (default lengths: 25, 50, 100, 200, 400, 800, 1600, 1600 bars) with customizable envelope bands to detect pivots and draw VTLs, enhanced by optional parallel channels scaled to envelope widths.
Key Features:
Valid Trend Lines (VTLs):
Upward VTLs: Connect consecutive cycle troughs, sloping upward.
Downward VTLs: Connect consecutive cycle peaks, sloping downward.
Hurst’s Rules:
Connects consecutive cycle peaks/troughs.
Must not cross price between points.
Downward VTLs:
No longer-cycle trough between peaks.
Invalid if slope is incorrect (upward VTL not up, downward VTL not down).
Expired VTLs: Historical VTLs (crossed by price) from up to three prior cycle waves.
SMA Cycles:
Eight customizable SMAs with envelope bands (offset × multiplier) for pivot detection.
Channels:
Optional parallel lines around VTLs, width set by channelFactor × envelope half-width.
Pivot Detection:
Fractal-based (pivotPeriod) on envelopes or price (usePriceFallback).
Customization:
Toggle cycles, VTLs, and channels.
Adjust SMA lengths, offsets, colors, line styles, and widths.
Enable centered envelopes, slope filtering, and limit stored lines (maxStoredLines).
Usage in Hurst’s Cyclic TheoryAnalysis:
VTLs identify cycle trends; upward VTLs suggest bullish momentum, downward VTLs bearish.
Price crossing below an upward VTL confirms a peak in the next longer cycle; crossing above a downward VTL confirms a trough.
Trading:
Buy: Price bounces off upward VTL or breaks above downward VTL.
Sell: Price rejects downward VTL or breaks below upward VTL.
Use channels for support/resistance, breakouts, or stop-loss/take-profit levels.
Workflow:
Add indicator on TradingView.
Enable desired cycles (e.g., 50-bar, 1600-bar), adjust pivotPeriod, channelFactor, and showOnlyCorrectSlope.
Monitor VTL crossings and channels for trade signals.
NotesOptimized for performance with line limits.
Ideal for cycle-based trend analysis across markets (stocks, forex, crypto).
Debug labels show pivot counts and VTL status.
This indicator supports Hurst’s Cyclic Theory for trend identification and trading decisions with flexible, cycle-based VTLs and channels.
Use global variable to scale to chart. best results use factors of 2 and double. try 2, 4, 8, 16...128, 256, etc until price action fits 95% in smallest cycle.
스크립트에서 "wave"에 대해 찾기
Pro Momentum Table + Trade Alerts📊 Indicator Name: Pro Momentum Table – ADX + DI + ATR + Astro Timing
🧠 Concept:
This indicator is designed for professional scalpers and intraday traders who want to capture only strong momentum waves — not noise. It combines trend strength, volatility, directional movement, momentum oscillation, vega divergence, and astrological timing into a single compact table on your chart.
⚙️ Components Explained:
Metric Description
ADX (Average Directional Index) Measures the strength of the trend. Values above 20 indicate that a meaningful move is starting.
+DI / -DI (Directional Indicators) Show whether buyers (+DI) or sellers (-DI) are dominating. Increasing +DI with ADX rising = bullish momentum. Increasing -DI with ADX rising = bearish momentum.
ATR (Average True Range) Shows volatility and expected range. Used for setting realistic stop-loss and multi-level targets (1×, 1.5×, 2×, 2.5× ATR).
Price Displays the current price level for quick reference.
CMO (Chande Momentum Oscillator) Measures short-term momentum direction and strength. Helps identify overbought/oversold conditions in trend continuation.
Vega Divergence Shows a synthetic reading of volatility pressure — "Bullish" when volatility expansion supports upward moves, "Bearish" for downward pressure, and "Neutral" otherwise.
Astro Remark Suggests ideal time windows based on planetary cycles for scalping entries. “Bullish Window” often aligns with high-probability long trades; “Bearish Window” favors shorts.
Trade Signal The core momentum condition: “Bullish Momentum” if ADX > 20 and +DI rising, “Bearish Momentum” if ADX > 20 and -DI rising, else “No Clear Momentum.”
📈 How to Use:
Wait for ADX > 20 – This confirms that the market is entering a strong momentum phase.
Check DI direction:
✅ +DI rising: Buyers gaining strength → look for long setups.
✅ -DI rising: Sellers gaining strength → look for short setups.
Use ATR to plan exits:
🎯 TP1 = Entry ± 1 × ATR
🎯 TP2 = Entry ± 1.5 × ATR
🎯 TP3 = Entry ± 2 × ATR
🎯 TP4 = Entry ± 2.5 × ATR
CMO & Vega Divergence: Confirm momentum direction and volatility expansion before committing.
Astro Remark: Align your scalping activity with the planetary support window for higher probability trades.
🪙 Pro Tips for Scalpers:
Only trade when ADX > 20 and DI is consistently rising. Ignore signals in choppy or sideways phases.
Avoid trades if Vega is neutral and CMO is flat – these usually indicate fake breakouts.
If targets aren’t hit within expected ATR-based time, treat the move as false and exit early.
Combine with 9 EMA and 20 EMA (hidden) for wave structure confirmation without cluttering the chart.
💡 Summary:
This indicator acts as a real-time trade decision dashboard. It removes clutter from the chart and delivers everything a professional scalper needs — strength, direction, volatility, momentum, timing, and actionable trade bias — all in one elegant table.
EvoTrend-X Indicator — Evolutionary Trend Learner ExperimentalEvoTrend-X Indicator — Evolutionary Trend Learner
NOTE: This is an experimental Pine Script v6 port of a Python prototype. Pine wasn’t the original research language, so there may be small quirks—your feedback and bug reports are very welcome. The model is non-repainting, MTF-safe (lookahead_off + gaps_on), and features an adaptive (fitness-based) candidate selector, confidence gating, and a volatility filter.
⸻
What it is
EvoTrend-X is adaptive trend indicator that learns which moving-average length best fits the current market. It maintains a small “population” of fast EMA candidates, rewards those that align with price momentum, and continuously selects the best performer. Signals are gated by a multi-factor Confidence score (fitness, strength vs. ATR, MTF agreement) and a volatility filter (ATR%). You get a clean Fast/Slow pair (for the currently best candidate), optional HTF filter, a fitness ribbon for transparency, and a themed info panel with a one-glance STATUS readout.
Core outputs
• Selected Fast/Slow EMAs (auto-chosen from candidates via fitness learning)
• Spread cross (Fast – Slow) → visual BUY/SELL markers + alert hooks
• Confidence % (0–100): Fitness ⊕ Distance vs. ATR ⊕ MTF agreement
• Gates: Trend regime (Kaufman ER), Volatility (ATR%), MTF filter (optional)
• Candidate Fitness Ribbon: shows which lengths the learner currently prefers
• Export plot: hidden series “EvoTrend-X Export (spread)” for downstream use
⸻
Why it’s different
• Evolutionary learning (on-chart): Each candidate EMA length gets rewarded if its slope matches price change and penalized otherwise, with a gentle decay so the model forgets stale regimes. The best fitness wins the right to define the displayed Fast/Slow pair.
• Confidence gate: Signals don’t light up unless multiple conditions concur: learned fitness, spread strength vs. volatility, and (optionally) higher-timeframe trend.
• Volatility awareness: ATR% filter blocks low-energy environments that cause death-by-a-thousand-whipsaws. Your “why no signal?” answer is always visible in the STATUS.
• Preset discipline, Custom freedom: Presets set reasonable baselines for FX, equities, and crypto; Custom exposes all knobs and honors your inputs one-to-one.
• Non-repainting rigor: All MTF calls use lookahead_off + gaps_on. Decisions use confirmed bars. No forward refs. No conditional ta.* pitfalls.
⸻
Presets (and what they do)
• FX 1H (Conservative): Medium candidates, slightly higher MinConf, modest ATR% floor. Good for macro sessions and cleaner swings.
• FX 15m (Active): Shorter candidates, looser MinConf, higher ATR% floor. Designed for intraday velocity and decisive sessions.
• Equities 1D: Longer candidates, gentler volatility floor. Suits index/large-cap trend waves.
• Crypto 1H: Mid-short candidates, higher ATR% floor for 24/7 chop, stronger MinConf to avoid noise.
• Custom: Your inputs are used directly (no override). Ideal for systematic tuning or bespoke assets.
⸻
How the learning works (at a glance)
1. Candidates: A small set of fast EMA lengths (e.g., 8/12/16/20/26/34). Slow = Fast × multiplier (default ×2.0).
2. Reward/decay: If price change and the candidate’s Fast slope agree (both up or both down), its fitness increases; otherwise decreases. A decay constant slowly forgets the distant past.
3. Selection: The candidate with highest fitness defines the displayed Fast/Slow pair.
4. Signal engine: Crosses of the spread (Fast − Slow) across zero mark potential regime shifts. A Confidence score and gates decide whether to surface them.
⸻
Controls & what they mean
Learning / Regime
• Slow length = Fast ×: scales the Slow EMA relative to each Fast candidate. Larger multiplier = smoother regime detection, fewer whipsaws.
• ER length / threshold: Kaufman Efficiency Ratio; above threshold = “Trending” background.
• Learning step, Decay: Larger step reacts faster to new behavior; decay sets how quickly the past is forgotten.
Confidence / Volatility gate
• Min Confidence (%): Minimum score to show signals (and fire alerts). Raising it filters noise; lowering it increases frequency.
• ATR length: The ATR window for both the ATR% filter and strength normalization. Shorter = faster, but choppier.
• Min ATR% (percent): ATR as a percentage of price. If ATR% < Min ATR% → status shows BLOCK: low vola.
MTF Trend Filter
• Use HTF filter / Timeframe / Fast & Slow: HTF Fast>Slow for longs, Fast threshold; exit when spread flips or Confidence decays below your comfort zone.
2) FX index/majors, 15m (active intraday)
• Preset: FX 15m (Active).
• Gate: MinConf 60–70; Min ATR% 0.15–0.30.
• Flow: Focus on session opens (LDN/NY). The ribbon should heat up on shorter candidates before valid crosses appear—good early warning.
3) SPY / Index futures, 1D (positioning)
• Preset: Equities 1D.
• Gate: MinConf 55–65; Min ATR% 0.05–0.12.
• Flow: Use spread crosses as regime flags; add timing from price structure. For adds, wait for ER to remain trending across several bars.
4) BTCUSD, 1H (24/7)
• Preset: Crypto 1H.
• Gate: MinConf 70–80; Min ATR% 0.20–0.35.
• Flow: Crypto chops—volatility filter is your friend. When ribbon and HTF OK agree, favor continuation entries; otherwise stand down.
⸻
Reading the Info Panel (and fixing “no signals”)
The panel is your self-diagnostic:
• HTF OK? False means the higher-timeframe EMAs disagree with your intended side.
• Regime: If “Chop”, ER < threshold. Consider raising the threshold or waiting.
• Confidence: Heat-colored; if below MinConf, the gate blocks signals.
• ATR% vs. Min ATR%: If ATR% < Min ATR%, status shows BLOCK: low vola.
• STATUS (composite):
• BLOCK: low vola → increase Min ATR% down (i.e., allow lower vol) or wait for expansion.
• BLOCK: HTF filter → disable HTF or align with the HTF tide.
• BLOCK: confidence → lower MinConf slightly or wait for stronger alignment.
• OK → you’ll see markers on valid crosses.
⸻
Alerts
Two static alert hooks:
• BUY cross — spread crosses up and all gates (ER, Vol, MTF, Confidence) are open.
• SELL cross — mirror of the above.
Create them once from “Add Alert” → choose the condition by name.
⸻
Exporting to other scripts
In your other Pine indicators/strategies, add an input.source and select EvoTrend-X → “EvoTrend-X Export (spread)”. Common uses:
• Build a rule: only trade when exported spread > 0 (trend filter).
• Combine with your oscillator: oscillator oversold and spread > 0 → buy bias.
⸻
Best practices
• Let it learn: Keep Learning step moderate (0.4–0.6) and Decay close to 1.0 (e.g., 0.99–0.997) for smooth regime memory.
• Respect volatility: Tune Min ATR% by asset and timeframe. FX 1H ≈ 0.10–0.20; crypto 1H ≈ 0.20–0.35; equities 1D ≈ 0.05–0.12.
• MTF discipline: HTF filter removes lots of “almost” trades. If you prefer aggressive entries, turn it off and rely more on Confidence.
• Confidence as throttle:
• 40–60%: exploratory; expect more signals.
• 60–75%: balanced; good daily driver.
• 75–90%: selective; catch the clean stuff.
• 90–100%: only A-setups; patient mode.
• Watch the ribbon: When shorter candidates heat up before a cross, momentum is forming. If long candidates dominate, you’re in a slower trend cycle.
⸻
Non-repainting & safety notes
• All request.security() calls use lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_on.
• No forward references; decisions rely on confirmed bar data.
• EMA lengths are simple ints (no series-length errors).
• Confidence components are computed every bar (no conditional ta.* traps).
⸻
Limitations & tips
• Chop happens: ER helps, but sideways microstructure can still flicker—use Confidence + Vol filter as brakes.
• Presets ≠ oracle: They’re sensible baselines; always tune MinConf and Min ATR% to your venue and session.
• Theme “Auto”: Pine cannot read chart theme; “Auto” defaults to a Dark-friendly palette.
⸻
Publisher’s Screenshots Checklist
1) FX swing — EURUSD 1H
• Preset: FX 1H (Conservative)
• Params: MinConf=70, ATR Len=14, Min ATR%=0.12, MTF ON (TF=4H, 20/50)
• Show: Clear BUY cross, STATUS=OK, green regime background; Fitness Ribbon visible.
2) FX intraday — GBPUSD 15m
• Preset: FX 15m (Active)
• Params: MinConf=60, ATR Len=14, Min ATR%=0.20, MTF ON (TF=60m)
• Show: SELL cross near London session open. HTF lines enabled (translucent).
• Caption: “GBPUSD 15m • Active session sell with MTF alignment.”
3) Indices — SPY 1D
• Preset: Equities 1D
• Params: MinConf=60, ATR Len=14, Min ATR%=0.08, MTF ON (TF=1W, 20/50)
• Show: Longer trend run after BUY cross; regime shading shows persistence.
• Caption: “SPY 1D • Trend run after BUY cross; weekly filter aligned.”
4) Crypto — BINANCE:BTCUSDT 1H
• Preset: Crypto 1H
• Params: MinConf=75, ATR Len=14, Min ATR%=0.25, MTF ON (TF=4H)
• Show: BUY cross + quick follow-through; Ribbon warming (reds/yellows → greens).
• Caption: “BTCUSDT 1H • Momentum break with high confidence and ribbon turning.”
Guppy MMA [Alpha Extract]A sophisticated trend-following and momentum assessment system that constructs dynamic trader and investor sentiment channels using multiple moving average groups with advanced scoring mechanisms and smoothed CCI-style visualizations for optimal market trend analysis. Utilizing enhanced dual-group methodology with threshold-based trend detection, this indicator delivers institutional-grade GMMA analysis that adapts to varying market conditions while providing high-probability entry and exit signals through crossover and extreme value detection with comprehensive visual mapping and alert integration.
🔶 Advanced Channel Construction
Implements dual-group architecture using short-term and long-term moving averages as foundation points, applying customizable MA types to reduce noise and score-based averaging for sentiment-responsive trend channels. The system creates trader channels from shorter periods and investor channels from longer periods with configurable periods for optimal market reaction zones.
// Core Channel Calculation Framework
maType = input.string("EMA", title="Moving Average Type", options= )
// Short-Term Group Construction
stMA1 = ma(close, st1, maType)
stMA2 = ma(close, st2, maType)
// Long-Term Group Construction
ltMA1 = ma(close, lt1, maType)
ltMA2 = ma(close, lt2, maType)
// Smoothing Application
smoothedavg = ma(overallAvg, 10, maType)
🔶 Volatility-Adaptive Zone Framework
Features dynamic score-based averaging that expands sentiment signals during strong trend periods and contracts during consolidation phases, preventing false signals while maintaining sensitivity to genuine momentum shifts. The dual-group averaging system optimizes zone boundaries for realistic market behavior patterns.
// Dynamic Sentiment Adjustment
shortTermAvg = (stScore1 + stScore2 + ... + stScore11) / 11
longTermAvg = (ltScore1 + ltScore2 + ... + ltScore11) / 11
// Dual-Group Zone Optimization
overallAvg = (shortTermAvg + longTermAvg) / 2
allMAAvg = (shortTermAvg * 11 + longTermAvg * 11) / 22
🔶 Step-Like Boundary Evolution
Creates threshold-based trend boundaries that update on smoothed average changes, providing visual history of evolving bullish and bearish levels with performance-optimized threshold management limited to key zones for clean chart presentation and efficient processing.
🔶 Comprehensive Signal Detection
Generates buy and sell signals through sophisticated crossover analysis, monitoring smoothed average interaction with zero-line and thresholds for high-probability entry and exit identification. The system distinguishes between trend continuation and reversal patterns with precision timing.
🔶 Enhanced Visual Architecture
Provides translucent zone fills with gradient intensity scaling, threshold-based historical boundaries, and dynamic background highlighting that activates upon trend changes. The visual system uses institutional color coding with green bullish zones and red bearish zones for intuitive market structure interpretation.
🔶 Intelligent Zone Management
Implements automatic trend relevance filtering, displaying signals only when smoothed average proximity warrants analysis attention. The system maintains optimal performance through smart averaging management and historical level tracking with configurable MA periods for various market conditions.
🔶 Multi-Dimensional Analysis Framework
Combines trend continuation analysis through threshold crossovers with momentum detection via extreme markers, providing comprehensive market structure assessment suitable for both trending and ranging market conditions with score-normalized accuracy.
🔶 Advanced Alert Integration
Features comprehensive notification system covering buy signals, sell signals, strong bull conditions, and strong bear conditions with customizable alert conditions. The system enables precise position management through real-time notifications of critical sentiment interaction events and zone boundary violations.
🔶 Performance Optimization
Utilizes efficient MA smoothing algorithms with configurable types for noise reduction while maintaining responsiveness to genuine market structure changes. The system includes automatic visual level cleanup and performance-optimized visual rendering for smooth operation across all timeframes.
This indicator delivers sophisticated GMMA-based market analysis through score-adaptive averaging calculations and intelligent group construction methodology. By combining dynamic trader and investor sentiment detection with advanced signal generation and comprehensive visual mapping, it provides institutional-grade trend analysis suitable for cryptocurrency, forex, and equity markets. The system's ability to adapt to varying market conditions while maintaining signal accuracy makes it essential for traders seeking systematic approaches to trend trading, momentum reversals, and sentiment continuation analysis with clearly defined risk parameters and comprehensive alert integration.
Swing Oracle Stock// (\_/)
// ( •.•)
// (")_(")
📌 Swing Oracle Stock – Professional Cycle & Trend Detection Indicator
The Swing Oracle Stock is an advanced market analysis tool designed to highlight price cycles, trend shifts, and key trading zones with precision. It combines trendline dynamics, normalized oscillators, and multi-timeframe confirmation into a single comprehensive indicator.
🔑 Key Features
NDOS (Normalized Dynamic Oscillator System):
Measures price strength relative to recent highs and lows to detect overbought, neutral, and oversold zones.
Dynamic Trendline (EMA8 or SMA231):
Flexible source selection for adapting to different trading styles (scalping vs. swing).
Multi-Timeframe H1 Confirmation:
Adds higher-timeframe validation to improve signal reliability.
Automated Buy & Sell Signals:
Triggered only on significant crossovers above/below defined levels.
Weekly Cycles (7-day M5 projection):
Tracks recurring time-based market cycles to anticipate reversal points.
Intuitive Visualization:
Colored zones (high, low, neutral) for quick market context.
Optional background and candlestick coloring for better clarity.
Multi-Timeframe Cross Table:
Automatically compares SMA50 vs. EMA200 across multiple timeframes (1m → 4h), showing clear status:
⭐️⬆️ UP = bullish trend confirmation
💀⬇️ Drop = bearish trend confirmation
📊 Built-in Statistical Tools
Normalized difference between short and long EMA.
Projected normalized mean levels plotted directly on the main chart.
Dynamic analysis of price distance from SMA50 to capture market “waves.”
🎯 Use Cases
Spot trend reversals with multi-timeframe confirmation.
Identify powerful breakout and breakdown zones.
Time entries and exits based on trend + cycle confluence.
Enhance market timing for swing trades, scalps, or long-term positions.
⚡ Swing Oracle Stock brings together cycle detection, oscillator normalization, and multi-timeframe confirmation into one streamlined indicator for traders who want a professional edge.
Divergence TridentA Combination of MACD + VFI + WaveTrend
Tradingview hates me and is making me explain this in greater detail so maybe this is enough????
cd_HTF_bias_CxOverview:
No matter our trading style or model, to increase our success rate, we must move in the direction of the trend and align with the Higher Time Frame (HTF). Trading "gurus" call this the HTF bias. While we small fish tend to swim in all directions, the smart way is to flow with the big wave and the current. This indicator is designed to help us anticipate that major wave.
________________________________________
Details and Usage:
This indicator observes HTF price action across preferably seven different pairs, following specific rules. It confirms potential directional moves using CISD levels on a Medium Time Frame (MTF). In short, it forecasts the likely direction (HTF bias). The user can then search for trade opportunities aligned with this bias on a Lower Time Frame (LTF), using their preferred pair, entry model, and style.
________________________________________
Timeframe Alignment:
The commonly accepted LTF/MTF/HTF combinations include:
• 1m – 15m – H4
• 3m – H1 – Daily / 3m – 30m – Daily
• 5m – H1 – Daily
• 15m – H4 – Weekly
• H1 – Daily – Monthly
• H4 – Weekly – Quarterly
Example: If you're trading with a 3m model on a 30m/3m setup, you should seek trades in the direction of the H1/Daily bias.
________________________________________
How It Works:
The indicator first looks for sweeps on the selected HTF — when any of the last four candles are swept, the first condition is met.
The second step is confirmation with a CISD close on the MTF — once a candle closes above/below the CISD level, the second condition is fulfilled. This suggests the price has made its directional decision.
Example: If a previous HTF candle is swept and we receive a bearish CISD confirmation on H1, the HTF bias becomes bearish.
After this, you may switch to a more granular setup like HTF: 30m and MTF: 3m to look for trade entries aligned with the bias (e.g., 30m sweep + 3m CISD).
________________________________________
How Is Bias Determined?
• HTF Sweep + MTF CISD = SC (Sweep & CISD)
• Latest Bullish SC → Bias: Bullish
• Latest Bearish SC → Bias: Bearish
• Price closes above the last Bearish SC → Bias: Strong Bullish
• Price closes below the last Bullish SC → Bias: Strong Bearish
• Strong Bullish bias + Bearish CISD (without HTF sweep) → Bias: Bullish
• Strong Bearish bias + Bullish CISD (without HTF sweep) → Bias: Bearish
• Bearish price violates SC high, but Bullish SC is untouched → Bias: Bullish
• Bullish price violates SC low, but Bearish SC is untouched → Bias: Bearish
• If neither side generates SC → Bias: No Bias
The logic is built on the idea that a price overcoming resistance is stronger, and encountering resistance is weaker. This model is based on the well-known “Daily Bias” structure, but with personal refinements.
________________________________________
What’s on the Screen?
• Classic HTF zones (boxes)
• Potential MTF CISD levels
• Confirmed MTF lines
• Sweep zones when HTF sweeps occur
• Result table showing current bias status
________________________________________
Usage:
• Select HTF and MTF timeframes aligned with your trading timeframe.
• Adjust color and position settings as needed.
• Enter up to seven pairs to track via the menu.
• Use the checkbox next to each pair to enable/disable them.
• If “Ignore these assets” is checked, all pairs will be disabled, and only the currently open chart pair will be tracked.
________________________________________
Alerts:
You can choose alerts for Bullish, Bearish, Strong Bullish, or Strong Bearish conditions.
There are two types of alert sources:
1. From the indicator’s internal list
2. From TradingView’s watchlist
Visual example:
________________________________________
How I Use It:
• For spot trades, I use HTF: Weekly and MTF: H4 and look for Bullish or Strong Bullish pairs.
• For scalping, I follow bias from HTF: Daily and MTF: H1.
Example: If the indicator shows a Bearish HTF Bias, I switch to HTF: 30m and MTF: 3m and enter trades once bearish conditions are met (timeframe alignment).
________________________________________
Important Notes:
• The indicator defines CISD levels only at HTF high and low levels.
• If your chart is on a higher timeframe than your selected HTF/MTF, no data will appear.
Example: If HTF = H1 and MTF = 5m, opening a chart on H4 will result in a blank screen.
• The drawn CISD level on screen is the MTF CISD level.
• Not every alert should be traded. Always confirm with personal experience and visual validation.
• Receiving multiple Strong Bullish/Bearish alerts is intentional. (Trick 😊)
• Please share your feedback and suggestions!
________________________________________
And Most Importantly:
Don't leave street animals without water and food!
Happy trading!
WT_CROSS Dip Buy Signal(ozkan)This script identifies potential buy opportunities based on WaveTrend (WT_CROSS) momentum crossing below the -60 level — often indicating oversold conditions.
Additional filters include price being above the Kaufman Adaptive Moving Average (KAMA) and volume below the 5-period average, which helps isolate pullbacks within an uptrend.
Buy Signal Conditions:
WT1 < -60
Price > KAMA
Volume < 5-period SMA of volume
Purpose:
To capture early entries at possible local bottoms during bullish trends while avoiding high-volume breakdown traps.
🔔 You can also set an alert based on this condition.
Quantum State Superposition Indicator (QSSI)Quantum State Superposition Indicator (QSSI) - Where Physics Meets Finance
The Quantum Revolution in Market Analysis
After months of research into quantum mechanics and its applications to financial markets, I'm thrilled to present the Quantum State Superposition Indicator (QSSI) - a groundbreaking approach that models price action through the lens of quantum physics. This isn't just another technical indicator; it's a paradigm shift in how we understand market behavior.
The Theoretical Foundation
Quantum Superposition in Markets
In quantum mechanics, particles exist in multiple states simultaneously until observed. Similarly, markets exist in a superposition of potential states (bullish, bearish, neutral) until a significant volume event "collapses" the wave function into a definitive direction.
The mathematical framework:
Wave Function (Ψ): Represents the market's quantum state as a weighted sum of all possible states:
Ψ = Σ(αᵢ × Sᵢ)
Where αᵢ are probability amplitudes and Sᵢ are individual quantum states.
Probability Amplitudes: Calculated using the Born rule, normalized so Σ|αᵢ|² = 1
Observation Operator: Volume/Average Volume ratio determines observation strength
The Five Quantum States
Momentum State: Short-term price velocity (EMA of returns)
Mean Reversion State: Deviation from equilibrium (normalized z-score)
Volatility Expansion State: ATR relative to historical average
Trend Continuation State: Long-term price positioning
Chaos State: Volatility of volatility (market uncertainty)
Each state contributes to the overall wave function based on current market conditions.
Wave Function Collapse
When volume exceeds the observation threshold (default 1.5x average), the wave function "collapses," committing the market to a direction. This models how institutional volume forces markets out of uncertainty into trending states.
Collapse Detection Formula:
Collapse = Volume > (Threshold × Average Volume)
Direction = Sign(Ψ) at collapse moment
Advanced Quantum Concepts
Heisenberg Uncertainty Principle
The indicator calculates market uncertainty as the product of price and momentum
uncertainties:
ΔP × ΔM = ℏ (market uncertainty constant)
This manifests as dynamic uncertainty bands that widen during unstable periods.
Quantum Tunneling
Calculates the probability of price "tunneling" through resistance/support barriers:
P(tunnel) = e^(-2×|barrier_height|×√coherence_length)
Unlike classical technical analysis, this gives probability of breakouts before they occur.
Entanglement
Measures the quantum correlation between price and volume:
Entanglement = |Correlation(Price, Volume, lookback)|
High entanglement suggests coordinated institutional activity.
Decoherence
When market states lose quantum properties and behave classically:
Decoherence = 1 - Σ(amplitude²)
Indicates trend emergence from quantum uncertainty.
Visual Innovation
Probability Clouds
Three-tier probability distributions visualize market uncertainty:
Inner Cloud (68%): One standard deviation - most likely price range
Middle Cloud (95%): Two standard deviations - probable extremes
Outer Cloud (99.7%): Three standard deviations - tail risk zones
Cloud width directly represents market uncertainty - wider clouds signal higher entropy states.
Quantum State Visualization
Colored dots represent individual quantum states:
Green: Momentum state strength
Red: Mean reversion state strength
Yellow: Volatility state strength
Dot brightness indicates amplitude (influence) of each state.
Collapse Events
Aqua Diamonds (Above): Bullish collapse - upward commitment
Pink Diamonds (Below): Bearish collapse - downward commitment
These mark precise moments when markets exit superposition.
Implementation Details
Core Calculations
Feature Extraction: Normalize price returns, volume ratios, and volatility measures
State Calculation: Compute each quantum state's value
Amplitude Assignment: Weight states by market conditions and observation strength
Wave Function: Sum weighted states for final market quantum state
Visualization: Transform quantum values to price space for display
Performance Optimization
- Efficient array operations for state calculations
- Single-pass normalization algorithms
- Optimized correlation calculations for entanglement
- Smart label management to prevent visual clutter
Trading Applications:
Signal Generation
Bullish Signals:
- Positive wave function during collapse
- High tunneling probability at support
- Coherent market state with bullish bias
Bearish Signals:
- Negative wave function during collapse
- High tunneling probability at resistance
- Decoherent state transitioning bearish
Risk Management
Uncertainty-Based Position Sizing:
Narrow clouds: Normal position size
Wide clouds: Reduced position size
Extreme uncertainty: Stay flat
Quantum Stop Losses:
- Place stops outside probability clouds
- Adjust for Heisenberg uncertainty
- Respect quantum tunneling levels
Market Regime Recognition
Quantum Coherent (Superposed):
- Market in multiple states
- Avoid directional trades
- Prepare for collapse
Quantum Decoherent (Classical):
-Clear trend emergence
- Follow directional signals
- Traditional analysis applies
Advanced Features
Adaptive Dashboards
Quantum State Panel: Real-time wave function, dominant state, and coherence status
Performance Metrics: Win rate, signal frequency, and regime analysis
Information Guide: Comprehensive explanation of all quantum concepts
- All dashboards feature adjustable sizing for different screen resolutions.
Multi-Timeframe Quantum Analysis
The indicator adapts to any timeframe:
Scalping (1-5m): Short coherence length, sensitive thresholds
Day Trading (15m-1H): Balanced parameters
Swing Trading (4H-1D): Long coherence, stable states
Alert System
Sophisticated alerts for:
- Wave function collapse events
- Decoherence transitions
- High tunneling probability
- Strong entanglement detection
Originality & Innovation
This indicator introduces several firsts:
Quantum Superposition: First to model markets as quantum systems
Wave Function Collapse: Original volume-triggered state commitment
Tunneling Probability: Novel breakout prediction method
Entanglement Metrics: Unique price-volume quantum correlation
Probability Clouds: Revolutionary uncertainty visualization
Development Journey
Creating QSSI required:
- Deep study of quantum mechanics principles
- Translation of physics equations to market context
- Extensive backtesting across multiple markets
- UI/UX optimization for trader accessibility
- Performance optimization for real-time calculation
- The result bridges cutting-edge physics with practical trading.
Best Practices
Parameter Optimization
Quantum States (2-5):
- 2-3 for simple markets (forex majors)
- 4-5 for complex markets (indices, crypto)
Coherence Length (10-50):
- Lower for fast markets
- Higher for stable markets
Observation Threshold (1.0-3.0):
- Lower for active markets
- Higher for thin markets
Signal Confirmation
Always confirm quantum signals with:
- Market structure (support/resistance)
- Volume patterns
- Correlated assets
- Fundamental context
Risk Guidelines
- Never risk more than 2% per trade
- Respect probability cloud boundaries
- Exit on decoherence shifts
- Scale with confidence levels
Educational Value
QSSI teaches advanced concepts:
- Quantum mechanics applications
- Probability theory
- Non-linear dynamics
- Risk management
- Market microstructure
Perfect for traders seeking deeper market understanding.
Disclaimer
This indicator is for educational and research purposes only. While quantum mechanics provides a fascinating framework for market analysis, no indicator can predict future prices with certainty. The probabilistic nature of both quantum mechanics and markets means outcomes are inherently uncertain.
Always use proper risk management, conduct thorough analysis, and never risk more than you can afford to lose. Past performance does not guarantee future results.
Conclusion
The Quantum State Superposition Indicator represents a revolutionary approach to market analysis, bringing institutional-grade quantum modeling to retail traders. By viewing markets through the lens of quantum mechanics, we gain unique insights into uncertainty, probability, and state transitions that classical indicators miss.
Whether you're a physicist interested in finance or a trader seeking cutting-edge tools, QSSI opens new dimensions in market analysis.
"The market, like Schrödinger's cat, exists in multiple states until observed through volume."
* As you may have noticed, the past two indicators I've released (Lorentzian Classification and Quantum State Superposition) are designed with strategy implementation in mind. I'm currently developing a stable execution platform that's completely unique and moves away from traditional ATR-based position sizing and stop loss systems. I've found ATR-based approaches to be unreliable in volatile markets and regime transitions - they often lag behind actual market conditions and can lead to premature exits or oversized positions during volatility spikes.
The goal is to create something that adapts to market conditions in real-time using the quantum and relativistic principles we've been exploring. Hopefully I'll have something groundbreaking to share soon. Stay tuned!
Trade with quantum insight. Trade with QSSI .
— Dskyz , for DAFE Trading Systems
Macd, Wt Cross & HVPMacd Wt Cross & HVP – Advanced Multi-Signal Indicator
This script is a custom-designed multi-signal indicator that brings together three proven concepts to provide a complete view of market momentum, reversals, and volatility build-ups. It is built for traders who want to anticipate key market moves, not just react to them.
Why This Combination ?
While each tool has its strengths, their combined use creates powerful signal confluence.
Instead of juggling multiple indicators separately, this script synchronizes three key perspectives into a single, intuitive display—helping you trade with greater clarity and confidence.
1. MACD Histogram – Momentum and Trend Clarity
At the core of the indicator is the MACD histogram, calculated as the difference between two exponential moving averages (EMAs).
Color-coded bars represent momentum direction and intensity:
Green / blue bars: bullish momentum
Red / pink bars: bearish momentum
Color intensity shows acceleration or weakening of trend.
This visual makes it easy to detect trend shifts and momentum divergence at a glance.
2. WT Cross Signals – Early Reversal Detection
Overlaid on the histogram are green and red dots, based on the logic of the WaveTrend oscillator cross:
Green dots = potential bullish cross (buy signal)
Red dots = potential bearish cross (sell signal)
These signals are helpful for identifying reversal points during both trending and ranging phases.
3. Historical Volatility Percentile (HVP) – Volatility Compression Zones
Behind the histogram, purple vertical zones highlight periods of low historical volatility, based on the HVP:
When volatility compresses below a specific threshold, these zones appear.
Such periods are often followed by explosive price moves, making them prime areas for pre-breakout positioning.
By integrating HVP, the script doesn’t just tell you where the trend is—it tells you when the trend is likely to erupt.
How to Use This Script
Use the MACD histogram to confirm the dominant trend and its strength.
Watch for WT Cross dots as potential entry/exit signals in alignment or divergence with the MACD.
Monitor HVP purple zones as warnings of incoming volatility expansions—ideal moments to prepare for breakout trades.
Best results occur when all three elements align, offering a high-probability trade setup.
What Makes This Script Original?
Unlike many mashups, this script was not created by simply merging indicators. Each component was carefully integrated to serve a specific, complementary purpose:
MACD detects directional bias
WT Cross adds precision timing
HVP anticipates volatility-based breakout timing
This results in a strategic tool for traders, useful on multiple timeframes and adaptable to different trading styles (trend-following, breakout, swing).
[blackcat] L2 Ehlers Autocorrelation Indicator V2OVERVIEW
The Ehlers Autocorrelation Indicator is a technical analysis tool developed by John F. Ehlers that measures the correlation between price data and its lagged versions to identify potential market cycles and reversals.
BACKGROUND
Originally introduced in Ehlers' "Cycle Analytics for Traders" (2013), this indicator leverages autocorrelation principles to detect patterns in market data that deviate from random noise or perfect sine waves.
FEATURES
• Calculates Pearson correlation coefficients for lags from 0 to 60 bars
• Visualizes correlations using colored bars ranging from red (negative correlation) to yellow (positive correlation)
• Provides minimum averaging option through AvgLength input parameter
• Displays sharp reversal signals at price turning points
• Shows variations in bar thickness and count over time
HOW TO USE
Add the indicator to your chart
Adjust the AvgLength input as needed:
• Set to 0 for no averaging
• Increase value for smoother results
Interpret the colored bars:
• Red: Negative correlation
• Yellow: Positive correlation
• Sharp transitions indicate potential reversal points
LIMITATIONS
• Requires sufficient historical data for accurate calculations
• Performance may vary across different market conditions
• Results depend on proper parameter settings
NOTES
• The indicator uses highpass filtering and super smoother filtering techniques
• Color intensity varies based on correlation strength
• Multiple lag periods are displayed simultaneously for comprehensive analysis
THANKS
This implementation is based on Ehlers' original work and has been adapted for TradingView's Pine Script platform.
Squeeze Momentum Indicator Strategy [LazyBear + PineIndicators]The Squeeze Momentum Indicator Strategy (SQZMOM_LB Strategy) is an automated trading strategy based on the Squeeze Momentum Indicator developed by LazyBear, which itself is a modification of John Carter's "TTM Squeeze" concept from his book Mastering the Trade (Chapter 11). This strategy is designed to identify low-volatility phases in the market, which often precede explosive price movements, and to enter trades in the direction of the prevailing momentum.
Concept & Indicator Breakdown
The strategy employs a combination of Bollinger Bands (BB) and Keltner Channels (KC) to detect market squeezes:
Squeeze Condition:
When Bollinger Bands are inside the Keltner Channels (Black Crosses), volatility is low, signaling a potential upcoming price breakout.
When Bollinger Bands move outside Keltner Channels (Gray Crosses), the squeeze is released, indicating an expansion in volatility.
Momentum Calculation:
A linear regression-based momentum value is used instead of traditional momentum indicators.
The momentum histogram is color-coded to show strength and direction:
Lime/Green: Increasing bullish momentum
Red/Maroon: Increasing bearish momentum
Signal Colors:
Black: Market is in a squeeze (low volatility).
Gray: Squeeze is released, and volatility is expanding.
Blue: No squeeze condition is present.
Strategy Logic
The script uses historical volatility conditions and momentum trends to generate buy/sell signals and manage positions.
1. Entry Conditions
Long Position (Buy)
The squeeze just released (Gray Cross after Black Cross).
The momentum value is increasing and positive.
The momentum is at a local low compared to the past 100 bars.
The price is above the 100-period EMA.
The closing price is higher than the previous close.
Short Position (Sell)
The squeeze just released (Gray Cross after Black Cross).
The momentum value is decreasing and negative.
The momentum is at a local high compared to the past 100 bars.
The price is below the 100-period EMA.
The closing price is lower than the previous close.
2. Exit Conditions
Long Exit:
The momentum value starts decreasing (momentum lower than previous bar).
Short Exit:
The momentum value starts increasing (momentum higher than previous bar).
Position Sizing
Position size is dynamically adjusted based on 8% of strategy equity, divided by the current closing price, ensuring risk-adjusted trade sizes.
How to Use This Strategy
Apply on Suitable Markets:
Best for stocks, indices, and forex pairs with momentum-driven price action.
Works on multiple timeframes but is most effective on higher timeframes (1H, 4H, Daily).
Confirm Entries with Additional Indicators:
The author recommends ADX or WaveTrend to refine entries and avoid false signals.
Risk Management:
Since the strategy dynamically sizes positions, it's advised to use stop-losses or risk-based exits to avoid excessive drawdowns.
Final Thoughts
The Squeeze Momentum Indicator Strategy provides a systematic approach to trading volatility expansions, leveraging the classic TTM Squeeze principles with a unique linear regression-based momentum calculation. Originally inspired by John Carter’s method, LazyBear's version and this strategy offer a refined, adaptable tool for traders looking to capitalize on market momentum shifts.
Sigma 2.0 - Advanced Buy and Sell Signal IndicatorOverview:
Sigma 2.0 is a sophisticated trading indicator designed to help traders identify potential buy and sell opportunities across various financial markets. By leveraging advanced mathematical calculations and incorporating multiple analytical tools, Sigma 2.0 aims to enhance trading strategies by providing precise entry and exit signals.
Key Features:
Advanced Sigma Calculations:
Utilizes a combination of Exponential Moving Averages (EMAs) and price deviations to calculate the Sigma lines (sigma1 and sigma2).
Detects potential trend reversals through the crossover of these Sigma lines.
Customizable Signal Filtering:
Offers the ability to filter buy and sell signals based on user-defined thresholds.
Helps reduce false signals in volatile markets by setting overbought and oversold levels.
Overbought and Oversold Detection:
Identifies extreme market conditions where price reversals are more likely.
Changes the background color of the chart to visually indicate overbought or oversold states.
Integration of Exponential Moving Averages (EMAs):
Includes EMAs of different lengths (10, 21, 55, 200) to assist in identifying market trends.
EMAs act as dynamic support and resistance levels.
Higher Timeframe Signal Incorporation:
Allows users to include signals from a higher timeframe to align trades with the broader market trend.
Enhances the reliability of signals by considering multiple timeframes.
Custom Alerts:
Provides alert conditions for both buy and sell signals.
Enables traders to receive notifications, ensuring timely decision-making.
How It Works:
Sigma Calculation Methodology:
The indicator calculates an average price (ap) and applies EMAs to derive the Sigma lines.
sigma1 represents the smoothed price deviation, while sigma2 is a moving average of sigma1.
A crossover of sigma1 above sigma2 generates a buy signal, indicating potential upward momentum.
Conversely, a crossover of sigma1 below sigma2 generates a sell signal.
Signal Filtering and Thresholds:
Users can enable filtering to only consider signals when sigma1 is below or above certain thresholds.
This helps in focusing on more significant market movements and reducing noise.
Overbought/Oversold Levels:
The indicator monitors sigma1 to detect when the market is in extreme conditions.
Background color changes provide a quick visual cue for these conditions.
EMA Analysis:
The plotted EMAs help in confirming the trend direction.
They can be used alongside Sigma signals to validate trade entries and exits.
Higher Timeframe Signals:
Incorporates signals from a user-selected higher timeframe.
Helps in aligning trades with the overall market trend, increasing the potential success rate.
How to Use:
Adding the Indicator to Your Chart:
Search for "Sigma 2.0" in the TradingView Indicators menu and add it to your chart.
Configuring the Settings:
Adjust the Sigma configurations (Channel Length, Average Length, Signal Line Length) to suit your trading style.
Set the overbought and oversold levels according to your risk tolerance.
Choose whether to filter signals by thresholds.
Select the higher timeframe for additional signal confirmation.
Interpreting the Signals:
Buy Signals:
Indicated by a green triangle below the price bar.
Occur when sigma1 crosses above sigma2 and other conditions are met.
Sell Signals:
Indicated by a red triangle above the price bar.
Occur when sigma1 crosses below sigma2 and other conditions are met.
Higher Timeframe Signals:
Plotted with lime (buy) and maroon (sell) triangles.
Help confirm signals in the current timeframe.
Utilizing EMAs:
Observe the EMAs to gauge the overall trend.
Consider aligning buy signals when the price is above key EMAs and sell signals when below.
Setting Up Alerts:
Use the built-in alert conditions to receive notifications for buy and sell signals.
Customize alert messages as needed.
Credits:
Original Concept Inspiration:
This indicator is inspired by the WaveTrend oscillator and other momentum-based indicators.
Special thanks to the original authors whose work laid the foundation for this enhanced version.
Disclaimer:
Trading involves significant risk, and past performance is not indicative of future results.
This indicator is a tool to assist in analysis and should not be the sole basis for any trading decision.
Always perform thorough analysis and consider multiple factors before entering a trade.
Note:
Ensure your chart is clean and only includes this indicator when publishing.
The script is open-source and can be modified to fit individual trading strategies.
For any questions or support, feel free to reach out or comment.
ABCD Projection [Trendoscope®]Over the years, we have extensively explored and published numerous scripts centered around various chart patterns, including Harmonic Patterns, Reversal Patterns, Elliott Waves, and more. Our expertise in these areas has led to frequent requests for an indicator based on the ABCD pattern. Although we didn't include it as part of our Harmonic Patterns collection, the development of a dedicated ABCD Projection Indicator has always been a priority for us.
🎲 Overview of the ABCD Projection Indicator
The ABCD Projection Indicator is designed to identify and project ABCD patterns using a Zigzag-based approach. This pattern, characterized by alternating pivot highs and lows labeled as A, B, C, and D, is particularly significant in trending markets where it signifies trend continuation following deep pullbacks.
The indicator works by confirming the ABC pivots and projecting the D pivot based on the established price swings. Since ABCD patterns are most effective in trending environments, the indicator focuses on filtering patterns where the retracement from the C pivot has not compromised the trade's potential. Specifically, it ensures that the starting point (S)—where the pattern is detected—has not retraced beyond a defined threshold, preserving the opportunity to execute a trade with the goal of reaching the projected D pivot.
Additionally, the ABCD Projection Indicator considers the retracement ratio from the C pivot, which plays a crucial role in risk management. A higher retracement ratio reduces the stop distance (from pivot A to the entry point S) while increasing the distance to the target (pivot D), thereby enhancing the reward/risk ratio for trades.
🎲 Components of the ABCD Projection Indicator
The ABCD Projection Indicator comprises several key components:
A, B, C Pivots and Zigzag Wave : These elements form the foundational structure of the ABCD pattern.
S Point : This is the location where the pattern is identified, positioned a few bars away from the confirmed C pivot.
Estimated D Pivot : The D pivot is projected based on the A, B, and C price levels. The time or distance to the D pivot is influenced by the starting point S.
Mini Stats Table : Located in the top right corner, this table displays win/loss ratios and risk/reward data for both bullish and bearish scenarios.
Fibonacci Levels : Calculated from the C to D pivots, these levels are provided as a reference for additional analysis.
🎲 Indicator Settings
The settings for the ABCD Projection Indicator are minimal and intuitive, with tooltips provided to guide users through the configuration process.
Harmonic Patterns Library [TradingFinder]🔵 Introduction
Harmonic patterns blend geometric shapes with Fibonacci numbers, making these numbers fundamental to understanding the patterns.
One person who has done a lot of research on harmonic patterns is Scott Carney.Scott Carney's research on harmonic patterns in technical analysis focuses on precise price structures based on Fibonacci ratios to identify market reversals.
Key patterns include the Gartley, Bat, Butterfly, and Crab, each with specific alignment criteria. These patterns help traders anticipate potential market turning points and make informed trading decisions, enhancing the predictability of technical analysis.
🟣 Understanding 5-Point Harmonic Patterns
In the current library version, you can easily draw and customize most XABCD patterns. These patterns often form M or W shapes, or a combination of both. By calculating the Fibonacci ratios between key points, you can estimate potential price movements.
All five-point patterns share a similar structure, differing only in line lengths and Fibonacci ratios. Learning one pattern simplifies understanding others.
🟣 Exploring the Gartley Pattern
The Gartley pattern appears in both bullish (M shape) and bearish (W shape) forms. In the bullish Gartley, point X is below point D, and point A surpasses point C. Point D marks the start of a strong upward trend, making it an optimal point to place a buy order.
The bearish Gartley mirrors the bullish pattern with inverted Fibonacci ratios. In this scenario, point D indicates the start of a significant price drop. Traders can place sell orders at this point and buy at lower prices for profit in two-way markets.
🟣 Analyzing the Butterfly Pattern
The Butterfly pattern also manifests in bullish (M shape) and bearish (W shape) forms. It resembles the Gartley pattern but with point D lower than point X in the bullish version.
The Butterfly pattern involves deeper price corrections than the Gartley, leading to more significant price fluctuations. Point D in the bullish Butterfly indicates the beginning of a sharp price rise, making it an entry point for buy orders.
The bearish Butterfly has inverted Fibonacci ratios, with point D marking the start of a sharp price decline, ideal for sell orders followed by buying at lower prices in two-way markets.
🟣 Insights into the Bat Pattern
The Bat pattern, appearing in bullish (M shape) and bearish (W shape) forms, is one of the most precise harmonic patterns. It closely resembles the Butterfly and Gartley patterns, differing mainly in Fibonacci levels.
The bearish Bat pattern shares the Fibonacci ratios with the bullish Bat, with an inverted structure. Point D in the bearish Bat marks the start of a significant price drop, suitable for sell orders followed by buying at lower prices for profit.
🟣 The Crab Pattern Explained
The Crab pattern, found in both bullish (M shape) and bearish (W shape) forms, is highly favored by analysts. Discovered in 2000, the Crab pattern features a larger final wave correction compared to other harmonic patterns.
The bearish Crab shares Fibonacci ratios with the bullish version but in an inverted form. Point D in the bearish Crab signifies the start of a sharp price decline, making it an ideal point for sell orders followed by buying at lower prices for profitable trades.
🟣 Understanding the Shark Pattern
The Shark pattern appears in bullish (M shape) and bearish (W shape) forms. It differs from previous patterns as point C in the bullish Shark surpasses point A, with unique level measurements.
The bearish Shark pattern mirrors the Fibonacci ratios of the bullish Shark but is inverted. Point D in the bearish Shark indicates the start of a sharp price drop, ideal for placing sell orders and buying at lower prices to capitalize on the pattern.
🟣 The Cypher Pattern Overview
The Cypher pattern is another that appears in both bullish (M shape) and bearish (W shape) forms. It resembles the Shark pattern, with point C in the bullish Cypher extending beyond point A, and point D forming within the XA line.
The bearish Cypher shares the Fibonacci ratios with the bullish Cypher but in an inverted structure. Point D in the bearish Cypher marks the start of a significant price drop, perfect for sell orders followed by buying at lower prices.
🟣 Introducing the Nen-Star Pattern
The Nen-Star pattern appears in both bullish (M shape) and bearish (W shape) forms. In the bullish Nen-Star, point C extends beyond point A, and point D, the final point, forms outside the XA line, making CD the longest wave.
The bearish Nen-Star has inverted Fibonacci ratios, with point D indicating the start of a significant price drop. Traders can place sell orders at point D and buy at lower prices to profit from this pattern in two-way markets.
The 5-point harmonic patterns, commonly referred to as XABCD patterns, are specific geometric price structures identified in financial markets. These patterns are used by traders to predict potential price movements based on historical price data and Fibonacci retracement levels.
Here are the main 5-point harmonic patterns :
Gartley Pattern
Anti-Gartley Pattern
Bat Pattern
Anti-Bat Pattern
Alternate Bat Pattern
Butterfly Pattern
Anti-Butterfly Pattern
Crab Pattern
Anti-Crab Pattern
Deep Crab Pattern
Shark Pattern
Anti- Shark Pattern
Anti Alternate Shark Pattern
Cypher Pattern
Anti-Cypher Pattern
🔵 How to Use
To add "Order Block Refiner Library", you must first add the following code to your script.
import TFlab/Harmonic_Chart_Pattern_Library_TradingFinder/1 as HP
🟣 Parameters
XABCD(Name, Type, Show, Color, LineWidth, LabelSize, ShVF, FLPC, FLPCPeriod, Pivot, ABXAmin, ABXAmax, BCABmin, BCABmax, CDBCmin, CDBCmax, CDXAmin, CDXAmax) =>
Parameters:
Name (string)
Type (string)
Show (bool)
Color (color)
LineWidth (int)
LabelSize (string)
ShVF (bool)
FLPC (bool)
FLPCPeriod (int)
Pivot (int)
ABXAmin (float)
ABXAmax (float)
BCABmin (float)
BCABmax (float)
CDBCmin (float)
CDBCmax (float)
CDXAmin (float)
CDXAmax (float)
🟣 Genaral Parameters
Name : The name of the pattern.
Type: Enter "Bullish" to draw a Bullish pattern and "Bearish" to draw an Bearish pattern.
Show : Enter "true" to display the template and "false" to not display the template.
Color : Enter the desired color to draw the pattern in this parameter.
LineWidth : You can enter the number 1 or numbers higher than one to adjust the thickness of the drawing lines. This number must be an integer and increases with increasing thickness.
LabelSize : You can adjust the size of the labels by using the "size.auto", "size.tiny", "size.smal", "size.normal", "size.large" or "size.huge" entries.
🟣 Logical Parameters
ShVF : If this parameter is on "true" mode, only patterns will be displayed that they have exact format and no noise can be seen in them. If "false" is, the patterns displayed that maybe are noisy and do not exactly correspond to the original pattern.
FLPC : if Turned on, you can see this ability of patterns when their last pivot is formed. If this feature is off, it will see the patterns as soon as they are formed. The advantage of this option being clear is less formation of fielded patterns, and it is accompanied by the lateest pattern seeing and a sharp reduction in reward to risk.
FLPCPeriod : Using this parameter you can determine that the last pivot is based on Pivot period.
Pivot : You need to determine the period of the zigzag indicator. This factor is the most important parameter in pattern recognition.
ABXAmin : Minimum retracement of "AB" line compared to "XA" line.
ABXAmax : Maximum retracement of "AB" line compared to "XA" line.
BCABmin : Minimum retracement of "BC" line compared to "AB" line.
BCABmax : Maximum retracement of "BC" line compared to "AB" line.
CDBCmin : Minimum retracement of "CD" line compared to "BC" line.
CDBCmax : Maximum retracement of "CD" line compared to "BC" line.
CDXAmin : Minimum retracement of "CD" line compared to "XA" line.
CDXAmax : Maximum retracement of "CD" line compared to "XA" line.
🟣 Function Outputs
This library has two outputs. The first output is related to the alert of the formation of a new pattern. And the second output is related to the formation of the candlestick pattern and you can draw it using the "plotshape" tool.
Candle Confirmation Logic :
Example :
import TFlab/Harmonic_Chart_Pattern_Library_TradingFinder/1 as HP
PP = input.int(3, 'ZigZag Pivot Period')
ShowBull = input.bool(true, 'Show Bullish Pattern')
ShowBear = input.bool(true, 'Show Bearish Pattern')
ColorBull = input.color(#0609bb, 'Color Bullish Pattern')
ColorBear = input.color(#0609bb, 'Color Bearish Pattern')
LineWidth = input.int(1 , 'Width Line')
LabelSize = input.string(size.small , 'Label size' , options = )
ShVF = input.bool(false , 'Show Valid Format')
FLPC = input.bool(false , 'Show Formation Last Pivot Confirm')
FLPCPeriod =input.int(2, 'Period of Formation Last Pivot')
//Call function
= HP.XABCD('Bullish Bat', 'Bullish', ShowBull, ColorBull , LineWidth, LabelSize ,ShVF, FLPC, FLPCPeriod, PP, 0.382, 0.50, 0.382, 0.886, 1.618, 2.618, 0.85, 0.9)
= HP.XABCD('Bearish Bat', 'Bearish', ShowBear, ColorBear , LineWidth, LabelSize ,ShVF, FLPC, FLPCPeriod, PP, 0.382, 0.50, 0.382, 0.886, 1.618, 2.618, 0.85, 0.9)
//Alert
if BearAlert
alert('Bearish Harmonic')
if BullAlert
alert('Bulish Harmonic')
//CandleStick Confirm
plotshape(BearCandleConfirm, style = shape.arrowdown, color = color.red)
plotshape(BullCandleConfirm, style = shape.arrowup, color = color.green, location = location.belowbar )
VolumeSpreadAnalysisLibrary "VolumeSpreadAnalysis"
A library for Volume Spread Analysis (VSA).
spread(_barIndex)
Calculates the spread of a bar.
Parameters:
_barIndex (int) : (int) The index of the bar.
Returns: (float) The spread of the bar.
volume(_barIndex)
Retrieves the volume of a bar.
Parameters:
_barIndex (int) : (int) The index of the bar.
Returns: (float) The volume of the bar.
body(_barIndex)
Calculates the body of a bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The body size of the bar.
wickUpper(_barIndex)
Calculates the upper wick of a bar (upper shadow).
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The upper wick size of the bar.
wickLower(_barIndex)
Calculates the lower wick of a bar (lower shadow).
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The lower wick size of the bar.
calcForecastedSMA(_source, _length, _forecastedLevel)
Calculates the forecasted Simple Moving Average (SMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the SMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted SMA value.
calcForecastedEMA(_source, _length, _forecastedLevel)
Calculates the forecasted Exponential Moving Average (EMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the EMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted EMA value.
calcForecastedRMA(_source, _length, _forecastedLevel)
Calculates the forecasted Relative Moving Average (RMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the RMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted RMA value.
calcForecastedWMA(_source, _length, _forecastedLevel)
Calculates the forecasted Weighted Moving Average (WMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the WMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted WMA value.
calcElapsedTimePercent()
Calculates the elapsed time percent of the current bar.
Returns: (float) The elapsed time percent.
calcForecastedSpread(multiplierAtMidpoints, multiplierAtPeaks)
Calculates the forecasted spread using elapsed time and dynamic multipliers, handling spread's non-linear nature.
Parameters:
multiplierAtMidpoints (float) : (float) The multiplier value at midpoints.
multiplierAtPeaks (float) : (float) The multiplier value at peaks.
Returns: (float) The forecasted spread value.
calcForecastedVolume()
Calculates the forecasted volume using elapsed time, satisfying volume's linear nature.
Returns: (float) The forecasted volume value.
calcForecastedMA(_source, _length, _forecastedSource, _type)
Calculates the forecasted Moving Average (MA) based on the specified type.
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the MA.
_forecastedSource (float) : (float) The forecasted level to include in the calculation.
_type (simple string) : (string) The type of the MA ("SMA", "EMA", "SMMA (RMA)", "WMA").
Returns: (float) The forecasted MA value.
calcMA(_source, _length, _type)
Calculates the Moving Average (MA) based on the specified type.
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the MA.
_type (simple string) : (string) The type of the MA ("SMA", "EMA", "SMMA (RMA)", "WMA").
Returns: (float) The MA value.
bullBar(_barIndex)
Determines if the bar is bullish.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if the bar is bullish, otherwise false.
bearBar(_barIndex)
Determines if the bar is bearish.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if the bar is bearish, otherwise false.
breakout(_barIndex)
Determines if there is a breakout above the previous bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if there is a breakout, otherwise false.
breakdown(_barIndex)
Determines if there is a breakdown below the previous bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if there is a breakdown, otherwise false.
rejectionWickUpper(_rejectionWick)
Determines if the upper wick is a rejection wick.
Parameters:
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if the upper wick is a rejection wick, otherwise false.
rejectionWickLower(_rejectionWick)
Determines if the lower wick is a rejection wick.
Parameters:
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if the lower wick is a rejection wick, otherwise false.
setupDataVolume(_data, _mult_Low, _mult_High, _mult_Ultra, _maLengthVolume, _maTypeVolume)
Sets up data for volume levels.
Parameters:
_data (map) : (map) The map to store the levels.
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthVolume (simple int) : (int) The length for MA.
_maTypeVolume (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataSpread(_data, _mult_Low, _mult_High, _mult_Ultra, _maLengthSpread, _maTypeSpread)
Sets up data for spread levels.
Parameters:
_data (map) : (map) The map to store the levels.
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthSpread (simple int) : (int) The length for MA.
_maTypeSpread (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataForecastVolume(_dataForecast, _mult_Low, _mult_High, _mult_Ultra, _maLengthVolume, _predictedLevelVolume, _maTypeVolume)
Sets up data for volume and spread levels for forecast.
Parameters:
_dataForecast (map)
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthVolume (simple int) : (int) The length for MA.
_predictedLevelVolume (float) : (float) The predicted level for MA.
_maTypeVolume (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataForecastSpread(_dataForecast, _mult_Low, _mult_High, _mult_Ultra, _maLengthSpread, _predictedLevelSpread, _maTypeSpread)
Sets up data for spread levels for forecast.
Parameters:
_dataForecast (map)
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthSpread (simple int) : (int) The length for MA.
_predictedLevelSpread (float) : (float) The predicted level for MA.
_maTypeSpread (simple string) : (string) The type for MA.
Returns: (void) Nothing.
isVolumeLow(_data, _barIndex)
Determines if the volume is low.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is low, otherwise false.
isVolumeNormal(_data, _barIndex)
Determines if the volume is normal.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is normal, otherwise false.
isVolumeHigh(_data, _barIndex)
Determines if the volume is high.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is high, otherwise false.
isVolumeUltra(_data, _barIndex)
Determines if the volume is ultra.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is ultra, otherwise false.
isSpreadLow(_data, _barIndex)
Determines if the spread is low.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is low, otherwise false.
isSpreadNormal(_data, _barIndex)
Determines if the spread is normal.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is normal, otherwise false.
isSpreadHigh(_data, _barIndex)
Determines if the spread is high.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is high, otherwise false.
isSpreadUltra(_data, _barIndex)
Determines if the spread is ultra.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is ultra, otherwise false.
isVolumeText(_data)
Determines text string representing the volume area level.
Parameters:
_data (map) : (map) The data map with volume levels.
Returns: (string) Text string of Low, Normal, High, or Ultra.
isSpreadText(_data)
Determines text string representing the spread area level.
Parameters:
_data (map) : (map) The data map with spread levels.
Returns: (string) Text string of Low, Normal, High, or Ultra.
calcBarColor(_value, _level)
Calculates the color based level.
Parameters:
_value (float) : (float) The value to check.
_level (float) : (float) The value level for comparison.
Returns: (color) The color for the bar.
bullPinBar(_maxBodyPercent, _minWickPercent)
Determines if the bar is a bull pin bar.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
Returns: (bool) True if the bar is a bull pin bar, otherwise false.
bearPinBar(_maxBodyPercent, _minWickPercent)
Determines if the bar is a bear pin bar.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
Returns: (bool) True if the bar is a bear pin bar, otherwise false.
dojiBar(_maxBodyPercent)
Determines if the bar is a doji.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
Returns: (bool) True if the bar is a doji, otherwise false.
spinningTopBar(_minWicksPercent, _emaLength)
Determines if the bar is a spinning top.
Parameters:
_minWicksPercent (simple float) : (float) The minimum wicks percentage.
_emaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if the bar is a spinning top, otherwise false.
highWaveBar(_minBodyPercent, _minWickPercent, _bars)
Determines if the bar is a high wave bar.
Parameters:
_minBodyPercent (simple float) : (float) The minimum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
_bars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if the bar is a high wave bar, otherwise false.
consolidationBar(_data, _spread, _bars)
Determines if the bars are in consolidation.
Parameters:
_data (map) : (map) The data map with spread levels.
_spread (simple float) : (float) The spread percentage for comparison.
_bars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if the bars are in consolidation, otherwise false.
S_DownThrust(_data, _bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (DownThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (DownThrust), otherwise false.
S_SellingClimax(_data, _rejectionWick)
Determines if there is a sign of strength (Selling Climax).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if there is a sign of strength (Selling Climax), otherwise false.
S_NoEffortBearishResult()
Determines if there is a sign of strength (No Effort Bearish Result).
Returns: (bool) True if there is a sign of strength (No Effort Bearish Result), otherwise false.
S_BearishEffortNoResult()
Determines if there is a sign of strength (Bearish Effort No Result).
Returns: (bool) True if there is a sign of strength (Bearish Effort No Result), otherwise false.
S_InverseDownThrust(_data, _bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of strength (Inverse DownThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of strength (Inverse DownThrust), otherwise false.
S_FailedSellingClimax()
Determines if there is a sign of strength (Failed Selling Climax).
Returns: (bool) True if there is a sign of strength (Failed Selling Climax), otherwise false.
S_BullOutsideReversal(_data)
Determines if there is a sign of strength (Bull Outside Reversal).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of strength (Bull Outside Reversal), otherwise false.
S_EndOfFallingMarket(_data)
Determines if there is a sign of strength (End of Falling Market).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of strength (End of Falling Market), otherwise false.
S_PseudoDownThrust(_bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (Pseudo DownThrust).
Parameters:
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (Pseudo DownThrust), otherwise false.
S_NoSupply(_bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (No Supply).
Parameters:
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (No Supply), otherwise false.
W_UpThrust(_data, _bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (UpThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (UpThrust), otherwise false.
W_BuyingClimax(_data, _rejectionWick)
Determines if there is a sign of weakness (Buying Climax).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if there is a sign of weakness (Buying Climax), otherwise false.
W_NoEffortBullishResult()
Determines if there is a sign of weakness (No Effort Bullish Result).
Returns: (bool) True if there is a sign of weakness (No Effort Bullish Result), otherwise false.
W_BullishEffortNoResult()
Determines if there is a sign of weakness (Bullish Effort No Result).
Returns: (bool) True if there is a sign of weakness (Bullish Effort No Result), otherwise false.
W_InverseUpThrust(_data, _bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of weakness (Inverse UpThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of weakness (Inverse UpThrust), otherwise false.
W_FailedBuyingClimax()
Determines if there is a sign of weakness (Failed Buying Climax).
Returns: (bool) True if there is a sign of weakness (Failed Buying Climax), otherwise false.
W_BearOutsideReversal(_data)
Determines if there is a sign of weakness (Bear Outside Reversal).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of weakness (Bear Outside Reversal), otherwise false.
W_EndOfRisingMarket(_data)
Determines if there is a sign of weakness (End of Rising Market).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of weakness (End of Rising Market), otherwise false.
W_PseudoUpThrust(_bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (Pseudo UpThrust).
Parameters:
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (Pseudo UpThrust), otherwise false.
W_NoDemand(_bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (No Demand).
Parameters:
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (No Demand), otherwise false.
N_QuietDoji(_dojiBarMaxBody)
Determines if there is a neutral signal (Quiet Doji).
Parameters:
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Quiet Doji), otherwise false.
N_BalancedDoji(_data, _dojiBarMaxBody)
Determines if there is a neutral signal (Balanced Doji).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Balanced Doji), otherwise false.
N_StrongDoji(_dojiBarMaxBody)
Determines if there is a neutral signal (Strong Doji).
Parameters:
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Strong Doji), otherwise false.
N_QuietSpinningTop(_spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Quiet Spinning Top).
Parameters:
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Quiet Spinning Top), otherwise false.
N_BalancedSpinningTop(_data, _spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Balanced Spinning Top).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Balanced Spinning Top), otherwise false.
N_StrongSpinningTop(_spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Strong Spinning Top).
Parameters:
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Strong Spinning Top), otherwise false.
N_QuietHighWave(_highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Quiet High Wave).
Parameters:
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Quiet High Wave), otherwise false.
N_BalancedHighWave(_data, _highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Balanced High Wave).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Balanced High Wave), otherwise false.
N_StrongHighWave(_highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Strong High Wave).
Parameters:
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Strong High Wave), otherwise false.
N_Consolidation(_data, _consolidationBarSpread, _consolidationBarBars)
Determines if there is a neutral signal (Consolidation).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_consolidationBarSpread (simple float) : (float) The spread percentage for consolidation bar.
_consolidationBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Consolidation), otherwise false.
Alligator + MA Trend Catcher [TradeDots]The "Alligator + MA Trend Catcher" is a trading strategy that integrates the William Alligator indicator with a Moving Average (MA) to establish robust entry and exit conditions, optimized for capturing trends.
HOW IT WORKS
This strategy combines the traditional William Alligator set up with an additional Moving Average indicator for enhanced trend confirmation, creating a user-friendly backtesting tool for traders who prefer the Alligator method.
The original Alligator strategy can frequently present fluctuations, even in well-established trends, leading to potentially premature exits. To mitigate this, we incorporate a Moving Average as a secondary confirmation measure to ensure the market trend has indeed shifted.
Here’s the operational flow for long orders:
Entry Signal: When the price rises above the Moving Average, it confirms a bullish market state. Enter if Alligator spread in an upward direction. The trade remains active even if the Alligator indicator suggests a trend reversal.
Exit Signal: The position is closed when the price falls below the Moving Average, and the Alligator spreads in the downward direction. This setup helps traders to maintain positions through the entirety of the trend for maximum gain.
APPLICATION
This strategy is tailored for assets with significant, well-defined trends, such as Bitcoin and Ethereum, which are known for their high volatility and substantial price movements.
This strategy offers a low win-rate but high reward configuration, making asset selection critical for long-term profitability. If you choose assets that lack strong price momentum, there's a high chance that this strategy may not be effective.
For traders seeking to maximize gains from large trends without exiting prematurely, this strategy provides an aggressive yet controlled approach to riding out substantial market waves.
DEFAULT SETUP
Commission: 0.01%
Initial Capital: $10,000
Equity per Trade: 80%
RISK DISCLAIMER
Trading entails substantial risk, and most day traders incur losses. All content, tools, scripts, articles, and education provided by TradeDots serve purely informational and educational purposes. Past performances are not definitive predictors of future results.
AWR_WaveTrend Multitimeframe [adapted from LazyBear]I've adapted a script from Lazy Bear (WT trend oscillator)
WaveTrend Oscillator is a port of a famous TS/MT indicator.
When the oscillator (WT1 designed as a line) is above the overbought band (50 to 60) and crosses down the WT2 (dotted line), it is usually a good SELL signal. Similarly, when the oscillator crosses above the signal when below the Oversold band ( (-50 to -60)), it is a good BUY signal.
In this indicator, you can display at the same time, different time frames.
Choice possible are 1 mn, 15 mn, 30 mn, 60 mn, 120 mn, 240 mn, 1D, Week, Month.
Small time frames (1 to 30 mn) are represented by a blue lines (light to dark)
1H is in grey
2H & 4H are in purple (light to dark)
1D is in green
1W is in orange
1M is in black
You can choose which timeframes you want to display for the current period or for the last period closed.
In a few seconds, you perfectly see the selected timeframes trends.
There is also at the bottom right a table summing up all the different values of WT1, WT2 and difference between them.
Positive difference means an upside trend
Negative difference means a downside trend.
Another way of using this indicator is displaying only the difference between WT1 & WT2. It's giving the speed & the direction of all trends. Trends are our friends ...
You can observe the significent times frames and look if they are all positives or negatives or if the speed of lower timeframe cross a longer timeframe of if the speed is decreasing or increasing...
Difference values goes generaly from -20 to 20 (it can exceed a bit but really rare). 12 is already high level of speed.
Many uses possible.
In the exemple posted, I've selected WT1 and WT2 for timeframes 4H, Daily & Weekly.
Marker 1:
Orange lines (WT1) are far below - 50 (-67 here) and cross WT2 pointed lines : weekly buy signal
But this buy signal is balanced by 4H & Daily sell signal = it's marking start of hesitations of main trend !!!!
Marker 2 :
Next buy signal in 4H or daily would normaly confirm the start
Marker 3 :
Sell signal in 4H and daily but weekly has an upside trend ! Start of a counter trend in the trend. To find the perfect timing of that you have to look to lower time frames, because 4H and daily are giving many hesitations signals crossing down & crossing up many times in an overbought zone.
Marker 4 :
End of the counter trend. Most of the time, the countertrend don't go in the "over" zone. That's why if you trading in an counter trend, you have to keep it in mind.
Then a few days later you can see the sell signal. And what a sell signal ! 4H & daily are smashed down really fastly ! Trends change warning !
Marker 5
Long hesitation/change of the trend. Daily WT and 4H are below the weekly trends. Weekly start to go down.
Start of a counter trend inside the trend giving us the best selling signal at her end !
Marker 6 :
Long hesitation/change of the trend.
You have to look in lower time frames to identify the short trend. Difficult to find the best timing to get in. ....
I've add many alerts. When a time frame become positive or negative. When many time frames are positive or negative or above or below 47 level...
Please feel free to explore.
Hope it will help you.
Thanks to Lazybear ! Thousands thanks to Lazybear !
Exemple with difference
Squeeze Momentum DeluxeThe Squeeze Momentum Deluxe is a comprehensive trading toolkit built with features of momentum, volatility, and price action. This script offers a suite for both mean reversion and trend-following analysis. Developed based on the original TTM Squeeze implementation by @LazyBear, this indicator introduces several innovative components to enhance your trading insights.
🔲 Components and Features
Momentum Oscillator - as rooted in the TTM Squeeze, quantifies the relationship between price and its extremes over a defined period. By normalizing the calculation, the values become comparable throughout time and across securities, allowing for a nuanced assessment of Bullish and Bearish momentum. Furthermore, by presenting it as a ribbon with a signal line we gain additional information about the direction of price swings.
Squeeze Bars - The original squeeze concept is based on the relationship between the Bollinger Bands and Keltner Channel , once the BB resides inside the KC a squeeze occurs. By understanding their fundamentals a new form of calculation can be inferred.
method bb(float src, simple int len, simple float mult) => method kc(float src, simple int len, simple float mult) =>
float basis = ta.sma (src, len) float basis = ta.sma (src, len)
float dev = ta.stdev(src, len) float rng = ta.atr ( len)
float upper = basis + dev * mult float upper = basis + rng * mult
float lower = basis - dev * mult float lower = basis - rng * mult
Both BB and KC are constructed upon a moving average with the addition of Standard Deviation and Average True Range respectively. Therefore, the calculation can be transformed to when the Stdev is lower than the ATR a squeeze occurs.
method sqz(float src, simple int len) =>
float dev = ta.stdev(src, len)
float atr = ta.atr ( len)
dev < atr ? true : false
This indicator uses three different thresholds for the ATR to gain three levels of price "Squeeze" for further analysis.
Directional Flux- This component measures the overall direction of price volatility, offering insights into trend sentiment. Presented as waves in the background, it includes an OverFlux feature to signal extreme market bias in a particular direction which can signal either exhaustion or vital continuation. Additionally, the user can choose if to base the calculation on Heikin-Ashi Candles to bias the tool toward trend assessment.
Confluence Gauges - Placed at the top and bottom of the indicator, these gauges measure confluence in the relationship between the Momentum Oscillator and Directional Flux. They provide traders with an easily interpretable visual aid for detecting market sentiment. Reversal doritos displayed alongside them contribute to mean reversion analysis.
Divergences (Real-Time) - Equipped with a custom algorithm, the indicator detects real-time divergences between price and the oscillator. This dynamic feature enhances your ability to spot potential trend reversals as they occur.
🔲 Settings
Directional Flux Length - Adjusts the period of which the background volatility waves operate on.
Trend Bias - Bases the calculation of the Flux to HA candles to bias its behavior toward the trend of price action.
Squeeze Momentum Length - Calibrates the length of the main oscillator ribbon as well as the period for the squeeze algorithm.
Signal - Controls the width of the ribbon. Lower values result in faster responsiveness at the cost of premature positives.
Divergence Sensitivity - Adjusts a threshold to limit the amount of divergences detected based on strength. Higher values result in less detections, stronger structure.
🔲 Alerts
Sell Signal
Buy Signal
Bullish Momentum
Bearish Momentum
Bullish Flux
Bearish Flux
Bullish Swing
Bearish Swing
Strong Bull Gauge
Strong Bear Gauge
Weak Bull Gauge
Weak Bear Gauge
High Squeeze
Normal Squeeze
Low Squeeze
Bullish Divergence
Bearish Divergence
As well as the option to trigger 'any alert' call.
The Squeeze Momentum Deluxe is a comprehensive tool that goes beyond traditional momentum indicators, offering a rich set of features to elevate your trading strategy. I recommend using toolkit alongside other indicators to have a wide variety of confluence to therefore gain higher probabilistic and better informed decisions.
Trailing Stop-Loss Indicator (FinnoVent)The Dynamic 9 EMA Trailing Stop-Loss Indicator is a specialized tool designed for the TradingView community to enhance risk management in trading. This script dynamically adjusts a trailing stop-loss level based on the position of the price relative to a 9-period Exponential Moving Average (EMA), offering traders a systematic approach to protect potential profits and limit downside risk.
Functionality:
Adaptive Trailing Stop: The indicator calculates a trailing stop-loss that adjusts with the 9 EMA, providing a responsive method to secure gains or prevent extensive losses.
EMA Trend Indicator: The 9-period EMA serves as a momentum indicator, with the script adjusting the trailing stop-loss accordingly — above the EMA for short positions and below for long positions.
Entry Signal Visualization: Entry signals are visualized on the chart, indicating potential long and short positions based on price crossovers with the EMA.
Application:
This indicator is ideal for traders who utilize technical analysis to make informed decisions. By automatically adjusting the stop-loss level to the evolving market conditions, it is particularly useful for:
Day traders looking to capitalize on short-term price movements.
Swing traders aiming to secure positions during more extended market waves.
Any trading strategy that benefits from dynamic stop-loss management.
Usage:
To use the indicator, simply add it to your TradingView chart, and it will automatically plot the trailing stop levels. The green and red lines represent the trailing stops for long and short positions, respectively, providing clear visual cues for potential exit points.
Compliance with TradingView House Rules:
This script is provided for educational purposes and does not constitute investment advice. It is a unique creation that has been developed to contribute to the TradingView community by offering a tool that helps traders manage their trades more effectively.
MA Slope : New Method1 . Introduction
Hello, traders.
This indicator is designed to measure the slope of a moving average line.
I imagine many of you who use Pine Script have struggled with this; measuring the slope of a moving average line can be quite challenging.
Firstly, this is because while the x-axis is fixed to the 'number of candles', the price scale on the y-axis can be adjusted freely.
Secondly, while the concept of differentiation could simplify the measurement process, the resulting value will differ from the conventional derivative we are familiar with since 'delta x' is fixed to '1'.
Consequently, I've put a lot of thought into how to configure the x-axis and y-axis in order to measure a slope that aligns with our perception of 'slope'.
After some reflection, I, like many others, realized that many people measure the slope based on the pivot of the moving average line.
This indicator is the product of that reflection.
2. Description
A. Setting
First, select the moving average line for which you want to check the slope. While SMA is commonly used, T3 is set as the default because it best visualizes the slope.
If you check 'Show MA Slope Average Pivot Range?' in the input window, it displays the average of the recent 30 slope pivot highs and pivot lows.
In other words, it shows 'On average, this level of slope was produced in the recent 30 waves.'
B. Usage
A cross from 0 in the slope indicates a 'reversal in the slope of the curve', which is the most crucial value when observing the slope.
Thus, fundamentally, it's important to look at the points where the slope becomes "0". Furthermore, when the slope starts to curve after rising, it signifies a change in acceleration, suggesting an imminent slope reversal.
(Note that acceleration was omitted from the indicator representation due to its tendency to overly complicate the data.)
While a shorter length of the moving average line may provide more useful slope data for actual trading, a less smooth moving average line may cross around 0 too often, making it less useful.
Therefore, it's crucial to adjust the 'Smoothing Length' in the input values to find a value that you believe is appropriate.
3. Conclusion
I always contemplate how to find a value in Pine Script that is similar to the perceived slope.
I made this script thinking that it might be a novel approach, but there are still many areas that need improvement.
If you have any innovative ideas about the slope, please feel free to provide feedback anytime.
Thank you.
--------
1. 서론
트레이더 여러분 안녕하세요. 이 지표는 이동평균선의 기울기를 측정하는 지표입니다.
아마 파인스크립트를 다루는 많은 분들이 같은 고민을 하셨을 것 같은데, 이동평균선의 기울기를 측정하는 것은 매우 어렵습니다.
그 이유로 첫번째는 x축은 '캔들 갯수'로 고정되어있는 반면, y축의 가격 스케일은 유동적으로 바꿀 수 있기 때문입니다.
두번째로는, 미분 개념을 이용하면 훨씬 수월하게 구할 수 있을테지만, 델타x가 '1'로 고정되어있기 때문에 우리가 알고있는 미분과 다른 값이 나옵니다.
따라서 x축과 y축을 어떻게 하면 실제 우리가 인식하는 '기울기'에 가깝도록 구성할 수 있을지에 대해 고민해보았습니다.
고민해본 결과 저 역시 그러하고, 많은 사람들이 이동평균선의 피벗을 기준으로 기울기를 측정한다는 사실을 알게되었습니다.
이 지표는 그 고민의 결과물입니다.
2. 내용 설명
A. 셋팅
먼저, 기울기를 확인하고싶은 이동평균선을 선택해주세요.
일반적으로 SMA를 많이 보시겠지만, T3가 기울기로 표현할 때 가장 아름다운 모습이 나오기 때문에 기본 설정을 T3로 설정했습니다.
Input창에 있는 'Show MA Slope Average Pivot Range?'를 체크하면, 최근 30개의 기울기 피벗 하이와 피벗 로우의 평균을 보여줍니다.
즉, '평균적으로, 최근 30개의 파동에서는 이 정도의 기울기가 만들어졌다'라는 것을 보여줍니다
B. 사용법
기울기가 0에서 크로스 된다는 것은, "곡선의 기울기가 반전"된다는 것이기에 기울기를 봄에 있어서 가장 중요한 값입니다. 따라서 가장 기본적으로는, 기울기가 "0"이 되는 곳을 보는 것이 중요하고
또 기울기가 올라갔다 꺾이기 시작할 때는, 가속도가 바뀌고 있다는 뜻이므로, 곧 기울기가 반전될 것을 의미합니다.
(다만 가속도를 지표로 표현하기엔, 너무나도 데이터가 지저분해져서 생략하였습니다)
이동평균선의 길이를 짧게 할수록 더 실제 트레이딩에 유용한 기울기 데이터를 얻을 수 있으나,
부드럽지 못한 이동평균선은 기울기가 0 근처에서 크로스 되는 모습이 지나치게 많이 나올 것이기에 유용하지 않을 수 있습니다.
따라서, input값에 있는 'Smoothing Length'를 조절해가면서 자신이 생각하기에 맞는 값을 고르는 것이 중요합니다.
3. 맺음말
파인스크립트에서 어떻게하면 실제 인식하는 기울기와 유사한 값을 찾을 수 있을까를 항상 고민합니다. 나름 새로운 접근방법이라 생각해서 이렇게 스크립트로 만들었으나, 여전히 아쉬운 부분이 많이 존재합니다.
기울기에 대한 좋은 아이디어가 있다면 언제든 피드백 해주세요.
감사합니다.
Range of a source displayed in thirdsThis indicator will take the value of any external source input and display how it has changed over time (the lookback period in settings). For the purposes of display here I'm using the WT1 line from Wavetrend with Crosses by LazyBear to provide a source input.
The highest and lowest value of the source over the lookback period are used to determine the highest and lowest point - the green and red lines at the top and bottom of the bands. This region is then mathematically split into three, such that the source (and its optional moving average line) can be defined as being in the top third, the middle or the bottom third.
Applications for this could be in risk management where you may wish to take on a larger position size when a certain indicator is in the top third, or decide that you want to enter / leave positions when the source crosses in / out of the extreme points.
Variety MA Cluster Filter Crosses [Loxx]What is a Cluster Filter?
One of the approaches to determining a useful signal (trend) in stream data. Small filtering (smoothing) tests applied to market quotes demonstrate the potential for creating non-lagging digital filters (indicators) that are not redrawn on the last bars.
Standard Approach
This approach is based on classical time series smoothing methods. There are lots of articles devoted to this subject both on this and other websites. The results are also classical:
1. The changes in trends are displayed with latency;
2. Better indicator (digital filter) response achieved at the expense of smoothing quality decrease;
3. Attempts to implement non-lagging indicators lead to redrawing on the last samples (bars).
And whereas traders have learned to cope with these things using persistence of economic processes and other tricks, this would be unacceptable in evaluating real-time experimental data, e.g. when testing aerostructures.
The Main Problem
It is a known fact that the majority of trading systems stop performing with the course of time, and that the indicators are only indicative over certain intervals. This can easily be explained: market quotes are not stationary. The definition of a stationary process is available in Wikipedia:
A stationary process is a stochastic process whose joint probability distribution does not change when shifted in time.
Judging by this definition, methods of analysis of stationary time series are not applicable in technical analysis. And this is understandable. A skillful market-maker entering the market will mess up all the calculations we may have made prior to that with regard to parameters of a known series of market quotes.
Even though this seems obvious, a lot of indicators are based on the theory of stationary time series analysis. Examples of such indicators are moving averages and their modifications. However, there are some attempts to create adaptive indicators. They are supposed to take into account non-stationarity of market quotes to some extent, yet they do not seem to work wonders. The attempts to "punish" the market-maker using the currently known methods of analysis of non-stationary series (wavelets, empirical modes and others) are not successful either. It looks like a certain key factor is constantly being ignored or unidentified.
The main reason for this is that the methods used are not designed for working with stream data. All (or almost all) of them were developed for analysis of the already known or, speaking in terms of technical analysis, historical data. These methods are convenient, e.g., in geophysics: you feel the earthquake, get a seismogram and then analyze it for few months. In other words, these methods are appropriate where uncertainties arising at the ends of a time series in the course of filtering affect the end result.
When analyzing experimental stream data or market quotes, we are focused on the most recent data received, rather than history. These are data that cannot be dealt with using classical algorithms.
Cluster Filter
Cluster filter is a set of digital filters approximating the initial sequence. Cluster filters should not be confused with cluster indicators.
Cluster filters are convenient when analyzing non-stationary time series in real time, in other words, stream data. It means that these filters are of principal interest not for smoothing the already known time series values, but for getting the most probable smoothed values of the new data received in real time.
Unlike various decomposition methods or simply filters of desired frequency, cluster filters create a composition or a fan of probable values of initial series which are further analyzed for approximation of the initial sequence. The input sequence acts more as a reference than the target of the analysis. The main analysis concerns values calculated by a set of filters after processing the data received.
In the general case, every filter included in the cluster has its own individual characteristics and is not related to others in any way. These filters are sometimes customized for the analysis of a stationary time series of their own which describes individual properties of the initial non-stationary time series. In the simplest case, if the initial non-stationary series changes its parameters, the filters "switch" over. Thus, a cluster filter tracks real time changes in characteristics.
Cluster Filter Design Procedure
Any cluster filter can be designed in three steps:
1. The first step is usually the most difficult one but this is where probabilistic models of stream data received are formed. The number of these models can be arbitrary large. They are not always related to physical processes that affect the approximable data. The more precisely models describe the approximable sequence, the higher the probability to get a non-lagging cluster filter.
2. At the second step, one or more digital filters are created for each model. The most general condition for joining filters together in a cluster is that they belong to the models describing the approximable sequence.
3. So, we can have one or more filters in a cluster. Consequently, with each new sample we have the sample value and one or more filter values. Thus, with each sample we have a vector or artificial noise made up of several (minimum two) values. All we need to do now is to select the most appropriate value.
An Example of a Simple Cluster Filter
For illustration, we will implement a simple cluster filter corresponding to the above diagram, using market quotes as input sequence. You can simply use closing prices of any time frame.
1. Model description. We will proceed on the assumption that:
The aproximate sequence is non-stationary, i.e. its characteristics tend to change with the course of time.
The closing price of a bar is not the actual bar price. In other words, the registered closing price of a bar is one of the noise movements, like other price movements on that bar.
The actual price or the actual value of the approximable sequence is between the closing price of the current bar and the closing price of the previous bar.
The approximable sequence tends to maintain its direction. That is, if it was growing on the previous bar, it will tend to keep on growing on the current bar.
2. Selecting digital filters. For the sake of simplicity, we take two filters:
The first filter will be a variety filter calculated based on the last closing prices using the slow period. I believe this fits well in the third assumption we specified for our model.
Since we have a non-stationary filter, we will try to also use an additional filter that will hopefully facilitate to identify changes in characteristics of the time series. I've chosen a variety filter using the fast period.
3. Selecting the appropriate value for the cluster filter.
So, with each new sample we will have the sample value (closing price), as well as the value of MA and fast filter. The closing price will be ignored according to the second assumption specified for our model. Further, we select the МА or ЕМА value based on the last assumption, i.e. maintaining trend direction:
For an uptrend, i.e. CF(i-1)>CF(i-2), we select one of the following four variants:
if CF(i-1)fastfilter(i), then CF(i)=slowfilter(i);
if CF(i-1)>slowfilter(i) and CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i)).
For a downtrend, i.e. CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i));
if CF(i-1)>slowfilter(i) and CF(i-1)fastfilter(i), then CF(i)=fastfilter(i);
if CF(i-1)






















