ZigZag█ Overview
This Pine Script™ library provides a comprehensive implementation of the ZigZag indicator using advanced object-oriented programming techniques. It serves as a developer resource rather than a standalone indicator, enabling Pine Script™ programmers to incorporate sophisticated ZigZag calculations into their own scripts.
Pine Script™ libraries contain reusable code that can be imported into indicators, strategies, and other libraries. For more information, consult the Libraries section of the Pine Script™ User Manual.
█ About the Original
This library is based on TradingView's official ZigZag implementation .
The original code provides a solid foundation with user-defined types and methods for calculating ZigZag pivot points.
█ What is ZigZag?
The ZigZag indicator filters out minor price movements to highlight significant market trends.
It works by:
1. Identifying significant pivot points (local highs and lows)
2. Connecting these points with straight lines
3. Ignoring smaller price movements that fall below a specified threshold
Traders typically use ZigZag for:
- Trend confirmation
- Identifying support and resistance levels
- Pattern recognition (such as Elliott Waves)
- Filtering out market noise
The algorithm identifies pivot points by analyzing price action over a specified number of bars, then only changes direction when price movement exceeds a user-defined percentage threshold.
█ My Enhancements
This modified version extends the original library with several key improvements:
1. Support and Resistance Visualization
- Adds horizontal lines at pivot points
- Customizable line length (offset from pivot)
- Adjustable line width and color
- Option to extend lines to the right edge of the chart
2. Support and Resistance Zones
- Creates semi-transparent zone areas around pivot points
- Customizable width for better visibility of important price levels
- Separate colors for support (lows) and resistance (highs)
- Visual representation of price areas rather than just single lines
3. Zig Zag Lines
- Separate colors for upward and downward ZigZag movements
- Visually distinguishes between bullish and bearish price swings
- Customizable colors for text
- Width customization
4. Enhanced Settings Structure
- Added new fields to the Settings type to support the additional features
- Extended Pivot type with supportResistance and supportResistanceZone fields
- Comprehensive configuration options for visual elements
These enhancements make the ZigZag more useful for technical analysis by clearly highlighting support/resistance levels and zones, and providing clearer visual cues about market direction.
█ Technical Implementation
This library leverages Pine Script™'s user-defined types (UDTs) to create a robust object-oriented architecture:
- Settings : Stores configuration parameters for calculation and display
- Pivot : Represents pivot points with their visual elements and properties
- ZigZag : Manages the overall state and behavior of the indicator
The implementation follows best practices from the Pine Script™ User Manual's Style Guide and uses advanced language features like methods and object references. These UDTs represent Pine Script™'s most advanced feature set, enabling sophisticated data structures and improved code organization.
For newcomers to Pine Script™, it's recommended to understand the language fundamentals before working with the UDT implementation in this library.
█ Usage Example
//@version=6
indicator("ZigZag Example", overlay = true, shorttitle = 'ZZA', max_bars_back = 5000, max_lines_count = 500, max_labels_count = 500, max_boxes_count = 500)
import andre_007/ZigZag/1 as ZIG
var group_1 = "ZigZag Settings"
//@variable Draw Zig Zag on the chart.
bool showZigZag = input.bool(true, "Show Zig-Zag Lines", group = group_1, tooltip = "If checked, the Zig Zag will be drawn on the chart.", inline = "1")
// @variable The deviation percentage from the last local high or low required to form a new Zig Zag point.
float deviationInput = input.float(5.0, "Deviation (%)", minval = 0.00001, maxval = 100.0,
tooltip = "The minimum percentage deviation from a previous pivot point required to change the Zig Zag's direction.", group = group_1, inline = "2")
// @variable The number of bars required for pivot detection.
int depthInput = input.int(10, "Depth", minval = 1, tooltip = "The number of bars required for pivot point detection.", group = group_1, inline = "3")
// @variable registerPivot (series bool) Optional. If `true`, the function compares a detected pivot
// point's coordinates to the latest `Pivot` object's `end` chart point, then
// updates the latest `Pivot` instance or adds a new instance to the `ZigZag`
// object's `pivots` array. If `false`, it does not modify the `ZigZag` object's
// data. The default is `true`.
bool allowZigZagOnOneBarInput = input.bool(true, "Allow Zig Zag on One Bar", tooltip = "If checked, the Zig Zag calculation can register a pivot high and pivot low on the same bar.",
group = group_1, inline = "allowZigZagOnOneBar")
var group_2 = "Display Settings"
// @variable The color of the Zig Zag's lines (up).
color lineColorUpInput = input.color(color.green, "Line Colors for Up/Down", group = group_2, inline = "4")
// @variable The color of the Zig Zag's lines (down).
color lineColorDownInput = input.color(color.red, "", group = group_2, inline = "4",
tooltip = "The color of the Zig Zag's lines")
// @variable The width of the Zig Zag's lines.
int lineWidthInput = input.int(1, "Line Width", minval = 1, tooltip = "The width of the Zig Zag's lines.", group = group_2, inline = "w")
// @variable If `true`, the Zig Zag will also display a line connecting the last known pivot to the current `close`.
bool extendInput = input.bool(true, "Extend to Last Bar", tooltip = "If checked, the last pivot will be connected to the current close.",
group = group_1, inline = "5")
// @variable If `true`, the pivot labels will display their price values.
bool showPriceInput = input.bool(true, "Display Reversal Price",
tooltip = "If checked, the pivot labels will display their price values.", group = group_2, inline = "6")
// @variable If `true`, each pivot label will display the volume accumulated since the previous pivot.
bool showVolInput = input.bool(true, "Display Cumulative Volume",
tooltip = "If checked, the pivot labels will display the volume accumulated since the previous pivot.", group = group_2, inline = "7")
// @variable If `true`, each pivot label will display the change in price from the previous pivot.
bool showChgInput = input.bool(true, "Display Reversal Price Change",
tooltip = "If checked, the pivot labels will display the change in price from the previous pivot.", group = group_2, inline = "8")
// @variable Controls whether the labels show price changes as raw values or percentages when `showChgInput` is `true`.
string priceDiffInput = input.string("Absolute", "", options = ,
tooltip = "Controls whether the labels show price changes as raw values or percentages when 'Display Reversal Price Change' is checked.",
group = group_2, inline = "8")
// @variable If `true`, the Zig Zag will display support and resistance lines.
bool showSupportResistanceInput = input.bool(true, "Show Support/Resistance Lines",
tooltip = "If checked, the Zig Zag will display support and resistance lines.", group = group_2, inline = "9")
// @variable The number of bars to extend the support and resistance lines from the last pivot point.
int supportResistanceOffsetInput = input.int(50, "Support/Resistance Offset", minval = 0,
tooltip = "The number of bars to extend the support and resistance lines from the last pivot point.", group = group_2, inline = "10")
// @variable The width of the support and resistance lines.
int supportResistanceWidthInput = input.int(1, "Support/Resistance Width", minval = 1,
tooltip = "The width of the support and resistance lines.", group = group_2, inline = "11")
// @variable The color of the support lines.
color supportColorInput = input.color(color.red, "Support/Resistance Color", group = group_2, inline = "12")
// @variable The color of the resistance lines.
color resistanceColorInput = input.color(color.green, "", group = group_2, inline = "12",
tooltip = "The color of the support/resistance lines.")
// @variable If `true`, the support and resistance lines will be drawn as zones.
bool showSupportResistanceZoneInput = input.bool(true, "Show Support/Resistance Zones",
tooltip = "If checked, the support and resistance lines will be drawn as zones.", group = group_2, inline = "12-1")
// @variable The color of the support zones.
color supportZoneColorInput = input.color(color.new(color.red, 70), "Support Zone Color", group = group_2, inline = "12-2")
// @variable The color of the resistance zones.
color resistanceZoneColorInput = input.color(color.new(color.green, 70), "", group = group_2, inline = "12-2",
tooltip = "The color of the support/resistance zones.")
// @variable The width of the support and resistance zones.
int supportResistanceZoneWidthInput = input.int(10, "Support/Resistance Zone Width", minval = 1,
tooltip = "The width of the support and resistance zones.", group = group_2, inline = "12-3")
// @variable If `true`, the support and resistance lines will extend to the right of the chart.
bool supportResistanceExtendInput = input.bool(false, "Extend to Right",
tooltip = "If checked, the lines will extend to the right of the chart.", group = group_2, inline = "13")
// @variable References a `Settings` instance that defines the `ZigZag` object's calculation and display properties.
var ZIG.Settings settings =
ZIG.Settings.new(
devThreshold = deviationInput,
depth = depthInput,
lineColorUp = lineColorUpInput,
lineColorDown = lineColorDownInput,
textUpColor = lineColorUpInput,
textDownColor = lineColorDownInput,
lineWidth = lineWidthInput,
extendLast = extendInput,
displayReversalPrice = showPriceInput,
displayCumulativeVolume = showVolInput,
displayReversalPriceChange = showChgInput,
differencePriceMode = priceDiffInput,
draw = showZigZag,
allowZigZagOnOneBar = allowZigZagOnOneBarInput,
drawSupportResistance = showSupportResistanceInput,
supportResistanceOffset = supportResistanceOffsetInput,
supportResistanceWidth = supportResistanceWidthInput,
supportColor = supportColorInput,
resistanceColor = resistanceColorInput,
supportResistanceExtend = supportResistanceExtendInput,
supportResistanceZoneWidth = supportResistanceZoneWidthInput,
drawSupportResistanceZone = showSupportResistanceZoneInput,
supportZoneColor = supportZoneColorInput,
resistanceZoneColor = resistanceZoneColorInput
)
// @variable References a `ZigZag` object created using the `settings`.
var ZIG.ZigZag zigZag = ZIG.newInstance(settings)
// Update the `zigZag` on every bar.
zigZag.update()
//#endregion
The example code demonstrates how to create a ZigZag indicator with customizable settings. It:
1. Creates a Settings object with user-defined parameters
2. Instantiates a ZigZag object using these settings
3. Updates the ZigZag on each bar to detect new pivot points
4. Automatically draws lines and labels when pivots are detected
This approach provides maximum flexibility while maintaining readability and ease of use.
Индикаторы и стратегии
Supply & Demand Zones
_____________________________________________________________________
Supply and Demand Zones
This indicator displays valid Supply and Demand zones on any chart and timeframe, using dynamically updating visuals. Users can see the moment that zones become validated, used, and then invalidated during live sessions. It is sleek, lightweight, and offers a feature-rich settings panel that allows customization of how each element appears and functions. Zones can enhance the probability of successful trades by locating areas that are most likely to contain resting orders of Supply or Demand, which are needed for price reversals.
Disclaimer
____________________
Like all indicators, this can be a valuable tool when incorporated into a comprehensive, risk-based trading system.
Supply and Demand is not the same thing as Support and Resistance.
Trading based on price hitting a zone without understanding which zones are of higher quality and which are of lower quality (only discernible with a trained human eye) will yield poor results.
Supply and Demand works well as a system and even better when added to an existing one. However, like all effective trading techniques, it requires diligent study, practice, and repetition to become proficient. This is an indicator for use with Supply and Demand concepts, not a replacement for learning them.
Features
____________________
Once a valid candle sequence is confirmed, a box will appear that displays the zone over the precise zone range. At 50% zone penetration, a zone becomes used , and at 100% it becomes invalidated . Each of these zone classifications changes the behavior of the zone on the chart immediately. The settings panel offers custom colors for Supply , Demand , Used , and Invalidated zone types.
Borders : The subtle border colors can be changed or hidden.
Boxes or Bases : Advanced users can opt to hide zone boxes and instead display small, subtle tags over base candle groups. This allows for more customizable selection over what is displayed and how.
Max Zones and Hide Invalidated :
There are limitations on how many objects TradingView allows at once. Because of this, once zones go from used to invalidated , they are hidden (deleted) by default. This allows the zones index to be allocated to display more valid , usable zones instead. If a user prefers to keep invalidated zones visible, they can be enabled; however, this will result in showing more recent zones for fewer historical zones.
All zones share one pool, so if you allow fifty max zones, forty-five might be supply while five might be demand on a big sell-off trend. You will always see the most recent zones, regardless of type or status.
It’s up to you how much clutter you want on your screen and how much improved load time you want - but once loaded, zone creation and function are always instantaneous.
Load Time
____________________
Load time refers to the time it takes from when you switch tickers or timeframes before the zones are displayed initially. There is zero lag in the dynamic function and minimal load time, regardless of settings. However, if you are a fine-tuner or multi-screener, the number of Max Zones displayed is the only major variable affecting load time.
I run everything at Max when I develop. When I trade, I run mine at 25 max zones because I change timeframes often and want a very quick display of zones when I do. I have invalidated hidden, and simply enable it if I want to check an old zone. This gives me more zones than I need and reduces the load time to right where I like it.
Thresholds
____________________
It is recommended to leave these as the default.
Base Body Threshold : Determines the maximum ratio of a candle’s body to wick before invalidation. Default (50% or 0.5). A higher number loosens thresholds, resulting in more zones being displayed.
Unrequire 2nd FT if LO is Strong & Strength Multiplier :
The standard logic sequence requires two Follow-Through candles. Under some strong price movement, Leg-Out candles can make an explosive directional move from a base, making a convincing argument for supply and demand perfectly at work, if not for a single Follow-Through candle instead of two.
By enabling this feature, you can tell the script to ignore second Follow-Through candles, if and only if, the Leg-Out candle's range is (Strength) X the base range. exceeds the range of the Base by a factor of X (Strength). ie: At 5x, this would require a Leg-Out range to be 500% the range of the Base.
If enabled and the Leg-Out is not strong enough, the default logic kicks in, and a second follow-through candle will validate the zone as per usual. This loosens thresholds overall and should result in more zones.
Recommended Usage
____________________
Form a thesis using your primary trend trading system (eg: Elliott Wave, Structure Reversal, TheStrat, et al) to identify locations of a pullback for a long or short entry.
Identify a pullback area using your system, then use this indicator to find a high-quality zone on your chosen timeframe.
Once located, draw your own channel over the indicator's zone box. Start on 1m, check for zones, 2m, 3m, and so on. When you see a zone you like, recreate it; thus, when finished, you can see every timeframe’s highest-quality zones that you created, regardless of what timeframe you switch to. Tip: Be selective
To make the process faster, save a channel design in settings for “Demand” and one for “Supply”, then you can quickly get through this process in less than a minute with practice.
Optional: Use additional methods (eg: Fibonacci retracements, Elliott Wave Theory, Anchored VWAPs) to find congruent confirmation.
Version 1.0
____________________
No known bugs remain from the closed beta.
In Development
____________________
Powerful combination zones occur when standard zone sequences are extended with additional levels of demand or supply by adding more conditionals to the state machine logic. Got this mostly working in a dev version and it adds minimal extra resources. Set aside to polish a clean standard 1.0 for release first, but now displaying these extended zones is my top priority for next version.
MTF support is essentially working in a dev copy, but adds resources. Not sure if it is in the spirit of price action being the primary focus of a chart for serious traders, rather than indicators. If there is demand for it, I'll consider it.
Additional Threshold Settings
Thanks!
____________________
Thank you for your interest in my work. This was a personal passion project of mine, and I was delighted it turned out better than I hoped, so I decided to share it. If you have any comments, bugs, or suggestions, please leave them here, or you can find me on Twitter or Discord.
@ ContrarianIRL
Open-source developer for over 25 years
ATR from VWAP📌 ATRs from VWAP – Intraday Volatility Tracker
This script measures how far price is from VWAP in ATR units, helping traders assess short-term overextension and reversion potential.
🔹 Key Features:
✅ ATR Distance from VWAP – Calculates how many ATRs the price is from the VWAP.
✅ Dynamic Table Display – Shows ATR distance in real-time for quick decision-making.
✅ Intraday Focus – Designed for scalpers and day traders using minutes or hourly timeframes.
📊 How to Use:
Look for price moving away from VWAP to identify extended moves.
Use as a reversion signal when price deviates too far from VWAP.
ATRs in Days📌 ATR in Days
This script tracks how price moves in relation to ATR over multiple days, providing a powerful volatility framework for traders.
🔹 Key Features:
✅ 4 ATRs in 5 Days – Measures if a stock has moved 4x its ATR within the last 5 days, identifying extreme volatility zones.
✅ Daily ATR Calculation – Tracks average true range over time to gauge market conditions.
✅ Clear Table Display – Real-time ATR readings for quick decision-making.
✅ Intraday & Swing Trading Compatible – Works across multiple timeframes for day traders & swing traders.
📊 How to Use:
Look for stocks that exceed 4 ATRs in 5 days to spot extended moves.
Use ATR as a reversion or continuation signal depending on market structure.
🚀 Perfect for traders looking to quantify volatility & structure trades effectively!
Candle Height & Trend Probability DashboardDescription and Guide
Description:
This Pine Script for TradingView displays a dashboard that calculates the probability of price increases or decreases based on past price movements. It analyzes the last 30 candles (by default) and shows the probabilities for different timeframes (from 1 minute to 1 week). Additionally, it checks volatility using the ATR indicator.
Script Features:
Calculates probabilities of an upward (Up %) or downward (Down %) price move based on past candles.
Displays a dashboard showing probabilities for multiple timeframes.
Color-coded probability display:
Green if the upward probability exceeds a set threshold.
Red if the downward probability exceeds the threshold.
Yellow if neither threshold is exceeded.
Considers volatility using the ATR indicator.
Triggers alerts when probabilities exceed specific values.
How to Use:
Insert the script into TradingView: Copy and paste the script into the Pine Script editor.
Adjust parameters:
lookback: Number of past candles used for calculation (default: 30).
alertThresholdUp & alertThresholdDown: Thresholds for probabilities (default: 51%).
volatilityLength & volatilityThreshold: ATR volatility settings.
dashboardPosition: Choose where the dashboard appears on the chart.
Enable visualization: The dashboard will be displayed over the chart.
Set alerts: The script triggers notifications when probabilities exceed set thresholds.
Intraday Volume Indicator for INDICES by TBTPH Pine Script code for an intraday volume indicator with session and lunch break highlights looks great! Here’s a summary of what each part of the script does:
Indicator Settings:
The indicator is set to show on a separate pane (overlay=false).
The SMA Length is adjustable with an input box (default of 20).
Volume and SMA Calculation:
You calculate the Simple Moving Average (SMA) of the volume over the selected length.
The volume color is determined based on whether the close price is higher or lower than the previous close and if the volume is above or below the SMA.
Volume Plot:
Volume is plotted as a histogram with different colors to indicate if the volume is higher or lower than the SMA.
You plot the SMA of the volume with an orange line for easier comparison.
Background Color:
You set a light gray background color to give a subtle contrast.
NYSE and LSE trading sessions are highlighted with green and blue, respectively.
Lunch break periods are highlighted with a white background for both exchanges.
Here are a couple of improvements or suggestions you might consider:
Session Time Overlap Handling:
If the script is applied to a chart where both NYSE and LSE data is visible, they may overlap depending on the time zone of your chart. Ensure the session times align with the active market's timezone, especially if you are using a chart with a different timezone setting.
Color Customization:
The color scheme for bullish/bearish volume could be enhanced further. For example, you could introduce more transparency for low-volume periods to make the histogram appear more subtle during less active trading times.
Handling Different Time Zones:
If your chart is not in the "America/New_York" or "GMT" time zone, be mindful of the session times. The timestamp function depends on the chart’s time zone, so ensuring you're adjusting for different markets is key.
ICT Order Blocks v2 (Debug)Josh has a very large PP xD
Understanding Order Blocks (OBs) - The ICT Perspective
This document delves into the concept of Order Blocks (OBs) from the perspective of the ICT methodology. It outlines what OBs are, their significance in trading, and how the "ICT Order Blocks v2 (Refined)" indicator functions to identify and visualize these critical price levels. By understanding OBs, traders can better navigate market movements and make informed decisions based on institutional trading behavior.
What is an Order Block (OB)?
Within ICT methodology, an Order Block represents a specific price candle where significant buying or selling interest from institutions (Smart Money) is believed to have occurred. They are potential areas where price might return and react.
Bullish Order Block: Typically the last down-closing candle before a strong, impulsive upward move (displacement). It suggests institutions may have absorbed selling pressure and initiated long positions here.
Bearish Order Block: Typically the last up-closing candle before a strong, impulsive downward move (displacement). It suggests institutions may have distributed long positions or initiated short positions here.
Why are OBs Significant (ICT View)?
Institutional Footprint: They mark potential zones of large order execution.
Support/Resistance: Unmitigated OBs can act as sensitive price levels where reactions are expected. Bullish OBs may provide support; Bearish OBs may provide resistance.
Origin of Moves: They often mark the origin point of significant price swings.
Liquidity Engineering: Institutions might drive price back to OBs to mitigate earlier positions or to engineer liquidity before continuing a move.
Common Refinements
ICT often emphasizes higher probability OBs that are associated with:
Displacement: The move away from the OB is sharp and decisive.
Fair Value Gaps (FVGs): An FVG forming immediately after the OB strengthens its validity.
OB Mitigation: This refers to price returning to the level of the Order Block after its formation. Price might react at the edge (proximal line) or the 50% level (mean threshold) of the OB. An OB is often considered fully mitigated or invalidated if price trades decisively through its entire range, especially with a candle body closing beyond it.
How the "ICT Order Blocks v2 (Refined)" Indicator Works
This indicator automates the detection and visualization of the most recent unmitigated Order Block of each type (Bullish/Bearish), incorporating optional filters.
Detection:
It looks at the relationship between the candle two bars ago ( ), the previous candle ( ), and potentially the current candle ( ).
Bullish OB: Identifies if candle was a down-close (close < open ) AND candle broke above the high of candle (high > high ).
Bearish OB: Identifies if candle was an up-close (close > open ) AND candle broke below the low of candle (low < low ).
Accuracy Filters (Optional Inputs):
These filters help identify potentially higher-probability OBs:
Require Fair Value Gap (FVG)?: If enabled, the indicator checks if an FVG formed immediately after the OB candle ( ). Specifically, it looks for a gap between candle and candle (low > high for Bullish OB confirmation, high < low for Bearish).
Require Strong Close Breakout?: If enabled, it requires the breakout candle ( ) to close beyond the range of the OB candle ( ). (close > high for Bullish, close < low for Bearish). This suggests stronger confirmation.
Storing the Most Recent OB:
When an OB is detected and passes any enabled filters, its details (high, low, formation bar index) are stored. Crucially, this indicator only tracks the single most recent valid unmitigated OB of each type (one Bullish, one Bearish) using var variables. If a newer valid OB forms, it replaces the previously stored one.
Drawing Boxes:
If a valid Bullish OB is being tracked (and Show Bullish OBs is enabled), it draws a box (box.new) using the high and low of the identified OB candle ( ). The same process applies to Bearish OBs (Show Bearish OBs enabled). The boxes automatically extend to the right (extend.right) and their right edge is updated on each new bar (box.set_right) until they are mitigated. Labels ("Bull OB" / "Bear OB") are displayed inside the boxes.
Mitigation & Box Deletion:
The indicator checks if the current closing price (close ) has moved entirely beyond the range of the tracked OB.
Mitigation Rule Used: A Bullish OB is considered mitigated if close < bull_ob_low. A Bearish OB is considered mitigated if close > bear_ob_high. Once an OB is marked as mitigated, the indicator stops tracking it and its corresponding box is automatically deleted (box.delete) from the chart.
This indicator provides a dynamic visualization of the most recent, potentially significant Order Blocks that meet the specified criteria, helping traders identify key areas of interest based on ICT principles.
MACD Boundary PSA - CoffeeKillerMACD Boundary PSA - CoffeeKiller Indicator Guide
Welcome traders! This guide will walk you through the MACD Boundary PSA indicator, a powerful market analysis tool developed by CoffeeKiller that enhances the traditional MACD with advanced boundary detection and peak signaling features.
🔔 **Warning: This Indicator Has No Signal Line or MACD Line** 🔔 This indicator is my version of the MACD, that I use in conjunction with the Rev&Line indicator.
Core Concept: Enhanced MACD Analysis
The foundation of this indicator builds upon the classic Moving Average Convergence Divergence (MACD) indicator, adding boundary tracking and peak detection systems to provide clearer signals and market insights.
Histogram Bars: Market Momentum
- Positive Green Bars: Bullish momentum
- Negative Red Bars: Bearish momentum
- Color intensity varies based on momentum strength
- Special coloring for new high/low boundaries
Marker Lines: Dynamic Support/Resistance
- High Marker Line (Magenta): Tracks the highest point reached during a bullish phase
- Low Marker Line (Cyan): Tracks the lowest point reached during a bearish phase
- Acts as dynamic boundaries that help identify strength of current moves
Peak Detection System:
- Triangular markers identify significant local maxima and minima
- Background highlighting shows important momentum peaks
- Helps identify potential reversal points and momentum exhaustion
Core Components
1. MACD Calculation
- Customizable fast and slow moving averages
- Signal line smoothing options
- Flexible MA type selection (SMA or EMA)
- Custom source input options
2. Boundary Tracking System
- Automatic detection of highest values in bullish phases
- Automatic detection of lowest values in bearish phases
- Step-line visualization of boundaries
- Color-coded for easy identification
3. Peak Detection System
- Identification of local maxima and minima
- Background highlighting of significant peaks
- Triangle markers for peak visualization
- Zero-line cross detection for trend changes
4. Time Resolution Control
- Normal mode: calculations based on chart timeframe
- Custom resolution mode: calculations based on specified timeframe
Main Features
Time Resolution Settings
- Normal mode: calculations match your chart's timeframe
- Custom resolution mode: calculations based on specified timeframe
- Helps identify stronger signals from other timeframes
Visual Elements
- Color-coded histogram bars
- Dynamic marker lines for boundaries
- Peak triangles for significant turning points
- Background highlighting for peak identification
Signal Generation
- Zero-line crosses for trend change signals
- Boundary breaks for momentum strength
- Peak formation for potential reversals
- Color changes for momentum direction
Customization Options
- MA types and lengths
- Signal smoothing
- Color schemes
- Marker line visibility
- Peak background display options
Trading Applications
1. Trend Identification
- Histogram crossing above zero: bullish trend beginning
- Histogram crossing below zero: bearish trend beginning
- Histogram color: indicates momentum direction
- Consistent color intensity: trend strength
2. Reversal Detection
- Peak triangles after extended trend: potential exhaustion
- Background highlighting: significant reversal points
- Histogram approaching marker lines: potential trend change
- Color shifts from bright to muted: decreasing momentum
3. Momentum Analysis
- Histogram breaking above previous high boundary: accelerating bullish momentum
- Histogram breaking below previous low boundary: accelerating bearish momentum
- Special coloring (magenta/cyan): boundary breaks indicating strength
- Distance from zero line: overall momentum magnitude
4. Market Structure Assessment
- Consecutive higher peaks: strengthening bullish structure
- Consecutive lower troughs: strengthening bearish structure
- Peak comparisons: relative strength of momentum phases
- Boundary line steps: market structure levels
Optimization Guide
1. MACD Settings
- Fast Length: Shorter values (8-12) for responsiveness, longer values (20+) for smoother signals
- Slow Length: Shorter values (21-34) for more signals, longer values (72+) for major moves
- Default settings (22, 72, 9): balanced approach for most timeframes
- Consider using 8, 21, 5 for shorter timeframes and 34, 144, 5 for longer timeframes
2. MA Type Selection
- EMA: More responsive, follows price more closely
- SMA: Smoother, fewer false signals, potentially more lag
- Mix and match for oscillator and signal lines based on your preference
3. Time Resolution
- Match chart timeframe: for aligned analysis
- Use higher timeframe: for filtering signals
- Lower timeframe: for earlier entries but more noise
4. Color Customization
- Normal bullish/bearish colors: represent standard momentum
- High/low marker line colors: customize visibility
- Peak marker colors: adjust for your visual preference
- Consider chart background when selecting colors
Best Practices
1. Signal Confirmation
- Wait for zero-line crosses to confirm trend changes
- Look for peak formations to identify potential reversals
- Check for boundary breaks to confirm strong momentum
- Use custom timeframe option for higher timeframe confirmation
2. Timeframe Selection
- Lower timeframes: more signals, potential noise
- Higher timeframes: cleaner signals, less frequent
- Custom resolution: allows comparison across timeframes
- Consider using multiple timeframes for confirmation
3. Market Context
- Strong bullish phase: positive histogram breaking above marker line
- Strong bearish phase: negative histogram breaking below marker line
- Histogram approaching zero: potential trend change
- Peak formations: potential exhaustion points
4. Combining with Other Indicators
- Use with trend indicators for confirmation
- Pair with oscillators for overbought/oversold conditions
- Combine with volume analysis for validation
- Consider support/resistance levels with boundary lines
Advanced Trading Strategies
1. Boundary Break Strategy
- Enter long when histogram breaks above previous high marker line
- Enter short when histogram breaks below previous low marker line
- Use zero-line as initial stop-loss reference
- Take profits at formation of opposing peaks
2. Peak Trading Strategy
- Identify significant peaks with triangular markers
- Look for consecutive lower peaks in bullish phases for shorting opportunities
- Look for consecutive higher troughs in bearish phases for buying opportunities
- Use zero-line crosses as confirmation
3. Multi-Timeframe Strategy
- Use custom resolution for higher timeframe MACD trend
- Enter trades when both timeframes align
- Higher timeframe for trend direction
- Chart timeframe for precise entry
4. Histogram Color Strategy
- Enter long when histogram turns bright green (increasing momentum)
- Enter short when histogram turns bright red (increasing momentum)
- Exit when color intensity fades (decreasing momentum)
- Use marker lines as dynamic support/resistance
Practical Analysis Examples
Bullish Market Scenario
- Histogram crosses above zero line
- Green bars grow in height and intensity
- High marker line forms steps upward
- Peak triangles appear at local maxima
- Background highlights appear at significant momentum peaks
Bearish Market Scenario
- Histogram crosses below zero line
- Red bars grow in depth and intensity
- Low marker line forms steps downward
- Peak triangles appear at local minima
- Background highlights appear at significant momentum troughs
Consolidation Scenario
- Histogram oscillates around zero line
- Bar colors alternate frequently
- Marker lines remain relatively flat
- Few or no new peak highlights appear
- Histogram values remain small
Understanding Market Dynamics Through MACD Boundary PSA
At its core, this indicator provides a unique lens to visualize market momentum and boundaries:
1. Momentum Strength: The histogram height/depth shows the strength of current momentum, with color intensity providing additional context about acceleration or deceleration.
2. Dynamic Boundaries: The marker lines create a visual representation of the "high water marks" of momentum in both directions, helping to identify when markets are making new momentum extremes.
3. Exhaustion Signals: The peak detection system highlights moments where momentum has reached a local maximum or minimum, often precursors to reversals or consolidations.
4. Trend Confirmation: The histogram color and intensity provide instant feedback about the current trend direction and strength, with special colors highlighting particularly significant moves.
Remember:
- Combine signals from histogram, marker lines, and peak formations
- Use appropriate timeframe settings for your trading style
- Customize the indicator to match your visual preferences
- Consider market conditions and correlate with price action
This indicator works best when:
- Used as part of a comprehensive trading system
- Combined with proper risk management
- Applied with an understanding of current market conditions
- Signals are confirmed by price action and other indicators
**DISCLAIMER**: This indicator and its signals are intended solely for educational and informational purposes. They do not constitute financial advice. Trading involves significant risk of loss. Always conduct your own analysis and consult with financial professionals before making trading decisions.
Ichimoku Cloud Auto TF🧠 Timeframe Breakdown for Ichimoku Cloud Auto TF
Each timeframe in this indicator is carefully calibrated to reflect meaningful Ichimoku behavior relative to its scale. Here's how each one is structured and what it's best used for:
⏱️ 1 Minute (1m)
Tenkan / Kijun / Span B: 5 / 15 / 45
Use: Scalping fast price action.
Logic: Quick reaction to short-term momentum. Best for highly active traders or bots.
⏱️ 2 Minutes (2m)
Tenkan / Kijun / Span B: 6 / 18 / 54
Use: Slightly smoother than 1m, still ideal for scalping with a little more stability.
⏱️ 5 Minutes (5m)
Tenkan / Kijun / Span B: 8 / 24 / 72
Use: Intraday setups, quick trend capture.
Logic: Balanced between reactivity and noise reduction.
⏱️ 15 Minutes (15m)
Tenkan / Kijun / Span B: 9 / 27 / 81
Use: Short-term swing and intraday entries with higher reliability.
⏱️ 30 Minutes (30m)
Tenkan / Kijun / Span B: 10 / 30 / 90
Use: Intra-swing entries or confirmation of 5m/15m signals.
🕐 1 Hour (1H)
Tenkan / Kijun / Span B: 12 / 36 / 108
Use: Ideal for swing trading setups.
Logic: Anchored to Daily reference (1H × 24 ≈ 1D).
🕐 2 Hours (2H)
Tenkan / Kijun / Span B: 14 / 42 / 126
Use: High-precision swing setups with better context.
🕒 3 Hours (3H)
Tenkan / Kijun / Span B: 15 / 45 / 135
Use: Great compromise between short and mid-term vision.
🕓 4 Hours (4H)
Tenkan / Kijun / Span B: 18 / 52 / 156
Use: Position traders & intraday swing confirmation.
Logic: Designed to echo the structure of 1D Ichimoku but on smaller scale.
📅 1 Day (1D)
Tenkan / Kijun / Span B: 9 / 26 / 52
Use: Classic Ichimoku settings.
Logic: Standard used globally for technical analysis. Suitable for swing and position trading.
📆 1 Week (1W)
Tenkan / Kijun / Span B: 12 / 24 / 120
Use: Long-term position trading & institutional swing confirmation.
Logic: Expanded ratios for broader perspective and noise filtering.
🗓️ 1 Month (1M)
Tenkan / Kijun / Span B: 6 / 12 / 24
Use: Macro-level trend visualization and investment planning.
Logic: Condensed but stable structure to handle longer data cycles.
📌 Summary
This indicator adapts Ichimoku settings dynamically to your chart's timeframe, maintaining logical ratios between Tenkan, Kijun, and Span B. This ensures each timeframe remains responsive yet meaningful for its respective market context.
Borrow Fee & Squeeze TrackerSqueeze tracker.
This script helps identify potential short squeeze setups by detecting two key indicators: unusual volume and significant price changes.
The script combines both volume and price changes to give a more reliable indication of potential squeeze opportunities. When both criteria are met, it signals that there may be unusual market activity. The script also allows you to set up automatic alerts when both the volume and price change exceed thresholds, so you can react quickly to potential opportunities without constantly monitoring the charts.
Once added, you can set an alert:
Click on the Alert button
In the "Condition" dropdown, select the Squeeze Alert that was created.
Set the alert options
Now, when the script detects both a volume spike and a price change spike, it will trigger an alert based on your settings.
Enjoy!
ICT & RTM Price Action IndicatorICT & RTM Price Action Indicator
Unlock the power of precision trading with this cutting-edge indicator blending ICT (Inner Circle Trader) concepts and RTM (Reversal Trend Momentum) strategies. Designed for traders who demand clarity in chaotic markets, this tool pinpoints high-probability buy and sell signals with surgical accuracy.
What It Offers:
Smart Supply & Demand Zones: Instantly spot key levels where the market is likely to reverse or consolidate, derived from a 50-period high/low analysis.
Filtered Reversal Signals: Say goodbye to fakeouts! Signals are confirmed with volume spikes (1.5x average) and a follow-through candle, ensuring you trade only the strongest moves.
Trend-Aware Logic: Built on a customizable SMA (default 14), it aligns reversals with momentum for trades that stick.
One-Signal Discipline: No clutter—only the first valid signal appears until an opposing setup triggers, keeping your chart clean and your focus sharp.
Combined Power: A unique "TRADE" signal merges ICT zones with RTM reversals for setups with double the conviction.
Why You’ll Love It:
Whether you’re scalping intraday or hunting swing trades, this indicator adapts to your style. It’s not just another tool—it’s your edge in decoding price action like a pro. Test it, tweak it, and watch your trading transform.
Engulfing Candle Pattern (Strict)Indicator Name :
Engulfing Candle Pattern (Strict)
Purpose :
The Engulfing Candle Pattern Indicator is designed to identify and visually mark bullish and bearish engulfing patterns on a price chart. These patterns are powerful reversal signals in technical analysis, often used by traders to spot potential trend changes. The indicator ensures strict adherence to the definition of engulfing patterns, making it reliable for identifying high-probability setups.
What It Does :
Identifies Engulfing Patterns :
The indicator scans the price data for candles that meet the criteria of either a bullish engulfing or bearish engulfing pattern .
A bullish engulfing occurs when a green (bullish) candle fully engulfs the body and wicks of the previous red (bearish) candle and closes above its high.
A bearish engulfing occurs when a red (bearish) candle fully engulfs the body and wicks of the previous green (bullish) candle and closes below its low.
Marks Patterns Visually :
Bullish engulfing patterns are marked with a green upward triangle below the candle.
Bearish engulfing patterns are marked with a red downward triangle above the candle.
Optional labels ("Bullish" or "Bearish") provide additional context.
Highlights Candles :
Engulfing candles are highlighted with semi-transparent colors:
Green for bullish engulfing.
Red for bearish engulfing.
Ensures Strict Conditions :
The current candle must fully cover the entire body and wicks of the previous candle.
The current candle must close above the previous candle's high (for bullish) or below the previous candle's low (for bearish).
STH Unrealized Profit/Loss Ratio (STH-NUPL) | [DeV]STH-NUPL
The Short-Term Holder Net Unrealized Profit/Loss Ratio (STH-NUPL) is an analytical tool designed to approximate the unrealized profit or loss of Bitcoin’s short-term holders (STHs)—typically those holding coins for less than 155 days—within the constraints of TradingView’s price-based environment. Drawing inspiration from the canonical STH-NUPL metric, which assesses the difference between the market value and realized value of STH-held coins, this indicator adapts the concept into a normalized ratio using Bitcoin’s price data as a proxy. It offers a window into the sentiment and behavior of short-term market participants, who are often more sensitive to price fluctuations than long-term holders.
In its raw form, STH-NUPL oscillates around a break-even threshold of 0, where positive values indicate aggregate unrealized profits for STHs (market value exceeds realized value), and negative values suggest losses. This inflection point frequently acts as a key level: in bear markets, it can signal capitulation as STHs sell at break-even or below, while in bull markets, it may reflect reluctance to realize losses, providing support. The indicator enhances this metric with smoothing, a moving average overlay, and sophisticated visualization options, delivering a statistically informed perspective on short-term holder dynamics tailored for institutional-grade analysis.
STH-NUPL Settings -
Lookback Length (Default: 150 days): Defines the SMA period for estimating realized value. This 150-day window aligns with traditional STH definitions (e.g., <155 days), capturing a broad yet relevant historical cost basis for short-term holders, ideal for assessing cyclical behavior.
Smoothing Period (Default: 5 days): Applies an EMA to the raw STH-NUPL ratio, with a short default period to maintain responsiveness to recent price shifts while filtering out daily volatility. This setting is particularly suited for tactical analysis.
Moving Average Settings -
MA Lookback Length (Default: 90 days): Sets the period for the STH-NUPL’s moving average, offering a medium-term trend signal that contrasts with the 150-day lookback, enabling detection of momentum shifts within broader market phases.
MA Type (Default: EMA): Provides six moving average types, from the straightforward SMA to the volume-sensitive VWMA. The default EMA balances smoothness and reactivity, while options like HMA or VWMA cater to specialized needs, such as emphasizing recent action or volume trends.
Display Settings -
Show Moving Average (Default: True): Toggles the visibility of the STH-NUPL MA plot, allowing users to focus solely on the smoothed ratio when desired.
Show Background Colors (Default: True): Activates dynamic background shading to visually reinforce market regimes.
Background Color Source (Default: STH-NUPL): Enables users to tie the background to either the STH-NUPL’s midline (reflecting sthNupl > 0) or the MA’s trend direction (maNupl > maNupl ), aligning the visual context with the chosen analytical focus.
Analytical Applications -
Bear Market Capitulation: When the smoothed STH-NUPL approaches or falls below zero, it often signals loss realization among STHs, a precursor to capitulation in downtrends. A declining MA crossing zero can confirm this selling pressure.
Bull Market Support: Positive STH-NUPL values with a rising MA indicate STHs are in profit and reluctant to sell at a loss, forming support zones in uptrends as sell pressure wanes.
Sentiment Extremes: Significant deviations above or below zero highlight over-optimism or despair among STHs, offering contrarian opportunities when paired with price action or other on-chain metrics.
**Limitations**
As a TradingView-based approximation, this indicator uses price data (close) rather than true on-chain STH supply and realized price, which are available through providers like Glassnode. The 150-day SMA for realized value simplifies the cost basis, potentially underrepresenting the diversity of STH transactions. Despite this, the smoothed ratio and moving average overlay provide a practical proxy for tracking STH sentiment within TradingView’s ecosystem.
vidya_calculateLibrary "vidya_calculate"
:
Calculates the Variable Index Dynamic Average (VIDYA).
Computes the VIDYA, which adjusts the degree of smoothing based on the strength of price momentum (absolute value of CMO),
and then returns the 15-period(variable) Simple Moving Average (SMA) of that VIDYA.
VIDYA tends to follow prices more closely when price fluctuations are large, and is smoothed more when fluctuations are small.
CMO = Chande Momentum Oscillator.
vidya(src, vidyaLength, vidyaMomentum, vidyaTrendPeriod)
: Calculates the Variable Index Dynamic Average (VIDYA)
Parameters:
src (float) : : Source
vidyaLength (int) : : VIDYA Length
vidyaMomentum (int) : : VIDYA Momentum
vidyaTrendPeriod (int) : : VIDYA Trend Period (Display)
Returns: : the 15-period(variable) Simple Moving Average (SMA) of that VIDYA
Stop Loss / Take Profit Table// (\_/)
// ( •.•)
// (")_(")
📈 Introducing the Stop Loss / Take Profit Table Indicator! 📈
Enhance your trading strategy with our powerful Stop Loss / Take Profit Table indicator, designed for traders in the Crypto, Stock, and Forex markets. This easy-to-use tool helps you manage risk and maximize profits by clearly displaying your Stop Loss and Take Profit levels based on your trading position.
Key Features:
Custom Asset Types: Choose between Crypto, Stock, or Forex to tailor the indicator to your specific trading style.
Dynamic Stop Loss & Take Profit Calculation: Set your desired Stop Loss percentage, and the indicator will automatically calculate your Stop Loss and two Take Profit levels based on different timeframes (1 min to 240 min).
Position Type Flexibility: Whether you're trading Long or Short, the indicator adjusts the calculations accordingly, providing you with precise price levels for effective risk management.
Visual Representation: Stop Loss and Take Profit levels are marked directly on the chart with distinctive horizontal lines in vibrant colors for easy reference.
Informative Table Display: A dedicated table displayed on the chart shows your asset type, position type, and calculated prices for Stop Loss and Take Profit levels, ensuring you have all critical data at a glance.
Alert Notifications: Stay informed with optional alerts that signal when your Stop Loss or Take Profit levels are hit, allowing you to react swiftly in fast-moving markets.
Why Use This Indicator?
Managing your trades is critical for success in the financial markets. With our Stop Loss / Take Profit Table, you can easily set your parameters and visually track your risk and reward levels, making it a practical addition to any trader's toolkit.
Get started today and take control of your trading strategy! ✨
Happy trading! 📊🚀
Oracle Prediction Futur
// (\_/)
// ( •.•)
// (")_(")
Indicator Description: Oracle Prediction Futur
The Oracle Prediction Futur is a sophisticated technical indicator designed for traders and analysts looking to gain insights into market trends through the analysis of price movements. This Pine Script™ code integrates innovative elements to enhance the trading experience and is governed by the Mozilla Public License 2.0.
Key Features:
Normalization of Closing Prices:
The indicator normalizes closing prices over a defined lookback period (100 periods) to provide a percentage-based representation of the current price relative to its historical range. This helps in identifying potential price extremes.
Peak and Trough Detection:
It identifies and plots peak tops and bottom troughs based on normalized closing values. Peak tops are marked with vibrant magenta circles, while peak bottoms are indicated by soothing cyan circles, helping traders visually spot significant turning points in the price action.
Dynamic Background Gradient:
The indicator features a visually appealing gradient background that represents market sentiment. The background color transitions between bear and bull colors based on the position of the normalized close within the 0-100 range. This provides an immediate visual cue about the strength or weakness of the market.
Horizontal Reference Lines:
The indicator includes horizontal lines at key levels (9.51 and 92.5) for quick reference, which can help to gauge areas of potential support or resistance.
User-Friendly Visuals:
The combination of background colors, dynamic plots, and clear labeling offers a user-friendly visual representation, making it easier to interpret market conditions at a glance.
Overlay Options:
As an overlay-free indicator, it maintains clarity on the price chart while providing insightful trends and forecasts.
Practical Application:
Traders can utilize the Oracle Prediction Futur indicator to identify potential entry and exit points in their trading strategies. By observing the peaks, troughs, and background color shifts, users can better understand market momentum and price action.
How to Use:
Deploy this indicator on your trading platform, and analyze the peaks and troughs along with the normalized close line and background gradient to inform your trading decisions. Look for alignment between price action and the signaling provided by the indicator for optimized trading results.
Multi-Timeframe EMAsMulti Timeframe EMA's
The 'Multi-Timeframe EMA Band Comparison' indicator is a tool designed to analyze trend direction across multiple timeframes using Exponential Moving Averages. it calculates the 50, 100, and 200 period EMAs for fiver user defined timeframes and compares their relationships to provide a visual snapshot of bullish or bearish momentum.
How it Works:
EMA Calculations: For each selected timeframe, the indicator computes the 50, 100, and 200 period EMAs based on the closing price.
Band Comparisons: Three key relationships are evaluated:
50 EMA vs 100 EMA
100 EMA vs 200 EMA
50 EMA vs 200 EMA
Scoring System: Each comparison is assigned a score:
🟢 (Green Circle): The shorter EMA is above the longer EMA, signaling bullish momentum.
🔴 (Red Circle): The shorter EMA is below the longer EMA, signaling bearish momentum.
⚪️ (White Circle): The EMAs are equal or data is unavailable (rare).
Average Score:
An overall average score is calculated across all 15 comparisons ranging from 1 to -1, displayed with two decimal places and color coded.
Customization:
This indicator is fully customizable from the timeframe setting to the color of the table. The only specific part that is not changeable is the EMA bands.
ADR Nivele Horizontale dhe EMAThe user provided a Pine Script code for an indicator called "ADR Nivele Horizontale dhe EMA". The task is to explain how this code works. Hmm, first, I need to understand what this indicator does. The title mentions ADR levels and EMA, so it's probably combining horizontal lines based on Average Daily Range and some Exponential Moving Averages.
Looking at the code, the first part is the indicator declaration with version 6. The settings include an ADR period, levels above and below the mid, and line style. Then there's a section for calculations. They request daily high and low to compute the daily range. The ADR is the SMA of the daily range over the specified period. The mid is the average of daily high and low. The adr_val is half of ADR, maybe to create symmetrical levels around the mid.
Next, they create arrays for lines and labels above and below the mid. The loops go from 1 to levels_above/below, calculate each level, draw lines and labels. The mid line is also drawn with a different color. Then, there are several EMAs plotted: 13, 50, 200, 400, 600, 800, each with different colorsWait, but in Pine Script, when you use arrays to store lines and labels, you have to manage them properly to avoid repainting or memory issues. The code uses array.concat to add new lines and labels each bar. However, since this code is running on each bar, the for loops might be creating multiple lines each time, leading to too many objects. Oh right, but they use var to initialize the arrays, so they are only initialized once. Wait, no. The var keyword initializes the variable once, but in each iteration, they are concatenating new lines. Wait, no: the for loops are inside the main script, which runs on each bar. So every time a new bar is processed, the loops will run again, adding new lines and labels. That's a problem because each bar would create new lines, leading to an ever-increasing number of lines, which could hit the maximum limit (max_lines_count is set to 20, but maybe they have more bars). Oh, the indicator has max_lines_count=20, but the code might be creating multiple lines per bar. So maybe the code isn't handling the line management correctly. For example, if levels_above is 2, then each bar would create 2 new lines above and 2 below, plus the mid line. Over 20 bars, that's way over 20 lines. So this could cause the indicator to stop drawing after 20 lines. The user might not have realized that the lines are being recreated every bar, leading to a buildup. But perhaps the original code intended to have the lines update each bar, extending to the current bar. Let's see: in line.new, they use bar_index as the starting x1 and bar_index as x2. So each line is drawn from the previous bar's index to the current one. But since this is done on every bar, each line is only one bar long. Wait, no. Because on each new bar, the code creates a new line from the previous bar's index (bar_index , which is now the bar before the current one) to the current bar_index. So each line is just a segment from the previous bar to the current bar. But when the next bar comes, a new line is created again. So the result is that each level line is a series of one-bar-length segments, which might not be intended. The user probably wants continuous lines that extend from the left to the right, not just per bar. So this approach is incorrect. The correct way would be to have a line that starts at the first bar of the calculation and extends to the right, updating each bar. But the current code creates a new line each bar, leading to multiple short lines instead of one continuous line. That's a mistake.
So the main issue here is that the code is generating a new line segment for each bar, which is not efficient and would quickly hit the line limit. To fix this, instead of creating a new line every bar, they should create the line once and then update its position each bar. But in Pine Script, you can't directly update a line after it's created; instead, you need to track the line ID and use line.set_xy() to extend it. However, the current code uses array.concat to add new lines each bar, which isn't the right approach.
Therefore, the code as written will create multiple short lines instead of continuous horizontal lines. The correct approach for horizontal levels that extend to the right is to create the line once, starting at a certain bar and extending indefinitely, or to update the line's end point each new bar. But in Pine Script, you can't extend lines infinitely; you have to manage them each bar. Alternatively, using the 'line.extend' style might help, but I think the original code's logic is flawed here.
Additionally, the EMA part is straightforward: plotting multiple EMAs with different periods. That part should work as expected.
So the explanation should mention that the ADR levels are calculated based on the daily high and low, then the code attempts to draw horizontal lines above and below the mid-point. However, the way the lines are drawn may lead to multiple short segments instead of continuous lines, potentially causing performance issues or hitting the maximum line count. The EMAs are plotted correctly with various periods..
Opening Price Signal (Text-Based)Overview:
This simple yet powerful indicator quickly identifies the intraday trend direction by comparing the current price to the day’s opening price.
How it Works:
• Bullish Signal: Last price is at least +0.25 points above today’s open—suggests buying (Long).
• Bearish Signal: Last price is at least -0.25 points below today’s open—suggests selling (Short).
• Neutral: Price remains within ±0.25 points of today’s open—no trade recommended.
What’s Displayed:
• Open Price: Today’s opening price.
• Last Price: Current trading price.
• Signal: Difference between last price and today’s open.
• Sentiment: Clearly labeled as Bullish, Bearish, or Neutral.
• Action: Recommended trade direction (Long, Short, or None).
Recommended Timeframes:
• 5-Minute (ideal for precise intraday trading)
• 15-Minute (balanced clarity and noise reduction)
• 30-Minute (reduced noise, smoother signals)
Ideal Usage:
Perfect for day traders looking for a quick and clear gauge of intraday market sentiment. Use it to confirm momentum and trade confidently in the direction of the daily trend.
Happy trading! 📈✨
RSI3M3+ v.1.8RSI3M3+ v.1.8 Indicator
This script is an advanced trading indicator based on Walter J. Bressert's cycle analysis methodology, combined with an RSI (Relative Strength Index) variation. Let me break it down and explain how it works.
Core Concepts
The RSI3M3+ indicator combines:
A short-term RSI (3-period)
A 3-period moving average to smooth the RSI
Bressert's cycle analysis principles to identify optimal trading points
RSI3M3+ Indicator VisualizationImage Walter J. Bressert's Cycle Analysis Concepts
Walter Bressert was a pioneer in cycle analysis trading who believed markets move in cyclical patterns that can be measured and predicted. His key principles integrated into this indicator include:
Trading Cycles: Markets move in cycles with measurable time spans from low to low
Timing Bands: Projected periods when the next cyclical low or high is anticipated
Oscillator Use: Using oscillators like RSI to confirm cycle position
Entry/Exit Rules: Specific rules for trade entry and exit based on cycle position
Key Parameters in the Script
Basic RSI Parameters
Required bars: Minimum number of bars needed (default: 20)
Overbought region: RSI level considered overbought (default: 70)
Oversold region: RSI level considered oversold (default: 30)
Bressert-Specific Parameters
Cycle Detection Length: Lookback period for cycle identification (default: 30)
Minimum/Maximum Cycle Length: Expected cycle duration in days (default: 15-30)
Buy Line: Lower threshold for buy signals (default: 40)
Sell Line: Upper threshold for sell signals (default: 60)
How the Indicator Works
RSI3M3 Calculation:
Calculates a 3-period RSI (sRSI)
Smooths it with a 3-period moving average (sMA)
Cycle Detection:
Identifies bottoms: When the RSI is below the buy line (40) and starting to turn up
Identifies tops: When the RSI is above the sell line (60) and starting to turn down
Records these points to calculate cycle lengths
Timing Bands:
Projects when the next cycle bottom or top should occur
Creates visual bands on the chart showing these expected time windows
Signal Generation:
Buy signals occur when the RSI turns up from below the oversold level (30)
Sell signals occur when the RSI turns down from above the overbought level (70)
Enhanced by Bressert's specific timing rules
Bressert's Five Trading Rules (Implemented in the Script)
Cycle Timing: The low must be 15-30 market days from the previous Trading Cycle bottom
Prior Top Validation: A Trading Cycle high must have occurred with the oscillator above 60
Oscillator Behavior: The oscillator must drop below 40 and turn up
Entry Trigger: Entry is triggered by a rise above the price high of the upturn day
Protective Stop: Place stop slightly below the Trading Cycle low (implemented as 99% of bottom price)
How to Use the Indicator
Reading the Chart
Main Plot Area:
Green line: 3-period RSI
Red line: 3-period moving average of the RSI
Horizontal bands: Oversold (30) and Overbought (70) regions
Dotted lines: Buy line (40) and Sell line (60)
Yellow vertical bands: Projected timing windows for next cycle bottom
Signals:
Green up arrows: Buy signals
Red down arrows: Sell signals
Trading Strategy
For Buy Signals:
Wait for the RSI to drop below the buy line (40)
Look for an upturn in the RSI from below this level
Enter the trade when price rises above the high of the upturn day
Place a protective stop at 99% of the Trading Cycle low
For Sell Signals:
Wait for the RSI to rise above the sell line (60)
Look for a downturn in the RSI from above this level
Consider exiting or taking profits when a sell signal appears
Alternative exit: When price moves below the low of the downturn day
Cycle Timing Enhancement:
Pay attention to the yellow timing bands
Signals occurring within these bands have higher probability of success
Signals outside these bands may be less reliable
Practical Tips for Using RSI3M3+
Timeframe Selection:
The indicator works best on daily charts for intermediate-term trading
Can be used on weekly charts for longer-term position trading
On intraday charts, adjust cycle lengths accordingly
Market Applicability:
Works well in trending markets with clear cyclical behavior
Less effective in choppy, non-trending markets
Consider additional indicators for trend confirmation
Parameter Adjustment:
Different markets may have different natural cycle lengths
You may need to adjust the min/max cycle length parameters
Higher volatility markets may need wider overbought/oversold levels
Trade Management:
Enter trades when all Bressert's conditions are met
Use the protective stop as defined (99% of cycle low)
Consider taking partial profits at the projected cycle high timing
Advanced Techniques
Multiple Timeframe Analysis:
Confirm signals with the same indicator on higher timeframes
Enter in the direction of the larger cycle when smaller and larger cycles align
Divergence Detection:
Look for price making new lows while RSI makes higher lows (bullish)
Look for price making new highs while RSI makes lower highs (bearish)
Confluence with Price Action:
Combine with support/resistance levels
Use with candlestick patterns for confirmation
Consider volume confirmation of cycle turns
This RSI3M3+ indicator combines the responsiveness of a short-term RSI with the predictive power of Bressert's cycle analysis, offering traders a sophisticated tool for identifying high-probability trading opportunities based on market cycles and momentum shifts.
THANK YOU FOR PREVIOUS CODER THAT EFFORT TO CREATE THE EARLIER VERSION THAT MAKE WALTER J BRESSERT CONCEPT IN TRADINGVIEW @ADutchTourist
Strategy Stats [presentTrading]Hello! it's another weekend. This tool is a strategy performance analysis tool. Looking at the TradingView community, it seems few creators focus on this aspect. I've intentionally created a shared version. Welcome to share your idea or question on this.
█ Introduction and How it is Different
Strategy Stats is a comprehensive performance analytics framework designed specifically for trading strategies. Unlike standard strategy backtesting tools that simply show cumulative profits, this analytics suite provides real-time, multi-timeframe statistical analysis of your trading performance.
Multi-timeframe analysis: Automatically tracks performance metrics across the most recent time periods (last 7 days, 30 days, 90 days, 1 year, and 4 years)
Advanced statistical measures: Goes beyond basic metrics to include Information Coefficient (IC) and Sortino Ratio
Real-time feedback: Updates performance statistics with each new trade
Visual analytics: Color-coded performance table provides instant visual feedback on strategy health
Integrated risk management: Implements sophisticated take profit mechanisms with 3-step ATR and percentage-based exits
BTCUSD Performance
The table in the upper right corner is a comprehensive performance dashboard showing trading strategy statistics.
Note: While this presentation uses Vegas SuperTrend as the underlying strategy, this is merely an example. The Stats framework can be applied to any trading strategy. The Vegas SuperTrend implementation is included solely to demonstrate how the analytics module integrates with a trading strategy.
⚠️ Timeframe Limitations
Important: TradingView's backtesting engine has a maximum storage limit of 10,000 bars. When using this strategy stats framework on smaller timeframes such as 1-hour or 2-hour charts, you may encounter errors if your backtesting period is too long.
Recommended Timeframe Usage:
Ideal for: 4H, 6H, 8H, Daily charts and above
May cause errors on: 1H, 2H charts spanning multiple years
Not recommended for: Timeframes below 1H with long history
█ Strategy, How it Works: Detailed Explanation
The Strategy Stats framework consists of three primary components: statistical data collection, performance analysis, and visualization.
🔶 Statistical Data Collection
The system maintains several critical data arrays:
equityHistory: Tracks equity curve over time
tradeHistory: Records profit/loss of each trade
predictionSignals: Stores trade direction signals (1 for long, -1 for short)
actualReturns: Records corresponding actual returns from each trade
For each closed trade, the system captures:
float tradePnL = strategy.closedtrades.profit(tradeIndex)
float tradeReturn = strategy.closedtrades.profit_percent(tradeIndex)
int tradeType = entryPrice < exitPrice ? 1 : -1 // Direction
🔶 Performance Metrics Calculation
The framework calculates several key performance metrics:
Information Coefficient (IC):
The correlation between prediction signals and actual returns, measuring forecast skill.
IC = Correlation(predictionSignals, actualReturns)
Where Correlation is the Pearson correlation coefficient:
Correlation(X,Y) = (nΣXY - ΣXY) / √
Sortino Ratio:
Measures risk-adjusted return focusing only on downside risk:
Sortino = (Avg_Return - Risk_Free_Rate) / Downside_Deviation
Where Downside Deviation is:
Downside_Deviation = √
R_i represents individual returns, T is the target return (typically the risk-free rate), and n is the number of observations.
Maximum Drawdown:
Tracks the largest percentage drop from peak to trough:
DD = (Peak_Equity - Trough_Equity) / Peak_Equity * 100
🔶 Time Period Calculation
The system automatically determines the appropriate number of bars to analyze for each timeframe based on the current chart timeframe:
bars_7d = math.max(1, math.round(7 * barsPerDay))
bars_30d = math.max(1, math.round(30 * barsPerDay))
bars_90d = math.max(1, math.round(90 * barsPerDay))
bars_365d = math.max(1, math.round(365 * barsPerDay))
bars_4y = math.max(1, math.round(365 * 4 * barsPerDay))
Where barsPerDay is calculated based on the chart timeframe:
barsPerDay = timeframe.isintraday ?
24 * 60 / math.max(1, (timeframe.in_seconds() / 60)) :
timeframe.isdaily ? 1 :
timeframe.isweekly ? 1/7 :
timeframe.ismonthly ? 1/30 : 0.01
🔶 Visual Representation
The system presents performance data in a color-coded table with intuitive visual indicators:
Green: Excellent performance
Lime: Good performance
Gray: Neutral performance
Orange: Mediocre performance
Red: Poor performance
█ Trade Direction
The Strategy Stats framework supports three trading directions:
Long Only: Only takes long positions when entry conditions are met
Short Only: Only takes short positions when entry conditions are met
Both: Takes both long and short positions depending on market conditions
█ Usage
To effectively use the Strategy Stats framework:
Apply to existing strategies: Add the performance tracking code to any strategy to gain advanced analytics
Monitor multiple timeframes: Use the multi-timeframe analysis to identify performance trends
Evaluate strategy health: Review IC and Sortino ratios to assess predictive power and risk-adjusted returns
Optimize parameters: Use performance data to refine strategy parameters
Compare strategies: Apply the framework to multiple strategies to identify the most effective approach
For best results, allow the strategy to generate sufficient trade history for meaningful statistical analysis (at least 20-30 trades).
█ Default Settings
The default settings have been carefully calibrated for cryptocurrency markets:
Performance Tracking:
Time periods: 7D, 30D, 90D, 1Y, 4Y
Statistical measures: Return, Win%, MaxDD, IC, Sortino Ratio
IC color thresholds: >0.3 (green), >0.1 (lime), <-0.1 (orange), <-0.3 (red)
Sortino color thresholds: >1.0 (green), >0.5 (lime), <0 (red)
Multi-Step Take Profit:
ATR multipliers: 2.618, 5.0, 10.0
Percentage levels: 3%, 8%, 17%
Short multiplier: 1.5x (makes short take profits more aggressive)
Stop loss: 20%
Multi-TF Support LevelsThe Multi-TF Support Levels indicator identifies and displays key support levels based on swing lows across three user-selected timeframes.
How it works:
Input Parameters:
Lookback Period (100) — historical depth to search for swing lows.
Timeframe 1-3 (15, 45, 240) — three timeframes (e.g., 15min, 45min, 4hr).
Logic:
For each timeframe, a swing low is detected: the lowest price within the lookback period that is also lower than the two preceding candles.
Support levels update dynamically when new swing lows are formed.
The most recent levels are plotted as horizontal cross marks (blue, red, green for each timeframe).
Purpose: Visualize significant support zones from multiple timeframes to identify confluent areas for trading decisions.
Индикатор Multi-TF Support Levels (Мультитаймфреймовые уровни поддержки) определяет и отображает ключевые уровни поддержки на основе минимумов свингов (swing lows) на трёх выбранных таймфреймах.
Как работает:
Входные параметры:
Lookback Period (100) — глубина анализа для поиска минимумов.
Timeframe 1-3 (15, 45, 240) — три таймфрейма (например, 15 минут, 45 минут, 4 часа).
Логика:
Для каждого таймфрейма определяется свинг-минимум: цена, которая является самой низкой за период lookback и ниже двух предыдущих свечей.
Уровни поддержки обновляются при появлении новых свинг-минимумов.
Последние актуальные уровни отображаются на графике в виде горизонтальных линий-крестиков (синий, красный, зелёный для каждого таймфрейма).
Цель: Визуализировать значимые уровни поддержки с разных таймфреймов для поиска зон "конфлюэнса".
Spent Output Profit Ratio (SOPR) Z-Score | [DeV]SOPR Z-Score
The Spent Output Profit Ratio (SOPR) is an advanced on-chain metric designed to provide deep insights into Bitcoin market dynamics by measuring the ratio between the combined USD value of all Bitcoin outputs spent on a given day and their combined USD value at the time of creation (typically, their purchase price). As a member of the Realized Profit/Loss family of metrics, SOPR offers a window into aggregate seller behavior, effectively representing the USD amount received by sellers divided by the USD amount they originally paid. This indicator enhances this metric by normalizing it into a Z-Score, enabling a statistically robust analysis of market sentiment relative to historical trends, augmented by a suite of customizable features for precision and visualization.
SOPR Settings -
Lookback Length (Default: 150 days): Determines the historical window for calculating the Z-Score’s mean and standard deviation. A longer lookback captures broader market cycles, providing a stable baseline for identifying extreme deviations, which is particularly valuable for long-term strategic analysis.
Smoothing Period (Default: 100 days): Applies an EMA to the raw SOPR, balancing responsiveness to recent changes with noise reduction. This extended smoothing period ensures the indicator focuses on sustained shifts in seller behavior, ideal for institutional-grade trend analysis.
Moving Average Settings -
MA Lookback Length (Default: 90 days): Sets the period for the Z-Score’s moving average, offering a shorter-term trend signal relative to the 150-day Z-Score lookback. This contrast enhances the ability to detect momentum shifts within the broader context.
MA Type (Default: EMA): Provides six moving average types, from the simple SMA to the volume-weighted VWMA. The default EMA strikes an optimal balance between smoothness and responsiveness, while alternatives like HMA (Hull) or VWMA (volume-weighted) allow for specialized applications, such as emphasizing recent price action or incorporating volume dynamics.
Display Settings -
Show Moving Average (Default: True): Toggles the visibility of the Z-Score MA plot, enabling users to focus solely on the raw Z-Score when preferred.
Show Background Colors (Default: True): Activates dynamic background shading, enhancing visual interpretation of market regimes.
Background Color Source (Default: SOPR): Allows users to tie the background color to either the SOPR Z-Score’s midline (reflecting adjustedZScore > 0) or the MA’s trend direction (zScoreMA > zScoreMA ). This dual-source option provides flexibility to align the visual context with the primary analytical focus.
Analytical Applications -
Bear Market Resistance: When the Z-Score approaches or exceeds zero (raw SOPR near 1), it often signals resistance as sellers rush to exit at break-even, a pattern historically observed during downtrends. A rising Z-Score MA crossing zero can confirm this pressure.
Bull Market Support: Conversely, a Z-Score dropping below zero in uptrends indicates reluctance to sell at a loss, forming support as sell pressure diminishes. The MA’s bullish coloring reinforces confirmation of renewed buying interest.
Extreme Deviations: Values significantly above or below zero highlight overbought or oversold conditions, respectively, offering opportunities for contrarian positioning when paired with other on-chain or price-based metrics.