Previous D, W, M High/LowThis indicator plots previous day's high,low,open and close values and plots previous week's and month's high and low value on the chart.
Индикаторы и стратегии
Composite Indicator (CCI + ATR)Composite Indicator (CCI + ATR)
The Composite Indicator (CCI + ATR) combines the Commodity Channel Index (CCI) with the Average True Range (ATR) , providing traders with a dynamic tool for identifying entry and exit points based on momentum and volatility. This indicator is particularly useful for markets like cryptocurrencies, which often exhibit sharp sell-offs and gradual upward trends.
Key Features
Momentum Analysis with CCI: The CCI calculates price momentum by comparing the current price level to its average over a specific period. The indicator generates signals when CCI crosses predefined thresholds.
- Buy Signal: Triggered when CCI crosses above the lower threshold (e.g., -100).
- Sell Signal: Triggered when CCI crosses below the upper threshold (e.g., +100).
Volatility Filtering with ATR: The ATR measures market volatility, ensuring signals occur only during significant price movements.
Separate multipliers for buy and sell signals allow tailored filtering based on market behavior.
Stop Loss Calculation: Dynamic stop loss levels are calculated using the ATR multiplier to adapt to market volatility, offering better risk management.
How It Works
CCI Calculation: The CCI is calculated using the typical price ((High + Low + Close) / 3) and a user-defined length. It detects momentum changes by measuring deviations from the average price.
ATR Calculation: The ATR determines the average price range over a specified period, identifying the market’s volatility. The ATR SMA acts as a baseline to filter signals.
Buy Signal: A buy signal is triggered when:
- CCI crosses above the lower threshold (e.g., -100).
- ATR exceeds its SMA multiplied by the buy multiplier (e.g., 1.0).
Sell Signal: A sell signal is triggered when:
- CCI crosses below the upper threshold (e.g., +100).
- ATR exceeds its SMA multiplied by the sell multiplier (e.g., 0.95).
Stop Loss Integration:
- Long positions: Stop loss = Low – (ATR * ATR Multiplier)
- Short positions: Stop loss = High + (ATR * ATR Multiplier)
Advantages
Combines momentum (CCI) and volatility (ATR) for precise signal generation.
Customizable thresholds and multipliers for different market conditions.
Dynamic stop loss ensures better risk management in volatile markets.
Suggested Parameter Settings
CCI Length: 20 (default). Adjust as follows:
- 10–15: Shorter timeframes (e.g., 5-15 minutes).
- 20: General use for 1-hour timeframes.
- 30–50: Longer timeframes (e.g., 4-hour or daily charts).
CCI Threshold: 100 (default). Adjust as follows:
- 50–75: For more frequent signals in ranging markets.
- 100: Balanced for most trading conditions.
- 150–200: For strong trends to reduce noise.
ATR Length: 14 (default). Adjust as follows:
- 10–14: For assets with moderate volatility.
- 20: For assets with lower volatility.
ATR Buy Multiplier: 1.0 (default). Adjust as follows:
- 0.9–1.0: For gradual uptrends in crypto markets.
- 1.1–1.2: For stronger trend filtering.
ATR Sell Multiplier: 0.95 (default). Adjust as follows:
- 0.8–0.95: For sharp sell-offs.
- 1.0–1.1: For stable downward trends.
ATR Multiplier (Stop Loss): 1.5 (default). Adjust as follows:
- 1.0–1.2: For shorter timeframes or less volatile markets.
- 2.0–2.5: For highly volatile markets like cryptocurrencies.
Example Use Cases
Scalping (5-15 minute charts): Use CCI Length = 10, CCI Threshold = 75, ATR Buy Multiplier = 0.9, ATR Sell Multiplier = 0.8.
Day Trading (1-hour charts): Use CCI Length = 20, CCI Threshold = 100, ATR Buy Multiplier = 1.0, ATR Sell Multiplier = 0.95.
Swing Trading (4-hour or daily charts): Use CCI Length = 30, CCI Threshold = 150, ATR Buy Multiplier = 1.2, ATR Sell Multiplier = 1.0.
Final Thoughts The Composite Indicator (CCI + ATR) is a versatile tool designed to enhance trading decisions by combining momentum analysis with volatility filtering. Whether scalping or swing trading, this indicator provides actionable insights and robust risk management to navigate complex markets effectively.
Dynamic Customizable 50% Line & Daily High/Low + True Day OpenA Unique Indicator for Precise Market-Level Analysis
This indicator is a fully integrated solution that automates complex market-level calculations and visualizations, offering traders a tool that goes beyond the functionality of existing open-source alternatives. By seamlessly combining several trading concepts into a single script, it delivers efficiency, accuracy, and customization that cater to both novice and professional traders.
Key Features: A Breakdown of What Makes It Unique
1. Adaptive Daily Highs and Lows
Automatically detects and plots daily high and low levels based on the selected time frame, dynamically updating in real time.
Features session-based adjustments, allowing traders to focus on levels that matter for specific trading sessions (e.g., London, New York).
Fully customizable styling, visibility, and alerts tailored to each trader’s preferences.
How It Works:
The indicator calculates daily high and low levels directly from price data, integrating session-specific time offsets to account for global trading hours. These levels provide traders with clear visual markers for key liquidity zones.
2. Automated ICT 50% Range Line
A pioneering implementation of ICT’s mid-range concept, this feature dynamically calculates and displays the midpoint of the daily range.
Offers traders a visual guide to identify premium and discount zones, aiding in determining market bias and potential trade setups.
How It Works:
The script calculates the range between the day’s high and low, dividing it by two to generate the midline. This line updates in real-time, ensuring that traders always see the most current premium and discount levels as price action evolves.
3. Dynamic Market Open Levels
Plots session opens (e.g., Asia, London, New York) and the True Day Open to provide actionable reference points for intra-day trading strategies.
Enhances precision in identifying liquidity shifts and aligning trades with institutional price movements.
How It Works:
The indicator uses predefined session times to calculate and display the opening levels for key trading sessions. It dynamically adjusts for time zones, ensuring accuracy regardless of the trader’s location.
4. Custom Watermark for Enhanced Visualization
Includes an optional watermark feature that allows users to display custom text on their charts.
Ideal for personalization, branding, or highlighting session notes without disrupting the clarity of the chart.
Why This Indicator Stands Out
First-to-Market Automation:
While the ICT 50% range line is a widely recognized concept, this is the first script to automate its calculation, combining it with other pivotal trading levels in a single tool.
All-in-One Functionality:
Unlike open-source alternatives that focus on individual features, this script integrates daily highs/lows, mid-range levels, session opens, and customizable watermarks into one cohesive system. The consolidation reduces the need for multiple indicators and ensures a clean, efficient chart setup.
Dynamic Customization:
Every feature can be adjusted to align with a trader’s strategy, time zone, or aesthetic preferences. This level of adaptability is unmatched in existing tools.
Proprietary Logic:
The indicator’s underlying calculations are built from scratch, leveraging advanced programming techniques to ensure accuracy and reliability. These proprietary methods differentiate it from similar open-source scripts.
How to Use This Indicator
Apply the Indicator:
Add it to your TradingView chart from the library.
Configure Settings:
Use the intuitive settings panel to adjust plotted levels, colors, styles, and visibility. Tailor the indicator to your trading strategy.
Incorporate into Analysis:
Combine the plotted levels with your preferred trading approach to identify liquidity zones, establish market bias, and pinpoint potential reversals or entries.
Stay Focused:
With all key levels automated and updated in real time, traders can focus on execution rather than manual plotting.
Originality and Justification for Closed Source
This script is closed-source due to its unique combination of features and proprietary logic that automates complex trading concepts like the ICT 50% range line and session-specific levels. Open-source alternatives lack this level of integration and customization, making this indicator a valuable and original contribution to the TradingView ecosystem.
What Sets It Apart from Open-Source Scripts?
Unlike open-source tools, this indicator doesn’t just replicate individual features—it enhances and integrates them into a seamless, all-in-one solution that offers traders a more efficient and effective way to analyze the market.
Geo. Geo.
This library provides a comprehensive set of geometric functions based on 2 simple types for point and line manipulation, point array calculations, some vector operations (Borrowed from @ricardosantos ), angle calculations, and basic polygon analysis. It offers tools for creating, transforming, and analyzing geometric shapes and their relationships.
View the source code for detailed documentation on each function and type.
═════════════════════════════════════════════════════════════════════════
█ OVERVIEW
This library enhances TradingView's Pine Script with robust geometric capabilities. It introduces the Point and Line types, along with a suite of functions for various geometric operations. These functionalities empower you to perform advanced calculations, manipulations, and analyses involving points, lines, vectors, angles, and polygons directly within your Pine scripts. The example is at the bottom of the script. ( Commented out )
█ CONCEPTS
This library revolves around two fundamental types:
• Point: Represents a point in 2D space with x and y coordinates, along with optional 'a' (angle) and 'v' (value) fields for versatile use. Crucially, for plotting, utilize the `.to_chart_point()` method to convert Points into plottable chart.point objects.
• Line: Defined by a starting Point and a slope , enabling calculations like getting y for a given x, or finding intersection points.
█ FEATURES
• Point Manipulation: Perform operations like addition, subtraction, scaling, rotation, normalization, calculating distances, dot products, cross products, midpoints, and more with Point objects.
• Line Operations: Create lines, determine their slope, calculate y from x (and vice versa), and find the intersection points of two lines.
• Vector Operations: Perform vector addition, subtraction, multiplication, division, negation, perpendicular vector calculation, floor, fractional part, sine, absolute value, modulus, sign, round, scaling, rescaling, rotation, and ceiling operations.
• Angle Calculations: Compute angles between points in degrees or radians, including signed, unsigned, and 360-degree angles.
• Polygon Analysis: Calculate the area, perimeter, and centroid of polygons. Check if a point is inside a given polygon and determine the convex hull perimeter.
• Chart Plotting: Conveniently convert Point objects to chart.point objects for plotting lines and points on the chart. The library also includes functions for plotting lines between individual and series of points.
• Utility Functions: Includes helper functions such as square root, square, cosine, sine, tangent, arc cosine, arc sine, arc tangent, atan2, absolute distance, golden ratio tolerance check, fractional part, and safe index/check for chart plotting boundaries.
█ HOW TO USE
1 — Include the library in your script using:
import kaigouthro/geo/1
2 — Create Point and Line objects:
p1 = geo.Point(bar_index, close)
p2 = geo.Point(bar_index , open)
myLine = geo.Line(p1, geo.slope(p1, p2))
// maybe use that line to detect a crossing for an alert ... hmmm
3 — Utilize the provided functions:
distance = geo.distance(p1, p2)
intersection = geo.intersection(line1, line2)
4 — For plotting labels, lines, convert Point to chart.point :
label.new(p1.to_chart_point(), " Hi ")
line.new(p1.to_chart_point(),p2.to_chart_point())
█ NOTES
This description provides a concise overview. Consult the library's source code for in-depth documentation, including detailed descriptions, parameter types, and return values for each function and method. The source code is structured with comprehensive comments using the `//@` format for seamless integration with TradingView's auto-documentation features.
█ Possibilities..
Library "geo"
This library provides a comprehensive set of geometric functions and types, including point and line manipulation, vector operations, angle calculations, and polygon analysis. It offers tools for creating, transforming, and analyzing geometric shapes and their relationships.
sqrt(value)
Square root function
Parameters:
value (float) : (float) - The number to take the square root of
Returns: (float) - The square root of the input value
sqr(x)
Square function
Parameters:
x (float) : (float) - The number to square
Returns: (float) - The square of the input value
cos(v)
Cosine function
Parameters:
v (float) : (series float) - The value to find the cosine of
Returns: (series float) - The cosine of the input value
sin(v)
Sine function
Parameters:
v (float) : (series float) - The value to find the sine of
Returns: (series float) - The sine of the input value
tan(v)
Tangent function
Parameters:
v (float) : (series float) - The value to find the tangent of
Returns: (series float) - The tangent of the input value
acos(v)
Arc cosine function
Parameters:
v (float) : (series float) - The value to find the arc cosine of
Returns: (series float) - The arc cosine of the input value
asin(v)
Arc sine function
Parameters:
v (float) : (series float) - The value to find the arc sine of
Returns: (series float) - The arc sine of the input value
atan(v)
Arc tangent function
Parameters:
v (float) : (series float) - The value to find the arc tangent of
Returns: (series float) - The arc tangent of the input value
atan2(dy, dx)
atan2 function
Parameters:
dy (float) : (float) - The y-coordinate
dx (float) : (float) - The x-coordinate
Returns: (float) - The angle in radians
gap(_value1, __value2)
Absolute distance between any two float values
Parameters:
_value1 (float) : First value
__value2 (float)
Returns: Absolute Positive Distance
phi_tol(a, b, tolerance)
Check if the ratio is within the tolerance of the golden ratio
Parameters:
a (float) : (float) The first number
b (float) : (float) The second number
tolerance (float) : (float) The tolerance percennt as 1 = 1 percent
Returns: (bool) True if the ratio is within the tolerance, false otherwise
frac(x)
frad Fractional
Parameters:
x (float) : (float) - The number to convert to fractional
Returns: (float) - The number converted to fractional
safeindex(x, limit)
limiting int to hold the value within the chart range
Parameters:
x (float) : (float) - The number to limit
limit (int)
Returns: (int) - The number limited to the chart range
safecheck(x, limit)
limiting int check if within the chartplottable range
Parameters:
x (float) : (float) - The number to limit
limit (int)
Returns: (int) - The number limited to the chart range
interpolate(a, b, t)
interpolate between two values
Parameters:
a (float) : (float) - The first value
b (float) : (float) - The second value
t (float) : (float) - The interpolation factor (0 to 1)
Returns: (float) - The interpolated value
gcd(_numerator, _denominator)
Greatest common divisor of two integers
Parameters:
_numerator (int)
_denominator (int)
Returns: (int) The greatest common divisor
method set_x(self, value)
Set the x value of the point, and pass point for chaining
Namespace types: Point
Parameters:
self (Point) : (Point) The point to modify
value (float) : (float) The new x-coordinate
method set_y(self, value)
Set the y value of the point, and pass point for chaining
Namespace types: Point
Parameters:
self (Point) : (Point) The point to modify
value (float) : (float) The new y-coordinate
method get_x(self)
Get the x value of the point
Namespace types: Point
Parameters:
self (Point) : (Point) The point to get the x-coordinate from
Returns: (float) The x-coordinate
method get_y(self)
Get the y value of the point
Namespace types: Point
Parameters:
self (Point) : (Point) The point to get the y-coordinate from
Returns: (float) The y-coordinate
method vmin(self)
Lowest element of the point
Namespace types: Point
Parameters:
self (Point) : (Point) The point
Returns: (float) The lowest value between x and y
method vmax(self)
Highest element of the point
Namespace types: Point
Parameters:
self (Point) : (Point) The point
Returns: (float) The highest value between x and y
method add(p1, p2)
Addition
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (Point) - the add of the two points
method sub(p1, p2)
Subtraction
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (Point) - the sub of the two points
method mul(p, scalar)
Multiplication by scalar
Namespace types: Point
Parameters:
p (Point) : (Point) - The point
scalar (float) : (float) - The scalar to multiply by
Returns: (Point) - the multiplied point of the point and the scalar
method div(p, scalar)
Division by scalar
Namespace types: Point
Parameters:
p (Point) : (Point) - The point
scalar (float) : (float) - The scalar to divide by
Returns: (Point) - the divided point of the point and the scalar
method rotate(p, angle)
Rotate a point around the origin by an angle (in degrees)
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to rotate
angle (float) : (float) - The angle to rotate by in degrees
Returns: (Point) - the rotated point
method length(p)
Length of the vector from origin to the point
Namespace types: Point
Parameters:
p (Point) : (Point) - The point
Returns: (float) - the length of the point
method length_squared(p)
Length squared of the vector
Namespace types: Point
Parameters:
p (Point) : (Point) The point
Returns: (float) The squared length of the point
method normalize(p)
Normalize the point to a unit vector
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to normalize
Returns: (Point) - the normalized point
method dot(p1, p2)
Dot product
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (float) - the dot of the two points
method cross(p1, p2)
Cross product result (in 2D, this is a scalar)
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (float) - the cross of the two points
method distance(p1, p2)
Distance between two points
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (float) - the distance of the two points
method Point(x, y, a, v)
Point Create Convenience
Namespace types: series float, simple float, input float, const float
Parameters:
x (float)
y (float)
a (float)
v (float)
Returns: (Point) new point
method angle(p1, p2)
Angle between two points in degrees
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (float) - the angle of the first point and the second point
method angle_between(p, pivot, other)
Angle between two points in degrees from a pivot point
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to calculate the angle from
pivot (Point) : (Point) - The pivot point
other (Point) : (Point) - The other point
Returns: (float) - the angle between the two points
method translate(p, from_origin, to_origin)
Translate a point from one origin to another
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to translate
from_origin (Point) : (Point) - The origin to translate from
to_origin (Point) : (Point) - The origin to translate to
Returns: (Point) - the translated point
method midpoint(p1, p2)
Midpoint of two points
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (Point) - The midpoint of the two points
method rotate_around(p, angle, pivot)
Rotate a point around a pivot point by an angle (in degrees)
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to rotate
angle (float) : (float) - The angle to rotate by in degrees
pivot (Point) : (Point) - The pivot point to rotate around
Returns: (Point) - the rotated point
method multiply(_a, _b)
Multiply vector _a with _b
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (Point) The result of the multiplication
method divide(_a, _b)
Divide vector _a by _b
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (Point) The result of the division
method negate(_a)
Negative of vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to negate
Returns: (Point) The negated point
method perp(_a)
Perpendicular Vector of _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The perpendicular point
method vfloor(_a)
Compute the floor of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The floor of the point
method fractional(_a)
Compute the fractional part of the elements from vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The fractional part of the point
method vsin(_a)
Compute the sine of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The sine of the point
lcm(a, b)
Least common multiple of two integers
Parameters:
a (int) : (int) The first integer
b (int) : (int) The second integer
Returns: (int) The least common multiple
method vabs(_a)
Compute the absolute of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The absolute of the point
method vmod(_a, _b)
Compute the mod of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
_b (float) : (float) The mod
Returns: (Point) The mod of the point
method vsign(_a)
Compute the sign of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The sign of the point
method vround(_a)
Compute the round of argument vector _a
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (Point) The round of the point
method normalize_y(p, height)
normalizes the y value of a point to an input height
Namespace types: Point
Parameters:
p (Point) : (Point) - The point to normalize
height (float) : (float) - The height to normalize to
Returns: (Point) - the normalized point
centroid(points)
Calculate the centroid of multiple points
Parameters:
points (array) : (array) The array of points
Returns: (Point) The centroid point
random_point(_height, _width, _origin, _centered)
Random Point in a given height and width
Parameters:
_height (float) : (float) The height of the area to generate the point in
_width (float) : (float) The width of the area to generate the point in
_origin (Point) : (Point) The origin of the area to generate the point in (default: na, will create a Point(0, 0))
_centered (bool) : (bool) Center the origin point in the area, otherwise, positive h/w (default: false)
Returns: (Point) The random point in the given area
random_point_array(_origin, _height, _width, _centered, _count)
Random Point Array in a given height and width
Parameters:
_origin (Point) : (Point) The origin of the area to generate the array (default: na, will create a Point(0, 0))
_height (float) : (float) The height of the area to generate the array
_width (float) : (float) The width of the area to generate the array
_centered (bool) : (bool) Center the origin point in the area, otherwise, positive h/w (default: false)
_count (int) : (int) The number of points to generate (default: 50)
Returns: (array) The random point array in the given area
method sort_points(points, by_x)
Sorts an array of points by x or y coordinate
Namespace types: array
Parameters:
points (array) : (array) The array of points to sort
by_x (bool) : (bool) Whether to sort by x-coordinate (true) or y-coordinate (false)
Returns: (array) The sorted array of points
method equals(_a, _b)
Compares two points for equality
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (bool) True if the points are equal, false otherwise
method max(origin, _a, _b)
Maximum of two points from origin, using dot product
Namespace types: Point
Parameters:
origin (Point)
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (Point) The maximum point
method min(origin, _a, _b)
Minimum of two points from origin, using dot product
Namespace types: Point
Parameters:
origin (Point)
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (Point) The minimum point
method avg_x(points)
Average x of point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The average x-coordinate
method avg_y(points)
Average y of point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The average y-coordinate
method range_x(points)
Range of x values in point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The range of x-coordinates
method range_y(points)
Range of y values in point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The range of y-coordinates
method max_x(points)
max of x values in point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The max of x-coordinates
method min_y(points)
min of x values in point array
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (float) The min of x-coordinates
method scale(_a, _scalar)
Scale a point by a scalar
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to scale
_scalar (float) : (float) The scalar value
Returns: (Point) The scaled point
method rescale(_a, _length)
Rescale a point to a new magnitude
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to rescale
_length (float) : (float) The new magnitude
Returns: (Point) The rescaled point
method rotate_rad(_a, _radians)
Rotate a point by an angle in radians
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to rotate
_radians (float) : (float) The angle in radians
Returns: (Point) The rotated point
method rotate_degree(_a, _degree)
Rotate a point by an angle in degrees
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to rotate
_degree (float) : (float) The angle in degrees
Returns: (Point) The rotated point
method vceil(_a, _digits)
Ceil a point to a certain number of digits
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to ceil
_digits (int) : (int) The number of digits to ceil to
Returns: (Point) The ceiled point
method vpow(_a, _exponent)
Raise both point elements to a power
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
_exponent (float) : (float) The exponent
Returns: (Point) The point with elements raised to the power
method perpendicular_distance(_a, _b, _c)
Distance from point _a to line between _b and _c
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
_b (Point) : (Point) The start point of the line
_c (Point) : (Point) The end point of the line
Returns: (float) The perpendicular distance
method project(_a, _axis)
Project a point onto another
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to project
_axis (Point) : (Point) The point to project onto
Returns: (Point) The projected point
method projectN(_a, _axis)
Project a point onto a point of unit length
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to project
_axis (Point) : (Point) The unit length point to project onto
Returns: (Point) The projected point
method reflect(_a, _axis)
Reflect a point on another
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to reflect
_axis (Point) : (Point) The point to reflect on
Returns: (Point) The reflected point
method reflectN(_a, _axis)
Reflect a point to an arbitrary axis
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to reflect
_axis (Point) : (Point) The axis to reflect to
Returns: (Point) The reflected point
method angle_rad(_a)
Angle in radians of a point
Namespace types: Point
Parameters:
_a (Point) : (Point) The point
Returns: (float) The angle in radians
method angle_unsigned(_a, _b)
Unsigned degree angle between 0 and +180 by given two points
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (float) The unsigned angle in degrees
method angle_signed(_a, _b)
Signed degree angle between -180 and +180 by given two points
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (float) The signed angle in degrees
method angle_360(_a, _b)
Degree angle between 0 and 360 by given two points
Namespace types: Point
Parameters:
_a (Point) : (Point) The first point
_b (Point) : (Point) The second point
Returns: (float) The angle in degrees (0-360)
method clamp(_a, _vmin, _vmax)
Restricts a point between a min and max value
Namespace types: Point
Parameters:
_a (Point) : (Point) The point to restrict
_vmin (Point) : (Point) The minimum point
_vmax (Point) : (Point) The maximum point
Returns: (Point) The restricted point
method lerp(_a, _b, _rate_of_move)
Linearly interpolates between points a and b by _rate_of_move
Namespace types: Point
Parameters:
_a (Point) : (Point) The starting point
_b (Point) : (Point) The ending point
_rate_of_move (float) : (float) The rate of movement (0-1)
Returns: (Point) The interpolated point
method slope(p1, p2)
Slope of a line between two points
Namespace types: Point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
Returns: (float) - The slope of the line
method gety(self, x)
Get y-coordinate of a point on the line given its x-coordinate
Namespace types: Line
Parameters:
self (Line) : (Line) - The line
x (float) : (float) - The x-coordinate
Returns: (float) - The y-coordinate
method getx(self, y)
Get x-coordinate of a point on the line given its y-coordinate
Namespace types: Line
Parameters:
self (Line) : (Line) - The line
y (float) : (float) - The y-coordinate
Returns: (float) - The x-coordinate
method intersection(self, other)
Intersection point of two lines
Namespace types: Line
Parameters:
self (Line) : (Line) - The first line
other (Line) : (Line) - The second line
Returns: (Point) - The intersection point
method calculate_arc_point(self, b, p3)
Calculate a point on the arc defined by three points
Namespace types: Point
Parameters:
self (Point) : (Point) The starting point of the arc
b (Point) : (Point) The middle point of the arc
p3 (Point) : (Point) The end point of the arc
Returns: (Point) A point on the arc
approximate_center(point1, point2, point3)
Approximate the center of a spiral using three points
Parameters:
point1 (Point) : (Point) The first point
point2 (Point) : (Point) The second point
point3 (Point) : (Point) The third point
Returns: (Point) The approximate center point
createEdge(center, radius, angle)
Get coordinate from center by radius and angle
Parameters:
center (Point) : (Point) - The center point
radius (float) : (float) - The radius of the circle
angle (float) : (float) - The angle in degrees
Returns: (Point) - The coordinate on the circle
getGrowthFactor(p1, p2, p3)
Get growth factor of spiral point
Parameters:
p1 (Point) : (Point) - The first point
p2 (Point) : (Point) - The second point
p3 (Point) : (Point) - The third point
Returns: (float) - The growth factor
method to_chart_point(point)
Convert Point to chart.point using chart.point.from_index(safeindex(point.x), point.y)
Namespace types: Point
Parameters:
point (Point) : (Point) - The point to convert
Returns: (chart.point) - The chart.point representation of the input point
method plotline(p1, p2, col, width)
Draw a line from p1 to p2
Namespace types: Point
Parameters:
p1 (Point) : (Point) First point
p2 (Point) : (Point) Second point
col (color)
width (int)
Returns: (line) Line object
method drawlines(points, col, ignore_boundary)
Draw lines between points in an array
Namespace types: array
Parameters:
points (array) : (array) The array of points
col (color) : (color) The color of the lines
ignore_boundary (bool) : (bool) The color of the lines
method to_chart_points(points)
Draw an array of points as chart points on the chart with line.new(chartpoint1, chartpoint2, color=linecolor)
Namespace types: array
Parameters:
points (array) : (array) - The points to draw
Returns: (array) The array of chart points
polygon_area(points)
Calculate the area of a polygon defined by an array of points
Parameters:
points (array) : (array) The array of points representing the polygon vertices
Returns: (float) The area of the polygon
polygon_perimeter(points)
Calculate the perimeter of a polygon
Parameters:
points (array) : (array) Array of points defining the polygon
Returns: (float) Perimeter of the polygon
is_point_in_polygon(point, _polygon)
Check if a point is inside a polygon
Parameters:
point (Point) : (Point) The point to check
_polygon (array)
Returns: (bool) True if the point is inside the polygon, false otherwise
method perimeter(points)
Calculates the convex hull perimeter of a set of points
Namespace types: array
Parameters:
points (array) : (array) The array of points
Returns: (array) The array of points forming the convex hull perimeter
Point
A Point, can be used for vector, floating calcs, etc. Use the cp method for plots
Fields:
x (series float) : (float) The x-coordinate
y (series float) : (float) The y-coordinate
a (series float) : (float) An Angle storage spot
v (series float) : (float) A Value
Line
Line
Fields:
point (Point) : (Point) The starting point of the line
slope (series float) : (float) The slope of the line
GOMTRY.
Composite Indicator (Donchian + OBV)Composite Indicator (Donchian + OBV)
The Composite Indicator (Donchian + OBV) is a powerful tool designed to evaluate the strength of market breakouts and momentum trends , offering traders a comprehensive perspective on price action. This indicator combines the Donchian Channel with On-Balance Volume (OBV) to create a dynamic and easy-to-interpret metric scaled between -1 and 1 .
Key Features
Breakout Strength Analysis:
- The indicator assesses the strength of price breakouts relative to the upper and lower bounds of the Donchian Channel.
- Positive values close to 1 indicate a strong bullish breakout.
- Negative values close to -1 indicate a strong bearish breakout.
Momentum Detection with OBV:
- On-Balance Volume (OBV) tracks the cumulative buying and selling volume to gauge market momentum.
- The smoothed OBV trend ensures the momentum component aligns with price action, reducing noise.
Integrated Composite Value:
- Combines breakout strength and OBV momentum into a single metric for enhanced clarity.
- The final composite value highlights whether the market is bullish, bearish, or neutral.
Divergence Detection:
- Spot bullish divergences when the indicator rises while price falls, suggesting a potential upward reversal.
- Identify bearish divergences when the indicator falls while price rises, hinting at a potential downward reversal.
How It Works
Donchian Channel Analysis:
- Calculates the highest high and lowest low over a user-defined period to establish the upper and lower channels .
- Breakouts beyond these channels contribute to the breakout strength component.
OBV Momentum:
- Measures cumulative volume trends to validate price movements.
- Momentum is derived from the rate of change in smoothed OBV values.
Composite Calculation:
- Combines breakout strength and OBV momentum, normalized and scaled to -1 to 1 for clarity.
How to Use
Bullish Breakout:
- When the indicator value approaches 1 , it signals a strong upward breakout supported by positive OBV momentum.
- Example Action: Consider a Buy if price breaks the upper Donchian Channel with increasing OBV.
Bearish Breakout:
- When the indicator value approaches -1 , it indicates a strong downward breakout supported by negative OBV momentum.
- Example Action: Consider a Sell if price breaks the lower Donchian Channel with decreasing OBV.
Neutral Market:
- When the value is near 0 , the market is likely balanced with no significant breakout or momentum detected.
Divergence Opportunities:
- Bullish Divergence: Price makes lower lows, but the indicator trends upward → Potential upward reversal.
- Bearish Divergence: Price makes higher highs, but the indicator trends downward → Potential downward reversal.
Customization Options
Donchian Channel Length: Adjust the period for the upper and lower bounds.
OBV Smoothing Length: Modify the smoothing period for OBV to fine-tune momentum detection.
Scaling Adjustments: The composite value is automatically normalized for consistency across timeframes.
Ideal Use Cases
Breakout Trading: Identify and confirm strong breakouts in volatile markets.
Momentum Confirmation: Validate price movements with volume-based momentum.
Reversal Detection: Leverage divergences to spot potential market reversals.
Example Applications
Strong Bullish Signal:
- Price breaks the upper channel , and OBV shows increasing volume → Composite value near 1 .
- Action: Enter a Buy position and set a Stop Loss below the upper channel.
Strong Bearish Signal:
- Price breaks the lower channel , and OBV shows decreasing volume → Composite value near -1 .
- Action: Enter a Sell position and set a Stop Loss above the lower channel.
Neutral Market:
- Composite value near 0 suggests indecision or consolidation. Wait for a breakout.
Limitations
Best used alongside additional tools like RSI or MACD for filtering noise and improving decision-making.
Requires careful parameter tuning based on the asset and timeframe.
Final Thoughts
The Composite Indicator (Donchian + OBV) offers traders a versatile tool to navigate complex markets. By blending breakout analysis with volume-based momentum, this indicator provides an actionable edge for identifying high-probability opportunities and potential reversals.
Codi's Perp-Spot Basis# Perp-Spot Basis Indicator
This indicator calculates the percentage basis between perpetual futures and spot prices for crypto assets. It is inspired by the original concept from **Krugermacro**, with the added improvement of **automatic detection of the asset pairs** based on the current chart symbol. This enhancement makes it faster and easier to apply across different assets without manual configuration.
## How It Works
The indicator compares the perpetual futures price (e.g., `BTCUSDT.P`) to the spot price (e.g., `BTCUSDT`) on Binance. The difference is expressed as a percentage: (Perp - Spot) / Spot * 100
The results are displayed in a color-coded graph:
- **Blue (Positive Basis):** Perpetual futures are trading at a premium, indicating **bullish sentiment** among derivatives traders.
- **Red (Negative Basis):** Perpetual futures are trading at a discount, indicating **bearish sentiment** among derivatives traders.
This percentage basis is a core component in understanding funding rates and derivatives market dynamics. It serves as a faster proxy for funding rates, which typically lag behind real-time price movements.
---
## How to Use It
### General Concept
- **Red (Negative Basis):** Ideal to execute **longs** when derivatives traders are overly bearish.
- **Blue (Positive Basis):** Ideal to execute **shorts** when derivatives traders are overly bullish.
### Pullback Sniping
1. During an **uptrend**:
- If the basis turns **red** temporarily, it can signal an opportunity to **buy the dip**.
2. During a **downtrend**:
- If the basis turns **blue** temporarily, it can signal an opportunity to **sell the rip**.
3. Wait for the basis to **pop back** (higher in uptrend, lower in downtrend) to time entries more effectively—this often coincides with **stop runs** or **liquidations**.
### Intraday Execution
- **When price is falling**:
- If the basis is **red**, the move is derivatives-led (**normal**).
- If the basis is **blue**, spot traders are leading, and perps are offside—wait for **price dumps** before longing.
- **When price is rising**:
- If the basis is **blue**, the move is derivatives-led (**normal**).
- If the basis is **red**, spot traders are leading, and perps are offside—wait for **price pops** before shorting.
### Larger Time Frames
- **Consistently Blue Basis:** Indicates a **bull market** as derivatives traders are bullish over the long term.
- **Consistently Red Basis:** Indicates a **bear market** as derivatives traders are bearish over the long term.
---
## Improvements Over the Original
This version of the Perp-Spot Basis indicator **automatically detects the Binance perpetual futures and spot pairs** based on the current chart symbol. For example:
- If you are viewing `ETHUSDT`, it automatically references `ETHUSDT.P` for the perpetual futures pair and `ETHUSDT` for the spot pair in BINANCE.
Thin Liquidity Zones [PhenLabs]Thin Liquidity Zones with Volume Delta
Our advanced volume analysis tool identifies and visualizes significant liquidity zones using real-time volume delta analysis. This indicator helps traders pinpoint and monitor critical price levels where substantial trading activity occurs, providing precise volume flow measurement through lower timeframe analysis.
The tool works by leveraging the fact that hedge funds, institutions, and other large market participants strategically fill their orders in areas of thin liquidity to minimize slippage and market impact. By detecting these zones, traders gain valuable insights into potential areas of accumulation, distribution, and liquidity traps, allowing for more informed trading decisions.
🔍 Key Features
Real-time volume delta calculation using lower timeframe data
Dynamic zone creation based on volume spikes
Automatic timeframe optimization
Size-filtered zones to avoid noise
Custom delta timeframe scanning
Flexible analysis period selection
📊 Visual Demonstration
💡 How It Works
The indicator continuously scans for high-volume areas where trading activity exceeds the specified threshold (default 6.0x average volume). When detected, it creates zones that display the net volume delta, showing whether buying or selling pressure dominated that price level.
Key zone characteristics:
Size filtering prevents noise from large price swings
Volume delta shows actual buying/selling pressure
Zones automatically expire based on lookback period
Real-time updates as new volume data arrives
⚙️ Settings
Time Settings
Analysis Timeframe: 15M to 1W options
Custom Period: User-defined bar count
Delta Timeframe: Automatic or manual selection
Volume Analysis
Volume Threshold: Minimum spike multiple
Volume MA Length: Averaging period
Maximum Zone Size: Size filter percentage
Display Options
Zone Color: Customizable with transparency
Delta Display: On/Off toggle
Text Position: Left/Center/Right alignment
📌 Tips for Best Results
Adjust volume threshold based on instrument volatility
Monitor zone clusters for potential support/resistance
Consider reducing max zone size in volatile markets
Use in conjunction with price action and other indicators
⚠️ Important Notes
Requires volume data from your data provider
Lower timeframe scanning may impact performance
Maximum 500 zones maintained for optimization
Zone creation is filtered by both volume and size
🔧 Volume Delta Calculation
The indicator uses TradingView’s advanced volume delta calculation, which:
Scans lower timeframe data for precision
Measures actual buying vs selling pressure
Updates in real-time with new data
Provides clear positive/negative flow indication
This tool is ideal for traders focusing on volume analysis and order flow. It helps identify key levels where significant trading activity has occurred and provides insight into the nature of that activity through volume delta analysis.
Note: Performance may vary based on your chart’s timeframe. Adjust settings according to your trading style and the instrument’s characteristics. Past performance is not indicative of future results, DYOR.
Hourly Market Movement Pattern Indicator# Hourly Market Movement Pattern Indicator
This versatile technical analysis tool identifies the most active hours for trading by analyzing historical price movements. While it can be viewed on any timeframe chart, the indicator specifically tracks and displays which hours of the day historically show the strongest upward or downward price movements, helping traders optimize their trading schedule around these recurring hourly patterns.
## Core Features
- Tracks the best performing hours for both upward and downward movements
- Viewable on any timeframe chart while maintaining hourly analysis
- Clear visual display through a color-coded table overlay
- Real-time updates with new market data
- Works with all trading instruments (stocks, crypto, forex, futures, etc.)
## Timeframe Applications
### Chart Viewing Options
- Can be viewed on any timeframe chart (1min to Monthly)
- Maintains hourly pattern analysis regardless of chart timeframe
- Helps correlate hourly patterns with your preferred trading timeframe
- Allows detailed visualization of hourly patterns within your analysis period
### Intraday Trading
- Identify the most profitable hours for trading
- Plan trading sessions around historically strong hours
- Optimize entry and exit timing based on hourly patterns
- Structure day trading schedules around peak movement hours
### Swing Trading
- Use hourly statistics to optimize entry/exit timing
- Plan trade executions during historically strong hours
- Time position entries based on hourly success rates
- Enhance swing trading decisions with hourly pattern data
## Practical Applications
### Pattern Recognition
- Track recurring hourly market movements
- Identify institutional trading hour patterns
- Detect regular market cycle hours
- Recognize changes in hourly market behavior
### Risk Management
- Adjust position sizing based on historical hourly patterns
- Plan entries during statistically favorable hours
- Time stop loss adjustments around known volatile hours
- Scale positions according to hourly success rates
### Trade Planning
- Schedule trading sessions during optimal hours
- Plan trade executions around strong movement periods
- Structure trading day around peak hours
- Time position adjustments to favorable hours
## Setup Options
- Timeframe: View on any chart timeframe while tracking hourly patterns
- Visual Display: Non-intrusive table overlay
- Color Coding: Green for upward movements, Red for downward movements
- Hour Display: 24-hour format for global market compatibility
## Trading Strategy Integration
The indicator enhances trading approaches through:
- Optimal hour identification for trade execution
- Historical hourly pattern analysis
- Day trading session optimization
- Position timing based on hourly statistics
## Notes
This indicator proves particularly valuable for:
- Traders seeking to optimize their daily trading schedule
- Day traders focusing on peak market hours
- Swing traders optimizing entry/exit timing
- Traders adapting strategies to specific market hours
- International traders tracking hour-specific patterns across sessions
The tool's hourly pattern analysis provides crucial timing information regardless of your preferred chart timeframe or trading style, helping optimize trade execution around the most statistically favorable hours of the day.
ROC-Weighted MA Oscillator [SeerQuant]ROC-Weighted MA Oscillator (ROCWMA)
The ROC-Weighted MA Oscillator (ROCWMA) is a momentum-based indicator which uniquely combines the Rate of Change (ROC) with customizable moving averages, offering a dynamic oscillator for trend analysis. Featuring z-score normalization and weighted MA integration, the ROCWMA delivers actionable trend signals with customizable thresholds.
--------------------------------------------------------------------------------------------------
⚙️ How It Works
1️⃣ Rate of Change (ROC) Normalization
The indicator begins with a normalized ROC calculation over a customizable length, transforming raw momentum data into a dynamic range for enhanced analysis.
2️⃣ Weighted Moving Average (MA)
A custom moving average (MA) is calculated using selectable MA types such as TEMA, SMA, EMA, and more. The normalized ROC is then applied as a weight to derive the ROC-Weighted MA (RWMA), blending trend and momentum data.
3️⃣ Z-Score Oscillator
The RWMA is normalized using z-score calculations, resulting in a smoothed oscillator. This process highlights deviations from the mean, identifying overbought and oversold conditions dynamically.
4️⃣ Threshold Logic
Bullish (Uptrend): Oscillator exceeds the positive threshold.
Bearish (Downtrend): Oscillator drops below the negative threshold.
Neutral: Oscillator remains between thresholds.
5️⃣ Dynamic Visual Representation
A color-coded histogram reflects trend strength and direction.
Optional candle coloring visually emphasizes trends on the chart.
Gradient fills enhance clarity of threshold areas.
--------------------------------------------------------------------------------------------------
✨ Customizable Settings
ROC Settings
Define the ROC length for momentum calculation.
MA Settings
Choose from multiple MA types (TEMA, EMA, SMA, etc.).
Customize the length and data source for MA calculations.
Adjust the signal length for smoothing.
Threshold Settings
Set neutral, bullish, and bearish thresholds to match your strategy.
Style Settings
Toggle candle coloring for visual trend enhancement.
Select from five unique color schemes to suit your chart style.
--------------------------------------------------------------------------------------------------
🚀 Features and Benefits
Momentum-Weighted Analysis: Combines ROC with advanced moving averages for precise trend evaluation.
Dynamic Thresholds: Z-score-based logic adapts to market conditions.
Visual Clarity: Color-coded histograms, candles, and gradient fills make trend detection intuitive.
Highly Customizable: Flexible inputs and multiple MA types ensure adaptability to various trading styles.
--------------------------------------------------------------------------------------------------
📜 Disclaimer
This indicator is for educational purposes only and does not constitute financial advice. Past performance is not indicative of future results. Users should consult a licensed financial advisor before making trading decisions. Use at your own risk.
--------------------------------------------------------------------------------------------------
Dynamic EMA CrossoverThe Dynamic EMA Crossover indicator is designed to help traders identify trend transitions, visually understand market direction, and detect sideways consolidation zones. It simplifies decision-making by dynamically changing colors and highlighting areas of interest.
Key Features:
1. Dynamic EMA Crossovers:
• Uses two EMAs (default: 9 and 26 ) to identify bullish and bearish trends.
• EMAs and the area between them turn green during bullish trends and red during bearish trends for easy visualization.
2. Sideways Market Detection:
• Automatically detects periods of market consolidation when EMAs overlap for 10 consecutive candles and the price movement remains narrow.
• Sideways zones are highlighted with grey background, helping traders avoid false breakouts and trendless markets.
3. Customizable Inputs:
• Adjust the lengths of the two EMAs and the sensitivity of the overlap detection to match your trading style and market conditions.
How It Works:
• Trend Identification:
• When the shorter EMA crosses above the longer EMA, a bullish trend is indicated.
• When the shorter EMA crosses below the longer EMA, a bearish trend is indicated.
• The indicator dynamically adjusts the colors of the EMAs and fills the area between them for clear trend visibility.
• Sideways Market Detection:
• When the shorter EMA and longer EMA stay close (within a customizable sensitivity) for a fixed period (hardcoded to 10 candles), the indicator identifies a sideways market.
• This feature helps traders avoid entering trades during choppy or indecisive market conditions.
Who Is This For?
This indicator is ideal for:
• Trend traders looking for clear signals of trend direction.
• Swing traders who want to avoid trading in sideways markets.
• Scalpers who need quick and reliable visual cues for short-term market behavior.
Use Cases:
1. Bullish/Bearish Trends:
• Enter trades in the direction of the trend as the crossover occurs and colors change.
2. Sideways Zones:
• Avoid trades during periods of consolidation and wait for a clear breakout.
Mashup Logic:
This indicator combines:
1. EMA Crossovers:
• A tried-and-tested method for trend detection using two moving averages.
• Dynamic visual cues for bullish and bearish market phases.
2. Sideways Market Detection:
• Innovative logic to highlight sideways zones based on EMA overlap and price range analysis.
• Helps reduce noise and avoid trading during trendless periods.
3. Customization and Flexibility:
• Fully adjustable EMA lengths and overlap sensitivity to adapt to different markets and trading styles.
RSI Volatility Suppression Zones [BigBeluga]RSI Volatility Suppression Zones is an advanced indicator that identifies periods of suppressed RSI volatility and visualizes these suppression zones on the main chart. It also highlights breakout dynamics, giving traders actionable insights into potential market momentum.
🔵 Key Features:
Detection of Suppression Zones:
Identifies periods where RSI volatility is suppressed and marks these zones on the main price chart.
Breakout Visualization:
When the price breaks above the suppression zone, the box turns aqua, and an upward label is drawn to indicate a bullish breakout.
If the price breaks below the zone, the box turns purple, and a downward label is drawn for a bearish breakout.
Breakouts accompanied by a "+" label represent strong moves caused by short-lived, tight zones, signaling significant momentum.
Wave Labels for Consolidation:
If the suppression zone remains unbroken, a "wave" label is displayed within the gray box, signifying continued price stability within the range.
Gradient Intensity Below RSI:
A gradient strip below the RSI line increases in intensity based on the duration of the suppressed RSI volatility period.
This visual aid helps traders gauge how extended the low volatility phase is.
🔵 Usage:
Identify Breakouts: Use color-coded boxes and labels to detect breakouts and their direction, confirming potential trend continuation or reversals.
Evaluate Market Momentum: Leverage "+" labels for strong breakout signals caused by short suppression phases, indicating significant market moves.
Monitor Price Consolidation: Observe gray boxes and wave labels to understand ongoing consolidation phases.
Analyze RSI Behavior: Utilize the gradient strip to measure the longevity of suppressed volatility phases and anticipate breakout potential.
RSI Volatility Suppression Zones provides a powerful visual representation of RSI volatility suppression, breakout signals, and price consolidation, making it a must-have tool for traders seeking to anticipate market movements effectively.
Relative Risk MetricOVERVIEW
The Relative Risk Metric is designed to provide a relative measure of an asset's price, within a specified range, over a log scale.
PURPOSE
Relative Position Assessment: Visualizes where the current price stands within a user-defined range, adjusted for log scale.
Logarithmic Transformation: Utilizes the natural log to account for a log scale of prices, offering a more accurate representation of relative positions.
Calculation: The indicator calculates a normalized value via the function Relative Price = / log(UpperBound) − log(LowerBound) . The result is a value between 0 and 1, where 0 corresponds to the lower bound and 1 corresponds to the upper bound on a log scale.
VISUALIZATION
The indicator plots three series:
Risk Metric - a plot of the risk metric value that’s computed from an asset's relative price so that it lies within a logarithmic range between 0.0 & 1.0.
Smoothed Risk Metric - a plot of the risk metric that’s been smoothed.
Entry/Exit - a scatter plot for identified entry and exit. Values are expressed as percent and are coded as red being exit and green being entity. E.g., a red dot at 0.02 implies exit 2% of the held asset. A green dot at 0.01 implies use 1% of a designated capital reserve.
USAGE
Risk Metric
The risk metric transformation function has several parameters. These control aspects such as decay, sensitivity, bounds and time offset.
Decay - Acts as an exponent multiplier and controls how quickly dynamic bounds change as a function of the bar_index.
Time Offset - provides a centering effect of the exponential transformation relative to the current bar_index.
Sensitivity - controls how sensitive to time the dynamic bound adjustments should be.
Baseline control - Serves as an additive offset for dynamic bounds computation which ensures that bounds never become too small or negative.
UpperBound - provides headroom to accomodate growth an assets price from the baseline. For example, an upperbound of 3.5 accommodates a 3.5x growth from the baseline value (e.g., $100 -> $350).
LowerBound - provides log scale compression such that the overall metric provides meaningful insights for prices well below the average whilst avoiding extreme scaling. A lowerbound of 0.25 corresponds to a price that is approx one quarter of a normalised baseline in a log context.
Weighted Entry/Exit
This feature provides a weighted system for identifying DCA entry and exit. This weighting mechanism adjusts the metric's interpretation to highlight conditions based on dynamic thresholds and user-defined parameters to identify high-probability zones for entry/exit actions and provide risk-adjusted insights.
Weighting Parameters
The weighting function supports fine-tuning of the computed weighted entry/exit values
Base: determines the foundational multiplier for weighting the entry/exit value. A higher base amplifies the weighting effect, making the weighted values more pronounced. It acts as a scaling factor to control the overall magnitude of the weighting.
Exponent: adjusts the curve of the weighting function. Higher exponent values increase sensitivity, emphasizing differences between risk metric values near the entry or exit thresholds. This creates a steeper gradient for the computed entry/exit value making it more responsive to subtle shifts in risk levels.
Cut Off: specifies the maximum percentage (expressed as a fraction of 1.0) that the weighted entry/exit value can reach. This cap ensures the metric remains within a meaningful range and avoids skewing
Exit condition: Defines a threshold for exit. When the risk metric is below the exit threshold (but above the entry threshold) then entry/exit is neutral.
Entry condition: Defines a threshold for entry. When the risk metric is above the entry threshold (but below the exit threshold) then entry/exit is neutral.
Weighting Behaviour
For entry conditions - value is more heavily weighted as the metric approaches the entry threshold, emphasizing lower risk levels.
For exit conditions - value is more heavily weighted as the metric nears the exit threshold, emphasizing increased risk levels.
USE-CASES
Identifying potential overbought or oversold conditions within the specified logarithmic range.
Assisting in assessing how the current price compares to historical price levels on a logarithmic scale.
Guiding decision-making processes by providing insights into the relative positioning of prices within a log context
CONSIDERATIONS
Validation: It's recommended that backtesting over historical data be done before acting on any identified entry/exit values.
User Discretion: This indicator focus on price risk. Consider other risk factors and general market conditions as well.
lib_statemachine_modifiedLibrary "lib_statemachine_modified"
Modified to fix bugs and create getState and priorState methods.
method step(this, before, after, condition)
Namespace types: StateMachine
Parameters:
this (StateMachine)
before (int) : (int): Current state before transition
after (int) : (int): State to transition to
condition (bool) : (bool): Condition to trigger the transition
Returns: (bool): True if the state changed, else False
method step(this, after, condition)
Namespace types: StateMachine
Parameters:
this (StateMachine)
after (int) : (int): State to transition to
condition (bool) : (bool): Condition to trigger the transition
Returns: (bool): True if the state changed, else False
method currentState(this)
Namespace types: StateMachine
Parameters:
this (StateMachine)
method previousState(this)
Namespace types: StateMachine
Parameters:
this (StateMachine)
method changed(this, within_bars)
Namespace types: StateMachine
Parameters:
this (StateMachine)
within_bars (int) : (int): Number of bars to look back for a state change
Returns: (bool): True if a state change occurred within the timeframe, else False
method reset(this, condition, min_occurrences)
Namespace types: StateMachine
Parameters:
this (StateMachine)
condition (bool) : (bool): Condition to trigger the reset
min_occurrences (int) : (int): Minimum number of times the condition must be true to reset
Returns: (bool): True if the state was reset, else False
StateMachine
Fields:
state (series int)
neutral (series int)
enabled (series bool)
reset_counter (series int)
prior_state (series int)
last_change_bar (series int)
TASC 2025.02 Autocorrelation Indicator█ OVERVIEW
This script implements the Autocorrelation Indicator introduced by John Ehlers in the "Drunkard's Walk: Theory And Measurement By Autocorrelation" article from the February 2025 edition of TASC's Traders' Tips . The indicator calculates the autocorrelation of a price series across several lags to construct a periodogram , which traders can use to identify market cycles, trends, and potential reversal patterns.
█ CONCEPTS
Drunkard's walk
A drunkard's walk , formally known as a random walk , is a type of stochastic process that models the evolution of a system or variable through successive random steps.
In his article, John Ehlers relates this model to market data. He discusses two first- and second-order partial differential equations, modified for discrete (non-continuous) data, that can represent solutions to the discrete random walk problem: the diffusion equation and the wave equation. According to Ehlers, market data takes on a mixture of two "modes" described by these equations. He theorizes that when "diffusion mode" is dominant, trading success is almost a matter of luck, and when "wave mode" is dominant, indicators may have improved performance.
Pink spectrum
John Ehlers explains that many recent academic studies affirm that market data has a pink spectrum , meaning the power spectral density of the data is proportional to the wavelengths it contains, like pink noise . A random walk with a pink spectrum suggests that the states of the random variable are correlated and not independent. In other words, the random variable exhibits long-range dependence with respect to previous states.
Autocorrelation function (ACF)
Autocorrelation measures the correlation of a time series with a delayed copy, or lag , of itself. The autocorrelation function (ACF) is a method that evaluates autocorrelation across a range of lags , which can help to identify patterns, trends, and cycles in stochastic market data. Analysts often use ACF to detect and characterize long-range dependence in a time series.
The Autocorrelation Indicator evaluates the ACF of market prices over a fixed range of lags, expressing the results as a color-coded heatmap representing a dynamic periodogram. Ehlers suggests the information from the periodogram can help traders identify different market behaviors, including:
Cycles : Distinguishable as repeated patterns in the periodogram.
Reversals : Indicated by sharp vertical changes in the periodogram when the indicator uses a short data length .
Trends : Indicated by increasing correlation across lags, starting with the shortest, over time.
█ USAGE
This script calculates the Autocorrelation Indicator on an input "Source" series, smoothed by Ehlers' UltimateSmoother filter, and plots several color-coded lines to represent the periodogram's information. Each line corresponds to an analyzed lag, with the shortest lag's line at the bottom of the pane. Green hues in the line indicate a positive correlation for the lag, red hues indicate a negative correlation (anticorrelation), and orange or yellow hues mean the correlation is near zero.
Because Pine has a limit on the number of plots for a single indicator, this script divides the periodogram display into three distinct ranges that cover different lags. To see the full periodogram, add three instances of this script to the chart and set the "Lag range" input for each to a different value, as demonstrated in the chart above.
With a modest autocorrelation length, such as 20 on a "1D" chart, traders can identify seasonal patterns in the price series, which can help to pinpoint cycles and moderate trends. For instance, on the daily ES1! chart above, the indicator shows repetitive, similar patterns through fall 2023 and winter 2023-2024. The green "triangular" shape rising from the zero lag baseline over different time ranges corresponds to seasonal trends in the data.
To identify turning points in the price series, Ehlers recommends using a short autocorrelation length, such as 2. With this length, users can observe sharp, sudden shifts along the vertical axis, which suggest potential turning points from upward to downward or vice versa.
Ehlers Maclaurin Ultimate Smoother [CT]Ehlers Maclaurin Ultimate Smoother
Introduction
The Ehlers Maclaurin Ultimate Smoother is an innovative enhancement of the classic Ehlers SuperSmoother. By leveraging advanced Maclaurin series approximations, this indicator offers superior market analysis and signal generation.
The indicator combines Ehlers' Ultimate Smoother with Maclaurin series approximations to create a more efficient and accurate smoothing mechanism:
Input price data passes through the initial smoothing phase
Maclaurin series approximates trigonometric functions
Enhanced high-pass filter removes market noise
Final smoothing phase produces the output signal
Why the Maclaurin Approach?
The Maclaurin series is a special form of the Taylor series, centered around 0. It provides an efficient way to approximate complex functions using polynomial terms. In this indicator, we use the Maclaurin approach to improve the sine and cosine functions, resulting in:
Faster Calculations: By using polynomial approximations, we significantly reduce computational complexity.
Improved Stability: The approximation provides a more stable numerical basis for calculations.
Preservation of Precision: Despite the approximation, we maintain the precision needed for price smoothing.
Calculations
The indicator employs several key mathematical components:
Maclaurin Series Approximation:
sin(x) ≈ x - x³/3! + x⁵/5! - x⁷/7! + x⁹/9!
cos(x) ≈ 1 - x²/2! + x⁴/4! - x⁶/6! + x⁸/8!
Smoothing Algorithm:
Uses exponential smoothing with optimized coefficients
Implements high-pass filtering for noise reduction
Applies dynamic weighting based on market conditions
Mathematical Foundation
Utilizes Maclaurin series for trigonometric approximation
Implements Ehlers' smoothing principles
Incorporates advanced filtering techniques
Technical Advantages
Signal Processing:
Lag Reduction: Faster signal detection with less delay.
Noise Filtration: Effective elimination of high-frequency noise.
Precision Enhancement: Preservation of critical price movements.
Adaptive Processing: Dynamic response to market volatility.
Visual Enhancements:
Smart color intensity mapping.
Real-time visualization of trend strength.
Adaptive opacity based on movement significance.
Implementation
Core Configuration:
Plot Type: Choose between the original and the Maclaurin enhanced version.
Length: Default set to 30, optimal for daily timeframes.
hpLength: Default set to 10 for enhanced noise reduction.
Advanced Parameters:
The indicator offers advanced control with:
Dual processing modes (Original/Maclaurin).
Dynamic color intensity system.
Customizable smoothing parameters.
Professional Analysis Tools:
Accurate trend reversal identification.
Advanced support/resistance detection.
Superior performance in volatile markets.
Technical Specifications
Maclaurin Series Implementation:
The indicator employs a 5-term Maclaurin series approximation for both sine and cosine, ensuring efficient and accurate computation.
Performance Metrics
Improved processing efficiency.
Reduced memory utilization.
Increased signal accuracy.
Licensing & Attribution
© 2024 Mupsje aka CasaTropical
Professional Credits
Original Ultimate and SuperSmoother concept: John F. Ehlers
Maclaurin enhancement: Casa Tropical (CT)
www.mathsisfun.com
NIFTY BANKNIFTY MIDCAP SENSEX FINNIFTY LEVELS)this indicator uses Gann's methods which are based on the idea that markets move in predictable geometric patterns and are influenced by time and price.
Key Concepts of Gann Levels:
Gann Angles:
Gann believed that specific angles could indicate the trend of a market. The most notable is the 45-degree angle, which he called the "1x1" or "45-degree line."
Angles are drawn from a significant price point, such as a high or low, and represent the speed or slope of the price movement.
Gann Square of 9:
A mathematical tool that calculates support and resistance levels based on the square root of numbers and their geometric relationships.
It aligns numbers in a spiral format, starting from a central point, and helps identify key price levels at certain degrees.
Gann Fan:
A series of lines drawn at specific angles from a significant high or low. Common angles include 1x1 (45°), 2x1 (26.25°), and 1x2 (63.75°).
These angles help traders identify potential areas where the trend might accelerate, decelerate, or reverse.
Gann Retracements:
Levels based on key price ratios derived from natural laws and geometric principles. Common Gann retracement levels include 12.5%, 25%, 50%, and 75%.
Time Analysis:
Gann emphasized the importance of time cycles. He believed markets move in time-based patterns, such as yearly cycles, seasonal cycles, or specific time intervals.
MCDX_SignalThe MCDX indicator (Market Cycle Dynamic Index) is a technical indicator developed by Trung Pham. It is a tool used for analyzing the stock market, often utilized to identify big money flow (Big Money) and evaluate the strength of individual stocks or the overall market.
MCDX is known for its distinctive histogram chart with red and green bars. The red bars typically represent the inflow of big money, while the green bars indicate small money flow or outflows.
Volume Surge Webhook AlertThis TradingView indicator, named "Volume Surge Webhook Alert," is designed to find significant increases in trading volume and send out alerts with key information. It works by looking back at the volume over a certain number of past candlesticks, which you can set using the "Lookback Period" input. The indicator calculates the average volume during this period. Then, it sets a threshold for what counts as a "volume surge." This threshold is a percentage increase over the average volume, and you can adjust this percentage using the "Volume Surge Threshold (%)" input.
When the current candlestick's volume is higher than this threshold, the indicator considers it a volume surge. To help you see this visually, the indicator plots three lines on a separate chart: the average volume (in blue), the current volume (in red), and the threshold volume (in gray circles).
If a volume surge happens, the indicator creates a webhook alert. This alert sends a message in a structured format (like a digital envelope) that contains the following information: the symbol of the stock or cryptocurrency, the timeframe of the chart you're looking at, the current volume, the average volume, the threshold volume, and a simple message saying a volume surge was detected. This alert is sent only once when the candlestick closes with a volume surge.
Additionally, when a volume surge is detected, a small red exclamation mark "!" will appear above that candlestick on the main price chart.
Essentially, this indicator helps traders spot times when trading volume is unusually high, which can sometimes be a sign of important price movements. You can customize how sensitive the indicator is by changing the "Lookback Period" and the "Volume Surge Threshold (%)". The webhook alerts allow you to be notified automatically when these surges occur, so you don't have to constantly watch the charts.
BK Multiple MA, RMA, SMA, HMA, VWAP, Rolling VWAP **Indicator Description**
I’m incredibly proud to introduce my third indicator to the TradingView community: **BK Multiple MA with HMA, VWAP, and Rolling VWAP**! This tool has been a game-changer in my trading strategy, and I’m excited to share it with others who are navigating the markets.
This indicator holds a special place in my heart because it represents the first technical analysis concept introduced to me by my mentor when I began apprenticing under him. His wisdom, guidance, and passion for trading—and for life—left an indelible mark on my journey. I dedicate this work, and every indicator I introduce, to the foundation he helped me build, while giving glory first and foremost to God.
**Moving Averages (MAs)** are one of the most widely used tools in technical analysis, and this indicator takes them to the next level. It allows you to plot **six fully customizable moving averages simultaneously**, with options including:
- **Exponential Moving Average (EMA)**
- **Simple Moving Average (SMA)**
- **Relative Moving Average (RMA)**
- **Hull Moving Average (HMA)**
- **Volume Weighted Average Price (VWAP)**
- **Rolling VWAP**
This flexibility makes the indicator highly versatile, whether you’re a day trader, swing trader, or long-term investor. By customizing periods, colors, and line widths for each MA, you can tailor the indicator to perfectly suit your trading style.
**Key Features**
1. **Six Fully Customizable MAs**:
- Adjust periods, line colors, and widths to match your preferences.
- Select from EMA, SMA, RMA, HMA, VWAP, or Rolling VWAP for each line.
2. **Unique Rolling VWAP Option**:
- Rolling VWAP calculates the volume-weighted average price over a user-defined period, such as 200 candles.
- This feature is ideal for traders seeking volume-weighted levels that don’t reset with each session, making it invaluable for trend-following and swing trading.
3. **HMA for Smoother Trends**:
- The Hull Moving Average (HMA) is designed to reduce lag and provide a responsive, noise-free view of price trends.
- It’s a powerful tool for spotting reversals and confirming directional momentum.
4. **Session VWAP**:
- Traditional VWAP resets with each trading session, making it a reliable benchmark for intraday support and resistance levels.
**How It Works**
- **VWAP**: Reflects the average price weighted by volume for the current trading session, commonly used by institutional traders to identify key price levels.
- **Rolling VWAP**: Extends VWAP functionality by calculating over a user-defined period, allowing for flexible multi-timeframe analysis.
- **HMA**: A fast, smooth moving average that reacts quickly to price changes while filtering out noise.
The combination of these options provides traders with a comprehensive view of market dynamics, enabling better decision-making.
**Final Thoughts**
This indicator is deeply meaningful to me because it represents the first concept my mentor introduced when I began apprenticing under him. His wisdom, guidance, and passion for trading—and for life—left an indelible mark on my journey. I dedicate this work, and every indicator I introduce, to the foundation he helped me build, while giving glory first and foremost to God.
If this indicator helps you succeed, I humbly ask that you honor the blessings in your life by giving back—whether through acts of kindness, philanthropy, or helping others in need.
May the Almighty guide us all toward wisdom and success in our endeavors. All glory belongs to God!
Inside Bar/Outside Bar/Mother Bar Box By SmartTrader888This Indicator shows:
1. Inside Bar
2. Outside Bar
3. Mother Bar box (Box the mother bar and all subsequent inside bars)
This indicator handles correctly the edge conditions such as:
1. bar close = bar open
2. current bar low equals to mother bar low or current bar high equals mother bar high
Smart Moving AveragesSmart Moving Averages analyzes the dynamic interplay between price action and multiple moving averages to identify high-probability support and resistance zones.
The script's distinguishing features include:
Bounce detection that filters out noise by requiring specific penetration thresholds (0.1-1.5%), helping traders identify genuine support tests versus false signals
Real-time MA clustering analysis that reveals zones where multiple moving averages converge, indicating potentially stronger support/resistance levels
Statistical tracking of bounce success rates for each MA, allowing traders to identify which moving averages are most reliable for the current market conditions
Power bounce detection that combines EMA spread analysis with trend confirmation, highlighting especially strong bullish setups
Visual stack status system that instantly communicates market health through an intuitive color-coded display showing how many MAs are below price
The script helps traders make more informed decisions by quantifying the historical reliability of different moving averages while providing real-time analysis of MA interactions with price. This systematic approach moves beyond simple MA crossovers to identify higher probability trading opportunities.
Lost Bar Locator v1 [Yaphott]Lost Bar Locator v1 helps you locate missing data on your chart.
It does this by looking for consecutive bars that have a delta time greater than the current interval.
Two lines are drawn for each group of one or more missing bars:
Bar before the missing bar(s).
Bar after the missing bar(s).
Dividend Payout RatioShows the dividend payout ratio for the specific stock.
The dividend payout ratio indicates if the dividend payout is sustainable in the long run. Therefore,
1. A dividend payout under 50% is considered sustainable. The line will be green
2. A dividend payout over 50% and under 100%, the line will be yellow, is considered a stock to investigate since the dividend payout may have to be cut in the future which will cause the stock price to crash.
3. A dividend payout over 100%, the line will be red, is considered unsustainable and the dividend payout will most likely be cut in the near future. It can take up to a few years for the dividend cut to happen if the financials do not improve.
If the dividend payout ratio is over 100%, this means that the company is paying a dividend amount over $1 for every $1 earned. Therefore, the company must borrow money or find another source to pay the dividend amount that the company cannot afford to pay with the current earnings.
Calculating the dividend payout ratio:
Divide dividend paid by earnings after tax and multiplying the result by 100%.