Adaptive Supply and Demand [EdgeTerminal]Adaptive Supply and Demand is a dynamic supply and demand indicator with a few unique twists. It considers volume pressure, volatility-based adjustments and multi-time frame momentum for confidence scoring (multi-step confirmation) to generate dynamic lines that adjust based on the market and also to generate dynamic support/resistance levels for the supply and demand lines.
The dynamic support and resistance lines shown gives you a better situational awareness of the current state of the market and add more context to why the market is moving into a certain direction.
> Trading Scenarios
When the confidence score is over 80%, strong volume pressure in trend direction (up or down), volatility is low and momentum is aligned across timeframes, there is an indication of a strong upward or downward trend.
When the supply and demand line crossover, the confidence score is over 75% and the volume pressure is shifting, this can be an indicator of trend reversal. Use tight initial stops, scale into position as trend develops, monitor the volume pressure for continuation and wait for confidence confirmation.
When the confiance score is below 60%, the volume pressure is choppy, volatility is high, you want to avoid trading or reduce position size, wait for confidence improvements, use support and resistance for entries/exits and use tighter stops due to market conditions. This is an indication of a ranging market.
Another scenario is when there is a sudden volume pressure increase, and a raising confidence score, the volatility is expanding and the bar momentum is aligning the volatility direction. This can indicate a breakout scenario.
> How it Works
1. Volume Pressure Analysis
Volume Pressure Analysis is a key component that measures the true buying and selling force in the market. Here's a detailed breakdown. The idea is to standardize volume to prevent large spikes from skewing results.
The indicator employs an adaptive volume normalization technique to detect genuine buying and selling pressure.
It takes current volume and divides it by average volume.
If normVol > 1: Current volume is above average
If normVol < 1: Current volume is below average
An example if this would be If current volume is 1500 and average is 1000, normVol = 1.5 (50% above average)
Another component of the volume pressure analysis is the Price Change Calculation sub-module. The purpose of this is to measure price movement relative to recent average.
It works by subtracting the average price from the current price. If the value is positive, price is average and if negative, price is below average.
Finally, the volume pressure is calculated to combine volume and price for true pressure reading.
2. Savitzky-Golay Filtering
SG filtering implements advanced signal smoothing while preserving important trend features. It uses weighted moving average approximation, preserves higher moments of data and reduces noise while maintaining signal integrity.
This results in smoother signal lines, reduced false crossovers and better trend identification. Traditional moving averages tend to lag and smooth out important features. Additionally, simple moving averages can miss critical turning points and regular smoothing can delay signal generation.
SG filtering preserves higher moments such as peaks, valleys and trends, reduces noise while maintaining signal sharpness.
It works by creating a symmetric weighting scheme. This way center points get the highest weights while edge points get the lowest weight.
3. Parkinson's Volatility
Parkinson's Volatility is an advanced volatility measurement formula using high-low range data. It uses high-low range for volatility calculation, incorporates logarithmic returns and annualized the volatility measure.
This results in more accurate volatility measurement, better risk assessment and dynamic signal sensitivity.
4. Multi-timeframe Momentum
This combines signals from each module for each timeframe to calculate momentum across three timeframes. It also applies weighted importance to each timeframe and generates a composite momentum signal.
This results in a more comprehensive trend analysis, reduced timeframe bias and better trend confirmation.
> Indicator Settings
Short-term Period:
Lower values makes it more sensitive, meaning it will generate more signals. Higher values makes it less sensitive, resulting in fewer signals. We recommend a 5 to 15 range for day trading, and 10 to 20 for swing trading
Medium-term Period:
Lower values result in faster trend confirmation and higher values show slower and more reliable confirmation. We recommend a range of 15-25 for day trading and 20-30 for swing trading.
Long-term Period:
Lower values makes it more responsive to trend changes and higher values are better for major trend identification. We recommend a range of 40-60 for day trading and 50-100 for swing trading.
Volume Analysis Window:
Lower values result in more sensitivity to volume changes and higher values result in smoother volume analysis. The optimal range is 15-25 for most trading styles.
Confidence Threshold:
Lower values generate more signals but quality decreases. Higher values generate fewer signals but accuracy increases.The optimal range is 0.65-0.8 for most trading conditions.
Recherche dans les scripts pour "信达股份40周年"
Auto-Length Moving Average + Trend Signals (Zeiierman)█ Overview
The Auto-Length Moving Average + Trend Signals (Zeiierman) is an easy-to-use indicator designed to help traders dynamically adjust their moving average length based on market conditions. This tool adapts in real-time, expanding and contracting the moving average based on trend strength and momentum shifts.
The indicator smooths out price fluctuations by modifying its length while ensuring responsiveness to new trends. In addition to its adaptive length algorithm, it incorporates trend confirmation signals, helping traders identify potential trend reversals and continuations with greater confidence.
This indicator suits scalpers, swing traders, and trend-following investors who want a self-adjusting moving average that adapts to volatility, momentum, and price action dynamics.
█ How It Works
⚪ Dynamic Moving Average Length
The core feature of this indicator is its ability to automatically adjust the length of the moving average based on trend persistence and market conditions:
Expands in strong trends to reduce noise.
Contracts in choppy or reversing markets for faster reaction.
This allows for a more accurate moving average that aligns with current price dynamics.
⚪ Trend Confirmation & Signals
The indicator includes built-in trend detection logic, classifying trends based on market structure. It evaluates trend strength based on consecutive bars and smooths out transitions between bullish, bearish, and neutral conditions.
Uptrend: Price is persistently above the adjusted moving average.
Downtrend: Price remains below the adjusted moving average.
Neutral: Price fluctuates around the moving average, indicating possible consolidation.
⚪ Adaptive Trend Smoothing
A smoothing factor is applied to enhance trend readability while minimizing excessive lag. This balances reactivity with stability, making it easier to follow longer-term trends while avoiding false signals.
█ How to Use
⚪ Trend Identification
Bullish Trend: The indicator confirms an uptrend when the price consistently stays above the dynamically adjusted moving average.
Bearish Trend: A downtrend is recognized when the price remains below the moving average.
⚪ Trade Entry & Exit
Enter long when the dynamic moving average is green and a trend signal occurs. Exit when the price crosses below the dynamic moving average.
Enter short when the dynamic moving average is red and a trend signal occurs. Exit when the price crosses above the dynamic moving average.
█ Slope-Based Reset
This mode resets the trend counter when the moving average slope changes direction.
⚪ Interpretation & Insights
Best for trend-following traders who want to filter out noise and only reset when a clear shift in momentum occurs.
Higher slope length (N): More stable trends, fewer resets.
Lower slope length (N): More reactive to small price swings, frequent resets.
Useful in swing trading to track significant trend reversals.
█ RSI-Based Reset
The counter resets when the Relative Strength Index (RSI) crosses predefined overbought or oversold levels.
⚪ Interpretation & Insights
Best for reversal traders who look for extreme overbought/oversold conditions.
High RSI threshold (e.g., 80/20): Fewer resets, only extreme conditions trigger adjustments.
Lower RSI threshold (e.g., 60/40): More frequent resets, detecting smaller corrections.
Great for detecting exhaustion in trends before potential reversals.
█ Volume-Based Reset
A reset occurs when current volume significantly exceeds its moving average, signaling a shift in market participation.
⚪ Interpretation & Insights
Best for traders who follow institutional activity (high volume often means large players are active).
Higher volume SMA length: More stable trends, only resets on massive volume spikes.
Lower volume SMA length: More reactive to short-term volume shifts.
Useful in identifying breakout conditions and trend acceleration points.
█ Bollinger Band-Based Reset
A reset occurs when price closes above the upper Bollinger Band or below the lower Bollinger Band, signaling potential overextension.
⚪ Interpretation & Insights
Best for traders looking for volatility-based trend shifts.
Higher Bollinger Band multiplier (k = 2.5+): Captures only major price extremes.
Lower Bollinger Band multiplier (k = 1.5): Resets on moderate volatility changes.
Useful for detecting overextensions in strong trends before potential retracements.
█ MACD-Based Reset
A reset occurs when the MACD line crosses the signal line, indicating a momentum shift.
⚪ Interpretation & Insights
Best for momentum traders looking for trend continuation vs. exhaustion signals.
Longer MACD lengths (260, 120, 90): Captures major trend shifts.
Shorter MACD lengths (10, 5, 3): Reacts quickly to momentum changes.
Useful for detecting strong divergences and market shifts.
█ Stochastic-Based Reset
A reset occurs when Stochastic %K crosses overbought or oversold levels.
⚪ Interpretation & Insights
Best for short-term traders looking for fast momentum shifts.
Longer Stochastic length: Filters out false signals.
Shorter Stochastic length: Captures quick intraday shifts.
█ CCI-Based Reset
A reset occurs when the Commodity Channel Index (CCI) crosses predefined overbought or oversold levels. The CCI measures the price deviation from its statistical mean, making it a useful tool for detecting overextensions in price action.
⚪ Interpretation & Insights
Best for cycle traders who aim to identify overextended price deviations in trending or ranging markets.
Higher CCI threshold (e.g., ±200): Detects extreme overbought/oversold conditions before reversals.
Lower CCI threshold (e.g., ±10): More sensitive to trend shifts, useful for early signal detection.
Ideal for detecting momentum shifts before price reverts to its mean or continues trending strongly.
█ Momentum-Based Reset
A reset occurs when Momentum (Rate of Change) crosses zero, indicating a potential shift in price direction.
⚪ Interpretation & Insights
Best for trend-following traders who want to track acceleration vs. deceleration.
Higher momentum length: Captures longer-term shifts.
Lower momentum length: More responsive to short-term trend changes.
█ How to Interpret the Trend Strength Table
The Trend Strength Table provides valuable insights into the current market conditions by tracking how the dynamic moving average is adjusting based on trend persistence. Each metric in the table plays a role in understanding the strength, longevity, and stability of a trend.
⚪ Counter Value
Represents the current length of trend persistence before a reset occurs.
The higher the counter, the longer the current trend has been in place without resetting.
When this value reaches the Counter Break Threshold, the moving average resets and contracts to become more reactive.
Example:
A low counter value (e.g., 10) suggests a recent trend reset, meaning the market might be changing directions frequently.
A high counter value (e.g., 495) means the trend has been ongoing for a long time, indicating strong trend persistence.
⚪ Trend Strength
Measures how strong the current trend is based on the trend confirmation logic.
Higher values indicate stronger trends, while lower values suggest weaker trends or consolidations.
This value is dynamic and updates based on price action.
Example:
Trend Strength of 760 → Indicates a high-confidence trend.
Trend Strength of 50 → Suggests weak price action, possibly a choppy market.
⚪ Highest Trend Score
Tracks the strongest trend score recorded during the session.
Helps traders identify the most dominant trend observed in the timeframe.
This metric is useful for analyzing historical trend strength and comparing it with current conditions.
Example:
Highest Trend Score = 760 → Suggests that at some point, there was a strong trend in play.
If the current trend strength is much lower than this value, it could indicate trend exhaustion.
⚪ Average Trend Score
This is a rolling average of trend strength across the session.
Provides a bigger picture of how the trend strength fluctuates over time.
If the average trend score is high, the market has had persistent trends.
If it's low, the market may have been choppy or sideways.
Example:
Average Trend Score of 147 vs. Current Trend Strength of 760 → Indicates that the current trend is significantly stronger than the historical average, meaning a breakout might be occurring.
Average Trend Score of 700+ → Suggests a strong trending market overall.
█ Settings
⚪ Dynamic MA Controls
Base MA Length – Sets the starting length of the moving average before dynamic adjustments.
Max Dynamic Length – Defines the upper limit for how much the moving average can expand.
Trend Confirmation Length – The number of bars required to validate an uptrend or downtrend.
⚪ Reset & Adaptive Conditions
Reset Condition Type – Choose what triggers the moving average reset (Slope, RSI, Volume, MACD, etc.).
Trend Smoothing Factor – Adjusts how smoothly the moving average responds to price changes.
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Hyper MA Loop | QuantEdgeBIntroducing Hyper MA Loop by QuantEdgeB
Hyper MA Loop | QuantEdgeB is an advanced trend-following indicator that leverages a custom Hyper Moving Average (HyMA) and an innovative loop-based scoring system to assess trend strength and direction. This tool is designed to provide a dynamic perspective on market momentum, allowing traders to capture trends effectively while filtering out market noise.
Key Features:
1. Hyper Moving Average (HyMA) 🟣
- A weighted moving average that enhances trend responsiveness by applying a custom
weight function.
- Ensures smoother trend detection while maintaining reactivity to price changes.
2. Loop-Based Trend Scoring 🔄
- Utilizes a for-loop function to analyze the movement of HyMA over a specified period.
- Compares current values to past values, generating a cumulative score indicating bullish or
bearish momentum.
- Dynamic thresholds adjust to market conditions for better trend filtering.
3. Threshold-Based Signal System ✅❌
- Long Signals: Triggered when the loop score exceeds the long threshold.
- Short Signals: Activated when the score falls below the short threshold.
- Avoids false signals by requiring sustained strength before confirming a trend.
4. Customizable Visualization & Colors 🎨
- Multiple color modes (Default, Solar, Warm, Cool, Classic) for tailored aesthetics.
- Extra plot options enhance visualization of market structure and volatility.
________
How It Works:
- HyMA Calculation : A unique moving average with a specialized weighting function to
smooth out price action.
- Loop Function : Iterates over past HyMA values, assessing whether price is consistently
higher or lower.
- Threshold Comparison : The loop score is compared against pre-set thresholds to
determine bullish or bearish conditions.
- Signal Generation :
1. Bullish (🔵): If the score crosses the long threshold
2. Bearish (🔴): If the score drops below the short threshold.
- Plotting & Styling : Dynamic candles and gradient overlays provide an intuitive
visualization of rend shifts.
________
Use Cases:
✅ Ideal for trend-following traders looking for solid trends confirmation.
✅ Helps filter out choppy market conditions by adjusting sensitivity dynamically.
✅ Works well with other indicators (e.g., ADX, volume-based filters) for added confirmation.
✅ Suitable for both short-term and long-term trend analysis.
________
Customization Options:
- Adjustable HyMA Length: Modify the responsiveness of the moving average. Default se to 2.
- For-Loop Parameters: Fine-tune how far back the trend analysis should consider. Default se to Start = 1 , End = -1.
- Thresholds for Long & Short: Control signal sensitivity to market fluctuations. Default set to Long = 40, Short = 8.
- Color Modes & Extra Plots: Personalize visualization for better clarity.
________
Conclusion:
The Hyper MA Loop | QuantEdgeB is a powerful, adaptive indicator that combines custom moving averages with loop-based trend analysis to deliver accurate, visually intuitive market signals. Whether you're looking to ride strong trends or filter out weak setups, this tool provides the precision and flexibility needed for effective decision-making. 🚀📈
🔹 Disclaimer: Past performance is not indicative of future results. No trading indicator can guarantee success in financial markets.
🔹 Strategic Consideration: As always, backtesting and strategic adjustments are essential to fully optimize this indicator for real-world trading. Traders should consider risk management practices and adapt settings to their specific market conditions and trading style.
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.
Scalping trading system based on 4 ema linesScalping Trading System Based on 4 EMA Lines
Overview:
This is a scalping trading strategy built on signals from 4 EMA moving averages: EMA(8), EMA(12), EMA(24) and EMA(72).
Conditions:
- Time frame: H1 (1 hour).
- Trading assets: Applicable to major currency pairs with high volatility
- Risk management: Use a maximum of 1-2% of capital for each transaction. The order holding time can be from a few hours to a few days, depending on the price fluctuation amplitude.
Trading rules:
Determine the main trend:
Uptrend: EMA(8), EMA(12) and EMA(24) are above EMA(72).
Downtrend: EMA(8), EMA(12) and EMA(24) are below EMA(72).
Trade in the direction of the main trend** (buy in an uptrend and sell in a downtrend).
Entry conditions:
- Only trade in a clearly trending market.
Uptrend:
- Wait for the price to correct to the EMA(24).
- Enter a buy order when the price closes above the EMA(24).
- Place a stop loss below the bottom of the EMA(24) candle that has just been swept.
Downtrend:
- Wait for the price to correct to the EMA(24).
- Enter a sell order when the price closes below the EMA(24).
- Place a stop loss above the top of the EMA(24) candle that has just been swept.
Take profit and order management:
- Take profit when the price moves 20 to 40 pips in the direction of the trade.
Use Trailing Stop to optimize profits instead of setting a fixed Take Profit.
Note:
- Do not trade within 30 minutes before and after the announcement of important economic news, as the price may fluctuate abnormally.
Additional filters:
To increase the success rate and reduce noise, this strategy uses additional conditions:
1. The price is calculated only when the candle closes (no repaint).
2. When sweeping through EMA(24), the price needs to close above EMA(24).
3. The closing price must be higher than 50% of the candle's length.
4. **The bottom of the candle sweeping through EMA(24) must be lower than the bottom of the previous candle (liquidity sweep).
---
Alert function:
When the EMA(24) sweep conditions are met, the system will trigger an alert if you have set it up.
- Entry point: The closing price of the candle sweeping through EMA(24).
- Stop Loss:
- Buy Order: Place at the bottom of the sweep candle.
- Sell Order: Place at the top of the sweep candle.
---
Note:
This strategy is designed to help traders identify profitable trading opportunities based on trends. However, no strategy is 100% guaranteed to be successful. Please test it thoroughly on a demo account before using it.
Dynamic Ticks Oscillator Model (DTOM)The Dynamic Ticks Oscillator Model (DTOM) is a systematic trading approach grounded in momentum and volatility analysis, designed to exploit behavioral inefficiencies in the equity markets. It focuses on the NYSE Down Ticks, a metric reflecting the cumulative number of stocks trading at a lower price than their previous trade. As a proxy for market sentiment and selling pressure, this indicator is particularly useful in identifying shifts in investor behavior during periods of heightened uncertainty or volatility (Jegadeesh & Titman, 1993).
Theoretical Basis
The DTOM builds on established principles of momentum and mean reversion in financial markets. Momentum strategies, which seek to capitalize on the persistence of price trends, have been shown to deliver significant returns in various asset classes (Carhart, 1997). However, these strategies are also susceptible to periods of drawdown due to sudden reversals. By incorporating volatility as a dynamic component, DTOM adapts to changing market conditions, addressing one of the primary challenges of traditional momentum models (Barroso & Santa-Clara, 2015).
Sentiment and Volatility as Core Drivers
The NYSE Down Ticks serve as a proxy for short-term negative sentiment. Sudden increases in Down Ticks often signal panic-driven selling, creating potential opportunities for mean reversion. Behavioral finance studies suggest that investor overreaction to negative news can lead to temporary mispricings, which systematic strategies can exploit (De Bondt & Thaler, 1985). By incorporating a rate-of-change (ROC) oscillator into the model, DTOM tracks the momentum of Down Ticks over a specified lookback period, identifying periods of extreme sentiment.
In addition, the strategy dynamically adjusts entry and exit thresholds based on recent volatility. Research indicates that incorporating volatility into momentum strategies can enhance risk-adjusted returns by improving adaptability to market conditions (Moskowitz, Ooi, & Pedersen, 2012). DTOM uses standard deviations of the ROC as a measure of volatility, allowing thresholds to contract during calm markets and expand during turbulent ones. This approach helps mitigate false signals and aligns with findings that volatility scaling can improve strategy robustness (Barroso & Santa-Clara, 2015).
Practical Implications
The DTOM framework is particularly well-suited for systematic traders seeking to exploit behavioral inefficiencies while maintaining adaptability to varying market environments. By leveraging sentiment metrics such as the NYSE Down Ticks and combining them with a volatility-adjusted momentum oscillator, the strategy addresses key limitations of traditional trend-following models, such as their lagging nature and susceptibility to reversals in volatile conditions.
References
• Barroso, P., & Santa-Clara, P. (2015). Momentum Has Its Moments. Journal of Financial Economics, 116(1), 111–120.
• Carhart, M. M. (1997). On Persistence in Mutual Fund Performance. The Journal of Finance, 52(1), 57–82.
• De Bondt, W. F., & Thaler, R. (1985). Does the Stock Market Overreact? The Journal of Finance, 40(3), 793–805.
• Jegadeesh, N., & Titman, S. (1993). Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. The Journal of Finance, 48(1), 65–91.
• Moskowitz, T. J., Ooi, Y. H., & Pedersen, L. H. (2012). Time Series Momentum. Journal of Financial Economics, 104(2), 228–250.
PDF MA For Loop [BackQuant]PDF MA For Loop
Introducing the PDF MA For Loop, an innovative trading indicator that combines Probability Density Function (PDF) smoothing with a dynamic for-loop scoring mechanism. This advanced tool provides traders with precise trend-following signals, helping to identify long and short opportunities with improved clarity and adaptability to market conditions.
If you would like to check out the stand alone PDF Moving Average:
Core Concept: Probability Density Function (PDF) Smoothing
The PDF smoothing method is a unique approach that applies adaptive weights to price data based on a Probability Density Function. This ensures that recent data points receive appropriate emphasis while maintaining a smooth transition across the data set. The result is a moving average that is not only smoother but also more responsive to market changes.
Key parameters in PDF smoothing:
Variance : Controls the spread of the PDF, where a higher value results in broader smoothing and a lower value makes the moving average more sensitive.
Mean : Centers the PDF around a specific value, influencing the weighting and responsiveness of the smoothing process.
By combining PDF smoothing with traditional moving averages (EMA or SMA), the indicator creates a hybrid signal that balances responsiveness and reliability.
For-Loop Scoring Mechanism
At the heart of this indicator is the for-loop scoring mechanism, which evaluates the smoothed PDF moving average over a defined range of historical data points. This process assigns a score to the current market condition based on whether the PDF moving average is greater than or less than previous values.
Long Signal: A long signal is generated when the score exceeds the Long Threshold (default set at 40), indicating upward momentum.
Short Signal: A short signal is triggered when the score crosses below the Short Threshold (default set at -10), suggesting potential downward momentum.
This dynamic scoring system ensures that the indicator remains adaptive, capturing trends and shifts in market sentiment effectively.
Customization Options
The PDF MA For Loop includes a variety of customizable settings to fit different trading styles and strategies:
Calculation Settings
Price Source : Select the input price for the calculation (default is the close price).
Smoothing Method : Choose between EMA or SMA for the additional smoothing layer, providing flexibility to adapt to market conditions.
Smoothing Period : Adjust the lookback period for the smoothing function, with shorter periods providing more sensitivity and longer periods offering greater stability.
Variance & Mean : Fine-tune the PDF function parameters to control the weighting of the smoothing process.
Signal Settings
Thresholds : Customize the upper and lower thresholds to define the sensitivity of the long and short signals.
For Loop Range : Set the range of historical data points analyzed by the for-loop, influencing the depth of the scoring mechanism.
UI Settings
Signal Line Width: Adjust the thickness of the plotted signal line for better visibility.
Candle Coloring: Enable or disable the coloring of candlesticks based on trend direction (green for long, red for short, gray for neutral).
Background Coloring: Add background shading to highlight long and short signals for an enhanced visual experience.
Alerts and Automation
The indicator includes built-in alert conditions to notify traders of important market events:
Long Signal Alert: Notifies when the score exceeds the upper threshold, indicating a bullish trend.
Short Signal Alert: Notifies when the score crosses below the lower threshold, signaling a bearish trend.
These alerts can be configured for real-time notifications, allowing traders to respond quickly to market changes without constant chart monitoring.
Trading Applications
The PDF MA For Loop is versatile and can be applied across various trading strategies and market conditions:
Trend Following: The PDF smoothing method combined with for-loop scoring makes this indicator particularly effective for identifying and following trends.
Reversal Trading: By observing the thresholds and score, traders can anticipate potential reversals when the trend shifts from long to short (or vice versa).
Risk Management: The dynamic thresholds and scoring provide clear signals, allowing traders to enter and exit trades with greater confidence and precision.
Final Thoughts
The PDF MA For Loopis merges advanced mathematical concepts with practical trading tools. By leveraging Probability Density Function smoothing and a dynamic for-loop scoring system, it provides traders with clear, actionable signals while adapting to market conditions.
Whether you’re looking for an edge in trend-following strategies or seeking precision in identifying reversals, this indicator offers the flexibility and power to enhance your trading decisions
As always, backtesting and integrating the PDF MA For Loop into a comprehensive trading strategy is recommended for optimal performance, as no single indicator should be used in isolation.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future.
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
Dynamic S/R Levels: Edge FinderOverview
The Dynamic S/R Levels: Edge Finder indicator is designed to identify dynamic support and resistance levels based on historical price action. It uses a combination of price extremes (highs and lows) over user-defined lookback periods, weighted moving averages (WMAs), and touch-count analysis to provide actionable insights into key market levels.
This tool is ideal for traders who want to:
Identify dynamic support and resistance zones.
Understand the strength of these levels based on price touches.
Make informed decisions using clear, adaptive levels.
How It Works
Dynamic Levels Calculation:
The indicator calculates dynamic support levels using the lowest lows and dynamic resistance levels using the highest highs over user-defined lookback periods (e.g., 20, 40, 60 bars, etc.).
These levels are updated dynamically as new price data becomes available.
Touch Count Analysis:
The indicator counts how many times the price has touched or come close to each support/resistance level within the lookback period.
Levels with more touches are considered stronger and are highlighted accordingly.
Weighted Moving Averages (WMAs):
The indicator uses 50-period and 100-period WMAs to identify the closest support/resistance levels to the current trend.
Levels near these WMAs are given additional weight, as they are more likely to act as significant barriers.
Level Merging:
If two support or resistance levels are too close to each other (based on the minimum distance percentage), the weaker level (with fewer touches) is removed to avoid clutter.
Visualization:
Support levels are displayed as dashed red lines, and resistance levels are displayed as dashed blue lines.
Each level is labeled with its corresponding touch count, allowing traders to quickly assess its strength.
How to Interpret the Indicator
Strong Support/Resistance Levels:
Levels with higher touch counts (e.g., 5, 10, or more) are considered stronger and are more likely to hold in the future.
Use these levels to plan entries, exits, or stop-loss placements.
Proximity to WMAs:
Levels closest to the 50-period or 100-period WMA are more significant, especially in trending markets.
These levels often act as dynamic barriers where price reactions are more likely.
Breakouts and Rejections:
If the price breaks through a strong resistance level, it may indicate a potential bullish trend.
If the price rejects a strong support level, it may indicate a potential bearish trend.
Always confirm breakouts or rejections with additional analysis (e.g., volume, candlestick patterns).
Level Merging:
Merged levels indicate areas of high confluence, where multiple support/resistance zones overlap.
These areas are particularly important for decision-making, as they represent stronger market reactions.
Key Features
Customizable Lookback Periods: Adjust the lookback periods for each dynamic level to suit your trading style.
Touch Count Labels: Quickly identify the strength of each level based on the number of price touches.
Adaptive Levels: The indicator dynamically updates levels based on recent price action.
Clean Visualization: Levels are automatically merged to avoid clutter and provide a clear view of the market structure.
Usage Tips
Trend Identification: Combine the indicator with trend-following tools (e.g., moving averages, trendlines) to confirm the overall market direction.
Risk Management: Use the identified levels to set stop-loss orders or take-profit targets.
Timeframe Flexibility: The indicator works on all timeframes, but it is particularly effective on higher timeframes (e.g., 1H, 4H, Daily) for more reliable levels.
Example Scenarios
Bounce Trade:
If the price approaches a strong support level (high touch count) and shows signs of rejection (e.g., bullish candlestick patterns), consider a long position with a stop-loss below the support level.
Breakout Trade:
If the price breaks above a strong resistance level with high volume, consider a long position with a target at the next resistance level.
Range-Bound Market:
In a sideways market, use the support and resistance levels to identify range boundaries and trade bounces between them.
Disclaimer
Dynamic S/R Levels: Edge Finder is a technical analysis tool designed to identify dynamic support and resistance levels based on historical price action. It is intended for informational and educational purposes only. This indicator does not provide financial, investment, or trading advice. Users are solely responsible for their trading decisions and should conduct their own research and analysis before making any trades. The developer of this tool is not liable for any financial losses or damages resulting from the use of this indicator. Trading in financial markets involves risk, and you should only trade with capital you can afford to lose.
GOLDEN RSI by @thejamiulGOLDEN RSI thejamiul is a versatile Relative Strength Index (RSI)-based tool designed to provide enhanced visualization and additional insights into market trends and potential reversal points. This indicator improves upon the traditional RSI by integrating gradient fills for overbought/oversold zones and divergence detection features, making it an excellent choice for traders who seek precise and actionable signals.
Source of this indicator : This indicator is based on @TradingView original RSI indicator with a little bit of customisation to enhance overbought and oversold identification.
Key Features
1. Customizable RSI Settings:
RSI Length: Adjust the RSI calculation period to suit your trading style (default: 14).
Source Selection: Choose the price source (e.g., close, open, high, low) for RSI calculation.
2. Gradient-Filled RSI Zones:
Overbought Zone (80-100): Gradient fill with shades of green to indicate strong bullish conditions.
Oversold Zone (0-20): Gradient fill with shades of red to highlight strong bearish conditions.
3. Support and Resistance Levels:
Upper Band: 80
Middle Bands: 60 (bullish) and 40 (bearish)
Lower Band: 20
These levels help identify overbought, oversold, and neutral zones.
4. Divergence Detection:
Bullish Divergence: Detects lower lows in price with corresponding higher lows in RSI, signaling potential upward reversals.
Bearish Divergence: Detects higher highs in price with corresponding lower highs in RSI, indicating potential downward reversals.
Visual Indicators:
Bullish divergence is marked with green labels and line plots.
Bearish divergence is marked with red labels and line plots.
5. Alert Functionality:
Custom Alerts: Set up alerts for bullish or bearish divergences to stay notified of potential trading opportunities without constant chart monitoring.
6. Enhanced Chart Visualization:
RSI Plot: A smooth and visually appealing RSI curve.
Color Coding: Gradient and fills for better distinction of trading zones.
Pivot Labels: Clear identification of divergence points on the RSI plot.
Normalized Jurik Moving Average [QuantAlgo]Upgrade your investing and trading strategy with the Normalized Jurik Moving Average (JMA) , a sophisticated oscillator that combines adaptive smoothing with statistical normalization to deliver high-quality signals! Whether you're a swing trader looking for momentum shifts or a medium- to long-term investor focusing on trend validation, this indicator's statistical approach offers valuable analytical advantages that can enhance your trading and investing decisions!
🟢 Core Architecture
The foundation of this indicator lies in its unique dual-layer calculation system. The first layer implements the Jurik Moving Average, known for its superior noise reduction and responsiveness, while the second layer applies statistical normalization (Z-Score) to create standardized readings. This sophisticated approach helps identify significant price movements while filtering out market noise across various timeframes and instruments.
🟢 Technical Foundation
Three key components power this indicator are:
Jurik Moving Average (JMA): An advanced moving average calculation that provides superior smoothing with minimal lag
Statistical Normalization: Z-Score based scaling that creates consistent, comparable readings across different market conditions
Dynamic Zone Detection: Automatically identifies overbought and oversold conditions based on statistical deviations
🟢 Key Features & Signals
The Normalized JMA delivers market insights through:
Color-adaptive oscillator line that reflects momentum strength and direction
Statistically significant overbought/oversold zones for trade validation
Smart gradient fills between signal line and zero level for enhanced visualization
Clear long (L) and short (S) markers for validated momentum shifts
Intelligent bar coloring that highlights the current market state
Customizable alert system for both bullish and bearish setups
🟢 Practical Usage Tips
Here's how to maximize your use of the Normalized JMA:
1/ Setup:
Add the indicator to your favorites, then apply it to your chart ⭐️
Begin with the default smoothing period for balanced analysis
Use the default normalization period for optimal signal generation
Start with standard visualization settings
Customize colors to match your chart preferences
Enable both bar coloring and signal markers for complete visual feedback
2/ Reading Signals:
Watch for L/S markers - they indicate validated momentum shifts
Monitor oscillator line color changes for direction confirmation
Use the built-in alert system to stay informed of potential trend changes
🟢 Pro Tips
Adjust Smoothing Period based on your trading style:
→ Lower values (8-12) for more responsive signals
→ Higher values (20-30) for more stable trend identification
Fine-tune Normalization Period based on market conditions:
→ Shorter periods (20-25) for more dynamic markets
→ Longer periods (40-50) for more stable markets
Optimize your analysis by:
→ Using +2/-2 zones for primary trade signals
→ Using +3/-3 zones for extreme market conditions
→ Combining with volume analysis for trade confirmation
→ Using multiple timeframe analysis for strategic context
Combine with:
→ Volume indicators for trade validation
→ Price action for entry timing
→ Support/resistance levels for profit targets
→ Trend-following indicators for directional bias
Adaptive Momentum Reversion StrategyThe Adaptive Momentum Reversion Strategy: An Empirical Approach to Market Behavior
The Adaptive Momentum Reversion Strategy seeks to capitalize on market price dynamics by combining concepts from momentum and mean reversion theories. This hybrid approach leverages a Rate of Change (ROC) indicator along with Bollinger Bands to identify overbought and oversold conditions, triggering trades based on the crossing of specific thresholds. The strategy aims to detect momentum shifts and exploit price reversions to their mean.
Theoretical Framework
Momentum and Mean Reversion: Momentum trading assumes that assets with a recent history of strong performance will continue in that direction, while mean reversion suggests that assets tend to return to their historical average over time (Fama & French, 1988; Poterba & Summers, 1988). This strategy incorporates elements of both, looking for periods when momentum is either overextended (and likely to revert) or when the asset’s price is temporarily underpriced relative to its historical trend.
Rate of Change (ROC): The ROC is a straightforward momentum indicator that measures the percentage change in price over a specified period (Wilder, 1978). The strategy calculates the ROC over a 2-period window, making it responsive to short-term price changes. By using ROC, the strategy aims to detect price acceleration and deceleration.
Bollinger Bands: Bollinger Bands are used to identify volatility and potential price extremes, often signaling overbought or oversold conditions. The bands consist of a moving average and two standard deviation bounds that adjust dynamically with price volatility (Bollinger, 2002).
The strategy employs two sets of Bollinger Bands: one for short-term volatility (lower band) and another for longer-term trends (upper band), with different lengths and standard deviation multipliers.
Strategy Construction
Indicator Inputs:
ROC Period: The rate of change is computed over a 2-period window, which provides sensitivity to short-term price fluctuations.
Bollinger Bands:
Lower Band: Calculated with a 18-period length and a standard deviation of 1.7.
Upper Band: Calculated with a 21-period length and a standard deviation of 2.1.
Calculations:
ROC Calculation: The ROC is computed by comparing the current close price to the close price from rocPeriod days ago, expressing it as a percentage.
Bollinger Bands: The strategy calculates both upper and lower Bollinger Bands around the ROC, using a simple moving average as the central basis. The lower Bollinger Band is used as a reference for identifying potential long entry points when the ROC crosses above it, while the upper Bollinger Band serves as a reference for exits, when the ROC crosses below it.
Trading Conditions:
Long Entry: A long position is initiated when the ROC crosses above the lower Bollinger Band, signaling a potential shift from a period of low momentum to an increase in price movement.
Exit Condition: A position is closed when the ROC crosses under the upper Bollinger Band, or when the ROC drops below the lower band again, indicating a reversal or weakening of momentum.
Visual Indicators:
ROC Plot: The ROC is plotted as a line to visualize the momentum direction.
Bollinger Bands: The upper and lower bands, along with their basis (simple moving averages), are plotted to delineate the expected range for the ROC.
Background Color: To enhance decision-making, the strategy colors the background when extreme conditions are detected—green for oversold (ROC below the lower band) and red for overbought (ROC above the upper band), indicating potential reversal zones.
Strategy Performance Considerations
The use of Bollinger Bands in this strategy provides an adaptive framework that adjusts to changing market volatility. When volatility increases, the bands widen, allowing for larger price movements, while during quieter periods, the bands contract, reducing trade signals. This adaptiveness is critical in maintaining strategy effectiveness across different market conditions.
The strategy’s pyramiding setting is disabled (pyramiding=0), ensuring that only one position is taken at a time, which is a conservative risk management approach. Additionally, the strategy includes transaction costs and slippage parameters to account for real-world trading conditions.
Empirical Evidence and Relevance
The combination of momentum and mean reversion has been widely studied and shown to provide profitable opportunities under certain market conditions. Studies such as Jegadeesh and Titman (1993) confirm that momentum strategies tend to work well in trending markets, while mean reversion strategies have been effective during periods of high volatility or after sharp price movements (De Bondt & Thaler, 1985). By integrating both strategies into one system, the Adaptive Momentum Reversion Strategy may be able to capitalize on both trending and reverting market behavior.
Furthermore, research by Chan (1996) on momentum-based trading systems demonstrates that adaptive strategies, which adjust to changes in market volatility, often outperform static strategies, providing a compelling rationale for the use of Bollinger Bands in this context.
Conclusion
The Adaptive Momentum Reversion Strategy provides a robust framework for trading based on the dual concepts of momentum and mean reversion. By using ROC in combination with Bollinger Bands, the strategy is capable of identifying overbought and oversold conditions while adapting to changing market conditions. The use of adaptive indicators ensures that the strategy remains flexible and can perform across different market environments, potentially offering a competitive edge for traders who seek to balance risk and reward in their trading approaches.
References
Bollinger, J. (2002). Bollinger on Bollinger Bands. McGraw-Hill Professional.
Chan, L. K. C. (1996). Momentum, Mean Reversion, and the Cross-Section of Stock Returns. Journal of Finance, 51(5), 1681-1713.
De Bondt, W. F., & Thaler, R. H. (1985). Does the Stock Market Overreact? Journal of Finance, 40(3), 793-805.
Fama, E. F., & French, K. R. (1988). Permanent and Temporary Components of Stock Prices. Journal of Political Economy, 96(2), 246-273.
Jegadeesh, N., & Titman, S. (1993). Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. Journal of Finance, 48(1), 65-91.
Poterba, J. M., & Summers, L. H. (1988). Mean Reversion in Stock Prices: Evidence and Implications. Journal of Financial Economics, 22(1), 27-59.
Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.
SCE ReversalsThis tool uses past market data to attempt to identify where changes in “memory” may occur to spot reversals. The Hurst Exponent was a big inspiration for this code. The main driver is identifying when past ranges expand and contract, leading to a change in direction. With the use of Sum of Squared Errors, users do not need to input anything.
Getting optimized parameters
// Define ranges for N and lkb
N_range = array.from(15, 20, 25, 30, 35, 40, 45, 50, 55, 60)
// Function to calculate SSE
sse_calc(_N) =>
x = math.pow(close - close , 2)
y = math.pow(close - close , 2) + math.pow(close, 2)
z = x / y
scaled_z = z * math.log(_N)
min_r = ta.lowest(scaled_z, _N)
max_r = ta.highest(scaled_z, _N)
norm_r = (scaled_z - min_r) / (max_r - min_r)
SMA = ta.sma(close, _N)
reversal_bullish = norm_r == 1.000 and norm_r < 0.90 and close < SMA and session.ismarket and barstate.isconfirmed
reversal_bearish = norm_r == 1.000 and norm_r < 0.90 and close > SMA and session.ismarket and barstate.isconfirmed
var float error = na
if reversal_bullish or reversal_bearish
error := math.pow(close - SMA, 2)
error
else
error := 999999999999999999999999999999999999999
error
error
var int N_opt = na
var float min_SSE = na
// Loop through ranges and calculate SSE
for N in N_range
sse = sse_calc(N)
if na(min_SSE) or sse < min_SSE
min_SSE := sse
N_opt := N
The N_range list encompasses every lookback value to check with. The sse_calc function accepts an individual element to then perform the calculation for Reversals. If there is a reversal, the error becomes how far away the close is from a moving average with that look back. Lowest error wins. That would be the look back used for the Reversals calculation.
Reversals calculation
// Calculating with optimized parameters
x_opt = math.pow(close - close , 2)
y_opt = math.pow(close - close , 2) + math.pow(close, 2)
z_opt = x_opt / y_opt
scaled_z_opt = z_opt * math.log(N_opt)
min_r_opt = ta.lowest(scaled_z_opt, N_opt)
max_r_opt = ta.highest(scaled_z_opt, N_opt)
norm_r_opt = (scaled_z_opt - min_r_opt) / (max_r_opt - min_r_opt)
SMA_opt = ta.sma(close, N_opt)
reversal_bullish_opt = norm_r_opt == 1.000 and norm_r_opt < 0.90 and close < SMA_opt and close > high and close > open and session.ismarket and barstate.isconfirmed
reversal_bearish_opt = norm_r_opt == 1.000 and norm_r_opt < 0.90 and close > SMA_opt and close < low and close < open and session.ismarket and barstate.isconfirmed
X_opt and y_opt are the compared values to develop the system. Everything done afterwards is scaling and using it to spot the Reversals. X_opt is the current close, minus the close with the optimal N bars back, squared. Then y_opt is also that but plus the current close squared. Z_opt is then x_opt / y_opt. This gives us a pretty small number that will go up when we approach tops or bottoms. To make life a little easier I normalize the value between 0 and 1.
After I find the moving average with the optimal N, I can check if there is a Reversal. Reversals are there when the last value is at 1 and the current value drops below 0.90. This would tell us that “memory” was strong and is now changing. To determine direction and help with accuracy, if the close is above the moving average it is a bearish alert, and vice versa. As well as the close must be below the last low for a bearish Reversal, above the last high for a bullish Reversal. Also the close must be above the open for a bullish Reversal, and below for a bearish one.
Visual examples
This NASDAQ:TSLA chart shows how alerts may come around. The bullish and bearish labels are plotted on the chart along with a reference line to see price interact with.
The indicator has the potential to be inactive, like we see here on $OKLO. There is only one alert, and it marks the bottom nicely.
Stocks with strong trends like NYSE:NOW may be more susceptible to false alerts. Assets that are volatile and bounce around a lot may be better.
It works on intra day charts the same as on Daily or longer charts. We see here on NASDAQ:QQQ it spotted the bottom on this particular trading day.
This tool is meant to aid traders in making decisions, not to be followed blindly. No trading tool is 100% accurate and Sum of Squared Errors does not guarantee the most optimal value. I encourage feedback and constructive criticism.
AI InfinityAI Infinity – Multidimensional Market Analysis
Overview
The AI Infinity indicator combines multiple analysis tools into a single solution. Alongside dynamic candle coloring based on MACD and Stochastic signals, it features Alligator lines, several RSI lines (including glow effects), and optionally enabled EMAs (20/50, 100, and 200). Every module is individually configurable, allowing traders to tailor the indicator to their personal style and strategy.
Important Note (Disclaimer)
This indicator is provided for educational and informational purposes only.
It does not constitute financial or investment advice and offers no guarantee of profit.
Each trader is responsible for their own trading decisions.
Past performance does not guarantee future results.
Please review the settings thoroughly and adjust them to your personal risk profile; consider supplementary analyses or professional guidance where appropriate.
Functionality & Components
1. Candle Coloring (MACD & Stochastic)
Objective: Provide an immediate visual snapshot of the market’s condition.
Details:
MACD Signal: Used to identify bullish and bearish momentum.
Stochastic: Detects overbought and oversold zones.
Color Modes: Offers both a simple (two-color) mode and a gradient mode.
2. Alligator Lines
Objective: Assist with trend analysis and determining the market’s current phase.
Details:
Dynamic SMMA Lines (Jaw, Teeth, Lips) that adjust based on volatility and market conditions.
Multiple Lengths: Each element uses a separate smoothing period (13, 8, 5).
Transparency: You can show or hide each line independently.
3. RSI Lines & Glow Effects
Objective: Display the RSI values directly on the price chart so critical levels (e.g., 20, 50, 80) remain visible at a glance.
Details:
RSI Scaling: The RSI is plotted in the chart window, eliminating the need to switch panels.
Dynamic Transparency: A pulse effect indicates when the RSI is near critical thresholds.
Glow Mode: Choose between “Direct Glow” or “Dynamic Transparency” (based on ATR distance).
Custom RSI Length: Freely adjustable (default is 14).
4. Optional EMAs (20/50, 100, 200)
Objective: Utilize moving averages for trend assessment and identifying potential support/resistance areas.
Details:
20/50 EMA: Select which one to display via a dropdown menu.
100 EMA & 200 EMA: Independently enabled.
Color Logic: Automatically green (price > EMA) or red (price < EMA). Each EMA’s up/down color is customizable.
Configuration Options
Candle Coloring:
Choose between Gradient or Simple mode.
Adjust the color scheme for bullish/bearish candles.
Transparency is dynamically based on candle body size and Stochastic state.
Alligator Lines:
Toggle each line (Jaw/Teeth/Lips) on or off.
Select individual colors for each line.
RSI Section:
RSI Length can be set as desired.
RSI lines (0, 20, 50, 80, 100) with user-defined colors and transparency (pulse effect).
Additional lines (e.g., RSI 40/60) are also available.
Glow Effects:
Switch between “Dynamic Transparency” (ATR-based) and “Direct Glow”.
Independently applied to the RSI 100 and RSI 0 lines.
EMAs (20/50, 100, 200):
Activate each one as needed.
Each EMA’s up/down color can be customized.
Example Use Cases
Trend Identification:
Enable Alligator lines to gauge general trend direction through SMMA signals.
Timing:
Watch the Candle Colors to spot potential overbought or oversold conditions.
Fine-Tuning:
Utilize the RSI lines to closely monitor important thresholds (50 as a trend barometer, 80/20 as possible reversal zones).
Filtering:
Enable a 50 EMA to quickly see if the market is trading above (bullish) or below (bearish) it.
BBSS+This Pine Script implements a custom indicator overlaying Bollinger Bands with additional features for trend analysis using Exponential Moving Averages (EMAs). Here's a breakdown of its functionality:
Bollinger Bands:
The script calculates the Bollinger Bands using a 20-period Simple Moving Average (SMA) as the basis and a multiplier of 2 for the standard deviation.
It plots the Upper Band and Lower Band in red.
EMA Calculations:
Three EMAs are calculated for the close price with periods of 5, 10, and 40.
The EMAs are plotted in green (5-period), cyan (10-period), and orange (40-period) to distinguish between them.
Trend Detection:
The script determines bullish or bearish EMA alignments:
Bullish Order: EMA 5 > EMA 10 > EMA 40.
Bearish Order: EMA 5 < EMA 10 < EMA 40.
Entry Signals:
Long Entry: Triggered when:
The close price crosses above the Upper Bollinger Band.
The Upper Band is above its 5-period SMA (indicating momentum).
The EMAs are in a bullish order.
Short Entry: Triggered when:
The close price crosses below the Lower Bollinger Band.
The Lower Band is below its 5-period SMA.
The EMAs are in a bearish order.
Trend State Tracking:
A variable tracks whether the market is in a Long or Short trend based on conditions:
A Long trend continues unless conditions for a Short Entry are met or the Upper Band dips below its average.
A Short trend continues unless conditions for a Long Entry are met or the Lower Band rises above its average.
Visual Aids:
Signal Shapes:
Triangle-up shapes indicate Long Entry points below the bar.
Triangle-down shapes indicate Short Entry points above the bar.
Bar Colors:
Green bars indicate a Long trend.
Red bars indicate a Short trend.
This script combines Bollinger Bands with EMA crossovers to generate entry signals and visualize market trends, making it a versatile tool for identifying momentum and trend reversals.
RSI NarrativesDescription:
The RSI Narratives script aggregates Relative Strength Index (RSI) values across multiple cryptocurrency narratives or sectors, providing an easy-to-read visual and alert system for trend reversals and overbought/oversold conditions. This tool is designed for traders looking to track sector-specific trends and compare performance across AI, DeFi, Level 1 blockchains, and more.
Key Features:
RSI Aggregation by Sector: Calculates average RSI for key narratives, including AI, DeFi, Level 1 blockchains, new memes, and more.
Customizable RSI Settings: Adjust RSI period, line width, and label offsets for personalized analysis.
Dynamic Alerts: Receive alerts when a narrative enters overbought or oversold territory, helping you act quickly on market movements.
Clean Visualization: Overlay sector-specific SMA lines with distinct colors and optional labels for quick interpretation.
Multi-Narrative Comparison: Analyze trends across diverse narratives to identify emerging opportunities.
Parameters for Customization:
RSI Period: Set the lookback period for RSI calculations (default: 14).
Line Width: Adjust the thickness of plotted lines (default: 2).
Label Offset: Control label placement for better chart readability.
Overbought/Oversold Thresholds: Configure the RSI levels for alerts (default: 70/40).
How to Use:
Add the script to your TradingView chart.
Customize the RSI parameters to suit your trading strategy.
Monitor the plotted SMA lines to identify narrative-specific trends.
Set alerts for overbought and oversold conditions to stay informed in real time.
Alerts System:
Alerts trigger when a narrative crosses predefined overbought or oversold levels.
Text notifications suggest potential trading actions, such as selling on overbought or buying on oversold.
Intended Users:
This script is ideal for crypto traders, sector analysts, and market enthusiasts who want to track performance across narratives and gain actionable insights into sector rotations.
Disclaimer:
This script is for educational and informational purposes only. It does not constitute financial advice. Please test on historical data and practice caution when trading.
Nimu Market on DemandNimu Market On Demand is an innovative tool designed to provide a visual representation of market demand levels on a scale of 1 to 100. This scale is displayed at specific intervals , making it easy for users to understand market demand fluctuations in real time.
To enhance analysis, Nimu Market On Demand also incorporates the Relative Strength Index (RSI) with key thresholds at . RSI is a widely-used technical indicator that measures market strength and momentum, offering insights into overbought (excessive buying) or oversold (excessive selling) conditions.
The combination of the Demand graph and RSI enables users to:
Identify the right time to buy when the RSI falls below 30, signaling an oversold condition.
Determine the optimal time to sell when the RSI rises above 70, indicating an overbought condition.
With an integrated visualization, users can effortlessly observe demand patterns and combine them with RSI signals to make smarter and more strategic trading decisions. This tool is designed to help traders and investors maximize opportunities in a dynamic market environment.
Zero Lag Signals For Loop [QuantAlgo]Elevate your trend-following investing and trading strategy with Zero Lag Signals For Loop by QuantAlgo , a simple yet effective technical indicator that merges advanced zero-lag mechanism with adaptive trend analysis to bring you a fresh take on market momentum tracking. Its aim is to support both medium- to long-term investors monitoring broader market shifts and precision-focused traders seeking quality entries through its dual-focused analysis approach!
🟢 Core Architecture
The foundation of this indicator rests on its zero-lag implementation and dynamic trend assessment. By utilizing a loop-driven scoring system alongside volatility-based filtering, each market movement is evaluated through multiple historical lenses while accounting for current market conditions. This multi-layered approach helps differentiate between genuine trend movements and market noise across timeframe and asset classes.
🟢 Technical Foundation
Three distinct components of this indicator are:
Zero Lag EMA : An enhanced moving average calculation designed to minimize traditional lag effects
For Loop Scoring System : A comprehensive scoring mechanism that weighs current price action against historical contexts
Dynamic Volatility Analysis : A sophisticated ATR-based filter that adjusts signal sensitivity to market conditions
🟢 Key Features & Signals
The Zero Lag Signals For Loop provides market insights through:
Color-coded Zero Lag line that adapts to trend direction
Dynamic fills between price and Zero Lag basis for enhanced visualization
Trend change markers (L/S) that highlight potential reversal points
Smart bar coloring that helps visualize market momentum
Background color changes with vertical lines at significant trend shifts
Customizable alerts for both bullish and bearish reversals
🟢 Practical Usage Tips
Here's how you can get the most out of the Zero Lag Signals For Loop :
1/ Setup:
Add the indicator to your TradingView chart by clicking on the star icon to add it to your favorites ⭐️
Start with the default Zero Lag length for balanced sensitivity
Use the standard volatility multiplier for proper filtering
Keep the default loop range for comprehensive trend analysis
Adjust threshold levels based on your investing and/or trading style
2/ Reading Signals:
Watch for L/S markers - they indicate validated trend reversals
Pay attention to Zero Lag line color changes - they confirm trend direction
Monitor bar colors for additional trend confirmation
Configure alerts for trend changes in both bullish and bearish directions, ensuring you can act on significant technical developments promptly.
🟢 Pro Tips
Fine-tune the Zero Lag length based on your timeframe:
→ Lower values (20-40) for more responsive signals
→ Higher values (60-100) for stronger trend confirmation
Adjust volatility multiplier based on market conditions:
→ Increase multiplier in volatile markets
→ Decrease multiplier in stable trending markets
Combine with:
→ Volume analysis for trade validation
→ Multiple timeframe analysis for broader context
→ Other technical tools for comprehensive analysis
Brijesh TTrades candle plot"Brijesh TTrades candle plot" is a powerful and customizable indicator that allows you to overlay higher timeframe candles directly on your chart. Choose your desired timeframe (e.g., Daily, Hourly) and plot up to 10 recent candles with precise control over color, wick style, and width. The candles are offset by 40 bars to the right, providing a clear and unobstructed view of the current price action. Ideal for multi-timeframe analysis and gaining deeper insights into market trends.
Merry ChristmasThis indicator creates a dynamic table of holiday greetings in 40 languages, taking advantage of Pine Script v6's new variable text size feature. The messages appear with randomized colors, sizes, and positions, refreshing with each bar update to create an ever-changing festive display. Includes traditional Christmas, Hanukkah, and New Year wishes across cultures. To fellow Pine developers who continue to push the boundaries of what's possible with Pine Script - thank you and happy holidays.
TASC 2025.01 Linear Predictive Filters█ OVERVIEW
This script implements a suite of tools for identifying and utilizing dominant cycles in time series data, as introduced by John Ehlers in the "Linear Predictive Filters And Instantaneous Frequency" article featured in the January 2025 edition of TASC's Traders' Tips . Dominant cycle information can help traders adapt their indicators and strategies to changing market conditions.
█ CONCEPTS
Conventional technical indicators and strategies often rely on static, unchanging parameters, which may fail to account for the dynamic nature of market data. In his article, John Ehlers applies digital signal processing principles to address this issue, introducing linear predictive filters to identify cyclic information for adapting indicators and strategies to evolving market conditions.
This approach treats market data as a complex series in the time domain. Analyzing the series in the frequency domain reveals information about its cyclic components. To reduce the impact of frequencies outside a range of interest and focus on a specific range of cycles, Ehlers applies second-order highpass and lowpass filters to the price data, which attenuate or remove wavelengths outside the desired range. This band-limited analysis isolates specific parts of the frequency spectrum for various trading styles, e.g., longer wavelengths for position trading or shorter wavelengths for swing trading.
After filtering the series to produce band-limited data, Ehlers applies a linear predictive filter to predict future values a few bars ahead. The filter, calculated based on the techniques proposed by Lloyd Griffiths, adaptively minimizes the error between the latest data point and prediction, successively adjusting its coefficients to align with the band-limited series. The filter's coefficients can then be applied to generate an adaptive estimate of the band-limited data's structure in the frequency domain and identify the dominant cycle.
█ USAGE
This script implements the following tools presented in the article:
Griffiths Predictor
This tool calculates a linear predictive filter to forecast future data points in band-limited price data. The crosses between the prediction and signal lines can provide potential trade signals.
Griffiths Spectrum
This tool calculates a partial frequency spectrum of the band-limited price data derived from the linear predictive filter's coefficients, displaying a color-coded representation of the frequency information in the pane. This mode's display represents the data as a periodogram . The bottom of each plotted bar corresponds to a specific analyzed period (inverse of frequency), and the bar's color represents the presence of that periodic cycle in the time series relative to the one with the highest presence (i.e., the dominant cycle). Warmer, brighter colors indicate a higher presence of the cycle in the series, whereas darker colors indicate a lower presence.
Griffiths Dominant Cycle
This tool compares the cyclic components within the partial spectrum and identifies the frequency with the highest power, i.e., the dominant cycle . Traders can use this dominant cycle information to tune other indicators and strategies, which may help promote better alignment with dynamic market conditions.
Notes on parameters
Bandpass boundaries:
In the article, Ehlers recommends an upper bound of 125 bars or higher to capture longer-term cycles for position trading. He recommends an upper bound of 40 bars and a lower bound of 18 bars for swing trading. If traders use smaller lower bounds, Ehlers advises a minimum of eight bars to minimize the potential effects of aliasing.
Data length:
The Griffiths predictor can use a relatively small data length, as autocorrelation diminishes rapidly with lag. However, for optimal spectrum and dominant cycle calculations, the length must match or exceed the upper bound of the bandpass filter. Ehlers recommends avoiding excessively long lengths to maintain responsiveness to shorter-term cycles.
Nifty Top Gainers/Losers [ar]Nifty Top Gainers/Losers - Real-time Market Performance Tracker
A powerful indicator that monitors and displays real-time performance of 40 major Nifty stocks in a clean, organized table format. Perfect for traders seeking instant market breadth insights.
Key Features:
• Dynamic advances/declines counter at the top
• Real-time percentage change calculations
• Color-coded display (green for gainers, red for losers)
• Customizable reference points (Previous Day Close/Today's Open)
• Optional background color based on market breadth
• Flexible top gainers/losers limit setting
Customization Options:
- Adjust colors for gainers and losers
- Set transparency for background
- Modify the number of top performers to display
- Add/remove symbols from the watchlist
- Choose calculation reference (Previous Day Close/Today's Open)
Ideal for:
- Day traders monitoring market momentum
- Investors tracking sector rotation
- Analysts studying market breadth
- Portfolio managers seeking quick market overview
This indicator helps identify market leaders and laggards at a glance, making it an essential tool for informed trading decisions.
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.
Fancy Oscillator Screener [Daveatt]⬛ OVERVIEW
Building upon LeviathanCapital original RSI Screener (), this enhanced version brings comprehensive technical analysis capabilities to your trading workflow. Through an intuitive grid display, you can monitor multiple trading instruments simultaneously while leveraging powerful indicators to identify market opportunities in real-time.
⬛ FEATURES
This script provides a sophisticated visualization system that supports both cross rates and heat map displays, allowing you to track exchange rates and percentage changes with ease. You can organize up to 40 trading pairs into seven customizable groups, making it simple to focus on specific market segments or trading strategies.
If you overlay on any circle/asset on the chart, you'll see the accurate oscillator value displayed for that asset
⬛ TECHNICAL INDICATORS
The screener supports the following oscillators:
• RSI - the oscillator from the original script version
• Awesome Oscillator
• Chaikin Oscillator
• Stochastic RSI
• Stochastic
• Volume Oscillator
• CCI
• Williams %R
• MFI
• ROC
• ATR Multiple
• ADX
• Fisher Transform
• Historical Volatility
• External : connect your own custom oscillator
⬛ DYNAMIC SCALING
One of the key improvements in this version is the implementation of dynamic chart scaling. Unlike the original script which was optimized for RSI's 0-100 range, this version automatically adjusts its scale based on the selected oscillator.
This adaptation was necessary because different indicators operate on vastly different numerical ranges - for instance, CCI typically ranges from -200 to +200, while Williams %R operates from -100 to 0.
The dynamic scaling ensures that each oscillator's data is properly displayed within its natural range, making the visualization both accurate and meaningful regardless of which indicator you choose to use.
⬛ ALERTS
I've integrated a comprehensive alert system that monitors both overbought and oversold conditions.
Users can now set custom threshold levels for their alerts.
When any asset in your monitored group crosses these thresholds, the system generates an alert, helping you catch potential trading opportunities without constant manual monitoring.
em will help you stay informed of market movements and potential trading opportunities.
I hope you'll find this tool valuable in your trading journey
All the BEST,
Daveatt






















