VonnyPublicLibraryLibrary "VonnyPublicLibrary"
A collection functions commonly used within my scripts
EntryBull(float, float)
Calculate when a bullish condition occurs. (When you have two variables)
Parameters:
float : Enter first variable
float : Enter second variable
Returns: True the first bar of your bullish condition
EntryBear(float, float)
Calculate when a bearish condition occurs. (When you have two variables)
Parameters:
float : Enter first variable
float : Enter second variable
Returns: True the first bar of your bearish condition
LowestPivot(bool, bool, bool, float, float)
Calculate the low of your bearish condition
Parameters:
bool : bullish condition
bool : bearish condition
bool : candle buffer to prevent the script from crashing. Since were working with a Dynamic Length
float : Enter what you want to see the low off? Low of the bar OR Close of the bar
float : Enter what you want to see the low off? Low of the bar OR Open of the bar..... might seem pointless but some times the Lowest open is lower then the Lowest Close
Returns: Lowest point of your sell condition when ever your buy condition is triggered
HighestPivot(bool, bool, bool, float, float)
Calculate the high of your bullish condition
Parameters:
bool : bullish condition
bool : bearish condition
bool : candle buffer to prevent the script from crashing. Since were working with a Dynamic Length
float : Enter what you want to see the high off? High of the bar OR Close of the bar
float : Enter what you want to see the high off? High of the bar OR Open of the bar..... might seem pointless but some times the Highest open is Higher then the Highest Close
Returns: Highest point of your buy condition when ever your sell condition is triggered
lookBack(bool, bool)
Calculate how many bars since your bullish condition and bearish condition.
Parameters:
bool : enter bullish condition
bool : enter bearish condition
Returns: How many bars elapsed since the most recent condition. Bullish or bearish
Cari dalam skrip untuk "bar"
Fast v Slow Moving Averages Strategy (Variable) [divonn1994]This is a simple moving average based strategy that takes 2 moving averages, a Fast and a Slow one, plots them both, and then decides to enter a 'long' position or exit it based on whether the two lines have crossed each other. It goes 'long when the Fast Moving Average crosses above the Slow Moving Average. This could indicate upwards momentum in prices in the future. It then exits the position when the the Fast Moving Average crosses back below. This could indicate downwards momentum in prices in the future. This is only speculative, though, but sometimes it can be a very good indicator/strategy to predict future action.
I've tried some strategy settings and I found different promising strategies. Here are a few:
BTCUSD ( BitStamp ) 1 Day Timeframe : EMA, Fast length 25 bars, Slow length 62 bars => 28,792x net profit (default)
BTCUSD ( BitStamp ) 1 Day Timeframe : VWMA, Fast length 21 bars, Slow length 60 bars => 15,603x net profit
BTCUSD ( BitStamp ) 1 Day Timeframe : SMA, Fast length 18 bars, Slow length 51 bars => 19,507x net profit
BTCUSD ( BitStamp ) 1 Day Timeframe : RMA, Fast length 20 bars, Slow length 52 bars => 5,729x net profit
BTCUSD ( BitStamp ) 1 Day Timeframe : WMA, Fast length 29 bars, Slow length 60 bars => 19,869x net profit
Features:
-You can choose your preferred moving average: SMA , EMA , WMA , RMA & VWMA .
-You can change the length average for each moving average
-I made the background color Green when you're currently in a long position and Red when not. I made it so you can see when you'd be actively in a trade or not. The Red and Green background colors can be toggled on/off in order to see other indicators more clearly overlayed in the chart, or if you prefer a cleaner look on your charts.
-I also have a plot of the Fast moving average and Slow moving average together. The Opening moving average is Purple, the Closing moving average is White. White on top is a sign of a potential upswing and purple on top is a sign of a potential downswing. I've made this also able to be toggled on/off.
Let me know if you think I should change anything with my script, I'm always open to constructive criticism so feel free to comment below :)
Hodrick-Prescott Extrapolation of Price [Loxx]Hodrick-Prescott Extrapolation of Price is a Hodrick-Prescott filter used to extrapolate price.
The distinctive feature of the Hodrick-Prescott filter is that it does not delay. It is calculated by minimizing the objective function.
F = Sum((y(i) - x(i))^2,i=0..n-1) + lambda*Sum((y(i+1)+y(i-1)-2*y(i))^2,i=1..n-2)
where x() - prices, y() - filter values.
If the Hodrick-Prescott filter sees the future, then what future values does it suggest? To answer this question, we should find the digital low-frequency filter with the frequency parameter similar to the Hodrick-Prescott filter's one but with the values calculated directly using the past values of the "twin filter" itself, i.e.
y(i) = Sum(a(k)*x(i-k),k=0..nx-1) - FIR filter
or
y(i) = Sum(a(k)*x(i-k),k=0..nx-1) + Sum(b(k)*y(i-k),k=1..ny) - IIR filter
It is better to select the "twin filter" having the frequency-independent delay Тdel (constant group delay). IIR filters are not suitable. For FIR filters, the condition for a frequency-independent delay is as follows:
a(i) = +/-a(nx-1-i), i = 0..nx-1
The simplest FIR filter with constant delay is Simple Moving Average (SMA):
y(i) = Sum(x(i-k),k=0..nx-1)/nx
In case nx is an odd number, Тdel = (nx-1)/2. If we shift the values of SMA filter to the past by the amount of bars equal to Тdel, SMA values coincide with the Hodrick-Prescott filter ones. The exact math cannot be achieved due to the significant differences in the frequency parameters of the two filters.
To achieve the closest match between the filter values, I recommend their channel widths to be similar (for example, -6dB). The Hodrick-Prescott filter's channel width of -6dB is calculated as follows:
wc = 2*arcsin(0.5/lambda^0.25).
The channel width of -6dB for the SMA filter is calculated by numerical computing via the following equation:
|H(w)| = sin(nx*wc/2)/sin(wc/2)/nx = 0.5
Prediction algorithms:
The indicator features the two prediction methods:
Metod 1:
1. Set SMA length to 3 and shift it to the past by 1 bar. With such a length, the shifted SMA does not exist only for the last bar (Bar = 0), since it needs the value of the next future price Close(-1).
2. Calculate SMA filer's channel width. Equal it to the Hodrick-Prescott filter's one. Find lambda.
3. Calculate Hodrick-Prescott filter value at the last bar HP(0) and assume that SMA(0) with unknown Close(-1) gives the same value.
4. Find Close(-1) = 3*HP(0) - Close(0) - Close(1)
5. Increase the length of SMA to 5. Repeat all calculations and find Close(-2) = 5*HP(0) - Close(-1) - Close(0) - Close(1) - Close(2). Continue till the specified amount of future FutBars prices is calculated.
Method 2:
1. Set SMA length equal to 2*FutBars+1 and shift SMA to the past by FutBars
2. Calculate SMA filer's channel width. Equal it to the Hodrick-Prescott filter's one. Find lambda.
3. Calculate Hodrick-Prescott filter values at the last FutBars and assume that SMA behaves similarly when new prices appear.
4. Find Close(-1) = (2*FutBars+1)*HP(FutBars-1) - Sum(Close(i),i=0..2*FutBars-1), Close(-2) = (2*FutBars+1)*HP(FutBars-2) - Sum(Close(i),i=-1..2*FutBars-2), etc.
The indicator features the following inputs:
Method - prediction method
Last Bar - number of the last bar to check predictions on the existing prices (LastBar >= 0)
Past Bars - amount of previous bars the Hodrick-Prescott filter is calculated for (the more, the better, or at least PastBars>2*FutBars)
Future Bars - amount of predicted future values
The second method is more accurate but often has large spikes of the first predicted price. For our purposes here, this price has been filtered from being displayed in the chart. This is why method two starts its prediction 2 bars later than method 1. The described prediction method can be improved by searching for the FIR filter with the frequency parameter closer to the Hodrick-Prescott filter. For example, you may try Hanning, Blackman, Kaiser, and other filters with constant delay instead of SMA.
Related indicators
Itakura-Saito Autoregressive Extrapolation of Price
Helme-Nikias Weighted Burg AR-SE Extra. of Price
Weighted Burg AR Spectral Estimate Extrapolation of Price
Levinson-Durbin Autocorrelation Extrapolation of Price
Fourier Extrapolator of Price w/ Projection Forecast
Hayden's Advanced Relative Strength Index (RSI)Preface: I'm just the bartender serving today's freshly blended concoction; I'd like to send a massive THANK YOU to @iFuSiiOnzZ, @Koalafied_3, @LonesomeTheBlue, @LazyBear, @dgtrd and the rest of the PineWizards for the locally-sourced ingredients. I am simply a code editor, not a code author. The book that inspired this indicator is a free download, plus all of the pieces I used were free code from the PineWizards; my hope is that any additional useful development of The Complete RSI trading system also is offered open-source to the community for collaboration.
Features: Fixed & Custom price targeting. Triple trend state detection. Advanced data ticker. Candles, bars, or line RSI . Stochastic of over 20 indicators for adjustable entry/exit signals. Customizable trader watermark. Trend lines for spotting wedges , triangles, pennants , etc. Divergences for spotting potential reversals and Momentum Discrepancy Reversal Point opportunities. RSI percent change and price pivot labels. Gradient bar coloring on-chart.
‼ IMPORTANT: Hover over labels for additional information. Google & read John Hayden's "The Complete RSI" pdf book for comprehensive instructions before attempting to trade with this indicator. Always keep an eye on higher/stronger timeframes.
⚠ DISCLAIMER: DYOR. Not financial advice. Not a trading system. I am not affiliated with TradingView or John Hayden; this is my own personally PineScripted presentation of a suitable RSI to use when trading according to Hayden's rules.
About the Editor: I am a former-FINRA Registered Representative, inventor/patent-holder, and self-taught PineScripter. I mostly code on a v3 Pinescript level so expect heavy scripts that could use some shortening with modern conventions.
Hayden's RSI Rules:
📈 An Uptrend is indicated when:
1. RSI is in the 80 to 40 range
2. The chart shows simple bearish divergence
3. The chart shows Hidden bullish divergence
4. The chart shows Momentum Discrepancy Reversal Up
5. Upside targets being hit
6. 9-bar simple MA is greater than the 45-bar EMA on RSI
7. Counter-trend declines do not exceed 50% of the previous rally
🔮 An Uptrend is in danger when:
1. Longer timeframe fading rally
2. a) Multiple long-term bearish divergences. b) Upside targets not being hit.
3. 9-bar simple MA is less than the 45-bar EMA on RSI
4. Hidden bearish divergence, or simple bullish divergence
5. Deep counter-trend retracements greater than 50%
📉 A Downtrend is indicated when:
1. RSI is in the 60 to 20 range
2. The chart shows simple bullish divergences.
3. The chart shows Hidden bearish divergence
4. The chart shows Momentum Discrepancy Reversal Down
5. Downside targets being hit
6. 9-bar simple MA is less than the 45-bar EMA on RSI
7. Counter-trend rallies do not exceed 50% of the previous decline
🔮 A Downtrend is in danger when:
1. Longer timeframe fading decline
2. a) Multiple long-term bullish divergences. b) Downside targets not being hit.
3. 9-bar simple MA is greater than the 45-bar EMA on RSI
4. Hidden bullish divergence , or simple bearish divergence
5. Steep counter-trend retracements greater than 50%
LabelsLibrary "Labels"
Functions to create labels, from simple to complex.
labelSimple()
Creates a label each time a condition is true. All label parameters can be customised.
_condition The condition which must evaluate true for the label to be printed.
_x The x location.
_y The y location.
_text The text to print on the label.
_color The colour of the label.
_textColor The colour of the text.
_style The style of the label.
_yloc The y location type.
Returns
An unnamed label object with the supplied characteristics. To give it a name, assign the output of the function to a label variable, as in the example below.
labelLast()
Creates a label each time a condition is true. All label parameters can be customised. + Option to keep only the most recent label. + Option to display the label a configurable number of bars ahead.
_offset How many bars ahead to draw the label.
_keepLast If true (the default), keeps only the most recent label. If false, prints labels up to the TradingView limit.
_condition The condition which must evaluate true for the label to be printed.
_y The y location.
_text The text to print on the label.
_color The colour of the label.
_textColor The colour of the text.
_style The style of the label.
_yloc The y location type.
Returns A named label object with the supplied characteristics.
labelTextAndFloat()
Creates a label each time a condition is true. All label parameters can be customised. Option to keep only the most recent label. Option to display the label a configurable number of bars ahead; otherwise the x location is fixed at the bar time. + Prints (optional) text and a floating-point number on the next line.
_offset How many bars ahead to draw the label.
_float The floating-point number that you want to display on the label.
_keepLast If true (the default), keeps only the most recent label. If false, prints labels up to the TradingView limit.
_condition The condition which must evaluate true for the label to be printed.
_y The y location.
_text The text to print on the label.
_color The colour of the label.
_textColor The colour of the text.
_style The style of the label.
_yloc The y location type.
Returns A named label object with the supplied characteristics.
labelTextAndFloatSigFig()
Creates a label each time a condition is true. All label parameters can be customised. Option to keep only the most recent label. Option to display the label a configurable number of bars ahead; otherwise the x location is fixed at the bar time. Prints (optional) text and a floating-point number on the next line + to a given number of significant figures.
_offset How many bars ahead to draw the label.
_sigNumFig The number of significant figures to display the floating-point number to.
_float The floating-point number that you want to display on the label.
_keepLast If true (the default), keeps only the most recent label. If false, prints labels up to the TradingView limit.
_condition The condition which must evaluate true for the label to be printed.
_y The y location.
_text The text to print on the label.
_color The colour of the label.
_textColor The colour of the text.
_style The style of the label.
_yloc The y location type.
Returns A named label object with the supplied characteristics.
labelTextAndFloatDecimals()
Creates a label each time a condition is true. All label parameters can be customised. Option to keep only the most recent label. Option to display the label a configurable number of bars ahead. Prints (optional) text and a floating-point number on the next line + to a given number of decimal places.
_offset How many bars ahead to draw the label.
_decimals The number of decimal places to display the floating-point number to.
_float The floating-point number that you want to display on the label.
_keepLast If true (the default), keeps only the most recent label. If false, prints labels up to the TradingView limit.
_condition The condition which must evaluate true for the label to be printed.
_y The y location.
_text The text to print on the label.
_color The colour of the label.
_textColor The colour of the text.
_style The style of the label.
_yloc The y location type.
Returns A named label object with the supplied characteristics.
SuperTrend+Based upon popular SuperTrend (AKA: ATR Trailing Stop) indicator with the following differences and improvements:
Defaults to using Volume-Adjusted WMA ( VAWMA ) for ATR. (Can still be configured to behave exactly like classic SuperTrend.)
Can use SMA, EMA, WMA, VWMA, and VAWMA instead of just SMA.
Confirmation close bars for avoiding false breaks.
Details:
If the confirmation closing bars value is greater than zero (default of two bars), the trend will only reverse if the price closes outside the boundary for that number of bars (does not need to be consecutive) or if the opposite side of the bar exceeds the boundary.
The confirmation bar count will reset if the trend has resumed (opposite boundary is broken).
Confirmation examples:
In a down-trend, but the previous two bars close above the boundary.
In a down-trend, but the low of the previous bar exceeds the boundary.
In a down-trend, but the high of the previous bar exceeds the boundary when confirmation bars are set to zero.
Portfolio Backtester Engine█ OVERVIEW
Portfolio Backtester Engine (PBTE). This tool will allow you to backtest strategies across multiple securities at once. Allowing you to easier understand if your strategy is robust. If you are familiar with the PineCoders backtesting engine , then you will find this indicator pleasant to work with as it is an adaptation based on that work. Much of the functionality has been kept the same, or enhanced, with some minor adjustments I made on the account of creating a more subjectively intuitive tool.
█ HISTORY
The original purpose of the backtesting engine (`BTE`) was to bridge the gap between strategies and studies . Previously, strategies did not contain the ability to send alerts, but were necessary for backtesting. Studies on the other hand were necessary for sending alerts, but could not provide backtesting results . Often, traders would have to manage two separate Pine scripts to take advantage of each feature, this was less than ideal.
The `BTE` published by PineCoders offered a solution to this issue by generating backtesting results under the context of a study(). This allowed traders to backtest their strategy and simultaneously generate alerts for automated trading, thus eliminating the need for a separate strategy() script (though, even converting the engine to a strategy was made simple by the PineCoders!).
Fast forward a couple years and PineScript evolved beyond these issues and alerts were introduced into strategies. The BTE was not quite as necessary anymore, but is still extremely useful as it contains extra features and data not found under the strategy() context. Below is an excerpt of features contained by the BTE:
"""
More than `40` built-in strategies,
Customizable components,
Coupling with your own external indicator,
Simple conversion from Study to Strategy modes,
Post-Exit analysis to search for alternate trade outcomes,
Use of the Data Window to show detailed bar by bar trade information and global statistics, including some not provided by TV backtesting,
Plotting of reminders and generation of alerts on in-trade events.
"""
Before I go any further, I want to be clear that the BTE is STILL a good tool and it is STILL very useful. The Portfolio Backtesting Engine I am introducing is only a tangental advancement and not to be confused as a replacement, this tool would not have been possible without the `BTE`.
█ THE PROBLEM
Most strategies built in Pine are limited by one thing. Data. Backtesting should be a rigorous process and researchers should examine the performance of their strategy across all market regimes; that includes, bullish and bearish markets, ranging markets, low volatility and high volatility. Depending on your TV subscription The Pine Engine is limited to 5k-20k historical bars available for backtesting, which can often leave the strategy results wanting. As a general rule of thumb, strategies should be tested across a quantity of historical bars which will allow for at least 100 trades. In many cases, the lack of historical bars available for backtesting and frequency of the strategy signals produces less than 100 trades, rendering your strategy results inconclusive.
█ THE SOLUTION
In order to be confident that we have a robust strategy we must test it across all market regimes and we must have over 100 trades. To do this effectively, researchers can use the Portfolio Backtesting Engine (PBTE).
By testing a strategy across a carefully selected portfolio of securities, researchers can now gather 5k-20k historical bars per security! Currently, the PTBE allows up to 5 securities, which amounts to 25k-100k historical bars.
█ HOW TO USE
1 — Add the indicator to your chart.
• Confirm inputs. These will be the most important initial values which you can change later by clicking the gear icon ⚙ and opening up the settings of the indicator.
2 — Select a portfolio.
• You will want to spend some time carefully selecting a portfolio of securities.
• Each security should be uncorrelated.
• The entire portfolio should contain a mix of different market regimes.
You should understand that strategies generally take advantage of one particular type of market regime. (trending, ranging, low/high volatility)
For example, the default RSI strategy is typically advantageous during ranging markets, whereas a typical moving average crossover strategy is advantageous in trending markets.
If you were to use the standard RSI strategy during a trending market, you might be selling when you should be buying.
Similarily, if you use an SMA crossover during a ranging market, you will find that the MA's may produce many false signals.
Even if you build a strategy that is designed to be used only in a trending market, it is still best to select a portfolio of all market regimes
as you will be able to test how your strategy will perform when the market does something unexpected.
3 — Test a built-in strategy or add your own.
• Navigate to gear icon ⚙ (settings) of strategy.
• Choose your options.
• Select a Main Entry Strat and Alternate Entry Strat .
• If you want to add your own strategy, you will need to modify the source code and follow the built-in example.
• You will only need to generate (buy 1 / sell -1/ neutral 0) signals.
• Select a Filter , by default these are all off.
• Select an Entry Stop - This will be your stop loss placed at the trade entry.
• Select Pyamiding - This will allow you to stack positions. By default this is off.
• Select Hard Exits - You can also think of these as Take Profits.
• Let the strategy run and take note of the display tables results.
• Portfolio - Shows each security.
• The strategy runs on each asset in your portfolio.
• The initial capital is equally distributed across each security.
So if you have 5 securities and a starting capital of 100,000$ then each security will run the strategy starting with 20,000$
The total row will aggregate the results on a bar by bar basis showing the total results of your initial capital.
• Net Profit (NP) - Shows profitability.
• Number of Trades (#T) - Shows # of trades taken during backtesting period.
• Typically will want to see this number greater than 100 on the "Total" row.
• Average Trade Length (ATL) - Shows average # of days in a trade.
• Maximum Drawdown (MD ) - Max peak-to-valley equity drawdown during backtesting period.
• This number defines the minimum amount of capital required to trade the system.
• Typically, this shouldn’t be lower than 34% and we will want to allow for at least 50% beyond this number.
• Maximum Loss (ML) - Shows largest loss experienced on a per-trade basis.
• Normally, don’t want to exceed more than 1-2 % of equity.
• Maximum Drawdown Duration (MDD) - The longest duration of a drawdown in equity prior to a new equity peak.
• This number is important to help us psychologically understand how long we can expect to wait for a new peak in account equity.
• Maximum Consecutive Losses (MCL) - The max consecutive losses endured throughout the backtesting period.
• Another important metric for trader psychology, this will help you understand how many losses you should be prepared to handle.
• Profit to Maximum Drawdown (P:MD) - A ratio for the average profit to the maximum drawdown.
• The higher the ratio is, the better. Large profits and small losses contribute to a good PMD.
• This metric allows us to examine the profit with respect to risk.
• Profit Loss Ratio (P:L) - Average profit over the average loss.
• Typically this number should be higher in trend following systems.
• Mean reversion systems show lower values, but compensate with a better win %.
• Percent Winners (% W) - The percentage of winning trades.
• Trend systems will usually have lower win percentages, since statistically the market is only trending roughly 30% of the time.
• Mean reversion systems typically should have a high % W.
• Time Percentage (Time %) - The amount of time that the system has an open position.
• The more time you are in the market, the more you are exposed to market risk, not to mention you could be using that money for something else right?
• Return on Investment (ROI) - Your Net Profit over your initial investment, represented as a percentage.
• You want this number to be positive and high.
• Open Profit (OP) - If the strategy has any open positions, the floating value will be represented here.
• Trading Days (TD) - An important metric showing how many days the strategy was active.
• This is good to know and will be valuable in understanding how long you will need to run this strategy in order to achieve results.
█ FEATURES
These are additional features that extend the original `BTE` features.
- Portfolio backtesting.
- Color coded performance results.
- Circuit Breakers that will stop trading.
- Position reversals on exit. (Simulating the function of always in the market. Similar to strategy.entry functionality)
- Whipsaw Filter
- Moving Average Filter
- Minimum Change Filter
- % Gain Equity Exit
- Popular strategies, (MACD, MA cross, supertrend)
Below are features that were excluded from the original `BTE`
- 2 stage in-trade stops with kick-in rules (This was a subjective decision to remove. I found it to be complex and thwarted my use of the `BTE` for some time.)
- Simple conversion from Study to Strategy modes. (Not possible with multiple securities)
- Coupling with your own external indicator (Not really practical to use with multiple securities, but could be used if signals were generated based on some indicator which was not based on the current chart)
- Use of the Data Window to show detailed bar by bar trade information and global statistics.
- Post Exit Analysis.
- Plotting of reminders and generation of alerts on in-trade events.
- Alerts (These may be added in the future by request when I find the time.)
█ THANKS
The whole PineCoders team for all their shared knowledge and original publication of the BTE and Richard Weismann for his ideas on building robust strategies.
═════════════════════════════════════════════════════════════════════════
Relative Volume at Time█ OVERVIEW
This indicator calculates relative volume, which is the ratio of present volume over an average of past volume.
It offers two calculation modes, both using a time reference as an anchor.
█ CONCEPTS
Calculation modes
The simplest way to calculate relative volume is by using the ratio of a bar's volume over a simple moving average of the last n volume values.
This indicator uses one of two, more subtle ways to calculate both values of the relative volume ratio: current volume:past volume .
The two calculations modes are:
1 — Cumulate from Beginning of TF to Current Bar where:
current volume = the cumulative volume since the beginning of the timeframe unit, and
past volume = the mean of volume during that same relative period of time in the past n timeframe units.
2 — Point-to-Point Bars at Same Offset from Beginning of TF where:
current volume = the volume on a single chart bar, and
past volume = the mean of volume values from that same relative bar in time from the past n timeframe units.
Timeframe units
Timeframe units can be defined in three different ways:
1 — Using Auto-steps, where the timeframe unit automatically adjusts to the timeframe used on the chart:
— A 1 min timeframe unit will be used on 1sec charts,
— 1H will be used for charts at 1min and less,
— 1D will be used for other intraday chart timeframes,
— 1W will be used for 1D charts,
— 1M will be used for charts at less than 1M,
— 1Y will be used for charts at greater or equal than 1M.
2 — As a fixed timeframe that you define.
3 — By time of day (for intraday chart timeframes only), which you also define. If you use non-intraday chart timeframes in this mode, the indicator will switch to Auto-steps.
Relative Relativity
A relative volume value of 1.0 indicates that current volume is equal to the mean of past volume , but how can we determine what constitutes a high relative volume value?
The traditional way is to settle for an arbitrary threshold, with 2.0 often used to indicate that relative volume is worthy of attention.
We wanted to provide traders with a contextual method of calculating threshold values, so in addition to the conventional fixed threshold value,
this indicator includes two methods of calculating a threshold channel on past relative volume values:
1 — Using the standard deviation of relative volume over a fixed lookback.
2 — Using the highs/lows of relative volume over a variable lookback.
Channels calculated on relative volume provide meta-relativity, if you will, as they are relative values of relative volume.
█ FEATURES
Controls in the "Display" section of inputs determine what is visible in the indicator's pane. The next "Settings" section is where you configure the parameters used in the calculations. The "Column Coloring Conditions" section controls the color of the columns, which you will see in three of the five display modes available. Whether columns are plotted or not, the coloring conditions also determine when markers appear, if you have chosen to show the markers in the "Display" section. The presence of markers is what triggers the alerts configured on this indicator. Finally, the "Colors" section of inputs allows you to control the color of the indicator's visual components.
Display
Five display modes are available:
• Current Volume Columns : shows columns of current volume , with past volume displayed as an outlined column.
• Relative Volume Columns : shows relative volume as a column.
• Relative Volume Columns With Average : shows relative volume as a column, with the average of relative volume.
• Directional Relative Volume Average : shows a line calculated using the average of +/- values of relative volume.
The positive value of relative volume is used on up bars; its negative value on down bars.
• Relative Volume Average : shows the average of relative volume.
A Hull moving average is used to calculate the average used in the three last display modes.
You can also control the display of:
• The value or relative volume, when in the first three display modes. Only the last 500 values will be shown.
• Timeframe transitions, shown in the background.
• A reminder of the active timeframe unit, which appears to the right of the indicator's last bar.
• The threshold used, which can be a fixed value or a channel, as determined in the next "Settings" section of inputs.
• Up/Down markers, which appear on transitions of the color of the volume columns (determined by coloring conditions), which in turn control when alerts are triggered.
• Conditions of high volatility.
Settings
Use this section of inputs to change:
• Calculation mode : this is where you select one of this indicator's two calculation modes for current volume and past volume , as explained in the "Concepts" section.
• Past Volume Lookback in TF units : the quantity of timeframe units used in the calculation of past volume .
• Define Timeframes Units Using : the mode used to determine what one timeframe unit is. Note that when using a fixed timeframe, it must be higher than the chart's timeframe.
Also, note that time of day timeframe units only work on intraday chart timeframes.
• Threshold Mode : Five different modes can be selected:
— Fixed Value : You can define the value using the "Fixed Threshold" field below. The default value is 2.0.
— Standard Deviation Channel From Fixed Lookback : This is a channel calculated using the simple moving average of relative volume
(so not the Hull moving average used elsewhere in the indicator), plus/minus the standard deviation multiplied by a user-defined factor.
The lookback used is the value of the "Channel Lookback" field. Its default is 100.
— High/Low Channel From Beginning of TF : in this mode, the High/Low values reset at the beginning of each timeframe unit.
— High/Low Channel From Beginning of Past Volume Lookback : in this mode, the High/Low values start from the farthest point back where we are calculating past volume ,
which is determined by the combination of timeframe units and the "Past Volume Lookback in TF units" value.
— High/Low Channel From Fixed Lookback : In this mode the lookback is fixed. You can define the value using the "Channel Lookback" field. The default value is 100.
• Period of RelVol Moving Average : the period of the Hull moving average used in the "Directional Relative Volume Average" and the "Relative Volume Average".
• High Volatility is defined using fast and slow ATR periods, so this represents the volatility of price.
Volatility is considered to be high when the fast ATR value is greater than its slow value. Volatility can be used as a filter in the column coloring conditions.
Column Coloring Conditions
• Eight different conditions can be turned on or off to determine the color of the volume columns. All "ON" conditions must be met to determine a high/low state of relative volume,
or, in the case of directional relative volume, a bull/bear state.
• A volatility state can also be used to filter the conditions.
• When the coloring conditions and the filter do not allow for a high/low state to be determined, the neutral color is used.
• Transitions of the color of the volume columns determined by coloring conditions are used to plot the up/down markers, which in turn control when alerts are triggered.
Colors
• You can define your own colors for all of the oscillator's plots.
• The default colors will perform well on light or dark chart backgrounds.
Alerts
• An alert can be defined for the script. The alert will trigger whenever an up/down marker appears in the indicator's display.
The particular combination of coloring conditions and the display settings for up/down markers when you create the alert will determine which conditions trigger the alert.
After alerts are created, subsequent changes to the conditions controlling the display of markers will not affect existing alerts.
• By configuring the script's inputs in different ways before you create your alerts, you can create multiple, functionally distinct alerts from this script.
When creating multiple alerts, it is useful to include in the alert's message a reminder of the particular conditions you used for each alert.
• As is usually the case, alerts triggering "Once Per Bar Close" will prevent repainting.
Error messages
Error messages will appear at the end of the chart upon the following conditions:
• When the combination of the timeframe units used and the "Past Volume Lookback in TF units" value create a lookback that is greater than 5000 bars.
The lookback will then be recalculated to a value such that a runtime error does not occur.
• If the chart's timeframe is higher than the timeframe units. This error cannot occur when using Auto-steps to calculate timeframe units.
• If relative volume cannot be calculated, for example, when no volume data is available for the chart's symbol.
• When the threshold of relative volume is configured to be visible but the indicator's scale does not allow it to be visible (in "Current Volume Columns" display mode).
█ NOTES
For traders
The chart shown here uses the following display modes: "Current Volume Columns", "Relative Volume Columns With Average", "Directional Relative Volume Average" and "Relative Volume Average". The last one also shows the threshold channel in standard deviation mode, and the TF Unit reminder to the right, in red.
Volume, like price, is a value with a market-dependent scale. The only valid reference for volume being its past values, any improvement in the way past volume is calculated thus represents a potential opportunity to traders. Relative volume calculated as it is here can help traders extract useful information from markets in many circumstances, markets with cyclical volume such as Forex being one, obvious case. The relative nature of the values calculated by this indicator also make it a natural fit for cross-market and cross-sector analysis, or to identify behavioral changes in the different futures contracts of the same market. Relative volume can also be put to more exotic uses, such as in evaluating changes in the popularity of exchanges.
Relative volume alone has no directional bias. While higher relative volume values always indicate higher trading activity, that activity does not necessarily translate into significant price movement. In a tightly fought battle between buyers and sellers, you could theoretically have very large volume for many bars, with no change whatsoever in bid/ask prices. This of course, is unlikely to happen in reality, and so traders are justified in considering high relative volume values as indicating periods where more attention is required, because imbalances in the strength of buying/selling power during high-volume trading periods can amplify price variations, providing traders with the generally useful gift of volatility.
Be sure to give the "Directional Relative Volume Average" a try. Contrary to the always-positive ratio widely used in this indicator, the "Directional Relative Volume Average" produces a value able to determine a bullish/bearish bias for relative volume.
Note that realtime bars must be complete for the relative volume value to be confirmed. Values calculated on historical or elapsed realtime bars will not recalculate unless historical volume data changes.
Finally, as with all indicators using volume information, keep in mind that some exchanges/brokers supply different feeds for intraday and daily data, and the volume data on both feeds can sometimes vary quite a bit.
For coders
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
Bits and pieces of code were lifted from the MTF Selection Framework and the MTF Oscillator Framework , also by PineCoders.
█ THANKS
Thanks to dgtrd for suggesting to add the channel using standard deviation.
Thanks to adolgov for helpful suggestions on calculations and visuals.
Look first. Then leap.
Polynomial Regression Bands + Channel [DW]This is an experimental study designed to calculate polynomial regression for any order polynomial that TV is able to support.
This study aims to educate users on polynomial curve fitting, and the derivation process of Least Squares Moving Averages (LSMAs).
I also designed this study with the intent of showcasing some of the capabilities and potential applications of TV's fantastic new array functions.
Polynomial regression is a form of regression analysis in which the relationship between the independent variable x and the dependent variable y is modeled as a polynomial of nth degree (order).
For clarification, linear regression can also be described as a first order polynomial regression. The process of deriving linear, quadratic, cubic, and higher order polynomial relationships is all the same.
In addition, although deriving a polynomial regression equation results in a nonlinear output, the process of solving for polynomials by least squares is actually a special case of multiple linear regression.
So, just like in multiple linear regression, polynomial regression can be solved in essentially the same way through a system of linear equations.
In this study, you are first given the option to smooth the input data using the 2 pole Super Smoother Filter from John Ehlers.
I chose this specific filter because I find it provides superior smoothing with low lag and fairly clean cutoff. You can, of course, implement your own filter functions to see how they compare if you feel like experimenting.
Filtering noise prior to regression calculation can be useful for providing a more stable estimation since least squares regression can be rather sensitive to noise.
This is especially true on lower sampling lengths and higher degree polynomials since the regression output becomes more "overfit" to the sample data.
Next, data arrays are populated for the x-axis and y-axis values. These are the main datasets utilized in the rest of the calculations.
To keep the calculations more numerically stable for higher periods and orders, the x array is filled with integers 1 through the sampling period rather than using current bar numbers.
This process can be thought of as shifting the origin of the x-axis as new data emerges.
This keeps the axis values significantly lower than the 10k+ bar values, thus maintaining more numerical stability at higher orders and sample lengths.
The data arrays are then used to create a pseudo 2D matrix of x power sums, and a vector of x power*y sums.
These matrices are a representation the system of equations that need to be solved in order to find the regression coefficients.
Below, you'll see some examples of the pattern of equations used to solve for our coefficients represented in augmented matrix form.
For example, the augmented matrix for the system equations required to solve a second order (quadratic) polynomial regression by least squares is formed like this:
(∑x^0 ∑x^1 ∑x^2 | ∑(x^0)y)
(∑x^1 ∑x^2 ∑x^3 | ∑(x^1)y)
(∑x^2 ∑x^3 ∑x^4 | ∑(x^2)y)
The augmented matrix for the third order (cubic) system is formed like this:
(∑x^0 ∑x^1 ∑x^2 ∑x^3 | ∑(x^0)y)
(∑x^1 ∑x^2 ∑x^3 ∑x^4 | ∑(x^1)y)
(∑x^2 ∑x^3 ∑x^4 ∑x^5 | ∑(x^2)y)
(∑x^3 ∑x^4 ∑x^5 ∑x^6 | ∑(x^3)y)
This pattern continues for any n ordered polynomial regression, in which the coefficient matrix is a n + 1 wide square matrix with the last term being ∑x^2n, and the last term of the result vector being ∑(x^n)y.
Thanks to this pattern, it's rather convenient to solve the for our regression coefficients of any nth degree polynomial by a number of different methods.
In this script, I utilize a process known as LU Decomposition to solve for the regression coefficients.
Lower-upper (LU) Decomposition is a neat form of matrix manipulation that expresses a 2D matrix as the product of lower and upper triangular matrices.
This decomposition method is incredibly handy for solving systems of equations, calculating determinants, and inverting matrices.
For a linear system Ax=b, where A is our coefficient matrix, x is our vector of unknowns, and b is our vector of results, LU Decomposition turns our system into LUx=b.
We can then factor this into two separate matrix equations and solve the system using these two simple steps:
1. Solve Ly=b for y, where y is a new vector of unknowns that satisfies the equation, using forward substitution.
2. Solve Ux=y for x using backward substitution. This gives us the values of our original unknowns - in this case, the coefficients for our regression equation.
After solving for the regression coefficients, the values are then plugged into our regression equation:
Y = a0 + a1*x + a1*x^2 + ... + an*x^n, where a() is the ()th coefficient in ascending order and n is the polynomial degree.
From here, an array of curve values for the period based on the current equation is populated, and standard deviation is added to and subtracted from the equation to calculate the channel high and low levels.
The calculated curve values can also be shifted to the left or right using the "Regression Offset" input
Changing the offset parameter will move the curve left for negative values, and right for positive values.
This offset parameter shifts the curve points within our window while using the same equation, allowing you to use offset datapoints on the regression curve to calculate the LSMA and bands.
The curve and channel's appearance is optionally approximated using Pine's v4 line tools to draw segments.
Since there is a limitation on how many lines can be displayed per script, each curve consists of 10 segments with lengths determined by a user defined step size. In total, there are 30 lines displayed at once when active.
By default, the step size is 10, meaning each segment is 10 bars long. This is because the default sampling period is 100, so this step size will show the approximate curve for the entire period.
When adjusting your sampling period, be sure to adjust your step size accordingly when curve drawing is active if you want to see the full approximate curve for the period.
Note that when you have a larger step size, you will see more seemingly "sharp" turning points on the polynomial curve, especially on higher degree polynomials.
The polynomial functions that are calculated are continuous and differentiable across all points. The perceived sharpness is simply due to our limitation on available lines to draw them.
The approximate channel drawings also come equipped with style inputs, so you can control the type, color, and width of the regression, channel high, and channel low curves.
I also included an input to determine if the curves are updated continuously, or only upon the closing of a bar for reduced runtime demands. More about why this is important in the notes below.
For additional reference, I also included the option to display the current regression equation.
This allows you to easily track the polynomial function you're using, and to confirm that the polynomial is properly supported within Pine.
There are some cases that aren't supported properly due to Pine's limitations. More about this in the notes on the bottom.
In addition, I included a line of text beneath the equation to indicate how many bars left or right the calculated curve data is currently shifted.
The display label comes equipped with style editing inputs, so you can control the size, background color, and text color of the equation display.
The Polynomial LSMA, high band, and low band in this script are generated by tracking the current endpoints of the regression, channel high, and channel low curves respectively.
The output of these bands is similar in nature to Bollinger Bands, but with an obviously different derivation process.
By displaying the LSMA and bands in tandem with the polynomial channel, it's easy to visualize how LSMAs are derived, and how the process that goes into them is drastically different from a typical moving average.
The main difference between LSMA and other MAs is that LSMA is showing the value of the regression curve on the current bar, which is the result of a modelled relationship between x and the expected value of y.
With other MA / filter types, they are typically just averaging or frequency filtering the samples. This is an important distinction in interpretation. However, both can be applied similarly when trading.
An important distinction with the LSMA in this script is that since we can model higher degree polynomial relationships, the LSMA here is not limited to only linear as it is in TV's built in LSMA.
Bar colors are also included in this script. The color scheme is based on disparity between source and the LSMA.
This script is a great study for educating yourself on the process that goes into polynomial regression, as well as one of the many processes computers utilize to solve systems of equations.
Also, the Polynomial LSMA and bands are great components to try implementing into your own analysis setup.
I hope you all enjoy it!
--------------------------------------------------------
NOTES:
- Even though the algorithm used in this script can be implemented to find any order polynomial relationship, TV has a limit on the significant figures for its floating point outputs.
This means that as you increase your sampling period and / or polynomial order, some higher order coefficients will be output as 0 due to floating point round-off.
There is currently no viable workaround for this issue since there isn't a way to calculate more significant figures than the limit.
However, in my humble opinion, fitting a polynomial higher than cubic to most time series data is "overkill" due to bias-variance tradeoff.
Although, this tradeoff is also dependent on the sampling period. Keep that in mind. A good rule of thumb is to aim for a nice "middle ground" between bias and variance.
If TV ever chooses to expand its significant figure limits, then it will be possible to accurately calculate even higher order polynomials and periods if you feel the desire to do so.
To test if your polynomial is properly supported within Pine's constraints, check the equation label.
If you see a coefficient value of 0 in front of any of the x values, reduce your period and / or polynomial order.
- Although this algorithm has less computational complexity than most other linear system solving methods, this script itself can still be rather demanding on runtime resources - especially when drawing the curves.
In the event you find your current configuration is throwing back an error saying that the calculation takes too long, there are a few things you can try:
-> Refresh your chart or hide and unhide the indicator.
The runtime environment on TV is very dynamic and the allocation of available memory varies with collective server usage.
By refreshing, you can often get it to process since you're basically just waiting for your allotment to increase. This method works well in a lot of cases.
-> Change the curve update frequency to "Close Only".
If you've tried refreshing multiple times and still have the error, your configuration may simply be too demanding of resources.
v4 drawing objects, most notably lines, can be highly taxing on the servers. That's why Pine has a limit on how many can be displayed in the first place.
By limiting the curve updates to only bar closes, this will significantly reduce the runtime needs of the lines since they will only be calculated once per bar.
Note that doing this will only limit the visual output of the curve segments. It has no impact on regression calculation, equation display, or LSMA and band displays.
-> Uncheck the display boxes for the drawing objects.
If you still have troubles after trying the above options, then simply stop displaying the curve - unless it's important to you.
As I mentioned, v4 drawing objects can be rather resource intensive. So a simple fix that often works when other things fail is to just stop them from being displayed.
-> Reduce sampling period, polynomial order, or curve drawing step size.
If you're having runtime errors and don't want to sacrifice the curve drawings, then you'll need to reduce the calculation complexity.
If you're using a large sampling period, or high order polynomial, the operational complexity becomes significantly higher than lower periods and orders.
When you have larger step sizes, more historical referencing is used for x-axis locations, which does have an impact as well.
By reducing these parameters, the runtime issue will often be solved.
Another important detail to note with this is that you may have configurations that work just fine in real time, but struggle to load properly in replay mode.
This is because the replay framework also requires its own allotment of runtime, so that must be taken into consideration as well.
- Please note that the line and label objects are reprinted as new data emerges. That's simply the nature of drawing objects vs standard plots.
I do not recommend or endorse basing your trading decisions based on the drawn curve. That component is merely to serve as a visual reference of the current polynomial relationship.
No repainting occurs with the Polynomial LSMA and bands though. Once the bar is closed, that bar's calculated values are set.
So when using the LSMA and bands for trading purposes, you can rest easy knowing that history won't change on you when you come back to view them.
- For those who intend on utilizing or modifying the functions and calculations in this script for their own scripts, I included debug dialogues in the script for all of the arrays to make the process easier.
To use the debugs, see the "Debugs" section at the bottom. All dialogues are commented out by default.
The debugs are displayed using label objects. By default, I have them all located to the right of current price.
If you wish to display multiple debugs at once, it will be up to you to decide on display locations at your leisure.
When using the debugs, I recommend commenting out the other drawing objects (or even all plots) in the script to prevent runtime issues and overlapping displays.
Volume ProfileThis is a Volume Profile based on pine script arrays.
The main idea behind this script is from the user @IldarAkhmetgaleev .
He created an awesome piece of code for free users on tradingview.
Here are some changes to the main script:
0. Used Pine Script Arrays for doing/storing calculations.
1. The bar labels are replaced with lines.
2. Added a POC line.
3. Bar growing directions changed from right to left.
4. Added an option to change bar width.
Inputs:
0. Volume Lookback Depth : Number of bars to look back for volume calculations.
1. Bar Length Multiplier : Bar length multiplier to make bar long or short.
2. Bar Horizontal Offset : Horizontal distance from the current bar in the right direction.
3. Bar Width : Width of the bars.
4. Show POC Line : Show or hide the POC line.
Happy trading.
VAMA Volume Adjusted Moving AverageRichard Arms' Volume Adjusted Moving Average
Settings:
• Inp Avg Vol: Input - Purist method but not intended for live analysis, to retroactively alter MA curve enter Avg Vol from value shown on label into Use Avg Vol field.
• Inp Avg Vol: Current - Live method using current volume , to retroactively alter past MA curve toggle any setting back and forth to force recalculation.
• Inp Avg Vol: Subset - Similar to Current, but uses a subset rather than all bars for avg vol.
• Use Avg Vol - Used for Inp Avg Vol: Input mode. Enter volume from Avg Vol label here after each new bar closes, label will turn green, else red.
• Subset Data - Lookback length used for Inp Avg Vol: Subset mode.
• VAMA Length - Specified number of volume ratio buckets to be reached.
• Volume Incr - Size of volume ratio buckets.
• VAMA Source - Price used for volume weighted calculations.
• VAMA Strict - Must meet desired volume requirements, even if N bars has to exceed VAMA Length to do it.
• Show Avg Vol Label - Displays label on chart of total chart volume.
Notes: VAMA was created by Richard Arms. It utilizes a period length that is based on volume increments rather than time. It is an unusual indicator in that it cannot be used in some platforms in realtime mode as Arms had originally intended. VAMA requires that the average volume first be calculated for the entire chart duration, then that average volume is used to derive the variable adaptive length of the moving average. The consequence of this is that with each new bar, the new average volume alters the moving average period for the entire history. Since Pine scripts evaluate all historical bars only once upon initial script execution, there is no way to automatically shift the previous moving average values retroactively once a new bar has formed. Thus the historical plot of the moving average cannot be updated in realtime, but instead can only plot through previous bar that existed upon load or reinitialization through changing some setting.
Setting Use Avg Vol to Input mode the average volume through previous bar shown in label can be entered (input) into the Inp Avg Vol setting after each new bar closes. Entering this total chart volume forces the script to reevaluate historical bars which in turn allows the historical moving average to update the plot. When using Input mode the color of the label is green when Inp Avg Vol value matches current label value, the label color red signifies Inp Avg Vol value has not been entered or is stale.
Setting Use Avg Vol to Current mode allows the script to correctly calculate and plot the correct moving average upon initial load and the realtime moving average moving forward, but can not retroactively alter the plot of the past moving average unless some change is made in the script settings, such as toggling the Use Avg Vol from Current to some other choice and then back to Current .
Setting Use Avg Vol to Subset mode uses a rolling window of volume data to calculate the average volume and can be used in realtime, but should be noted it is a deviation from Richard Arms' original specification.
VAMA info: "Trading Without Fear" by Richard W Arms, Jr, www.fidelity.com
NOTICE: This is an example script and not meant to be used as an actual strategy. By using this script or any portion thereof, you acknowledge that you have read and understood that this is for research purposes only and I am not responsible for any financial losses you may incur by using this script!
BO - CCI Arrow with AlertBO - CCI Arrow with Alert base on CCI indicator to get signal for trade Binary Option.
Rules of BO - CCI Arrow with Alert below:
A. Setup Menu
1. cciLength:
* Default CCI lenght = 14
2. Linear Regression Length:
* Periods to calculate Linear Regression of CCI,
* Default value = 5
3. Extreme Level:
* Default top extreme level = 100
* Default bottom extreme level = -100
4. Filter Length:
* Periods to define highest or lowest Linear Regression
* Default value = 6
B. Rule Of Alert Bar
1. Put Alert Bar
* Current Linear Regression Line created temporrary peak
* Peak of Linear Regression Line greater than Top Extreme Level (100)
* Previous Linear Regression is highest of Filter Length (6)
* Previous Linear Regression is greater than previous peak of Linear Regression Line
* Current price greater than previous low
* CCI(14) less than Linear Regression Line
2. Call Alert Bar
* Current Linear Regression Line created temporrary bottom
* Bottom of Linear Regression Line less than Bottom Extreme Level (-100)
* Previous Linear Regression is lowest of Filter Length (6)
* Previous Linear Regression is less than previous bottom of Linear Regression Line
* Current price less than previous lhigh
* CCI(14) greater than Linear Regression Line
B. Rule Of Entry Bar and Epiry.
1. Put Entry with expiry 3 bars:
* After Put Alert Bar close with signal confirmed, put Arrow appear, and after 3 bars, result label will appear to show win trade, loss trade or draw trade
2. Call Entry with expiry 3 bars:
* After Call Alert Bar close with signal confirmed, call Arrow appear, and after 3 bars, result label will appear to show win trade, loss trade or draw trade.
3. While 1 trade is opening no more any signal
C. Popup Alert/Mobile Alert
1. Signal alert: Put Alert or Call Alert will send to mobile or show popup on chart
2. Put Alert: only Put Alert will send to mobile or show popup on chart
3. Call Alert: only Call Alert will send to mobile or show popup on chart
TheStocksDoctor_WVF + ADX + CCIThis script is a modified version of CM Williams Vix Fix for which I have added an indicator that shows when ADX and CCI are both indicating positive momentum - highlighted by green bars. This is part of TheStocksDoctor Trading System.
Inputs are as follows:
Lookback period Standard Deviation High ---> 22
Bolinger Band Length ---> 20
Bollinger Band Standard Dev.. ---> 2
Lookback period percentile high ---> 50
Highest Percentile ---> 0.85
----Highlight bars Below... --->
Show Highlight bar if WVF WAS true is now False --->
Show highlight bar if WVF IS True --->
----Highlight bars Below Use Filtered... --->
Show highlight bar for filtered entry --->
Show highlight bar for AGGRESSIVE Filtered Entry? --->
Check below to Turn all Bars Gray --->
Check box to Turn Bars gray? --->
Long-term look back current bar has to close Below... ---> 40
Medium-term look back current bar has to close below... ---> 14
Entry price action strength --close... ---> 3
--------Turn On/Off Alerts below... --->
---To activate alerts you HAVE To Check... --->
---You can un Check the box BELOW... --->
Show Williams Vix Fix Histogram... --->
Show Alert WVF = True? --->
Show Alert WVF wa true now False? --->
Show Alert WVF Filtered? --->
Show Alert WVF AGGRESSIVE Filter? --->
ADX Smoothing ---> 17
DI Length ---> 17
Kawabunga Swing Failure Points Candles (SFP) by RRBKawabunga Swing Failure Points Candles (SFP) by RagingRocketBull 2019
Version 1.0
This indicator shows Swing Failure Points (SFP) and Swing Confirmation Points (SCP) as candles on a chart.
SFP/SCP candles are used by traders as signals for trend confirmation/possible reversal.
The signal is stronger on a higher volume/larger candle size.
A Swing Failure Point (SFP) candle is used to spot a reversal:
- up trend SFP is a failure to close above prev high after making a new higher high => implies reversal down
- down trend SFP is a failure to close below prev low after making a new lower low => implies reversal up
A Swing Confirmation Point (SCP) candle is just the opposite and is used to confirm the current trend:
- up trend SCP is a successful close above prev high after making a new higher high => confirms the trend and implies continuation up
- down trend SCP is a successful close below prev low after making a new lower low => confirms the trend and implies continuation down
Features:
- uses fractal pivots with optional filter
- show/hide SFP/SCP candles, pivots, zigzag, last min/max pivot bands
- dim lag zones/hide false signals introduced by lagging fractals or
- use unconfirmed pivots to eliminate fractal lag/false signals. 2 modes: fractals 1,1 and highest/lowest
- filter only SFP/SCP candles confirmed with volume/candle size
- SFP/SCP candles color highlighting, dim non-important bars
Usage:
- adjust fractal settings to get pivots that best match your data (lower values => more frequent pivots. 0,0 - each candle is a pivot)
- use one of the unconfirmed pivot modes to eliminate false signals or just ignore all signals in the gray lag zones
- optionally filter only SFP/SCP candles with large volume/candle size (volume % change relative to prev bar, abs candle body size value)
- up/down trend SCP (lime/fuchsia) => continuation up/down; up/down trend SFP (orange/aqua) => possible reversal down/up. lime/aqua => up; fuchsia/orange => down.
- when in doubt use show/hide pivots/unconfirmed pivots, min/max pivot bands to see which prev pivot and min/max value were used in comparisons to generate a signal on the following candle.
- disable offset to check on which bar the signal was generated
Notes:
Fractal Pivots:
- SFP/SCP candles depend on fractal pivots, you will get different signals with different pivot settings. Usually 4,4 or 2,2 settings are used to produce fractal pivots, but you can try custom values that fit your data best.
- fractal pivots are a mixed series of highs and lows in no particular order. Pivots must be filtered to produce a proper zigzag where ideally a high is followed by a low and another high in orderly fashion.
Fractal Lag/False Signals:
- only past fractal pivots can be processed on the current bar introducing a lag, therefore, pivots and min/max pivot bands are shown with offset=-rightBars to match their target bars. For unconfirmed pivots an offset=-1 is used with a lag of just 1 bar.
- new pivot is not a confirmed fractal and "does not exist yet" while the distance between it and the current bar is < rightBars => prev old fractal pivot in the same dir is used for comparisons => gives a false signal for that dir
- to show false signals enable lag zones. SFP/SCP candles in lag zones are false. New pivots will be eventually confirmed, but meanwhile you get a false signal because prev pivot in the same dir was used instead.
- to solve this problem you can either temporary hide false signals or completely eliminate them by using unconfirmed pivots of a smaller degree/lag.
- hiding false signals only works for history and should be used only temporary (left disabled). In realtime/replay mode it disables all signals altogether due to TradingView's bug (barcolor doesn't support negative offsets)
Unconfirmed Pivots:
- you have 2 methods to check for unconfirmed pivots: highest/lowest(rightBars) or fractals(1,1) with a min possible step. The first is essentially fractals(0,0) where each candle is a pivot. Both produce more frequent pivots (weaker signals).
- an unconfirmed pivot is used in comparisons to generate a valid signal only when it is a higher high (> max high) or a lower low (< min low) in the dir of a trend. Confirmed pivots of a higher degree are not affected. Zigzag is not affected.
- you can also manually disable the offset to check on which bar the pivot was confirmed. If the pivot just before an SCP/SFP suddenly jumps ahead of it - prev pivot was used, generating a false signal.
- last max high/min low bands can be used to check which value was used in candle comparison to generate a signal: min(pivot min_low, upivot min_low) and max(pivot max_high, upivot max_high) are used
- in the unconfirmed pivots mode the max high/min low pivot bands partially break because you can't have a variable offset to match the random pos of an unconfirmed pivot (anywhere in 0..rightBars from the current bar) to its target bar.
- in the unconfirmed pivots mode h (green) and l (red) pivots become H and L, and h (lime) and l (fuchsia) are used to show unconfirmed pivots of a smaller degree. Some of them will be confirmed later as H and L pivots of a higher degree.
Pivot Filter:
- pivot filter is used to produce a better looking zigzag. Essentially it keeps only higher highs/lower lows in the trend direction until it changes, skipping:
- after a new high: all subsequent lower highs until a new low
- after a new low: all subsequent higher lows until a new high
- you can't filter out all prev highs/lows to keep just the last min/max pivots of the current swing because they were already confirmed as pivots and you can't delete/change history
- alternatively you could just pick the first high following a low and the first low following a high in a sequence and ignore the rest of the pivots in the same dir, producing a crude looking zigzag where obvious max high/min lows are ignored.
- pivot filter affects SCP/SFP signals because it skips some pivots
- pivot filter is not applied to/not affected by the unconfirmed pivots
- zigzag is affected by pivot filter, but not by the unconfirmed pivots. You can't have both high/low on the same bar in a zigzag. High has priority over Low.
- keep same bar pivots option lets you choose which pivots to keep when there are both high/low pivots on the same bar (both kept by default)
SCP/SFP Filters:
- you can confirm/filter only SCP/SFP signals with volume % change/candle size larger than delta. Higher volume/larger candle means stronger signal.
- technically SCP/SFP is always the first matching candle, but it can be invalidated by the following signal in the opposite dir which in turn can be negated by the next signal.
- show first matching SCP/SFP = true - shows only the first signal candle (and any invalidations that follow) and hides further duplicate signals in the same dir, does not highlight the trend.
- show first matching SCP/SFP = false - produces a sequence of candles with duplicate signals, highlights the whole trend until its dir changes (new pivot).
Good Luck! Feel free to learn from/reuse the code to build your own indicators!
Volume Indicator VSidea take from Alexander Elder, author of: The New Trading for a Living: Psychology, Discipline, Trading Tools and Systems, Risk Control, Trade Management
Meaning of colouring:
- Green bar Volume: If we look back certain numbers of volume bars, higher close price and higher volume.
- Blue bar Volume: If we look back certain numbers of volume bars, higher close price and lower volume.
- Red bar Volume: If we look back certain numbers of volume bars, lower close price and higher volume.
- Orange bar Volume: If we look back certain numbers of volume bars, lower close prince and lower volume.
- Grey bar Volume: If we look back certain numbers of volume bars, same price and same volume.
Locomotive v1.0My new free indicator "Locomotive v1.0" ("Loco", "Parovozik").
For 1D, 1W, 1MN, any crypto-pair. Long only!
Pattern:
Red bar = close < open
Lime bar = open < close
bar №1 = any red bar
bar №2 = any red bar
bar №3 = any red bar
bar №4 = any lime bar
Very simple :) But it works!
_CM_BarRange_PercentileI know a Trader that went 18 months without a losing trade. This Trader averaged trading 700-800 contracts per month in the Futures markets.
The was not his only system but here were his rules.
He looked at the 60 minute bar and calculated the ranges of the bars over the last 3 months. IF the range of the Bar was Greater Than the 99th Percentile, He would Fade that move or take the trade in the opposite direction.
Thought process is If the Price Bar is Greater Than the 99th Percentile then typically the market reverses. This happens a lot of times at news events. If you’ve studied the markets long enough you know if a Nes based event causes a Huge Move, which we define as Greater than the 99th Percentile, the Market typically moves in the opposite direction.
***This is dependent on the Instrument your trading and the time frame your trading. Some Instruments and time frames this signals a continuation move.
I also added in the Low of the Range based on the 99th Percentile. Often times Low Range Bars…especially if they appear at the top of a swing move, or the bottom of a swing move…create a high probability entry once the High or Low of the bar is taken out in the opposite direction of the previous move…The Low Range bars show indecision after a strong move and create great reversal opportunities.
Works on All Time Frames…again depending on the instrument your trading.
On instruments that MOVE or have High Volatility like Crude and Oil you can get great signals on 1 minute bars.
***Code includes ability to pick ham many bars you want your Look Back Period To Be.
***You can change the percentages to use the 99th Percentile, or 95th percentile, etc…
***The Green Line is the Value of the High Range Percentile.
***The Red Line is the Value of the Low Range Percentile.
***Plots a Magenta Cross on the Red Line if the Range is Below the Low Range Percentile.
***Plots a yellow Cross on the Green Line if the Range is Greater Than the High Range Percentile.
***The Aqua line is the Midpoint of the Range. Or the Average Price Move.
***Colors the Price Bar Yellow if the Range exceeds the High Range Percentile.
***Colors The Bar Magenta if the Range is Less Than the Low Range Percentile
***All parameters can be turned on or off via Check Boxes in the Inputs Tab
Hull For LoopHull For Loop is a sophisticated trend-following indicator that combines the smoothness of Hull Moving Averages with advanced trend detection algorithms and robust confirmation mechanisms.
## How It Works
At its foundation, Hull For Loop employs a custom-calculated Hull Moving Average using weighted moving average for-loops to achieve optimal smoothness and responsiveness. The system operates through three distinct layers: Hull MA calculation with adjustable smoothing multipliers, advanced trend detection using ATR-based slope thresholds, and multi-bar trend confirmation to filter false breakouts.
The logic flow is elegantly simple yet powerful:
- Hull Calculation combines half-period and full-period weighted moving averages, then applies square-root smoothing for enhanced responsiveness
- Trend Detection analyzes Hull slope against dynamic ATR-based thresholds, classifying market direction as bullish, bearish, or neutral
- Confirmation System requires sustained directional movement across multiple bars before triggering signals, dramatically reducing whipsaws
When Hull slope exceeds the positive threshold, bullish conditions emerge. When it falls below the negative threshold, bearish momentum takes control. The multi-bar confirmation ensures only sustained moves generate actionable signals, making this system ideal for trend-following strategies across volatile markets.
The advanced slope analysis mechanism adapts to market volatility through ATR integration, ensuring sensitivity remains optimal during both high-volatility breakouts and low-volatility consolidations, delivering consistent performance across varying market conditions.
## Features
- Custom Hull Implementation : For-loop calculations for precise weighted moving average control and enhanced smoothness
- Dynamic Trend Detection : ATR-based slope analysis automatically adjusts sensitivity to market volatility conditions
- Multi-Bar Confirmation : Configurable confirmation periods (1-5 bars) eliminate false signals and reduce trading noise
- Advanced Visual System : Dynamic color coding, optional arrows, and statistics table for comprehensive market visualization
- Optimized for Bitcoin : Extensively backtested parameters delivering 128.58% returns with 55% drawdown reduction versus buy-and-hold
- Flexible Configuration : Hull length (1-200), smoothing multiplier (0.1-3.0), sensitivity (1-10), and confirmation settings
- Professional Alerts : Comprehensive alert system for trend changes and entry signals with strength percentages
- Real-time Analytics : Optional statistics table displaying trend direction, strength, Hull value, and current price
## Signal Generation
Hull For Loop generates multiple signal types for comprehensive trend analysis and precise entry/exit timing:
Primary Signals : Confirmed trend changes from bullish to bearish or vice versa - highest probability directional moves
Entry Signals : Initial trend confirmation after multi-bar validation - optimal position entry points
Strength Indicators : Real-time trend strength percentages based on directional momentum over lookback periods
Visual Confirmations : Color-coded Hull line providing instant visual trend status
The confirmation system adds crucial reliability - signals must persist through the specified confirmation period before activation, ensuring only sustained moves trigger trading decisions rather than temporary price fluctuations.
## Visual Implementation
The indicator employs sophisticated visual elements for immediate trend comprehension and professional chart presentation:
- Dynamic Hull Line : Color-changing line (green/red/gray) with configurable width reflecting current trend status
- Optional Directional Arrows : Triangle markers below/above bars marking confirmed trend changes and entry points (disabled by default)
- Statistics Panel : Optional real-time table showing trend direction, strength percentage, Hull value, and current price
- Professional Color Scheme : Customizable bullish (green), bearish (red), and neutral (gray) color system
## Alerts
Hull For Loop includes comprehensive alert conditions for automated trading integration:
- Hull Trend Change - Confirmed trend direction shift with strength percentage
- Hull BUY Signal - Bullish trend confirmation with price and strength data
- Hull SELL Signal - Bearish trend confirmation with price and strength data
- Alert Frequency - Once per bar to prevent spam while maintaining accuracy
All alerts include contextual information: trend direction, current price, and trend strength percentage for informed decision-making.
## Use Cases
Trend Following : Optimized for sustained directional moves with superior drawdown protection compared to buy-and-hold strategies
Swing Trading : Multi-bar confirmation eliminates false breakouts while capturing significant trend changes
Position Trading : Smooth Hull calculation provides stable signals for longer-term directional positioning
Risk Management : Advanced confirmation system dramatically reduces whipsaw trades and false signals
Crypto Trading : Specifically optimized for Bitcoin with parameters delivering exceptional historical performance
The system demonstrates exceptional performance across volatile assets.
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.
(Mustang Algo) Stochastic RSI + Triple EMAStochastic RSI + Triple EMA (StochTEMA)
Overview
The Stochastic RSI + Triple EMA indicator combines the Stochastic RSI oscillator with a Triple Exponential Moving Average (TEMA) overlay to generate clear buy and sell signals on the price chart. By measuring RSI overbought/oversold conditions and confirming trend direction with TEMA, this tool helps traders identify high-probability entries and exits while filtering out noise in choppy markets.
Key Features
Stochastic RSI Calculation
Computes a standard RSI over a user-defined period (default 50).
Applies a Stochastic oscillator to the RSI values over a second user-defined period (default 50).
Smooths the %K line by taking an SMA over a third input (default 3), and %D is an SMA of %K over another input (default 3).
Defines oversold when both %K and %D are below 20, and overbought when both are above 80.
Triple EMA (TEMA)
Calculates three successive EMAs on the closing price with the same length (default 9).
Combines them using TEMA = 3×(EMA1 – EMA2) + EMA3, producing a fast-reacting trend line.
Bullish trend is identified when price > TEMA and TEMA is rising; bearish trend when price < TEMA and TEMA is falling; neutral/flat when TEMA change is minimal.
Signal Logic
Strong Buy: Previous bar’s Stoch RSI was oversold (both %K and %D < 20), %K crosses above %D, and TEMA is in a bullish trend.
Medium Buy: %K crosses above %D (without requiring oversold), TEMA is bullish, and previous %K < 50.
Weak Buy: Previous bar’s %K and %D were oversold, %K crosses above %D, TEMA is flat or bullish (not bearish).
Strong Sell: Previous bar’s Stoch RSI was overbought (both %K and %D > 80), %K crosses below %D, and TEMA is bearish.
Medium Sell: %K crosses below %D (without requiring overbought), TEMA is bearish, and previous %K > 50.
Weak Sell: Previous bar’s %K and %D were overbought, %K crosses below %D, TEMA is flat or bearish (not bullish).
Visual Elements on Chart
TEMA Line: Plotted in cyan (#00BCD4) with a medium-thick line for clear trend visualization.
Buy/Sell Markers:
BUY STRONG: Lime label below the candle
BUY MEDIUM: Green triangle below the candle
BUY WEAK: Semi-transparent green circle below the candle
SELL STRONG: Red label above the candle
SELL MEDIUM: Orange triangle above the candle
SELL WEAK: Semi-transparent orange circle above the candle
Candle & Background Coloring: When a strong buy or sell signal occurs, the candle body is tinted (semi-transparent lime/red) and the chart background briefly flashes light green (buy) or light red (sell).
Dynamic Support/Resistance:
On a strong buy signal, a green dot is plotted under that bar’s low as a temporary support marker.
On a strong sell signal, a red dot is plotted above that bar’s high as a temporary resistance marker.
Alerts
Strong Buy Alert: Triggered when Stoch RSI is oversold, %K crosses above %D, and TEMA is bullish.
Strong Sell Alert: Triggered when Stoch RSI is overbought, %K crosses below %D, and TEMA is bearish.
General Buy Alert: Triggered on any bullish crossover (%K > %D) when TEMA is not bearish.
General Sell Alert: Triggered on any bearish crossover (%K < %D) when TEMA is not bullish.
Inputs
Stochastic RSI Settings (group “Stochastic RSI”):
K (smoothK): Period length for smoothing the %K line (default 3, minimum 1)
D (smoothD): Period length for smoothing the %D line (default 3, minimum 1)
RSI Length (lengthRSI): Number of bars used for the RSI calculation (default 50, minimum 1)
Stochastic Length (lengthStoch): Number of bars for the Stochastic oscillator applied to RSI (default 50, minimum 1)
RSI Source (src): Price source for the RSI (default = close)
TEMA Settings (group “Triple EMA”):
TEMA Length (lengthTEMA): Number of bars used for each of the three EMAs (default 9, minimum 1)
How to Use
Add the Script
Copy and paste the indicator code into TradingView’s Pine Editor (version 6).
Save the script and add it to your chart as “Stochastic RSI + Triple EMA (StochTEMA).”
Adjust Inputs
Choose shorter lengths for lower timeframes (e.g., intraday scalping) and longer lengths for higher timeframes (e.g., swing trading).
Fine-tune the Stochastic RSI parameters (K, D, RSI Length, Stochastic Length) to suit the volatility of the instrument.
Modify TEMA Length if you prefer a faster or slower moving average response.
Interpret Signals
Primary Entries/Exits: Focus on “BUY STRONG” and “SELL STRONG” signals, as they require both oversold/overbought conditions and a confirming TEMA trend.
Confirmation Signals: Use “BUY MEDIUM”/“BUY WEAK” to confirm or add to an existing position when the market is trending. Similarly, “SELL MEDIUM”/“SELL WEAK” can be used to scale out or confirm bearish momentum.
Support/Resistance Dots: These help identify recent swing lows (green dots) and swing highs (red dots) that were tagged by strong signals—useful to place stop-loss or profit-target orders.
Set Alerts
Open the Alerts menu (bell icon) in TradingView, choose this script, and select the desired alert condition (e.g., “BUY Signal Strong”).
Configure notifications (popup, email, webhook) according to your trading workflow.
Notes & Best Practices
Filtering False Signals: By combining Stoch RSI crossovers with TEMA trend confirmation, most false breakouts during choppy price action are filtered out.
Timeframe Selection: This indicator works on all timeframes, but shorter timeframes may generate frequent signals—consider higher-timeframe confirmation when trading lower timeframes.
Risk Management: Always use proper position sizing and stop-loss placement. An “oversold” or “overbought” reading can remain extended for some time in strong trends.
Backtesting/Optimization: Before live trading, backtest different parameter combinations on historical data to find the optimal balance between sensitivity and reliability for your chosen instrument.
No Guarantee of Profits: As with any technical indicator, past performance does not guarantee future results. Use in conjunction with other forms of analysis (volume, price patterns, fundamentals).
Author: Your Name or Username
Version: 1.0 (Pine Script v6)
Published: June 2025
Feel free to customize input values and visual preferences. If you find bugs or have suggestions for improvements, open an issue or leave a comment below. Trade responsibly!
Enhanced Stock Ticker with 50MA vs 200MADescription
The Enhanced Stock Ticker with 50MA vs 200MA is a versatile Pine Script indicator designed to visualize the relative position of a stock's price within its short-term and long-term price ranges, providing actionable bullish and bearish signals. By calculating normalized indices based on user-defined lookback periods (defaulting to 50 and 200 bars), this indicator helps traders identify potential reversals or trend continuations. It offers the flexibility to plot signals either on the main price chart or in a separate lower pane, leveraging Pine Script v6's force_overlay functionality for seamless integration. The indicator also includes a customizable ticker table, visual fills, and alert conditions for automated trading setups.
Key Features
Dual Lookback Indices: Computes short-term (default: 50 bars) and long-term (default: 200 bars) indices, normalizing the closing price relative to the high/low range over the specified periods.
Flexible Signal Plotting: Users can toggle between plotting crossover signals (triangles) on the main price chart (location.abovebar/belowbar) or in the lower pane (location.top/bottom) using the Plot Signals on Main Chart option.
Crossover Signals: Generates bullish (Golden Cross) and bearish (Death Cross) signals when the short or long index crosses above 5 or below 95, respectively.
Visual Enhancements:
Plots short-term (blue) and long-term (white) indices in a separate pane with customizable lookback periods.
Includes horizontal reference lines at 0, 20, 50, 80, and 100, with green and red fills to highlight overbought/oversold zones.
Dynamic fill between indices (green when short > long, red when long > short) for quick trend visualization.
Displays a ticker and legend table in the top-right corner, showing the symbol and lookback periods.
Alert Conditions: Supports alerts for bullish and bearish crossovers on both short and long indices, enabling integration with TradingView's alert system.
Technical Innovation: Utilizes Pine Script v6's force_overlay parameter to plot signals on the main chart from a non-overlay indicator, combining the benefits of a separate pane and chart-based signals in a single script.
Technical Details
Calculation Logic:
Uses confirmed bars (barstate.isconfirmed) to calculate indices, ensuring reliability by avoiding real-time bar fluctuations.
Short-term index: (close - lowest(low, lookback_short)) / (highest(high, lookback_short) - lowest(low, lookback_short)) * 100
Long-term index: (close - lowest(low, lookback_long)) / (highest(high, lookback_long) - lowest(low, lookback_long)) * 100
Signals are triggered using ta.crossover() and ta.crossunder() for indices crossing 5 (bullish) and 95 (bearish).
Signal Plotting:
Main chart signals use force_overlay=true with location.abovebar/belowbar for precise alignment with price bars.
Lower pane signals use location.top/bottom for visibility within the indicator pane.
Plotting is controlled by boolean conditions (e.g., bullishLong and plot_on_chart) to ensure compliance with Pine Script's global scope requirements.
Performance Considerations: Optimized for efficiency by calculating indices only on confirmed bars and using lightweight plotting functions.
How to Use
Add to Chart:
Copy the script into TradingView's Pine Editor and add it to your chart.
Configure Settings:
Short Lookback Period: Adjust the short-term lookback (default: 50 bars) to match your trading style (e.g., 20 for shorter-term analysis).
Long Lookback Period: Adjust the long-term lookback (default: 200 bars) for broader market context.
Plot Signals on Main Chart: Check this box to display signals on the price chart; uncheck to show signals in the lower pane.
Interpret Signals:
Golden Cross (Bullish): Green (long) or blue (short) triangles indicate the index crossing above 5, suggesting a potential buying opportunity.
Death Cross (Bearish): Red (long) or white (short) triangles indicate the index crossing below 95, signaling a potential selling opportunity.
Set Alerts:
Use TradingView's alert system to create notifications for the four alert conditions: Long Index Valley, Long Index Peak, Short Index Valley, and Short Index Peak.
Customize Visuals:
The ticker table displays the symbol and lookback periods in the top-right corner.
Adjust colors and styles via TradingView's settings if desired.
Example Use Cases
Swing Trading: Use the short-term index (e.g., 50 bars) to identify short-term reversals within a broader trend defined by the long-term index.
Trend Confirmation: Monitor the fill between indices to confirm whether the short-term trend aligns with the long-term trend.
Automated Trading: Leverage alert conditions to integrate with bots or manual trading strategies.
Notes
Testing: Always backtest the indicator on your chosen market and timeframe to validate its effectiveness.
Optional Histogram: The script includes a commented-out histogram for the index difference (index_short - index_long). Uncomment the plot(index_diff, ...) line to enable it.
Compatibility: Built for Pine Script v6 and tested on TradingView as of May 27, 2025.
Acknowledgments
This indicator was inspired by the need for a flexible tool that combines lower-pane analysis with main chart signals, made possible by Pine Script's force_overlay feature. Share your feedback or suggestions in the comments below, and happy trading!
Smart Trend Lines [The_lurker]
Smart Trend Lines
A multi-level trend classifier that detects bullish and bearish conditions using a methodology based on drawing trend lines—main, intermediate, and short-term—by identifying peaks and troughs. The tool highlights trend strength by applying filters such as the Average Directional Index (ADX) (A), Relative Strength Index (RSI) (R), and Volume (V), making it easier to interpret trend strength. The filter markers (V, A, R) in the Smart Trend Lines indicator are powerful tools for assessing the reliability of breakouts. Breakouts containing are the most reliable, as they indicate strong volume support, trend strength, and favorable momentum. Breakouts with partial filters (such as or ) require additional confirmation, while breakouts without filters ( ) should be avoided unless supported by other strong signals. By understanding the meaning of each filter and the market context.
Core Functionality
1. Trend Line Types
The indicator generates three distinct trend line categories, each serving a specific analytical purpose:
Main Trend Lines: These are long-term trend lines designed to capture significant market trends. They are calculated based on pivot points over a user-defined period (default: 50 bars). Main trend lines are ideal for identifying macro-level support and resistance zones.
Mid Trend Lines: These are medium-term trend lines (default: 21 bars) that focus on intermediate price movements. They provide a balance between short-term fluctuations and long-term trends, suitable for swing trading strategies.
Short Trend Lines: These are short-term trend lines (default: 9 bars) that track rapid price changes. They are particularly useful for scalping or day trading, highlighting immediate support and resistance levels.
Each trend line type can be independently enabled or disabled, allowing traders to tailor the indicator to their preferred timeframes.
2. Breakout Detection
The indicator employs a robust breakout detection system that identifies when the price crosses a trend line, signaling a potential trend reversal or continuation. Breakouts are validated using the following filters:
ADX Filter: The Average Directional Index (ADX) measures trend strength. A user-defined threshold (default: 20) ensures that breakouts occur during strong trends, reducing false signals in range-bound markets.
RSI Filter: The Relative Strength Index (RSI) identifies overbought or oversold conditions. Breakouts are filtered based on RSI thresholds (default: 65 for overbought, 35 for oversold) to avoid signals in extreme market conditions.
Volume Filter: Breakouts are confirmed only when trading volume exceeds a moving average (default: 20 bars) and aligns with the breakout direction (e.g., higher volume on bullish breakouts when the candle closes higher).
Breakout events are marked with labels on the chart, indicating the type of trend line broken (Main, Mid, or Short) and the filters satisfied (Volume, ADX, RSI). Alerts are triggered for each breakout, providing real-time notifications.
3. Customization Options
The indicator offers extensive customization through input settings, organized into logical groups for ease of use:
Main Trend Line Settings
Length: Defines the number of bars used to calculate pivot points (default: 50).
Bullish Color: Color for upward-sloping (bullish) main trend lines (default: green).
Bearish Color: Color for downward-sloping (bearish) main trend lines (default: red).
Style: Line style options include solid, dashed, or dotted (default: solid).
Mid Trend Line Settings
Length: Number of bars for mid-term pivot points (default: 21).
Show/Hide: Toggle visibility of mid trend lines (default: enabled).
Bullish Color: Color for bullish mid trend lines (default: lime).
Bearish Color: Color for bearish mid trend lines (default: maroon).
Style: Line style (default: dashed).
Short Trend Line Settings
Length: Number of bars for short-term pivot points (default: 9).
Show/Hide: Toggle visibility of short trend lines (default: enabled).
Bullish Color: Color for bullish short trend lines (default: teal).
Bearish Color: Color for bearish short trend lines (default: purple).
Style: Line style (default: dotted).
General Display Settings
Break Check Price: Selects the price type for breakout detection (Close, High, or Low; default: Close).
Show Previous Trendlines: Option to display historical main trend lines (default: disabled).
Label Size: Size of breakout labels (Tiny, Small, Normal, Large, Huge; default: Small).
Filter Settings
ADX Threshold: Minimum ADX value for trend strength confirmation (default: 25).
Volume MA Period: Period for the volume moving average (default: 20).
RSI Filter: Enable/disable RSI filtering (default: enabled).
RSI Upper Threshold: Upper RSI limit for overbought conditions (default: 65).
RSI Lower Threshold: Lower RSI limit for oversold conditions (default: 35).
4. Technical Calculations
The indicator relies on several technical calculations to ensure accuracy:
Pivot Points: Pivot highs and lows are detected using the ta.pivothigh and ta.pivotlow functions, with separate lengths for Main, Mid, and Short trend lines.
Slope Calculation: The slope of each trend line is calculated as the change in price divided by the change in bar index between two pivot points.
ADX Calculation: ADX is computed using a 14-period Directional Movement Index (DMI), with smoothing over 14 bars.
RSI Calculation: RSI is calculated over a 14-period lookback using the ta.rsi function.
Volume Moving Average: A simple moving average (SMA) of volume is used to determine if current volume exceeds the average.
5. Strict Mode Validation
To ensure the reliability of trend lines, the indicator employs a strict mode check:
For bearish trend lines, all prices between pivot points must remain below the projected trend line.
For bullish trend lines, all prices must remain above the projected trend line.
Post-pivot break checks ensure that no breakouts occur between pivot points, enhancing the validity of the trend line.
6. Trend Line Extension
Trend lines are dynamically extended forward until a breakout occurs. The extension logic:
Projects the trend line using the calculated slope.
Continuously validates the extension using strict mode checks.
Stops extension upon a breakout, fixing the trend line at the breakout point.
7. Alerts and Labels
Labels: Breakout labels are placed above (for bearish breakouts) or below (for bullish breakouts) the price bar. Labels include:
A prefix indicating the trend line type (B for Main, M for Mid, S for Short).
A suffix showing satisfied filters (e.g., for Volume, ADX, and RSI).
Alerts: Each breakout triggers a one-time alert per bar close, with a descriptive message indicating the trend line type and filters met.
Detailed Code Breakdown
1. Initialization and Inputs
The script begins by defining the indicator with indicator('Smart Trend Lines ', overlay = true), ensuring it overlays on the price chart. Input settings are grouped into categories (Main, Mid, Short, General Display, Filters) for user convenience. Each input includes a tooltip in both English and Arabic, enhancing accessibility.
2. Technical Indicator Calculations
Volume MA: Calculated using ta.sma(volume, volPeriod) to compare current volume against the average.
ADX: Computed using custom dirmov and adx functions, which calculate the Directional Movement Index and smooth it over 14 periods.
RSI: Calculated with ta.rsi(close, rsiPeriod) over 14 periods.
Price Selection: The priceToCheck function selects the price type (Close, High, or Low) for breakout detection.
3. Pivot Detection
Pivot points are detected using ta.pivothigh and ta.pivotlow for each trend line type. The lookback period is set to the respective trend line length (e.g., 50 for Main, 21 for Mid, 9 for Short).
4. Trend Line Logic
For each trend line type (Main, Mid, Short):
Bearish Trend Lines: Identified when two consecutive pivot highs form a downward slope. The script validates the trend line using strict mode and post-pivot break checks.
Bullish Trend Lines: Identified when two consecutive pivot lows form an upward slope, with similar validation.
Trend lines are drawn using line.new, with separate lines for the initial segment (between pivots) and the extended segment (from the second pivot forward).
5. Breakout Detection and Labeling
Breakouts are detected when the selected price crosses the trend line level. The script checks:
Volume conditions (above average and aligned with candle direction).
ADX condition (above threshold).
RSI condition (within thresholds if enabled). Labels are created with label.new, and alerts are triggered with alert.
6. Trend Line Extension
The extendTrendline function dynamically updates the trend line’s endpoint unless a breakout occurs. It uses strict mode checks to ensure the trend line remains valid.
7. Previous Trend Lines
If enabled, previous main trend lines are stored in arrays (previousBearishStartLines, previousBullishTrendLines, etc.) and displayed on the chart, providing historical context.
Disclaimer:
The information and publications are not intended to be, nor do they constitute, financial, investment, trading, or other types of advice or recommendations provided or endorsed by TradingView.
Intraday Uncertainty [PhenLabs]📊 Intraday Uncertainty
Version: PineScript™ v6
📌 Description
The Intraday Uncertainty indicator offers traders a visual representation of market certainty/uncertainty during trading sessions. By comparing each price bar’s range to the Average True Range (ATR), it provides an intuitive way to gauge market conviction through a color gradient system.
This tool helps traders identify periods of high certainty (potentially trending markets) versus high uncertainty (potentially choppy or volatile markets) without complex calculations or multiple indicators. The color-coded bars create an immediate visual cue to support decision-making in varying market conditions.
🚀 Points of Innovation
Automated range-to-ATR ratio calculation that adapts to changing market volatility
Dynamic color gradient system that visually distinguishes between certain and uncertain price action
Customizable gradient clamping to fine-tune sensitivity to market conditions
Integrated dashboard that provides clear interpretation guidance
Position-flexible legend that accommodates different chart layouts
Highly optimized for performance with minimal calculation overhead
🔧 Core Components
ATR Calculation: Measures market volatility using a configurable lookback period
Range-to-ATR Ratio: Compares current bar’s high-low range against average volatility
Gradient Mapping System: Converts numerical uncertainty values into an intuitive color scale
Dashboard Legend: Provides clear interpretation guidance with customizable positioning
🔥 Key Features
Bar Coloring: Instantly identifies market certainty levels through intuitive color gradients
Customizable ATR Period: Adjust sensitivity to historical volatility based on trading style
Gradient Clamping: Fine-tune the color sensitivity using the Range/ATR multiplier
Color Customization: Personalize the color scheme to match your chart aesthetics
Informative Dashboard: Quickly interpret color meanings with the optional on-chart legend
Flexible Display Options: Customize dashboard position and text size for your chart layout
🎨 Visualization
Color Gradient: Bars colored on a spectrum from green (high certainty) to red (high uncertainty)
Dashboard Legend: Optional on-chart guide explaining the color interpretation
Color Intensity: Stronger colors indicate more extreme certainty/uncertainty levels
At-a-glance Interpretation: Quickly identify market conviction without analyzing numbers
📖 Usage Guidelines
Calculation Settings
ATR Period
Default: 14
Range: 1+
Description: Controls the lookback period for ATR calculation. Lower values increase sensitivity to recent volatility, while higher values provide more stability.
Gradient Clamp (Range/ATR Multiplier)
Default: 2.0
Range: 0.1+
Description: Sets the maximum Range/ATR ratio for gradient scaling. Ranges above this value display the end color (high uncertainty).
Color Settings
Gradient Start Color (High Certainty)
Default: Green
Description: Color representing high market certainty (low Range/ATR ratio)
Gradient End Color (Low Certainty)
Default: Red
Description: Color representing low market certainty (high Range/ATR ratio)
Dashboard Settings
Show Dashboard Legend
Default: True
Description: Toggles the visibility of the on-chart interpretation guide
Dashboard Position
Options: top_right, top_left, bottom_right, bottom_left, middle_right, middle_left
Default: bottom_right
Description: Controls the placement of the dashboard on your chart
Dashboard Text Size
Options: tiny, small, normal, large, huge
Default: normal
Description: Adjusts the text size of the dashboard for readability
✅ Best Use Cases
Identifying potential trend shifts when certainty levels change dramatically
Confirming trend strength through consistent certainty levels
Detecting choppy/sideways markets with persistent high uncertainty
Filtering trading signals from other indicators based on certainty levels
Gauging market conviction behind price breakouts or pullbacks
Optimizing entry/exit timing based on certainty/uncertainty transitions
⚠️ Limitations
Does not predict future price direction, only measures current bar certainty
May provide false signals during news events or unexpected volatility spikes
Requires context within the broader market environment for optimal interpretation
Color interpretation is relative rather than absolute across different securities
ATR-based calculation means sensitivity varies across different timeframes
💡 What Makes This Unique
Simplicity: Single visual indicator that doesn’t require multiple technical tools
Adaptability: Automatically adjusts to changing market volatility conditions
Contextual Analysis: Provides market conviction context beyond just price movement
Intuitive Design: Color-based system that requires minimal learning curve
Efficiency: Lightweight calculation that doesn’t impact chart performance
🔬 How It Works
1. ATR Calculation:
Calculates the Average True Range using the specified period
Establishes a baseline for normal market volatility
2. Range Analysis:
Measures each bar’s high-low range
Compares this range to the current ATR value to create a ratio
3. Gradient Mapping:
Converts the Range/ATR ratio to a normalized value between 0 and 1
Maps this value onto a color gradient between the start and end colors
Applies the resulting color to the price bar
4. Dashboard Creation:
Constructs an information panel on the last visible bar
Populates it with color samples and interpretation guidance
💡 Note:
This indicator works best when used in conjunction with other technical analysis tools rather than in isolation. The certainty/uncertainty measure provides context for your trading decisions but should not be the sole basis for entries and exits. Consider using higher certainty periods for trend-following strategies and exercise caution during periods of high uncertainty.