Volatilité
Period Range AnalyzerThis indicator analyzes a specific periodic range, which can start from a fixed date or a defined lookback period. It draws percentage levels and colored zones between the highest and lowest price. It also displays a detailed information table, which shows the price's position within the range in "Trend" mode, and the relative strength of currency pairs in "Forex" mode. The current price position is also indicated by a label with a percentage value and the name of the corresponding zone.
User Guide
Calculation Method
This setting determines how the indicator defines the range used for the calculation.
Lookback Period: In this mode, the indicator uses the last N candles (the number can be specified in the "Lookback Period (bars)" field). The range (the highest and lowest price) is "floating," meaning it is recalculated with each new candle based on the last N candles.
Date Based: In this mode, the calculation starts from a fixed date and time you select. The indicator finds the opening price of the start date and continuously tracks the highest and lowest price from that point on. This mode is ideal for measuring performance from a specific event (e.g., start of a week/month/year, news).
Data Handling Note: If you select a date in "Date Based" mode for which no data is available on the current timeframe (e.g., switching to a very low timeframe), the indicator will automatically use the earliest available candle as the starting point. All calculations (Open, Max, Min, Range, Percentage, Change, Trend) are based on this actual start date.
Start Date & Time
This setting is only active in "Date Based" mode.
Here you can specify the fixed starting point for the calculation.
The specified time is in the Exchange timezone.
Important limitation: Due to TradingView platform limits, visual elements (levels, zones) are only drawn for a maximum of 250 candles back. If the set date is older than this, the calculation still applies to the entire period (from the set date), but the drawing only covers the last 250 candles. The table always displays accurate data for the entire period.
When switching to a higher timeframe, the range may restart from a slightly later bar due to TradingView's bar alignment. For best accuracy, set your timeframe first, then select the start date.
Table Mode
This setting controls what data the information table displays.
Trend: This is the default mode, which works on any symbol (stock, index, crypto, etc.). It displays information related to the trend and the range.
Forex: This is a special mode used to measure the strength of currency and crypto pairs. It only works on symbols with exactly 6 characters (e.g., "EURUSD", "BTCUSD"). It treats the first 3 characters as the base currency (e.g., EUR) and the last 3 as the quote currency (e.g., USD). If the symbol does not have 6 characters, the table will automatically display in "Trend" mode.
Trend
This trend determination operates based on the formation order of the high and low within the analyzed range:
Its switch is located in the “Table Additional Rows” menu.
Bullish: Indicated if the low was formed before the high (on different candles). Or if they formed on the same candle, it was a bullish candle.
Bearish: Indicated if the high was formed before the low (on different candles). Or if they formed on the same candle, it was a bearish candle.
Neutral: Indicated if the high and low formed on the same candle, and it was a "doji" candle (close = open).
Upper & Lower Threshold
These settings (Upper Threshold (%) and Lower Threshold (%) in the "Label Coloring" section) primarily determine the state (Bullish/Bearish/Neutral) of the top row of the table.
The logic is not based on the percentage change of the price movement, but on the current price's position within the range, where the bottom of the range is 0% and the top is 100%.
Upper Threshold (%): The percentage level (e.g., 60.0) above which the indicator considers the price position "Bullish" (or "Strong").
Lower Threshold (%): The percentage level (e.g., 40.0) below which the indicator considers the price position "Bearish" (or "Weak").
If the price is between the two (e.g., between 40% and 60%), the signal is Neutral.
Secondary function: These thresholds also control the color of the label next to the price, provided the "Dynamic Label Coloring" option is enabled.
SMC ORB vs Pre-Market SPY/IWMStacks institutional confluences such as Smart Money Concepts, Inner Circle Trading, volatility, and structure.
Plots Premarket high/low and 15 minute Opening range
Plots the first sweep of Premarket high/low and any subsequent orb breaks
SMC ORB vs PM ALPHADesigned to stack institutional confluences such as Smart Money Concepts, Inner Circle Trading, volatility, and market structure.
Plots pre-market high/low and 15 Opening Range.
Plots first sweep of Pre-market high/low as well as orb break/holds.
TP of Previous high/low & SL optional
KD-NewAutoTrade for Future Trading - Heikin Ashi candles The KD-NewAutoTrade strategy is a dynamic trend-following indicator designed for scalping and swing trading across crypto, forex, and index futures. It combines the precision of EMA crossovers, RSI momentum, and ADX trend strength to deliver clear Buy/Sell signals with high reliability.
🔹 Core Logic
EMA Fast & Slow Crossover – Identifies short-term and long-term trend shifts.
RSI Confirmation – Filters out false signals by requiring RSI to cross custom Buy/Sell thresholds.
ADX Filter – Ensures trades only trigger when market trend strength exceeds your chosen ADX minimum.
🔹 Key Features
Visual Buy/Sell triangles directly on the chart.
Customizable inputs for EMA, RSI, and ADX lengths.
Works efficiently on all timeframes and all markets (Crypto, Indices, Stocks, Commodities).
Optional background highlights for active trade zones.
Alert conditions for both BUY and SELL setups – ready to use in automated strategies or alert bots.
🔹 Recommended Usage
Use Heikin Ashi candles
Works best on 1M - 5M timeframes.
Combine with volume or higher-timeframe trend confirmation for stronger signals.
ATM Pulse (Arjo)ATM Pulse (Arjo) — Real-Time ATM Options Sentiment & Trend Strength Indicator
Overview
ATM Pulse (Arjo) is an options analytics and trend overlay tool that automatically detects the At-The-Money (ATM) strike for NIFTY, BANKNIFTY , or any selected stock.
It merges Call–Put Volume Ratio (CPVR) sentiment analysis with a Chandelier Exit trend overlay to help traders visualize both market bias and trend direction in a single chart.
Concepts & Logic
ATM Auto Detection
The script calculates the current ATM strike by rounding the underlying’s price to the nearest strike interval (e.g., 50 for NIFTY, 100 for BANKNIFTY). It then requests live option-chain data for that strike.
Call–Put Volume Ratio (CPVR)
The Call-Put Volume Ratio (CPVR) is calculated as the call volume divided by the put volume.
CPVR > 1.25 → Bullish dominance (Calls stronger)
CPVR < 0.75 → Bearish dominance (Puts stronger)
0.75–1.25 → Neutral sentiment
This ratio helps interpret real-time option-market positioning.
Chandelier Exit Trend Overlay
Using Average True Range (ATR) , the overlay plots dynamic trailing stops and visual trend zones:
🟢 Green: Uptrend continuation zone
🔴 Red: Downtrend continuation zone
A color change signals possible momentum reversal.
Combination of CPVR and Chandelier Exit
CPVR gauges option-market sentiment
Chandelier Exit confirms price-action direction
When both align (e.g., bullish CPVR + green Chandelier zone), it strengthens directional conviction. Divergent readings may signal indecision or early reversals.
How to Use
Open any NIFTY, BANKNIFTY , or stocks chart.
Add ATM Pulse (Arjo) to the chart.
Select your expiry date — the script auto-detects the ATM strike and displays:
C: Call LTP
P: Put LTP
CPVR: Call/Put Volume Ratio label
Watch the Chandelier Exit colors:
🟢 Green = Bullish trend
🔴 Red = Bearish trend
Combine CPVR bias + trend color for confirmation.
If CPVR is above 1.25 and trend color green → More bullish activity (Calls stronger).
If CPVR is below 0.75, and trend color red→ More bearish activity (Puts stronger).
If CPVR is between 0.75 and 1.25 and the trend color is gray/mixed → Neutral
Practical Use Case
The script continuously updates the ATM strike, CPVR , and trend overlay in real time.
It provides a clear visual snapshot of how option volumes align with price momentum , ideal for intraday or short-term directional traders.
Disclaimer
This tool is for educational and analytical purposes only.
It does not provide financial advice or guaranteed trading signals.
Happy Trading. ARJO
Range Percentage Analyzer This indicator is a tool for analyzing the market range and trend. It calculates the extent of price movement between a specified starting point and the current price, displaying it as a percentage.
The calculation can be based on a fixed lookback period (e.g., the last 30 candles) or from a fixed start date. It also provides a clear table that shows the general trend in "Trend" mode, and the relative strength of the base and quote currencies of forex pairs (e.g., EURUSD) in "Forex" mode.
User Guide
Calculation Method
This setting determines how the indicator defines the starting point for the calculation.
Lookback Period: In this mode, the indicator uses the last N candles (the number can be specified in the "Lookback Period (bars)" field, maximum 250).
The starting point is "floating," meaning it shifts with each new candle. For example, with a setting of 30, the 30th candle from the current one will always be the starting point.
Date Based: In this mode, the calculation starts from a fixed date and time you select.
This mode is ideal for measuring performance from a specific event (e.g., news, start of a week/month).
Note: If you select a date in "Date Based" mode for which no data is available on the current timeframe (e.g., switching to a very low timeframe), the indicator will automatically use the earliest available candle as the starting point.
Start Date & Time
This setting is only active in "Date Based" mode.
Here you can specify the fixed starting point for the calculation.
The specified time is in the Exchange timezone.
Important limitation: Due to TradingView platform limits, visual elements (box, line) are only drawn for a maximum of 250 candles back.
If the set date is older than this, the calculation still applies to the entire period (from the set date), but the drawing only covers the last 250 candles.
When switching to a higher timeframe, the range may restart from a slightly later bar due to TradingView's bar alignment. For best accuracy, set your timeframe first, then select the start date.
Table Mode
This setting controls what data the information table displays.
Trend: This is the default mode, which works on any symbol (stock, index, crypto, etc.). It displays information related to the trend.
Forex: This is a special mode used to measure the strength of currency pairs.
It only works on symbols with exactly 6 characters (e.g., "EURUSD", "BTCUSD"). It treats the first 3 characters as the base currency (e.g., EUR) and the last 3 as the quote currency (e.g., USD).
If the symbol does not have 6 characters, the table will automatically display in "Trend" mode.
Extremes Trend Row
If this is enabled, the table displays an additional row that determines the trend based on the formation order of the high and low within the analyzed range.
The logic is as follows:
Bullish: Indicated if the low was formed before the high.
(Or if they formed on the same candle, which was a bullish candle).
Bearish: Indicated if the high was formed before the low.
(Or if they formed on the same candle, which was a bearish candle).
Neutral: Indicated if the high and low formed on the same candle, and it was a "doji" candle (close = open).
Upper & Lower Threshold
These settings control the logic for the "Change Trend" and "Forex Display" rows at the top of the table.
They determine when the total percentage change for the entire period is considered "Bullish/Strong", "Bearish/Weak", or "Neutral".
Upper Threshold (%): The percentage value (default 0.1%) above which the indicator considers the change "Bullish/Strong".
Lower Threshold (%): The percentage value (default -0.1%) below which the indicator considers the change "Bearish/Weak".
If the change is between the two, the signal is Neutral.
Directional Strength and Momentum Index█ OVERVIEW
“Directional Strength and Momentum Index” (DSMI) is a technical analysis indicator inspired by DMI, but due to different source data, it produces distinct results. DSMI combines direction measurement, trend strength, and overheat levels into a single index, enhanced with gradient fills, extreme zones, entry signals, candle coloring, and a summary table.
█ CONCEPT
The classic DMI, despite its relatively simple logic, can seem somewhat chaotic due to separate +DI and -DI lines and the need for manual interpretation of their relationships. The DSMI indicator was created to increase clarity and speed up results, consolidating key information into a single index from 0 to 100 that simultaneously:
- Indicates trend direction (bullish/bearish)
- Measures movement strength
- Identifies overheat levels
- Generates ready entry signals
DMI (ADX + +DI / -DI) measures trend direction and strength, but does so based solely on comparing price movements between candles. ADX shows whether the trend is orderly and growing (e.g., above 20–30), but does not assess how dynamic the movement is.
DSMI, on the other hand, takes into account candle size and actual market aggression, thus showing directional momentum — whether the trend has real “fuel” to sustain or accelerate, not just whether it is orderly.
The main calculation difference involves replacing True Range with candle size (high-low) and using directional EMA instead of Wilder smoothing. This allows DSMI to react faster to momentum changes, eliminating delays typical of classic DMI based on TR.
This gives the trader an immediate picture of the market situation without analyzing multiple lines.
█ FEATURES
DSMI Main Line:
- EMA(Directional Index) based on +DS and -DS
- Scale 0–100, smooth color gradient depending on strength
+DS / -DS:
- Positive and Negative Directional Strength
- Gradient fill between lines — more intense with stronger trend
Extreme Zones:
- Default 20 and 80
- Gradient fill outside zones
Trend Strength Levels:
- Weak (<10) → neutral
- Moderate (up to 35)
- Strong (up to 45)
- Overheated (up to 55)
- Extreme (>55)
All levels editable
Entry Signals:
- Activated on crossing entry level (default 20)
Or on direction change when DSMI already ≥ entry level
- Highlighted background (green/red)
Candle Coloring:
- According to current trend
Trend Strength Table:
- Top-right corner
- Shows current strength (WEAK/STRONG etc.) + DSMI value
Alerts:
- DSMI Bullish Entry
- DSMI Bearish Entry
█ HOW TO USE
Add to Chart: Paste code in Pine Editor or find in indicator library.
Settings:
DSMI Parameters:
- DSMI Period → default 20
- Show DSMI Line → on/off
Extreme Zones:
- Lower Level → default 20
- Upper Level → default 80
Trend Strength Levels:
- Weak, Moderate, Strong, Overheated → adjust to strategy
Trend Colors:
- BULLISH → default green
- BEARISH → default red
- NEUTRAL → gray
Entry Signals:
- Show Highlight → on/off
- DSMI Entry Level → default 20
Signal Interpretation:
- DSMI Line: Main strength indicator.
- Gradient between +DS and -DS: Visualizes side dominance.
- Crossing 18 with direction confirmation → entry signal.
- Extreme Zones: Potential reversal or continuation points after correction.
- Table: Quick overview of current trend condition.
█ APPLICATIONS
The indicator works well in:
- Trend-following: Enter on signal, exit on direction change or overheat. When a new trend appears, consider entering a position, preferably with a rising trend strength indicator.
- Scalping/daytrading: Shorter period (7–10), lower entry level.
- Swing/position: Longer period (20–30), higher entry level, extreme zones as filters.
- Noise filtering: Ignores consolidation below “Weak” – increasing value e.g. to 15 highlights consolidation zones, but no signals appear there.
Style Adjustment:
- Aggressive strategies → shorten period and entry level
- Conservative → extend period, raise entry level (25–30), watch “Overheated”
“Weak” level (<10 default) → neutral; increasing it e.g. to 15 gives fewer but higher-quality signals. The Weak zone value controls the level below which no signals appear, and the gradient turns gray (often aligned with consolidation zones).
Combine with:
- Support/resistance levels
- Fair Value Gaps (FVG)
- Volume (Volume Profile, VWAP)
- Other oscillators (RSI, Stochastic)
█ NOTES
- Works on all markets and timeframes.
- Adjust period and levels to instrument volatility.
- Higher entry level → fewer signals, higher quality.
- Neutral color below “Weak” – avoids trading in consolidation.
- Gradient and table enable quick assessment without line analysis.
Williams AD + MA“I’ve added an MA to the Williams Accumulation/Distribution (AD) indicator. You can use it to infer potential trend inflection points and to assess the persistence of the trend.”
VWAP Reversion (Sequential Stats + Profit/Loss Points)First time posting. This is my attempt to evaluate the effectiveness of VWAP reversion. I decided to make this an indicator with its own integrated stats.
If you set the session length to lets say 100, but choose a 1 minute timeframe, it will only load as many sessions as the chart will allow for that timeframe. increasing the timeframe will allow you to go back further with more sessions.
I plan to implement more and more as I refine it. I just wanted to get my working copy out into the universe. I'd like to add some method of "scaling in". Perhaps if the price goes further and further away from the original entry, say for each additional std. deviation band further, it could add another entry signal.
My trading journey is just beginning, I've never coded before, and this was made entirely through the fusion of my attempt to communicate the ideas in my head for ChatGPT to turn into code!
NSR - Dynamic Linear Regression ChannelOverview
The NSR - Dynamic Linear Regression Channel is a powerful overlay indicator that plots a dynamic regression-based channel around price action. Unlike static channels, this tool continuously recalculates the linear regression trendline from a user-defined starting point and builds upper and lower boundaries using a combination of standard deviation and maximum price deviations (highs/lows).
It visually separates "Premium" (overvalued) and "Discount" (undervalued) zones relative to the regression trend — ideal for mean-reversion, breakout, or trend-following strategies.
Key Features
Dynamic Regression Line Calculates slope, intercept, and average using full lookback from a reset point.
Adaptive Channel Width Combines standard deviation of residuals with max high/low deviations for robust boundaries.
Auto-Reset on Breakout Channel resets when price closes beyond upper/lower band twice in direction of trend .
Visual Zones Blue shaded = Premium (resistance zone)
Red shaded = Discount (support zone)
Real-Time Updates Live channel extends with each bar; historical channels preserved on reset.
How It Works
Regression Calculation
Uses all bars since last reset to compute the best-fit line:
y = intercept + slope × bar_position
Deviation Bands
Statistical : Standard deviation of price from regression line
Structural : Maximum distance from highs to line (upper) and lows to line (lower)
Final band = Regression Line ± (Deviation Input × StdDev)
Channel Reset Logic
Resets when:
Price closes above upper band twice in an uptrend (slope > 0)
OR closes below lower band twice in a downtrend (slope < 0)
Prevents overextension and adapts to new trends.
Visual Output
Active channel updates in real-time
Completed channels saved as historical reference (up to 500 lines/boxes)
Input Parameters
Deviation (2.0) - Multiplier for standard deviation to set channel width
Premium Color - blue color for upper (resistance) zone
Discount Color - red color for lower (support) zone
Best Use Cases
Mean Reversion - Buy near lower band in uptrend, sell near upper band
Breakout Trading - Enter on confirmed close beyond band + volume
Trend Confirmation - Use slope direction + price position in channel
Stop Loss / Take Profit - Place stops beyond opposite band
Pro Tips
Use on higher timeframes (4H, Daily) for cleaner regression fits
Combine with volume or momentum to filter false breakouts
Lower Deviation (e.g., 1.5) for tighter, more responsive channels
Watch channel resets — they often mark significant trend shifts
Why Use DLRC?
"Most channels are static. This one evolves with the market."
The NSR-DLRC gives you a mathematically sound, visually intuitive way to see:
Where price should be (regression)
Where it has been (deviation extremes)
When the trend is breaking structure
Perfect for traders who want regression-based precision without rigid assumptions.
Add to chart → Watch price dance within the evolving trend corridor.
MIG and MC 发布简介(中文)
MIG and MC 指标帮助日内交易者快速识别微型缺口(Micro Gap)与微型通道(Micro Channel)。脚本支持过滤开盘跳空、合并连续缺口,并自动绘制
FPL(Fair Price Line)延伸线,既可追踪缺口是否被填补,也能直观标注潜在的趋势结构。为了确保跨周期一致性,最新版本对开盘前后和跨日场景做了专门处理
主要特性
- 自动检测并显示看涨/看跌微型缺口,支持按需合并连续缺口。
- 自定义是否忽略开盘缺口、缺口显示范围与 FPL 样式。
- FPL 触及后即停止延伸,辅助研判缺口是否真正回补。
- 内置强收盘与缺口过滤的微型通道识别,可选多种严格程度。
- 适用于 1/5/9 分钟等日内周期,也适用于更长周期。
Recommended English Description
The MIG and MC indicator highlights Micro Gaps and Micro Channels so you can track true intraday imbalances without noise. It merges
consecutive gaps, projects Fair Price Lines (FPL) that stop once touched, and offers a full intraday-ready opening-gap filter so your
early bars stay clean. The latest update refines cross-session handling, giving reliable gap plots on 1-, 5-, and 9-minute charts as well as higher time frames.
Key Features
- Detects bullish and bearish micro gaps with optional gap merging.
- Toggle opening-gap filters and configure look back, visibility, and FPL style.
- FPL lines stop as soon as price revisits the gap, making gap closure obvious.
- Micro Channel mode uses strong-close and gap filters to mark high-quality trend legs.
- Consistent behavior across intraday and higher time frames.
Machine Learning Moving Average [BackQuant]Machine Learning Moving Average
A powerful tool combining clustering, pseudo-machine learning, and adaptive prediction, enabling traders to understand and react to price behavior across multiple market regimes (Bullish, Neutral, Bearish). This script uses a dynamic clustering approach based on percentile thresholds and calculates an adaptive moving average, ideal for forecasting price movements with enhanced confidence levels.
What is Percentile Clustering?
Percentile clustering is a method that sorts and categorizes data into distinct groups based on its statistical distribution. In this script, the clustering process relies on the percentile values of a composite feature (based on technical indicators like RSI, CCI, ATR, etc.). By identifying key thresholds (lower and upper percentiles), the script assigns each data point (price movement) to a cluster (Bullish, Neutral, or Bearish), based on its proximity to these thresholds.
This approach mimics aspects of machine learning, where we “train” the model on past price behavior to predict future movements. The key difference is that this is not true machine learning; rather, it uses data-driven statistical techniques to "cluster" the market into patterns.
Why Percentile Clustering is Useful
Clustering price data into meaningful patterns (Bullish, Neutral, Bearish) helps traders visualize how price behavior can be grouped over time.
By leveraging past price behavior and technical indicators, percentile clustering adapts dynamically to evolving market conditions.
It helps you understand whether price behavior today aligns with past bullish or bearish trends, improving market context.
Clusters can be used to predict upcoming market conditions by identifying regimes with high confidence, improving entry/exit timing.
What This Script Does
Clustering Based on Percentiles : The script uses historical price data and various technical features to compute a "composite feature" for each bar. This feature is then sorted and clustered based on predefined percentile thresholds (e.g., 10th percentile for lower, 90th percentile for upper).
Cluster-Based Prediction : Once clustered, the script uses a weighted average, cluster momentum, or regime transition model to predict future price behavior over a specified number of bars.
Dynamic Moving Average : The script calculates a machine-learning-inspired moving average (MLMA) based on the current cluster, adjusting its behavior according to the cluster regime (Bullish, Neutral, Bearish).
Adaptive Confidence Levels : Confidence in the predicted return is calculated based on the distance between the current value and the other clusters. The further it is from the next closest cluster, the higher the confidence.
Visual Cluster Mapping : The script visually highlights different clusters on the chart with distinct colors for Bullish, Neutral, and Bearish regimes, and plots the MLMA line.
Prediction Output : It projects the predicted price based on the selected method and shows both predicted price and confidence percentage for each prediction horizon.
Trend Identification : Using the clustering output, the script colors the bars based on the current cluster to reflect whether the market is trending Bullish (green), Bearish (red), or is Neutral (gray).
How Traders Use It
Predicting Price Movements : The script provides traders with an idea of where prices might go based on past market behavior. Traders can use this forecast for short-term and long-term predictions, guiding their trades.
Clustering for Regime Analysis : Traders can identify whether the market is in a Bullish, Neutral, or Bearish regime, using that information to adjust trading strategies.
Adaptive Moving Average for Trend Following : The adaptive moving average can be used as a trend-following indicator, helping traders stay in the market when it’s aligned with the current trend (Bullish or Bearish).
Entry/Exit Strategy : By understanding the current cluster and its associated trend, traders can time entries and exits with higher precision, taking advantage of favorable conditions when the confidence in the predicted price is high.
Confidence for Risk Management : The confidence level associated with the predicted returns allows traders to manage risk better. Higher confidence levels indicate stronger market conditions, which can lead to higher position sizes.
Pseudo Machine Learning Aspect
While the script does not use conventional machine learning models (e.g., neural networks or decision trees), it mimics certain aspects of machine learning in its approach. By using clustering and the dynamic adjustment of a moving average, the model learns from historical data to adjust predictions for future price behavior. The "learning" comes from how the script uses past price data (and technical indicators) to create patterns (clusters) and predict future market movements based on those patterns.
Why This Is Important for Traders
Understanding market regimes helps to adjust trading strategies in a way that adapts to current market conditions.
Forecasting price behavior provides an additional edge, enabling traders to time entries and exits based on predicted price movements.
By leveraging the clustering technique, traders can separate noise from signal, improving the reliability of trading signals.
The combination of clustering and predictive modeling in one tool reduces the complexity for traders, allowing them to focus on actionable insights rather than manual analysis.
How to Interpret the Output
Bullish (Green) Zone : When the price behavior clusters into the Bullish zone, expect upward price movement. The MLMA line will help confirm if the trend remains upward.
Bearish (Red) Zone : When the price behavior clusters into the Bearish zone, expect downward price movement. The MLMA line will assist in tracking any downward trends.
Neutral (Gray) Zone : A neutral market condition signals indecision or range-bound behavior. The MLMA line can help track any potential breakouts or trend reversals.
Predicted Price : The projected price is shown on the chart, based on the cluster's predicted behavior. This provides a useful reference for where the price might move in the near future.
Prediction Confidence : The confidence percentage helps you gauge the reliability of the predicted price. A higher percentage indicates stronger market confidence in the forecasted move.
Tips for Use
Combining with Other Indicators : Use the output of this indicator in combination with your existing strategy (e.g., RSI, MACD, or moving averages) to enhance signal accuracy.
Position Sizing with Confidence : Increase position size when the prediction confidence is high, and decrease size when it’s low, based on the confidence interval.
Regime-Based Strategy : Consider developing a multi-strategy approach where you use this tool for Bullish or Bearish regimes and a separate strategy for Neutral markets.
Optimization : Adjust the lookback period and percentile settings to optimize the clustering algorithm based on your asset’s characteristics.
Conclusion
The Machine Learning Moving Average offers a novel approach to price prediction by leveraging percentile clustering and a dynamically adapting moving average. While not a traditional machine learning model, this tool mimics the adaptive behavior of machine learning by adjusting to evolving market conditions, helping traders predict price movements and identify trends with improved confidence and accuracy.
RSI Overbought/Oversold + Divergence Indicator (new)//@version=5
indicator('CryptoSignalScanner - RSI Overbought/Oversold + Divergence Indicator (new)',
//---------------------------------------------------------------------------------------------------------------------------------
//--- Define Colors ---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
vWhite = #FFFFFF
vViolet = #C77DF3
vIndigo = #8A2BE2
vBlue = #009CDF
vGreen = #5EBD3E
vYellow = #FFB900
vRed = #E23838
longColor = color.green
shortColor = color.red
textColor = color.white
bullishColor = color.rgb(38,166,154,0) //Used in the display table
bearishColor = color.rgb(239,83,79,0) //Used in the display table
nomatchColor = color.silver //Used in the display table
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Functions--------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
TF2txt(TF) =>
switch TF
"S" => "RSI 1s:"
"5S" => "RSI 5s:"
"10S" => "RSI 10s:"
"15S" => "RSI 15s:"
"30S" => "RSI 30s"
"1" => "RSI 1m:"
"3" => "RSI 3m:"
"5" => "RSI 5m:"
"15" => "RSI 15m:"
"30" => "RSI 30m"
"45" => "RSI 45m"
"60" => "RSI 1h:"
"120" => "RSI 2h:"
"180" => "RSI 3h:"
"240" => "RSI 4h:"
"480" => "RSI 8h:"
"D" => "RSI 1D:"
"1D" => "RSI 1D:"
"2D" => "RSI 2D:"
"3D" => "RSI 2D:"
"3D" => "RSI 3W:"
"W" => "RSI 1W:"
"1W" => "RSI 1W:"
"M" => "RSI 1M:"
"1M" => "RSI 1M:"
"3M" => "RSI 3M:"
"6M" => "RSI 6M:"
"12M" => "RSI 12M:"
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Show/Hide Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowInput = input(true, title='Show RSI', group='Show/Hide Settings')
maShowInput = input(false, title='Show MA', group='Show/Hide Settings')
showRSIMAInput = input(true, title='Show RSIMA Cloud', group='Show/Hide Settings')
rsiBandShowInput = input(true, title='Show Oversold/Overbought Lines', group='Show/Hide Settings')
rsiBandExtShowInput = input(true, title='Show Oversold/Overbought Extended Lines', group='Show/Hide Settings')
rsiHighlightShowInput = input(true, title='Show Oversold/Overbought Highlight Lines', group='Show/Hide Settings')
DivergenceShowInput = input(true, title='Show RSI Divergence Labels', group='Show/Hide Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Table Settings --------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowTable = input(true, title='Show RSI Table Information box', group="RSI Table Settings")
rsiTablePosition = input.string(title='Location', defval='middle_right', options= , group="RSI Table Settings", inline='1')
rsiTextSize = input.string(title=' Size', defval='small', options= , group="RSI Table Settings", inline='1')
rsiShowTF1 = input(true, title='Show TimeFrame1', group="RSI Table Settings", inline='tf1')
rsiTF1 = input.timeframe("15", title=" Time", group="RSI Table Settings", inline='tf1')
rsiShowTF2 = input(true, title='Show TimeFrame2', group="RSI Table Settings", inline='tf2')
rsiTF2 = input.timeframe("60", title=" Time", group="RSI Table Settings", inline='tf2')
rsiShowTF3 = input(true, title='Show TimeFrame3', group="RSI Table Settings", inline='tf3')
rsiTF3 = input.timeframe("240", title=" Time", group="RSI Table Settings", inline='tf3')
rsiShowTF4 = input(true, title='Show TimeFrame4', group="RSI Table Settings", inline='tf4')
rsiTF4 = input.timeframe("D", title=" Time", group="RSI Table Settings", inline='tf4')
rsiShowHist = input(true, title='Show RSI Historical Columns', group="RSI Table Settings", tooltip='Show the information of the 2 previous closed candles')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Input Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiSourceInput = input.source(close, 'Source', group='RSI Settings')
rsiLengthInput = input.int(14, minval=1, title='RSI Length', group='RSI Settings', tooltip='Here we set the RSI lenght')
rsiColorInput = input.color(#26a69a, title="RSI Color", group='RSI Settings')
rsimaColorInput = input.color(#ef534f, title="RSIMA Color", group='RSI Settings')
rsiBandColorInput = input.color(#787B86, title="RSI Band Color", group='RSI Settings')
rsiUpperBandExtInput = input.int(title='RSI Overbought Extended Line', defval=80, minval=50, maxval=100, group='RSI Settings')
rsiUpperBandInput = input.int(title='RSI Overbought Line', defval=70, minval=50, maxval=100, group='RSI Settings')
rsiLowerBandInput = input.int(title='RSI Oversold Line', defval=30, minval=0, maxval=50, group='RSI Settings')
rsiLowerBandExtInput = input.int(title='RSI Oversold Extended Line', defval=20, minval=0, maxval=50, group='RSI Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Input Settings -----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
maTypeInput = input.string("EMA", title="MA Type", options= , group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
maColorInput = input.color(color.yellow, title="MA Color", group='MA Settings') //#7E57C2
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Input Settings ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
lbrInput = input(title="Pivot Lookback Right", defval=2, group='RSI Divergence Settings')
lblInput = input(title="Pivot Lookback Left", defval=2, group='RSI Divergence Settings')
lbRangeMaxInput = input(title="Max of Lookback Range", defval=10, group='RSI Divergence Settings')
lbRangeMinInput = input(title="Min of Lookback Range", defval=2, group='RSI Divergence Settings')
plotBullInput = input(title="Plot Bullish", defval=true, group='RSI Divergence Settings')
plotHiddenBullInput = input(title="Plot Hidden Bullish", defval=true, group='RSI Divergence Settings')
plotBearInput = input(title="Plot Bearish", defval=true, group='RSI Divergence Settings')
plotHiddenBearInput = input(title="Plot Hidden Bearish", defval=true, group='RSI Divergence Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
rsiprevious = rsi
= request.security(syminfo.tickerid, rsiTF1, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF2, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF3, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF4, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiMA = ma(rsi, maLengthInput, maTypeInput)
rsiMAPrevious = rsiMA
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Stoch RSI Settings + Calculation --------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
showStochRSI = input(false, title="Show Stochastic RSI", group='Stochastic RSI Settings')
smoothK = input.int(title="Stochastic K", defval=3, minval=1, maxval=10, group='Stochastic RSI Settings')
smoothD = input.int(title="Stochastic D", defval=4, minval=1, maxval=10, group='Stochastic RSI Settings')
lengthRSI = input.int(title="Stochastic RSI Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
lengthStoch = input.int(title="Stochastic Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
colorK = input.color(color.rgb(41,98,255,0), title="K Color", group='Stochastic RSI Settings', inline="1")
colorD = input.color(color.rgb(205,109,0,0), title="D Color", group='Stochastic RSI Settings', inline="1")
StochRSI = ta.rsi(rsiSourceInput, lengthRSI)
k = ta.sma(ta.stoch(StochRSI, StochRSI, StochRSI, lengthStoch), smoothK) //Blue Line
d = ta.sma(k, smoothD) //Red Line
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Settings ------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 50)
hiddenBearColor = color.new(color.red, 50)
//textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi
plFound = na(ta.pivotlow(osc, lblInput, lbrInput)) ? false : true
phFound = na(ta.pivothigh(osc, lblInput, lbrInput)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
lbRangeMinInput <= bars and bars <= lbRangeMaxInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define Plot & Line Colors ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiColor = rsi >= rsiMA ? rsiColorInput : rsimaColorInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Lines ------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Create a horizontal line at a specific price level
myLine = line.new(bar_index , 75, bar_index, 75, color = color.rgb(187, 14, 14), width = 2)
bottom = line.new(bar_index , 50, bar_index, 50, color = color.rgb(223, 226, 28), width = 2)
mymainLine = line.new(bar_index , 60, bar_index, 60, color = color.rgb(13, 154, 10), width = 3)
hline(50, title='RSI Baseline', color=color.new(rsiBandColorInput, 50), linestyle=hline.style_solid, editable=false)
hline(rsiBandExtShowInput ? rsiUpperBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiUpperBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiLowerBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandExtShowInput ? rsiLowerBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandExtInput ? color.new(rsiColorInput, 70) : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandInput ? rsi < rsiUpperBandExtInput ? color.new(#64ffda, 90) : na : na: na, title="Show Overbought Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? rsi > rsiLowerBandExtInput ? color.new(#F43E32, 90) : na : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? color.new(rsimaColorInput, 70) : na : na, title="Show Oversold Highlight", editable=false)
maPlot = plot(maShowInput ? rsiMA : na, title='MA', color=color.new(maColorInput,0), linewidth=1)
rsiMAPlot = plot(showRSIMAInput ? rsiMA : na, title="RSI EMA", color=color.new(rsimaColorInput,0), editable=false, display=display.none)
rsiPlot = plot(rsiShowInput ? rsi : na, title='RSI', color=color.new(rsiColor,0), linewidth=1)
fill(rsiPlot, rsiMAPlot, color=color.new(rsiColor, 60), title="RSIMA Cloud")
plot(showStochRSI ? k : na, title='Stochastic K', color=colorK, linewidth=1)
plot(showStochRSI ? d : na, title='Stochastic D', color=colorD, linewidth=1)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Divergence -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
oscHL = osc > ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Lower Low
priceLL = low < ta.valuewhen(plFound, low , 1)
bullCond = plotBullInput and priceLL and oscHL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor)
)
plotshape(
DivergenceShowInput ? bullCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bullish Label",
text=" Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc < ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Higher Low
priceHL = low > ta.valuewhen(plFound, low , 1)
hiddenBullCond = plotHiddenBullInput and priceHL and oscLL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Hidden Bullish",
linewidth=2,
color=(hiddenBullCond ? hiddenBullColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBullCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bullish Label",
text=" H Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
oscLH = osc < ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Higher High
priceHH = high > ta.valuewhen(phFound, high , 1)
bearCond = plotBearInput and priceHH and oscLH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor)
)
plotshape(
DivergenceShowInput ? bearCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bearish Label",
text=" Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc > ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Lower High
priceLH = high < ta.valuewhen(phFound, high , 1)
hiddenBearCond = plotHiddenBearInput and priceLH and oscHH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Hidden Bearish",
linewidth=2,
color=(hiddenBearCond ? hiddenBearColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBearCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bearish Label",
text=" H Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Check RSI Lineup ------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bullTF = rsi > rsi and rsi > rsi
bearTF = rsi < rsi and rsi < rsi
bullTF1 = rsi1 > rsi1_1 and rsi1_1 > rsi1_2
bearTF1 = rsi1 < rsi1_1 and rsi1_1 < rsi1_2
bullTF2 = rsi2 > rsi2_1 and rsi2_1 > rsi2_2
bearTF2 = rsi2 < rsi2_1 and rsi2_1 < rsi2_2
bullTF3 = rsi3 > rsi3_1 and rsi3_1 > rsi3_2
bearTF3 = rsi3 < rsi3_1 and rsi3_1 < rsi3_2
bullTF4 = rsi4 > rsi4_1 and rsi4_1 > rsi4_2
bearTF4 = rsi4 < rsi4_1 and rsi4_1 < rsi4_2
bbTxt(bull,bear) =>
bull ? "BULLISH" : bear ? "BEARISCH" : 'NO LINEUP'
bbColor(bull,bear) =>
bull ? bullishColor : bear ? bearishColor : nomatchColor
newTC(tBox, col, row, txt, width, txtColor, bgColor, txtHA, txtSize) =>
table.cell(table_id=tBox,column=col, row=row, text=txt, width=width,text_color=txtColor,bgcolor=bgColor, text_halign=txtHA, text_size=txtSize)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define RSI Table Setting ----------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
width_c0 = 0
width_c1 = 0
if rsiShowTable
var tBox = table.new(position=rsiTablePosition, columns=5, rows=6, bgcolor=color.rgb(18,22,33,50), frame_color=color.black, frame_width=1, border_color=color.black, border_width=1)
newTC(tBox, 0,1,"RSI Current",width_c0,color.orange,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,1,str.format(" {0,number,#.##} ", rsi),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,1,bbTxt(bullTF, bearTF),width_c0,vWhite,bbColor(bullTF, bearTF),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF1
newTC(tBox, 0,2,TF2txt(rsiTF1),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,2,str.format(" {0,number,#.##} ", rsi1),width_c0,vWhite,rsi1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,2,bbTxt(bullTF1, bearTF1),width_c0,vWhite,bbColor(bullTF1,bearTF1),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,2,str.format(" {0,number,#.##} ", rsi1_1),width_c0,vWhite,rsi1_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,2,str.format(" {0,number,#.##} ", rsi1_2),width_c0,vWhite,rsi1_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF2
newTC(tBox, 0,3,TF2txt(rsiTF2),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,3,str.format(" {0,number,#.##} ", rsi2),width_c0,vWhite,rsi2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,3,bbTxt(bullTF2, bearTF2),width_c0,vWhite,bbColor(bullTF2,bearTF2),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,3,str.format(" {0,number,#.##} ", rsi2_1),width_c0,vWhite,rsi2_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,3,str.format(" {0,number,#.##} ", rsi2_2),width_c0,vWhite,rsi2_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF3
newTC(tBox, 0,4,TF2txt(rsiTF3),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,4,str.format(" {0,number,#.##} ", rsi3),width_c0,vWhite,rsi3 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,4,bbTxt(bullTF3, bearTF3),width_c0,vWhite,bbColor(bullTF3,bearTF3),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,4,str.format(" {0,number,#.##} ", rsi3_1),width_c0,vWhite,rsi3_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,4,str.format(" {0,number,#.##} ", rsi3_2),width_c0,vWhite,rsi3_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF4
newTC(tBox, 0,5,TF2txt(rsiTF4),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,5,str.format(" {0,number,#.##} ", rsi4),width_c0,vWhite,rsi4 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,5,bbTxt(bullTF4, bearTF4),width_c0,vWhite,bbColor(bullTF4,bearTF4),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,5,str.format(" {0,number,#.##} ", rsi4_1),width_c0,vWhite,rsi4_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,5,str.format(" {0,number,#.##} ", rsi4_2),width_c0,vWhite,rsi4_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
//------------------------------------------------------
//--- Alerts -------------------------------------------
//------------------------------------------------------
Intraday Perpetual Premium & Z-ScoreThis indicator measures the real-time premium of a perpetual futures contract relative to its spot market and interprets it through a statistical lens.
It helps traders detect when funding pressure is building, when leverage is being unwound, and when crowding in the futures market may precede volatility.
How it works
• Premium (%) = (Perp – Spot) ÷ Spot × 100
The script fetches both spot and perpetual prices and calculates their percentage difference each minute.
• Rolling Mean & Z-Score
Over a 4-hour look-back, it computes the average premium and standard deviation to derive a Z-Score, showing how stretched current sentiment is.
• Dynamic ±2σ Bands highlight statistically extreme premiums or discounts.
• Rate of Change (ROC) over one hour gauges the short-term directional acceleration of funding flows.
Colour & Label Interpretation
Visual cue Meaning Trading Implication
🟢 Green bars + “BULL Pressure” Premium rising faster than mean Leverage inflows → momentum strengthening
🔴 Red bars + “BEAR Pressure” Premium shrinking Leverage unwind → pull-back or consolidation
⚠️ Orange “EXTREME Premium/Discount” Crowded trade → heightened reversal risk
⚪ Grey bars Neutral Balanced conditions
Alerts
• Bull Pressure Alert → funding & premium rising (momentum building)
• Bear Pressure Alert → premium falling (deleveraging)
• Extreme Premium Alert → crowded longs; potential top
• Extreme Discount Alert → capitulation; possible bottom
Use case
Combine this indicator with your Heikin-Ashi, RSI, and MACD confluence rules:
• Enter only when your oscillators are low → curling up and Bull Pressure triggers.
• Trim or exit when Bear Pressure or Extreme Premium appears.
• Watch for Extreme Discount during flushes as an early bottoming clue.
Simulated Fear & Greed (CNN-calibrated v2)🧭 Fear & Greed Index — TradingView Version (Simulated CNN Model)
🔍 Purpose
The Fear & Greed Index is a sentiment indicator that quantifies market emotion on a scale from 0 to 100, where:
0 represents Extreme Fear (capitulation, oversold conditions), and
100 represents Extreme Greed (euphoria, overbought conditions).
It helps traders assess whether the market is driven by fear (risk aversion) or greed (risk appetite) — giving a high-level view of potential turning points in market sentiment.
⚙️ How It Works in TradingView
Because TradingView cannot directly access CNN’s or alternative external sentiment feeds, this indicator simulates the Fear & Greed Index by analyzing in-chart technical data that reflect investor psychology.
It uses a multi-factor model, converting price and volume signals into a composite sentiment score.
🧩 Components Used (Simulated Metrics)
Category Metric Emotional Interpretation
Volatility ATR (Average True Range) High ATR = Fear, Low ATR = Greed
Momentum RSI + MACD Histogram Rising momentum = Greed, Falling = Fear
Volume Activity Volume Z-Score High positive deviation = Greed, Low = Fear
Trend Context SMA Regime Bias (50/200) Downtrend adds Fear penalty, Uptrend supports Greed
These elements are normalized into a 0–100 scale using percentile ranks (like statistical scoring) and then combined using user-adjustable weights.
⚖️ CNN-Style Calibration
The script follows CNN’s five sentiment bands for clarity:
Range Zone Colour Description
0–25 Extreme Fear 🔴 Red Panic, forced selling, capitulation risk
25–45 Fear 🟠 Orange Uncertainty, hesitation, early accumulation phase
45–55 Neutral ⚪ Gray Balanced sentiment, indecision
55–75 Greed 🟢 Light Green Optimism, trend continuation
75–100 Extreme Greed 💚 Bright Green Euphoria, risk of reversal
This structure aligns visually with CNN’s public gauge, making it easy to interpret.
Vandan V2Vandan V2 is an automated trading strategy for NQ1! (E-mini Nasdaq-100) based on short-term mean reversion with dynamic risk control. It combines volatility filters and overbought/oversold signals to capture local market imbalances.
Backtested from 2015 to 2025, it achieved a +730% total return, Profit Factor of 1.40, max drawdown of only 1.61%, and over 106,000 trades. Designed for systematic scalping or intraday arbitrage with a limit of 3 simultaneous contracts.
Accurate ATR Stop Loss Distance — Risk Management ToolAccurate ATR Stop Loss Distance — Risk Management Tool
This indicator calculates an accurate Stop Loss distance in pips using the Average True Range (ATR) multiplied by a user-defined multiplier.
It automatically detects the correct pip size based on the instrument type (Forex, Crypto, Stocks, Indices, Futures), adjusting for 2-, 3-, 4-, or 5-digit quotes — ensuring professional-grade precision that matches institutional ATR-based risk systems.
📊 Features:
Uses ATR × Multiplier to determine precise SL distance in pips.
Automatically adjusts pip value depending on the asset type (handles 5-digit Forex brokers).
Clean and minimal design — displays only one info box in the top-right corner.
Fully customizable text and background colors.
Includes alert condition for automated SL updates.
⚙️ How to use:
Set your preferred ATR period and multiplier.
The indicator instantly displays your Stop Loss distance in pips at the top-right of the chart.
Combine with your entry strategy to calculate lot size or risk per trade.
💡 Ideal for traders who want consistent, objective SL distances derived from volatility rather than arbitrary points or emotions.
Note: Educational and informational tool only. Does not execute trades or give financial advice.
Liquidity & Momentum Master (LMM)💎 Liquidity & Momentum Master (LMM)
A professional dual-system indicator that combines:
📦 High-Volume Support/Resistance Zones and
📊 RSI + Bollinger Band Combo Signals — to visualize both smart money footprints and momentum reversals in one clean tool.
🧱 1. High-Volume Liquidity Zones (Support/Resistance Boxes)
Conditions
Visible only on 1H and higher timeframes (1H, 4H, 1D, etc.)
Detects candles with abnormally high volume and strong ATR-based range
Separates bullish (support) and bearish (resistance) zones
Visualization
All boxes are white, with adjustable transparency (alphaW, alphaBorder)
Each box extends to the right automatically
Only the most important (Top-N) zones are kept — weaker ones are removed automatically
Interpretation
White boxes = price areas with heavy liquidity and volume concentration
Price approaching these zones often leads to bounces or rejections
Narrow spacing = consolidation, wide spacing = potential large move
💎 2. RSI Exit + BB-RSI Combo Signals
RSI Exit (Overbought/Oversold Recovery)
RSI drops from overbought (>70) → plots red “RSI” above the candle
RSI rises from oversold (<30) → plots green “RSI” below the candle
Works on 15m, 30m, 1H, 4H, 1D
→ Indicates short-term exhaustion recovery
BB-RSI Combo (Momentum Reversal Confirmation)
Active on 1H and higher only
Requires both:
✅ RSI divergence (bullish or bearish)
✅ Bollinger Band re-entry (after temporary breakout)
Combo Buy (Green Diamond)
Bullish RSI divergence
Candle closes back above lower Bollinger Band
Combo Sell (Red Diamond)
Bearish RSI divergence
Candle closes back below upper Bollinger Band
→ Confirms stronger reversal momentum compared to standard RSI signals
Dynamic Liquidity HeatMap Profile [BigBeluga]🔵 OVERVIEW
The Dynamic Liquidity HeatMap Profile is a smart-flow liquidity tracker that maps where stop-loss clusters and resting limit orders are likely positioned.
Instead of traditional volume profiles based only on executed transactions, this tool projects probable liquidity pools — areas where traders are trapped or positioned and where smart money may hunt stops or fill orders.
It dynamically scans recent price swings, builds liquidity zones above and below price, and visualizes them as a heat map + histogram — highlighting areas with the greatest liquidity attraction.
Orange highlights the highest-concentration liquidity (POC), making potential sweep targets obvious.
🔵 CONCEPTS
Liquidity pools form above swing highs (buy stops) and below swing lows (sell stops).
Market makers & large players often push price into these zones to trigger stops and capture liquidity.
The indicator uses recent volatility + volume expansion to estimate where these pools exist.
Horizontal heat bars show depth and intensity of probable liquidity.
Profile side histogram displays buy-side vs sell-side liquidity distribution.
🔵 FEATURES
Dynamic Liquidity Detection — finds potential stop-loss clusters from recent swing behavior.
Dual-Side Heatmap — split liquidity view above (short stops) and below (long stops) current price.
Volume-Weighted Levels — higher volatility & volume = deeper liquidity expectation.
Real-Time Heat Coloring
• Lime = liquidity below price (potential buy-side fuel)
• Blue = liquidity above price (potential sell-side fuel)
• Orange = peak liquidity (POC)
Liquidity Profile Histogram — plotted at right side, layered by strength.
Auto-Cleaning Engine — removes invalidated liquidity after breaks.
Adjustable lookback window and bin resolution .
🔵 HOW TO USE
Look for price moving toward dense liquidity zones — high probability of wick raids or sweeps.
Orange POC often acts as magnet — strong target zone for smart money.
Combine with SFP / BOS logic to time reversals after liquidity hunts.
In trend, price repeatedly sweeps opposite-side liquidity before continuation.
Use liquidity walls as bias filters — heavy liquidity above often precedes downward move, and vice-versa.
Great for scalping sessions, indices, FX, BTC, ETH.
🔵 CONCLUSION
The Dynamic Liquidity HeatMap Profile gives traders a tactical edge by revealing where the market’s hidden liquidity resides.
It highlights where shorts and longs are positioned, identifies likely sweep zones, and marks the most attractive liquidity magnet (POC).
Use it to anticipate stop hunts, avoid getting trapped, and align with smart-money flow instead of fighting it.
korea time with 200 korea time
start time
08
09
17
18
23
00
This script makes it easier to look at the charts
The time automatically displays even if you don't bother to bring the mouse by hand
Now you can see the time intuitively
Run a very happy trading session
Volumatic VIDYA – Pro+1. Professional & Clear (recommended for TradingView)
Volumatic VIDYA Pro+ combines a dynamic VIDYA trend filter, Delta Volume pressure, and automatic pattern recognition (Double/Triple Tops & Bottoms, Head & Shoulders).
A complete technical tool for detecting momentum shifts, trend reversals, and trade entries across multiple timeframes.
2. Short & Catchy
Adaptive VIDYA trendline + Delta Volume + Pattern detection in one tool.
Instantly visualize market bias, structure, and momentum strength.
3. Educational / Analytical
Analyze market dynamics with VIDYA-based trend filtering, volume delta analysis, and automated pattern recognition.
Ideal for traders who combine price action with quantitative confirmation.






















