LIT - ConfirmationsOverview
The LIT - Confirmations Indicator is a dynamic checklist tool designed for traders who uses LIT Strategy (Liquidity Inducement Theory) following liquidity and smart money concepts as benefit. This tool allows users to document and track essential trading confirmations directly on their TradingView charts, offering a structured and visual approach to market analysis.
What Makes This Unique?
Unlike other open-source tools, the LIT - Confirmations Indicator introduces a fully interactive and customizable table directly on the chart. This table provides real-time feedback with clear ✅ (checked) and ❌ (unchecked) visual indicators for each confirmation. The user can position the table on the chart according to their preference, ensuring it integrates seamlessly into their trading workflow without obscuring critical chart data.
How It Works
1. Predefined Confirmations
The indicator includes a set of commonly used trading confirmations:
Identify Liquidity: Mark areas where liquidity might pool.
Inducement: Confirm the presence of inducements before market reversals.
Relevant Break of Structure (BOS): Validate critical structural changes.
Mitigation after RBoS: Check for mitigation following a BOS.
Smart Money Trap (SMT): Identify traps often utilized by smart money.
Timing: Ensure trades are entered during high-probability time windows.
Mitigation to the Leftside: Confirm whether price action aligns with prior mitigations.
Set Targets: Define and document logical take-profit or stop-loss levels.
2.Interactive Table Display
A table is dynamically created on the chart, showing all confirmations with their current state (checked or unchecked).
Users can choose the position of the table (top, middle, or bottom and left, center, or right) and customize its background color for better visibility.
3. Customization
All confirmations are toggled through the input settings, allowing traders to adapt the indicator to their unique strategies.
The display can be easily adjusted to match the trader’s preferences without cluttering the chart.
How to Use
1. Add the indicator to your chart.
2. Open the settings panel to activate the relevant confirmations for your analysis.
3. Use the Display Settings section to adjust the table's position and background color.
4. View the table on your chart to track selected confirmations in real-time.
Who Is This For?
This indicator is ideal for traders who:
Use Liquidity Inducent Theory strategy in their analysis.
Prefer a structured and systematic trading approach.
Need an on-chart tool to document confirmations without relying on external notes or tools.
Why Closed Source?
The logic behind the interactive table and confirmation system is specifically tailored to LIT practitioners and is not publicly available in existing open-source scripts. The closed-source nature of this script protects its unique implementation, ensuring the integrity and exclusivity of the tool.
Disclaimer
This indicator does not provide trading signals or strategies. It is a tool to document user-defined confirmations and should be used in conjunction with a thorough understanding of market behavior and risk management practices.
指標和策略
Logarithmic Regression AlternativeLogarithmic regression is typically used to model situations where growth or decay accelerates rapidly at first and then slows over time. Bitcoin is a good example.
𝑦 = 𝑎 + 𝑏 * ln(𝑥)
With this logarithmic regression (log reg) formula 𝑦 (price) is calculated with constants 𝑎 and 𝑏, where 𝑥 is the bar_index .
Instead of using the sum of log x/y values, together with the dot product of log x/y and the sum of the square of log x-values, to calculate a and b, I wanted to see if it was possible to calculate a and b differently.
In this script, the log reg is calculated with several different assumed a & b values, after which the log reg level is compared to each Swing. The log reg, where all swings on average are closest to the level, produces the final 𝑎 & 𝑏 values used to display the levels.
🔶 USAGE
The script shows the calculated logarithmic regression value from historical swings, provided there are enough swings, the price pattern fits the log reg model, and previous swings are close to the calculated Top/Bottom levels.
When the price approaches one of the calculated Top or Bottom levels, these levels could act as potential cycle Top or Bottom.
Since the logarithmic regression depends on swing values, each new value will change the calculation. A well-fitted model could not fit anymore in the future.
Swings are based on Weekly bars. A Top Swing, for example, with Swing setting 30, is the highest value in 60 weeks. Thirty bars at the left and right of the Swing will be lower than the Top Swing. This means that a confirmation is triggered 30 weeks after the Swing. The period will be automatically multiplied by 7 on the daily chart, where 30 becomes 210 bars.
Please note that the goal of this script is not to show swings rapidly; it is meant to show the potential next cycle's Top/Bottom levels.
🔹 Multiple Levels
The script includes the option to display 3 Top/Bottom levels, which uses different values for the swing calculations.
Top: 'high', 'maximum open/close' or 'close'
Bottom: 'low', 'minimum open/close' or 'close'
These levels can be adjusted up/down with a percentage.
Lastly, an "Average" is included for each set, which will only be visible when "AVG" is enabled, together with both Top and Bottom levels.
🔹 Notes
Users have to check the validity of swings; the above example only uses 1 Top Swing for its calculations, making the Top level unreliable.
Here, 1 of the Bottom Swings is pretty far from the bottom level, changing the swing settings can give a more reliable bottom level where all swings are close to that level.
Note the display was set at "Logarithmic", it can just as well be shown as "Regular"
In the example below, the price evolution does not fit the logarithmic regression model, where growth should accelerate rapidly at first and then slows over time.
Please note that this script can only be used on a daily timeframe or higher; using it at a lower timeframe will show a warning. Also, it doesn't work with bar-replay.
🔶 DETAILS
The code gathers data from historical swings. At the last bar, all swings are calculated with different a and b values. The a and b values which results in the smallest difference between all swings and Top/Bottom levels become the final a and b values.
The ranges of a and b are between -20.000 to +20.000, which means a and b will have the values -20.000, -19.999, -19.998, -19.997, -19.996, ... -> +20.000.
As you can imagine, the number of calculations is enormous. Therefore, the calculation is split into parts, first very roughly and then very fine.
The first calculations are done between -20 and +20 (-20, -19, -18, ...), resulting in, for example, 4.
The next set of calculations is performed only around the previous result, in this case between 3 (4-1) and 5 (4+1), resulting in, for example, 3.9. The next set goes even more in detail, for example, between 3.8 (3.9-0.1) and 4.0 (3.9 + 0.1), and so on.
1) -20 -> +20 , then loop with step 1 (result (example): 4 )
2) 4 - 1 -> 4 +1 , then loop with step 0.1 (result (example): 3.9 )
3) 3.9 - 0.1 -> 3.9 +0.1 , then loop with step 0.01 (result (example): 3.93 )
4) 3.93 - 0.01 -> 3.93 +0.01, then loop with step 0.001 (result (example): 3.928)
This ensures complicated calculations with less effort.
These calculations are done at the last bar, where the levels are displayed, which means you can see different results when a new swing is found.
Also, note that this indicator has been developed for a daily (or higher) timeframe chart.
🔶 SETTINGS
Three sets
High/Low
• color setting
• Swing Length settings for 'High' & 'Low'
• % adjustment for 'High' & 'Low'
• AVG: shows average (when both 'High' and 'Low' are enabled)
Max/Min (maximum open/close, minimum open/close)
• color setting
• Swing Length settings for 'Max' & 'Min'
• % adjustment for 'Max' & 'Min'
• AVG: shows average (when both 'Max' and 'Min' are enabled)
Close H/Close L (close Top/Bottom level)
• color setting
• Swing Length settings for 'Close H' & 'Close L'
• % adjustment for 'Close H' & 'Close L'
• AVG: shows average (when both 'Close H' and 'Close L' are enabled)
Show Dashboard, including Top/Bottom levels of the desired source and calculated a and b values.
Show Swings + Dot size
DCA Valuation & Unrealized GainsThis Pine Script for TradingView calculates and visualizes the relationship between a Dollar Cost Average (DCA) price and the All-Time High (ATH) price for over 50 different cryptocurrencies. Here's what it does:
1. Inputs for DCA Prices:
- Users can manually input DCA prices for specific cryptocurrencies (e.g., BTC, ETH, BNB).
2. Dynamic ATH Calculation:
- Dynamically calculates the ATH price for the current asset using the highest price in the chart's loaded data and persists this value across bars.
3. Percentage Change from DCA to ATH:
- Computes the percentage gain from the DCA price to the ATH price.
4. Visualizations:
- Draws a line at the DCA price and the ATH price, both extended to the right.
- Adds an arrow pointing from the DCA price to the ATH, offset by 10 bars into the future.
- Displays labels for:
- The percentage gain from DCA to ATH.
- "No DCA Configured" if no valid DCA price is set for the asset.
5. Color Coding:
- Labels and arrows are color-coded to indicate positive or negative percentage changes:
- Green for gains.
- Red for losses.
6. Adaptability:
- The script dynamically adjusts to the current asset based on its ticker and uses the corresponding DCA price.
This functionality provides traders with clear insights into their investment's performance relative to its ATH, aiding in decision-making.
-----
To add a new asset to the script:
1. Define the DCA Input: Add a new input for the asset's DCA price using the `input.float` function. For example:
dcaPriceNEW = input.float(title="NEW DCA Price", defval=0.1, tooltip="Set the DCA price for NEW")
2. Add the Asset Logic: Include a conditional check for the new asset in the ticker matching logic:
if str.contains(currentAsset, "NEW") and dcaPriceNEW != 0
dcaPrice := dcaPriceNEW
Where NEW is the ticker symbol of the asset you're adding.
NOTE: SOLO had to be put before SOL because otherwise the indicator was pulling the DCA price from SOL even on the SOLO chart. If you have a similar issue, try that fix.
Adding an asset requires only these two changes. Once done, the script dynamically incorporates the new asset into its calculations and visualizations.
CDV Momentum WaveDescription:
This indicator visualizes the Cumulative Delta Volume (CDV) as waves, providing traders with insights into the momentum and strength of buying and selling activity. By tracking the cumulative difference between buying and selling pressure, it highlights shifts in market sentiment with color-coded wave patterns.
How to Use:
Spot Momentum:
Green waves signify strong buying pressure, while red waves indicate dominant selling pressure. Blue and orange waves mark transitions or weaker momentum.
Trend Analysis:
Persistent color and direction in waves reflect a strong trend, while frequent shifts may signal reversals or consolidation.
Sensitivity Adjustment:
Use the mul2 setting to fine-tune wave responsiveness for short-term or long-term analysis.
Wave Position Adjustment:
The osx setting adjusts the visual placement of the waves on the chart.
By default (osx = 0), the waves are aligned directly with the candle data they are calculated from.
Increasing osx shifts the waves forward.
Decreasing osx shifts the waves backward.
This tool helps traders detect momentum shifts, confirm trends, and understand volume dynamics in various market conditions.
Linear Regression Intensity [AlgoAlpha]Introducing the Linear Regression Intensity indicator by AlgoAlpha, a sophisticated tool designed to measure and visualize the strength of market trends using linear regression analysis. This indicator not only identifies bullish and bearish trends with precision but also quantifies their intensity, providing traders with deeper insights into market dynamics. Whether you’re a novice trader seeking clearer trend signals or an experienced analyst looking for nuanced trend strength indicators, Linear Regression Intensity offers the clarity and detail you need to make informed trading decisions.
Key Features:
📊 Comprehensive Trend Analysis: Utilizes linear regression over customizable periods to assess and quantify trend strength.
🎨 Customizable Appearance: Choose your preferred colors for bullish and bearish trends to align with your trading style.
🔧 Flexible Parameters: Adjust the lookback period, range tolerance, and regression length to tailor the indicator to your specific strategy.
📉 Dynamic Bar Coloring: Instantly visualize trend states with color-coded bars—green for bullish, red for bearish, and gray for neutral.
🏷️ Intensity Labels: Displays dynamic labels that represent the intensity of the current trend, helping you gauge market momentum at a glance.
🔔 Alert Conditions: Set up alerts for strong bullish or bearish trends and trend neutrality to stay ahead of market movements without constant monitoring.
Quick Guide to Using Linear Regression Intensity:
🛠 Add the Indicator: Simply add Linear Regression Intensity to your TradingView chart from your favorites. Customize the settings such as lookback period, range tolerance, and regression length to fit your trading approach.
📈 Market Analysis: Observe the color-coded bars to quickly identify the current trend state. Use the intensity labels to understand the strength behind each trend, allowing for more strategic entry and exit points.
🔔 Set Up Alerts: Enable alerts for when strong bullish or bearish trends are detected or when the trend reaches a neutral zone. This ensures you never miss critical market movements, even when you’re away from the chart.
How It Works:
The Linear Regression Intensity indicator leverages linear regression to calculate the underlying trend of a selected price source over a specified length. By analyzing the consistency of the regression values within a defined lookback period, it determines the trend’s intensity based on a percentage tolerance. The indicator aggregates pairwise comparisons of regression values to assess whether the trend is predominantly upward or downward, assigning a state of bullish, bearish, or neutral accordingly. This state is then visually represented through dynamic bar colors and intensity labels, offering a clear and immediate understanding of market conditions. Additionally, the inclusion of Average True Range (ATR) ensures that the intensity visualization accounts for market volatility, providing a more robust and reliable trend assessment. With customizable settings and alert conditions, Linear Regression Intensity empowers traders to fine-tune their strategies and respond swiftly to evolving market trends.
Elevate your trading strategy with Linear Regression Intensity and gain unparalleled insights into market trends! 🌟📊
CVD OscillatorCVD Delta Oscillator
A momentum oscillator that measures buying and selling pressure through volume analysis, based on the principle that volume precedes price (cause and effect).
How It Works
Volume Analysis
Measures the force of buying and selling by analyzing how volume interacts with price movement within each bar
When price closes higher in a bar's range with strong volume, this indicates stronger buying pressure
When price closes lower in a bar's range with strong volume, this indicates stronger selling pressure
Momentum Measurement
Uses two EMAs (fast and slow) to smooth the volume delta
The difference between these EMAs creates an oscillator that shows:
Rising values = Buying pressure increasing
Falling values = Selling pressure increasing
Zero line crossovers = Potential shift in control between buyers and sellers
Signal Generation
Divergences
Bullish: Price falls to new lows while buying pressure increases (potential reversal up)
Bearish: Price rises to new highs while selling pressure increases (potential reversal down)
Zero-Line Crossovers
Bullish: Buying pressure overtakes selling pressure
Bearish: Selling pressure overtakes buying pressure
Practical Application
Reading the Indicator
Green columns above zero = Net buying pressure
Red columns below zero = Net selling pressure
Larger columns = Stronger pressure
Divergences and crossovers = Potential turning points
Trading Context
Helps identify when price movement has strong or weak volume support
Shows potential exhaustion points through divergences
Confirms trend changes through zero-line crossovers
Customization
Adjustable EMA periods for different trading styles
Toggle-able visual signals
Automatic alerts for all signals
IU VaR (Value at Risk) Historical MethodThis Pine Script indicator calculates the **Value at Risk (VaR)** using the **Historical Method** to help traders understand potential losses during a given period( Chart Timeframe) with a specific level of confidence.
What is Value at Risk (VaR) ?
Value at Risk (VaR) is a measure used in finance to estimate the potential loss in value of an asset, portfolio, or investment over a specific time period, given normal market conditions, and at a certain confidence level.
Example:
Suppose you invest ₹1,00,000 in stocks. A VaR of 5% at a 95% confidence level means:
- There is a **95% chance** that you won’t lose more than **₹5,000** in a day.
- Conversely, there is a **5% chance** that your loss could exceed ₹5,000 in a day.
VaR is a helpful tool for understanding risk and making informed investment decisions!
How It Works:
1. The indicator calculates the percentage difference between consecutive bars.
2. The differences are sorted, and the VaR is determined based on the assurance level you specify.
3. A label displays the VaR value on the chart, indicating the potential maximum loss with the selected assurance level within one period eg - ( 1h, 4h , 1D, 1W, 1M etc as per your chart timeframe )
Key Features:
- Customizable Assurance Level:
Set the confidence level (e.g., 95%) to determine the probability of loss.
-Historical Approach:
Uses the past percentage changes in price to calculate the risk.
-Clear Insights:
Displays the calculated VaR value on the chart with an informative tooltip explaining the risk.
Use this tool to better understand your market exposure and manage risk!
Kalman Filter Oscillator v4The Kalman Filter Oscillator v4 is an advanced tool designed to help traders and investors identify trends more effectively while reducing the impact of market noise. As the latest iteration in its development, this version integrates improvements that make it more adaptive and precise, catering to the challenges of today’s financial markets.
This indicator operates on the principle of the Kalman filter, a well-regarded mathematical approach used for estimating the state of a dynamic system. By filtering out random fluctuations, it smooths price data to provide clearer insights into underlying trends. Unlike traditional methods such as moving averages, which often lag and can miss rapid shifts, the Kalman Filter Oscillator is reactive in real time, making it particularly suited for dynamic markets.
Version v4 builds on earlier versions by offering a refined combination of short-term and long-term trend analysis. Through adjustable parameters, traders can balance sensitivity to immediate price changes with a broader perspective of the market direction. Additionally, the oscillator incorporates a unique feature that tracks a price’s position relative to its recent highs and lows, which enhances its ability to pinpoint potential turning points or key market conditions.
The indicator’s value lies in its adaptability and practicality. Traders can use it to confirm trends, identify overbought or oversold conditions, or smooth out erratic price movements, reducing the likelihood of false signals. By presenting information in a clear and actionable format, it allows users to make better-informed decisions with greater confidence.
As of late 2024, the Kalman Filter Oscillator v4 represents a sophisticated yet user-friendly advancement in trend analysis. While not a one-size-fits-all solution, it serves as a valuable component in a trader’s toolkit, complementing other strategies and enhancing overall market understanding.
HTF Candles Overlay [Trendoscope®]🎲 HTF Candles Overlay is a simple indicator where you can overlay higher timeframe candles on current timeframe chart.
Most of the code is encapsulated in the library HTFCandlesLib . After publishing the library as open source, many people requested to convert that into an indicator. Based on this, we decided to publish this small code for the use of community.
🎯 Usage
The indicator is simple, it helps users visualise higher timeframe candles. We majorly use this for debugging or validating our implementations based on higher timeframe. Instead of switching back and forth to different timeframes, it helps us visualise higher timeframe candles on the same chart when we are validating the implementation that involves higher timeframe calculations.
🎯 Components
The indicator provides two types of displays
Candles - overlay candles built through lines and labels
Plot - close price of higher timeframe plotted on chart
🎯 Candles
The behaviour of the candles are similar to that of hollow candles. The color of the body and the border+wick demonstrates the movement of the candle.
Body color is lime if the HTF close is higher than HTF open. Body color is orange if the HTF close is lower than the HTF open.
Wick and border color is lime if HTF close price is higher than previous HTF close price. And they are orange if HTF close price is lower than the previous HTF close price
In most cases body color will be same as the wick color. In case of stocks and indices, it may happen that the open price is too far away from previous close price due to gaps. This can lead to close price being relatively in different direction when compared to open and previous close.
Wicks are not at the centre of the candle. Instead wicks are drawn on the current chart timeframe position where the current timeframe has reached the highest or lowest point within the given HTF candle
Candles also list OHLC price of HTF candle along with HTF bar index and the range of LTF bar index that the candle spawns
Here are some pictorial representations that can help understand better.
Here are the examples of candles with gaps where body and wick/border are in different directions (colours)
🎯 Indicator Settings
Simple settings allow users to select the timeframe, whether to display candles and plots and their specific colors.
🎯 Possible inconsistencies
The overlay can show inconsistent data in certain situations. Here are some of the scenarios where the indicator may not show consistent display of the data.
When the HTF data from request.security does not match that of combined LTF data . In such cases, HTF candles may not form inline with the current timeframe candles. This happens when there is a data issue of different OHLC data available in tradingview.
When using weekly candle as either chart timeframe or higher timeframe - end of week may not coincide with end of month or other timeframes. This can cause some inconsistencies in the visuals of the indicator.
When open and close time of either LTF or HTF falls under different day due to time zone used. - time is always the time on which the candle close. So, when we use time zone that causes the exchange day to open and close on different days, that can cause some inconsistencies in the candles being drawn.
Daily Single Trade [SMRT Algo]The Daily Single Trade Indicator by SMRT Algo is a powerful yet simple tool designed for traders who value precision, discipline, and a focus on high-quality trade setups. With a unique approach, this indicator identifies just one signal daily, making it ideal for traders who prefer a structured and stress-free trading routine.
Please note that this indicator only works for timeframes below 1H.
Key Features:
Market Open & Pre-Market Analysis: The indicator focuses on the market’s opening range and identifies breakout opportunities based on price action during these critical periods.
Customizable Risk-Reward Ratio: Plan your trades with precision by setting your desired RR, ensuring that your take-profit (TP) levels are multiples of your stop-loss (SL). Stop loss is not shown with this indicator.
Price Offset for SL: Add a customizable buffer to your SL and TP levels. This offset accounts for market volatility, reducing the chances of premature stop-outs while maintaining alignment with your trading plan.
Increasing this value will lead to a greater invisible stop loss, which will increase the TP size. The opposite is occurs when decreasing this value (less than 0). If you set it as 2.5 for example for TSLA: price is 340 and SL is 330 for example, SL becomes 327.5. This calculation will then be applied to calculate the TP.
In simple terms, if the offset is positive, SL becomes larger, TP becomes larger as well.
Exit Point Visibility: Display exit points on your chart to better visualize trade targets and stop levels.
Adjustable Market Open Time: Easily modify the market open hour and minute to suit your asset’s trading session. For example, U.S. stock traders can set the market open time to 9:30 AM EST (UTC-5).
By providing a single signal each day, the indicator minimizes overtrading and keeps your focus on the best opportunities.
With predefined SL, TP, and RR settings, the indicator fosters disciplined trading, reducing the influence of emotional decision-making. Whether you’re trading stocks, indices, or forex, the customizable market open time and RR ratio make this indicator versatile and adaptable.
The combination of precise SL and TP calculations with offset pip adjustments helps protect your trades from market noise while maintaining a favorable RR.
Perfect for those who can’t monitor markets all day, the single-signal approach allows you to execute a high-quality trade and move on with your day.
How to Use:
Set the Market Open Time: Adjust the open time to align with your asset’s session. For example, set 9:30 AM EST for U.S. stocks.
Define Your Risk-Reward Ratio: Choose an RR multiple (e.g., 1:2 or 1:3) that aligns with your risk tolerance and trading goals.
Apply Pip Offset: Add a buffer to your SL and TP to account for market volatility and reduce false stops.
The Daily Single Trade Indicator simplifies trading by focusing on one high-probability setup per day. It’s perfect for traders looking to maintain consistency, improve risk management, and reduce the stress of overanalyzing the markets.
How Alerts Work:
Individual Alerts: Set separate notifications for specific actions, such as breakout signals, take-profit levels, or stop-loss activations.
Master Alert: Manage all notifications with one streamlined setting, ensuring you never miss an opportunity while keeping your setup simple and efficient.
Take control of your trading with a strategy built for clarity, precision, and success!
SiCInside Sweep Close (ISC):
This concept captures a specific price action behavior and can help refine trading strategies for better precision. Here's a detailed explanation:
Inside:
The closing price of the candle stays within the range of the previous candle.
This indicates a containment of price action, suggesting indecision or preparation for a significant move.
Sweep:
The wick of the candle takes out (or "sweeps") the low (or high) of the previous candle.
This sweep can trigger stop-losses of retail traders or activate pending orders, often used by smart money strategies.
Close:
The candle ultimately closes inside the range of the previous candle.
This close signifies that the sweep was a liquidity grab rather than a genuine breakout, providing an actionable trading signal.
How ISC Can Be Used in Trading:
Liquidity Grab Recognition:
ISC can indicate when liquidity is swept from the market, making it an ideal entry point for traders anticipating a reversal or continuation.
Smart Money Concept (SMC) Synergy:
If you follow SMC principles, ISC aligns with key concepts like liquidity sweeps, order blocks, and mitigation zones.
Risk Management:
By identifying the ISC setup, you can place tighter stop-loss levels just outside the sweep, optimizing risk-reward ratios.
Entry Signals:
When you spot an ISC, you can enter trades at the close of the candle, anticipating a move in the direction opposite to the sweep.
Example of ISC in Action:
Imagine a bearish candle:
The wick sweeps the low of the previous candle, possibly triggering stop-losses.
However, the close stays inside the previous candle’s range.
This setup might indicate a reversal, where price moves upward after grabbing liquidity.
Why This Name Works:
It’s concise, professional, and directly linked to the trading action you’re describing.
The short form, ISC, is easy to remember and discuss within trading circles or while teaching others.
It ties into widely known concepts like smart money, price action, and liquidity sweeps, making it relatable yet unique.
Does this align with how you envision using the concept? Let me know if you’d like more refinements or visual examples!
ATR HEMA [SeerQuant]What is the ATR Holt Moving Average (HEMA)?
The ATR Holt Moving Average (HEMA) is an advanced smoothing technique that incorporates the Holt exponential smoothing method. Unlike traditional moving averages, HEMA uses two smoothing factors (alpha and gamma) to forecast both the current trend and the trend change rate. This dual-layer approach improves the responsiveness of the moving average to both stable trends and volatile price swings.
When paired with the Average True Range (ATR), the HEMA becomes even more powerful. The ATR acts as a volatility filter, defining a "neutral zone" where minor price fluctuations are ignored. This allows traders to focus on significant market movements while reducing the impact of noise.
⚙️ How the Code Works
The ATR Holt Moving Average (HEMA) combines trend smoothing with volatility filtering to provide traders with dynamic signals. Here's how it functions step by step:
User Inputs and Customization:
Traders can customize the lengths for HEMA's smoothing factors (alphaL and gammaL), the ATR calculation length, and the neutral zone multiplier (atrMult).
The src input allows users to choose the price source for calculations (e.g., hl2), while the col input offers various color themes (Default, Modern, Warm, Cool).
Holt Exponential Moving Average (HEMA) Calculation:
Alpha and Gamma Smoothing Factors:
alpha controls how much weight is given to the current price versus past prices.
gamma smooths the trend change rate, reducing noise. The HEMA formula combines the current price, the previous HEMA value, and a trend adjustment (via the b variable) to create a smooth yet responsive average. The b variable tracks the rate of change in the HEMA over time, further refining the trend detection.
ATR-Based Neutral Zone:
If the change in HEMA (hemaChange) falls within the neutral zone, it is considered insignificant, and the trend color remains unchanged.
Color and Signal Detection:
Bullish Trend: The color is set to bull when HEMA rises above the neutral zone.
Bearish Trend: The color is set to bear when HEMA falls below the neutral zone.
Neutral Zone: The color remains unchanged, signalling no significant trend.
🚀 Summary
This indicator enhances traditional moving averages by combining the Holt smoothing method with ATR-based volatility filtering. The HEMA adapts to market conditions, detecting trends and transitions while filtering out insignificant price changes. The result is a versatile tool for:
The ATR Holt Moving Average (HEMA) is ideal for traders seeking a balance between responsiveness and stability, offering precise signals in both trending and volatile markets.
📜 Disclaimer
The information provided by this script is for educational and informational purposes only and does not constitute financial, investment, or trading advice. Past performance of any trading system or indicator, including this one, is not indicative of future results. Trading and investing in financial markets involve risk, and it is possible to lose your entire investment.
Users are advised to perform their own due diligence and consult with a licensed financial advisor before making any trading or investment decisions. The creator of this script is not responsible for any trading or investment decisions made based on the use of this script.
This script complies with TradingView's guidelines and is provided as-is, without any guarantee of accuracy, reliability, or performance. Use at your own risk.
Volume Weighted Jurik Moving AverageThe Jurik Moving Average (JMA) is a smoothing indicator that is designed to improve upon traditional moving averages by reducing lag while enhancing responsiveness to price movements. It was created by Jurik Research and is often used to track trends with greater accuracy and minimal delay. The JMA is based on a combination of **exponential smoothing** and **phase adjustments**, making it more adaptable to varying market conditions compared to standard moving averages like SMA (Simple Moving Average) or EMA (Exponential Moving Average).
The core advantage of the JMA lies in its ability to adjust to price changes without excessively lagging, which is a common issue with traditional moving averages. It incorporates a **phase parameter** that can be adjusted to smooth out the signal further or make it more responsive to recent price action. This phase adjustment allows traders to fine-tune the JMA's sensitivity to the market, optimizing it for different timeframes and trading strategies.
How JMA Works and Benefits of Adding Volume Weight
The JMA works by applying a **smoothing process** to price data while allowing for adjustments through its phase and power parameters. These parameters help control the degree of smoothness and responsiveness. The result is a curve that follows price trends closely but with less lag than traditional moving averages.
Adding **volume weighting** to the JMA enhances its ability to reflect market activity more accurately. Just like the **Volume-Weighted Moving Average (VWMA)**, volume-weighting adjusts the moving average based on the strength of trading volume, meaning that price movements with higher volume will have a greater influence on the JMA. This can help traders identify trends that are supported by significant market participation, making the moving average more reliable.
The benefit of a volume-weighted JMA is that it responds more effectively to price movements that occur during periods of high trading volume, which are often considered more significant. This can help traders avoid false signals that may occur during low-volume periods when price changes may not reflect true market sentiment. By incorporating volume into the calculation, the JMA becomes more aligned with real market conditions, enhancing its effectiveness for trend identification and decision-making.
Combined Zero Lag EMA with Crosses | ASHGCombined Zero Lag EMA with Crosses
This indicator combines the power of Zero Lag Exponential Moving Averages (EMAs) with the widely used Golden Cross and Death Cross signals. It provides an efficient and precise trend-following tool for traders.
Key Features:
Short and Long Zero Lag EMAs: The indicator uses two Zero Lag EMAs with customizable periods (Short and Long). The short EMA is typically more responsive to price changes, while the long EMA smooths out price data, providing a broader trend perspective.
Golden Cross and Death Cross signals: The Golden Cross occurs when the short EMA crosses above the long EMA, indicating a potential bullish trend. The Death Cross occurs when the short EMA crosses below the long EMA, signaling a possible bearish trend.
Combined Zero Lag EMA: The average of the Short and Long Zero Lag EMAs gives a balanced view of the market's overall direction.
Plotting and Alerts: The indicator plots both the short and long Zero Lag EMAs, as well as the combined EMA, with visual cues for Golden and Death Crosses. Alerts can be set for when these crosses occur.
Use this indicator for clearer entry and exit points, helping you stay ahead of market movements.
This indicator is based on Kıvanç ÖZBİLGİÇ's "Zero Lag EMA v2" indicator.
tr.tradingview.com
Birleştirilmiş Zero Lag EMA ve Cross (Kesişim) Sinyalleri
Bu gösterge, Zero Lag (Sıfır Gecikmeli) Üssel Hareketli Ortalamaların (EMA) gücünü, yaygın olarak kullanılan Golden Cross (Altın Kesişim) ve Death Cross (Ölüm Kesişimi) sinyalleriyle birleştirir. Yatırımcılar için verimli ve hassas bir trend takip aracıdır.
Öne Çıkan Özellikler:
Kısa ve Uzun Zero Lag EMA: Gösterge, özelleştirilebilir periyotlarla iki Zero Lag EMA kullanır (Kısa ve Uzun). Kısa EMA, fiyat değişimlerine daha hızlı tepki verirken, uzun EMA fiyat verilerini düzleştirerek daha geniş bir trend perspektifi sunar.
Golden Cross ve Death Cross sinyalleri: Golden Cross, kısa EMA'nın uzun EMA'yı yukarı doğru kesmesiyle oluşur ve potansiyel bir yükseliş trendine işaret eder. Death Cross ise, kısa EMA'nın uzun EMA'yı aşağı doğru kesmesiyle oluşur ve düşüş trendi sinyali verir.
Birleştirilmiş Zero Lag EMA: Kısa ve uzun Zero Lag EMA'larının ortalaması, piyasanın genel yönünü dengeli bir şekilde gösterir.
Grafik ve Uyarılar: Gösterge, kısa ve uzun Zero Lag EMA'ları ile birleştirilmiş EMA'yı çizerek Golden Cross ve Death Cross sinyalleri için görsel uyarılar sağlar. Bu kesişimler gerçekleştiğinde alarm kurabilirsiniz.
Bu göstergeleri kullanarak, piyasa hareketlerinden önce net giriş ve çıkış noktaları belirleyebilir, böylece daha bilinçli kararlar alabilirsiniz.
Bu indikatör Kıvanç ÖZBİLGİÇ'in "Zero Lag EMA v2" indikatörünü temel alarak hazırlanmıştır.
tr.tradingview.com
Volume Weighted TWAP (VW-TWAP)The Volume Weighted Time Weighted Average Price (VW-TWAP) is an indicator that combines the principles of price averaging with volume sensitivity. Unlike the traditional TWAP, which calculates a simple time-weighted average, VW-TWAP integrates volume into its computation, emphasizing price movements that occur during periods of higher trading activity. This makes it particularly effective for identifying realistic price levels influenced by significant market participation. It is computed by summing the volume-weighted prices over a specified period and dividing by the total volume, providing a more accurate reflection of the price participants value most.
The key benefits of VW-TWAP lie in its ability to guide both traders and investors with a data-driven perspective. By accounting for both time and volume, it highlights fair value zones where significant accumulation or distribution might occur. This can improve trade entries and exits by aligning decisions with zones of substantial market consensus. Furthermore, its adaptability to different timeframes enhances its utility in multi-timeframe analysis, making it suitable for intraday scalpers and long-term swing traders alike. The VW-TWAP's focus on volume sensitivity also minimizes noise from low-volume, erratic price movements, offering a clearer view of market dynamics.
Levy Flight Relative Strength Index [SeerQuant]Lévy Flight Relative Strength Index
A nuanced improvement on the classic RSI, the Lévy Flight RSI leverages the Lévy Flight model to calculate dynamic weighted gains and losses, offering improved responsiveness and smoothness in trend detection compared to the regular RSI. Ideal for traders seeking a balance between precision and adaptability, the Lévy Flight RSI is packed with customizable features and a sleek, modern aesthetic.
-----------------------------------------------------------------
🧠 What is Lévy Flight Modelling?
Lévy Flight modelling is a concept derived from probability theory and fractal mathematics, widely applied in fields such as finance and physics. In trading, Lévy Flights describe a random walk process characterized by small, frequent movements interspersed with larger, less frequent movements. This behaviour reflects real-world price dynamics, where markets often exhibit periods of relative calm followed by sharp, volatile movements. The Lévy Flight model introduces a weighting mechanism that amplifies extreme price changes while smoothing smaller ones, providing a more nuanced view of market trends.
In the context of the Lévy Flight RSI, this model enhances traditional RSI calculations by dynamically weighting price changes (gains and losses) based on their magnitude. This results in an RSI that is more responsive to significant price movements, making it ideal for detecting shifts in momentum and market direction.
-----------------------------------------------------------------
🌟 Key Features:
- Dynamic Lévy Flight Modelling: Adjust alpha (1 to 2) for responsive or smooth signals, making it perfect for varying market conditions.
- Custom RSI Smoothing: Choose from multiple moving average types, including TEMA, DEMA, HMA, ALMA, and more, to match your trading style.
- Visually Intuitive: Neon-inspired gradient colours and centered histogram provide instant insights into market conditions.
- Customizable Overbought/Oversold Levels: Clearly defined thresholds, with additional shaded regions for strength identification.
-----------------------------------------------------------------
⚙️ How the Code Works
The Lévy Flight RSI enhances the traditional RSI calculation by incorporating two primary elements:
Dynamic Weighting Using Lévy Flight:
The code calculates the price change (change) on each bar and applies a power function (alpha) to these changes. Gains are raised to the power of alpha (for positive price changes), and losses are similarly transformed (for negative price changes).
The parameter alpha (ranging from 1 to 2) determines the sensitivity of the weighting. Lower values emphasize responsiveness, while higher values smooth out signals.
Enhanced Moving Averages:
The weighted gains and losses are smoothed using a customizable moving average. Options include traditional averages like SMA and EMA, and more advanced ones like TEMA, HMA, and ALMA. These smoothed values are used to calculate the final RSI value.
-----------------------------------------------------------------
📈 Why Use Lévy Flight RSI?
This unique RSI indicator captures price momentum with enhanced sensitivity to market dynamics. Whether you’re trend-following, scalping, or identifying reversals, the Lévy Flight RSI provides robust insights to refine your trading decisions.
-----------------------------------------------------------------
🔧 Inputs:
RSI Settings: Control RSI length, calculation source, and smoothing type.
Lévy Flight Settings: Adjust alpha to tune the indicator's responsiveness.
Style Customization: Tailor the appearance with different colour themes and gradients.
-----------------------------------------------------------------
Relative Price Strength (RPS)Relative Price Strength (RPS) is a technical analysis indicator that measures the performance of a specific symbol relative to a benchmark or "Base Symbol".
It's essentially a ratio that compares the price of the specific symbol to the price of the benchmark.
Rising RPS: Indicates that the symbol is outperforming the benchmark.
Falling RPS: Suggests that the symbol is underperforming the benchmark.
RSP is smoothed over a period for better visualization.
Boltzmann Weighted Moving average ( BWMA )Overview:
Introducing the Boltzmann Weighted Moving Average (BWMA) – a novel approach that draws inspiration from statistical mechanics to emphasize recent market data more than older data. By applying an exponential decay governed by a “temperature” parameter, BWMA provides a unique perspective on price trends and enhances noise filtering. An EMA-based smoothing is then applied for an even cleaner, more stable signal.
Key Features:
Boltzmann Weighting: The BWMA assigns weights to each data point based on a Boltzmann-like formula, giving more influence to recent bars and reducing the impact of older ones. This creates a dynamic, adaptive moving average that can quickly respond to market changes.
Adaptive Temperature Control: Users can adjust the “Temperature” (T) parameter. A lower T puts a stronger emphasis on the most recent data, while a higher T makes the weight distribution more uniform across the chosen period.
EMA Smoothing: After computing the weighted average, an EMA is applied to smooth out short-term noise, resulting in a cleaner trend indication.
Color-Coded Trend Indicator: The BWMA line changes color depending on its slope, allowing traders to quickly identify bullish (green) or bearish (red) conditions at a glance.
Parameters:
Period: Defines the lookback window over which the Boltzmann weights are calculated.
Temperature (T): Controls the steepness of the weight decay. Lower T emphasizes recency, while higher T spreads weights more evenly.
Alpha (Energy Scale): Adjusts how quickly “Energy” (and thus weight decay) increases with older data points.
Smoothing Period: Determines the EMA length for reducing noise after weighting, providing a more stable signal.
How It Works:
The BWMA calculates a weighted average of recent prices, where the weight for each data point i is given by:
weight = math.exp(-energy / (k_B * T))
Energy_i: Increases as the data point is further back in time.
k_B: A scaling constant, set to 1 for simplicity.
T: "Temperature" parameter that controls how quickly the weights decay. A lower T emphasizes more recent data strongly, while a higher T spreads out the emphasis more evenly.
Visuals:
BWMA Line: Plotted as a smooth line that changes color based on trend direction.
Green: BWMA is rising (bullish trend).
Red: BWMA is falling (bearish trend).
Usage:
The BWMA can be used similarly to traditional moving averages but offers greater flexibility and adaptability:
Adjust T and Alpha: Fine-tune the weighting profile to match your trading style, whether you prefer rapid response to recent changes or a more balanced view.
Trend Confirmation: Use color changes to confirm bullish or bearish momentum.
Filtering Noise: The combination of Boltzmann weighting and EMA smoothing can help reduce the impact of sudden price spikes and yield clearer trend signals.
By blending the concepts of statistical mechanics with classic technical analysis techniques, the Boltzmann Weighted Moving Average provides traders with an innovative tool for revealing underlying market trends.
Ask-Weighted Averages This indicator provides two price-based reference lines derived from volume dynamics within each bar. Specifically, it calculates a volume-weighted average price using only the portion of trading volume that occurred on the "ask" side, implying more aggressive buying activity. The logic behind this approach is to highlight potential support and resistance levels where buyers have shown greater conviction.
Key Features:
Ask-Weighted Average Prices:
Instead of using the entire trade volume, the lines focus on "ask volume" (volume associated with trades occurring at or near the ask price). This helps to spotlight areas where buyers have been dominant, potentially revealing more meaningful price levels for future market behavior.
Conditional vs. Continuous Lines:
Conditional Line: This line is only plotted if the dollar volume (a rough measure of trade value) exceeds a specified threshold, ensuring that the highlighted level is backed by substantial trading activity.
Continuous Line: A second line is always displayed, providing a running ask-weighted average price reference for additional context, regardless of dollar volume.
Supports Identifying Key Price Zones:
By focusing on where more motivated buyers have been active, the indicator helps traders identify potential inflection points in price, such as areas where the market might find support on pullbacks or resistance during rallies.
Overall, this indicator serves as a specialized tool for traders interested in volume-driven price analysis. It aims to refine the understanding of where buyers are most engaged and how that might shape future price movements.
Risks Associated with Trading:
No indicator can guarantee profitable trades or accurately predict future price movements. Market conditions are inherently unpredictable, and reliance on any single tool or combination of tools carries the risk of financial loss. Traders should practice sound risk management, including the use of stop losses and position sizing, and should not trade with funds they cannot afford to lose. Ultimately, decisions should be guided by a thorough trading plan and possibly supplemented with other forms of market analysis or professional advice.
Risks and Important Considerations:
• Not a Standalone Tool:
• This indicator should not be used in isolation. It is essential to incorporate additional technical analysis tools, fundamental analysis, and market context when making trading decisions.
• Relying solely on this indicator may lead to incomplete assessments of market conditions.
• Market Volatility and False Signals:
• Financial markets can be highly volatile, and indicators based on historical data may not accurately predict future movements.
• The indicator may produce false signals due to sudden market changes, low liquidity, or atypical trading activity.
• Risk Management:
• Always employ robust risk management strategies, including setting stop-loss orders, diversifying your portfolio, and not over-leveraging positions.
• Understand that no indicator guarantees success, and losses are a natural part of trading.
• Emotional Discipline:
• Avoid making impulsive decisions based on indicator signals alone.
• Emotional trading can lead to significant financial losses; maintain discipline and adhere to a well-thought-out trading plan.
• Continuous Learning and Adaptation:
• Stay informed about market news, economic indicators, and global events that may impact trading conditions.
• Continuously evaluate and adjust your trading strategies as market dynamics evolve.
• Consultation with Professionals:
• Consider seeking advice from financial advisors or professional traders to understand better how this indicator can fit into your overall trading strategy.
• Professional guidance can provide personalized insights based on your financial goals and risk tolerance.
Disclaimer:
Trading financial instruments involves substantial risk and may not be suitable for all investors. Past performance is not indicative of future results. This indicator is provided for informational and educational purposes only and should not be considered investment advice. Always conduct your own research and consult with a licensed financial professional before making any trading decisions.
Note: The effectiveness of any technical indicator can vary based on market conditions and individual trading styles. It's crucial to test indicators thoroughly using historical data and possibly paper trading before applying them in live trading scenarios.
Ensemble Alerts█ OVERVIEW
This indicator creates highly customizable alert conditions and messages by combining several technical conditions into groups , which users can specify directly from the "Settings/Inputs" tab. It offers a flexible framework for building and testing complex alert conditions without requiring code modifications for each adjustment.
█ CONCEPTS
Ensemble analysis
Ensemble analysis is a form of data analysis that combines several "weaker" models to produce a potentially more robust model. In a trading context, one of the most prevalent forms of ensemble analysis is the aggregation (grouping) of several indicators to derive market insights and reinforce trading decisions. With this analysis, traders typically inspect multiple indicators, signaling trade actions when specific conditions or groups of conditions align.
Simplifying ensemble creation
Combining indicators into one or more ensembles can be challenging, especially for users without programming knowledge. It usually involves writing custom scripts to aggregate the indicators and trigger trading alerts based on the confluence of specific conditions. Making such scripts customizable via inputs poses an additional challenge, as it often involves complicated input menus and conditional logic.
This indicator addresses these challenges by providing a simple, flexible input menu where users can easily define alert criteria by listing groups of conditions from various technical indicators in simple text boxes . With this script, you can create complex alert conditions intuitively from the "Settings/Inputs" tab without ever writing or modifying a single line of code. This framework makes advanced alert setups more accessible to non-coders. Additionally, it can help Pine programmers save time and effort when testing various condition combinations.
█ FEATURES
Configurable alert direction
The "Direction" dropdown at the top of the "Settings/Inputs" tab specifies the allowed direction for the alert conditions. There are four possible options:
• Up only : The indicator only evaluates upward conditions.
• Down only : The indicator only evaluates downward conditions.
• Up and down (default): The indicator evaluates upward and downward conditions, creating alert triggers for both.
• Alternating : The indicator prevents alert triggers for consecutive conditions in the same direction. An upward condition must be the first occurrence after a downward condition to trigger an alert, and vice versa for downward conditions.
Flexible condition groups
This script features six text inputs where users can define distinct condition groups (ensembles) for their alerts. An alert trigger occurs if all the conditions in at least one group occur.
Each input accepts a comma-separated list of numbers with optional spaces (e.g., "1, 4, 8"). Each listed number, from 1 to 35, corresponds to a specific individual condition. Below are the conditions that the numbers represent:
1 — RSI above/below threshold
2 — RSI below/above threshold
3 — Stoch above/below threshold
4 — Stoch below/above threshold
5 — Stoch K over/under D
6 — Stoch K under/over D
7 — AO above/below threshold
8 — AO below/above threshold
9 — AO rising/falling
10 — AO falling/rising
11 — Supertrend up/down
12 — Supertrend down/up
13 — Close above/below MA
14 — Close below/above MA
15 — Close above/below open
16 — Close below/above open
17 — Close increase/decrease
18 — Close decrease/increase
19 — Close near Donchian top/bottom (Close > (Mid + HH) / 2)
20 — Close near Donchian bottom/top (Close < (Mid + LL) / 2)
21 — New Donchian high/low
22 — New Donchian low/high
23 — Rising volume
24 — Falling volume
25 — Volume above average (Volume > SMA(Volume, 20))
26 — Volume below average (Volume < SMA(Volume, 20))
27 — High body to range ratio (Abs(Close - Open) / (High - Low) > 0.5)
28 — Low body to range ratio (Abs(Close - Open) / (High - Low) < 0.5)
29 — High relative volatility (ATR(7) > ATR(40))
30 — Low relative volatility (ATR(7) < ATR(40))
31 — External condition 1
32 — External condition 2
33 — External condition 3
34 — External condition 4
35 — External condition 5
These constituent conditions fall into three distinct categories:
• Directional pairs : The numbers 1-22 correspond to pairs of opposing upward and downward conditions. For example, if one of the inputs includes "1" in the comma-separated list, that group uses the "RSI above/below threshold" condition pair. In this case, the RSI must be above a high threshold for the group to trigger an upward alert, and the RSI must be below a defined low threshold to trigger a downward alert.
• Non-directional filters : The numbers 23-30 correspond to conditions that do not represent directional information. These conditions act as filters for both upward and downward alerts. Traders often use non-directional conditions to refine trending or mean reversion signals. For instance, if one of the input lists includes "30", that group uses the "Low relative volatility" condition. The group can trigger an upward or downward alert only if the 7-period Average True Range (ATR) is below the 40-period ATR.
• External conditions : The numbers 31-35 correspond to external conditions based on the plots from other indicators on the chart. To set these conditions, use the source inputs in the "External conditions" section near the bottom of the "Settings/Inputs" tab. The external value can represent an upward, downward, or non-directional condition based on the following logic:
▫ Any value above 0 represents an upward condition.
▫ Any value below 0 represents a downward condition.
▫ If the checkbox next to the source input is selected, the condition becomes non-directional . Any group that uses the condition can trigger upward or downward alerts only if the source value is not 0.
To learn more about using plotted values from other indicators, see this article in our Help Center and the Source input section of our Pine Script™ User Manual.
Group markers
Each comma-separated list represents a distinct group , where all the listed conditions must occur to trigger an alert. This script assigns preset markers (names) to each condition group to make the active ensembles easily identifiable in the generated alert messages and labels. The markers assigned to each group use the format "M", where "M" is short for "Marker" and "x" is the group number. The titles of the inputs at the top of the "Settings/Inputs" tab show these markers for convenience.
For upward conditions, the labels and alert messages show group markers with upward triangles (e.g., "M1▲"). For downward conditions, they show markers with downward triangles (e.g., "M1▼").
NOTE: By default, this script populates the "M1" field with a pre-configured list for a mean reversion group ("2,18,24,28"). The other fields are empty. If any "M*" input does not contain a value, the indicator ignores it in the alert calculations.
Custom alert messages
By default, the indicator's alert message text contains the activated markers and their direction as a comma-separated list. Users can override this message for upward or downward alerts with the two text fields at the bottom of the "Settings/Inputs" tab. When the fields are not empty , the alerts use that text instead of the default marker list.
NOTE: This script generates alert triggers, not the alerts themselves. To set up an alert based on this script's conditions, open the "Create Alert" dialog box, then select the "Ensemble Alerts" and "Any alert() function call" options in the "Condition" tabs. See the Alerts FAQ in our Pine Script™ User Manual for more information.
Condition visualization
This script offers organized visualizations of its conditions, allowing users to inspect the behaviors of each condition alongside the specified groups. The key visual features include:
1) Conditional plots
• The indicator plots the history of each individual condition, excluding the external conditions, as circles at different levels. Opposite conditions appear at positive and negative levels with the same absolute value. The plots for each condition show values only on the bars where they occur.
• Each condition's plot is color-coded based on its type. Aqua and orange plots represent opposing directional conditions, and purple plots represent non-directional conditions. The titles of the plots also contain the condition numbers to which they apply.
• The plots in the separate pane can be turned on or off with the "Show plots in pane" checkbox near the top of the "Settings/Inputs" tab. This input only toggles the color-coded circles, which reduces the graphical load. If you deactivate these visuals, you can still inspect each condition from the script's status line and the Data Window.
• As a bonus, the indicator includes "Up alert" and "Down alert" plots in the Data Window, representing the combined upward and downward ensemble alert conditions. These plots are also usable in additional indicator-on-indicator calculations.
2) Dynamic labels
• The indicator draws a label on the main chart pane displaying the activated group markers (e.g., "M1▲") each time an alert condition occurs.
• The labels for upward alerts appear below chart bars. The labels for downward alerts appear above the bars.
NOTE: This indicator can display up to 500 labels because that is the maximum allowed for a single Pine script.
3) Background highlighting
• The indicator can highlight the main chart's background on bars where upward or downward condition groups activate. Use the "Highlight background" inputs in the "Settings/Inputs" tab to enable these highlights and customize their colors.
• Unlike the dynamic labels, these background highlights are available for all chart bars, irrespective of the number of condition occurrences.
█ NOTES
• This script uses Pine Script™ v6, the latest version of TradingView's programming language. See the Release notes and Migration guide to learn what's new in v6 and how to convert your scripts to this version.
• This script imports our new Alerts library, which features functions that provide high-level simplicity for working with complex compound conditions and alerts. We used the library's `compoundAlertMessage()` function in this indicator. It evaluates items from "bool" arrays in groups specified by an array of strings containing comma-separated index lists , returning a tuple of "string" values containing the marker of each activated group.
• The script imports the latest version of the ta library to calculate several technical indicators not included in the built-in `ta.*` namespace, including Double Exponential Moving Average (DEMA), Triple Exponential Moving Average (TEMA), Fractal Adaptive Moving Average (FRAMA), Tilson T3, Awesome Oscillator (AO), Full Stochastic (%K and %D), SuperTrend, and Donchian Channels.
• The script uses the `force_overlay` parameter in the label.new() and bgcolor() calls to display the drawings and background colors in the main chart pane.
• The plots and hlines use the available `display.*` constants to determine whether the visuals appear in the separate pane.
Look first. Then leap.
WhalenatorThis custom TradingView indicator combines multiple analytic techniques to help identify potential market trends, areas of support and resistance, and zones of heightened trading activity. It incorporates a SuperTrend-like line based on ATR, Keltner Channels for volatility-based price envelopes, and dynamic order blocks derived from significant volume and pivot points. Additionally, it highlights “whale” activities—periods of exceptionally large volume—along with an estimated volume profile level and approximate bid/ask volume distribution. Together, these features aim to offer traders a more comprehensive view of price structure, volatility, and institutional participation.
This custom TradingView indicator integrates multiple trading concepts into a single, visually descriptive tool. Its primary goal is to help traders identify directional bias, volatility levels, significant volume events, and potential support/resistance zones on a price chart. Below are the main components and their functionalities:
SuperTrend-Like Line (Trend Bias):
At the core of the indicator is a trend-following line inspired by the SuperTrend concept, which uses Average True Range (ATR) to adaptively set trailing stop levels. By comparing price to these levels, the line attempts to indicate when the market is in an uptrend (price above the line) or a downtrend (price below the line). The shifting levels can provide a dynamic sense of direction and help traders stay with the predominant trend until it shifts.
Keltner Channels (Volatility and Range):
Keltner Channels, based on an exponential moving average and Average True Range, form volatility-based envelopes around price. They help traders visualize whether price is extended (touching or moving outside the upper/lower band) or trading within a stable range. This can be useful in identifying low-volatility consolidations and high-volatility breakouts.
Dynamic Order Blocks (Approximations of Supply/Demand Zones):
By detecting pivot highs and lows under conditions of significant volume, the indicator approximates "order blocks." Order blocks are areas where institutional buying or selling may have occurred, potentially acting as future support or resistance zones. Although these approximations are not perfect, they offer a visual cue to areas on the chart where price might react strongly if revisited.
Volume Profile Proxy and Whale Detection:
The indicator highlights price levels associated with recent maximum volume activity, providing a rough "volume profile" reference. Such levels often become key points of price interaction.
"Whale" detection logic attempts to identify bars where exceptionally large volume occurs (beyond a defined threshold). By tracking these "whale bars," traders can infer where heavy participation—often from large traders or institutions—may influence market direction or create zones of interest.
Approximate Bid/Ask Volume and Dollar Volume Tracking:
The script estimates whether volume within each bar leans more towards the bid or the ask side, aiming to understand which participant (buyers or sellers) might have been more aggressive. Additionally, it calculates dollar volume (close price multiplied by volume) and provides an average to gauge the relative participation strength over time.
Labeling and Visual Aids:
Dynamic labels display Whale Frequency (the ratio of bars with exceptionally large volume), average dollar volume, and approximate ask/bid volume metrics. This gives traders at-a-glance insights into current market conditions, participation, and sentiment.
Strengths:
Multifaceted Analysis:
By combining trend, volatility, volume, and order block logic in one place, the indicator saves chart space and simplifies the analytical process. Traders gain a holistic view without flipping between multiple separate tools.
Adaptable to Market Conditions:
The use of ATR and Keltner Channels adapts to changing volatility conditions. The SuperTrend-like line helps keep traders aligned with the prevailing trend, avoiding constant whipsaws in choppy markets.
Volume-Based Insights:
Integrating whale detection and a crude volume profile proxy helps traders understand where large players might be interacting. This perspective can highlight critical levels that might not be evident from price action alone.
Convenient Visual Cues and Labels:
The indicator provides quick reference points and textual information about the underlying volume dynamics, making decision-making potentially faster and more informed.
Weaknesses:
Heuristic and Approximate Nature:
Many of the indicator’s features, like the "order blocks," "whale detection," and the approximate bid/ask volume, rely on heuristics and assumptions that may not always be accurate. Without actual Level II data or true volume profiles, the insights are best considered as supplementary, not definitive signals.
Lagging Components:
Indicators that rely on past data, like ATR-based trends or moving averages for Keltner Channels, inherently lag behind price. This can cause delayed signals, particularly in fast-moving markets, potentially missing some early opportunities or late in confirming market reversals.
No Guaranteed Predictive Power:
As with any technical tool, it does not forecast the future with certainty. Strong volume at a certain level or a bullish SuperTrend reading does not guarantee price will continue in that direction. Market conditions can change unexpectedly, and false signals will occur.
Complexity and Overreliance Risk:
With multiple signals combined, there’s a risk of information overload. Traders might feel compelled to rely too heavily on this one tool. Without complementary analysis (fundamentals, news, or additional technical confirmation), overreliance on the indicator could lead to misguided trades.
Conclusion:
This integrated indicator offers a comprehensive visual guide to market structure, volatility, and activity. Its strength lies in providing a multi-dimensional viewpoint in a single tool. However, traders should remain aware of its approximations, inherent lags, and the potential for conflicting signals. Sound risk management, position sizing, and the use of complementary analysis methods remain essential for trading success.
Risks Associated with Trading:
No indicator can guarantee profitable trades or accurately predict future price movements. Market conditions are inherently unpredictable, and reliance on any single tool or combination of tools carries the risk of financial loss. Traders should practice sound risk management, including the use of stop losses and position sizing, and should not trade with funds they cannot afford to lose. Ultimately, decisions should be guided by a thorough trading plan and possibly supplemented with other forms of market analysis or professional advice.
Risks and Important Considerations:
• Not a Standalone Tool:
• This indicator should not be used in isolation. It is essential to incorporate additional technical analysis tools, fundamental analysis, and market context when making trading decisions.
• Relying solely on this indicator may lead to incomplete assessments of market conditions.
• Market Volatility and False Signals:
• Financial markets can be highly volatile, and indicators based on historical data may not accurately predict future movements.
• The indicator may produce false signals due to sudden market changes, low liquidity, or atypical trading activity.
• Risk Management:
• Always employ robust risk management strategies, including setting stop-loss orders, diversifying your portfolio, and not over-leveraging positions.
• Understand that no indicator guarantees success, and losses are a natural part of trading.
• Emotional Discipline:
• Avoid making impulsive decisions based on indicator signals alone.
• Emotional trading can lead to significant financial losses; maintain discipline and adhere to a well-thought-out trading plan.
• Continuous Learning and Adaptation:
• Stay informed about market news, economic indicators, and global events that may impact trading conditions.
• Continuously evaluate and adjust your trading strategies as market dynamics evolve.
• Consultation with Professionals:
• Consider seeking advice from financial advisors or professional traders to understand better how this indicator can fit into your overall trading strategy.
• Professional guidance can provide personalized insights based on your financial goals and risk tolerance.
Disclaimer:
Trading financial instruments involves substantial risk and may not be suitable for all investors. Past performance is not indicative of future results. This indicator is provided for informational and educational purposes only and should not be considered investment advice. Always conduct your own research and consult with a licensed financial professional before making any trading decisions.
Note: The effectiveness of any technical indicator can vary based on market conditions and individual trading styles. It's crucial to test indicators thoroughly using historical data and possibly paper trading before applying them in live trading scenarios.
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.
Newday_smaThis algorithm is based on SMA (Simple Moving Average) to identify price trends, detecting "positive price zones" (where the price is above the SMA) and "negative price zones" (where the price is below the SMA), and then connecting turning points within those zones with lines.
Key Steps:
SMA Period Selection: The user can select the SMA period to be 5, 10, or 20.
SMA Calculation: The SMA of the current price is calculated based on the selected period.
Identify Positive and Negative Price Zones:
Positive Price Zone: When the closing price is higher than the SMA, it’s considered a positive price zone.
Negative Price Zone: When the closing price is lower than the SMA, it’s considered a negative price zone.
Identify Turning Points:
In the positive price zone, if the current closing price falls below the SMA, a potential turning point is detected, and the algorithm looks for the lowest point (the lowest high in that zone).
In the negative price zone, if the current closing price rises above the SMA, a potential turning point is detected, and the algorithm looks for the highest point (the highest low in that zone).
Connect the Turning Points:
When transitioning from the negative price zone to the positive price zone, a line is drawn from the lowest point of the negative zone to the highest point of the positive zone.
When transitioning from the positive price zone to the negative price zone, a line is drawn from the highest point of the positive zone to the lowest point of the negative zone.
Dynamic Updates: As new candles form, the algorithm continuously updates the turning points and draws the lines accordingly.
Key Features:
Flexible SMA Period Selection: The user can choose from different SMA periods (5, 10, or 20).
Dynamic Turning Point Recognition: The algorithm dynamically identifies turning points based on the relationship between the price and the SMA, marking fluctuations in price.
Connecting Turning Points: The algorithm connects the key points in positive and negative price zones with lines to help identify price trends.
Use Cases:
This algorithm is useful for technical analysis, especially for short-term trading.
It helps identify support and resistance levels, assisting users in making buy and sell decisions.