THE Bucknut test PARI (SPY)📌 THE Bucknut Test PARI – Market Momentum & Volatility Gauge
🔹 Description
THE Bucknut Test PARI Indicator is a momentum and volatility-based market gauge designed to provide clear, actionable insights on price movement. This indicator calculates a Price Action Relative Index (PARI) score to help traders evaluate risk and potential market reversals.
It utilizes exponential moving average (EMA)-based momentum, standard deviation volatility, and SPY correlation to generate a PARI score between 1-100. The score is then categorized into risk zones, helping traders identify when conditions are favorable for entries or caution is needed.
Ideal for intraday traders, options traders (including SPX 0DTE), and swing traders looking to gauge volatility-driven market shifts.
🔥 Features & Functionality
✅ Momentum Calculation via EMA Filtering – Ensures smooth, responsive signals.
✅ Volatility-Based Adjustments – Uses standard deviation-based volatility scaling.
✅ SPY Correlation Filtering – Helps align momentum signals with market sentiment.
✅ User-Defined Timeframe Settings – Adjusts dynamically based on selected time intervals.
✅ Customizable Risk Thresholds – Allows traders to define high-risk, neutral, and low-risk zones.
✅ Non-Repainting Algorithm – Ensures reliable, static signals without revision.
⚙️ Settings & Adjustments
Setting Default Value Description
Time Frame Mode "5m-15m" Choose between 1m-3m, 5m-15m, or 1H-Daily. Affects smoothing values.
Scaling Factor 10 Adjusts PARI score sensitivity. Higher values amplify movement.
Background Color Black Custom background for the indicator panel.
Background Transparency 85 Controls indicator panel opacity (0 = solid, 100 = invisible).
High-Risk Threshold 80 Above this level, market is in overbought/high-risk conditions.
Low-Risk Threshold 20 Below this level, market is oversold/low-risk for potential reversals.
Neutral Level 50 Middle ground where price action is balanced.
📈 How to Use THE Bucknut Test PARI
🔴 Above 80 (High-Risk Zone)
Market may be overheated, strong momentum may fade or reverse soon.
Caution with calls; potential put opportunities.
🟢 Below 20 (Low-Risk Zone)
Market is oversold, potential reversal or bounce incoming.
Consider long entries or avoiding shorts.
⚪ Between 20-80 (Neutral Zone)
Market is in equilibrium; follow primary trend direction.
No extreme risk, trend-following strategies preferred.
🔍 Example Use Cases
✔ Intraday Traders → Gauge market strength on short-term charts (1m-15m).
✔ SPX 0DTE Options Traders → Time high-confidence call/put setups.
✔ Swing Traders → Identify periods of excessive momentum or exhaustion.
Komut dosyalarını "20日线角度大于0的股票" için ara
Liquidity Hunt SwiftEdgeThe "Liquidity Hunt Dashboard By SwiftEdge" indicator is designed to assist traders in identifying potential liquidity zones by placing a dynamic target line based on swing points and weighted liquidity. It leverages technical analysis tools such as SMA (Simple Moving Average), pivot points, and volume to predict market movements and provides daily statistics on hits and success rate. The target line updates automatically when the price hits it, adapting to the market trend (up, down, or neutral). A dashboard displays the current price, target level, prediction, and trend, making it easy to make informed trading decisions.
Features:
Target Line: A yellow dashed line marks the next expected liquidity level (up to approximately 20 pips away on 1m).
Prediction: Displays "Up (Chasing Sell Liquidity)," "Down (Chasing Buy Liquidity)," or "Neutral" based on trend and liquidity.
Daily Statistics: Tracks hits and success rate, resetting daily.
Trend Indicator: Shows market direction ("Up," "Down," or "Neutral") in the dashboard.
Dynamic Updates: The line moves to a new target level when the price hits the current target.
Recommended Settings for 1-Minute Timeframe:
For Indices (e.g., S&P 500):
Lookback Period: 180 (3 hours to capture more stable swing points).
Max Distance (%): 0.015 (approximately 15 pips, suitable for indices).
Cooldown Period: 5 (stabilizes after hits).
Line Duration: 60 (displays the line for 1 hour).
For Crypto (e.g., BTC/USD):
Lookback Period: 120 (2 hours to capture short-term swing points).
Max Distance (%): 0.024 (approximately 20 pips, suitable for volatile crypto markets).
Cooldown Period: 5.
Line Duration: 60.
For Forex (e.g., EUR/USD):
Lookback Period: 180 (3 hours for greater data density in less volatile markets).
Max Distance (%): 0.012 (approximately 10-12 pips, suitable for forex).
Cooldown Period: 5.
Line Duration: 60.
Guide for Higher Timeframes:
This indicator can be adapted for higher timeframes (e.g., 5m, 15m, 1H) by adjusting the settings to account for larger price movements and slower market dynamics. Follow these steps:
Select Your Timeframe: Switch your chart to the desired timeframe (e.g., 5m, 15m, or 1H).
Adjust Lookback Period: Increase the "Lookback Period" to cover a longer historical period. For example:
5m: Set to 360 (equivalent to 6 hours).
15m: Set to 480 (equivalent to 8 hours).
1H: Set to 720 (equivalent to 12 hours).
Adjust Max Distance (%): Higher timeframes require larger targets to account for bigger price swings. For example:
5m: Increase to 0.05 (approximately 50 pips).
15m: Increase to 0.1 (approximately 100 pips).
1H: Increase to 0.2 (approximately 200 pips).
Adjust Cooldown Period: On higher timeframes, you may want a longer cooldown to avoid frequent updates. For example:
5m: Set to 10.
15m: Set to 15.
1H: Set to 20.
Adjust Line Duration: Extend the duration the line is displayed to match the timeframe. For example:
5m: Set to 120 (equivalent to 10 hours).
15m: Set to 240 (equivalent to 60 hours).
1H: Set to 480 (equivalent to 20 days).
Monitor the Dashboard: The dashboard will still show the target level, prediction, and trend, but the values will now reflect the larger timeframe's dynamics.
Usage Instructions:
Set your chart to a 1-minute timeframe (or follow the higher timeframe guide).
Adjust the settings based on the market and timeframe (see recommendations above).
Monitor the dashboard for the current price, target level, and prediction.
Use the yellow line as a potential entry or exit level, and adjust your strategy based on the trend and statistics.
Notes:
This indicator is intended solely for educational and analytical purposes and should not be considered financial advice.
Test the indicator on a demo account before using it with real funds.
The indicator complies with TradingView guidelines by not providing trading advice, automated trading signals, or guarantees of profit.
Supertrend and Fast and Slow EMA StrategyThis strategy combines Exponential Moving Averages (EMAs) and Average True Range (ATR) to create a simple, yet effective, trend-following approach. The strategy filters out fake or sideways signals by incorporating the ATR as a volatility filter, ensuring that trades are only taken during trending conditions. The key idea is to buy when the short-term trend (Fast EMA) aligns with the long-term trend (Slow EMA), and to avoid trades during low volatility periods.
How It Works:
EMA Crossover:
1). Buy Signal: When the Fast EMA (shorter-term, e.g., 20-period) crosses above the Slow EMA (longer-term, e.g., 50-period), this indicates a potential uptrend.
2). Sell Signal: When the Fast EMA crosses below the Slow EMA, this indicates a potential downtrend.
ATR Filter:
1). The ATR (Average True Range) is used to measure market volatility.
2). Trending Market: If the ATR is above a certain threshold, it indicates high volatility and a trending market. Only when ATR is above the threshold will the strategy generate buy/sell signals.
3). Sideways Market: If ATR is low (sideways or choppy market), the strategy will suppress signals to avoid entering during non-trending conditions.
When to Buy:
1). Condition 1: The Fast EMA crosses above the Slow EMA.
2). Condition 2: The ATR is above the defined threshold, indicating that the market is trending (not sideways or choppy).
When to Sell:
1). Condition 1: The Fast EMA crosses below the Slow EMA.
2). Condition 2: The ATR is above the defined threshold, confirming that the market is in a downtrend.
When Not to Enter the Trade:
1). Sideways Market: If the ATR is below the threshold, signaling low volatility and sideways or choppy market conditions, the strategy will not trigger any buy or sell signals.
2). False Crossovers: In low volatility conditions, price action tends to be noisy, which could lead to false signals. Therefore, avoiding trades during these periods reduces the risk of false breakouts.
Additional Factors to Consider Adding:
=> RSI (Relative Strength Index): Adding an RSI filter can help confirm overbought or oversold conditions to avoid buying into overextended moves or selling too low.
1). RSI Buy Filter: Only take buy signals when RSI is below 70 (avoiding overbought conditions).
2). RSI Sell Filter: Only take sell signals when RSI is above 30 (avoiding oversold conditions).
=> MACD (Moving Average Convergence Divergence): Using MACD can help validate the strength of the trend.
1). Buy when the MACD histogram is above the zero line and the Fast EMA crosses above the Slow EMA.
2). Sell when the MACD histogram is below the zero line and the Fast EMA crosses below the Slow EMA.
=> Support/Resistance Levels: Adding support and resistance levels can help you understand market structure and decide whether to enter or exit a trade.
1). Buy when price breaks above a significant resistance level (after a valid buy signal).
2). Sell when price breaks below a major support level (after a valid sell signal).
=> Volume: Consider adding a volume filter to ensure that buy/sell signals are supported by strong market participation. You could only take signals if the volume is above the moving average of volume over a certain period.
=> Trailing Stop Loss: Instead of a fixed stop loss, use a trailing stop based on a percentage or ATR to lock in profits as the trade moves in your favor.
=> Exit Signals: Besides the EMA crossover, consider adding Take Profit or Stop Loss levels, or even using a secondary indicator like RSI to signal an overbought/oversold condition and exit the trade.
Example Usage:
=> Buy Example:
1). Fast EMA (20-period) crosses above the Slow EMA (50-period).
2). The ATR is above the threshold, confirming that the market is trending.
3). Optionally, if RSI is below 70, the buy signal is further confirmed as not being overbought.
=> Sell Example:
1). Fast EMA (20-period) crosses below the Slow EMA (50-period).
2). The ATR is above the threshold, confirming that the market is trending.
3). Optionally, if RSI is above 30, the sell signal is further confirmed as not being oversold.
Conclusion:
This strategy helps to identify trending markets and filters out sideways or choppy market conditions. By using Fast and Slow EMAs combined with the ATR volatility filter, it provides a reliable approach to catching trending moves while avoiding false signals during low-volatility, sideways markets.
Volume Trend Signals | iSolani
Volume Trend Signals | iSolani: Syncing Price Momentum with Volume Confirmation
In the dance between price action and volume, discerning true trend commitment requires seeing how institutional players vote with their capital. The Volume Trend Signals | iSolani illuminates this interplay by generating precise crossover signals when volume-accelerated price movements gain sustained traction. Unlike conventional volume oscillators, it employs a two-layered confirmation system —blending volatility-adjusted thresholds with adaptive smoothing—to spotlight high-probability entries aligned with smart-money activity.
Core Methodology
The indicator executes a five-phase process to filter meaningful trends:
Logarithmic Price Scaling: Measures percentage-based price changes via HLC3 typical price, reducing large-value bias in volatile markets.
Volatility Dynamic Filter: Uses a 30-bar standard deviation of price changes, scaled by user sensitivity (default 2x), to set momentum thresholds.
Volume Governance: Caps raw volume at 3x its 40-bar SMA, neutralizing outlier spikes while preserving institutional footprints.
Directional Flow Accumulation: Sums volume as positive/negative based on whether price movement breaches volatility-derived boundaries.
Signal Refinement: Smooths the Volume Flow Indicator (VFI) with a 3-bar SMA, then triggers alerts via crosses over a 20-bar EMA signal line.
Breaking New Ground
This tool introduces three evolutionary improvements over traditional volume indicators:
EMA Convergence Signals: Unlike basic zero-cross systems, it requires VFI to overtake its own EMA, confirming sustained momentum shifts.
Context-Aware Volume: The 3x volume cap adapts to current market activity, preventing false signals during news-driven liquidity spikes.
Minimalist Visual Alerts: Uses and symbols below/above candles, reducing chart clutter while emphasizing pivotal moments.
Engine Under the Hood
The script’s logic flows through four computational stages:
Data Conditioning: Computes HLC3 and its log-based rate of change for normalized price analysis.
Threshold Calibration: Derives dynamic entry/exit levels from 30-period volatility multiplied by user sensitivity.
Volume Processing: Filters and signs volume based on price meeting threshold criteria.
Signal Generation: Triggers buy/sell labels when the 3-bar SMA of cumulative flow crosses the 20-bar EMA.
Standard Configuration
Optimized defaults balance responsiveness and reliability:
VFI Length: 40-bar accumulation window
Sensitivity: 2.0 (double the volatility-derived threshold)
Signal Smoothing: 20-bar EMA
Volume Cap: 3x average (hidden parameter)
Smoothing: Enabled (3-bar SMA on VFI)
By fusing adaptive volume filtering with EMA-confirmed momentum, the Volume Trend Signals | iSolani cuts through market noise to reveal institutional-grade trend inflection points. Its unique crossover logic—prioritizing confirmation over speed—makes it particularly effective in swing trading and trend-following strategies across equities, commodities, and forex markets.
Engulfing Pattern with Volume and EMAs
**Strategy Overview:
This strategy combines price action (Engulfing patterns), volume analysis, trend confirmation (EMAs), and noise reduction (ATR filter) to generate high-probability trading signals.
Engulfing Pattern with Volume, EMAs, and Market Noise Filter**
This strategy identifies bullish and bearish Engulfing candlestick patterns, combined with volume analysis, moving averages (EMAs), and a market noise filter to generate trading signals.
**Key Components:**
1. **Engulfing Pattern Detection:**
- **Bullish Engulfing**: A green candle completely engulfs the previous red candle.
- **Bearish Engulfing**: A red candle completely engulfs the previous green candle.
2. **Volume Filter:**
- Signals are validated only if the current volume is higher than the 20-period Simple Moving Average (SMA) of volume.
3. **EMA Indicators:**
- Three EMAs are plotted: 50-period (blue), 89-period (orange), and 200-period (red).
- These EMAs help identify the trend direction and provide additional confirmation.
4. **Market Noise Filter:**
- Uses the Average True Range (ATR) to filter out insignificant price movements.
- A signal is considered valid only if the price movement (absolute difference between open and close) is greater than 0.5 times the 14-period ATR.
**Trading Signals:**
**Buy Signal**:
- Bullish Engulfing pattern + High volume (above SMA 20) + Significant price movement (filtered by ATR).
- Plotted as a green "BUY" label below the candle.
**Sell Signal**:
- Bearish Engulfing pattern + High volume (above SMA 20) + Significant price movement (filtered by ATR).
- Plotted as a red "SELL" label above the candle.
**Customization:**
- Users can adjust EMA lengths, volume SMA period, and ATR multiplier to suit their trading preferences.
Enhanced Volume Profile█ OVERVIEW
The Enhanced Volume Profile (EVP) is an indicator designed to plot a volume profile on the chart based on either the visible chart range or a fixed lookback period. The script helps analyze the distribution of volume at different price levels over time, providing insights into areas of high trading activity and potential support/resistance zones.
█ KEY FEATURES
1. Visible Chart Range vs. Fixed Lookback Depth
Visible Chart Range
- Default analysis mode
- Calculates profile based on visible portion of the chart
- Dynamically updates with chart view changes
Fixed Lookback Depth
- Optional alternative to visible range
- Uses specified number of bars (10-3000)
- Provides consistent analysis depth
- Independent of chart view
2. Custom Resolution
Auto-Resolution Mode
Automatically selects timeframes based on chart's current timeframe:
≤ 1 minute: Uses 1-minute resolution
≤ 5 minutes: Uses 1-minute resolution
≤ 15 minutes: Uses 5-minute resolution
≤ 1 hour: Uses 5-minute resolution
≤ 4 hours: Uses 15-minute resolution
≤ 12 hours: Uses 15-minute resolution
≤ 1 day: Uses 1-hour resolution
≤ 3 days: Uses 2-hours resolution
≤ 1 week: Uses 4-hours resolution
Custom Resolution Override
Optional override of auto-resolution system
Provides control over data granularity
Must be lower than or equal to chart's timeframe
Falls back to auto-resolution if validation fails
3. Volume Profile Resolution
Adjustable number of points (10-400)
Controls profile granularity
Higher resolution provides more detail
Balance between precision and performance
4. Point of Control (PoC)
Identifies price level with highest traded volume
Optional display with customizable appearance
Adjustable line thickness (1-30)
Configurable color
5. Value Area (VA)
Shows price range of majority trading volume
Adjustable coverage (5-95%), default is 68%
Customizable boundary lines
Configurable lines color and thickness (1-20)
█ INPUT PARAMETERS
Lookback Settings
Use Visible Chart Range
- Default: true
- Calculates profile based on visible bars
- Ideal for focused analysis
Fixed Lookback Bars
- Range: 10-3000
- Default: 200
- Used when visible range is disabled
Resolution Settings
Enable Custom Resolution
- Default: false
- Overrides auto-resolution
Custom Resolution
- Default: 1-minute
- Changes automatically when "Enable Custom Resolution" is disabled
Volume Profile Appearance
Profile Resolution
- Range: 10-400
- Default: 200
- Controls detail level
Profile Width Scale
- Range: 1-50
- Default: 15
- Adjusts profile width
Right Offset
- Range: 0-500
- Default: 20
- Controls spacing from price bars
Profile Fill Color
- Default: #5D606B (70% transparency)
Point of Control Settings
Show Point of Control
- Default: true
- Toggles PoC visibility
PoC Line Thickness
- Range: 1-30
- Default: 1
PoC Line Color
- Default: Red
Value Area Settings
Show Value Area
- Default: true
- Toggles VA lines
Value Area Coverage
- Range: 5-95%
- Default: 68%
Value Area Line Color
- Default: Blue
Value Area Line Thickness
- Range: 1-20
- Default: 1
█ TECHNICAL IMPLEMENTATION DETAILS
Exceeding Bars Management
The script dynamically adjusts the number of bars used in the volume profile calculation based on the selected timeframe and the maximum allowed bars (max_bars_back).
If the total number of bars exceeds the predefined threshold (6000 bars), the script reduces the lookback period (lookback_bars) by trimming some of the historical data, ensuring the chart does not become overloaded with data.
The adjustment is made based on the ratio of bars per candle (bars_per_candle), ensuring that the volume profile remains computationally efficient while maintaining its relevance.
█ EXAMPLE USE CASES
1. Visible Range Mode
For analyzing a recent trend and focusing on only the visible part of the chart, enabling the "Use Visible Chart Range" option calculates the profile based on the current view, without considering historical data outside the visible area.
2. Fixed Lookback Depth
For analyzing a specific period in the past (e.g., the last 200 bars), disabling the visible range and setting a fixed lookback depth of 200 bars ensures the profile always considers the last 200 bars, regardless of the visible range.
3. Custom Resolution
If there’s a need for greater control over the timeframe used for volume profile calculations (e.g., using a 5-minute resolution on a 15-minute chart), enabling custom resolution and setting the desired timeframe provides this control.
HAPPY TRADING ✌️
Multi Stochastic AlertHello Everyone,
I have created a Multi Stochastic Alert based on Scalping Strategy
The Strategy uses below 4 Stochastic indicator:
1. Stochastic (9,3)
2. Stochastic (14,3)
3. Stochastic (40,4)
4. Stochastic (60,10)
Trade entry become active when all of these goes below 20 or above 80, In this indicator you don't need to use all 4, this will show red and green background whenever all of them goes below 20 or above 80.
As shown in picture below, it works better when script is making a channel, Our indicator shows green or red signal, we wait for RSI Divergence and we enter. We book when blue line (9,3) goes above 80, as shown by arrow, and trail rest at breakeven or your own trailing method
Same Situation shown for Short side. We book 50% when Blue line (9,3) Goes below 20 and trail rest at breakeven or your own trailing method
Happy trading, Let me know if any improvements required.
Display MB on BarsDescription
The "Display MB on Bars" Pine Script indicator is designed to visually represent Market Breadth values and R4.5 scores on trading charts. This script enables traders to highlight and analyze key market behavior using pre-defined thresholds for MB scores and dynamically calculated R4.5 values. Additionally, it includes a moving average status table to assess price levels relative to the 10-day and 20-day moving averages.
Features:
1. COB Date Matching: Displays data corresponding to specific "COB dates" provided by the user.
2. MB Value Visualization:
o Highlights bars with a background color based on MB values:
Red if MB ≤ MB_Red (default: -1).
Green if MB ≥ MB_Green (default: 3).
3. R4.5 Scores Display:
o Creates a label on the chart with the MB and R4.5 values when conditions are met (e.g., R4.5 > 200 or specific MB thresholds).
4. Index Moving Average Comparison:
o Calculates 10-day and 20-day moving averages for the selected symbol (default: NSE:NIFTYMIDSML400).
o Shows the price position relative to these moving averages in a table.
How to Use:
1. Configure Inputs:
o COB Dates: Enter a comma-separated list of dates in the format DD-MM-YYYY.
o MB Values: Provide the corresponding MB scores for the COB dates.
o R4.5 Values: Provide the R4.5 scores for the COB dates.
o Set the thresholds for MB values (MB Red<= and MB Green>=).
o Toggle features like MB, RS (R4.5), and the moving average status table.
2. Interpret the Output:
o Observe background colors on the bars:
Red: Indicates MB is less than or equal to the lower threshold.
Green: Indicates MB exceeds the upper threshold.
o Check labels above bars for R4.5 and MB values when conditions are met.
o Refer to the status table on the top-right corner to understand price positions relative to 10-day and 20-day moving averages.
This script is especially useful for traders seeking insights into custom metrics like MB and R4.5, enabling quick identification of key patterns and trends in the market.
Dynamic Time Zone EMA with Candle Trend AnalysisCandleTrend TZ is a powerful analytical tool that integrates time zones, exponential moving averages (EMA), and custom candle coloring based on trend direction. This indicator is ideal for traders looking to analyze market trends within specific time sessions effectively.
Key Features:
Time Zones:
Divides the chart into four distinct time intervals, each highlighted with a unique background color.
Fully customizable start and end times for each interval, allowing for adaptation to various trading schedules.
Exponential Moving Averages (EMA):
Displays three EMAs with user-defined lengths:
EMA 200 (blue) for long-term trends.
EMA 50 (green) for medium-term trends.
EMA 20 (red) for short-term trends.
Helps identify trend direction and strength.
Custom Candle Coloring:
Utilizes smoothed Heiken Ashi and Triple EMA (TEMA) calculations for enhanced candle coloring:
Green candles indicate an upward trend.
Red candles signal a downward trend.
Filters out market noise, providing a clear visual representation of market dynamics.
Customization Options:
Time Zones:
Adjustable start and end times for each of the four sessions:
Input hour and minute for start and end times (e.g., Interval 1 Start/End Hour/Minute).
Background colors are pre-defined but can be modified in the code.
EMAs:
User-defined lengths for each EMA:
EMA 200 Length (default: 200)
EMA 50 Length (default: 50)
EMA 20 Length (default: 20)
TEMA Settings:
Parameters for trend smoothing:
TEMA Length (default: 55)
EMA Length (default: 60)
Use Cases:
Intraday Session Analysis:
Use time zones to differentiate between morning, afternoon, and evening market activity.
The background colors make it easy to track session-specific trends.
Trend Trading:
Analyze EMA crossings and their slopes to confirm market direction.
Green candles indicate buying opportunities, while red candles highlight selling signals.
Noise Reduction:
TEMA smoothing removes market noise, allowing you to focus on the primary market trend.
Adaptation to Custom Strategies:
By adjusting time intervals, you can tailor the indicator to specific trading styles or market conditions.
Benefits:
Versatility for both trending and sideways markets.
Intuitive and user-friendly setup.
Suitable for traders of all skill levels, from beginners to professionals.
CandleTrend TZ is an indispensable tool for understanding market dynamics, enhancing your trading precision, and making well-informed decisions. 🚀
MATA GOLD RATIOMata Gold Instrument: User Guide
The Instrument to Gold Oscillator is a technical analysis tool that normalizes the ratio of an instrument's price (e.g., BTC/USD) to the price of gold (XAU/USD) into a 0-100 scale. This provides a clear and intuitive way to evaluate the relative performance of an instrument compared to gold over a specified period.
---
How It Works
1. Calculation of the Ratio:
The ratio is calculated as:
\text{Ratio} = \frac{\text{Instrument Price}}{\text{Gold Price}}
2. Normalization:
The ratio is normalized using the highest and lowest values over a user-defined period (length), typically 14 periods:
\text{Normalized Ratio} = \frac{\text{Ratio} - \text{Min(Ratio)}}{\text{Max(Ratio)} - \text{Min(Ratio)}} \times 100
3. Overbought/Oversold Levels:
Above 80: The instrument is relatively expensive compared to gold (overbought).
Below 20: The instrument is relatively cheap compared to gold (oversold).
---
How to Use the Oscillator
1. Identify Overbought and Oversold Levels:
If the oscillator rises above 80, the instrument may be overvalued relative to gold. This could signal a potential reversal or correction.
If the oscillator falls below 20, the instrument may be undervalued relative to gold. This could signal a buying opportunity.
2. Track Trends:
Rising oscillator values indicate the instrument is gaining value relative to gold.
Falling oscillator values indicate the instrument is losing value relative to gold.
3. Crossing the Midline (50):
When the oscillator crosses above 50, the instrument's value is gaining strength relative to gold.
When it crosses below 50, the instrument is weakening relative to gold.
4. Combine with Other Indicators:
Use this oscillator alongside other technical indicators (e.g., RSI, MACD, STOCH) for more robust decision-making.
Confirm signals from the oscillator with price action or volume analysis.
---
Example Scenarios
1. Trading Cryptocurrencies Against Gold:
If BTC/USD's oscillator value is above 80, Bitcoin may be overvalued relative to gold. Consider reducing exposure or looking for short opportunities.
If BTC/USD's oscillator value is below 20, Bitcoin may be undervalued relative to gold. This could be a good time to accumulate.
2. Commodities vs. Gold:
Analyze the relative strength of commodities (e.g., oil, silver) against gold using the oscillator to identify periods of overperformance or underperformance.
---
Advantages of the Oscillator
Relative Performance Insight: Tracks the performance of an instrument relative to gold, providing a macro perspective.
Clear Visual Representation: The 0-100 scale makes it easy to identify overbought/oversold conditions and trend shifts.
Customizable Periods: The user-defined length allows flexibility in analyzing short- or long-term trends.
---
Limitations
Dependence on Gold: As the oscillator is based on gold prices, any external shocks to gold (e.g., geopolitical events) can influence its signals.
No Absolute Buy/Sell Signals: The oscillator should not be used in isolation but as part of a broader analysis strategy.
---
By using the Instrument to Gold Oscillator effectively, traders and investors can gain valuable insights into the relative valuation and performance of assets compared to gold, enabling more informed trading and investment decisions.
StockInfo ManualScript Description:
The StockInfo Manual is designed to display detailed stock information directly on the chart for the selected symbol. It processes user-provided input data, including
stock symbols
Industries
Relative Strength (RS) values
Band information
Key Features:
1. Symbol-Specific Data Display: Displays information only for the current chart symbol.
2. Customizable Table: Adjust the table's position, text size, colors, and headers to match your preferences.
3. Low RS/Band Conditions: Highlights critical metrics (RS < 50 or Band < 6) with a red background for quick visual cues.
4. Toggle Information: Choose to show or hide RS, Band, and Industry columns based on your needs.
How to Use the Script:
1. Use any platform (ex: chartsmaze) to get Industry,RS and Band information of any Stock. Prepare the data as separate column of excel
2. Configure Inputs:
- Stock Symbols (`Stock`): Enter a comma-separated list of stock symbols (e.g.,
NSE:ABDL,
NSE:ABFRL,
NSE:ABREL,
NSE:ABSLAMC,
NSE:ACC,
NSE:ACE,
- Industries (`Industry`): Provide a comma-separated list of industries for the stocks (e.g., 103-Brewerie,
109-Retail-D,
92-Paper & ,
19-Asset Ma,
62-Cement,
58-Industri,
- Relative Strength (`RS`): Input RS values for each stock (e.g.,
83,
52,
51,
81,
23,
59,
- Band Information (`Band`): Specify Band values for each stock. Use "No Band" if 10,
No Band,
20,
20,
No Band,
20,
3. Customize the Table:
-Display Options: Toggle the visibility of `RS`, `Band`, and `Industry` using the input checkboxes.
-Position and Appearance: Choose the table's position on the chart (e.g., top-right, bottom-center). Customize text size, background colors, header display, and other visual elements.
4. Interpret the Table:
- The table will dynamically display information for the current chart symbol only.
- If the `RS` is below 50 or the Band is below 6, the corresponding row is highlighted with a red background for immediate attention.
One need to enter details at least weekly for a correct result
Financials Score All Description of the "Financials Score All" Script
This Pine Script calculates a financial score for a specific stock, based on various financial metrics. The purpose is to provide a comprehensive numerical score that reflects the financial health of the stock. The score is calculated using multiple financial indicators, including profitability, valuation, debt management, and liquidity. Here’s a breakdown of what each part of the script does:
period = input.string('FQ', 'Period', options= )
FQ refers to Quarterly financial data.
FY refers to Fiscal Year financial data.
Financial Metrics:
The script uses various financial metrics to calculate the score. These are obtained via request.financial, which retrieves financial data for the stock from TradingView's database. Below are the metrics used:
opmar (Operating Margin): Measures the company's profitability as a percentage of revenue.
eps (Earnings Per Share): Represents the portion of a company's profit allocated to each outstanding share.
eps_ttm (Earnings Per Share – Trailing Twelve Months): EPS over the most recent 12 months.
pe_ratio (Price-to-Earnings Ratio): A measure of the price investors are willing to pay for a stock relative to its earnings.
pb_ratio (Price-to-Book Ratio): A valuation ratio comparing a company’s market value to its book value.
de_ratio (Debt-to-Equity Ratio): A measure of the company’s financial leverage, showing how much debt it has compared to shareholders' equity.
roe_pb (Return on Equity Adjusted to Book): Measures the company's profitability relative to its book value.
fcf_per_share (Free Cash Flow per Share): Represents the free cash flow available for dividends, debt reduction, or reinvestment, per share.
pfcf_ratio (Price-to-Free-Cash-Flow Ratio): A measure comparing a company’s market value to its free cash flow.
current_ratio (Current Ratio): A liquidity ratio that measures a company's ability to pay short-term obligations with its current assets.
RSI Calculation:
The script calculates the Relative Strength Index (RSI) for the stock using an 8-period lookback:
rsi = ta.rsi(close, 8)
Score Calculation:
The script calculates a total score by adding points based on the values of the financial metrics. Each metric is checked against a condition, and if the condition is met, the score is incremented:
If the Operating Margin (opmar) is greater than 20, the score is incremented by 20 points.
If Earnings Per Share (EPS) is positive, 10 points are added.
If the P/E ratio is between 0 and 20, 10 points are added.
If the P/B ratio is less than 3, 10 points are added.
If the Debt-to-Equity ratio is less than 0.8, 10 points are added.
If the Return on Equity Adjusted to Book is greater than 10, 10 points are added.
If the P/FCF ratio is between 0 and 15, 10 points are added.
If the Current Ratio is greater than 1.61, 10 points are added.
If the RSI is less than 35, 10 points are added.
The score is accumulated based on these conditions and stored in the total_score variable.
Displaying the Total Score:
Finally, the total score is plotted on the chart:
Summary of How It Works:
This script calculates a financial score for a stock using a variety of financial indicators. Each metric has a threshold, and when the stock meets certain criteria (for example, a good operating margin, a healthy debt-to-equity ratio, or a low P/E ratio), points are added to the overall score. The result is a single numerical value that reflects the financial health of the stock.
This score can help traders or investors identify companies with strong financials, or serve as a comparison tool between different stocks based on their financial health.
Generally >60 is the best stocks for med and long term trades
Rolling Window Geometric Brownian Motion Projections📊 Rolling GBM Projections + EV & Adjustable Confidence Bands
Overview
The Rolling GBM Projections + EV & Adjustable Confidence Bands indicator provides traders with a robust, dynamic tool to model and project future price movements using Geometric Brownian Motion (GBM). By combining GBM-based simulations, expected value (EV) calculations, and customizable confidence bands, this indicator offers valuable insights for decision-making and risk management.
Key Features
Rolling GBM Projections: Simulate potential future price paths based on drift (μμ) and volatility (σσ).
Expected Value (EV) Line: Represents the average projection of simulated price paths.
Confidence Bands: Define ranges where the price is expected to remain, adjustable from 51% to 99%.
Simulation Lines: Visualize individual GBM paths for detailed analysis.
EV of EV Line: A smoothed trend of the EV, offering additional clarity on price dynamics.
Customizable Lookback Periods: Adjust the rolling lookback periods for drift and volatility calculations.
Mathematical Foundation
1. Geometric Brownian Motion (GBM)
GBM is a mathematical model used to simulate the random movement of asset prices, described by the following stochastic differential equation:
dSt=μStdt+σStdWt
dSt=μStdt+σStdWt
Where:
StSt: Price at time tt
μμ: Drift term (expected return)
σσ: Volatility (standard deviation of returns)
dWtdWt: Wiener process (standard Brownian motion)
2. Drift (μμ) and Volatility (σσ)
Drift (μμ): Represents the average logarithmic return of the asset. Calculated using a simple moving average (SMA) over a rolling lookback period.
μ=SMA(ln(St/St−1),Lookback Drift)
μ=SMA(ln(St/St−1),Lookback Drift)
Volatility (σσ): Measures the standard deviation of logarithmic returns over a rolling lookback period.
σ=STD(ln(St/St−1),Lookback Volatility)
σ=STD(ln(St/St−1),Lookback Volatility)
3. Price Simulation Using GBM
The GBM formula for simulating future prices is:
St+Δt=St×e(μ−12σ2)Δt+σϵΔt
St+Δt=St×e(μ−21σ2)Δt+σϵΔt
Where:
ϵϵ: Random variable from a standard normal distribution (N(0,1)N(0,1)).
4. Confidence Bands
Confidence bands are determined using the Z-score corresponding to a user-defined confidence percentage (CC):
Upper Band=EV+Z⋅σ
Upper Band=EV+Z⋅σ
Lower Band=EV−Z⋅σ
Lower Band=EV−Z⋅σ
The Z-score is computed using an inverse normal distribution function, approximating the relationship between confidence and standard deviations.
Methodology
Rolling Drift and Volatility:
Drift and volatility are calculated using logarithmic returns over user-defined rolling lookback periods (default: μ=20μ=20, σ=16σ=16).
Drift defines the overall directional tendency, while volatility determines the randomness and variability of price movements.
Simulations:
Multiple GBM paths (default: 30) are generated for a specified number of projection candles (default: 12).
Each path is influenced by the current drift and volatility, incorporating random shocks to simulate real-world price dynamics.
Expected Value (EV):
The EV is calculated as the average of all simulated paths for each projection step, offering a statistical mean of potential price outcomes.
Confidence Bands:
The upper and lower bounds of the confidence bands are derived using the Z-score corresponding to the selected confidence percentage (e.g., 68%, 95%).
EV of EV:
A running average of the EV values, providing a smoothed perspective of price trends over the projection horizon.
Indicator Functionality
User Inputs:
Drift Lookback (Bars): Define the number of bars for rolling drift calculation (default: 20).
Volatility Lookback (Bars): Define the number of bars for rolling volatility calculation (default: 16).
Projection Candles (Bars): Set the number of bars to project future prices (default: 12).
Number of Simulations: Specify the number of GBM paths to simulate (default: 30).
Confidence Percentage: Input the desired confidence level for bands (default: 68%, adjustable from 51% to 99%).
Visualization Components:
Simulation Lines (Blue): Display individual GBM paths to visualize potential price scenarios.
Expected Value (EV) Line (Orange): Highlight the mean projection of all simulated paths.
Confidence Bands (Green & Red): Show the upper and lower confidence limits.
EV of EV Line (Orange Dashed): Provide a smoothed trendline of the EV values.
Current Price (White): Overlay the real-time price for context.
Display Toggles:
Enable or disable components (e.g., simulation lines, EV line, confidence bands) based on preference.
Practical Applications
Risk Management:
Utilize confidence bands to set stop-loss levels and manage trade risk effectively.
Use narrower confidence intervals (e.g., 50%) for aggressive strategies or wider intervals (e.g., 95%) for conservative approaches.
Trend Analysis:
Observe the EV and EV of EV lines to identify overarching trends and potential reversals.
Scenario Planning:
Analyze simulation lines to explore potential outcomes under varying market conditions.
Statistical Insights:
Leverage confidence bands to understand the statistical likelihood of price movements.
How to Use
Add the Indicator:
Copy the script into the TradingView Pine Editor, save it, and apply it to your chart.
Customize Settings:
Adjust the lookback periods for drift and volatility.
Define the number of projection candles and simulations.
Set the confidence percentage to tailor the bands to your strategy.
Interpret the Visualization:
Use the EV and confidence bands to guide trade entry, exit, and position sizing decisions.
Combine with other indicators for a holistic trading strategy.
Disclaimer
This indicator is a mathematical and statistical tool. It does not guarantee future performance.
Use it in conjunction with other forms of analysis and always trade responsibly.
Happy Trading! 🚀
Money Flow ExtendedMoney Flow Extended (MF)
Definition
The Money Flow Extended (MF) indicator brings together the functionality of the Money Flow Index indicator (MFI) , a tool created by Gene Quong and Avrum Soudack and used in technical analysis for measuring buying and selling pressure, and The Relative Strength Index (RSI) , a well versed momentum based oscillator created by J.Welles Wilder Jr., which is used to measure the speed (velocity) as well as the change (magnitude) of directional price movements.
History
As the Money Flow Index (MFI) is quite similar to The Relative Strength Index (RSI), essentially the RSI with the added aspect of volume, adding a Moving Average, divergence calculation, oversold and overbought gradients, facilitates the transition from RSI, making the use of MFI pretty similar.
What to look for
Overbought/Oversold
When momentum and price rise fast enough, at a high enough level, eventual the security will be considered overbought. The opposite is also true. When price and momentum fall far enough, they can be considered oversold. Traditional overbought territory starts above 80 and oversold territory starts below 20. These values are subjective however, and a technical analyst can set whichever thresholds they choose.
Divergence
MF Divergence occurs when there is a difference between what the price action is indicating and what MF is indicating. These differences can be interpreted as an impending reversal. Specifically, there are two types of divergences, bearish and bullish.
Bullish MFI Divergence – When price makes a new low but MF makes a higher low.
Bearish MFI Divergence – When price makes a new high but MF makes a lower high.
Failure Swings
Failure swings are another occurrence which can lead to a price reversal. One thing to keep in mind about failure swings is that they are completely independent of price and rely solely on MF. Failure swings consist of four steps and are considered to be either Bullish (buying opportunity) or Bearish (selling opportunity).
Bullish Failure Swing
MF drops below 20 (considered oversold).
MF bounces back above 20.
MF pulls back but remains above 20 (remains above oversold)
MF breaks out above its previous high.
Bearish Failure Swing
MF rises above 80 (considered overbought)
MF drops back below 80
MF rises slightly but remains below 80 (remains below overbought)
MF drops lower than its previous low.
Summary
The Money Flow Extended (MF) can be a very valuable technical analysis tool. Of course, MF should not be used alone as the sole source for a trader’s signals or setups. MF can be combined with additional indicators or chart pattern analysis to increase its effectiveness.
Inputs
Length
The time period to be used in calculating the MF. 14 is the default.
Pivot Loopback
After how many bars you want the divergence to show, on the scale of 1-5. 5 is the default.
Calculate Divergence
Calculating divergences is needed in order for divergence alerts to fire.
Moving Average section
You can learn more about the inputs in the "Moving Average" section in this Help Center article .
Style
MF
Can toggle the visibility of the MF as well as the visibility of a price line showing the actual current value of the MF. Can also select the MF Line's color, line thickness and visual style.
MF-based MA
Can toggle the visibility of the MF-based MA as well as the visibility of a price line showing the actual current MA value. Can also select its color, line thickness and line style.
MF Upper Band
Can toggle the visibility of the Upper Band as well as sets the boundary, on the scale of 1-100, for the Upper Band (80 is the default). The color, line thickness and line style can also be determined.
MF Middle Band
Can toggle the visibility of the Middle Band as well as sets the boundary, on the scale of 1-100, for the Middle Band (50 is the default). The color, line thickness and line style can also be determined.
MF Lower Band
Can toggle the visibility of the Lower Band as well as sets the boundary, on the scale of 1-100, for the Lower Band (20 is the default). The color, line thickness and line style can also be determined.
MF Background Fill
Toggles the visibility of a Background color within the MF's boundaries. Can also change the Color itself as well as the opacity.
Overbought Gradient Fill
Can toggle the visibility of the Overbought Gradient Fill. Can also select its colors combination.
Oversold Gradient Fill
Can toggle the visibility of the Oversold Gradient Fill. Can also select its colors combination.
Precision
Sets the number of decimal places to be left on the indicator's value before rounding up. The higher this number, the more decimal points will be on the indicator's value.
Bitcoin All-Time High (ATH) Alert with Cooldown₿ Bitcoin All-Time High (ATH) Alert with Cooldown 🚀👩🚀
🔍 What it does:
This indicator tracks new all-time highs (ATHs) and alerts you when Bitcoin (or any asset) reaches a fresh ATH, while avoiding alert spam with a customizable cooldown period.
✨ Key Features
✅ Alerts for New ATHs: Never miss when Bitcoin makes history!
✅ Cooldown Period: Prevents multiple alerts within a short timeframe (customizable in settings).
✅ ATH Line on Chart: A clear, visual line marking the all-time high price.
✅ Manual Reset Option: Reset the ATH for testing or specific chart conditions.
⚙️ How to Use
Add the Indicator: Apply it to your chart like any other indicator. Ideally on a small time frame, the cooldown is 20 bars by default (adjustable) which gives 20 minutes on the 1 min chart.
Customize Settings:
- Cooldown Period (bars): Set the number of bars to wait before triggering another alert (e.g., 20 bars).
- Show All-Time High Line: Toggle to display or hide the ATH line visually.
- Reset All-Time High: Use this to manually reset the ATH to the current bar's high.
Create an Alert:
Open the "Alerts" menu.
Select the condition: "New All-Time High" .
Choose a trigger type:
Once Per Bar: For immediate alerts when a new ATH occurs.
Once Per Bar Close: To confirm the ATH at the end of each bar.
🛠️ Who is it for?
Traders and HODLers who want to stay on top of price action.
Anyone looking for clean and efficient ATH tracking with no redundant alerts
🚀 Never miss a new ATH again. Stay ahead of the market!
Advanced MA and MACD PercentageIntroduction
The "Advanced MA and MACD Percentage" indicator is a powerful and innovative tool designed to help traders analyze financial markets with ease and precision. This indicator combines Moving Averages (MA) with the MACD indicator to assess the market’s overall trend and calculate the percentage of buy and sell signals based on current data.
Features
Multi-Timeframe Analysis:
Allows selecting your preferred timeframe for trend analysis, such as minute, hourly, daily, or weekly charts.
Support for Multiple Moving Average Types:
Offers the option to use either Simple Moving Average (SMA) or Exponential Moving Average (EMA), based on user preference.
Comprehensive MACD Analysis:
Analyzes the relationship between multiple moving averages (e.g., 20/50, 50/100) using MACD to provide deeper insights into market dynamics.
Calculation of Buy and Sell Percentages:
Computes the percentage of indicators signaling buy or sell conditions, providing a clear summary to assist trading decisions.
Intuitive Visual Interface:
Displays buy and sell percentages as two visible lines (green and red) on the chart.
Includes reference lines to clarify the range of percentages (100% to 0%).
How It Works
Moving Averages Calculation:
Calculates moving averages (20, 50, 100, 150, and 200) for the selected timeframe.
MACD Pair Analysis:
Computes the MACD to compare the performance between various moving average pairs, such as (20/50) and (50/100).
Identifying Buy and Sell Signals:
Counts the number of indicators signaling buy (price above MAs or positive MACD histogram).
Converts the count into percentages for both buy and sell signals.
Visual Representation:
Plots buy and sell percentages as clear lines (green for buy, red for sell).
Adds reference lines (100% and 0%) for easier interpretation.
How to Use the Indicator?
Settings:
Choose the type of moving average (SMA or EMA).
Select the timeframe that suits your strategy (e.g., 15 minutes, 1 hour, or daily).
Reading the Results:
If the buy percentage (green line) is above 50%, the overall trend is bullish (buy).
If the sell percentage (red line) is above 50%, the overall trend is bearish (sell).
Integrating Into Your Strategy:
Combine it with other indicators to confirm entry and exit signals.
Use it to quickly understand the market’s overall trend without needing complex manual analysis.
Benefits of the Indicator
Simplified Analysis: Provides a straightforward summary of the market's overall trend.
Adaptable to All Timeframes: Works perfectly on all timeframes.
Customizable: Allows users to adjust settings according to their needs.
Important Notes
This indicator does not provide direct buy or sell signals. Instead, it offers a summary of the market’s condition based on a combination of indicators.
It is recommended to use it alongside other technical analysis tools for precise trading signals.
Conclusion
The "Advanced MA and MACD Percentage" indicator is an ideal tool for traders who want to analyze the market using a combination of Moving Averages and MACD. It gives you a comprehensive overview of the overall trend, helping you make informed and quick trading decisions. Try it now and see the difference!
Ensemble Alerts█ OVERVIEW
This indicator creates highly customizable alert conditions and messages by combining several technical conditions into groups , which users can specify directly from the "Settings/Inputs" tab. It offers a flexible framework for building and testing complex alert conditions without requiring code modifications for each adjustment.
█ CONCEPTS
Ensemble analysis
Ensemble analysis is a form of data analysis that combines several "weaker" models to produce a potentially more robust model. In a trading context, one of the most prevalent forms of ensemble analysis is the aggregation (grouping) of several indicators to derive market insights and reinforce trading decisions. With this analysis, traders typically inspect multiple indicators, signaling trade actions when specific conditions or groups of conditions align.
Simplifying ensemble creation
Combining indicators into one or more ensembles can be challenging, especially for users without programming knowledge. It usually involves writing custom scripts to aggregate the indicators and trigger trading alerts based on the confluence of specific conditions. Making such scripts customizable via inputs poses an additional challenge, as it often involves complicated input menus and conditional logic.
This indicator addresses these challenges by providing a simple, flexible input menu where users can easily define alert criteria by listing groups of conditions from various technical indicators in simple text boxes . With this script, you can create complex alert conditions intuitively from the "Settings/Inputs" tab without ever writing or modifying a single line of code. This framework makes advanced alert setups more accessible to non-coders. Additionally, it can help Pine programmers save time and effort when testing various condition combinations.
█ FEATURES
Configurable alert direction
The "Direction" dropdown at the top of the "Settings/Inputs" tab specifies the allowed direction for the alert conditions. There are four possible options:
• Up only : The indicator only evaluates upward conditions.
• Down only : The indicator only evaluates downward conditions.
• Up and down (default): The indicator evaluates upward and downward conditions, creating alert triggers for both.
• Alternating : The indicator prevents alert triggers for consecutive conditions in the same direction. An upward condition must be the first occurrence after a downward condition to trigger an alert, and vice versa for downward conditions.
Flexible condition groups
This script features six text inputs where users can define distinct condition groups (ensembles) for their alerts. An alert trigger occurs if all the conditions in at least one group occur.
Each input accepts a comma-separated list of numbers with optional spaces (e.g., "1, 4, 8"). Each listed number, from 1 to 35, corresponds to a specific individual condition. Below are the conditions that the numbers represent:
1 — RSI above/below threshold
2 — RSI below/above threshold
3 — Stoch above/below threshold
4 — Stoch below/above threshold
5 — Stoch K over/under D
6 — Stoch K under/over D
7 — AO above/below threshold
8 — AO below/above threshold
9 — AO rising/falling
10 — AO falling/rising
11 — Supertrend up/down
12 — Supertrend down/up
13 — Close above/below MA
14 — Close below/above MA
15 — Close above/below open
16 — Close below/above open
17 — Close increase/decrease
18 — Close decrease/increase
19 — Close near Donchian top/bottom (Close > (Mid + HH) / 2)
20 — Close near Donchian bottom/top (Close < (Mid + LL) / 2)
21 — New Donchian high/low
22 — New Donchian low/high
23 — Rising volume
24 — Falling volume
25 — Volume above average (Volume > SMA(Volume, 20))
26 — Volume below average (Volume < SMA(Volume, 20))
27 — High body to range ratio (Abs(Close - Open) / (High - Low) > 0.5)
28 — Low body to range ratio (Abs(Close - Open) / (High - Low) < 0.5)
29 — High relative volatility (ATR(7) > ATR(40))
30 — Low relative volatility (ATR(7) < ATR(40))
31 — External condition 1
32 — External condition 2
33 — External condition 3
34 — External condition 4
35 — External condition 5
These constituent conditions fall into three distinct categories:
• Directional pairs : The numbers 1-22 correspond to pairs of opposing upward and downward conditions. For example, if one of the inputs includes "1" in the comma-separated list, that group uses the "RSI above/below threshold" condition pair. In this case, the RSI must be above a high threshold for the group to trigger an upward alert, and the RSI must be below a defined low threshold to trigger a downward alert.
• Non-directional filters : The numbers 23-30 correspond to conditions that do not represent directional information. These conditions act as filters for both upward and downward alerts. Traders often use non-directional conditions to refine trending or mean reversion signals. For instance, if one of the input lists includes "30", that group uses the "Low relative volatility" condition. The group can trigger an upward or downward alert only if the 7-period Average True Range (ATR) is below the 40-period ATR.
• External conditions : The numbers 31-35 correspond to external conditions based on the plots from other indicators on the chart. To set these conditions, use the source inputs in the "External conditions" section near the bottom of the "Settings/Inputs" tab. The external value can represent an upward, downward, or non-directional condition based on the following logic:
▫ Any value above 0 represents an upward condition.
▫ Any value below 0 represents a downward condition.
▫ If the checkbox next to the source input is selected, the condition becomes non-directional . Any group that uses the condition can trigger upward or downward alerts only if the source value is not 0.
To learn more about using plotted values from other indicators, see this article in our Help Center and the Source input section of our Pine Script™ User Manual.
Group markers
Each comma-separated list represents a distinct group , where all the listed conditions must occur to trigger an alert. This script assigns preset markers (names) to each condition group to make the active ensembles easily identifiable in the generated alert messages and labels. The markers assigned to each group use the format "M", where "M" is short for "Marker" and "x" is the group number. The titles of the inputs at the top of the "Settings/Inputs" tab show these markers for convenience.
For upward conditions, the labels and alert messages show group markers with upward triangles (e.g., "M1▲"). For downward conditions, they show markers with downward triangles (e.g., "M1▼").
NOTE: By default, this script populates the "M1" field with a pre-configured list for a mean reversion group ("2,18,24,28"). The other fields are empty. If any "M*" input does not contain a value, the indicator ignores it in the alert calculations.
Custom alert messages
By default, the indicator's alert message text contains the activated markers and their direction as a comma-separated list. Users can override this message for upward or downward alerts with the two text fields at the bottom of the "Settings/Inputs" tab. When the fields are not empty , the alerts use that text instead of the default marker list.
NOTE: This script generates alert triggers, not the alerts themselves. To set up an alert based on this script's conditions, open the "Create Alert" dialog box, then select the "Ensemble Alerts" and "Any alert() function call" options in the "Condition" tabs. See the Alerts FAQ in our Pine Script™ User Manual for more information.
Condition visualization
This script offers organized visualizations of its conditions, allowing users to inspect the behaviors of each condition alongside the specified groups. The key visual features include:
1) Conditional plots
• The indicator plots the history of each individual condition, excluding the external conditions, as circles at different levels. Opposite conditions appear at positive and negative levels with the same absolute value. The plots for each condition show values only on the bars where they occur.
• Each condition's plot is color-coded based on its type. Aqua and orange plots represent opposing directional conditions, and purple plots represent non-directional conditions. The titles of the plots also contain the condition numbers to which they apply.
• The plots in the separate pane can be turned on or off with the "Show plots in pane" checkbox near the top of the "Settings/Inputs" tab. This input only toggles the color-coded circles, which reduces the graphical load. If you deactivate these visuals, you can still inspect each condition from the script's status line and the Data Window.
• As a bonus, the indicator includes "Up alert" and "Down alert" plots in the Data Window, representing the combined upward and downward ensemble alert conditions. These plots are also usable in additional indicator-on-indicator calculations.
2) Dynamic labels
• The indicator draws a label on the main chart pane displaying the activated group markers (e.g., "M1▲") each time an alert condition occurs.
• The labels for upward alerts appear below chart bars. The labels for downward alerts appear above the bars.
NOTE: This indicator can display up to 500 labels because that is the maximum allowed for a single Pine script.
3) Background highlighting
• The indicator can highlight the main chart's background on bars where upward or downward condition groups activate. Use the "Highlight background" inputs in the "Settings/Inputs" tab to enable these highlights and customize their colors.
• Unlike the dynamic labels, these background highlights are available for all chart bars, irrespective of the number of condition occurrences.
█ NOTES
• This script uses Pine Script™ v6, the latest version of TradingView's programming language. See the Release notes and Migration guide to learn what's new in v6 and how to convert your scripts to this version.
• This script imports our new Alerts library, which features functions that provide high-level simplicity for working with complex compound conditions and alerts. We used the library's `compoundAlertMessage()` function in this indicator. It evaluates items from "bool" arrays in groups specified by an array of strings containing comma-separated index lists , returning a tuple of "string" values containing the marker of each activated group.
• The script imports the latest version of the ta library to calculate several technical indicators not included in the built-in `ta.*` namespace, including Double Exponential Moving Average (DEMA), Triple Exponential Moving Average (TEMA), Fractal Adaptive Moving Average (FRAMA), Tilson T3, Awesome Oscillator (AO), Full Stochastic (%K and %D), SuperTrend, and Donchian Channels.
• The script uses the `force_overlay` parameter in the label.new() and bgcolor() calls to display the drawings and background colors in the main chart pane.
• The plots and hlines use the available `display.*` constants to determine whether the visuals appear in the separate pane.
Look first. Then leap.
Alerts█ OVERVIEW
This library is a Pine Script™ programmers tool that provides functions to simplify the creation of compound conditions and alert messages. With these functions, scripts can use comma-separated "string" lists to specify condition groups from arbitrarily large "bool" arrays , offering a convenient way to provide highly flexible alert creation to script users without requiring numerous inputs in the "Settings/Inputs" menu.
█ CONCEPTS
Compound conditions
Compound conditions are essentially groups of two or more conditions, where each required condition must occur to produce a `true` result. Traders often combine conditions, including signals from various indicators, to drive and reinforce trade decisions. Similarly, programmers use compound conditions in logical operations to create scripts that respond dynamically to groups of events.
Condition conundrum
Providing flexible condition combinations to script users for signals and alerts often poses a significant challenge: input complexity . Conventionally, such flexibility comes at the cost of an extensive list of separate inputs for toggling individual conditions and customizing their properties, often resulting in complicated input menus that are difficult for users to navigate effectively. Furthermore, managing all those inputs usually entails tediously handling many extra variables and logical expressions, making such projects more complex for programmers.
Condensing complexity
This library introduces a technique using parsed strings to reference groups of elements from "bool" arrays , helping to simplify and streamline the construction of compound conditions and alert messages. With this approach, programmers can provide one or more "string" inputs in their scripts where users can list numbers corresponding to the conditions they want to combine.
For example, suppose you have a script that creates alert triggers based on a combination of up to 20 individual conditions, and you want to make inputs for users to choose which conditions to combine. Instead of creating 20 separate checkboxes in the "Settings/Inputs" tab and manually adding associated logic for each one, you can store the conditional values in arrays, make one or more "string" inputs that accept values listing the array item locations (e.g., "1,4,8,11"), and then pass the inputs to these functions to determine the compound conditions formed by the specified groups.
This approach condenses the input space, improving navigability and utility. Additionally, it helps provide high-level simplicity to complex conditional code, making it easier to maintain and expand over time.
█ CALCULATIONS AND USE
This library contains three functions for evaluating compound conditions: `getCompoundConditon()`, `getCompoundConditionsArray()`, and `compoundAlertMessage()`. Each function has two overloads that evaluate compound conditions based on groups of items from one or two "bool" arrays . The sections below explain the functions' calculations and how to use them.
Referencing conditions using "string" index lists
Each function processes "string" values containing comma-separated lists of numerals representing the indices of the "bool" array items to use in its calculations (e.g., "4, 8, 12"). The functions split each supplied "string" list by its commas, then iterate over those specified indices in the "bool" arrays to determine each group's combined `true` or `false` state.
For convenience, the numbers in the "string" lists can represent zero-based indices (where the first item is at index 0) or one-based indices (where the first item is at index 1), depending on the function's `zeroIndex` parameter. For example, an index list of "0, 2, 4" with a `zeroIndex` value of `true` specifies that the condition group uses the first , third , and fifth "bool" values in the array, ignoring all others. If the `zeroIndex` value is `false`, the list "1, 3, 5" also refers to those same elements.
Zero-based indexing is convenient for programmers because Pine arrays always use this index format. However, one-based indexing is often more convenient and familiar for script users, especially non-programmers.
Evaluating one or many condition groups
The `getCompoundCondition()` function evaluates singular condition groups determined by its `indexList` parameter, returning `true` values whenever the specified array elements are `true`. This function is helpful when a script has to evaluate specific groups of conditions and does not require many combinations.
In contrast, the `getCompoundConditionsArray()` function can evaluate numerous condition groups, one for each "string" included in its `indexLists` argument. It returns arrays containing `true` or `false` states for each listed group. This function is helpful when a script requires multiple condition combinations in additional calculations or logic.
The `compoundAlertMessage()` function is similar to the `getCompoundConditionsArray()` function. It also evaluates a separate compound condition group for each "string" in its `indexLists` array, but it returns "string" values containing the marker (name) of each group with a `true` result. You can use these returned values as the `message` argument in alert() calls, display them in labels and other drawing objects, or even use them in additional calculations and logic.
Directional condition pairs
The first overload of each function operates on a single `conditions` array, returning values representing one or more compound conditions from groups in that array. These functions are ideal for general-purpose condition groups that may or may not represent direction information.
The second overloads accept two arrays representing upward and downward conditions separately: `upConditions` and `downConditions`. These overloads evaluate opposing directional conditions in pairs (e.g., RSI is above/below a level) and return upward and downward condition information separately in a tuple .
When using the directional overloads, ensure the `upConditions` and `downConditions` arrays are the same size, with the intended condition pairs at the same indices . For instance, if you have a specific upward RSI condition's value at the first index in the `upConditions` array, include the opposing downward RSI condition's value at that same index in the `downConditions` array. If a condition can apply to both directions (e.g., rising volume), include its value at the same index in both arrays.
Group markers
To simplify the generation of informative alert messages, the `compoundAlertMessage()` function assigns "string" markers to each condition group, where "marker" refers to the group's name. The `groupMarkers` parameter allows you to assign custom markers to each listed group. If not specified, the function generates default group markers in the format "M", where "M" is short for "Marker" and "" represents the group number starting from 1. For example, the default marker for the first group specified in the `indexLists` array is "M1".
The function's returned "string" values contain a comma-separated list with markers for each activated condition group (e.g., "M1, M4"). The function's second overload, which processes directional pairs of conditions, also appends extra characters to the markers to signify the direction. The default for upward groups is "▲" (e.g., "M1▲") and the default for downward ones is "▼" (e.g., "M1▼"). You can customize these appended characters with the `upChar` and `downChar` parameters.
Designing customizable alerts
We recommend following these primary steps when using this library to design flexible alerts for script users:
1. Create text inputs for users to specify comma-separated lists of conditions with the input.string() or input.text_area() functions, and then collect all the input values in a "string" array . Note that each separate "string" in the array will represent a distinct condition group.
2. Create arrays of "bool" values representing the possible conditions to choose from. If your script will process pairs of upward and downward conditions, ensure the related elements in the arrays align at the same indices.
3. Call `compoundAlertMessage()` using the arrays from steps 1 and 2 as arguments to get the alert message text. If your script will use the text for alerts only, not historical display or calculation purposes, the call is necessary only on realtime bars .
4. Pass the calculated "string" values as the `message` argument in alert() calls. We recommend calling the function only when the "string" is not empty (i.e., `messageText != ""`). To avoid repainting alerts on open bars, use barstate.isconfirmed in the condition to allow alert triggers only on each bar's close .
5. Test the alerts. Open the "Create Alert" dialog box and select "Any alert() function call" in the "Condition" field. It is also helpful to inspect the strings with Pine Logs .
NOTE: Because the techniques in this library use lists of numbers to specify conditions, we recommend including a tooltip for the "string" inputs that lists the available numbers and the conditions they represent. This tooltip provides a legend for script users, making it simple to understand and utilize. To create the tooltip, declare a "const string" listing the options and pass it to the `input.*()` call's `tooltip` parameter. See the library's example code for a simple demonstration.
█ EXAMPLE CODE
This library's example code demonstrates one possible way to offer a selection of compound conditions with "string" inputs and these functions. It uses three input.string() calls, each accepting a comma-separated list representing a distinct condition group. The title of each input represents the default group marker that appears in the label and alert text. The code collects these three input values in a `conditionGroups` array for use with the `compoundAlertMessage()` function.
In this code, we created two "bool" arrays to store six arbitrary condition pairs for demonstration:
1. Bar up/down: The bar's close price must be above the open price for upward conditions, and vice versa for downward conditions.
2. Fast EMA above/below slow EMA : The 9-period Exponential Moving Average of close prices must be above the 21-period EMA for upward conditions, and vice versa for downward conditions.
3. Volume above average : The bar's volume must exceed its 20-bar average to activate an upward or downward condition.
4. Volume rising : The volume must exceed that of the previous bar to activate an upward or downward condition.
5. RSI trending up/down : The 14-period Relative Strength Index of close prices must be between 50 and 70 for upward conditions, and between 30 and 50 for downward conditions.
6. High volatility : The 7-period Average True Range (ATR) must be above the 40-period ATR to activate an upward or downward condition.
We included a `tooltip` argument for the third input.string() call that displays the condition numbers and titles, where 1 is the first condition number.
The `bullConditions` array contains the `true` or `false` states of all individual upward conditions, and the `bearConditions` array contains all downward condition states. For the conditions that filter either direction because they are non-directional, such as "High volatility", both arrays contain the condition's `true` or `false` value at the same index. If you use these conditions alone, they activate upward and downward alert conditions simultaneously.
The example code calls `compoundAlertMessage()` using the `bullConditions`, `bearConditions`, and `conditionGroups` arrays to create a tuple of strings containing the directional markers for each activated group. On confirmed bars, it displays non-empty strings in labels and uses them in alert() calls. For the text shown in the labels, we used str.replace_all() to replace commas with newline characters, aligning the markers vertically in the display.
Look first. Then leap.
█ FUNCTIONS
This library exports the following functions:
getCompoundCondition(conditions, indexList, minRequired, zeroIndex)
(Overload 1 of 2) Determines a compound condition based on selected elements from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in the compound condition.
indexList (string) : (series string) A "string" containing a comma-separated list of whole numbers representing the group of `conditions` elements to use in the compound condition. For example, if the value is `"0, 2, 4"`, and `minRequired` is `na`, the function returns `true` only if the `conditions` elements at index 0, 2, and 4 are all `true`. If the value is an empty "string", the function returns `false`.
minRequired (int) : (series int) Optional. Determines the minimum number of selected conditions required to activate the compound condition. For example, if the value is 2, the function returns `true` if at least two of the specified `conditions` elements are `true`. If the value is `na`, the function returns `true` only if all specified elements are `true`. The default is `na`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the `indexList` represents zero-based array indices. If `true`, a value of "0" in the list represents the first array index. If `false`, a `value` of "1" represents the first index. The default is `true`.
Returns: (bool) `true` if `conditions` elements in the group specified by the `indexList` are `true`, `false` otherwise.
getCompoundCondition(upConditions, downConditions, indexList, minRequired, allowUp, allowDown, zeroIndex)
(Overload 2 of 2) Determines upward and downward compound conditions based on selected elements from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) : (array) An array containing the possible "bool" values to use in the upward compound condition.
downConditions (array) : (array) An array containing the possible "bool" values to use in the downward compound condition.
indexList (string) : (series string) A "string" containing a comma-separated list of whole numbers representing the `upConditions` and `downConditions` elements to use in the compound conditions. For example, if the value is `"0, 2, 4"` and `minRequired` is `na`, the function returns `true` for the first value only if the `upConditions` elements at index 0, 2, and 4 are all `true`. If the value is an empty "string", the function returns ` `.
minRequired (int) : (series int) Optional. Determines the minimum number of selected conditions required to activate either compound condition. For example, if the value is 2, the function returns `true` for its first value if at least two of the specified `upConditions` elements are `true`. If the value is `na`, the function returns `true` only if all specified elements are `true`. The default is `na`.
allowUp (bool) : (series bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array, and the first item in the returned tuple is `false`. The default is `true`.
allowDown (bool) : (series bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array, and the second item in the returned tuple is `false`. The default is `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the `indexList` represents zero-based array indices. If `true`, a value of "0" in the list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: ( ) A tuple containing two "bool" values representing the upward and downward compound condition states, respectively.
getCompoundConditionsArray(conditions, indexLists, zeroIndex)
(Overload 1 of 2) Creates an array of "bool" values representing compound conditions formed by selected elements from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in each compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `conditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding item in the returned array is `true` only if the `conditions` elements at index 0, 2, and 4 are all `true`. If an item is an empty "string", the item in the returned array is `false`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: (array) An array of "bool" values representing compound condition states for each condition group. An item in the array is `true` only if all the `conditions` elements specified by the corresponding `indexLists` item are `true`. Otherwise, the item is `false`.
getCompoundConditionsArray(upConditions, downConditions, indexLists, allowUp, allowDown, zeroIndex)
(Overload 2 of 2) Creates two arrays of "bool" values representing compound upward and
downward conditions formed by selected elements from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) : (array) An array containing the possible "bool" values to use in each upward compound condition.
downConditions (array) : (array) An array containing the possible "bool" values to use in each downward compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `upConditions` and `downConditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding item in the first returned array is `true` only if the `upConditions` elements at index 0, 2, and 4 are all `true`. If an item is an empty "string", the items in both returned arrays are `false`.
allowUp (bool) : (series bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array, and all elements in the first returned array are `false`. The default is `true`.
allowDown (bool) : (series bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array, and all elements in the second returned array are `false`. The default is `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: ( ) A tuple containing two "bool" arrays:
- The first array contains values representing upward compound condition states determined using the `upConditions`.
- The second array contains values representing downward compound condition states determined using the `downConditions`.
compoundAlertMessage(conditions, indexLists, zeroIndex, groupMarkers)
(Overload 1 of 2) Creates a "string" message containing a comma-separated list of markers representing active compound conditions formed by specified element groups from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in each compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `conditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding marker for that item appears in the returned "string" only if the `conditions` elements at index 0, 2, and 4 are all `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
groupMarkers (array) : (array) Optional. If specified, sets the marker (name) for each condition group specified in the `indexLists` array. If `na`, the function uses the format `"M"` for each group, where "M" is short for "Marker" and `` represents the one-based index for the group (e.g., the marker for the first listed group is "M1"). The default is `na`.
Returns: (string) A "string" containing a list of markers corresponding to each active compound condition.
compoundAlertMessage(upConditions, downConditions, indexLists, allowUp, allowDown, zeroIndex, groupMarkers, upChar, downChar)
(Overload 2 of 2) Creates two "string" messages containing comma-separated lists of markers representing active upward and downward compound conditions formed by specified element groups from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) An array containing the possible "bool" values to use in each upward compound condition.
downConditions (array) An array containing the possible "bool" values to use in each downward compound condition.
indexLists (array) An array of strings containing comma-separated lists of whole numbers representing the `upConditions` and `downConditions` element groups to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding group marker for that item appears in the first returned "string" only if the `upConditions` elements at index 0, 2, and 4 are all `true`.
allowUp (bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array and returns an empty "string" for the first tuple element. The default is `true`.
allowDown (bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array and returns an empty "string" for the second tuple element. The default is `true`.
zeroIndex (bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
groupMarkers (array) Optional. If specified, sets the name (marker) of each condition group specified in the `indexLists` array. If `na`, the function uses the format `"M"` for each group, where "M" is short for "Marker" and `` represents the one-based index for the group (e.g., the marker for the first listed group is "M1"). The default is `na`.
upChar (string) Optional. A "string" appended to all group markers for upward conditions to signify direction. The default is "▲".
downChar (string) Optional. A "string" appended to all group markers for downward conditions to signify direction. The default is "▼".
Returns: ( ): A tuple of "string" values containing lists of markers corresponding to active upward and downward compound conditions, respectively.
Triple CCI Strategy MFI Confirmed [Skyrexio]Overview
Triple CCI Strategy MFI Confirmed leverages 3 different periods Commodity Channel Index (CCI) indicator in conjunction Money Flow Index (MFI) and Exponential Moving Average (EMA) to obtain the high probability setups. Fast period CCI is used for having the high probability to enter in the direction of short term trend, middle and slow period CCI are used for confirmation, if market now likely in the mid and long-term uptrend. MFI is used to confirm trade with the money inflow/outflow with the high probability. EMA is used as an additional trend filter. Moreover, strategy uses exponential moving average (EMA) to trail the price when it reaches the specific level. More information in "Methodology" and "Justification of Methodology" paragraphs. The strategy opens only long trades.
Unique Features
Dynamic stop-loss system: Instead of fixed stop-loss level strategy utilizes average true range (ATR) multiplied by user given number subtracted from the position entry price as a dynamic stop loss level.
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Four layers trade filtering system: Strategy utilizes two different period CCI indicators, MFI and EMA indicators to confirm the signals produced by fast period CCI.
Trailing take profit level: After reaching the trailing profit activation level scrip activate the trailing of long trade using EMA. More information in methodology.
Methodology
The strategy opens long trade when the following price met the conditions:
Fast period CCI shall crossover the zero-line.
Slow and Middle period CCI shall be above zero-lines.
Price shall close above the EMA. Crossover is not obligatory
MFI shall be above 50
When long trade is executed, strategy set the stop-loss level at the price ATR multiplied by user-given value below the entry price. This level is recalculated on every next candle close, adjusting to the current market volatility.
At the same time strategy set up the trailing stop validation level. When the price crosses the level equals entry price plus ATR multiplied by user-given value script starts to trail the price with EMA. If price closes below EMA long trade is closed. When the trailing starts, script prints the label “Trailing Activated”.
Strategy settings
In the inputs window user can setup the following strategy settings:
ATR Stop Loss (by default = 1.75)
ATR Trailing Profit Activation Level (by default = 2.25)
CCI Fast Length (by default = 14, used for calculation short term period CCI)
CCI Middle Length (by default = 25, used for calculation short term period CCI)
CCI Slow Length (by default = 50, used for calculation long term period CCI)
MFI Length (by default = 14, used for calculation MFI
EMA Length (by default = 50, period of EMA, used for trend filtering EMA calculation)
Trailing EMA Length (by default = 20)
User can choose the optimal parameters during backtesting on certain price chart.
Justification of Methodology
Before understanding why this particular combination of indicator has been chosen let's briefly explain what is CCI, MFI and EMA.
The Commodity Channel Index (CCI) is a momentum-based technical indicator that measures the deviation of a security's price from its average price over a specific period. It helps traders identify overbought or oversold conditions and potential trend reversals.
The CCI formula is:
CCI = (Typical Price − SMA) / (0.015 × Mean Deviation)
Typical Price (TP): This is calculated as the average of the high, low, and closing prices for the period.
Simple Moving Average (SMA): This is the average of the Typical Prices over a specific number of periods.
Mean Deviation: This is the average of the absolute differences between the Typical Price and the SMA.
The result is a value that typically fluctuates between +100 and -100, though it is not bounded and can go higher or lower depending on the price movement.
The Money Flow Index (MFI) is a technical indicator that measures the strength of money flowing into and out of a security. It combines price and volume data to assess buying and selling pressure and is often used to identify overbought or oversold conditions. The formula for MFI involves several steps:
1. Calculate the Typical Price (TP):
TP = (high + low + close) / 3
2. Calculate the Raw Money Flow (RMF):
Raw Money Flow = TP × Volume
3. Determine Positive and Negative Money Flow:
If the current TP is greater than the previous TP, it's Positive Money Flow.
If the current TP is less than the previous TP, it's Negative Money Flow.
4. Calculate the Money Flow Ratio (MFR):
Money Flow Ratio = Sum of Positive Money Flow (over n periods) / Sum of Negative Money Flow (over n periods)
5. Calculate the Money Flow Index (MFI):
MFI = 100 − (100 / (1 + Money Flow Ratio))
MFI above 80 can be considered as overbought, below 20 - oversold.
The Exponential Moving Average (EMA) is a type of moving average that places greater weight and significance on the most recent data points. It is widely used in technical analysis to smooth price data and identify trends more quickly than the Simple Moving Average (SMA).
Formula:
1. Calculate the multiplier
Multiplier = 2 / (n + 1) , Where n is the number of periods.
2. EMA Calculation
EMA = (Current Price) × Multiplier + (Previous EMA) × (1 − Multiplier)
This strategy leverages Fast period CCI, which shall break the zero line to the upside to say that probability of short term trend change to the upside increased. This zero line crossover shall be confirmed by the Middle and Slow periods CCI Indicators. At the moment of breakout these two CCIs shall be above 0, indicating that there is a high probability that price is in middle and long term uptrend. This approach increases chances to have a long trade setup in the direction of mid-term and long-term trends when the short-term trend starts to reverse to the upside.
Additionally strategy uses MFI to have a greater probability that fast CCI breakout is confirmed by this indicator. We consider the values of MFI above 50 as a higher probability that trend change from downtrend to the uptrend is real. Script opens long trades only if MFI is above 50. As you already know from the MFI description, it incorporates volume in its calculation, therefore we have another one confirmation factor.
Finally, strategy uses EMA an additional trend filter. It allows to open long trades only if price close above EMA (by default 50 period). It increases the probability of taking long trades only in the direction of the trend.
ATR is used to adjust the strategy risk management to the current market volatility. If volatility is low, we don’t need the large stop loss to understand the there is a high probability that we made a mistake opening the trade. User can setup the settings ATR Stop Loss and ATR Trailing Profit Activation Level to realize his own risk to reward preferences, but the unique feature of a strategy is that after reaching trailing profit activation level strategy is trying to follow the trend until it is likely to be finished instead of using fixed risk management settings. It allows sometimes to be involved in the large movements. It’s also important to make a note, that script uses another one EMA (by default = 20 period) as a trailing profit level.
Backtest Results
Operating window: Date range of backtests is 2022.04.01 - 2024.11.25. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 50%
Maximum Single Position Loss: -4.13%
Maximum Single Profit: +19.66%
Net Profit: +5421.21 USDT (+54.21%)
Total Trades: 108 (44.44% win rate)
Profit Factor: 2.006
Maximum Accumulated Loss: 777.40 USDT (-7.77%)
Average Profit per Trade: 50.20 USDT (+0.85%)
Average Trade Duration: 44 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 2h BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
Z The Good Stuff +I created this script to have a couple datapoints that I want to look at when going through charts to find trade ideas. Qullamaggie is one of my biggest inspirations and I built in a couple of his concepts with a touch to help me with sizing properly, all explained below:
Box 1: ADR %, Average Daily Range, gives and indication of how volatile the stock is. It uses the 20 day average % move of the current stock on the chart.
Box 2: LOD Distance, low of day distance is a quality of life element I created. It calculates the low for the current candle and color codes it red or green depending on if it's higher or lower than the daily ADR. The logic is that if a stock has an average speed, buying on a setup it is preferred if the stop distance (assuming a low of day stop) should be less than the ADR to improve the odds of more upside.
Box 3: Todays DV, this shows a rough estimate of how much money was traded on the particular day.
Box 4: ADV 20 days, similar to above this shows the 20 day $ traded average. The point to look at it is to have a better idea what position size is possible to not get stuck in something too illiquid.
Box 5: Market cap, just shows the market cap of the stock to know what size the company is.
Box 6: Number of shares, this is an additional quality of life aspect. If using low of day stops, this part calculates based on the users' inputted portfolio size and portfolio risk preference and then calculates how many stocks to buy to stay within the risk parameters. It is obviously not a sole decision making parameter nor does it guarantee any execution, but if a stock is showing an entry you want to take you can use the number of shares to help you know how many to buy. The preset is a portfolio of 10000 and a risk of 0.25%. This means that the number of shares to buy will be at the current price with lod stop that would result in a 0.25% portfolio loss. OF COURSE the actual loss depends on the execution and if the user places a stop loss order.
Hope you find it useful and feel free to give feedback! Cheers!
LRSI-TTM Squeeze - AynetThis Pine Script code creates an indicator called LRSI-TTM Squeeze , which combines two key concepts to analyze momentum, squeeze conditions, and price movements in the market:
Laguerre RSI (LaRSI): A modified version of RSI used to identify trend reversals in price movements.
TTM Squeeze: Identifies market compressions (low volatility) and potential breakouts from these squeezes.
Functionality and Workflow of the Code
1. Laguerre RSI (LaRSI)
Purpose:
Provides a smoother and less noisy version of RSI to track price movements.
Calculation:
The script uses a filtering coefficient (alpha) to process price data through four levels (L0, L1, L2, L3).
Movement differences between these levels calculate buying pressure (cu) and selling pressure (cd).
The ratio of these pressures forms the Laguerre RSI:
bash
Kodu kopyala
LaRSI = cu / (cu + cd)
The LaRSI value indicates:
Below 20: Oversold condition (potential buy signal).
Above 80: Overbought condition (potential sell signal).
2. TTM Squeeze
Purpose:
Analyzes the relationship between Bollinger Bands (BB) and Keltner Channels (KC) to determine whether the market is compressed (low volatility) or expanded (high volatility).
Calculation:
Bollinger Bands:
Calculated based on the moving average (SMA) of the price, with an upper and lower band.
Keltner Channels:
Created using the Average True Range (ATR) to calculate an upper and lower band.
Squeeze States:
Squeeze On: BB is within KC.
Squeeze Off: BB is outside KC.
Other States (No Squeeze): Neither of the above applies.
3. Momentum Calculation
Momentum is computed using the linear regression of the difference between the price and its SMA. This helps anticipate the direction and strength of price movements when the squeeze ends.
Visuals on the Chart
Laguerre RSI Line:
An RSI indicator scaled to 0-100 is plotted.
The line's color changes based on its movement:
Green line: RSI is rising.
Red line: RSI is falling.
Key levels:
20 level: Oversold condition (buy signal can be triggered).
80 level: Overbought condition (sell signal can be triggered).
Momentum Histogram:
Displays momentum as histogram bars with colors based on its direction and strength:
Lime (light green): Positive momentum increasing.
Green: Positive momentum decreasing.
Red: Negative momentum decreasing.
Maroon (dark red): Negative momentum increasing.
Squeeze Status Indicator:
A marker is plotted on the zero line to indicate the squeeze state:
Yellow: Squeeze On (compression active).
Blue: Squeeze Off (compression ended, movement expected).
Gray: No Squeeze.
Information Table
A table is displayed in the top-right corner of the chart, showing closing prices for different timeframes (e.g., 1 minute, 5 minutes, 1 hour, etc.). Each timeframe is color-coded.
Alerts
LaRSI Alerts:
Crosses above 20: Exiting oversold condition (buy signal).
Crosses below 80: Exiting overbought condition (sell signal).
Squeeze Alerts:
When the squeeze ends: Indicates a potential price move.
When the squeeze starts: Indicates volatility is decreasing.
Summary
This indicator is a powerful tool for determining market trends, momentum, and squeeze conditions. It helps users identify periods when the market is likely to move or remain stagnant, providing alerts based on these analyses to support trading strategies.
MACD, ADX & RSI -> for altcoins# MACD + ADX + RSI Combined Indicator
## Overview
This advanced technical analysis tool combines three powerful indicators (MACD, ADX, and RSI) into a single view, providing a comprehensive analysis of trend, momentum, and divergence signals. The indicator is designed to help traders identify potential trading opportunities by analyzing multiple aspects of price action simultaneously.
## Components
### 1. MACD (Moving Average Convergence Divergence)
- **Purpose**: Identifies trend direction and momentum
- **Components**:
- Fast EMA (default: 12 periods)
- Slow EMA (default: 26 periods)
- Signal Line (default: 9 periods)
- Histogram showing the difference between MACD and Signal line
- **Visual**:
- Blue line: MACD line
- Orange line: Signal line
- Green/Red histogram: MACD histogram
- **Interpretation**:
- Histogram color changes indicate potential trend shifts
- Crossovers between MACD and Signal lines suggest entry/exit points
### 2. ADX (Average Directional Index)
- **Purpose**: Measures trend strength and direction
- **Components**:
- ADX line (default threshold: 20)
- DI+ (Positive Directional Indicator)
- DI- (Negative Directional Indicator)
- **Visual**:
- Navy blue line: ADX
- Green line: DI+
- Red line: DI-
- **Interpretation**:
- ADX > 20 indicates a strong trend
- DI+ crossing above DI- suggests bullish momentum
- DI- crossing above DI+ suggests bearish momentum
### 3. RSI (Relative Strength Index)
- **Purpose**: Identifies overbought/oversold conditions and divergences
- **Components**:
- RSI line (default: 14 periods)
- Divergence detection
- **Visual**:
- Purple line: RSI
- Horizontal lines at 70 (overbought) and 30 (oversold)
- Divergence labels ("Bull" and "Bear")
- **Interpretation**:
- RSI > 70: Potentially overbought
- RSI < 30: Potentially oversold
- Bullish/Bearish divergences indicate potential trend reversals
## Alert System
The indicator includes several automated alerts:
1. **MACD Alerts**:
- Rising to falling histogram transitions
- Falling to rising histogram transitions
2. **RSI Divergence Alerts**:
- Bullish divergence formations
- Bearish divergence formations
3. **ADX Trend Alerts**:
- Strong trend development (ADX crossing threshold)
- DI+ crossing above DI- (bullish)
- DI- crossing above DI+ (bearish)
## Settings Customization
All components can be fine-tuned through the settings panel:
### MACD Settings
- Fast Length
- Slow Length
- Signal Smoothing
- Source
- MA Type options (SMA/EMA)
### ADX Settings
- Length
- Threshold level
### RSI Settings
- RSI Length
- Source
- Divergence calculation toggle
## Usage Guidelines
### Entry Signals
Strong entry signals typically occur when multiple components align:
1. MACD histogram color change
2. ADX showing strong trend (>20)
3. RSI showing divergence or leaving oversold/overbought zones
### Exit Signals
Consider exits when:
1. MACD crosses signal line in opposite direction
2. ADX shows weakening trend
3. RSI reaches extreme levels with divergence
### Risk Management
- Use the indicator as part of a complete trading strategy
- Combine with price action and support/resistance levels
- Consider multiple timeframe analysis for confirmation
- Don't rely solely on any single component
## Technical Notes
- Built for TradingView using Pine Script v5
- Compatible with all timeframes
- Optimized for real-time calculation
- Includes proper error handling and NA value management
- Memory-efficient calculations for smooth performance
## Installation
1. Copy the provided Pine Script code
2. Open TradingView Chart
3. Create New Indicator -> Pine Editor
4. Paste the code and click "Add to Chart"
5. Adjust settings as needed through the indicator settings panel
## Version Information
- Version: 2.0
- Last Updated: November 2024
- Platform: TradingView
- Language: Pine Script v5
Multi-Symbol Scanner: Advanced EMA-RSI-Volume Strategy# Multi-Symbol Tech Stock Scanner: Advanced EMA-RSI-Volume Strategy
## Technical Analysis Methodology
This scanner implements a sophisticated multi-timeframe analysis approach combining three key technical elements:
### 1. Dual EMA System (Primary Trend Detection)
- **Long-term EMA (820 periods)**: Acts as the primary trend identifier
- Chosen specifically for tech stocks' longer-term price waves
- Helps filter out minor market noise while capturing major trend changes
- 820 periods approximately represents 3.2 years of trading days
- **Medium-term EMA (320 periods)**: Serves as trend confirmation
- Approximately 1.25 years of trading data
- Provides earlier entry signals while maintaining trend reliability
- Helps identify potential trend reversals before the major trend shift
### 2. Volume Analysis Component
The script employs a dynamic volume analysis system:
- Calculates 20-period moving average of volume as baseline
- Requires 1.5x surge above baseline for signal confirmation
- Volume surge requirement helps filter out weak moves and potential false breakouts
- Different from standard volume indicators as it uses adaptive thresholds
### 3. RSI Momentum Filter
Implements a specialized RSI configuration:
- 14-period RSI with dynamic overbought/oversold levels
- Oversold threshold: 30 (customizable)
- Overbought threshold: 70 (customizable)
- Used as a confirmation tool rather than primary signal generator
## Signal Generation Logic
### Buy Signal Requirements
1. Price must cross above 820 EMA (PRIMARY CONDITION)
2. Current price must be above 320 EMA (CONFIRMATION)
3. RSI must be above 30 but below 70 (MOMENTUM CHECK)
4. Volume must be 1.5x above 20-period average (STRENGTH VALIDATION)
### Sell Signal Requirements
1. Price must cross below 820 EMA (PRIMARY CONDITION)
2. Current price must be below 320 EMA (CONFIRMATION)
3. RSI must be above 30 but below 70 (MOMENTUM CHECK)
4. Volume must be 1.5x above 20-period average (STRENGTH VALIDATION)
## Risk Management Integration
The script automatically calculates key risk levels based on volatility:
1. **Stop Loss Calculation**:
- Default: 2% below entry for buys
- Dynamically adjusted based on price point
- Can be modified through input parameters
2. **Take Profit Targets**:
- Primary target: 6% above entry (3:1 reward-risk ratio)
- Based on historical tech stock movement patterns
- Adjustable through input parameters
## Multi-Symbol Implementation
The scanner monitors 6 symbols simultaneously using:
- Separate security calls for each data point
- Optimized data requests to prevent overload
- Individual signal processing for each symbol
- Synchronized alert generation system
## Technical Implementation Details
1. **Data Processing**:
```
- Security data requests on 10-minute timeframe
- Individual EMA calculations per symbol
- Separate volume analysis threads
- RSI calculations with standard deviation normalization
```
2. **Signal Processing**:
```
- Cross-verification of all conditions
- Time-based signal validation
- Volume surge confirmation
- Trend alignment check
```
3. **Alert System**:
```
- Bar-close confirmation required
- Multi-condition validation
- Detailed price level inclusion
- Risk parameter integration
```
## Optimization Features
1. **Memory Usage**:
- Optimized security calls
- Efficient data structure
- Reduced redundant calculations
2. **Processing Efficiency**:
- Single-pass data analysis
- Combined indicator calculations
- Streamlined alert generation
## Practical Application
The system is designed for:
1. Swing Trading (primary use)
2. Position Trading (secondary use)
3. Technical Breakout Trading
Optimal timeframes:
- Primary: 4H charts
- Secondary: Daily charts
- Verification: 1H charts
## Default Configuration
The scanner is preset to monitor key tech stocks:
- TSLA: High-volatility tech leader
- NVDA: Semiconductor sector benchmark
- AVGO: Stable tech infrastructure
- TSM: Global chip manufacturer
- META: Social media sector leader
- AMZN: E-commerce/Cloud computing leader
Each symbol can be modified through input parameters.
## Version Information
- Current Version: 1.3
- Last Updated: November 2024
- Compatibility: TradingView Pro/Pro+/Premium
## Limitations & Considerations
- Limited to 6 symbols due to TradingView security request limits
- Requires consistent market volume for optimal performance
- Best suited for liquid stocks with significant daily volume
- May need parameter adjustments during extreme market conditions