Bar Balance [LucF]Bar Balance extracts the number of up, down and neutral intrabars contained in each chart bar, revealing information on the strength of price movement. It can display stacked columns representing raw up/down/neutral intrabar counts, or an up/down balance line which can be calculated and visualized in many different ways.
WARNING: This is an analysis tool that works on historical bars only. It does not show any realtime information, and thus cannot be used to issue alerts or for automated trading. When realtime bars elapse, the indicator will require a browser refresh, a change to its Inputs or to the chart's timeframe/symbol to recalculate and display information on those elapsed bars. Once a trader understands this, the indicator can be used advantageously to make discretionary trading decisions.
Traders used to work with my Delta Volume Columns Pro will feel right at home in this indicator's Inputs . It has lots of options, allowing it to be used in many different ways. If you value the bar balance information this indicator mines, I hope you will find the time required to master the use of Bar Balance well worth the investment.
█ OVERVIEW
The indicator has two modes: Columns and Line .
Columns
• In Columns mode you can display stacked Up/Down/Neutral columns.
• The "Up" section represents the count of intrabars where `close > open`, "Down" where `close < open` and "Neutral" where `close = open`.
• The Up section always appears above the centerline, the Down section below. The Neutral section overlaps the centerline, split halfway above and below it.
The Up and Down sections start where the Neutral section ends, when there is one.
• The Up and Down sections can be colored independently using 7 different methods.
• The signal line plotted in Line mode can also be displayed in Columns mode.
Line
• Displays a single balance line using a zero centerline.
• A variable number of independent methods can be used to calculate the line (6), determine its color (5), and color the fill (5).
You can thus evaluate the state of 3 different components with this single line.
• A "Divergence Levels" feature will use the line to automatically draw expanding levels on divergence events.
Features available in both modes
• The color of all components can be selected from 15 base colors, with 16 gradient levels used for each base color in the indicator's gradients.
• A zero line can show a 6-state aggregate value of the three main volume balance modes.
• The background can be colored using any of 5 different methods.
• Chart bars can be colored using 5 different methods.
• Divergence and large neutral count ratio events can be shown in either Columns or Line mode, calculated in one of 4 different methods.
• Markers on 6 different conditions can be displayed.
█ CONCEPTS
Intrabar inspection
Intrabar inspection means the indicator looks at lower timeframe bars ( intrabars ) making up a given chart bar to gather its information. If your chart is on a 1-hour timeframe and the intrabar resolution determined by the indicator is 5 minutes, then 12 intrabars will be analyzed for each chart bar and the count of up/down/neutral intrabars among those will be tallied.
Bar Balances and calculation methods
The indicator uses a variety of methods to evaluate bar balance and to derive other calculations from them:
1. Balance on Bar : Uses the relative importance of instant Up and Down counts on the bar.
2. Balance Averages : Uses the difference between the EMAs of Up and Down counts.
3. Balance Momentum : Starts by calculating, separately for both Up and Down counts, the difference between the same EMAs used in Balance Averages and an SMA of double the period used for the EMAs. These differences are then aggregated and finally, a bounded momentum of that aggregate is calculated using RSI.
4. Markers Bias : It sums the bull/bear occurrences of the four previous markers over a user-defined period (the default is 14).
5. Combined Balances : This is the aggregate of the instant bull/bear bias of the three main bar balances.
6. Dual Up/Down Averages : This is a display mode showing the EMA calculated for each of the Up and Down counts.
Interpretation of neutral intrabars
What do neutral intrabars mean? When price does not change during a bar, it can be because there is simply no interest in the market, or because of a perfect balance between buyers and sellers. The latter being more improbable, Bar Balance assumes that neutral bars reveal a lack of interest, which entails uncertainty. That is the reason why the option is provided to interpret ratios of neutral intrabars greater than 50% as divergences. It is also the rationale behind the option to dampen signal lines on the inverse ratio of neutral intrabars, so that zero intrabars do not affect the signal, and progressively larger proportions of neutral intrabars will reduce the signal's amplitude, as the balance calcs using the up/down counts lose significance. The impact of the dampening will vary with markets. Weaker markets such as cryptos will often contain greater numbers of neutral intrabars, so dampening the Line in that sector will have a greater impact than in more liquid markets.
█ FEATURES
1 — Columns
• While the size of the Up/Down columns always represents their respective importance on the bar, their coloring mode is independent. The default setup uses a standard coloring mode where the Up/Down columns over/under the zero line are always in the bull/bear color with a higher intensity for the winning side. Six other coloring modes allow you to pack more information in the columns. When choosing to color the top columns using a bull/bear gradient on Balance Averages, for example, you will end up with bull/bear colored tops. In order for the color of the bottom columns to continue to show the instant bar balance, you can then choose the "Up/Down Ratio on Bar — Dual Solid Colors" coloring mode to make those bars the color of the winning side for that bar.
• Line mode shows only the line, but Columns mode allows displaying the line along with it. If the scale of the line is different than that of the scale of the columns, the line will often appear flat. Traders may find even a flat line useful as its bull/bear colors will be easily distinguishable.
2 — Line
• The default setup for Line mode uses a calculation on "Balance Momentum", with a fill on the longer-term "Balance Averages" and a line color based on the "Markers Bias". With the background set on "Line vs Divergence Levels" and the zero line on the hard-coded "Combined Bar Balances", you have access to five distinct sources of information at a glance, to which you can add divergences, divergences levels and chart bar coloring. This provides powerful potential in displaying bar balance information.
• When no columns are displayed, Line mode can show the full scale of whichever line you choose to calculate because the columns' scale no longer interferes with the line's scale.
• Note that when "Balance on Bar" is selected, the Neutral count is also displayed as a ratio of the balance line. This is the only instance where the Neutral count is displayed in Line mode.
• The "Dual Up/Down Averages" is an exception as it displays two lines: one average for the Up counts and another for the Down counts. This mode will be most useful when Columns are also displayed, as it provides a reference for the top and bottom columns.
3 — Zero Line
The zero line can be colored using two methods, both based on the Combined Balances, i.e., the aggregate of the instant bull/bear bias of the three main bar balances.
• In "Six-state Dual Color Gradient" mode, a dot appears on every bar. Its color reflects the bull/bear state of the Combined Balances, and the dot's brightness reflects the tally of balance biases.
• In "Dual Solid Colors (All Bull/All Bear Only)" a dot only appears when all three balances are either bullish or bearish. The resulting pattern is identical to that of Marker 1.
4 — Divergences
• Divergences are displayed as a small circle at the top of the scale. Four different types of divergence events can be detected. Divergences occur whenever the bull/bear bias of the method used diverges with the bar's price direction.
• An option allows you to include in divergence events instances where the count of neutral intrabars exceeds 50% of the total intrabar count.
• The divergence levels are dynamic levels that automatically build from the line's values on divergence events. On consecutive divergences, the levels will expand, creating a channel. This implementation of the divergence levels corresponds to my view that divergences indicate anomalies, hesitations, points of uncertainty if you will. It excludes any association of a pre-determined bullish/bearish bias to divergences. Accordingly, the levels merely take note of divergence events and mark those points in time with levels. Traders then have a reference point from which they can evaluate further movement. The bull/bear/neutral colors used to plot the levels are also congruent with this view in that they are determined by price's position relative to the levels, which is how I think divergences can be put to the most effective use.
5 — Background
• The background can show a bull/bear gradient on four different calculations. You can adjust its brightness to make its visual importance proportional to how you use it in your analysis.
6 — Chart bars
• Chart bars can be colored using five different methods.
• You have the option of emptying the body of bars where volume does not increase, as does my TLD indicator, the idea behind this being that movement on bars where volume does not increase is less relevant.
7 — Intrabar Resolution
You can choose between three modes. Two of them are automatic and one is manual:
a) Fast, Longer history, Auto-Steps (~12 intrabars) : Optimized for speed and deeper history. Uses an average minimum of 12 intrabars.
b) More Precise, Shorter History Auto-Steps (~24 intrabars) : Uses finer intrabar resolution. It is slower and provides less history. Uses an average minimum of 24 intrabars.
c) Fixed : Uses the fixed resolution of your choice.
Auto-Steps calculations vary for 24/7 and conventional markets in order to achieve the proper target of minimum intrabars.
You can choose to view the intrabar resolution currently used to calculate delta volume. It is the default.
The proper selection of the intrabar resolution is important. It must achieve maximal granularity to produce precise results while not unduly slowing down calculations, or worse, causing runtime errors.
8 — Markers
Six markers are available:
1. Combined Balances Agreement : All three Bar Balances are either bullish or bearish.
2. Up or Down % Agrees With Bar : An up marker will appear when the percentage of up intrabars in an up chart bar is greater than the specified percentage. Conditions mirror to down bars.
3. Divergence confirmations By Price : One of the four types of balance calculations can be used to detect divergences with price. Confirmations occur when the bar following the divergence confirms the balance bias. Note that the divergence events used here do not include neutral intrabar events.
4. Balance Transitions : Bull/bear transitions of the selected balance.
5. Markers Bias Transitions : Bull/bear transitions of the Markers Bias.
6. Divergence Confirmations By Line : Marks points where the line first breaches a divergence level.
Markers appear when the condition is detected, without delay. Since nothing is plotted in realtime, markers do not appear on the realtime bar.
9 — Settings
• Two modes can be selected to dampen the line on the ratio of neutral intrabars.
• A distinct weight can be attributed to the count of the latter half of intrabars, on the assumption that later intrabars may be more important in determining the outcome of chart bars.
• Allows control over the periods of the different moving averages used in calculations.
• The default periods used for the various calculations define the following hierarchy from slow to fast:
Balance Averages: 50,
Balance Momentum: 20,
Dual Up/Down Averages: 20,
Marker Bias: 10.
█ LIMITATIONS
• This script uses a special characteristic of the `security()` function allowing the inspection of intrabars—which is not officially supported by TradingView.
• The method used does not work on the realtime bar—only on historical bars.
• The indicator only works on some chart resolutions: 3, 5, 10, 15 and 30 minutes, 1, 2, 4, 6, and 12 hours, 1 day, 1 week and 1 month. The script’s code can be modified to run on other resolutions, but chart resolutions must be divisible by the lower resolution used for intrabars and the stepping mechanism could require adaptation.
• When using the "Line vs Divergence Levels — Dual Color Gradient" color mode to fill the line, background or chart bars, keep in mind that a line calculation mode must be defined for it to work, as it determines gradients on the movement of the line relative to divergence levels. If the line is hidden, it will not work.
• When the difference between the chart’s resolution and the intrabar resolution is too great, runtime errors will occur. The Auto-Steps selection mechanisms should avoid this.
• Alerts do not work reliably when `security()` is used at intrabar resolutions. Accordingly, no alerts are configured in the indicator.
• The color model used in the indicator provides for fancy visuals that come at a price; when you change values in Inputs , it can take 20 seconds for the changes to materialize. Luckily, once your color setup is complete, the color model does not have a large performance impact, as in normal operation the `security()` calls will become the most important factor in determining response time. Also, once in a while a runtime error will occur when you change inputs. Just making another change will usually bring the indicator back up.
█ RAMBLINGS
Is this thing useful?
I'll let you decide. Bar Balance acts somewhat like an X-Ray on bars. The intrabars it analyzes are no secret; one can simply change the chart's resolution to see the same intrabars the indicator uses. What the indicator brings to traders is the precise count of up/down/neutral intrabars and, more importantly, the calculations it derives from them to present the information in a way that can make it easier to use in trading decisions.
How reliable is Bar Balance information?
By the same token that an up bar does not guarantee that more up bars will follow, future price movements cannot be inferred from the mere count of up/down/neutral intrabars. Price movement during any chart bar for which, let's say, 12 intrabars are analyzed, could be due to only one of those intrabars. One can thus easily see how only relying on bar balance information could be very misleading. The rationale behind Bar Balance is that when the information mined for multiple chart bars is aggregated, it can provide insight into the history behind chart bars, and thus some bias as to the strength of movements. An up chart bar where 11/12 intrabars are also up is assumed to be stronger than the same up bar where only 2/12 intrabars are up. This logic is not bulletproof, and sometimes Bar Balance will stray. Also, keep in mind that balance lines do not represent price momentum as RSI would. Bar Balance calculations have no idea where price is. Their perspective, like that of any historian, is very limited, constrained that it is to the narrow universe of up/down/neutral intrabar counts. You will thus see instances where price is moving up while Balance Momentum, for example, is moving down. When Bar Balance performs as intended, this indicates that the rally is weakening, which does necessarily imply that price will reverse. Occasionally, price will merrily continue to advance on weakening strength.
Divergences
Most of the divergence detection methods used here rely on a difference between the bias of a calculation involving a multi-bar average and a given bar's price direction. When using "Bar Balance on Bar" however, only the bar's balance and price movement are used. This is the default mode.
As usual, divergences are points of interest because they reveal imbalances, which may or may not become turning points. I do not share the overwhelming enthusiasm traders have for the purported ability of bullish/bearish divergences to indicate imminent reversals.
Superfluity
In "The Bed of Procrustes", Nassim Nicholas Taleb writes: To bankrupt a fool, give him information . Bar Balance can display lots of information. While learning to use a new indicator inevitably requires an adaptation period where we put it through its paces and try out all its options, once you have become used to Bar Balance and decide to adopt it, rigorously eliminate the components you don't use and configure the remaining ones so their visual prominence reflects their relative importance in your analysis. I tried to provide flexible options for traders to control this indicator's visuals for that exact reason—not for window dressing.
█ NOTES
For traders
• To avoid misleading traders who don't read script descriptions, the indicator shows nothing in the realtime bar.
• The Data Window shows key values for the indicator.
• All gradients used in this indicator determine their brightness intensities using advances/declines in the signal—not their relative position in a fixed scale.
• Note that because of the way gradients are optimized internally, changing their brightness will sometimes require bringing down the value a few steps before you see an impact.
• Because this indicator does not use volume, it will work on all markets.
For coders
• For those interested in gradients, this script uses an advanced version of the Advance/Decline gradient function from the PineCoders Color Gradient (16 colors) Framework . It allows more precise control over the range, steps and min/max values of the gradients.
• I use the PineCoders Coding Conventions for Pine to write my scripts.
• I used functions modified from the PineCoders MTF Selection Framework for the selection of timeframes.
█ THANKS TO:
— alexgrover who helped me think through the dampening method used to attenuate signal lines on high ratios of neutral intrabars.
— A guy called Kuan who commented on a Backtest Rookies presentation of their Volume Profile indicator . The technique I use to inspect intrabars is derived from Kuan's code.
— theheirophant , my partner in the exploration of the sometimes weird abysses of `security()`’s behavior at intrabar resolutions.
— midtownsk8rguy , my brilliant companion in mining the depths of Pine graphics. He is also the co-author of the PineCoders Color Gradient Frameworks .
在脚本中搜索"one一季度财报"
Uptrick: Universal Z-Score ValuationOverview
The Uptrick: Universal Z-Score Valuation is a tool designed to help traders spot when the market might be overreacting—whether that’s on the upside or the downside. It does this by combining the Z-scores of multiple key indicators into a single average, letting you see how far the current market conditions have stretched away from “normal.” This average is shown as a smooth line, supported by color-coded visuals, signal markers, optional background highlights, and a live breakdown table that shows the contribution of each indicator in real time. The focus here is on spotting potential reversals, not following trends. The indicator works well across all timeframes and asset classes, from fast intraday charts like the 1-minute and 5-minute, to higher timeframes such as the 4-hour, daily, or even weekly. Its universal design makes it suitable for any market — whether you're trading crypto, stocks, forex, or commodities.
Introduction
To understand what this indicator does, let’s start with the idea of a Z-score. In simple terms, a Z-score tells you how far a number is from the average of its recent history, measured in standard deviations. If the price of an asset is two standard deviations above its mean, that means it’s statistically “rare” or extended. That doesn’t guarantee a reversal—but it suggests the move is unusual enough to pay attention.
This concept isn’t new, but what this indicator does differently is apply the Z-score to a wide set of market signals—not just price. It looks at momentum, volatility, volume, risk-adjusted performance, and even institutional price baselines. Each of those indicators is normalized using Z-scores, and then they’re combined into one average. This gives you a single, easy-to-read line that summarizes whether the entire market is behaving abnormally. Instead of reacting to one indicator, you’re reacting to a statistically balanced blend.
Purpose
The goal of this script is to catch turning points—places where the market may be topping out or bottoming after becoming overstretched. It’s built for traders who want to fade sharp moves rather than follow trends. Think of moments when price explodes upward and starts pulling away from every moving average, volume spikes, volatility rises, and RSI shoots up. This tool is meant to spot those situations—not just when price is stretched, but when multiple different indicators agree that something is overdone.
Originality and Uniqueness
Most indicators that use Z-scores only apply them to one thing—price, RSI, or maybe Bollinger Bands. This one is different because it treats each indicator as a contributor to the full picture. You decide which ones to include, and the script averages them out. This makes the tool flexible but also deeply informative.
It doesn’t rely on complex or hidden math. It uses basic Z-score formulas, applies them to well-known indicators, and shows you the result. What makes it unique is the way it brings those signals together—statistically, visually, and interactively—so you can see what’s happening in the moment with full transparency. It’s not trying to be flashy or predictive. It’s just showing you when things have gone too far, too fast.
Inputs and Parameters
This indicator includes a wide range of configurable inputs, allowing users to customize which components are included in the Z-score average, how each indicator is calculated, and how results are displayed visually. Below is a detailed explanation of each input:
General Settings
Z-Score Lookback (default: 100): Number of bars used to calculate the mean and standard deviation for Z-score normalization. Larger values smooth the Z-scores; smaller values make them more reactive.
Bar Color Mode (default: None): Determines how bars are visually colored. Options include: None: No candle coloring applied. - Heat: Smooth gradient based on the Z-score value. - Latest Signal: Applies a solid color based on the most recent buy or sell signal
Boolean - General
Plot Universal Valuation Line (default: true): If enabled, plots the average Z-score (zAvg) line in the separate pane.
Show Signals (default: true): Displays labels ("𝓤𝓹" for buy, "𝓓𝓸𝔀𝓷" for sell) when zAvg crosses above or below user-defined thresholds.
Show Z-Score Table (default: true): Displays a live table listing each enabled indicator's Z-score and the current average.
Select Indicators
These toggles enable or disable each indicator from contributing to the Z-score average:
Use VWAP Z-Score (default: true)
Use Sortino Z-Score (default: true)
Use ROC Z-Score (default: true)
Use Price Z-Score (default: true)
Use MACD Histogram Z-Score (default: false)
Use Bollinger %B Z-Score (default: false)
Use Stochastic K Z-Score (default: false)
Use Volume Z-Score (default: false)
Use ATR Z-Score (default: false)
Use RSI Z-Score (default: false)
Use Omega Z-Score (default: true)
Use Sharpe Z-Score (default: true)
Only enabled indicators are included in the average. This modular design allows traders to tailor the signal mix to their preferences.
Indicator Lengths
These inputs control how each individual indicator is calculated:
MACD Fast Length (default: 12)
MACD Slow Length (default: 26)
MACD Signal Length (default: 9)
Bollinger Basis Length (default: 20): Used to compute the Bollinger %B.
Bollinger Deviation Multiplier (default: 2.0): Standard deviation multiplier for the Bollinger Band calculation.
Stochastic Length (default: 14)
ATR Length (default: 14)
RSI Length (default: 14)
ROC Length (default: 10)
Zones
These thresholds define key signal levels for the Z-score average:
Neutral Line Level (default: 0): Baseline for the average Z-score.
Bullish Zone Level (default: -1): Optional intermediate zone suggesting early bullish conditions.
Bearish Zone Level (default: 1): Optional intermediate zone suggesting early bearish conditions.
Z = +2 Line Level (default: 2): Primary threshold for bearish signals.
Z = +3 Line Level (default: 3): Extreme bearish warning level.
Z = -2 Line Level (default: -2): Primary threshold for bullish signals.
Z = -3 Line Level (default: -3): Extreme bullish warning level.
These zone levels are used to generate signals, fill background shading, and draw horizontal lines for visual reference.
Why These Indicators Were Merged
Each indicator in this script was chosen for a specific reason. They all measure something different but complementary.
The VWAP Z-score helps you see when price has moved far from the volume-weighted average, often used by institutions.
Sortino Ratio Z-score focuses only on downside risk, which is often more relevant to traders than overall volatility.
ROC Z-score shows how fast price is changing—strong momentum may burn out quickly.
Price Z-score is the raw measure of how far current price has moved from its mean.
RSI Z-score shows whether momentum itself is stretched.
MACD Histogram Z-score captures shifts in trend strength and acceleration.
%B (Bollinger) Z-score indicates how close price is to the upper or lower volatility envelope.
Stochastic K Z-score gives a sense of how high or low price is relative to its recent range.
Volume Z-score shows when trading activity is unusually high or low.
ATR Z-score gives a read on volatility, showing if price movement is expanding or contracting.
Sharpe Z-score measures reward-to-risk performance, useful for evaluating trend quality.
Omega Z-score looks at the ratio of good returns to bad ones, offering a more nuanced view of efficiency.
By normalizing each of these using Z-scores and averaging only the ones you turn on, the script creates a flexible, balanced view of the market’s statistical stretch.
Calculations
The core formula is the standard Z-score:
Z = (current value - average) / standard deviation
Every indicator uses this formula after it’s calculated using your chosen settings. For example, RSI is first calculated as usual, then its Z-score is calculated over your selected lookback period. The script does this for every indicator you enable. Then it averages those Z-scores together to create a single value: zAvg. That value is plotted and used to generate visual cues, signals, table values, background color changes, and candle coloring.
Sequence
Each selected indicator is calculated using your custom input lengths.
The Z-score of each indicator is computed using the shared lookback period.
All active Z-scores are added up and averaged.
The resulting zAvg value is plotted as a line.
Signal conditions check if zAvg crosses user-defined thresholds (default: ±2).
If enabled, the script plots buy/sell signal labels at those crossover points.
The candle color is updated using your selected mode (heatmap or signal-based).
If extreme Z-scores are reached, background highlighting is applied.
A live table updates with each individual Z-score so you know what’s driving the signal.
Features
This script isn’t just about stats—it’s about making them usable in real time. Every feature has a clear reason to exist, and they’re all there to give you a better read on market conditions.
1. Universal Z-Score Line
This is your primary reference. It reflects the average Z-score across all selected indicators. The line updates live and is color-coded to show how far it is from neutral. The further it gets from 0, the brighter the color becomes—cyan for deeply oversold conditions, magenta for overbought. This gives you instant feedback on how statistically “hot” or “cold” the market is, without needing to read any numbers.
2. Signal Labels (“𝓤𝓹” and “𝓓𝓸𝔀𝓷”)
When the average Z-score drops below your lower bound, you’ll see a "𝓤𝓹" label below the bar, suggesting potential bullish reversal conditions. When it rises above the upper bound, a "𝓓𝓸𝔀𝓷" label is shown above the bar—indicating possible bearish exhaustion. These labels are visually clear and minimal so they don’t clutter your chart. They're based on clear crossover logic and do not repaint.
3. Real-Time Z-Score Table
The table shows each indicator's individual Z-score and the final average. It updates every bar, giving you a transparent breakdown of what’s happening under the hood. If the market is showing an extreme average score, this table helps you pinpoint which indicators are contributing the most—so you’re not just guessing where the pressure is coming from.
4. Bar Coloring Modes
You can choose from three modes:
None: Keeps your candles clean and untouched.
Heat: Applies a smooth gradient color based on Z-score intensity. As conditions become more extreme, candle color transitions from neutral to either cyan (bullish pressure) or magenta (bearish pressure).
Latest Signal: Applies hard coloring based on the most recent signal—greenish for a buy, purple for a sell. This mode is great for tracking market state at a glance without relying on a gradient.
Every part of the candle is colored—body, wick, and border—for full visibility.
5. Background Highlighting
When zAvg enters an extreme zone (typically above +2 or below -2), the background shifts color to reflect the market’s intensity. These changes aren’t overwhelming—they’re light fills that act as ambient warnings, helping you stay aware of when price might be reaching a tipping point.
6. Customizable Zone Lines and Fills
You can define what counts as neutral, overbought, and oversold using manual inputs. Horizontal lines show your thresholds, and shaded regions highlight the most extreme zones (+2 to +3 and -2 to -3). These lines give you visual structure to understand where price currently stands in relation to your personal reversal model.
7. Modular Indicator Control
You don’t have to use all the indicators. You can enable or disable any of the 12 with a simple checkbox. This means you can build your own “blend” of market context—maybe you only care about RSI, price, and volume. Or maybe you want everything on. The script adapts accordingly, only averaging what you select.
8. Fully Customizable Sensitivity and Lengths
You can adjust the Z-score lookback length globally (default 100), and tweak individual indicator lengths separately. This lets you tune the indicator’s responsiveness to suit your trading style—slower for longer swings, faster for scalping.
9. Clean Integration with Any Chart Layout
All visual elements are designed to be informative without taking over your chart. The coloring is soft but clear, the labels are readable without being huge, and you can turn off any feature you don’t need. The indicator can work as a full dashboard or as a simple line with a couple of alerts—it’s up to you.
10. Precise, Real-Time Signal Logic
The crossover logic for signals is exact and only fires when the Z-score moves across your defined boundary. No estimation, no delay. Everything is calculated based on current and previous bar data, and nothing repaints or back-adjusts.
Conclusion
The Universal Z-Score Valuation indicator is a tool for traders who want a clear, unbiased way to detect overextension. Instead of relying on a single signal, you get a composite of several market perspectives—momentum, volatility, volume, and more—all standardized into a single view. The script gives you the freedom to control the logic, the visuals, and the components. Whether you use it as a confirmation tool or a primary signal source, it’s designed to give you clarity when markets become chaotic.
Disclaimer
This indicator is for research and educational use only. It does not constitute financial advice or guarantees of performance. All trading involves risk, and users should test any strategy thoroughly before applying it to live markets. Use this tool at your own discretion.
Uptrick: Fusion Trend Reversion SystemOverview
The Uptrick: Fusion Trend Reversion System is a multi-layered indicator designed to identify potential price reversals during intraday movement while keeping traders informed of the dominant short-term trend. It blends a composite fair value model with deviation logic and a refined momentum filter using the Relative Strength Index (RSI). This tool was created with scalpers and short-term traders in mind and is especially effective on lower timeframes such as 1-minute, 5-minute, and 15-minute charts where price dislocations and quick momentum shifts are frequent.
Introduction
This indicator is built around the fusion of two classic concepts in technical trading: identifying trend direction and spotting potential reversion points. These are often handled separately, but this system merges them into one process. It starts by computing a fair value price using five moving averages, each with its own mathematical structure and strengths. These include the exponential moving average (EMA), which gives more weight to recent data; the simple moving average (SMA), which gives equal weight to all periods; the weighted moving average (WMA), which progressively increases weight with recency; the Arnaud Legoux moving average (ALMA), known for smoothing without lag; and the volume-weighted average price (VWAP), which factors in volume at each price level.
All five are averaged into a single value — the raw fusion line. This fusion acts as a dynamically balanced centerline that adapts to price conditions with both smoothing and responsiveness. Two additional exponential moving averages are applied to the raw fusion line. One is slower, giving a stable trend reference, and the other is faster, used to define momentum and cloud behavior. These two lines — the fusion slow and fusion fast — form the backbone of trend and signal logic.
Purpose
This system is meant for traders who want to trade reversals without losing sight of the underlying directional bias. Many reversal indicators fail because they act too early or signal too frequently in choppy markets. This script filters out noise through two conditions: price deviation and RSI confirmation. Reversion trades are considered only when the price moves a significant distance from fair value and RSI suggests a legitimate shift in momentum. That filtering process gives the trader a cleaner, higher-quality signal and reduces false entries.
The indicator also visually supports the trader through colored bars, up/down labels, and a filled cloud between the fast and slow fusion lines. These features make the market context immediately visible: whether the trend is up or down, whether a reversal just occurred, and whether price is currently in a high-risk reversion zone.
Originality and Uniqueness
What makes this script different from most reversal systems is the way it combines layers of logic — not just to detect signals, but to qualify and structure them. Rather than relying on a single MA or a raw RSI level, it uses a five-MA fusion to create a baseline fair value that incorporates speed, stability, and volume-awareness.
On top of that, the system introduces a dual-smoothing mechanism. It doesn’t just smooth price once — it creates two layers: one to follow the general trend and another to track faster deviations. This structure lets the script distinguish between continuation moves and possible turning points more effectively than a single-line or single-metric system.
It also uses RSI in a more refined way. Instead of just checking if RSI is overbought or oversold, the script smooths RSI and requires directional confirmation. Beyond that, it includes signal memory. Once a signal is generated, a new one will not appear unless the RSI becomes even more extreme and curls back again. This memory-based gating reduces signal clutter and prevents repetition, a rare feature in similar scripts.
Why these indicators were merged
Each moving average in the fusion serves a specific role. EMA reacts quickly to recent price changes and is often favored in fast-trading strategies. SMA acts as a long-term filter and smooths erratic behavior. WMA blends responsiveness with smoothing in a more balanced way. ALMA focuses on minimizing lag without losing detail, which is helpful in fast markets. VWAP anchors price to real trade volume, giving a sense of where actual positioning is happening.
By combining all five, the script creates a fair value model that doesn’t lean too heavily on one logic type. This fusion is then smoothed into two separate EMAs: one slower (trend layer), one faster (signal layer). The difference between these forms the basis of the trend cloud, which can be toggled on or off visually.
RSI is then used to confirm whether price is reversing with enough force to warrant a trade. The RSI is calculated over a 14-period window and smoothed with a 7-period EMA. The reason for smoothing RSI is to cut down on noise and avoid reacting to short, insignificant spikes. A signal is only considered if price is stretched away from the trend line and the smoothed RSI is in a reversal state — below 30 and rising for bullish setups, above 70 and falling for bearish ones.
Calculations
The script follows this structure:
Calculate EMA, SMA, WMA, ALMA, and VWAP using the same base length
Average the five values to form the raw fusion line
Smooth the raw fusion line with an EMA using sens1 to create the fusion slow line
Smooth the raw fusion line with another EMA using sens2 to create the fusion fast line
If fusion slow is rising and price is above it, trend is bullish
If fusion slow is falling and price is below it, trend is bearish
Calculate RSI over 14 periods
Smooth RSI using a 7-period EMA
Determine deviation as the absolute difference between current price and fusion slow
A raw signal is flagged if deviation exceeds the threshold
A raw signal is flagged if RSI EMA is under 30 and rising (bullish setup)
A raw signal is flagged if RSI EMA is over 70 and falling (bearish setup)
A final signal is confirmed for a bullish setup if RSI EMA is lower than the last bullish signal’s RSI
A final signal is confirmed for a bearish setup if RSI EMA is higher than the last bearish signal’s RSI
Reset the bullish RSI memory if RSI EMA rises above 30
Reset the bearish RSI memory if RSI EMA falls below 70
Store last signal direction and use it for optional bar coloring
Draw the trend cloud between fusion fast and fusion slow using fill()
Show signal labels only if showSignals is enabled
Bar and candle colors reflect either trend slope or last signal direction depending on mode selected
How it works
Once the script is loaded, it builds a fusion line by averaging five different types of moving averages. That line is smoothed twice into a fast and slow version. These two fusion lines form the structure for identifying trend direction and signal areas.
Trend bias is defined by the slope of the slow line. If the slow line is rising and price is above it, the market is considered bullish. If the slow line is falling and price is below it, it’s considered bearish.
Meanwhile, the script monitors how far price has moved from that slow line. If price is stretched beyond a certain distance (set by the threshold), and RSI confirms that momentum is reversing, a raw reversion signal is created. But the script only allows that signal to show if RSI has moved further into oversold or overbought territory than it did at the last signal. This blocks repetitive, weak entries. The memory is cleared only if RSI exits the zone — above 30 for bullish, below 70 for bearish.
Once a signal is accepted, a label is drawn. If the signal toggle is off, no label will be shown regardless of conditions. Bar colors are controlled separately — you can color them based on trend slope or last signal, depending on your selected mode.
Inputs
You can adjust the following settings:
MA Length: Sets the period for all moving averages used in the fusion.
Show Reversion Signals: Turns on the plotting of “Up” and “Down” labels when a reversal is confirmed.
Bar Coloring: Enables or disables colored bars based on trend or signal direction.
Show Trend Cloud: Fills the space between the fusion fast and slow lines to reflect trend bias.
Bar Color Mode: Lets you choose whether bars follow trend logic or last signal direction.
Sens 1: Smoothing speed for the slow fusion line — higher values = slower trend.
Sens 2: Smoothing speed for the fast line — lower values = faster signal response.
Deviation Threshold: Minimum distance price must move from fair value to trigger a signal check.
Features
This indicator offers:
A composite fair value model using five moving average types.
Dual smoothing system with user-defined sensitivity.
Slope-based trend definition tied to price position.
Deviation-triggered signal logic filtered by RSI reversal.
RSI memory system that blocks repetitive signals and resets only when RSI exits overbought or oversold zones.
Real-time tracking of the last signal’s direction for optional bar coloring.
Up/Down labels at signal points, visible only when enabled.
Optional trend cloud between fusion layers, visualizing current market bias.
Full user control over smoothing, threshold, color modes, and visibility.
Conclusion
The Fusion Trend-Reversion System is a tool for short-term traders looking to fade price extremes without ignoring trend bias. It calculates fair value using five diverse moving averages, smooths this into two dynamic layers, and applies strict reversal logic based on RSI deviation and momentum strength. Signals are triggered only when price is stretched and momentum confirms it with increasingly strong behavior. This combination makes the tool suitable for scalping, intraday entries, and fast market environments where precision matters.
Disclaimer
This indicator is for informational and educational purposes only. It does not constitute financial advice. All trading involves risk, and no tool can predict market behavior with certainty. Use proper risk management and do your own research before making trading decisions.
Uptrick: Zero Lag HMA Trend Suite1. Name and Purpose
Uptrick: Zero Lag HMA Trend Suite is a Pine Version 6 script that builds upon the Hull Moving Average (HMA) to offer an advanced trend analysis tool. Its purpose is to help traders identify trend direction, potential reversals, and overall market momentum with reduced lag compared to traditional moving averages. By combining the HMA with Average True Range (ATR) thresholds, slope-dependent coloring, Volume Weighted Average Price (VWAP) ribbons, and optional reversal signals, the script aims to give a detailed view of price activity in various market environments.
2. Overview
This script begins with the calculation of a Hull Moving Average, a method that blends Weighted Moving Averages in a way designed to cut down on lag while still smoothing out price fluctuations. Next, several enhancements are applied. The script compares current HMA values to previous ones for slope-based coloring, which highlights uptrends and downtrends at a glance. It also plots buy and sell signals when price moves beyond or below thresholds determined by the ATR and the user’s chosen signal multiplier. An optional VWAP ribbon can be shown to confirm bullish or bearish conditions relative to a volume-weighted benchmark. Additionally, the script can plot reversal signals (labeled with B) at points where price crosses back toward the HMA from above or below. Taken together, these elements allow traders to visualize both the short-term momentum and the broader context of how price interacts with volatility and overall market direction.
3. Why These Indicators Have Been Linked Together
The reason the Hull Moving Average, the Average True Range, and the VWAP have been integrated into one script is to tackle multiple facets of market analysis in a single tool. The Zero Lag Hull Moving Average provides a responsive trend line, the ATR offers a measure of volatility that helps distinguish significant price shifts from typical fluctuations, and the VWAP acts as a reference for fair value based on traded volume. By layering all three, the script helps traders avoid the need to juggle multiple separate indicators and offers a holistic perspective. The slope-based coloring focuses on trend direction, the ATR-based thresholds refine possible buy and sell zones, and the VWAP ribbons provide insight into how price stands relative to an important volume-weighted level. The inclusion of up and down signals and reversal B labels further refines entries and exits.
4. Why Use Uptrick: Zero Lag HMA Trend Suite
The Hull Moving Average is already known for reacting more quickly to price changes compared to other moving averages while retaining a degree of smoothness. This suite enhances the basic HMA by showing colored gradients that make it easy to spot trend direction changes, highlighting potential entry or exit points based on volatility-driven thresholds, and optionally layering a volume-based measure of bullish or bearish market sentiment. By relying on a zero lag approach and additional data points, the script caters to those wanting a more responsive method of identifying shifts in market dynamics. The added reversal signals and up or down alerts give traders extra confirmation for potential turning points.
5. How This Extension Improves on the Basic HMA
This extension not only plots the Hull Moving Average but also includes data-driven alerts and visual cues that traditional HMA lines do not provide. First, it offers multi-layered slope coloring, making up or down trends quickly apparent. Second, it uses ATR-based thresholds to pinpoint moments when price may be extending beyond normal volatility, thus generating buy or sell signals. Third, the script introduces an optional VWAP ribbon to indicate whether the market is trading above or below this pivotal volume-weighted benchmark, adding a further confirmation step for bullish or bearish conditions. Finally, it incorporates optional reversal signals labeled with B, indicating points where price might swing back toward the main HMA line.
6. Core Components
The script can be broken down into several primary functions and features.
a. Zero Lag HMA Calculation
Uses two Weighted Moving Averages (half-length and full-length) combined through a smoothing step based on the square root of the chosen length. This approach is designed to reduce lag significantly compared to other moving averages.
b. Slope Detection
Compares current and prior HMA values to determine if the trend is up or down. The slope-based coloring changes between turquoise shades for upward movement and magenta shades for downward movement, making trend direction immediately visible.
c. ATR-Based Thresholding for Up and Down Signals
The script calculates an Average True Range over a user-defined period, then multiplies it by a signal factor to form two bands around the HMA. When price crosses below the lower band, an up (buy) signal appears; when it crosses above the upper band, a down (sell) signal is shown.
d. Reversal Signals (B Labels)
Tracks when price transitions back toward the main HMA from an extreme zone. When enabled, these reversal points are labeled with a B and can help traders see potential turning points or mean-reversion setups.
e. VWAP Bands
An optional Volume Weighted Average Price ribbon that plots above or below the HMA, indicating bullish or bearish conditions relative to a volume-weighted price benchmark. This can also act as a kind of support/ resistance.
7. User Inputs
a. HMA Length
Controls how quickly the moving average responds to price changes. Shorter lengths react faster but can lead to more frequent signals, whereas longer lengths produce smoother lines.
b. Source
Specifies the price input, such as close or an alternative source, for the calculation. This can help align the HMA with specific trading strategies.
c. ATR Length and Signal Multiplier
Defines how the script calculates average volatility and sets thresholds for buy or sell alerts. Adjusting these values can help filter out noise or highlight more aggressive signals.
d. Slope Index
Determines how many bars to look back for detecting slope direction, influencing how sensitive the slope coloring is to small fluctuations.
e. Show Buy and Sell Signals, Reversal Signals, and VWAP
Lets users toggle the display of these features. Turning off certain elements can reduce chart clutter if traders prefer a simpler layout.
8. Calculation Process
The script’s calculation follows a step-by-step approach. It first computes two Weighted Moving Averages of the selected price source, one over half the specified length and one over the full length. It then combines these using 2*wma1 minus wma2 to reduce lag, followed by applying another weighted average using the square root of the length. Simultaneously, it computes the ATR for a user-defined period. By multiplying ATR by the signal multiplier, it establishes upper and lower bands around the HMA, where crossovers generate buy (up) or sell (down) signals. The script can also plot reversal signals (B labels) when price crosses back from these bands in the opposite direction. For the optional VWAP feature, Pine Script’s ta.vwap function is used, and differences between the HMA and VWAP levels determine the color and opacity of the ribbon.
9. Signal Generation and Filtering
The ATR-based thresholds reduce the influence of small, inconsequential price swings. When price falls below the lower band, the script issues an up (buy) signal. If price breaks above the upper band, a down (sell) signal appears. These signals are visible through labels placed near the bars. Reversal signals, labeled with B, can be turned on to help detect when price retraces from an extended area back toward the main HMA line. Traders can disable or enable these signals to match their preferred level of chart detail or risk tolerance.
10. Visualization on the Chart
The Zero HMA Lag Trend Suite aims for visual clarity. The HMA line is plotted multiple times with increasing transparency to create a gradient effect. Turquoise gradients indicate upward slopes, and magenta gradients signify downward slopes. Bar coloring can be configured to align with the slope direction, providing quick insight into current momentum. When enabled, buy or sell labels are placed under or above the bars as price crosses the ATR-defined boundaries. If the reversal option is active, B labels appear around areas where price changes direction. The optional VWAP ribbons form background bands, using distinct coloration to signal whether price is above or below the volume-weighted metric.
11. Market Adaptability
Because the script’s parameters (HMA length, ATR length, signal multiplier, and slope index) are user-configurable, it can adapt to a wide range of markets and timeframes. Intraday traders may prefer a shorter HMA length for quick signals, while swing or position traders might use a longer HMA length to filter out short-lived price changes. The source setting can also be adjusted, allowing for specialized data inputs beyond just close or open values.
12. Risk Management Considerations
The script’s signals and labels are based on past price data and volatility readings, and they do not guarantee profitable outcomes. Sharp market reversals or unforeseen fundamental events can produce false signals. Traders should combine this tool with broader risk management strategies, including stop-loss placement, position sizing, and independent market analyses. The Zero HMA Lag Trend Suite can help highlight potential opportunities, but it should not be relied upon as the sole basis for trade decisions.
13. Combining with Other Tools
Many traders choose to verify signals from the Zero HMA Lag Trend Suite using popular indicators like the Relative Strength Index (RSI), Moving Average Convergence Divergence (MACD), or even simple volume-based metrics to confirm whether a price movement has sufficient momentum. Conventional techniques such as support and resistance levels, chart patterns, or candlestick analysis can also supplement signals generated by the script’s up, down, or reversal B labels.
14. Parameter Customization and Examples
a. Short-Term Day Trading
Using a shorter HMA length (for instance, 9 or 14) and a slightly higher ATR multiplier might provide timely buy and sell signals, though it may also produce more whipsaws in choppy markets.
b. Swing or Position Trading
Selecting a longer HMA length (such as 50 or 100) with a moderate ATR multiplier can help users track more significant and sustained market moves, potentially reducing the effect of minor fluctuations.
c. Multiple Timeframe Blends
Some traders load two versions of the indicator on the same chart, one for short-term signals (with frequent B label reversals) and another for the broader trend direction, aligning entry and exit decisions with the bigger picture.
15. Realistic Expectations
Even though the Hull Moving Average helps minimize lag and the script incorporates volatility-based filters and optional VWAP overlays, it cannot predict future market behavior with complete accuracy. Periods of low liquidity or sudden market shocks can still lead to signals that do not reflect longer-term trends. Frequent parameter review and manual confirmation are advised before executing trades based solely on the script’s outputs.
16. Theoretical Background
The Hull Moving Average formula aims to balance smoothness with reactivity, accomplished by combining Weighted Moving Averages at varying lengths. By subtracting a slower average from a faster one and then applying another smoothing step with the square root of the original length, the HMA is designed to respond more promptly to price changes than typical exponential or simple moving averages. The ATR component, introduced by J. Welles Wilder, calculates the average range of price movement over a user-defined period, allowing the script to assess volatility and adapt signals accordingly. VWAP provides a volume-weighted benchmark that many institutional traders track to gauge fair intraday value.
17. Originality and Uniqueness
Although multiple HMA-based indicators can be found, Uptrick: Zero Lag HMA Trend Suite sets itself apart by merging slope-based coloring, ATR thresholds, VWAP ribbons, up or down labels, and optional reversal signals all in one cohesive platform. This synergy aims to reduce chart clutter while still giving traders a comprehensive look at trend direction, volatility, and volume-based sentiment.
18. Summary
Uptrick: Zero Lag HMA Trend Suite is a specialized trading script designed to highlight potential market trends and reversals with minimal delay. It leverages the Hull Moving Average for an adaptive yet smooth price line, pairs ATR-based thresholds for detecting possible breakouts or dips, and provides VWAP-based ribbons for added volume-weighted context. Traders can further refine their entries and exits by enabling up or down signals and reversal labels (B) where price may revert toward the HMA. Suitable for a wide range of timeframes and instrument types, the script encourages a disciplined approach to trade management and risk control.
19. Disclaimer
This script is provided for informational and educational purposes only. Trading and investing involve significant financial risk, and no indicator can guarantee success under all conditions. Users should practice robust risk management, including the placement of stop losses and position sizing, and should confirm signals with additional analysis tools. The developer of this script assumes no liability for any trading decisions or outcomes resulting from its use.
Uptrick: Fisher Eclipse1. Name and Purpose
Uptrick: Fisher Eclipse is a Pine version 6 extension of the basic Fisher Transform indicator that focuses on highlighting potential turning points in price data. Its purpose is to allow traders to spot shifts in momentum, detect divergence, and adapt signals to different market environments. By combining a core Fisher Transform with additional signal processing, divergence detection, and customizable aggressiveness settings, this script aims to help users see when a price move might be losing momentum or gaining strength.
2. Overview
This script uses a Fisher Transform calculation on the average of each bar’s high and low (hl2). The Fisher Transform is designed to amplify price extremes by mapping data into a different scale, making potential reversals more visible than they might be with standard oscillators. Uptrick: Fisher Eclipse takes this concept further by integrating a signal line, divergence detection, bar coloring for momentum intensity, and optional thresholds to reduce unwanted noise.
3. Why Use the Fisher Transform
The Fisher Transform is known for converting relatively smoothed price data into a more pronounced scale. This transformation highlights where markets may be overextended. In many cases, standard oscillators move gently, and traders can miss subtle hints that a reversal might be approaching. The Fisher Transform’s mathematical approach tightens the range of values and sharpens the highs and lows. This behavior can allow traders to see clearer peaks and troughs in momentum. Because it is often quite responsive, it can help anticipate areas where price might change direction, especially when compared to simpler moving averages or traditional oscillators. The result is a more evident signal of possible overbought or oversold conditions.
4. How This Extension Improves on the Basic Fisher Transform
Uptrick: Fisher Eclipse adds multiple features to the classic Fisher framework in order to address different trading styles and market behaviors:
a) Divergence Detection
The script can detect bullish or bearish divergences between price and the oscillator over a chosen lookback period, helping traders anticipate shifts in market direction.
b) Bar Coloring
When momentum exceeds a certain threshold (default 3), bars can be colored to highlight surges of buying or selling pressure. This quick visual reference can assist in spotting periods of heightened activity. After a bar color like this, usually, there is a quick correction as seen in the image below.
c) Signal Aggressiveness Levels
Users can choose between conservative, moderate, or aggressive signal thresholds. This allows them to tune how quickly the indicator flags potential entries or exits. Aggressive settings might suit scalpers who need rapid signals, while conservative settings may benefit swing traders preferring fewer, more robust indications.
d) Minimum Movement Filter
A configurable filter can be set to ensure that the Fisher line and its signal have a sufficient gap before triggering a buy or sell signal. This step is useful for traders seeking to minimize signals during choppy or sideways markets. This can be used to eliminate noise as well.
By combining all these elements into one package, the indicator attempts to offer a comprehensive toolkit for those who appreciate the Fisher Transform’s clarity but also desire more versatility.
5. Core Components
a) Fisher Transform
The script calculates a Fisher value using normalized price over a configurable length, highlighting potential peaks and troughs.
b) Signal Line
The Fisher line is smoothed using a short Simple Moving Average. Crossovers and crossunders are one of the key ways this indicator attempts to confirm momentum shifts.
c) Divergence Logic
The script looks back over a set number of bars to compare current highs and lows of both price and the Fisher oscillator. When price and the oscillator move in opposing directions, a divergence may occur, suggesting a possible upcoming reversal or weakening trend.
d) Thresholds for Overbought and Oversold
Horizontal lines are drawn at user-chosen overbought and oversold levels. These lines help traders see when momentum readings reach particular extremes, which can be especially relevant when combined with crossovers in that region.
e) Intensity Filter and Bar Coloring
If the magnitude of the change in the Fisher Transform meets or exceeds a specified threshold, bars are recolored. This provides a visual cue for significant momentum changes.
6. User Inputs
a) length
Defines how many bars the script looks back to compute the highest high and lowest low for the Fisher Transform. A smaller length reacts more quickly but can be noisier, while a larger length smooths out the indicator at the cost of responsiveness.
b) signal aggressiveness
Adjusts the buy and sell thresholds for conservative, moderate, and aggressive trading styles. This can be key in matching the indicator to personal risk preferences or varying market conditions. Conservative will give you less signals and aggressive will give you more signals.
c) minimum movement filter
Specifies how far apart the Fisher line and its signal line must be before generating a valid crossover signal.
d) divergence lookback
Controls how many bars are examined when determining if price and the oscillator are diverging. A larger setting might generate fewer signals, while a smaller one can provide more frequent alerts.
e) intensity threshold
Determines how large a change in the Fisher value must be for the indicator to recolor bars. Strong momentum surges become more noticeable.
f) overbought level and oversold level
Lets users define where they consider market conditions to be stretched on the upside or downside.
7. Calculation Process
a) Price Input
The script uses the midpoint of each bar’s high and low, sometimes referred to as hl2.
hl2 = (high + low) / 2
b) Range Normalization
Determine the maximum (maxHigh) and minimum (minLow) values over a user-defined lookback period (length).
Scale the hl2 value so it roughly fits between -1 and +1:
value = 2 * ((hl2 - minLow) / (maxHigh - minLow) - 0.5)
This step highlights the bar’s current position relative to its recent highs and lows.
c) Fisher Calculation
Convert the normalized value into the Fisher Transform:
fisher = 0.5 * ln( (1 + value) / (1 - value) ) + 0.5 * fisher_previous
fisher_previous is simply the Fisher value from the previous bar. Averaging half of the new transform with half of the old value smooths the result slightly and can prevent erratic jumps.
ln is the natural logarithm function, which compresses or expands values so that market turns often become more obvious.
d) Signal Smoothing
Once the Fisher value is computed, a short Simple Moving Average (SMA) is applied to produce a signal line. In code form, this often looks like:
signal = sma(fisher, 3)
Crossovers of the fisher line versus the signal line can be used to hint at changes in momentum:
• A crossover occurs when fisher moves from below to above the signal.
• A crossunder occurs when fisher moves from above to below the signal.
e) Threshold Checking
Users typically define oversold and overbought levels (often -1 and +1).
Depending on aggressiveness settings (conservative, moderate, aggressive), these thresholds are slightly shifted to filter out or include more signals.
For example, an oversold threshold of -1 might be used in a moderate setting, whereas -1.5 could be used in a conservative setting to require a deeper dip before triggering.
f) Divergence Checks
The script looks back a specified number of bars (divergenceLookback). For both price and the fisher line, it identifies:
• priceHigh = the highest hl2 within the lookback
• priceLow = the lowest hl2 within the lookback
• fisherHigh = the highest fisher value within the lookback
• fisherLow = the lowest fisher value within the lookback
If price forms a lower low while fisher forms a higher low, it can signal a bullish divergence. Conversely, if price forms a higher high while fisher forms a lower high, a bearish divergence might be indicated.
g) Bar Coloring
The script monitors the absolute change in Fisher values from one bar to the next (sometimes called fisherChange):
fisherChange = abs(fisher - fisher )
If fisherChange exceeds a user-defined intensityThreshold, bars are recolored to highlight a surge of momentum. Aqua might indicate a strong bullish surge, while purple might indicate a strong bearish surge.
This color-coding provides a quick visual cue for traders looking to spot large momentum swings without constantly monitoring indicator values.
8. Signal Generation and Filtering
Buy and sell signals occur when the Fisher line crosses the signal line in regions defined as oversold or overbought. The optional minimum movement filter prevents triggering if Fisher and its signal line are too close, reducing the chance of small, inconsequential price fluctuations creating frequent signals. Divergences that appear in oversold or overbought regions can serve as additional evidence that momentum might soon shift.
9. Visualization on the Chart
Uptrick: Fisher Eclipse plots two lines: the Fisher line in one color and the signal line in a contrasting shade. The chart displays horizontal dashed lines where the overbought and oversold levels lie. When the Fisher Transform experiences a sharp jump or drop above the intensity threshold, the corresponding price bars may change color, signaling that momentum has undergone a noticeable shift. If the indicator detects bullish or bearish divergence, dotted lines are drawn on the oscillator portion to connect the relevant points.
10. Market Adaptability
Because of the different aggressiveness levels and the optional minimum movement filter, Uptrick: Fisher Eclipse can be tailored to multiple trading styles. For instance, a short-term scalper might select a smaller length and more aggressive thresholds, while a swing trader might choose a longer length for smoother readings, along with conservative thresholds to ensure fewer but potentially stronger signals. During strongly trending markets, users might rely more on divergences or large intensity changes, whereas in a range-bound market, oversold or overbought conditions may be more frequent.
11. Risk Management Considerations
Indicators alone do not ensure favorable outcomes, and relying solely on any one signal can be risky. Using a stop-loss or other protections is often suggested, especially in fast-moving or unpredictable markets. Divergence can appear before a market reversal actually starts. Similarly, a Fisher Transform can remain in an overbought or oversold region for extended periods, especially if the trend is strong. Cautious interpretation and confirmation with additional methods or chart analysis can help refine entry and exit decisions.
12. Combining with Other Tools
Traders can potentially strengthen signals from Uptrick: Fisher Eclipse by checking them against other methods. If a moving average cross or a price pattern aligns with a Fisher crossover, the combined evidence might provide more certainty. Volume analysis may confirm whether a shift in market direction has participation from a broad set of traders. Support and resistance zones could reinforce overbought or oversold signals, particularly if price reaches a historical boundary at the same time the oscillator indicates a possible reversal.
13. Parameter Customization and Examples
Some short-term traders run a 15-minute chart, with a shorter length setting, aggressively tight oversold and overbought thresholds, and a smaller divergence lookback. This approach produces more frequent signals, which may appeal to those who enjoy fast-paced trading. More conservative traders might apply the indicator to a daily chart, using a larger length, moderate threshold levels, and a bigger divergence lookback to focus on broader market swings. Results can differ, so it may be helpful to conduct thorough historical testing to see which combination of parameters aligns best with specific goals.
14. Realistic Expectations
While the Fisher Transform can reveal potential turning points, no mathematical tool can predict future price behavior with full certainty. Markets can behave erratically, and a period of strong trending may see the oscillator pinned in an extreme zone without a significant reversal. Divergence signals sometimes appear well before an actual trend change occurs. Recognizing these limitations helps traders manage risk and avoids overreliance on any one aspect of the script’s output.
15. Theoretical Background
The Fisher Transform uses a logarithmic formula to map a normalized input, typically ranging between -1 and +1, into a scale that can fluctuate around values like -3 to +3. Because the transformation exaggerates higher and lower readings, it becomes easier to spot when the market might have stretched too far, too fast. Uptrick: Fisher Eclipse builds on that foundation by adding a series of practical tools that help confirm or refine those signals.
16. Originality and Uniqueness
Uptrick: Fisher Eclipse is not simply a duplicate of the basic Fisher Transform. It enhances the original design in several ways, including built-in divergence detection, bar-color triggers for momentum surges, thresholds for overbought and oversold levels, and customizable signal aggressiveness. By unifying these concepts, the script seeks to reduce noise and highlight meaningful shifts in market direction. It also places greater emphasis on helping traders adapt the indicator to their specific style—whether that involves frequent intraday signals or fewer, more robust alerts over longer timeframes.
17. Summary
Uptrick: Fisher Eclipse is an expanded take on the original Fisher Transform oscillator, including divergence detection, bar coloring based on momentum strength, and flexible signal thresholds. By adjusting parameters like length, aggressiveness, and intensity thresholds, traders can configure the script for day-trading, swing trading, or position trading. The indicator endeavors to highlight where price might be shifting direction, but it should still be combined with robust risk management and other analytical methods. Doing so can lead to a more comprehensive view of market conditions.
18. Disclaimer
No indicator or script can guarantee profitable outcomes in trading. Past performance does not necessarily suggest future results. Uptrick: Fisher Eclipse is provided for educational and informational purposes. Users should apply their own judgment and may want to confirm signals with other tools and methods. Deciding to open or close a position remains a personal choice based on each individual’s circumstances and risk tolerance.
US 30 Daily Breakout Strategy The US 30 Daily Breakout Strategy (Single Trade Per Breakout/Breakdown) is a trading approach for the US 30 (Dow Jones Industrial Average) that aims to capture breakout or breakdown moves based on the previous day’s high and low levels. The strategy includes mechanisms to take only one trade per breakout (or breakdown) each day and ensures that each trade is executed only when no other trade is open.
Entry Conditions:
Long Trade (Breakout): The strategy initiates a long position if the current candle closes above the previous day's high, indicating an upward breakout. Only one breakout trade can occur per day, regardless of whether the price remains above the previous high.
Short Trade (Breakdown): The strategy initiates a short position if the current candle closes below the previous day's low, indicating a downward breakdown. Similarly, only one breakdown trade can occur per day.
Risk Management:
Take Profit and Stop Loss: Each trade has a take profit and stop loss of 50 points, aiming to cap profit and limit loss effectively for each position.
Daily Reset Mechanism:
At the start of each new day (based on New York time), the strategy resets its flags, allowing it to look for new breakout or breakdown trades. This reset ensures that only one trade can be taken per breakout or breakdown level each day.
Execution Logic
Flags for Trade Limitation: Flags (breakout_traded and breakdown_traded) are used to ensure only one breakout or breakdown trade is taken per day. These flags reset daily.
Dynamic Plotting: The previous day’s high and low are plotted on the chart, providing a visual reference for potential breakout or breakdown levels.
Overall Objective
This strategy is designed to capture single-directional daily moves by identifying significant breakouts or breakdowns beyond the previous day’s range. The fixed profit and loss limits ensure the trades are managed with controlled risk, while the daily reset feature prevents overtrading and limits each trade opportunity to one breakout and one breakdown attempt per day.
PRINT_TYPELibrary "PRINT_TYPE"
Inputs
Inputs objects
Fields:
inbalance_percent (series int) : percentage coefficient to determine the Imbalance of price levels
stacked_input (series int) : minimum number of consecutive Imbalance levels required to draw extended lines
show_summary_footprint (series bool)
procent_volume_area (series int) : definition size Value area
new_imbalance_cond (series bool) : bool input for setup alert on new imbalance buy and sell
new_imbalance_line_cond (series bool) : bool input for setup alert on new imbalance line buy and sell
stop_past_imbalance_line_cond (series bool) : bool input for setup alert on stop past imbalance line buy and sell
Constants
Constants all Constants objects
Fields:
imbalance_high_char (series string) : char for printing buy imbalance
imbalance_low_char (series string) : char for printing sell imbalance
color_title_sell (series color) : color for footprint sell
color_title_buy (series color) : color for footprint buy
color_line_sell (series color) : color for sell line
color_line_buy (series color) : color for buy line
color_title_none (series color) : color None
Calculation_data
Calculation_data data for calculating
Fields:
detail_open (array) : array open from calculation timeframe
detail_high (array) : array high from calculation timeframe
detail_low (array) : array low from calculation timeframe
detail_close (array) : array close from calculation timeframe
detail_vol (array) : array volume from calculation timeframe
previos_detail_close (array) : array close from calculation timeframe
isBuyVolume (series bool) : attribute previosly bar buy or sell
Footprint_row
Footprint_row objects one footprint row
Fields:
price (series float) : row price
buy_vol (series float) : buy volume
sell_vol (series float) : sell volume
imbalance_buy (series bool) : attribute buy inbalance
imbalance_sell (series bool) : attribute sell imbalance
buy_vol_box (series box) : for ptinting buy volume
sell_vol_box (series box) : for printing sell volume
buy_vp_box (series box) : for ptinting volume profile buy
sell_vp_box (series box) : for ptinting volume profile sell
row_line (series label) : for ptinting row price
empty (series bool) : = true attribute row with zero volume buy and zero volume sell
Imbalance_line_var_object
Imbalance_line_var_object var objects printing and calculation imbalance line
Fields:
cum_buy_line (array) : line array for saving all history buy imbalance line
cum_sell_line (array) : line array for saving all history sell imbalance line
Imbalance_line
Imbalance_line objects printing and calculation imbalance line
Fields:
buy_price_line (array) : float array for saving buy imbalance price level
sell_price_line (array) : float array for saving sell imbalance price level
var_imba_line (Imbalance_line_var_object) : var objects this type
Footprint_bar
Footprint_bar all objects one bar with footprint
Fields:
foot_rows (array) : objects one row footprint
imba_line (Imbalance_line) : objects imbalance line
row_size (series float) : size rows
total_vol (series float) : total volume one footprint bar
foot_buy_vol (series float) : buy volume one footprint bar
foot_sell_vol (series float) : sell volume one footprint bar
foot_max_price_vol (map) : map with one value - price row with max volume buy + sell
calc_data (Calculation_data) : objects with detail data from calculation resolution
Support_objects
Support_objects support object for footprint calculation
Fields:
consts (Constants) : all consts objects
inp (Inputs) : all input objects
bar_index_show_condition (series bool) : calculation bool value for show all objects footprint
row_line_color (series color) : calculation value - color for row price
dop_info (series string)
show_table_cond (series bool)
Correlation with AveragesThe "Correlation with Averages" indicator is designed to visualize and analyze the correlation between a selected asset's price and a base symbol's price, such as the S&P 500 (SPY). This indicator allows users to evaluate how closely an asset’s price movements align with those of the base symbol over various time periods, providing insights into market trends and potential portfolio adjustments.
Key Features:
Base Symbol and Correlation Period:
Users can specify the base symbol (default is SPY) and the period for correlation measurement (default is 252 trading days, approximating one year).
Correlation Calculation:
The indicator computes the correlation between the asset’s closing price and the base symbol’s closing price for the defined period.
Visualization:
The correlation value is plotted on the chart, with conditional background colors indicating the strength and direction of the correlation:
Red for negative correlation (below -0.5)
Green for positive correlation (above 0.5)
Yellow for neutral correlation (between -0.5 and 0.5)
Average Correlation Over Time:
Average correlations are calculated and displayed for various periods: one week, one month, one year, and five years.
A table on the chart provides dynamic updates of these average values with color-coded backgrounds to indicate correlation strength.
The Role of Correlation in Portfolio Management
Correlation is a crucial concept in portfolio management because it measures the degree to which two securities move in relation to each other. Understanding correlation helps investors construct diversified portfolios that balance risk and return. Here's why correlation is important:
Diversification:
By including assets with low or negative correlation in a portfolio, investors can reduce overall portfolio volatility and risk. For instance, if one asset is negatively correlated with another, when one performs poorly, the other may perform well, thus smoothing the overall returns.
Risk Management:
Correlation analysis helps in identifying the potential impact of one asset’s performance on the entire portfolio. Assets with high correlation can lead to concentrated risk, while those with low correlation offer better risk management.
Performance Analysis:
Correlation measures the degree to which asset returns move together. This can inform strategic decisions, such as whether to adjust positions based on expected market conditions.
Scientific References
Markowitz, H. M. (1952). "Portfolio Selection." Journal of Finance, 7(1), 77-91.
This foundational paper introduced Modern Portfolio Theory, highlighting the importance of diversification and correlation in reducing portfolio risk.
Jorion, P. (2007). Financial Risk Manager Handbook. Wiley.
This handbook provides an in-depth exploration of risk management techniques, including the use of correlation in portfolio management.
Elton, E. J., Gruber, M. J., Brown, S. J., & Goetzmann, W. N. (2014). Modern Portfolio Theory and Investment Analysis. Wiley.
This book elaborates on the concepts of correlation and diversification, offering practical insights into portfolio construction and risk management.
By utilizing the "Correlation with Averages" indicator, traders and portfolio managers can make informed decisions based on the relationship between asset prices and the base symbol, ultimately enhancing their investment strategies.
Quantiple Direction IndexThis indicator indicates market trends by analyzing the following signals:
1. RSI which is a momentum oscillator
2. Directional Movement Index (DMI) which measures the direction of the movement
3. Price in comparison to EMA 13 and 21 to determine whether the trend is clear or there is an ambiguity
4. ADX that shows the strength of the momentum
Scoring logic
While we have kept the source code open which gives the scoring logic, for ease of the user, I am summarizing the scoring logic
A. We break down RSI and DMI into a 9 point scale (-4 to +4) from extremely bearish to bullish. Then we give equal weight to both and come out with a direction score.
B. We use EMA to determine if their is clarity in the price trend. While the direction is deduced from point A, if there is clarity we know that the confidence on the direction is high. If EMA 13 is higher than EMA 21 and the price is above EMA 13, then we assign it as a score of +1 as we get clear bullish trend. Similarly if EMA 13 is below EMA 21 and the price is below both the EMAs then we assign it a score of -1 as we get clear bearish trend. Anything else is considered as inconclusive and given a score of 0
C. We use ADX to determine the strength of the directional momentum. It is like acceleration. We use ADX score as an strength adjustment factor. If the value is above 25 - we multiply A+B by 1.25. Similarly we multiply it by 0.75 if the strength is weak and no change if the strength is neutral.
Finally this indicator categorizes market direction into five levels:
- Very Bullish
- Bullish
- Neutral
- Bearish
- Very Bearish
Scores range from +6 (very bullish) to -6 (very bearish), with the user setting thresholds for each category. The midpoint between Bullish and Bearish defines the neutral zone.
Again all the exact values are in the code and the user can also customize as per their trading system.
Why does it make sense to combine these different indicators rather than looking at them in isolation?
We give equal weight to RSI and DMI to derive the direction of the price movement. Using two different indicators provide a better confirmation on the direction. However, this alone is not sufficient.
We want clarity of the direction and for that we use the EMA score (please refer to point B above). If we have clarity, the probability of the direction being right goes up.
Once we know the direction, we want to know what is the strength of that direction. This point is very valuable for an option trader. This is where this indicator brings value.
Please note that by looking at these indicators in isolation one can get a sense of direction or a sense of strength of the direction. But, when you combine them, you get whether the direction move is with strength or not. If you are into option trading, you will clearly understand the rational behind it when you look at the trading rules provided in this description. For example if one knows that the direction is bullish (which one can potentially get from RSI or DMI), one can either buy a call or sell a put. But one knows that not only the direction is bullish, but it has the right acceleration (strength of the momentum), then one will assign higher probability of higher profit from buying call than from selling put.
To summarize we have combined indicators to achieve the following
1. Get confirmation from two different indicators on the direction of the price movement (RSI and DMI)
2. Confirm that the direction is clear (Price relative to EMA)
3. Combine with the strength of the direction (ADX)
Direction, clarity of the direction and the strength of the directional movement is a valuable trading indicator in our opinion.
Suggested trading rules
1. Short strangle strategy when the trend is neutral with one's usual option selling quantity. Equal quantity on put and call.
2. Full quantity short put and half quantity short call when the trend is bullish.
3. Full quantity short put and call long when the indicator is very bullish.
4. Vice versa for bearish ( full call short, half put short) and very bearish (full call short, put long)
Suggested to use 5 min timeframe for scalping, 15 min for intraday positions, 1 hour for weekly and monthly positions, and daily/weekly for investments.
The value of this indicator oscillates between +6 to -6. You can tweak the range for V bullish, bullish, bearish, and v bearish. The values in between will default to the neutral zone.
Disclaimers:
1. While the creator has used this in the live market, no claim is being made on its effectiveness or profit making ability. Please use it for trading only after you have tested it and are satisfied.
2. There may be thousands or millions of better trader in this world than the creator of this script. The creator makes no claim of his intelligence or trading ability.
3. The creator has no intention of selling this particular script now or in future. This is purely for community use and there's no intention to make any monetary profit from it.
4. The creator is not requesting or soliciting anyone to like or promote this script. The creator is also not asking anyone to give him any business now or in future even if they like this script and benefit from it.
LibraryCOT_NZLibrary "LibraryCOT_NZ"
This library provides tools to help Pine programmers fetch Commitment of Traders (COT) data for futures.
rootToCFTCCode(root)
Accepts a futures root and returns the relevant CFTC code.
Parameters:
root (simple string) : Root prefix of the future's symbol, e.g. "ZC" for "ZC1!"" or "ZCU2021".
Returns: The part of a COT ticker corresponding to `root`, or "" if no CFTC code exists for the `root`.
currencyToCFTCCode(currency)
Converts a currency string to its corresponding CFTC code.
Parameters:
currency (simple string)
Returns: The corresponding to the currency, if one exists.
optionsToTicker(includeOptions)
Returns the part of a COT ticker using the `includeOptions` value supplied, which determines whether options data is to be included.
Parameters:
includeOptions (simple bool) : A "bool" value: 'true' if the symbol should include options and 'false' otherwise.
Returns: The part of a COT ticker: "FO" for data that includes options and "F" for data that doesn't.
metricNameAndDirectionToTicker(metricName, metricDirection)
Returns a string corresponding to a metric name and direction, which is one component required to build a valid COT ticker ID.
Parameters:
metricName (simple string) : One of the metric names listed in this library's chart. Invalid values will cause a runtime error.
metricDirection (simple string) : Metric direction. Possible values are: "Long", "Short", "Spreading", and "No direction". Valid values vary with metrics. Invalid values will cause a runtime error.
Returns: The part of a COT ticker ID string, e.g., "OI_OLD" for "Open Interest" and "No direction", or "TC_L" for "Traders Commercial" and "Long".
typeToTicker(metricType)
Converts a metric type into one component required to build a valid COT ticker ID. See the "Old and Other Futures" section of the CFTC's Explanatory Notes for details on types.
Parameters:
metricType (simple string) : Metric type. Accepted values are: "All", "Old", "Other".
Returns: The part of a COT ticker.
convertRootToCOTCode(mode, convertToCOT)
Depending on the `mode`, returns a CFTC code using the chart's symbol or its currency information when `convertToCOT = true`. Otherwise, returns the symbol's root or currency information. If no COT data exists, a runtime error is generated.
Parameters:
mode (simple string) : A string determining how the function will work. Valid values are:
"Root": the function extracts the futures symbol root (e.g. "ES" in "ESH2020") and looks for its CFTC code.
"Base currency": the function extracts the first currency in a pair (e.g. "EUR" in "EURUSD") and looks for its CFTC code.
"Currency": the function extracts the quote currency ("JPY" for "TSE:9984" or "USDJPY") and looks for its CFTC code.
"Auto": the function tries the first three modes (Root -> Base Currency -> Currency) until a match is found.
convertToCOT (simple bool) : "bool" value that, when `true`, causes the function to return a CFTC code. Otherwise, the root or currency information is returned. Optional. The default is `true`.
Returns: If `convertToCOT` is `true`, the part of a COT ticker ID string. If `convertToCOT` is `false`, the root or currency extracted from the current symbol.
COTTickerid(COTType, CFTCCode, includeOptions, metricName, metricDirection, metricType)
Returns a valid TradingView ticker for the COT symbol with specified parameters.
Parameters:
COTType (simple string) : A string with the type of the report requested with the ticker, one of the following: "Legacy", "Disaggregated", "Financial".
CFTCCode (simple string)
includeOptions (simple bool) : A boolean value. 'true' if the symbol should include options and 'false' otherwise.
metricName (simple string) : One of the metric names listed in this library's chart.
metricDirection (simple string) : Direction of the metric, one of the following: "Long", "Short", "Spreading", "No direction".
metricType (simple string) : Type of the metric. Possible values: "All", "Old", and "Other".
Returns: A ticker ID string usable with `request.security()` to fetch the specified Commitment of Traders data.
footprint_typeLibrary "footprint_type"
Contains all types for calculating and rendering footprints
Inputs
Inputs objects
Fields:
inbalance_percent (series int) : percentage coefficient to determine the Imbalance of price levels
stacked_input (series int) : minimum number of consecutive Imbalance levels required to draw extended lines
show_summary_footprint (series bool) : bool input for show summary footprint
procent_volume_area (series int) : definition size Value area
show_vah (series bool) : bool input for show VAH
show_poc (series bool) : bool input for show POC
show_val (series bool) : bool input for show VAL
color_vah (series color) : color VAH line
color_poc (series color) : color POC line
color_val (series color) : color VAL line
show_volume_profile (series bool)
new_imbalance_cond (series bool) : bool input for setup alert on new imbalance buy and sell
new_imbalance_line_cond (series bool) : bool input for setup alert on new imbalance line buy and sell
stop_past_imbalance_line_cond (series bool) : bool input for setup alert on stop past imbalance line buy and sell
Constants
Constants all Constants objects
Fields:
imbalance_high_char (series string) : char for printing buy imbalance
imbalance_low_char (series string) : char for printing sell imbalance
color_title_sell (series color) : color for footprint sell
color_title_buy (series color) : color for footprint buy
color_line_sell (series color) : color for sell line
color_line_buy (series color) : color for buy line
color_title_none (series color) : color None
Calculation_data
Calculation_data data for calculating
Fields:
detail_open (array) : array open from calculation timeframe
detail_high (array) : array high from calculation timeframe
detail_low (array) : array low from calculation timeframe
detail_close (array) : array close from calculation timeframe
detail_vol (array) : array volume from calculation timeframe
previos_detail_close (array) : array close from calculation timeframe
isBuyVolume (series bool) : attribute previosly bar buy or sell
Footprint_row
Footprint_row objects one footprint row
Fields:
price (series float) : row price
buy_vol (series float) : buy volume
sell_vol (series float) : sell volume
imbalance_buy (series bool) : attribute buy inbalance
imbalance_sell (series bool) : attribute sell imbalance
buy_vol_box (series box) : for ptinting buy volume
sell_vol_box (series box) : for printing sell volume
buy_vp_box (series box) : for ptinting volume profile buy
sell_vp_box (series box) : for ptinting volume profile sell
row_line (series label) : for ptinting row price
empty (series bool) : = true attribute row with zero volume buy and zero volume sell
Value_area
Value_area objects for calculating and printing Value area
Fields:
vah_price (series float) : VAH price
poc_price (series float) : POC price
val_price (series float) : VAL price
vah_label (series label) : label for VAH
poc_label (series label) : label for POC
val_label (series label) : label for VAL
vah_line (series line) : line for VAH
poc_level (series line) : line for POC
val_line (series line) : line for VAL
Imbalance_line_var_object
Imbalance_line_var_object var objects printing and calculation imbalance line
Fields:
cum_buy_line (array) : line array for saving all history buy imbalance line
cum_sell_line (array) : line array for saving all history sell imbalance line
Imbalance_line
Imbalance_line objects printing and calculation imbalance line
Fields:
buy_price_line (array) : float array for saving buy imbalance price level
sell_price_line (array) : float array for saving sell imbalance price level
var_imba_line (Imbalance_line_var_object) : var objects this type
Footprint_info_var_object
Footprint_info_var_object var objects for info printing
Fields:
cum_delta (series float) : var delta volume
cum_total (series float) : var total volume
cum_buy_vol (series float) : var buy volume
cum_sell_vol (series float) : var sell volume
cum_info (series table) : table for ptinting
Footprint_info
Footprint_info objects for info printing
Fields:
var_info (Footprint_info_var_object) : var objects this type
total (series label) : total volume
delta (series label) : delta volume
summary_label (series label) : label for ptinting
Footprint_bar
Footprint_bar all objects one bar with footprint
Fields:
foot_rows (array) : objects one row footprint
val_area (Value_area) : objects Value area
imba_line (Imbalance_line) : objects imbalance line
info (Footprint_info) : objects info - table,label and their variable
row_size (series float) : size rows
total_vol (series float) : total volume one footprint bar
foot_buy_vol (series float) : buy volume one footprint bar
foot_sell_vol (series float) : sell volume one footprint bar
foot_max_price_vol (map) : map with one value - price row with max volume buy + sell
calc_data (Calculation_data) : objects with detail data from calculation resolution
Support_objects
Support_objects support object for footprint calculation
Fields:
consts (Constants) : all consts objects
inp (Inputs) : all input objects
bar_index_show_condition (series bool) : calculation bool value for show all objects footprint
row_line_color (series color) : calculation value - color for row price
Targets For Many Indicators [LuxAlgo]The Targets For Many Indicators is a useful utility tool able to display targets for many built-in indicators as well as external indicators. Targets can be set for specific user-set conditions between two series of values, with the script being able to display targets for two different user-set conditions.
Alerts are included for the occurrence of a new target as well as for reached targets.
🔶 USAGE
Targets can help users determine the price limit where the price might start deviating from an indication given by one or multiple indicators. In the context of trading, targets can help secure profits/reduce losses of a trade, as such this tool can be useful to evaluate/determine user take profits/stop losses.
Due to these essentially being horizontal levels, they can also serve as potential support/resistances, with breakouts potentially confirming new trends.
In the above example, we set targets 3 ATR's away from the closing price when the price crosses over the script built-in SuperTrend indicator using ATR period 10 and factor 3. Using "Long Position Target" allows setting a target above the price, disabling this setting will place targets below the price.
Users might be interested in obtaining new targets once one is reached, this can be done by enabling "New Target When Reached" in the target logic setting section, resulting in more frequent targets.
Lastly, users can restrict new target creation until current ones are reached. This can result in fewer and longer-term targets, with a higher reach rate.
🔹 Dashboard
A dashboard is displayed on the top right of the chart, displaying the amount, reach rate of targets 1/2, and total amount.
This dashboard can be useful to evaluate the selected target distances relative to the selected conditions, with a higher reach rate suggesting the distance of the targets from the price allows them to be reached.
🔶 DETAILS
🔹 Indicators
Besides 'External' sources, each source can be set at 1 of the following Build-In Indicators :
ACCDIST : Accumulation/distribution index
ATR : Average True Range
BB (Middle, Upper or Lower): Bollinger Bands
CCI : Commodity Channel Index
CMO : Chande Momentum Oscillator
COG : Center Of Gravity
DC (High, Mid or Low): Donchian Channels
DEMA : Double Exponential Moving Average
EMA : Exponentially weighted Moving Average
HMA : Hull Moving Average
III : Intraday Intensity Index
KC (Middle, Upper or Lower): Keltner Channels
LINREG : Linear regression curve
MACD (macd, signal or histogram): Moving Average Convergence/Divergence
MEDIAN : median of the series
MFI : Money Flow Index
MODE : the mode of the series
MOM : Momentum
NVI : Negative Volume Index
OBV : On Balance Volume
PVI : Positive Volume Index
PVT : Price-Volume Trend
RMA : Relative Moving Average
ROC : Rate Of Change
RSI : Relative Strength Index
SMA : Simple Moving Average
STOCH : Stochastic
Supertrend
TEMA : Triple EMA or Triple Exponential Moving Average
VWAP : Volume Weighted Average Price
VWMA : Volume-Weighted Moving Average
WAD : Williams Accumulation/Distribution
WMA : Weighted Moving Average
WVAD : Williams Variable Accumulation/Distribution
%R : Williams %R
Each indicator is provided with a link to the Reference Manual or to the Build-In Indicators page.
The latter contains more information about each indicator.
Note that when "Show Source Values" is enabled, only values that can be logically found around the price will be shown. For example, Supertrend , SMA , EMA , BB , ... will be made visible. Values like RSI , OBV , %R , ... will not be visible since they will deviate too much from the price.
🔹 Interaction with settings
This publication contains input fields, where you can enter the necessary inputs per indicator.
Some indicators need only 1 value, others 2 or 3.
When several input values are needed, you need to separate them with a comma.
You can use 0 to 4 spaces between without a problem. Even an extra comma doesn't give issues.
The red colored help text will guide you further along (Only when Target is enabled)
Some examples that work without issues:
Some examples that work with issues:
As mentioned, the errors won't be visible when the concerning target is disabled
🔶 SETTINGS
Show Target Labels: Display target labels on the chart.
Candle Coloring: Apply candle coloring based on the most recent active target.
Target 1 and Target 2 use the same settings below:
Enable Target: Display the targets on the chart.
Long Position Target: Display targets above the price a user selected condition is true. If disabled will display the targets below the price.
New Target Condition: Conditional operator used to compare "Source A" and "Source B", options include CrossOver, CrossUnder, Cross, and Equal.
🔹 Sources
Source A: Source A input series, can be an indicator or external source.
External: External source if 'External" is selected in "Source A".
Settings: Settings of the selected indicator in "Source A", entered settings of indicators requiring multiple ones must be comma separated, for example, "10, 3".
Source B: Source B input series, can be an indicator or external source.
External: External source if 'External" is selected in "Source B".
Settings: Settings of the selected indicator in "Source B", entered settings of indicators requiring multiple ones must be comma separated, for example, "10, 3".
Source B Value: User-defined numerical value if "value" is selected in "Source B".
Show Source Values: Display "Source A" and "Source B" on the chart.
🔹 Logic
Wait Until Reached: When enabled will not create a new target until an existing one is reached.
New Target When Reached: Will create a new target when an existing one is reached.
Evaluate Wicks: Will use high/low prices to determine if a target is reached. Unselecting this setting will use the closing price.
Target Distance From Price: Controls the distance of a target from the price. Can be determined in currencies/points, percentages, ATR multiples, ticks, or using multiple of external values.
External Distance Value: External distance value when "External Value" is selected in "Target Distance From Price".
Targets For Overlay Indicators [LuxAlgo]The Targets For Overlay Indicators is a useful utility tool able to display targets during crossings made between the price and external indicators on the user chart. Users can display a series of two targets, one for crossover events and another one for crossunder event.
Alerts are included for the occurrence of a new target as well as for reached targets.
🔶 USAGE
In order for targets to be displayed users need to select an appropriate input source from the "Source" drop-down input setting. In the example above we apply the indicator to a volatility stop.
This can also easily be done by adding the "Targets For Overlay Indicators" script on the VStop indicator directly.
Targets can help users determine the price limit where the price might start deviating from an indication given by one or multiple indicators. In the context of trading, targets can help secure profits/reduce losses of a trade, as such this tool can be useful to evaluate/determine user take profits/stop losses.
Due to these essentially being horizontal levels, they can also serve as potential support/resistances, with breakouts potentially confirming new trends.
Users might be interested in obtaining new targets once one is reached, this can be done by enabling "New Target When Reached" in the target logic setting section, resulting in more frequent targets.
Lastly, users can restrict new target creation until current ones are reached. This can result in fewer and longer-term targets, with a higher reach rate.
🔹 Examples
The indicator can be applied to many overlay indicators that naturally produce crosses with the price, such as moving average, trailing stops, bands...etc.
Users can use trailing stops such as the SuperTrend or VStop to more easily create clean targets. Do note that certain SuperTrend scripts separate the upper and lower extremities of the SuperTrend into two different plot, which cannot be used with this tool, you may use the provided SuperTrend script below to have a compatible version with our tool:
//@version=5
indicator("SuperTrend", overlay = true)
factor = input.float(3, 'Factor', minval = 0)
atrLen = input.int(10, 'ATR Length', minval = 1)
= ta.supertrend(factor, atrLen)
plot(spt, 'SuperTrend', dir != dir ? na : dir < 0 ? #089981 : #f23645, 2)
plot(spt, 'Circles', dir > dir ? #f23645 : dir < dir ? #089981 : na, 3, plot.style_circles)
Using moving averages can produce more targets than other overlay indicators.
Users can apply the tool twice when using bands or any overlay indicator returning two outputs, using crossover targets for obtaining targets using the upper band as source and crossunder targets for targets using the lower band. We can also use the Trendlines with breaks indicator as example:
🔹 Dashboard
A dashboard is displayed on the top right of the chart, displaying the amount, reach rate of targets 1/2, and total amount.
This dashboard can be useful to evaluate the selected target distances relative to the selected conditions, with a higher reach rate suggesting the distance of the targets from the price allows them to be reached.
🔶 SETTINGS
Source: Indicator source used to create targets. Targets are created when the closing price crosses the specified source.
Show Target Labels: Display target labels on the chart.
Candle Coloring: Apply candle coloring based on the most recent active target.
🔹 Target
Crossover and Crossunder targets use the same settings below:
Show Target: Determines if the target is displayed or not.
Above Price Target: If selected, will create targets above the closing price.
Wait Until Reached: When enabled will not create a new target until an existing one is reached.
New Target When Reached: Will create a new target when an existing one is reached.
Evaluate Wicks: Will use high/low prices to determine if a target is reached. Unselecting this setting will use the closing price.
Target Distance From Price: Controls the distance of a target from the price. Can be determined in currencies/points, percentages, ATR multiples, or ticks.
Dual_MACD_trendingINFO:
This indicator is useful for trending assets, as my preference is for low-frequency trading, thus using BTCUSD on 1D/1W chart
In the current implementation I find two possible use cases for the indicator:
- as a stand-alone indicator on the chart which can also fire alerts that can help to determine if we want to manually enter/exit trades based on the signals from it (1D/1W is good for non-automated trading)
- can be used to connect to the Signal input of the TTS (TempalteTradingStrategy) by jason5480 in order to backtest it, thus effectively turning it into a strategy (instructions below in TTS CONNECTIVITY section)
Trading period can be selected from the indicator itself to limit to more interesting periods.
Arrow indications are drawn on the chart to indicate the trading conditions met in the script - light green for HTF crossover, dark green for LTF crossover and orange for LTF crossunder.
Note that the indicator performs best in trending assets and markets, and it is advisable to use additional indicators to filter the trading conditions when market/asset is expected to move sideways.
DETAILS:
It uses a couple of MACD indicators - one from the current timeframe and one from a higher timeframe, as the crossover/crossunder cases of the MACD line and the signal line indicate the potential entry/exit points.
The strategy has the following flow:
- If the weekly MACD is positive (MACD line is over the signal line) we have a trading window.
- If we have a trading window, we buy when the daily macd line crosses AND closes above the signal line.
- If we are in a position, we await the daily MACD to cross AND close under the signal line, and only then place a stop loss under the wick of that closing candle.
The user can select both the higher (HTF) and lower (LTF) timeframes. Preferably the lower timeframe should be the one that the Chart is on for better visualization.
If one to decide to use the indicator as a strategy, it implements the following buy and sell criterias, which are feed to the TTS, but can be also manually managed via adding alerts from this indicator.
Since usually the LTF is preceeding the crossover compared to the HTF, then my interpretation of the strategy and flow that it follows is allowing two different ways to enter a trade:
- crossover (and bar close) of the macd over the signal line in the HIGH TIMEFRAME (no need to look at the LOWER TIMEFRMAE)
- crossover (and bar close) of the macd over the signal line in the LOW TIMEFRAME, as in this case we need to check also that the macd line is over the signal line for the HIGH TIMEFRAME as well (like a regime filter)
The exit of the trade is based on the lower timeframe MACD only, as we create a stop loss equal to the lower wick of the bar, once the macd line crosses below the signal line on that timeframe
SETTINGS:
All of the indicator's settings are for the vanilla/general case.
User can set all of the MACD parameters for both the higher and lower (current) timeframes, currently left to default of the MACD stand-alone indicator itself.
The start-end date is a time filter that can be extermely usefull when backtesting different time periods.
TTS SETTINGS (NEEDED IF USED TO BACKTEST WITH TTS)
The TempalteTradingStrategy is a strategy script developed in Pine by jason5480, which I recommend for quick turn-around of testing different ideas on a proven and tested framework
I cannot give enough credit to the developer for the efforts put in building of the infrastructure, so I advice everyone that wants to use it first to get familiar with the concept and by checking
by checking jason5480's profile www.tradingview.com
The TTS itself is extremely functional and have a lot of properties, so its functionality is beyond the scope of the current script -
Again, I strongly recommend to be thoroughly epxlored by everyone that plans on using it.
In the nutshell it is a script that can be feed with buy/sell signals from an external indicator script and based on many configuration options it can determine how to execute the trades.
The TTS has many settings that can be applied, so below I will cover only the ones that differ from the default ones, at least according to my testing - do your own research, you may find something even better :)
The current/latest version that I've been using as of writing and testing this script is TTSv48
Settings which differ from the default ones:
- from - False (time filter is from the indicator script itself)
- Deal Conditions Mode - External (take enter/exit conditions from an external script)
- 🔌Signal 🛈➡ - Dual_MACD: 🔌Signal to TTSv48 (this is the output from the indicator script, according to the TTS convention)
- Sat/Sun - true (for crypto, in order to trade 24/7)
- Order Type - STOP (perform stop order)
- Distance Method - HHLL (HigherHighLowerLow - in order to set the SL according to the strategy definition from above)
The next are just personal preferenes, you can feel free to experiment according to your trading style
- Take Profit Targets - 0 (either 100% in or out, no incremental stepping in or out of positions)
- Dist Mul|Len Long/Short- 10 (make sure that we don't close on profitable trades by any reason)
- Quantity Method - EQUITY (personal backtesting preference is to consider each backtest as a separate portfolio, so determine the position size by 100% of the allocated equity size)
- Equity % - 100 (note above)
EXAMPLES:
If used as a stand-alone indicator, the green arrows on the bottom will represent:
- light green - MACD line crossover signal line in the HTF
- darker green - MACD line crossover signal line in the LTF
- orange - MACD line crossunder signal line in the LTF
I recommend enabling the alerts from the script to cover those cases.
If used as an input to the TTS, we'll get more decorations on the chart from the TTS itself.
In the example below we open a trade on the next day of LTF crossover, then a few days later a crossunder in the LTF occurs, so we set a SL at the low of the wick of this day. Few days later the price doesn't recover and hits that SL, so the position is closed.
Renko StrategyRENKO STRATEGY
CAUTION : This strategy must be applied to a candlestick chart (not a Renko chart).
INTRODUCTION :
The Traditional Renko chart has been reproduced and is plotted according to the evolution of the price. It will enable us to receive buy or sell signals and follow major trends. This is a medium/long term strategy and depends a lot on the box size chosen in the parameters. There's also a money management method allowing us to reinvest part of the profits or reduce the size of orders in the event of substantial losses.
RENKO CHART :
Renko chart construction methodology :
The user must first choose the box size. The minimum is 0.00001 and there is no maximum. The default is 10. The user must then choose the source that will define the data on which the calculations will be based (high, low, open, close). By default, close is selected. The first candle on the chart is used to draw the first box with its high and low.
Each time the price changes by the amount of the box size relative to the high or low of the last box, a new box is added above or below the previous one. If price variations are less than the box size, the same box is added next to the previous one. If price variations are N (integer number) times greater than box size, N boxes are added above or below the previous one. Each box added above the previous one is a green box, while each box added below the previous one is a red box.
Conditions for drawing a green box above the previous one :
(source - high_of_the_last_box) / box_size > 1
Condition for drawing a red box below the previous one :
(low_of_the_last_box - source) / box_size > 1
If neither condition is triggered, the same box is drawn next to the previous one.
Example :
The last candle has drawn a box with low 12 and high 14. The box size is therefore 2. The strategy will look at the value of the close each time a candle ends. The current candle closes with a close equal to 15.5. As the variation from the previous high is only 1.5 (which is less than the box size), the same box is added next to the previous one. The next candle closes at 16.2. The price variation is therefore 2.2 compared with the previous high. We can now add a new green box just above the previous one, with a low of 14 and a high of 16. The same process applies if the candle's close is at least one box size below the low of the last box. In this case, a new red box is placed below the previous one.
PARAMETERS :
Source : Allows you to specify which data will be taken into account by the strategy when performing calculations. The default is close.
Box size : Size of Renko graph boxes. This is a very important parameter to choose carefully, as it has a strong impact on the strategy's performance. Defaults to 10.
Fixed Ratio : This is the amount of gain or loss at which the order quantity is changed. The default is 400, meaning that for each $400 gain or loss, the order size is increased or decreased by a user-selected amount.
Increasing Order Amount : This is the amount to be added to or subtracted from orders when the fixed ratio is reached. The default is $200, which means that for every $400 gain, $200 is reinvested in the strategy. On the other hand, for every $400 loss, the order size is reduced by $200.
Initial capital : $1000
Fees : Interactive Broker fees apply to this strategy. They are set at 0.18% of the trade value.
Slippage : 3 ticks or $0.03 per trade. Corresponds to the latency time between the moment the signal is received and the moment the order is executed by the broker.
Important : A bot has been used to test all possible box sizes to find out which one generates the highest return on BITSTAMP:LTCUSD while limiting the drawdown. This strategy is the most optimal with a box size equal to 5.08 in 8h timeframe.
BUY AND SHORT SIGNALS :
As the aim of this strategy is to follow major trends based on price movements, we need to be on the right side of price fluctuation. We trade every box reversal, i.e. we are LONG when the boxes are green indicating an uptrend and SHORT when they are red indicating a downtrend.
RISK MANAGEMENT :
This strategy can incur losses. The size of the box is decisive, as it is used to plot the RENKO chart and thus trigger buy or sell signals. It's also what allows us to manage risk. For every trade, we risk a maximum amount equal to 2 times the size of the box, i.e. :(5.08*2*nb_contract)/trade_value.
MONEY MANAGEMENT :
The fixed ratio method has been used to manage our gains and losses. For each gain of an amount equal to the value of the fixed ratio, we increase the order size by a value defined by the user in the "Increasing order amount" parameter. Similarly, each time we lose an amount equal to the value of the fixed ratio, we decrease the order size by the same user-defined value. This strategy not only increases our performance, but also our drawdown.
Enjoy the strategy and don't forget to take the trade :)
Supertrend x4 w/ Cloud FillSuperTrend is one of the most common ATR based trailing stop indicators.
The average true range (ATR) plays an important role in 'Supertrend' as the indicator uses ATR to calculate its value. The ATR indicator signals the degree of price volatility. In this version you can change the ATR calculation method from the settings. Default method is RMA, when the alternative method is SMA.
The indicator is easy to use and gives an accurate reading about an ongoing trend. It is constructed with two parameters, namely period and multiplier.
The implementation of 4 supertrends and cloud fills allows for a better overall picture of the higher and lower timeframe trend one is trading a particular security in.
The default values used while constructing a supertrend indicator is 10 for average true range or trading period.
The key aspect what differentiates this indicator is the Multiplier. The multiplier is based on how much bigger of a range you want to capture. In our case by default, it starts with 2.636 and 3.336 for Set 1 & Set 2 respectively giving a narrow band range or Short Term (ST) timeframe visual. On the other hand, the multipliers for Set 3 & Set 4 goes up to 9.736 and 8.536 for the multiplier respectively giving a large band range or Long Term (LT) timeframe visual.
A ‘Supertrend’ indicator can be used on equities, futures or forex, or even crypto markets and also on minutes, hourly, daily, and weekly charts as well, but generally, it fails in a sideways-moving market. That's why with this implementation it enables one to stay out of the market if they choose to do so when the market is ranging.
This Supertrend indicator is modelled around trends and areas of interest versus buy and sell signals. Therefore, to better understand this indicator, one must calibrate it to one's need first, which means day trader (shorter timeframe) vs swing trader (longer time frame), and then understand how it can be utilized to improve your entries, exits, risk and position sizing.
Example:
In this chart shown above using SPX500:OANDA, 15R Time Frame, we can see that there is at any give time 1 to 4 clouds/bands of Supertrends. These four are called Set 1, Set 2, Set 3 and Set 4 in the indicator. Set's 1 & 2 are considered short term, whereas Set's 3 & 4 are considered long term. The term short and long are subjective based on one's trading style. For instance, if a person is a 1min chart trader, which would be short term, to get an idea of the trend you would have to look at a longer time frame like a 5min for instance. Similarly, in this cases the timeframes = Multiplier value that you set.
Optional Ideas:
+ Apply some basic EMA/SMA indicator script of your choice for easier understanding of the trend or to allow smooth transition to using this indicator.
+ Split the chart into two vertical layouts and applying this same script coupled with xdecow's 2 WWV candle painting script on both the layouts. Now you can use the left side of the chart to show all bearish move candles only (make the bullish candles transparent) and do the opposite for the right side of the chart. This way you enhance focus to just stick to one side at a given time.
Credits:
This indicator is a derivative of the fine work done originally by KivancOzbilgic
Here is the source to his original indicator: ).
Disclaimer:
This indicator and tip is for educational and entertainment purposes only. This not does constitute to financial advice of any sort.
Strategy Myth-Busting #12 - OSGFC+SuperTrend - [MYN]This is part of a new series we are calling "Strategy Myth-Busting" where we take open public manual trading strategies and automate them. The goal is to not only validate the authenticity of the claims but to provide an automated version for traders who wish to trade autonomously.
Our 12th one is an automated version of the "The Most Powerful Tradingview Buy Sell Signal Indicator " strategy from "Power of Trading" who doesn't make any official claims but watching how he trades with this, it on the surface looked promising. The strategy author uses this on the 15 min strategy on mostly FOREX. Unfortunately as indicated by the backtest results below, we were not able to substantiate any good positive trading metrics from this, be it Profit, Markdown, Num Of Trades etc. This does seem to do okay with some entries but perhaps adding another indicator to this to filter out more noise might make it better. At least how this strategy is presented now, this is not something I recommend anyone use.
This strategy uses a combination of 2 open-source public indicators:
SuperTrend by TradingView Internal
One-Sided Gaussian Filter w/ Channels By Loxx
The SuperTrend indicator and the One-Sided Gaussian Filter complement each other by providing a more complete and accurate picture of market trends. The SuperTrend indicator is used to identify trends. It does this by calculating a moving average of the underlying securities price and then comparing the current price to the moving average. When the current price is above the moving average, the trend is considered bullish, and when it is below, the trend is considered bearish.
The One-Sided Gaussian Filter is a mathematical tool that is used to smooth out fluctuations in financial data. It does this by removing random noise from the data, making it easier to identify patterns and trends.
When the SuperTrend indicator is used in conjunction with the One-Sided Gaussian Filter, the smoothed price data generated by the filter is used as the input for the SuperTrend calculation. This provides a more accurate representation of market trends and helps to eliminate false signals generated by short-term price movements. As a result, the SuperTrend indicator is able to more accurately identify the underlying trend in the market and provide traders with a cleaner and more reliable signal to act upon.
In summary, the SuperTrend indicator and the One-Sided Gaussian Filter complement each other by providing a more accurate and reliable representation of market trends, resulting in improved performance for traders.
If you know of or have a strategy you want to see myth-busted or just have an idea for one, please feel free to message me.
Trading Rules
15 min candles
FOREX or Crypto
Stop loss at swing high/low | 1.5 risk/ratio
Long Condition
SuperTrend and OSGFC generate buy signal
Close Buy on Gaussian generating a sell signal
Short Condition
SuperTrend and OSGFC generate sell signal
Close Buy on Gaussian generating a buy signal
theme_presetsStyle Made Easy with 175 Reversable light/dark themes
Built on to of my theme engine, so any tools built with one
will work with the other.
getTheme(_input)
Get a theme by name. (see lib for copy/paste list)
Parameters:
_input : string Name of Theme to use.
apathy()
Theme preset -> "Apathy"
Returns: Theme object
apprentice()
Theme preset -> "Apprentice"
Returns: Theme object
ashes()
Theme preset -> "Ashes"
Returns: Theme object
atelier_cave()
Theme preset -> "Atelier Cave"
Returns: Theme object
atelier_dune()
Theme preset -> "Atelier Dune"
Returns: Theme object
atelier_estuary()
Theme preset -> "Atelier Estuary"
Returns: Theme object
atelier_forest()
Theme preset -> "Atelier Forest"
Returns: Theme object
atelier_heath()
Theme preset -> "Atelier Heath"
Returns: Theme object
atelier_lakeside()
Theme preset -> "Atelier Lakeside"
Returns: Theme object
atelier_plateau()
Theme preset -> "Atelier Plateau"
Returns: Theme object
atelier_savanna()
Theme preset -> "Atelier Savanna"
Returns: Theme object
atelier_seaside()
Theme preset -> "Atelier Seaside"
Returns: Theme object
atelier_sulphurpool()
Theme preset -> "Atelier Sulphurpool"
Returns: Theme object
atlas()
Theme preset -> "Atlas"
Returns: Theme object
ayu()
Theme preset -> "Ayu"
Returns: Theme object
ayu_mirage()
Theme preset -> "Ayu Mirage"
Returns: Theme object
bespin()
Theme preset -> "Bespin"
Returns: Theme object
black_metal()
Theme preset -> "Black Metal"
Returns: Theme object
black_metal_bathory()
Theme preset -> "Black Metal (bathory)"
Returns: Theme object
black_metal_burzum()
Theme preset -> "Black Metal (burzum)"
Returns: Theme object
black_metal_funeral()
Theme preset -> "Black Metal (dark Funeral)"
Returns: Theme object
black_metal_gorgoroth()
Theme preset -> "Black Metal (gorgoroth)"
Returns: Theme object
black_metal_immortal()
Theme preset -> "Black Metal (immortal)"
Returns: Theme object
black_metal_khold()
Theme preset -> "Black Metal (khold)"
Returns: Theme object
black_metal_marduk()
Theme preset -> "Black Metal (marduk)"
Returns: Theme object
black_metal_mayhem()
Theme preset -> "Black Metal (mayhem)"
Returns: Theme object
black_metal_nile()
Theme preset -> "Black Metal (nile)"
Returns: Theme object
black_metal_venom()
Theme preset -> "Black Metal (venom)"
Returns: Theme object
blue_forest()
Theme preset -> "Blue Forest"
Returns: Theme object
blueish()
Theme preset -> "Blueish"
Returns: Theme object
brewer()
Theme preset -> "Brewer"
Returns: Theme object
bright()
Theme preset -> "Bright"
Returns: Theme object
brogrammer()
Theme preset -> "Brogrammer"
Returns: Theme object
brush_trees()
Theme preset -> "Brush Trees"
Returns: Theme object
catppuccin()
Theme preset -> "Catppuccin"
Returns: Theme object
chalk()
Theme preset -> "Chalk"
Returns: Theme object
circus()
Theme preset -> "Circus"
Returns: Theme object
classic()
Theme preset -> "Classic"
Returns: Theme object
clrs()
Theme preset -> "Colors"
Returns: Theme object
codeschool()
Theme preset -> "Codeschool"
Returns: Theme object
cupcake()
Theme preset -> "Cupcake"
Returns: Theme object
cupertino()
Theme preset -> "Cupertino"
Returns: Theme object
da_one_black()
Theme preset -> "Da One Black"
Returns: Theme object
da_one_gray()
Theme preset -> "Da One Gray"
Returns: Theme object
da_one_ocean()
Theme preset -> "Da One Ocean"
Returns: Theme object
da_one_paper()
Theme preset -> "Da One Paper"
Returns: Theme object
da_one_sea()
Theme preset -> "Da One Sea"
Returns: Theme object
da_one_white()
Theme preset -> "Da One White"
Returns: Theme object
danqing()
Theme preset -> "Danqing"
Returns: Theme object
darcula()
Theme preset -> "Darcula"
Returns: Theme object
dark_violet()
Theme preset -> "Dark Violet"
Returns: Theme object
darkmoss()
Theme preset -> "Darkmoss"
Returns: Theme object
darktooth()
Theme preset -> "Darktooth"
Returns: Theme object
decaf()
Theme preset -> "Decaf"
Returns: Theme object
dirtysea()
Theme preset -> "Dirtysea"
Returns: Theme object
dracula()
Theme preset -> "Dracula"
Returns: Theme object
edge()
Theme preset -> "Edge"
Returns: Theme object
eighties()
Theme preset -> "Eighties"
Returns: Theme object
embers()
Theme preset -> "Embers"
Returns: Theme object
emil()
Theme preset -> "Emil"
Returns: Theme object
equilibrium()
Theme preset -> "Equilibrium"
Returns: Theme object
equilibrium_gray()
Theme preset -> "Equilibrium Gray"
Returns: Theme object
espresso()
Theme preset -> "Espresso"
Returns: Theme object
eva()
Theme preset -> "Eva"
Returns: Theme object
everforest()
Theme preset -> "Everforest"
Returns: Theme object
flat()
Theme preset -> "Flat"
Returns: Theme object
framer()
Theme preset -> "Framer"
Returns: Theme object
fruit_soda()
Theme preset -> "Fruit Soda"
Returns: Theme object
gigavolt()
Theme preset -> "Gigavolt"
Returns: Theme object
github()
Theme preset -> "Github"
Returns: Theme object
google()
Theme preset -> "Google"
Returns: Theme object
gotham()
Theme preset -> "Gotham"
Returns: Theme object
grayscale()
Theme preset -> "Grayscale"
Returns: Theme object
green_screen()
Theme preset -> "Green Screen"
Returns: Theme object
gruber()
Theme preset -> "Gruber"
Returns: Theme object
gruvbox_hard()
Theme preset -> "Gruvbox Dark, Hard"
Returns: Theme object
gruvbox_medium()
Theme preset -> "Gruvbox Dark, Medium"
Returns: Theme object
gruvbox_pale()
Theme preset -> "Gruvbox Dark, Pale"
Returns: Theme object
gruvbox_soft()
Theme preset -> "Gruvbox Dark, Soft"
Returns: Theme object
gruvbox_material_hard()
Theme preset -> "Gruvbox Material Dark, Hard"
Returns: Theme object
gruvbox_material_medium()
Theme preset -> "Gruvbox Material Dark, Medium"
Returns: Theme object
gruvbox_material_soft()
Theme preset -> "Gruvbox Material Dark, Soft"
Returns: Theme object
hardcore()
Theme preset -> "Hardcore"
Returns: Theme object
harmonic16()
Theme preset -> "Harmonic16"
Returns: Theme object
heetch()
Theme preset -> "Heetch"
Returns: Theme object
helios()
Theme preset -> "Helios"
Returns: Theme object
hopscotch()
Theme preset -> "Hopscotch"
Returns: Theme object
horizon()
Theme preset -> "Horizon"
Returns: Theme object
horizon_terminal()
Theme preset -> "Horizon Terminal"
Returns: Theme object
humanoid()
Theme preset -> "Humanoid"
Returns: Theme object
ia()
Theme preset -> "Ia"
Returns: Theme object
icy()
Theme preset -> "Icy"
Returns: Theme object
ir_black()
Theme preset -> "Ir Black"
Returns: Theme object
isotope()
Theme preset -> "Isotope"
Returns: Theme object
kanagawa()
Theme preset -> "Kanagawa"
Returns: Theme object
katy()
Theme preset -> "Katy"
Returns: Theme object
kimber()
Theme preset -> "Kimber"
Returns: Theme object
lime()
Theme preset -> "Lime"
Returns: Theme object
london_tube()
Theme preset -> "London Tube"
Returns: Theme object
macintosh()
Theme preset -> "Macintosh"
Returns: Theme object
marrakesh()
Theme preset -> "Marrakesh"
Returns: Theme object
materia()
Theme preset -> "Materia"
Returns: Theme object
material()
Theme preset -> "Material"
Returns: Theme object
materialdarker()
Theme preset -> "Material Darker"
Returns: Theme object
material_palenight()
Theme preset -> "Material Palenight"
Returns: Theme object
material_vivid()
Theme preset -> "Material Vivid"
Returns: Theme object
mellow_purple()
Theme preset -> "Mellow Purple"
Returns: Theme object
mocha()
Theme preset -> "Mocha"
Returns: Theme object
monokai()
Theme preset -> "Monokai"
Returns: Theme object
Nebula()
Theme preset -> "Nebula"
Returns: Theme object
nord()
Theme preset -> "Nord"
Returns: Theme object
nova()
Theme preset -> "Nova"
Returns: Theme object
ocean()
Theme preset -> "Ocean"
Returns: Theme object
oceanicnext()
Theme preset -> "Oceanicnext"
Returns: Theme object
onedark()
Theme preset -> "Onedark"
Returns: Theme object
outrun()
Theme preset -> "Outrun"
Returns: Theme object
pandora()
Theme preset -> "Pandora"
Returns: Theme object
papercolor()
Theme preset -> "Papercolor"
Returns: Theme object
paraiso()
Theme preset -> "Paraiso"
Returns: Theme object
pasque()
Theme preset -> "Pasque"
Returns: Theme object
phd()
Theme preset -> "Phd"
Returns: Theme object
pico()
Theme preset -> "Pico"
Returns: Theme object
pinky()
Theme preset -> "Pinky"
Returns: Theme object
pop()
Theme preset -> "Pop"
Returns: Theme object
porple()
Theme preset -> "Porple"
Returns: Theme object
primer()
Theme preset -> "Primer"
Returns: Theme object
purpledream()
Theme preset -> "Purpledream"
Returns: Theme object
qualia()
Theme preset -> "Qualia"
Returns: Theme object
railscasts()
Theme preset -> "Railscasts"
Returns: Theme object
rebecca()
Theme preset -> "Rebecca"
Returns: Theme object
rose_pine()
Theme preset -> "Rosé Pine"
Returns: Theme object
rose_pine_dawn()
Theme preset -> "Rosé Pine Dawn"
Returns: Theme object
rose_pine_moon()
Theme preset -> "Rosé Pine Moon"
Returns: Theme object
sagelight()
Theme preset -> "Sagelight"
Returns: Theme object
sakura()
Theme preset -> "Sakura"
Returns: Theme object
sandcastle()
Theme preset -> "Sandcastle"
Returns: Theme object
seti_ui()
Theme preset -> "Seti Ui"
Returns: Theme object
shades_of_purple()
Theme preset -> "Shades Of Purple"
Returns: Theme object
shadesmear()
Theme preset -> "Shadesmear"
Returns: Theme object
shapeshifter()
Theme preset -> "Shapeshifter"
Returns: Theme object
silk()
Theme preset -> "Silk"
Returns: Theme object
snazzy()
Theme preset -> "Snazzy"
Returns: Theme object
solar_flare()
Theme preset -> "Solar Flare"
Returns: Theme object
solarized()
Theme preset -> "Solarized"
Returns: Theme object
spaceduck()
Theme preset -> "Spaceduck"
Returns: Theme object
spacemacs()
Theme preset -> "Spacemacs"
Returns: Theme object
stella()
Theme preset -> "Stella"
Returns: Theme object
still_alive()
Theme preset -> "Still Alive"
Returns: Theme object
summercamp()
Theme preset -> "Summercamp"
Returns: Theme object
summerfruit()
Theme preset -> "Summerfruit"
Returns: Theme object
synth_midnight_terminal()
Theme preset -> "Synth Midnight Terminal"
Returns: Theme object
tango()
Theme preset -> "Tango"
Returns: Theme object
tender()
Theme preset -> "Tender"
Returns: Theme object
tokyo_city()
Theme preset -> "Tokyo City"
Returns: Theme object
tokyo_city_terminal()
Theme preset -> "Tokyo City Terminal"
Returns: Theme object
tokyo_night()
Theme preset -> "Tokyo Night"
Returns: Theme object
tokyo_night_storm()
Theme preset -> "Tokyo Night Storm"
Returns: Theme object
tokyo_night_terminal()
Theme preset -> "Tokyo Night Terminal"
Returns: Theme object
tokyo_night_terminal_storm()
Theme preset -> "Tokyo Night Terminal Storm"
Returns: Theme object
tokyodark()
Theme preset -> "Tokyodark"
Returns: Theme object
tokyodark_terminal()
Theme preset -> "Tokyodark Terminal"
Returns: Theme object
tomorrow()
Theme preset -> "Tomorrow"
Returns: Theme object
tomorrow_night()
Theme preset -> "Tomorrow Night"
Returns: Theme object
tomorrow_night_eighties()
Theme preset -> "Tomorrow Night Eighties"
Returns: Theme object
twilight()
Theme preset -> "Twilight"
Returns: Theme object
unikitty()
Theme preset -> "Unikitty"
Returns: Theme object
unikitty_reversible()
Theme preset -> "Unikitty Reversible"
Returns: Theme object
uwunicorn()
Theme preset -> "Uwunicorn"
Returns: Theme object
vice()
Theme preset -> "Vice"
Returns: Theme object
vulcan()
Theme preset -> "Vulcan"
Returns: Theme object
windows_10()
Theme preset -> "Windows 10"
Returns: Theme object
windows_95()
Theme preset -> "Windows 95"
Returns: Theme object
windows_high_contrast()
Theme preset -> "Windows High Contrast"
Returns: Theme object
windows_nt()
Theme preset -> "Windows Nt"
Returns: Theme object
woodland()
Theme preset -> "Woodland"
Returns: Theme object
xcode_dusk()
Theme preset -> "Xcode Dusk"
Returns: Theme object
VWMA/SMA 3Commas BotThis strategy utilizes two pairs of different Moving Averages, two Volume-Weighted Moving Averages (VWMA) and two Simple Moving Averages (SMA).
There is a FAST and SLOW version of each VWMA and SMA.
The concept behind this strategy is that volume is not taken into account when calculating a Simple Moving Average.
Simple Moving Averages are often used to determine the dominant direction of price movement and to help a trader look past any short-term volatility or 'noise' from price movement, and instead determine the OVERALL direction of price movement so that one can trade in that direction (trend-following) or look for opportunities to trade AGAINST that direction (fading).
By comparing the different movements of a Volume-Weighted Moving Average against a Simple Moving Average of the same length, a trader can get a better picture of what price movements are actually significant, helping to reduce false signals that might occur from only using Simple Moving Averages.
The practical applications of this strategy are identifying dominant directional trends. These can be found when the Volume Weighted Moving Average is moving in the same direction as the Simple Moving Average, and ideally, tracking above it.
This would indicate that there is sufficient volume supporting an uptrend or downtrend, and thus gives traders additional confirmation to potentially look for a trade in that direction.
One can initially look for the Fast VWMA to track above the Fast SMA as your initial sign of bullish confirmation (reversed for downtrending markets). Then, when the Fast VWMA crosses over the Slow SMA, one can determine additional trend strength. Finally, when the Slow VWMA crosses over the Slow SMA, one can determine that the trend is truly strong.
Traders can choose to look for trade entries at either of those triggers, depending on risk tolerance and risk appetite.
Furthermore, this strategy can be used to identify divergence or weakness in trending movements. This is very helpful for identifying potential areas to exit one's trade or even look for counter-trend trades (reversals).
These moments occur when the Volume-Weighted Moving Average, either fast or slow, begins to trade in the opposite direction as their Simple Moving Average counterpart.
For instance, if price has been trending upwards for awhile, and the Fast VWMA begins to trade underneath the Fast SMA, this is an indication that volume is beginning to falter. Uptrends need appropriate volume to continue moving with momentum, so when we see volume begin to falter, it can be a potential sign of an upcoming reversal in trend.
Depending on how quickly one wants to enter into a movement, one could look for crosses of the Fast VWMA under/over the Fast SMA, crosses of the Fast VWMA over/under the Slow SMA, or crosses over/under of the Slow VWMA and the Slow SMA.
This concept was originally published here on TradingView by ProfitProgrammers.
Here is a link to his original indicator script:
I have added onto this concept by:
converting the original indicator into a strategy tester for backtesting
adding the ability to conveniently test long or short strategies, or both
adding the ability to calculate dynamic position sizes
adding the ability to calculate dynamic stop losses and take profit levels using the Average True Range
adding the ability to exit trades based on overbought/oversold crosses of the Stochastic RSI
conveniently switch between different thresholds or speeds of the Moving Average crosses to test different strategies on different asset classes
easily hook this strategy up to 3Commas for automation via their DCA bot feature
Full credit to ProfitProgrammers for the original concept and idea.
Any feedback or suggestions are greatly appreciated.
Signs of the Times [LucF]█ OVERVIEW
This oscillator calculates the directional strength of bars using a primitive weighing mechanism based on a small number of what I consider to be fundamental properties of a bar. It does not consider the amplitude of price movements, so can be used as a complement to momentum-based oscillators. It thus belongs to the same family of indicators as my Bar Balance , Volume Ticks , Efficient work , Volume Buoyancy or my Delta Volume indicators.
█ CONCEPTS
The calculations underlying Signs of the Times (SOTT) use a simple, oft-explored concept: measure bar attributes, assign a weight to them, and aggregate results to provide an evaluation of a bar's directional strength. Bull and bear weights are added independently, then subtracted and divided by the maximum possible weight, so the final calculation looks like this:
(up - dn) / weightRange
SOTT has a zero centerline and oscillates between +1 and -1. Ten elementary properties are evaluated. Most carry a weight of one, a few are doubly weighted. All properties are evaluated using only the current bar's values or by comparing its values to those of the preceding bar. The bull conditions follow; their inverse applies to bear conditions:
Weight of 1
• Bar's close is greater than the bar's open (bar is considered to be of "up" polarity)
• Rising open
• Rising high
• Rising low
• Rising close
• Bar is up and its body size is greater than that of the previous bar
• Bar is up and its body size is greater than the combined size of wicks
Weight of 2
• Gap to the upside
• Efficient Work when it is positive
• Bar is up and volume is greater than that of the previous bar (this only kicks in if volume is actually available on the chart's data feed)
Except for the Efficient Work weight, which is a +1 to -1 float value multiplied by 2, all weights are discrete; either zero or the full weight of 1 or 2 is generated. This will cause any gap, for example, to generate a weight of +2 or -2, regardless of the gap's size. That is the reason why the oscillator is oblivious to the amplitude of price movements.
You can see the code used to calculate SOTT in my ta library 's `sott()` function.
█ HOW TO USE THE INDICATOR
No videos explain this indicator and none are planned; reading this description or the script's code is the only way to understand what Signs of the Times does.
Load the indicator on an active chart (see here if you don't know how).
The default configuration displays:
• An Arnaud-Legoux moving average of length 20 of the instant SOTT value. This is the signal line.
• A fill between the MA and the centerline.
• Levels at arbitrary values of +0.3 and -0.3.
• A channel between the signal line and its MA (a simple MA of length 20), which can be one of four colors:
• Bull (green): The signal line is above its MA.
• Strong bull (lime): The bull condition is fulfilled and the signal line is above the centerline.
• Bear (red): The signal line is below its MA.
• Strong bear (pink): The bear condition is fulfilled and the signal line is below the centerline.
The script's "Inputs" tab allows you to:
• Choose a higher timeframe to calculate the indicator's values. This can be useful to get a wider perspective of the indicator's values.
If you elect to use a higher timeframe, make sure that your chart's timeframe is always lower than the higher timeframe you specified,
as calculating on a timeframe lower than the chart's does not make much sense because the indicator is then displaying only the value of the last intrabar in the chart bar.
• Specify the type of MA used to produce the signal line. Use a length of 1 or the Data Window to see the instant value of SOTT. It is quite noisy, thus the need to average it.
• Specify the type of MA applied to the signal line. The idea here is to provide context to the signal.
• Control the display and colors of the lines and fills.
The first pane of this publication's chart shows the default setup. The second one shows only a monochrome signal line.
Using the "Style" tab of the indicator's settings, you can change the type and width of the lines, and the level values.
█ INTERPRETATION
Remember that Signs of the Times evaluates directional bar strength — not price movement. Its highs and lows do not reflect price, but the strength of chart bars. The fact that SOTT knows nothing of how far price moves or of trends is easy to forget. As such, I think SOTT is best used as a confirmation tool. Chart movements may appear to be easy to read when looking at historical bars, but when you have to make go-no-go decisions on the last bar, the landscape often becomes murkier. By providing a quantitative evaluation of the strength of the last few bars, which is not always easily discernible by simply looking at them, SOTT aims to help you decide if the short-term past favors the bets you are considering. Can SOTT predict the future? Of course not.
While SOTT uses completely different calculations than classical momentum oscillators, its profile shares many of their characteristics. This could lead one to infer that directional bar strength correlates with price movement, which could in turn lead one to conclude that indicators such as this one are useless, or that they can be useful tools to confirm momentum oscillators or other models of price movement. The call is, of course, up to you. You can try, for example, to compare a Wilder MA of SOTT to an RSI of the same length.
One key difference with momentum oscillators is that SOTT is much less sensitive to large price movements. The default Arnaud-Legoux MA used for the signal line makes it quite active; you can use a more quiet SMA or EMA if you prefer to tone it down.
In systems where it can be useful to only enter or exit on short-term strength, an average of SOTT values over the last 3 to 5 bars can be used as a more quiet filter than a momentum oscillator would.
█ NOTES
My publications often go through a long gestation period where I use them on my charts or in systems before deciding if they are worth a publication. With an incubation period of more than three years, Signs of the Times holds the record. The properties SOTT currently evaluates result from the systematic elimination of contaminants over that lengthy period of time. It was long because of my usual, slow gear, but also because I had to try countless combinations of conditions before realizing that, contrary to my intuition, best results were achieved by:
• Keeping the number of evaluated properties to the absolute minimum.
• Limiting the evaluation's scope to the current and preceding bar.
• Choosing properties that, in my view, were unmistakably indicative of bullish/bearish conditions.
Repainting
As most oscillators, the indicator provides live realtime values that will recalculate with chart updates. It will thus repaint in real time, but not on historical values. To learn more about repainting, see the Pine Script™ User Manual's page on the subject .
LibraryCOTLibrary "LibraryCOT"
This library provides tools to help Pine programmers fetch Commitment of Traders (COT) data for futures.
rootToCFTCCode(root)
Accepts a futures root and returns the relevant CFTC code.
Parameters:
root : Root prefix of the future's symbol, e.g. "ZC" for "ZC1!"" or "ZCU2021".
Returns: The part of a COT ticker corresponding to `root`, or "" if no CFTC code exists for the `root`.
currencyToCFTCCode(curr)
Converts a currency string to its corresponding CFTC code.
Parameters:
curr : Currency code, e.g., "USD" for US Dollar.
Returns: The corresponding to the currency, if one exists.
optionsToTicker(includeOptions)
Returns the part of a COT ticker using the `includeOptions` value supplied, which determines whether options data is to be included.
Parameters:
includeOptions : A "bool" value: 'true' if the symbol should include options and 'false' otherwise.
Returns: The part of a COT ticker: "FO" for data that includes options and "F" for data that doesn't.
metricNameAndDirectionToTicker(metricName, metricDirection)
Returns a string corresponding to a metric name and direction, which is one component required to build a valid COT ticker ID.
Parameters:
metricName : One of the metric names listed in this library's chart. Invalid values will cause a runtime error.
metricDirection : Metric direction. Possible values are: "Long", "Short", "Spreading", and "No direction". Valid values vary with metrics. Invalid values will cause a runtime error.
Returns: The part of a COT ticker ID string, e.g., "OI_OLD" for "Open Interest" and "No direction", or "TC_L" for "Traders Commercial" and "Long".
typeToTicker(metricType)
Converts a metric type into one component required to build a valid COT ticker ID. See the "Old and Other Futures" section of the CFTC's Explanatory Notes for details on types.
Parameters:
metricType : Metric type. Accepted values are: "All", "Old", "Other".
Returns: The part of a COT ticker.
convertRootToCOTCode(mode, convertToCOT)
Depending on the `mode`, returns a CFTC code using the chart's symbol or its currency information when `convertToCOT = true`. Otherwise, returns the symbol's root or currency information. If no COT data exists, a runtime error is generated.
Parameters:
mode : A string determining how the function will work. Valid values are:
"Root": the function extracts the futures symbol root (e.g. "ES" in "ESH2020") and looks for its CFTC code.
"Base currency": the function extracts the first currency in a pair (e.g. "EUR" in "EURUSD") and looks for its CFTC code.
"Currency": the function extracts the quote currency ("JPY" for "TSE:9984" or "USDJPY") and looks for its CFTC code.
"Auto": the function tries the first three modes (Root -> Base Currency -> Currency) until a match is found.
convertToCOT : "bool" value that, when `true`, causes the function to return a CFTC code. Otherwise, the root or currency information is returned. Optional. The default is `true`.
Returns: If `convertToCOT` is `true`, the part of a COT ticker ID string. If `convertToCOT` is `false`, the root or currency extracted from the current symbol.
COTTickerid(COTType, CTFCCode, includeOptions, metricName, metricDirection, metricType)
Returns a valid TradingView ticker for the COT symbol with specified parameters.
Parameters:
COTType : A string with the type of the report requested with the ticker, one of the following: "Legacy", "Disaggregated", "Financial".
CTFCCode : The for the asset, e.g., wheat futures (root "ZW") have the code "001602".
includeOptions : A boolean value. 'true' if the symbol should include options and 'false' otherwise.
metricName : One of the metric names listed in this library's chart.
metricDirection : Direction of the metric, one of the following: "Long", "Short", "Spreading", "No direction".
metricType : Type of the metric. Possible values: "All", "Old", and "Other".
Returns: A ticker ID string usable with `request.security()` to fetch the specified Commitment of Traders data.
R-squared Adaptive T3 Ribbon Filled Simple [Loxx]R-squared Adaptive T3 Ribbon Filled Simple is a T3 ribbons indicator that uses a special implementation of T3 that is R-squared adaptive.
What is the T3 moving average?
Better Moving Averages Tim Tillson
November 1, 1998
Tim Tillson is a software project manager at Hewlett-Packard, with degrees in Mathematics and Computer Science. He has privately traded options and equities for 15 years.
Introduction
"Digital filtering includes the process of smoothing, predicting, differentiating, integrating, separation of signals, and removal of noise from a signal. Thus many people who do such things are actually using digital filters without realizing that they are; being unacquainted with the theory, they neither understand what they have done nor the possibilities of what they might have done."
This quote from R. W. Hamming applies to the vast majority of indicators in technical analysis . Moving averages, be they simple, weighted, or exponential, are lowpass filters; low frequency components in the signal pass through with little attenuation, while high frequencies are severely reduced.
"Oscillator" type indicators (such as MACD , Momentum, Relative Strength Index ) are another type of digital filter called a differentiator.
Tushar Chande has observed that many popular oscillators are highly correlated, which is sensible because they are trying to measure the rate of change of the underlying time series, i.e., are trying to be the first and second derivatives we all learned about in Calculus.
We use moving averages (lowpass filters) in technical analysis to remove the random noise from a time series, to discern the underlying trend or to determine prices at which we will take action. A perfect moving average would have two attributes:
It would be smooth, not sensitive to random noise in the underlying time series. Another way of saying this is that its derivative would not spuriously alternate between positive and negative values.
It would not lag behind the time series it is computed from. Lag, of course, produces late buy or sell signals that kill profits.
The only way one can compute a perfect moving average is to have knowledge of the future, and if we had that, we would buy one lottery ticket a week rather than trade!
Having said this, we can still improve on the conventional simple, weighted, or exponential moving averages. Here's how:
Two Interesting Moving Averages
We will examine two benchmark moving averages based on Linear Regression analysis.
In both cases, a Linear Regression line of length n is fitted to price data.
I call the first moving average ILRS, which stands for Integral of Linear Regression Slope. One simply integrates the slope of a linear regression line as it is successively fitted in a moving window of length n across the data, with the constant of integration being a simple moving average of the first n points. Put another way, the derivative of ILRS is the linear regression slope. Note that ILRS is not the same as a SMA ( simple moving average ) of length n, which is actually the midpoint of the linear regression line as it moves across the data.
We can measure the lag of moving averages with respect to a linear trend by computing how they behave when the input is a line with unit slope. Both SMA (n) and ILRS(n) have lag of n/2, but ILRS is much smoother than SMA .
Our second benchmark moving average is well known, called EPMA or End Point Moving Average. It is the endpoint of the linear regression line of length n as it is fitted across the data. EPMA hugs the data more closely than a simple or exponential moving average of the same length. The price we pay for this is that it is much noisier (less smooth) than ILRS, and it also has the annoying property that it overshoots the data when linear trends are present.
However, EPMA has a lag of 0 with respect to linear input! This makes sense because a linear regression line will fit linear input perfectly, and the endpoint of the LR line will be on the input line.
These two moving averages frame the tradeoffs that we are facing. On one extreme we have ILRS, which is very smooth and has considerable phase lag. EPMA has 0 phase lag, but is too noisy and overshoots. We would like to construct a better moving average which is as smooth as ILRS, but runs closer to where EPMA lies, without the overshoot.
A easy way to attempt this is to split the difference, i.e. use (ILRS(n)+EPMA(n))/2. This will give us a moving average (call it IE /2) which runs in between the two, has phase lag of n/4 but still inherits considerable noise from EPMA. IE /2 is inspirational, however. Can we build something that is comparable, but smoother? Figure 1 shows ILRS, EPMA, and IE /2.
Filter Techniques
Any thoughtful student of filter theory (or resolute experimenter) will have noticed that you can improve the smoothness of a filter by running it through itself multiple times, at the cost of increasing phase lag.
There is a complementary technique (called twicing by J.W. Tukey) which can be used to improve phase lag. If L stands for the operation of running data through a low pass filter, then twicing can be described by:
L' = L(time series) + L(time series - L(time series))
That is, we add a moving average of the difference between the input and the moving average to the moving average. This is algebraically equivalent to:
2L-L(L)
This is the Double Exponential Moving Average or DEMA , popularized by Patrick Mulloy in TASAC (January/February 1994).
In our taxonomy, DEMA has some phase lag (although it exponentially approaches 0) and is somewhat noisy, comparable to IE /2 indicator.
We will use these two techniques to construct our better moving average, after we explore the first one a little more closely.
Fixing Overshoot
An n-day EMA has smoothing constant alpha=2/(n+1) and a lag of (n-1)/2.
Thus EMA (3) has lag 1, and EMA (11) has lag 5. Figure 2 shows that, if I am willing to incur 5 days of lag, I get a smoother moving average if I run EMA (3) through itself 5 times than if I just take EMA (11) once.
This suggests that if EPMA and DEMA have 0 or low lag, why not run fast versions (eg DEMA (3)) through themselves many times to achieve a smooth result? The problem is that multiple runs though these filters increase their tendency to overshoot the data, giving an unusable result. This is because the amplitude response of DEMA and EPMA is greater than 1 at certain frequencies, giving a gain of much greater than 1 at these frequencies when run though themselves multiple times. Figure 3 shows DEMA (7) and EPMA(7) run through themselves 3 times. DEMA^3 has serious overshoot, and EPMA^3 is terrible.
The solution to the overshoot problem is to recall what we are doing with twicing:
DEMA (n) = EMA (n) + EMA (time series - EMA (n))
The second term is adding, in effect, a smooth version of the derivative to the EMA to achieve DEMA . The derivative term determines how hot the moving average's response to linear trends will be. We need to simply turn down the volume to achieve our basic building block:
EMA (n) + EMA (time series - EMA (n))*.7;
This is algebraically the same as:
EMA (n)*1.7-EMA( EMA (n))*.7;
I have chosen .7 as my volume factor, but the general formula (which I call "Generalized Dema") is:
GD (n,v) = EMA (n)*(1+v)-EMA( EMA (n))*v,
Where v ranges between 0 and 1. When v=0, GD is just an EMA , and when v=1, GD is DEMA . In between, GD is a cooler DEMA . By using a value for v less than 1 (I like .7), we cure the multiple DEMA overshoot problem, at the cost of accepting some additional phase delay. Now we can run GD through itself multiple times to define a new, smoother moving average T3 that does not overshoot the data:
T3(n) = GD ( GD ( GD (n)))
In filter theory parlance, T3 is a six-pole non-linear Kalman filter. Kalman filters are ones which use the error (in this case (time series - EMA (n)) to correct themselves. In Technical Analysis , these are called Adaptive Moving Averages; they track the time series more aggressively when it is making large moves.
What is R-squared Adaptive?
One tool available in forecasting the trendiness of the breakout is the coefficient of determination ( R-squared ), a statistical measurement.
The R-squared indicates linear strength between the security's price (the Y - axis) and time (the X - axis). The R-squared is the percentage of squared error that the linear regression can eliminate if it were used as the predictor instead of the mean value. If the R-squared were 0.99, then the linear regression would eliminate 99% of the error for prediction versus predicting closing prices using a simple moving average .
R-squared is used here to derive a T3 factor used to modify price before passing price through a six-pole non-linear Kalman filter.
Included:
Alerts
Signals
Loxx's Expanded Source Types
T3 Volatility Quality Index (VQI) w/ DSL & Pips Filtering [Loxx]T3 Volatility Quality Index (VQI) w/ DSL & Pips Filtering is a VQI indicator that uses T3 smoothing and discontinued signal lines to determine breakouts and breakdowns. This also allows filtering by pips.***
What is the Volatility Quality Index ( VQI )?
The idea behind the volatility quality index is to point out the difference between bad and good volatility in order to identify better trade opportunities in the market. This forex indicator works using the True Range algorithm in combination with the open, close, high and low prices.
What are DSL Discontinued Signal Line?
A lot of indicators are using signal lines in order to determine the trend (or some desired state of the indicator) easier. The idea of the signal line is easy : comparing the value to it's smoothed (slightly lagging) state, the idea of current momentum/state is made.
Discontinued signal line is inheriting that simple signal line idea and it is extending it : instead of having one signal line, more lines depending on the current value of the indicator.
"Signal" line is calculated the following way :
When a certain level is crossed into the desired direction, the EMA of that value is calculated for the desired signal line
When that level is crossed into the opposite direction, the previous "signal" line value is simply "inherited" and it becomes a kind of a level
This way it becomes a combination of signal lines and levels that are trying to combine both the good from both methods.
In simple terms, DSL uses the concept of a signal line and betters it by inheriting the previous signal line's value & makes it a level.
What is the T3 moving average?
Better Moving Averages Tim Tillson
November 1, 1998
Tim Tillson is a software project manager at Hewlett-Packard, with degrees in Mathematics and Computer Science. He has privately traded options and equities for 15 years.
Introduction
"Digital filtering includes the process of smoothing, predicting, differentiating, integrating, separation of signals, and removal of noise from a signal. Thus many people who do such things are actually using digital filters without realizing that they are; being unacquainted with the theory, they neither understand what they have done nor the possibilities of what they might have done."
This quote from R. W. Hamming applies to the vast majority of indicators in technical analysis . Moving averages, be they simple, weighted, or exponential, are lowpass filters; low frequency components in the signal pass through with little attenuation, while high frequencies are severely reduced.
"Oscillator" type indicators (such as MACD , Momentum, Relative Strength Index ) are another type of digital filter called a differentiator.
Tushar Chande has observed that many popular oscillators are highly correlated, which is sensible because they are trying to measure the rate of change of the underlying time series, i.e., are trying to be the first and second derivatives we all learned about in Calculus.
We use moving averages (lowpass filters) in technical analysis to remove the random noise from a time series, to discern the underlying trend or to determine prices at which we will take action. A perfect moving average would have two attributes:
It would be smooth, not sensitive to random noise in the underlying time series. Another way of saying this is that its derivative would not spuriously alternate between positive and negative values.
It would not lag behind the time series it is computed from. Lag, of course, produces late buy or sell signals that kill profits.
The only way one can compute a perfect moving average is to have knowledge of the future, and if we had that, we would buy one lottery ticket a week rather than trade!
Having said this, we can still improve on the conventional simple, weighted, or exponential moving averages. Here's how:
Two Interesting Moving Averages
We will examine two benchmark moving averages based on Linear Regression analysis.
In both cases, a Linear Regression line of length n is fitted to price data.
I call the first moving average ILRS, which stands for Integral of Linear Regression Slope. One simply integrates the slope of a linear regression line as it is successively fitted in a moving window of length n across the data, with the constant of integration being a simple moving average of the first n points. Put another way, the derivative of ILRS is the linear regression slope. Note that ILRS is not the same as a SMA ( simple moving average ) of length n, which is actually the midpoint of the linear regression line as it moves across the data.
We can measure the lag of moving averages with respect to a linear trend by computing how they behave when the input is a line with unit slope. Both SMA (n) and ILRS(n) have lag of n/2, but ILRS is much smoother than SMA .
Our second benchmark moving average is well known, called EPMA or End Point Moving Average. It is the endpoint of the linear regression line of length n as it is fitted across the data. EPMA hugs the data more closely than a simple or exponential moving average of the same length. The price we pay for this is that it is much noisier (less smooth) than ILRS, and it also has the annoying property that it overshoots the data when linear trends are present.
However, EPMA has a lag of 0 with respect to linear input! This makes sense because a linear regression line will fit linear input perfectly, and the endpoint of the LR line will be on the input line.
These two moving averages frame the tradeoffs that we are facing. On one extreme we have ILRS, which is very smooth and has considerable phase lag. EPMA has 0 phase lag, but is too noisy and overshoots. We would like to construct a better moving average which is as smooth as ILRS, but runs closer to where EPMA lies, without the overshoot.
A easy way to attempt this is to split the difference, i.e. use (ILRS(n)+EPMA(n))/2. This will give us a moving average (call it IE /2) which runs in between the two, has phase lag of n/4 but still inherits considerable noise from EPMA. IE /2 is inspirational, however. Can we build something that is comparable, but smoother? Figure 1 shows ILRS, EPMA, and IE /2.
Filter Techniques
Any thoughtful student of filter theory (or resolute experimenter) will have noticed that you can improve the smoothness of a filter by running it through itself multiple times, at the cost of increasing phase lag.
There is a complementary technique (called twicing by J.W. Tukey) which can be used to improve phase lag. If L stands for the operation of running data through a low pass filter, then twicing can be described by:
L' = L(time series) + L(time series - L(time series))
That is, we add a moving average of the difference between the input and the moving average to the moving average. This is algebraically equivalent to:
2L-L(L)
This is the Double Exponential Moving Average or DEMA , popularized by Patrick Mulloy in TASAC (January/February 1994).
In our taxonomy, DEMA has some phase lag (although it exponentially approaches 0) and is somewhat noisy, comparable to IE /2 indicator.
We will use these two techniques to construct our better moving average, after we explore the first one a little more closely.
Fixing Overshoot
An n-day EMA has smoothing constant alpha=2/(n+1) and a lag of (n-1)/2.
Thus EMA (3) has lag 1, and EMA (11) has lag 5. Figure 2 shows that, if I am willing to incur 5 days of lag, I get a smoother moving average if I run EMA (3) through itself 5 times than if I just take EMA (11) once.
This suggests that if EPMA and DEMA have 0 or low lag, why not run fast versions (eg DEMA (3)) through themselves many times to achieve a smooth result? The problem is that multiple runs though these filters increase their tendency to overshoot the data, giving an unusable result. This is because the amplitude response of DEMA and EPMA is greater than 1 at certain frequencies, giving a gain of much greater than 1 at these frequencies when run though themselves multiple times. Figure 3 shows DEMA (7) and EPMA(7) run through themselves 3 times. DEMA^3 has serious overshoot, and EPMA^3 is terrible.
The solution to the overshoot problem is to recall what we are doing with twicing:
DEMA (n) = EMA (n) + EMA (time series - EMA (n))
The second term is adding, in effect, a smooth version of the derivative to the EMA to achieve DEMA . The derivative term determines how hot the moving average's response to linear trends will be. We need to simply turn down the volume to achieve our basic building block:
EMA (n) + EMA (time series - EMA (n))*.7;
This is algebraically the same as:
EMA (n)*1.7-EMA( EMA (n))*.7;
I have chosen .7 as my volume factor, but the general formula (which I call "Generalized Dema") is:
GD (n,v) = EMA (n)*(1+v)-EMA( EMA (n))*v,
Where v ranges between 0 and 1. When v=0, GD is just an EMA , and when v=1, GD is DEMA . In between, GD is a cooler DEMA . By using a value for v less than 1 (I like .7), we cure the multiple DEMA overshoot problem, at the cost of accepting some additional phase delay. Now we can run GD through itself multiple times to define a new, smoother moving average T3 that does not overshoot the data:
T3(n) = GD ( GD ( GD (n)))
In filter theory parlance, T3 is a six-pole non-linear Kalman filter. Kalman filters are ones which use the error (in this case (time series - EMA (n)) to correct themselves. In Technical Analysis , these are called Adaptive Moving Averages; they track the time series more aggressively when it is making large moves.
Included
Signals
Alerts
Related indicators
Zero-line Volatility Quality Index (VQI)
Volatility Quality Index w/ Pips Filtering
Variety Moving Average Waddah Attar Explosion (WAE)
***This indicator is tuned to Forex. If you want to make it useful for other tickers, you must change the pip filtering value to match the asset. This means that for BTC, for example, you likely need to use a value of 10,000 or more for pips filter.