Reversal Point Dynamics⇋ Reversal Point Dynamics (RPD)
This is not an indicator; it is a complete system for deconstructing the mechanics of a market reversal. Reversal Point Dynamics (RPD) moves far beyond simplistic pattern recognition, venturing into a deep analysis of the underlying forces that cause trends to exhaust, pause, and turn. It is engineered from the ground up to identify high-probability reversal points by quantifying the confluence of market dynamics in real-time.
Where other tools provide a static signal, RPD delivers a dynamic probability. It understands that a true market turning point is not a single event, but a cascade of failing momentum, structural breakdown, and a shift in market order. RPD's core engine meticulously analyzes each of these dynamic components—the market's underlying state, its velocity and acceleration, its degree of chaos (entropy), and its structural framework. These forces are synthesized into a single, unified Probability Score, offering you an unprecedented, transparent view into the conviction behind every potential reversal.
This is not a "black box" system. It is an open-architecture engine designed to empower the discerning trader. Featuring real-time signal projection, an integrated Fibonacci R2R Target Engine, and a comprehensive dashboard that acts as your Dynamics Control Center , RPD gives you a complete, holistic view of the market's state.
The Theoretical Core: Deconstructing Market Dynamics
RPD's analytical power is born from the intelligent synthesis of multiple, distinct theoretical models. Each pillar of the engine analyzes a different facet of market behavior. The convergence of these analyses—the "Singularity" event referenced in the dashboard—is what generates the final, high-conviction probability score.
1. Pillar One: Quantum State Analysis (QSA)
This is the foundational analysis of the market's current state within its recent context. Instead of treating price as a random walk, QSA quantizes it into a finite number of discrete "states."
Formulaic Concept: The engine establishes a price range using the highest high and lowest low over the Adaptive Analysis Period. This range is then divided into a user-defined number of Analysis Levels. The current price is mapped to one of these states (e.g., in a 9-level system, State 0 is the absolute low, and State 8 is the absolute high).
Analytical Edge: This acts as a powerful foundational filter. The engine will only begin searching for reversal signals when the market has reached a statistically stretched, extreme state (e.g., State 0 or 8). The Edge Sensitivity input allows you to control exactly how close to this extreme edge the price must be, ensuring you are trading from points of maximum potential exhaustion.
2. Pillar Two: Price State Roc (PSR) - The Dynamics of Momentum
This pillar analyzes the kinetic forces of the market: its velocity and acceleration. It understands that it’s not just where the price is, but how it got there that matters.
Formulaic Concept: The psr function calculates two derivatives of price.
Velocity: (price - price ). This measures the speed and direction of the current move.
Acceleration: (velocity - velocity ). This measures the rate of change in that speed. A negative acceleration (deceleration) during a strong rally is a critical pre-reversal warning, indicating momentum is fading even as price may be pushing higher.
Analytical Edge: The engine specifically hunts for exhaustion patterns where momentum is clearly decelerating as price reaches an extreme state. This is the mechanical signature of a weakening trend.
3. Pillar Three: Market Entropy Analysis - The Dynamics of Order & Chaos
This is RPD's chaos filter, a concept borrowed from information theory. Entropy measures the degree of randomness or disorder in the market's price action.
Formulaic Concept: The calculateEntropy function analyzes recent price changes. A market moving directionally and smoothly has low entropy (high order). A market chopping back and forth without direction has high entropy (high chaos). The value is normalized between 0 and 1.
Analytical Edge: The most reliable trades occur in low-entropy, ordered environments. RPD uses the Entropy Threshold to disqualify signals that attempt to form in chaotic, unpredictable conditions, providing a powerful shield against whipsaw markets.
4. Pillar Four: The Synthesis Engine & Probability Calculation
This is where all the dynamic forces converge. The final probability score is a weighted calculation that heavily rewards confluence.
Formulaic Concept: The calculateProbability function intelligently assembles the final score:
A Base Score is established from trend strength and entropy.
An Entropy Score adds points for low entropy (order) and subtracts for high entropy (chaos).
A significant Divergence Bonus is awarded for a classic momentum divergence.
RSI & Volume Bonuses are added if momentum oscillators are in extreme territory or a volume spike confirms institutional interest.
MTF & Adaptive Bonuses add further weight for alignment with higher timeframe structure.
Analytical Edge: A signal backed by multiple dynamic forces (e.g., extreme state + decelerating momentum + low entropy + volume spike) will receive an exponentially higher probability score. This is the very essence of analyzing reversal point dynamics.
The Command Center: Mastering the Inputs
Every input is a precise lever of control, allowing you to fine-tune the RPD engine to your exact trading style, market, and timeframe.
🧠 Core Algorithm
Predictive Mode (Early Detection):
What It Is: Enables the engine to search for potential reversals on the current, unclosed bar.
How It Works: Analyzes intra-bar acceleration and state to identify developing exhaustion. These signals are marked with a ' ? ' and are tentative.
How To Use It: Enable for scalping or very aggressive day trading to get the earliest possible indication. Disable for swing trading or a more conservative approach that waits for full bar confirmation.
Live Signal Mode (Current Bar):
What It Is: A highly aggressive mode that plots tentative signals with a ' ! ' on the live bar based on projected price and momentum. These signals repaint intra-bar.
How It Works: Uses a linear regression projection of the close to anticipate a reversal.
How To Use It: For advanced users who use intra-bar dynamics for execution and understand the nature of repainting signals.
Adaptive Analysis Period:
What It Is: The main lookback period for the QSA, PSR, and Entropy calculations. This is the engine's "memory."
How It Works: A shorter period makes the engine highly sensitive to local price swings. A longer period makes it focus only on major, significant market structure.
How To Use It: Scalping (1-5m): 15-25. Day Trading (15m-1H): 25-40. Swing Trading (4H+): 40-60.
Fractal Strength (Bars):
What It Is: Defines the strength of the pivot detection used for confirming reversal events.
How It Works: A value of '2' requires a candle's high/low to be more extreme than the two bars to its left and right.
How To Use It: '2' is a robust standard. Increase to '3' for an even stricter definition of a structural pivot, which will result in fewer signals.
MTF Multiplier:
What It Is: Integrates pivot data from a higher timeframe for confluence.
How It Works: A multiplier of '4' on a 15-minute chart will pull pivot data from the 1-hour chart (15 * 4 = 60m).
How To Use It: Set to a multiple that corresponds to your preferred higher timeframe for contextual analysis.
🎯 Signal Settings
Min Probability %:
What It Is: Your master quality filter. A signal is only plotted if its score exceeds this threshold.
How It Works: Directly filters the output of the final probability calculation.
How To Use It: High-Quality (80-95): For A+ setups only. Balanced (65-75): For day trading. Aggressive (50-60): For scalping.
Min Signal Distance (Bars):
What It Is: A noise filter that prevents signals from clustering in choppy conditions.
How It Works: Enforces a "cooldown" period of N bars after a signal.
How To Use It: Increase in ranging markets to focus on major swings. Decrease on lower timeframes.
Entropy Threshold:
What It Is: Your "chaos shield." Sets the maximum allowable market randomness for a signal.
How It Works: If calculated entropy is above this value, the signal is invalidated.
How To Use It: Lower values (0.1-0.5): Extremely strict. Higher values (0.7-1.0): More lenient. 0.85 is a good balance.
Adaptive Entropy & Aggressive Mode:
What It Is: Toggles for dynamically adjusting the engine's core parameters.
How It Works: Adaptive Entropy can slightly lower the required probability in strong trends. Aggressive Mode uses more lenient settings across the board.
How To Use It: Keep Adaptive on. Use Aggressive Mode sparingly, primarily for scalping highly volatile assets.
📊 State Analysis
Analysis Levels:
What It Is: The number of discrete "states" for the QSA.
How It Works: More levels create a finer-grained analysis of price location.
How To Use It: 6-7 levels are ideal. Increasing to 9 can provide more precision on very volatile assets.
Edge Sensitivity:
What It Is: Defines how close to the absolute top/bottom of the range price must be.
How It Works: '0' means price must be in the absolute highest/lowest state. '3' allows a signal within the top/bottom 3 states.
How To Use It: '3' provides a good balance. Lower it to '1' or '0' if you only want to trade extreme exhaustion.
The Dashboard: Your Dynamics Control Center
The dashboard provides a transparent, real-time view into the engine's brain. Use it to understand the context behind every signal and to gauge the current market environment at a glance.
🎯 UNIFIED PROB SCORE
TOTAL SCORE: The highest probability score (either Peak or Valley) the engine is currently calculating. This is your main at-a-glance conviction metric. The "Singularity" header refers to the event where market dynamics align—the event RPD is built to detect.
Quality: A human-readable interpretation of the Total Score. "EXCEPTIONAL" (🌟) is a rare, A+ confluence event. "STRONG" (💪) is a high-quality, tradable setup.
📊 ORDER FLOW & COMPONENT ANALYSIS
Volume Spike: Shows if the current volume is significantly higher than average (YES/NO). A 'YES' adds major confirmation.
Peak/Valley Conf: This breaks down the probability score into its directional components, showing you the separate confidence levels for a potential top (Peak) versus a bottom (Valley).
🌌 MARKET STRUCTURE
HTF Trend: Shows the direction of the underlying trend based on a Supertrend calculation.
Entropy: The current market chaos reading. "🔥 LOW" is an ideal, ordered state for trading. "😴 HIGH" is a warning of choppy, unpredictable conditions.
🔮 FIB & R2R ZONE (Large Dashboard)
This section gives you the status of the Fibonacci Target Engine. It shows if an Active Channel (entry zone) or Stop Zone (invalidation zone) is active and displays the precise price levels for the static entry, target, and stop calculated at the time of the signal.
🛡️ FILTERS & PREDICTIVES (Large Dashboard)
This panel provides a status check on all the bonus filters. It shows the current RSI Status, whether a Divergence is present, and if a Live Pending signal is forming.
The Visual Interface: A Symphony of Data
Every visual element is designed for instant, intuitive interpretation of market dynamics.
Signal Markers: These are the primary outputs of the engine.
▼/▲ b: A fully confirmed signal that has passed all filters.
? b: A tentative signal generated in Predictive Mode, indicating developing dynamics.
◈ b: This diamond icon replaces the standard triangle when the signal is confirmed by a strong momentum divergence, highlighting it as a superior setup where dynamics are misaligned with price.
Harmonic Wave: The flowing, colored wave around the price.
What It Represents: The market's "flow dynamic" and volatility.
How to Interpret It: Expanding waves show increasing volatility. The color is tied to the "Quantum Color" in your theme, representing the underlying energy field of the market.
Entropy Particles: The small dots appearing above/below price.
What They Represent: A direct visualization of the "order dynamic."
How to Interpret Them: Their presence signifies a low-entropy, ordered state ideal for trading. Their color indicates the direction of momentum (PSR velocity). Their absence means the market is too chaotic (high entropy).
The Fibonacci Target Engine: The dynamic R2R system appearing post-signal.
Static Fib Levels: Colored horizontal lines representing the market's "structural dynamic."
The Green "Active Channel" Box: Your zone of consideration. An area to manage a potential entry.
Development Philosophy
Reversal Point Dynamics was engineered to answer a fundamental question: can we objectively measure the forces behind a market turn? It is a synthesis of concepts from market microstructure, statistics, and information theory. The objective was never to create a "perfect" system, but to build a robust decision-support tool that provides a measurable, statistical edge by focusing on the principle of confluence.
By demanding that multiple, independent market dynamics align simultaneously, RPD filters out the vast majority of market noise. It is designed for the trader who thinks in terms of probability and risk management, not in terms of certainties. It is a tool to help you discount the obvious and bet on the unexpected alignment of market forces.
"Markets are constantly in a state of uncertainty and flux and money is made by discounting the obvious and betting on the unexpected."
— George Soros
Trade with insight. Trade with anticipation.
— Dskyz, for DAFE Trading Systems
Cari dalam skrip untuk "Exponential"
log.info() - 5 Exampleslog.info() is one of the most powerful tools in Pine Script that no one knows about. Whenever you code, you want to be able to debug, or find out why something isn’t working. The log.info() command will help you do that. Without it, creating more complex Pine Scripts becomes exponentially more difficult.
The first thing to note is that log.info() only displays strings. So, if you have a variable that is not a string, you must turn it into a string in order for log.info() to work. The way you do that is with the str.tostring() command. And remember, it's all lower case! You can throw in any numeric value (float, int, timestamp) into str.string() and it should work.
Next, in order to make your output intelligible, you may want to identify whatever value you are logging. For example, if an RSI value is 50, you don’t want a bunch of lines that just say “50”. You may want it to say “RSI = 50”.
To do that, you’ll have to use the concatenation operator. For example, if you have a variable called “rsi”, and its value is 50, then you would use the “+” concatenation symbol.
EXAMPLE 1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
log.info(“RSI= ” + str.tostring(rsi))
Example Output =>
RSI= 50
Here, we use double quotes to create a string that contains the name of the variable, in this case “RSI = “, then we concatenate it with a stringified version of the variable, rsi.
Now that you know how to write a log, where do you view them? There isn’t a lot of documentation on it, and the link is not conveniently located.
Open up the “Pine Editor” tab at the bottom of any chart view, and you’ll see a “3 dot” button at the top right of the pane. Click that, and right above the “Help” menu item you’ll see “Pine logs”. Clicking that will open that to open a pane on the right of your browser - replacing whatever was in the right pane area before. This is where your log output will show up.
But, because you’re dealing with time series data, using the log.info() command without some type of condition will give you a fast moving stream of numbers that will be difficult to interpret. So, you may only want the output to show up once per bar, or only under specific conditions.
To have the output show up only after all computations have completed, you’ll need to use the barState.islast command. Remember, barState is camelCase, but islast is not!
EXAMPLE 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
if barState.islast
log.info("RSI=" + str.tostring(rsi))
plot(rsi)
However, this can be less than ideal, because you may want the value of the rsi variable on a particular bar, at a particular time, or under a specific chart condition. Let’s hit these one at a time.
In each of these cases, the built-in bar_index variable will come in handy. When debugging, I typically like to assign a variable “bix” to represent bar_index, and include it in the output.
So, if I want to see the rsi value when RSI crosses above 0.5, then I would have something like
EXAMPLE 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,0.5)
if rsiCrossedOver
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
bix=19964 - RSI=51.8449459867
bix=19972 - RSI=50.0975830828
bix=19983 - RSI=53.3529808079
bix=19985 - RSI=53.1595745146
bix=19999 - RSI=66.6466337654
bix=20001 - RSI=52.2191767466
Here, we see that the output only appears when the condition is met.
A useful thing to know is that if you want to limit the number of decimal places, then you would use the command str.tostring(rsi,”#.##”), which tells the interpreter that the format of the number should only be 2 decimal places. Or you could round the rsi variable with a command like rsi2 = math.round(rsi*100)/100 . In either case you’re output would look like:
bix=19964 - RSI=51.84
bix=19972 - RSI=50.1
bix=19983 - RSI=53.35
bix=19985 - RSI=53.16
bix=19999 - RSI=66.65
bix=20001 - RSI=52.22
This would decrease the amount of memory that’s being used to display your variable’s values, which can become a limitation for the log.info() command. It only allows 4096 characters per line, so when you get to trying to output arrays (which is another cool feature), you’ll have to keep that in mind.
Another thing to note is that log output is always preceded by a timestamp, but for the sake of brevity, I’m not including those in the output examples.
If you wanted to only output a value after the chart was fully loaded, that’s when barState.islast command comes in. Under this condition, only one line of output is created per tick update — AFTER the chart has finished loading. For example, if you only want to see what the the current bar_index and rsi values are, without filling up your log window with everything that happens before, then you could use the following code:
EXAMPLE 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
if barstate.islast
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
Example Output =>
bix=20203 - RSI=53.1103309071
This value would keep updating after every new bar tick.
The log.info() command is a huge help in creating new scripts, however, it does have its limitations. As mentioned earlier, only 4096 characters are allowed per line. So, although you can use log.info() to output arrays, you have to be aware of how many characters that array will use.
The following code DOES NOT WORK! And, the only way you can find out why will be the red exclamation point next to the name of the indicator. That, and nothing will show up on the chart, or in the logs.
// CODE DOESN’T WORK
//@version=6
indicator("MW - log.info()")
var array rsi_arr = array.new()
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50)
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
// No code errors, but will not compile because too much is being written to the logs.
However, after putting some time restrictions in with the i_startTime and i_endTime user input variables, and creating a dateFilter variable to use in the conditions, I can limit the size of the final array. So, the following code does work.
EXAMPLE 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// CODE DOES WORK
//@version=6
indicator("MW - log.info()")
i_startTime = input.time(title="Start", defval=timestamp("01 Jan 2025 13:30 +0000"))
i_endTime = input.time(title="End", defval=timestamp("1 Jan 2099 19:30 +0000"))
var array rsi_arr = array.new()
dateFilter = time >= i_startTime and time <= i_endTime
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50) and dateFilter // <== The dateFilter condition keeps the array from getting too big
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
rsi_arr:
bix=20210 - RSI=56.9030578034
Of course, if you restrict the decimal places by using the rounding the rsi value with something like rsiRounded = math.round(rsi * 100) / 100 , then you can further reduce the size of your array. In this case the output may look something like:
Example Output =>
rsi_arr:
bix=20210 - RSI=55.6947486019
This will give your code a little breathing room.
In a nutshell, I was coding for over a year trying to debug by pushing output to labels, tables, and using libraries that cluttered up my code. Once I was able to debug with log.info() it was a game changer. I was able to start building much more advanced scripts. Hopefully, this will help you on your journey as well.
Adaptive Quadratic Kernel EnvelopeThis study draws a fair-value curve from a quadratic-weighted (Nadaraya-Watson) regression. Alpha sets how sharply weights decay inside the look-back window, so you trade lag against smoothness with one slider. Band half-width is ATRslow times a bounded fast/slow ATR ratio, giving an instant response to regime shifts without overshooting on spikes. Work in log space when an instrument grows exponentially, equal percentage moves then map to equal vertical steps. NearBase and FarBase define a progression of adaptive thresholds, useful for sizing exits or calibrating mean-reversion logic. Non-repaint mode keeps one-bar delay for clean back-tests, predictive mode shows the zero-lag curve for live decisions.
Key points
- Quadratic weights cut phase error versus Gaussian or SMA-based envelopes.
- Dual-ATR scaling updates width on the next bar, no residual lag.
- Log option preserves envelope symmetry across multi-decade data.
- Alpha provides direct control of curvature versus noise.
- Built-in alerts trigger on the first adaptive threshold, ready for automation.
Typical uses
Trend bias from the slope of the curve.
Entry timing when price pierces an inner threshold and momentum stalls.
Breakout confirmation when closes hold beyond outer thresholds while volatility expands.
Stops and targets anchored to chosen thresholds, automatically matching current noise.
Elastic Volume-Weighted Student-T TensionOverview
The Elastic Volume-Weighted Student-T Tension Bands indicator dynamically adapts to market conditions using an advanced statistical model based on the Student-T distribution. Unlike traditional Bollinger Bands or Keltner Channels, this indicator leverages elastic volume-weighted averaging to compute real-time dispersion and location parameters, making it highly responsive to volatility changes while maintaining robustness against price fluctuations.
This methodology is inspired by incremental calculation techniques for weighted mean and variance, as outlined in the paper by Tony Finch:
📄 "Incremental Calculation of Weighted Mean and Variance" .
Key Features
✅ Adaptive Volatility Estimation – Uses an exponentially weighted Student-T model to dynamically adjust band width.
✅ Volume-Weighted Mean & Dispersion – Incorporates real-time volume weighting, ensuring a more accurate representation of market sentiment.
✅ High-Timeframe Volume Normalization – Provides an option to smooth volume impact by referencing a higher timeframe’s cumulative volume, reducing noise from high-variability bars.
✅ Customizable Tension Parameters – Configurable standard deviation multipliers (σ) allow for fine-tuned volatility sensitivity.
✅ %B-Like Oscillator for Relative Price Positioning – The main indicator is in form of a dedicated oscillator pane that normalizes price position within the sigma ranges, helping identify overbought/oversold conditions and potential momentum shifts.
✅ Robust Statistical Foundation – Utilizes kurtosis-based degree-of-freedom estimation, enhancing responsiveness across different market conditions.
How It Works
Volume-Weighted Elastic Mean (eμ) – Computes a dynamic mean price using an elastic weighted moving average approach, influenced by trade volume, if not volume detected in series, study takes true range as replacement.
Dispersion (eσ) via Student-T Distribution – Instead of assuming a fixed normal distribution, the bands adapt to heavy-tailed distributions using kurtosis-driven degrees of freedom.
Incremental Calculation of Variance – The indicator applies Tony Finch’s incremental method for computing weighted variance instead of arithmetic sum's of fixed bar window or arrays, improving efficiency and numerical stability.
Tension Calculation – There are 2 dispersion custom "zones" that are computed based on the weighted mean and dynamically adjusted standard student-t deviation.
%B-Like Oscillator Calculation – The oscillator normalizes the price within the band structure, with values between 0 and 1:
* 0.00 → Price is at the lower band (-2σ).
* 0.50 → Price is at the volume-weighted mean (eμ).
* 1.00 → Price is at the upper band (+2σ).
* Readings above 1.00 or below 0.00 suggest extreme movements or possible breakouts.
Recommended Usage
For scalping in lower timeframes, it is recommended to use the fixed α Decay Factor, it is in raw format for better control, but you can easily make a like of transformation to N-bar size window like in EMA-1 bar dividing 2 / decayFactor or like an RMA dividing 1 / decayFactor.
The HTF selector catch quite well Higher Time Frame analysis, for example using a Daily chart and using as HTF the 200-day timeframe, weekly or monthly.
Suitable for trend confirmation, breakout detection, and mean reversion plays.
The %B-like oscillator helps gauge momentum strength and detect divergences in price action if user prefer a clean chart without bands, this thanks to pineScript v6 force overlay feature.
Ideal for markets with volume-driven momentum shifts (e.g., futures, forex, crypto).
Customization Parameters
Fixed α Decay Factor – Controls the rate of volume weighting influence for an approximation EWMA approach instead of using sum of series or arrays, making the code lightweight & computing fast O(1).
HTF Volume Smoothing – Instead of a fixed denominator for computing α , a volume sum of the last 2 higher timeframe closed candles are used as denominator for our α weight factor. This is useful to review mayor trends like in daily, weekly, monthly.
Tension Multipliers (±σ) – Adjusts sensitivity to dispersion sigma parameter (volatility).
Oscillator Zone Fills – Visual cues for price positioning within the cloud range.
Posible Interpretations
As market within indicators relay on each individual edge, this are just some key ideas to glimpse how the indicator could be interpreted by the user:
📌 Price inside bands – Market is considered somehow "stable"; price is like resting from tension or "charging batteries" for volume spike moves.
📌 Price breaking outer bands – Potential breakout or extreme movement; watch for reversals or continuation from strong moves. Market is already in tension or generating it.
📌 Narrowing Bands – Decreasing volatility; expect contraction before expansion.
📌 Widening Bands – Increased volatility; prepare for high probability pull-back moves, specially to the center location of the bands (the mean) or the other side of them.
📌 Oscillator is just the interpretation of the price normalized across the Student-T distribution fitting "curve" using the location parameter, our Elastic Volume weighted mean (eμ) fixed at 0.5 value.
Final Thoughts
The Elastic Volume-Weighted Student-T Tension indicator provides a powerful, volume-sensitive alternative to traditional volatility bands. By integrating real-time volume analysis with an adaptive statistical model, incremental variance computation, in a relative price oscillator that can be overlayed in the chart as bands, it offers traders an edge in identifying momentum shifts, trend strength, and breakout potential. Think of the distribution as a relative "tension" rubber band in which price never leave so far alone.
DISCLAIMER:
The Following indicator/code IS NOT intended to be a formal investment advice or recommendation by the author, nor should be construed as such. Users will be fully responsible by their use regarding their own trading vehicles/assets.
The following indicator was made for NON LUCRATIVE ACTIVITIES and must remain as is, following TradingView's regulations. Use of indicator and their code are published for work and knowledge sharing. All access granted over it, their use, copy or re-use should mention authorship(s) and origin(s).
WARNING NOTICE!
THE INCLUDED FUNCTION MUST BE CONSIDERED FOR TESTING. The models included in the indicator have been taken from open sources on the web and some of them has been modified by the author, problems could occur at diverse data sceneries, compiler version, or any other externality.
Tillson T3 Moving Average (improved)T3 Moving Average – Advanced Smoothing for Trend Analysis
Overview
The Tillson T3 Moving Average (T3 MA) is a superior smoothing moving average that reduces lag while maintaining responsiveness to price changes. Unlike traditional moving averages such as SMA, EMA, or WMA, the T3 applies multiple levels of smoothing, making it more adaptive to market conditions.
How It Works
The T3 MA is an exponentially smoothed moving average with a factor that controls the level of smoothing. This multi-layered smoothing process allows it to:
✅ React faster than a standard EMA while still filtering out market noise.
✅ Smooth out price fluctuations better than SMA or WMA, reducing false signals.
✅ Reduce lag compared to traditional moving averages, making it useful for both trend identification and entry/exit decisions.
How to Use This Script
🔹 Trend Identification – Use T3 MA as a dynamic trend filter. Price above T3 signals an uptrend, while price below signals a downtrend.
🔹 Direction Signal – The direction of the T3 MA (i.e. sloping upwards or downwards) can itself be used as a signal. The script allows the MA line to be colored, so it's easier to spot.
🔹 Crossover Signals – Combine T3 with another moving average (e.g., a shorter T3 or EMA, SMA, etc.) to generate trade signals when they cross.
🔹 Support & Resistance – The T3 can act as dynamic support and resistance in trending markets.
Features of This Script
✅ Custom Source Selection – Apply T3 not just to price, but also to any indicator (e.g., RSI, volume, etc.).
✅ Customizable Length & Smoothing – Adjust how smooth and responsive the T3 MA is.
✅ Optional Color Changes – The T3 MA can dynamically change color based on trend direction, making it easier to read.
✅ Versatile for Any Strategy – Works well in trend-following, mean-reversion, and breakout trading systems.
This script is ideal for traders looking for a smoother, more adaptive moving average that reduces noise while remaining reactive to price action. 🚀
UM-Optimized Linear Regression ChannelDESCRIPTION
This indicator was inspired by Dr. Stoxx at drstoxx.com. Shout out to him and his services for introducing me to this idea. This indicator is a slightly different take on the standard linear regression indicator.
It uses two standard deviations to draw bands and dynamically attempts to best-fit the data lookback period using an R-squared statistical measure. The R-squared value ranges between zero and one with zero being no fit to the data at all and 1 being a 100% match of the data to linear regression line. The R-squared calculation is weighted exponentially to give more weight to the most recent data.
The label provides the number of periods identified as the optimal best-fit period, the type of loopback period determination (Manual or Auto) and the R-squared value (0-100, 100% being a perfect fit). >=90% is a great fit of the data to the regression line. <50% is a difficult fit and more or less considered random data.
The lookback mode can also be set manually and defaults to a value of 100 periods.
DEFAULTS
The defaults are 1.5 and 2.0 for standard deviation. This creates 2 bands above and below the regression line. The default mode for best-fit determination with "Auto" selected in the dropdown. When manual mode is selected, the default is 100. The modes, manual lookback periods, colors, and standard deviations are user-configurable.
HOW TO USE
Overlay this indicator on any chart of any timeframe. Look for turning points at extremes in the upper and lower bands. Look for crossovers of the centerline. Look at the Auto-determination for best fit. Compare this to your favorite Manual mode setting (Manual Mode is set to 100 by default lookback periods.)
When price is at an extreme, look for turnarounds or reversals. Use your favorite indicators, in addition to this indicator, to determine reversals. Try this indicator against your favorite securities and timeframes.
CHART EXAMPLE
The chart I used for an example is the daily chart of IWM. I illustrated the extremes with white text. This is where I consider proactively exiting an existing position and/or begin looking for a reversal.
TS Volatility-Adjusted EWMAThe TS Volatility-Adjusted Exponentially Weighted Moving Average (EWMA) is a dynamic trend-following indicator designed to adapt to changing market volatility. Unlike traditional moving averages, this indicator adjusts its sensitivity based on market conditions, making it more responsive during periods of high volatility and smoother when markets are calmer.
Key Features:
Volatility Adjustment: The EWMA length is dynamically scaled using the Average True Range (ATR), making it adaptive to market volatility. This allows the indicator to react quickly when volatility spikes and remain stable when volatility drops.
User-Controlled Smoothing: The indicator includes an optional smoothing period, allowing you to adjust how smooth or reactive the line is to price changes. If you prefer a more smoothed-out trend, simply increase the smoothing length.
This indicator is perfect for trend-following traders who want an adaptive tool that stays responsive to the market’s volatility. The TS Volatility-Adjusted EWMA helps you confidently follow market trends, whether you’re riding a long-term trend or catching shorter-term movements.
Sine-Weighted MA ATR [InvestorUnknown]The Sine-Weighted MA ATR is a technical analysis tool designed to emphasize recent price data using sine-weighted calculations , making it particularly well-suited for analyzing cyclical markets with repetitive patterns . The indicator combines the Sine-Weighted Moving Average (SWMA) and a Sine-Weighted Average True Range (SWATR) to enhance price trend detection and volatility analysis.
Sine-Weighted Moving Average (SWMA):
Unlike traditional moving averages that apply uniform or exponentially decaying weights, the SWMA applies Sine weights to the price data.
Emphasis on central data points: The Sine function assigns more weight to the middle of the lookback period, giving less importance to the beginning and end points. This helps capture the main trend more effectively while reducing noise from recent volatility or older data.
// Function to calculate the Sine-Weighted Moving Average
f_Sine_Weighted_MA(series float src, simple int length) =>
var float sine_weights = array.new_float(0)
array.clear(sine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights, weight)
// Normalize the weights
sum_weights = array.sum(sine_weights)
for i = 0 to length - 1
norm_weight = array.get(sine_weights, i) / sum_weights
array.set(sine_weights, i, norm_weight)
// Calculate Sine-Weighted Moving Average
swma = 0.0
if bar_index >= length
for i = 0 to length - 1
swma := swma + array.get(sine_weights, i) * close
swma
Sine-Weighted ATR:
This is a variation of the Average True Range (ATR), which measures market volatility. Like the SWMA, the ATR is smoothed using Sine-based weighting, where central values are more heavily considered compared to the extremities. This improves sensitivity to changes in volatility while maintaining stability in highly volatile markets.
// Function to calculate the Sine-Weighted ATR
f_Sine_Weighted_ATR(simple int length) =>
var float sine_weights_atr = array.new_float(0)
array.clear(sine_weights_atr)
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights_atr, weight)
// Normalize the weights
sum_weights_atr = array.sum(sine_weights_atr)
for i = 0 to length - 1
norm_weight_atr = array.get(sine_weights_atr, i) / sum_weights_atr
array.set(sine_weights_atr, i, norm_weight_atr)
// Calculate Sine-Weighted ATR using true ranges
swatr = 0.0
tr = ta.tr(true) // True Range
if bar_index >= length
for i = 0 to length - 1
swatr := swatr + array.get(sine_weights_atr, i) * tr
swatr
ATR Bands:
Upper and lower bands are created by adding/subtracting the Sine-Weighted ATR from the SWMA. These bands help identify overbought or oversold conditions, and when the price crosses these levels, it may generate long or short trade signals.
// - - - - - CALCULATIONS - - - - - //{
bar b = bar.new()
float src = b.calc_src(swma_src)
float swma = f_Sine_Weighted_MA(src, ma_length)
// Use normal ATR or Sine-Weighted ATR based on input
float atr = atr_type == "Normal ATR" ? ta.atr(atr_len) : f_Sine_Weighted_ATR(atr_len)
// Calculate upper and lower bands using ATR
float swma_up = swma + (atr * atr_mult)
float swma_dn = swma - (atr * atr_mult)
float src_l = b.calc_src(src_long)
float src_s = b.calc_src(src_short)
// Signal logic for crossovers and crossunders
var int signal = 0
if ta.crossover(src_l, swma_up)
signal := 1
if ta.crossunder(src_s, swma_dn)
signal := -1
//}
Signal Logic:
Long/Short Signals are triggered when the price crosses above or below the Sine-Weighted ATR bands
Backtest Mode and Equity Calculation
To evaluate its effectiveness, the indicator includes a backtest mode, allowing users to test its performance on historical data:
Backtest Equity: A detailed equity curve is calculated based on the generated signals over a user-defined period (startDate to endDate).
Buy and Hold Comparison: Alongside the strategy’s equity, a Buy-and-Hold equity curve is plotted for performance comparison.
Alerts
The indicator includes built-in alerts for both long and short signals, ensuring users are promptly notified when market conditions meet the criteria for an entry or exit.
Bitcoin Logarithmic Growth Curve 2024The Bitcoin logarithmic growth curve is a concept used to analyze Bitcoin's price movements over time. The idea is based on the observation that Bitcoin's price tends to grow exponentially, particularly during bull markets. It attempts to give a long-term perspective on the Bitcoin price movements.
The curve includes an upper and lower band. These bands often represent zones where Bitcoin's price is overextended (upper band) or undervalued (lower band) relative to its historical growth trajectory. When the price touches or exceeds the upper band, it may indicate a speculative bubble, while prices near the lower band may suggest a buying opportunity.
Unlike most Bitcoin growth curve indicators, this one includes a logarithmic growth curve optimized using the latest 2024 price data, making it, in our view, superior to previous models. Additionally, it features statistical confidence intervals derived from linear regression, compatible across all timeframes, and extrapolates the data far into the future. Finally, this model allows users the flexibility to manually adjust the function parameters to suit their preferences.
The Bitcoin logarithmic growth curve has the following function:
y = 10^(a * log10(x) - b)
In the context of this formula, the y value represents the Bitcoin price, while the x value corresponds to the time, specifically indicated by the weekly bar number on the chart.
How is it made (You can skip this section if you’re not a fan of math):
To optimize the fit of this function and determine the optimal values of a and b, the previous weekly cycle peak values were analyzed. The corresponding x and y values were recorded as follows:
113, 18.55
240, 1004.42
451, 19128.27
655, 65502.47
The same process was applied to the bear market low values:
103, 2.48
267, 211.03
471, 3192.87
676, 16255.15
Next, these values were converted to their linear form by applying the base-10 logarithm. This transformation allows the function to be expressed in a linear state: y = a * x − b. This step is essential for enabling linear regression on these values.
For the cycle peak (x,y) values:
2.053, 1.268
2.380, 3.002
2.654, 4.282
2.816, 4.816
And for the bear market low (x,y) values:
2.013, 0.394
2.427, 2.324
2.673, 3.504
2.830, 4.211
Next, linear regression was performed on both these datasets. (Numerous tools are available online for linear regression calculations, making manual computations unnecessary).
Linear regression is a method used to find a straight line that best represents the relationship between two variables. It looks at how changes in one variable affect another and tries to predict values based on that relationship.
The goal is to minimize the differences between the actual data points and the points predicted by the line. Essentially, it aims to optimize for the highest R-Square value.
Below are the results:
It is important to note that both the slope (a-value) and the y-intercept (b-value) have associated standard errors. These standard errors can be used to calculate confidence intervals by multiplying them by the t-values (two degrees of freedom) from the linear regression.
These t-values can be found in a t-distribution table. For the top cycle confidence intervals, we used t10% (0.133), t25% (0.323), and t33% (0.414). For the bottom cycle confidence intervals, the t-values used were t10% (0.133), t25% (0.323), t33% (0.414), t50% (0.765), and t67% (1.063).
The final bull cycle function is:
y = 10^(4.058 ± 0.133 * log10(x) – 6.44 ± 0.324)
The final bear cycle function is:
y = 10^(4.684 ± 0.025 * log10(x) – -9.034 ± 0.063)
The main Criticisms of growth curve models:
The Bitcoin logarithmic growth curve model faces several general criticisms that we’d like to highlight briefly. The most significant, in our view, is its heavy reliance on past price data, which may not accurately forecast future trends. For instance, previous growth curve models from 2020 on TradingView were overly optimistic in predicting the last cycle’s peak.
This is why we aimed to present our process for deriving the final functions in a transparent, step-by-step scientific manner, including statistical confidence intervals. It's important to note that the bull cycle function is less reliable than the bear cycle function, as the top band is significantly wider than the bottom band.
Even so, we still believe that the Bitcoin logarithmic growth curve presented in this script is overly optimistic since it goes parly against the concept of diminishing returns which we discussed in this post:
This is why we also propose alternative parameter settings that align more closely with the theory of diminishing returns.
Our recommendations:
Drawing on the concept of diminishing returns, we propose alternative settings for this model that we believe provide a more realistic forecast aligned with this theory. The adjusted parameters apply only to the top band: a-value: 3.637 ± 0.2343 and b-parameter: -5.369 ± 0.6264. However, please note that these values are highly subjective, and you should be aware of the model's limitations.
Conservative bull cycle model:
y = 10^(3.637 ± 0.2343 * log10(x) - 5.369 ± 0.6264)
Ewma | viResearchEwma | viResearch
Conceptual Foundation and Innovation
The "Ewma" indicator from viResearch combines the benefits of the Exponentially Weighted Moving Average (EWMA) with the Weighted Moving Average (WMA) to offer traders a more responsive and precise method for trend-following. The EWMA applies greater weight to recent price data, allowing the indicator to adapt quickly to market changes while filtering out short-term fluctuations. By incorporating both EWMA and WMA, this script provides a smoother and more accurate representation of market trends, making it ideal for identifying potential trend shifts and improving trade timing.
This dual-layer smoothing process enables traders to follow market trends with greater accuracy and sensitivity, allowing them to respond quickly to price movements while minimizing the impact of market noise.
Technical Composition and Calculation
The "Ewma" script uses a combination of WMA and EWMA to smooth out price data. First, a WMA is applied to the selected source price over a user-defined length. This WMA is then used as the input for calculating the EWMA, further smoothing the trend and reducing lag. The EWMA is calculated over the same user-defined length, ensuring consistency between the two smoothing processes. This layered approach helps generate more reliable signals for trend changes, as it reduces the influence of short-term price volatility while maintaining responsiveness to significant price movements.
The script monitors whether the current EWMA value is higher or lower than the previous value, generating a trend signal based on this comparison. If the EWMA is higher than the previous bar, it signals a potential upward trend, while a lower EWMA indicates a possible downward trend.
Features and User Inputs
The "Ewma" script offers several customizable inputs, allowing traders to fine-tune the indicator to suit their trading strategies. The Length input controls the period over which both the WMA and EWMA are calculated, affecting how responsive or smooth the indicator is. Additionally, the script includes built-in alert conditions, notifying traders when a trend shift occurs, either to the upside or downside.
Practical Applications
The "Ewma" indicator is designed for traders who want to capture market trends more accurately while reducing the noise from short-term price fluctuations. The dual smoothing of the EWMA helps traders identify potential trend reversals with greater clarity, allowing for earlier and more informed trade entries and exits. By smoothing price data while maintaining responsiveness, the "Ewma" indicator enhances traditional trend-following methods, making it easier to stay aligned with longer-term market trends. The adjustable length setting allows traders to adapt the indicator to various market conditions, whether they prefer faster signals for short-term trading or slower, smoother signals for long-term trend analysis.
Advantages and Strategic Value
The "Ewma" script offers a significant advantage by combining the WMA with the EWMA, delivering a smoother and more responsive trend indicator. This combination helps traders reduce the impact of short-term volatility while maintaining the ability to react quickly to significant price changes. By offering an adaptable and reliable method for trend-following, the "Ewma" indicator helps traders optimize their market positioning and improve the accuracy of their trading strategies.
Alerts and Visual Cues
The script includes alert conditions that notify traders when a significant trend change occurs. The "Ewma Long" alert is triggered when the EWMA crosses above its previous value, indicating a potential upward trend. The "Ewma Short" alert signals a possible downward trend when the EWMA crosses below its previous value. Visual cues, such as changes in the EWMA line color, provide traders with clear and actionable information in real time.
Summary and Usage Tips
The "Ewma | viResearch" indicator provides traders with a powerful tool for trend analysis by combining the benefits of WMA and EWMA smoothing. By incorporating this script into your trading strategy, you can improve your ability to detect trend shifts, confirm trend direction, and reduce noise from short-term price fluctuations. Whether you’re focused on short-term market moves or long-term trends, the "Ewma" indicator offers a reliable and customizable solution for traders at all levels.
Note: Backtests are based on past results and are not indicative of future performance.
[SGM Geometric Brownian Motion]Description:
This indicator uses Geometric Brownian Motion (GBM) simulations to predict possible price trajectories of a financial asset. It helps traders visualize potential price movements, assess risks, and make informed decisions.
Geometric Brownian Motion:
Geometric Brownian Motion is an extension of standard Brownian motion (or Wiener process) used to model the random behavior of particles in physics. In finance, this concept is used to model the evolution of asset prices over time in a continuous manner. The basic idea is that the price of an asset does not only change randomly but also exponentially depending on certain parameters.
Basic formula
The formula for the evolution of the price of an asset S(t) under MBG is given by the following stochastic differential equation:
𝑑𝑆(𝑡) = 𝜇𝑆(𝑡)𝑑𝑡 + 𝜎𝑆(𝑡)𝑑𝑊(𝑡)
where:
S(t) is the price of the asset at time
μ is the expected growth rate (or drift).
σ is the volatility of the price of the asset.
dW(t) represents the noise term, i.e. the standard Brownian motion.
Explanations of the terms
Expected growth rate (μ):
This is the expected average return on the asset. If you think your asset will grow by 5% per year,
μ will be 0.05.
Volatility (σ):
It is a measure of the uncertainty or risk associated with the asset. If the asset price varies a lot, σ will be high.
Noise term (dW(t)):
It represents the randomness of the price change, modeled by a Wiener process.
Features:
Customizable number of simulations: Choose the number of price trajectories to simulate to get a better estimate of future movements.
Adjustable simulation length: Set the duration of the simulations in number of periods to adapt the indicator to your trading horizons.
Trajectory display: Visualize the simulated price trajectories directly on the chart to better understand possible future scenarios.
Dispersion calculations: Display the distribution of simulated final prices to assess dispersion and potential variations.
Sharpe ratio distribution: Analyze the risk-adjusted performance of simulations using the Sharpe ratio distribution.
Risk Statistics: Get key risk metrics like maximum drawdown, average return, and Value at Risk (VaR) at different confidence levels.
User Inputs:
Number of Simulations: 200 by default.
Simulation Length: 10 periods by default.
Brownian Motion Transparency: Adjust the transparency of simulated lines for better visualization.
Brownian Motion Display: Enable or disable the display of simulated paths.
Brownian Dispersion Display: Display the distribution of simulated final prices.
Sharpe Dispersion Display: Display the distribution of Sharpe ratios.
Customizable Colors: Choose colors for lines and tables.
Usage:
Configure Settings: Adjust the number of simulations, simulation length, and display preferences to suit your needs.
Analyze Simulated Paths: Simulated path lines appear on the chart, representing possible price developments.
Review Dispersion Charts: Review the charts to understand the distribution of final prices and Sharpe ratios, as well as key risk statistics. This indicator is ideal for traders looking to anticipate future price movements and assess the associated risks. With its detailed simulations and dispersion analyses, it provides valuable insight into the financial markets.
Moving Average Dispersion Index w/ Z-Score (Adjusted MADI-Z)Overview
The Adjusted MADI-Z indicator is a custom indicator that looks to decipher trends and consolidations based on the clustering and dispersion of Moving Averages. It calculates a z-score based on the dispersion of various exponentially weighted moving averages to identify trends and consolidation. The z-score is then adjusted using a logistic function to map it between 0-100.
How can it be used?
- Identify trends and consolidation - Values above 80 indicate a strong trend while values below 20 show consolidation
- Gauge trend strength - Higher positive values suggest a stronger uptrend while lower negative values indicate a stronger downtrend
- Generate trading signals - Crossovers of key levels can act as entry/exit triggers
- Smooth noise in price action - The adjusted z-score filters out market noise
Default Values
- ma5_len = 5
- ma10_len = 10
- ma50_len = 50
- ma200_len = 200
- lookback_period = 100
Strategies
The Adjusted MADI-Z can be used for trend-following strategies across various timeframes. Specific strategies include:
- Trend trading - Enter long on crossover above 80, exit on crossover below 80. Reverse for short trades.
- Range trading - Enter short on crossover below 20, exit on crossover above 20. Reverse for long trades.
- Identifying pullbacks - Temporary moves below 80 during uptrends and above 20 during downtrends can act as retracement entry points.
Rationale
By adjusting the z-score output of the standard MADI using a logistic function, the indicator becomes bounded and easier to interpret for trading purposes. The customized moving average lengths also allow tuning the indicator to particular assets and timeframes.
Interpretation
- Above 80 - Strong uptrend
- 70 to 80 - Moderate uptrend
- 50 to 70 - Weak uptrend
- 30 to 50 - Range-bound consolidation
- 20 to 30 - Weak downtrend
- Below 20 - Strong downtrend
Values below 15 or above 85 represent extremes outside two standard deviations.
Market Internals (TICK, ADD, VOLD, TRIN, VIX)OVERVIEW
This script allows you to perform data transformations on Market Internals, across exchanges, and specify signal parameters, to more easily identify sentiment extremes.
Notable transformations include:
1. Cumulative session values
2. Directional bull-bear Ratios and Percent Differences
3. Data Normalization
4. Noise Reduction
This kind of data interaction is very useful for understanding the relationship between two mutually exclusive metrics, which is the essence of Market Internals: Up vs. Down. Even so, they are not possible with symbol expressions alone. And the kind of symbol expression needed to produce baseline data that can be reliably transformed is opaque to most traders, made worse by the fact that prerequisite symbol expressions themselves are not uniform across symbols. It's very nuanced, and if this last bit was confusing … exactly.
All this to say, rather than forcing that burden onto you, I've baked the baseline symbol expressions into the indicator so: 1) the transform functions consistently ingest the baseline data in the correct format and 2) you don't have to spend time trying to figure it all out. Trading is hard. There's no need to make it harder.
INPUTS
Indicator
Allows you to specify the base Market Internal and Exchange data to use. The list of Market Internals is simplified to their fundamental representation (TICK, ADD, VOLD, TRIN, VIX, ABVD, TKCD), and the list of Exchange data is limited to the most common (NYSE, NASDAQ, All US Stocks). There are also options for basic exchange combinations (Sum or Average of NYSE & NASDAQ).
Mode
Short for "Plot Mode", this is where you specify the bars style (Candles, Bars, Line, Circles, Columns) and the source value (used for single value plots and plot color changes).
Scale
This is the first and second data transformation grouped together. The default is to show the origin data as it might appear on a chart. You can then specify if each bar should retain it's unique value (Bar Value) or be added to a running total (Cumulative). You can also specify if you would like the data to remain unaltered (Raw) or converted to a directional ratio (Ratio) or a percentage (Percent Diff). These options determine the scale of the plot.
Both Ratio and Percent Diff. convert a given symbol into a positive or negative number, where positive numbers are bullish and negative numbers are bearish.
Ratio will divide Bull values by Bear values, then further divide -1 by the quotient if it is less than 1. For example, if "0.5" was the quotient, the Ratio would be "-2".
Percent Diff. subtracts Bear values from Bull values, then divides that difference by the sum of Bull and Bear values multiplied by 100. If a Bull value was "3" and Bear value was "7", the difference would be "-4", the sum would be "10", and the Percent Diff. would be "-40", as the difference is both bearish and 40% of total.
Ratio Norm. Threshold
This is the third data transformation . While quotients can be less than 1, directional ratios are never less than 1. This can lead to barcode-like artifacts as plots transition between positive and negative values, visually suggesting the change is much larger than it actually is. Normalizing the data can resolve this artifact, but undermines the utility of ratios. If, however, only some of the data is normalized, the artifact can be resolved without jeopardizing its contextual usefulness.
The utility of ratios is how quickly they communicate proportional differences. For example, if one side is twice as big as the other, "2" communicates this efficiently. This necessarily means the numerical value of ratios is worth preserving. Also, below a certain threshold, the utility of ratios is diminished. For example, an equal distribution being represented as 0, 1, 1:1, 50/50, etc. are all equally useful. Thus, there is a threshold, above which we want values to be exact, and below which the utility of linear visual continuity is more important. This setting accounts for that threshold.
When this setting is enabled, a ratio will be normalized to 0 when 1:1, scaled linearly toward the specified threshold when greater than 1:1, and then retain its exact value when the threshold is crossed. For example, with a threshold of "2", 1:1 = 0, 1.5:1 = 1, 2:1 = 2, 3:1 = 3, etc.
With all this in mind, most traders will want to set the ratios threshold at a level where accuracy becomes more important than visual continuity. If this level is unknown, "2" is a good baseline.
Reset cumulative total with each new session
Cumulative totals can be retained indefinitely or be reset each session. When enabled, each session has its own cumulative total. When disabled, the cumulative total is maintained indefinitely.
Show Signal Ranges
Because everything in this script is designed to make identifying sentiment extremes easier, an obvious inclusion would be to not only display ranges that are considered extreme for each Market Internal, but to also change the color of the plot when it is within, or beyond, that range. That is exactly what this setting does.
Override Max & Min
While the min-max signal levels have reasonable defaults for each symbol and transformation type, the Override Max and Override Min options allow you to … (wait for it) … override the max … and min … signal levels. This may be useful should you find a different level to be more suitable for your exact configuration.
Reduce Noise
This is the fourth data transformation . While the previous Ratio Norm. Threshold linearly stretches values between a threshold and 0, this setting will exponentially squash values closer to 0 if below the lower signal level.
The purpose of this is to compress data below the signal range, then amplify it as it approaches the signal level. If we are trying to identify extremes (the signal), minimizing values that are not extreme (the noise) can help us visually focus on what matters.
Always keep both signal zones visible
Some traders like to zoom in close to the bars. Others prefer to keep a wider focus. For those that like to zoom in, if both signals were always visible, the bar values can appear squashed and difficult to discern. For those that keep a wider focus, if both signals were not always visible, it's possible to lose context if a signal zone is vertically beyond the pane. This setting allows you to decide which scenario is best for you.
Plot Colors
These define the default color, within signal color, and beyond signal color for Bullish and Bearish directions.
Plot colors should be relative to zero
When enabled, the plot will inherit Bullish colors when above zero and Bearish colors when below zero. When disabled and Directional Colors are enabled (below), the plot will inherit the default Bullish color when rising, and the default Bearish color when falling. Otherwise, the plot will use the default Bullish color for all directions.
Directional colors
When the plot colors should be relative to zero (above), this changes the opacity of a bars color if moving toward zero, where "100" percent is the full value of the original color and "0" is transparent. When the plot colors are NOT relative to zero, the plot will inherit Bullish colors when rising and Bearish colors when falling.
Differentiate RTH from ETH
Market Internal data is typically only available during regular trading hours. When this setting is enabled, the background color of the indicator will change as a reminder that data is not available outside regular trading hours (RTH), if the chart is showing electronic trading hours (ETH).
Show zero line
Similar to always keeping signal zones visible (further up), some traders prefer zooming in while others prefer a wider context. This setting allows you to specify the visibility of the zero line to best suit your trading style.
Linear Regression
Polynomial regressions are great for capturing non-linear patterns in data. TradingView offers a "linear regression curve", which this script is using as a substitute. If you're unfamiliar with either term, think of this like a better moving average.
Symbol
While the Market Internal symbol will display in the status line of the indicator, the status line can be small and require more than a quick glance to read properly. Enabling this setting allows you to specify if / where / how the symbol should display on the indicator to make distinguishing between Market Internals more efficient.
Speaking of symbols, this indicator is designed for, and limited to, the following …
TICK - The TICK subtracts the total number of stocks making a downtick from the total number of stocks making an uptick.
ADD - The Advance Decline Difference subtracts the total number of stocks below yesterdays close from the total number of stocks above yesterdays close.
VOLD - The Volume Difference subtracts the total declining volume from the total advancing volume.
TRIN - The Arms Index (aka. Trading Index) divides the ratio of Advancing Stocks / Volume by the ratio of Declining Stocks / Volume. Given the inverse correlation of this index to market movement, when transforming it to a Ratio or Percent Diff., its values are inverted to preserve the bull-bear sentiment of the transformations.
VIX - The CBOE Volatility Index is derived from SPX index option prices, generating a 30-day forward projection of volatility. Given the inverse correlation of this index to market movement, when transforming it to a Ratio or Percent Diff., its values are inverted and normalized to the sessions first bar to preserve the bull-bear sentiment of the transformations. Note: If you do not have a Cboe CGIF subscription , VIX data will be delayed and plot unexpectedly.
ABVD - The Above VWAP Difference is an unofficial index measuring all stocks above VWAP as a percent difference. For the purposes of this indicator (and brevity), TradingViews PCTABOVEVWAP has has been shortened to simply be ABVD.
TKCD - The Tick Cumulative Difference is an unofficial index that subtracts the total number of market downticks from the total number of market upticks. Where "the TICK" (further up) is a measurement of stocks ticking up and down, TKCD is a measurement of the ticks themselves. For the purposes of this indicator (and brevity), TradingViews UPTKS and DNTKS symbols have been shorted to simply be TKCD.
INSPIRATION
I recently made an indicator automatically identifying / drawing daily percentage levels , based on 4 assumptions. One of these assumptions is about trend days. While trend days do not represent the majority of days, they can have big moves worth understanding, for both capitalization and risk mitigation.
To this end, I discovered:
• Article by Linda Bradford Raschke about Capturing Trend Days.
• Video of Garrett Drinon about Trend Day Trading.
• Videos of Ryan Trost about How To Use ADD and TICK.
• Article by Jason Ruchel about Overview of Key Market Internals.
• Including links to resources outside of TradingView violates the House Rules, but they're not hard to find, if interested.
These discoveries inspired me adopt the underlying symbols in my own trading. I also found myself wanting to make using them easier, the net result being this script.
While coding everything, I also discovered a few symbols I believe warrant serious consideration. Specifically the Percent Above VWAP symbols and the Up Ticks / Down Ticks symbols (referenced as ABVD and TKCD in this indicator, for brevity). I found transforming ABVD or TKCD into a Ratio or Percent Diff. to be an incredibly useful and worthy inclusion.
ABVD is a Market Breadth cousin to Brian Shannon's work, and TKCD is like the 3rd dimension of the TICKs geometry. Enjoy.
Heikin-Ashi Rolling Time Decay Volume OscillatorThe indicator calculates a time-decayed moving sum of volume data for both bullish (green) and bearish (red) candles. It then generates a volume share oscillator as a smoothed and weighted (time-decayed) moving sum of bullish volume (positive share) or bearish volume (negative share) relative to the total volume.
The volume share is displayed as an area chart with gradient fills representing overbought and oversold regions. Additionally, an Arnaud Legoux Moving Average (ALMA) of the volume oscillator is plotted on the chart.
Trend Momentum and Price Control :
This indicator serves as a powerful tool for traders to gauge trend momentum and identify which side, bulls or bears, is controlling price movements. When the volume oscillator trends strongly in the green territory, it suggests that bulls are in control of price movements, indicating a potential uptrend. Conversely, when the oscillator tilts into the red, it indicates bearish dominance and a potential downtrend. With the incorporation of ALMA for smoothing, this indicator becomes an essential tool for traders and analysts navigating the dynamics of traded assets.
Source Candles :
This indicator is designed to work with Heiken Ashi or Japanese candlesticks to discern candle bias, whether it's red or green. Heiken Ashi tends to produce red candles during downtrends and green candles during uptrends, providing a clearer trend indication. In contrast, traditional candlesticks alternate colors regardless of the dominant price direction. Users can select between "Heikin-Ashi Candles" and regular "Japanese Candles" as the source for price direction."
A time decay cumulative sum, also known as a weighted moving sum or exponentially weighted moving sum, offers several advantages when it comes to determining market dynamics compared to other methods:
Responsive to Recent Data: Time decay cumulative sum gives more weight to recent data points and gradually reduces the impact of older data. This responsiveness is crucial in rapidly changing market conditions where recent price and volume information is more relevant for analysis.
Adaptive to Market Volatility : It adapts to changes in market volatility. When markets are highly volatile, it places more emphasis on recent data to reflect the current market environment accurately. Conversely, during calmer periods, it considers older data less important.
Effective for Identifying Turning Points : Time decay cumulative sums are particularly effective at identifying turning points in market dynamics. They can indicate shifts from bullish to bearish sentiment and vice versa, providing early signals of potential trend reversals.
Reduces Lag : Traditional cumulative sums or simple moving averages can lag behind actual market changes, making them less effective for real-time decision-making. Time decay cumulative sums reduce this lag by giving more weight to recent events.
Dynamic Weighting: The weighting scheme can be adjusted to fit specific market dynamics or trading strategies. Traders can customize the decay rate or smoothing factor to align with their analysis goals and timeframes.
Improved Signal Clarity : The time decay cumulative sum can provide clearer and more precise signals for overbought and oversold conditions, as well as trend strength, due to its ability to emphasize recent relevant data.
In summary, a time decay cumulative sum is a valuable tool in determining market dynamics because it adapts to changing market conditions, reduces noise, and provides timely and accurate insights into trends, turning points, and the relative strength of bullish and bearish forces. Its responsiveness and adaptability make it an essential component of many technical analysis and trading strategies.
[SMT] Binary Option 1 MinuteThis indicator called " Binary Option 1 Minute" is designed to trade binary options on 1-minute time frames. It is based on two moving averages and a crossover signal. The moving averages used are calculated from the average prices of the last time periods. The first moving average is calculated with a shorter period, while the second is calculated with a longer period.
The signal is generated when the first moving average crosses above or below the second moving average, and then an additional filter is applied. The signal filter is calculated using an exponentially weighted moving average of the difference between the two moving averages. When the signal crosses above the zero line, a buy signal is generated, and when the signal crosses below the zero line, a sell signal is generated.
The indicator plots buy and sell arrows on the chart when a signal is generated. Additionally, it can also display gains and losses in the form of background colors. The green color indicates a gain, and the red color indicates a loss. Finally, the indicator includes sound and text alerts to inform the trader about the generation of a signal.
Attention: This indicator does not repaint! Wait for the candle to close to confirm the entry signal. Remember that signals do not imply guarantees of accuracy or gains. It is highly recommended that you test the indicator on a demo account before using it on a real account.
Quick Shot[ChartPrime]This indicator plots green and red dots when the trend changes based on a moving average slope. The curved line aims to exponentially increase the slope of the moving average based on the slope at the time of the dots origination as the bars progress. Once the curved line makes contact with the price action, an x shape will be plotted to signify an exit signal.
This indicator is best used in confluence with other indicators in order to develop a reliable strategy.
Triangular Trend Channel ATRTTCATR: Triangular Trend Channel ATR is a script to dynamically create a trend channel. It uses Moving Average & the Average True Range function to calculate support and resistance levels automatically.
The MA choices available are:
SMA = simple moving average
EMA = exponentially weighted moving average
RMA = moving average used in RSI
WMA = weighted moving average
VWMA = volume weighted moving average
VWAP = volume weighted average price
HMA = Hull moving average
SWMA = symmetrically weighted moving average
ALMA = Arnaud Legoux moving average
The default setting inputs are:
source = OHLC4
MA length = 20
MA signal = 10
ATR Multiply = 3
ALMA offset = 0.89
ALMA sigma = 5
Moving average type = VWMA
Level 1 ATR = 1.236
Level 2 ATR = 2.382
Level 3 ATR = 3.5
Level 4 ATR = 4.618
Level 5 ATR = 5.786
The default setting colors are:
Top = gray
R4 = white
R3 = green
R2 = orange
R1 = blue
pivot = white
(track pivot line = bullish is green, bearish is red)
S1 = purple
S2 = yellow
S3 = red
S4 = white
Bottom = gray
* This script uses altered pieces of code from my @Options360 TTC: Triangular Trend Channel and @TradingView "Intrabar Efficiency Ratio indicator". *
Bollinger-Bands.Multi_Choice(BBMC) "Bollinger-Bands.Multi_Choice" indicator gives the end user a choice of which Moving Average they want to use.
The MA choices available are:
SMA = simple moving average
EMA = exponentially weighted moving average
RMA = moving average used in RSI
WMA = weighted moving average
VWMA = volume weighted moving average
VWAP = volume weighted average price
HMA = Hull moving average
SWMA = symmetrically weighted moving average
ALMA = Arnaud Legoux moving average
The default setting inputs are:
source = OHLC4
length = 13
ALMA offset = 0.89
ALMA sigma = 5
Moving average type = VWMA
Level 1 standard deviation = 1.0
Level 2 standard deviation = 2.0
Level 3 standard deviation = 3.0
Level 3 standard deviation = 4.0
The default setting colors are:
Top = white
R3 = green
R2 = orange
R1 = blue
pivot = white
(track pivot line = bullish is green, bearish is red)
S1 = purple
S2 = yellow
S3 = red
Bottom = white
I made this indicator from an idea I had for a few months with the help of pine coder scripts before me. Kudos to @TradingView & @Madrid.
* This script uses altered pieces of code from @TradingView "Intrabar Efficiency Ratio indicator" & @Madrid "Bollinger Bands indicator" *
Multiple EMAAn exponentially weighted moving average reacts more significantly to recent price changes than a simple moving average (SMA), which applies an equal weight to all observations in the period.
Here, i have merged multiple EMA into one indicator. traders would find it very convenient as multiple widely used EMA`s are merged into 1 indicator. one can also change the time and color from its settings as per their convenience.
About the practicality of this EMA`s:
Every EMA suggests the sentiments in a period of time.
The longer-day EMAs (i.e. 50 and 200-day) tend to be used more by long-term investors, while short-term investors tend to use 8 and 20 day EMAs.
One may prefer to short or to hedge their position when 200 day moving average is broken downside. vise-versa for long. Normally in one may expect around 2-3% move on either side when broken with volumes supporting it.
Stop Loss With Average True Range (ATR)Stop Loss With Average True Range (ATR)
It simplifies the calculation of stop loss price for stop loss method using the average true range (ATR).
For example;
You want to stop loss below 3 ATR. Let's assume the price is 100, the average true range is 5. You will multiply the average true range by 3 and subtract from the price and enter a stop loss order at the 85 price you have reached. Instead of doing this calculation every time, you just need to use this script and set the multiplier to 3. A stop loss line will be drawn below the price candles.
You can set the method to be used when averaging the true range. Methods you can use to average: EMA (exponentially moving average), HMA (hull moving average), RMA (moving average used in RSI), SMA (simple moving average), SWMA (symmetrically weighted moving average), VWMA (volume-weighted moving average), WMA (weighted moving average).
You can set the length to be used when averaging the true range.
You can set the multiplier to be used when determining the stop loss price.
Turkish
Ortalama Gerçek Aralıkla (ATR) Zarar Durdurma
Gerçek aralığın ortalamasını kullanarak zarar durdurma yöntemi için zarar durdurma fiyatının hesaplanmasını kolaylaştırır.
Örneğin;
3 ATR kadar aşağıda zarar durdurmak istiyorsunuz. Fiyatın 100, ortalama gerçek aralığın 5 olduğunu varsayalım. Ortalama gerçek aralığı 3 ile çarparak fiyattan çıkaracaksınız ve ulaştığınız 85 fiyatına zarar durdurma emri gireceksiniz. Bu hesabı her seferinde yapmak yerine bu betiği kullanmanız ve çarpanı 3 olarak ayarlamanız yeterli. Bu sayede fiyat mumlarının altına zarar durdurma çizgisi çizilecektir.
Gerçek aralığın ortalaması alınırken kullanılacak yöntemi ayarlayabilirsiniz. Ortalama almak için seçebileceğiniz yöntemler: EMA (üstel hareketli ortalama), HMA (gövde hareketli ortalama), RMA (göreceli hareketli ortalama), SMA (basit hareketli ortalama), SWMA (simetrik ağırlıklı hareketli ortalama), VWMA (hacim ağırıklı hareketli ortalama), WMA (ağırlıklı hareketli ortalama).
Gerçek aralığın ortalaması alınırken kullanılacak periyot uzunluğunu ayarlayabilirsiniz.
Zarar durdurma fiyatını belirlerken kullanılacak çarpanı ayarlayabilirsiniz.
cowen risk indexThis is my attempt at remaking the cowen risk index. It's definitely not correct, but should give a rough estimate of where his indicator is at. I am taking the price divided by the 400sma to get an oscillator, then we need to account for diminishing returns so I just made an exponentially increasing variable and mutliplying that by the oscillator value. Then I normalized the data as best as I could. Not sure exactly how to do that so if anyone has any suggestions, please let me know.
This only works on the daily and weekly timeframe. You will need to edit the code if you want to have it work for other timeframes.
Rolling EMAVWAP with Standard Deviation BandsThis is experimental code trying to implement exponentially decreasing weights over time in a simple VWAP.
Also i applied EMA rules when calculating the Standard Deviation Bands.
The script produces results from 1 candle.
There is an "log space" option to neutralize bands shifts when charting in log space - this gives the correct geometrically equal distances on both sides of the emaVWAP.
Bitcoin Logarithmic Fractal Growth Model By ARUDDThis model, which I'm calling the Logarithmic Fractal Growth Mode (L.F.G) , uses Bitcoin's mathematical monetary policy to evaluate the future possible price valuation.
It takes into account fractal (and logarithmic) growth as well as how those who hold bitcoins might react to certain events such as changes in supply and demand. It also shows that it is mathematically logical that someday it must become stable.
The information gained from knowing this helps people make more informed decisions when buying bitcoin and thinking of its future possibilities.
The model can serve as some type of general guideline for determining how much bitcoins should be worth in the future if it follows a certain path from its current price.
Modeling Bitcoin's money supply mathematically, and knowing that there is a finite number of them, makes this whole process much more rational than just thinking about the possibilities in pure subjective terms.
Before going any further I want to say that no one can know with absolute certainty what will happen to bitcoins price in the future, but using mathematics gives us an idea of where things are headed.
The results presented here are based on very reasonable assumptions for how bitcoin might continue to grow (and then level out) once there are over 21 million bitcoins in existence.
The model shows that bitcoin's price can never go down to zero (thus creating the "death spiral" phenomenon), and as such, bitcoin has an extremely high probability of becoming stable as it approaches infinity.
Conversely, this model also shows that at some point there is a high probability that bitcoin will not continue to grow exponentially forever.
Credit goes to Quantadelic for the awesome original script.
ARUDD