Realtime FootprintThe purpose of this script is to gain a better understanding of the order flow by the footprint. To that end, i have added unusual features in addition to the standard features.
I use "Real Time 5D Profile by LucF" main engine to create basic footprint(profile type) and added some popular features and my favorites.
This script can only be used in realtime, because tradingview doesn't provide historical Bid/Ask date.
Bid/Ask date used this script are up/down ticks.
This script can only be used by time based chart (1m, 5m , 60m and daily etc)
This script use many labels and these are limited max 500, so you can't display many bars.
If you want to display foot print bars longer, turn off the unused sub-display function.
Default setting is footprint is 25 labels, IB count is 1, COT high and Ratio high is 1, COT low and Ratio low is 1 and Delta Box Ratio Volume is 1 , total 29.
plus UA , IB stripes , ladder fading mark use several labels.
///////// General Setting ///////////
Resets on Volume / Range bar
: If you want to use simple time based Resets on, please set Total Volume is 0.
Your timeframe is always the first condition. So if you set Total Volume is 1000, both conditions(Volume >= 1000 and your timeframe start next bar) must be met. (that is, new footprint bar doesn't start at when total volume = exactly 1000).
Ticks per row and Maximum row of Bar
: 1 is minimum size(tick). "Maximum row of Bar" decide the number of rows used in one footprint. 1 row is created from 1 label, so you need to reduce this number to display many footprints (Max label is 500).
Volume Filter and For Calculation and Display
: "Volume Filter" decide minimum size of using volume for this script.
"For Calculation and Display" is used to convert volume to an integer.
This script only use integer to make profile look better (I contained Bid number and Ask number in one row( one label) to saving labels. This require to make no difference in width by the number of digits and this script corresponds integers from 0 to 3 digits).
ex) Symbol average volume size is from 0.0001 to 0.001. You decide only use Volume >= 0.0005 by "Volume Filter".
Next, you convert volume to integer, by setting "For Calculation and Display" is 1000 (0.0005 * 1000 = 5).
If 0.00052 → 5.2 → 5, 0.00058 → 5.8 → 6 (Decimal numbers are rounded off)
This integer is used to all calculation in this script.
//////// Main Display ///////
Footprint, Total, Row Delta, Diagonal Delta and Profile
: "Footprint" display Ask and Bid per row. "Total" display Ask + Bid per row.
"Row Delta" display Ask - Bid per row. "Diagonal Delta" display Ask(row N) - Bid(row N -1) per row.
Profile display Total Volume(Ask + Bid) per row by using Block. Profile Block coloring are decided by Row Delta value(default: positive Row Delta (Ask > Bid) is greenish colors and negative Row Delta (Ask < Bid) is reddish colors.)
Volume per Profile Block, Row Imbalance Ratio and Delta Bull/Bear/Neutral Colors
: "Volume per Profile Block" decide one block contain how many total volume.
ex) When you set 20, Total volume 70 display 3 block.
The maximum number of blocks that can be used per low is 20.
So if you set 20, Total volume 400 is 20 blocks. total volume 800 is 20 blocks too.
"Row Imbalance Ratio" decide block coloring. The row imbalance is that the difference between Ask and Bid (row delta) is large.
default is x3, x2 and x1. The larger the difference, the brighter the color.
ex) Ask 30 Bid 10 is light green. Ask 20 Bid 10 is green. Ask 11 Bid 10 is dark green.
Ask 0 Bid 1 is light red. Ask 1 Bid 2 is red. ask 30 Bid 59 is dark green.
Ask 10 Bid 10 is neutral color(gray)
profile coloring is reflected same row's other elements(Ask, Bid, Total and Delta) too.
It's because one label can only use one text color.
/////// Sub Display ///////
Delta, total and Commitment of Traders
: "Delta" is total Ask - total Bid in one footprint bar. Total is total Ask + total Bid in one footprint bar.
"Commitment of traders" is variation of "Delta". COT High is reset to 0 when current highest is touched. COT Low is opposite.
Basic concept of Delta is to compare price with Delta. Ordinary, when price move up, delta is positive. Price move down is negative delta.
This is because market orders move price and market orders are counted by Delta (although this description is not exactly correct).
But, sometimes prices do not move even though many market orders are putting pressure on price , or conversely, price move strongly without many market orders.
This is key point. Big player absorb market orders by iceberg order(Subdivide large orders and pretend to be small limit orders.
Small limit orders look weak in the order book, but they are added each time you fill, so they are more powerful than they look.), so price don't move.
On the other hand, when the price is moving easily, smart players may be aiming to attract and counterattack to a better price for them.
It's more of a sport than science, and there's always no right response. Pay attention to the relationship between price, volume and delta.
ex) If COT Low is large negative value, it means many sell market orders is coming, but iceberg order is absorbing their attack at limit order.
you should not do buy entry, only this clue. but this is one of the hints.
"Delta, Box Ratio and Total texts is contained same label and its color are "Delta" coloring. Positive Delta is Delta Bull color(green),Negative Delta is Delta Bear Color
and Delta = 0 is Neutral Color(gray). When Delta direction and price direction are opposite is Delta Divergence Color(yellow).
I didn't add the cumulative volume delta because I prefer to display the CVD line on the price chart rather than the number.
Box Ratio , Box Ratio Divisor and Heavy Box Ratio Ratio
: This is not ordinary footprint features, but I like this concept so I added.
Box Ratio by Richard W. Arms is simple but useful tool. calculation is "total volume (one bar) divided by Bar range (highest - lowest)."
When Bull and bear are fighting fiercely this number become large, and then important price move happen.
I made average BR from something like 5 SMA and if current BR exceeds average BR x (Heavy Box Ratio Ratio), BR box mark will be filled.
Box Ratio Divisor is used to good looking display(BR multiplied by Box Ratio Divisor is rounded off and displayed as an integer)
Diagonal Imbalance Count , D IB Mark and D IB Stripes
: Diagonal Imbalance is defined by "Diagonal Imbalance Ratio".
ex) You set 2. When Ask(row N) 30 Bid(row N -1)10, it's 30 > 10*2, so positive Diagonal Imbalance.
When Ask(row N) 4 Bid(row N -1)9, it's 4*2 < 9, so negative Diagonal Imbalance.
This calculation does not use equals to avoid Ask(row N) 0 Bid(row N -1)0 became Diagonal Imbalance.
Ask(row N) 0 Bid(row N -1)0, it's 0 = 0*2, not Diagonal Imbalance. Ask(row N) 10 Bid(row N -1)5, it's 10 = 5*2, not Diagonal Imbalance.
"D IB Mark" emphasize Ask or Bid number which is dominant side(Winner of Diagonal Imbalance calculation), by under line.
"Diagonal Imbalance Count" compare Ask side D IB Mark to Bid side D IB Mark in one footprint.
Coloring depend on which is more aggressive side (it has many IB Mark) and When Aggressive direction and price direction are opposite is Delta Divergence Color(yellow).
"D IB Stripes" is a function that further emphasizes with an arrow Mark, when a DIB mark is added on the same side for three consecutive row. Three consecutive arrow is added at third row.
Unfinished Auction, Ratio Bounds and Ladder fading Mark
: "Unfinished Auction" emphasize highest or lowest row which has both Ask and Bid, by Delta Divergence Color(yellow) XXXXXX mark.
Unfinished Auction sometimes has magnet effect, price may touch and breakout at UA side in the future.
This concept is famous as profit taking target than entry decision.
But, I'm interested in the case that Big player make fake breakout at UA side and trapped retail traders, and then do reversal with retail traders stop-loss hunt.
Anyway, it's not stand alone signal.
"Ratio Bounds" gauge decrease of pressure at extreme price. Ratio Bounds High is number which second highest ask is divided by highest ask.
Ratio Bounds Low is number which second lowest bid is divided by lowest bid. The larger the number, the less momentum the price has.
ex)first footprint bar has Ratio Bounds Low 2, second footprint bar has RBL 4, third footprint bar has RBL 20.
This indicates that the bear's power is gradually diminishing.
"Ladder fading mark" emphasizes the decrease of the value in 3 consecutive row at extreme price. I added two type Marks.
Ask/Bid type(triangle Mark) is Ask/Bid values are decreasing of three consecutive row at extreme price.
Row Imbalance type(Diamond Mark) are row Imbalance values are decreasing of three consecutive row at extreme price.
ex)Third lowest Bid 40, second lowest Bid 10 and lowest Bid 5 have triangle up Mark. That is bear's power is gradually diminishing.
(This Mark only check Bid value at lowest price and Ask value at highest price).
Third highest row delta + 60, second highest row delta + 5, highest delta - 20 have diamond Mark. That is Bull's power is gradually diminishing.
Sub display use Delta colors at bottom of Sub display section.
////// Candle & POC /////////
candle and POC
: Ordinary, "POC" Point of Control is row of largest total volume, but this script'POC is volume weighted average.
This is because the regular POC was visually displayed by the profile ,and I was influenced LucF's ideas.
POC coloring is decided in relation to the previous POC. When current POC is higher than previous POC, color is UP Bar Color(green).
In the opposite case, Down Bar color is used.
POC Divergence Color is used when Current POC is up but current bar close is lower than open (Down price Bar),or in the opposite case.
POC coloring has option also highlight background by Delta Divergence Color(yellow). but bg color is displayed at your time frame current price bar not current footprint bar.
The basic explanation is over.
I add some image to promote understanding basic ideas.
In den Scripts nach "bar" suchen
Entanglement Penscript name: Entanglement Pen
For left traders, how to accurately find the bottom and top is very important, and there are various methods. I have shared the bottom type script composed of three bars before, but this type of bottom type is effective in a small range. So, this script is sharing " Entanglement Pen ", which can help us determine bottoms and tops on a global scale.
However, this script uses an approximate reduction method rather than the orthodox solution of entanglement.
After roughly finding the bottom and top, how to determine that these are the bottom and top that meet the definition of entanglement theory?
The main 2 methods of "approximate reduction" are:
(1) The price difference between the top and the bottom is large enough, that is: the lowest price at the top > the highest price at the bottom.
(2) The stock price before the top has continued to rise, that is: both the highest point and the lowest point are rising. In the same way, the stock price before the bottom has a continuous decline, that is: both the high and the low point are falling.
A big disadvantage of this script is that it needs to use future data. This is because:
When multiple bars meet the top definition in a short period of time, only the last bar is used, which is defined as a big top. So, when you see a top appear, you don't know it's not a real top, because it might be followed by a bar that also matches the definition of the top.
When displayed on the graph, bars that meet the top definition have a gray label, which is the small top. Each small top is a big top (with a blue label) at the beginning, and when another small top appears after it, it becomes a gray small top.
Regarding the limit on the number of bars by TradingView:
The logic of calculating the small top and the small bottom is relatively simple, it does not need to use future data, and the amount of calculation is small, so it is the default TradingView limit. (The limit is 2000 in the script, but in practice TradingView won't let us use such many bars)
The calculation logic of the big top and the big bottom is more complicated, and it needs to use future data. The calculation amount is very large, and only the most recent 150 bars can be calculated. The user can try to enter a larger value, but TradingView may report an error. If an error occurs, please enter a lower value. When loading for the first time, it takes a long time, which is indeed not common in general TradingView scripts, but please be patient.
The next version may add the alert function, that is: when the top and bottom appear, the alert function is called. But this only applies to small tops and bottoms, because when the alert is sent,, none of us know what data will be in the future.
Introduction in Chinese:
脚本名称:缠论笔
对于左侧交易者来说,如何准确地找到底部和顶部是非常重要的,方法也是多样的,之前已经分享了三根bar组成的底分型脚本,但这种底分型生效的范围较小,缺乏全局视野。所以,这次的脚本分享的是“缠论笔”,它能帮我们在全局尺度内确定底部和顶部。
不过,此脚本使用的是近似还原的方法,而非缠论的正统解法。
粗略找到底和顶之后,如何确定这就是符合缠论定义的底和顶呢?
“近似还原”的主要2个方法是:
(1)顶部与底部的价差足够大,即:顶部的最低价>底部的最高价。
(2)顶部之前的股价有持续的上涨,即:最高点和最低点都在上涨。同理,底部之前的股价有持续的下跌,即:最高点和最低点都在下跌。
这个脚本的一大缺点是:需要使用将来的数据。这是因为:
当短期内有多个bar都符合顶部定义时,只使用最后一个bar,定义为大顶。所以,当你看到一个顶部出现时,你不知道这不是真的顶部,因为它之后可能还会出现符合顶部定义的bar。
在图上显示时,符合顶部定义的bar有灰色的label,这是小顶。每一个小顶,刚开始时都是大顶(有蓝色的label),直到它之后又有小顶出现时,它就变成了灰色的小顶。
关于TradingView对bar数的限制:
计算小顶和小底的逻辑比较简单,不需要使用将来的数据,计算量较小,所以是默认的TradingView限制。(脚本中限制为2000,但实际上TradingView不会让我们使用那么多bar)
大顶和大底的计算逻辑比较复杂,需要使用将来的数据,计算量非常大,大约只能计算最近150根bar。用户可以尝试输入更大的数值,但TradingView可能会报错。若遇报错,则请输入更低的数值。初次加载时,需要等待较长时间,这确实在一般的TradingView脚本中并不常见,但还是请多些耐心。
下一版可能会增加alert功能,即:当顶部和底部出现时,调用alert函数。但这只适用于小顶和小底,因为警报发出时,我们谁也不知道将来的数据。
Trading Made Easy ATR BandsAs always, this is not financial advice and use at your own risk. Trading is risky and can cost you significant sums of money if you are not careful. Make sure you always have a proper entry and exit plan that includes defining your risk before you enter a trade.
Background:
This is my take on two relatively famous indicators that paint the colour of your candles in order to help identify trend direction and smooth out market noise. The Elder Impulse System was designed by Dr . Alexander Elder in his book Come Into My Trading Room and attempts to identify the change of trends and when these trends speed up and slow down (school.stockcharts.com). The system used a 13 period EMA and a MACD histogram, and compared each of these indicators to the previous period. In short, when both the histogram and the EMA were rising, the trend was accelerating to the upside and when both were falling, accelerating to the downside. Conversely, when the indicators were not in alignment, say the MACD falling but the EMA rising, it signaled a slowing down of momentum. The downside of this indicator is that it be can rather jumpy, focusing on a short period EMA for 50% of its calculation, leaving a trader to potentially sit on the sidelines during opportune pull backs to enter winning positions, or exit early when there is still a lot of gas left in the tank.
A similar concept has been employed by John Carter and his organization, SimplerTrading, with the 10X bars indicator. However, here they use the famous Directional Movement Index (DMI) created by J. Welles Wilder as the basis for their bars (www.simplertrading.com). John Carter states that the use of this indicator can lead to getting in earlier on more, bigger, and faster setups. The downside of this indicator is the reliance on the ADX calculations to keep you out of rangebound trades. Anyone who is familiar with the DMI system understands it has unparalleled ability to identify longer term trends, but it is also quite slow, leaving the trader to miss a good portion of the initial runup due to this ADX portion that is very slow to get moving and also slow to signal exits.
In short, both of these systems are designed with one thing in mind: keeping the trader on the right side of the move --- but both suffer from the same issue but on opposite sides of the spectrum. One is too fast and the other is too slow. Ultimately, leaving profits on the table for the trader when such a situation could be avoided.
Here I present my own take on these and have made the “Trading Made Easy ATR Bands”. I name it this because trading is much easier when you trade with the prevailing trend, and this system identifies these periods quite effectively while doing a better job of handling the speed flux of most markets. The base formula uses the DMI as its main calculation and the relationship between the DMI+ and DMI- lines, respectively, like the 10X bars. While the trader can investigate these on their own to understand these more intimately, essentially the DMI+ and DMI- lines are calculating the highs and lows respectively of each bar compared to a period in the past and smoothed with the true range, a measurement of volatility . What this ultimately presents is a picture of uptrends and downtrends, where price is making consistently more highs or more lows over a period of time. Where I have modified this relative to the 10X bars is I have ignored the ADX calculations. Further, values over 25 have been discussed as “strong” momentum, in my calculations, I have sped this up to 20 to get a trader into the move earlier. Second, I have added an additional calculation based around the 21-period exponential moving average calculated against its previous output. This then, like the Elder Impulse System, has two forms of market momentum as its calculation to smooth out noise, but has the benefit of being less jumpy, like the original 10X bar system. I have added a series of exponential moving averages following the Fibonacci sequence from 8-144 as a system of dynamic support and resistance showing the sentiment of both the shorter and longer term market participants. Last, I have added a series of Keltner Channels , from 1X-4X, that encompass the 21 period EMA as a base line. The 21 EMA is a stable in all of John Carter’s work and I do believe he is correct that the market is mostly structured around this line, since it roughly approximates one month of trading data. It is not uncommon to see price expand and contract back to this line over and over again.
Trade Signals:
Strong Bullish Momentum – The system will generate a green bar when the DMI+ line is over the DMI- line, the DMI+ line is equal or greater than 20 and the 21 EMA has increased relative to its last close.
Weak Bullish Momentum – The system will generate a blue bar in several scenarios. First, when the DMI+ line is over the DMI- line but the DMI+ line is not over 20 and the EMA is equal or less than the previous close. It will also print a blue bar if either the DMI or the EMA are not aligned, such as the DMI+ is over the DMI- but not over 20 but the EMA has risen compared to the last bar. Last, it will also print a blue bar if the DMI- is over the DMI+ but the EMA is rising.
Strong Bearish Momentum – The system will generate a red bar when the DMI- line is over the DMI+ line, the DMI- line is equal or greater than 20, and the 21 EMA has fallen relative to its last close.
Weak Bearish Momentum – The system will generate an orange bar in several scenarios. First when the DMI- line is over the DMI+ line but the DMI- line is not over 20 and the EMA is equal or greater than the last bar. It will also print an orange bar if either the DMI or the EMA are not aligned, such as the DMI- is over the DMI+ but not over 20 but the EMA has fallen. Lastly, it will also print an orange bar if the DMI+ line is over the DMI- and the EMA has fallen relative to the last bar.
Uses:
1) Like the Elder Impulse System and 10X Bar systems, these should be used as trade filters only.. It is in the trader’s best interest to trade with the trends and these bars identify these periods but may not always generate the most opportune time to enter a market. For instance, trying to short a market when the market is in a phase of Strong Bullish Momentum would not be wise, and vice versa with trying to open long positions when the market is exhibiting Strong Bearish Momentum. Use multiple forms of evidence to confirm the signals shown before entering any trade and to not take these signals on their without confluence of ideas. A viable system could use the Elder Triple Screen System (for reference, see this decent write up --- www.dailyforex.com) with the Trading Made Easy Bands as your “Tide” or longer term filter, and a further trading plan to establish an entry on a short time frame pull back.
2) Interim Trend Exhaustion – Keltner channels work as moving standard deviations from the 21 EMA . 3X multipliers will encompass 99.7% of price and 4X will encompass 99.9% of price away from the 21 EMA . During a trend it would be a good idea to lock in partial profits when price reaches these outer extrema as it is very highly probable that a retracement back to the mean is approaching. While not part of the system, and not recommended to be used by this system, a mean reversion trader could in theory look for reversals at these extrema points and trade a mean reversion strategy back to the 21EMA, but is a much riskier trade with lower probability of success. A trend trader should look to enter trades when a signal is given within the 1ATR or 2ATR zone as this is when price has not really started accelerating yet and is likely to see continued momentum in that direction.
logLibrary "log"
A Library to log and display messages in a table, with different colours.
The log consists of 3 columns:
Bar Index / Message / Log
Credits
QuantNomad - for his idea on logging messages as Error/Warnings and displaying the color based on the type of the message
setHeader(_t, _location, _header1, _header2, _header3, _halign, _valign, _size) Sets the header for the table to be used for displaying the logs.
Parameters:
_t : table, table to be used for printing
_location : string, Location of the table.
_header1 : string, the name to put into the Index Queue Header. Default is 'Bar #'
_header2 : string, the name to put into the Message Queue Header. Default is 'Message'
_header3 : string, the name to put into the Log Queue Header. Default is 'Log'
_halign : string, the horizontal alignment of header. Options - Left/Right/Center
_valign : string, the vertical alignment of header. Options - Top/Bottom/Center
_size : string, the size of text of header. Options - Tiny/Small/Normal/Large/Huge/Auto
Returns: Void
initHeader(_location, _rows, _header1, _header2, _header3, _halign, _valign, _size, _frameBorder, _cellBorder) Creates the table for logging.
3 columns will be displayed.
Bar Index Q / Message Q / Log Q
Parameters:
_location : string, Location of the table.
_rows : int, table size, excluding the header. Default value is 40.
_header1 : string, the name to put into the Index Queue Header. Default is 'Bar #'
_header2 : string, the name to put into the Message Queue Header. Default is 'Message'
_header3 : string, the name to put into the Log Queue Header. Default is 'Log'
_halign : string, the horizontal alignment of header. Options - Left/Right/Center
_valign : string, the vertical alignment of header. Options - Top/Bottom/Center
_size : string, the size of text of header. Options - Tiny/Small/Normal/Large/Huge/Auto
_frameBorder : int, table Frame BorderWidth. Default value is 1.
_cellBorder : int, table Cell Borders Width, Default value is 2.
Returns: table
init(_rows) Initiate array variables for logging.
Parameters:
_rows : int, table size, excluding the header. Default value is 40.
Returns: tuple, arrays - > error code Q, bar_index Q, Message Q, Log Q
log(_ec, _idx, _1, _2, _m1, _m2, _code, _prefix, _suffix) logs a message to logging queue.
Parameters:
_ec : int , Error/Codes (1-7) for colouring.
Default Colour Code is 1 - Gray, 2 - Orange, 3 - Red, 4 - Blue, 5 - Green, 6 - Cream, 7 - Offwhite
_idx : int , bar index Q. The index of current bar is logged automatically
you can add before and after this index value, whatever you choose to, via the _prefix and _suffix variables.
_1 : string , Message Q.
_2 : string , Log Q
_m1 : string, message needed to be logged to Message Q
_m2 : string, detailed log needed to be logged to Log Q
_code : int, Error/Code to be assigned. Default code is 1.
_prefix : string, prefix to Bar State Q message
_suffix : string, suffix to Bar State Q message
Order of logging would be Bar Index Q / Message Q / Log Q
Returns: void
resize(_ec, _idx, _1, _2, _rows) Resizes the all messaging queues.
a resize will delete the existing table, so a new header/table has to be initiated after the resize.
This is because pine doesnt allow changing the table dimensions once they have been recreated.
If size is decreased then removes the oldest messages
Parameters:
_ec : int , Error/Codes (1-7) for colouring.
_idx : int , bar index Q.
_1 : string , Message Q.
_2 : string , Log Q
_rows : int, the new size needed for the queue. Default value is 40.
Returns: void
print(_t, _ec, _idx, _1, _2, halign, halign, _size) Prints Bar Index Q / Message Q / Log Q
Parameters:
_t : table, table to be used for printing
_ec : int , Error/Codes (1-7) for colouring.
Default Colour Code is 1 - Gray, 2 - Orange, 3 - Red, 4 - Blue, 5 - Green, 6 - Cream, 7 - Offwhite
_idx : int , for bar index Q.
_1 : string , Message Q.
_2 : string , Log Q
halign : string, the horizontal alignment of all message column. Options - Left/Right/Center
halign : string, the vertical alignment of all message column. Options - Top/Bottom/Center
_size : string, the size of text across the table, excepr the headers. Options - Tiny/Small/Normal/Large/Huge/Auto
Returns: void
printx(_t, _idx, _1, _2, _ec, _fg, _bg, _halign, _valign, _size) Prints Bar Index Q / Message Q / Log Q, but with custom options to format the table and colours
Parameters:
_t : table, table to be used for printing
_idx : int , for bar index Q.
_1 : string , Message Q.
_2 : string , Log Q
_ec : int , Error/Codes (1-7) for colouring.
_fg : color , Color array specifying colours for foreground. Maximum length is seven. Need not provide all seven, but atleast one. If not enough provided then last colour in the array is used for missing codes
_bg : color , Same as fg.
_halign : string, the horizontal alignment of all message column. Options - Left/Right/Center
_valign : string, the vertical alignment of all message column. Options - Top/Bottom/Center
_size : string, the size of text across the table, excepr the headers. Options - Tiny/Small/Normal/Large/Huge/Auto
Returns: void
flush(_t, _idx, _1, _2, _ec) Clears queues of existing messages, filling with blanks and 0
Parameters:
_t : table, table to be flushed
_idx : int , for bar index Q.
_1 : string , Message Q.
_2 : string , Log Q
_ec : int , Error/Codes (1-7) for colouring.
Returns: void.
erase(_idx, _1, _2, _ec) Deletes message queue and the table used for displaying the queue
Parameters:
_idx : int , for bar index Q.
_1 : string , Message Q.
_2 : string , Log Q
_ec : int , Error/Codes (1-7) for colouring.
Returns: void
Elder Impulse System + ATR BandsDisregard the above chart, I am not sure why it isn't showing the one I want, which is linked below:
This is as far as I can tell the closest representation to Dr. Alexander Elder's updated "Elder Impulse System" that has added ATR-volatility bands up to 3x deviations from price. I got the idea from watching this recent video (www.youtube.com) of Dr. Elder reviewing some recent trades and noticed he had updated his system from his original books. The Impulse System colour coding was inspired by AstralLoverFlow and LazyBear. ATR Bands are pre-programmed Keltner Channels with some modifications such as filing in the ATR Zones with user-selected colour bands and modifying the ATR value to better suit the volatility of the market being traded.
The script has several components, which I will detail below:
Exponential Moving Averages:
1) A 13-period EMA that is used as a staple in all of Dr. Elder's technical analysis. He uses this EMA as the basis for all of his indicators and why it is included here.
2) A 26-period EMA which can be used as a base-line of sorts to filter when to go long or when to go short. For instance, price over the 26-EMA, price is strong and the rally upwards is likely to continue, underneath it, price is weak and likely to continue downwards for a time.
Volatility Bands:
By definition these are nothing more than 3 separate Keltner Channels of a 13-period EMA each set to one additional multiplier from the moving average. This gives us a 1x, 2x, and 3x multiplier of average volatility from the 13-period EMA based on a 14-period Average True Range (ATR) reading. The ATR was chosen as it accommodates price gaps and also is the standard formula calculation in TradingView. The values of the bands cannot be adjusted but the colour coding of them can be.
Elder Impulse System:
These colour-coded bars show you the strength and direction of the current chart resolution, calculated by the slope of a 13-period EMA and the slope of a MACD histogram. These are used not as a buying or selling recommendation alone but as trend filters, as per Dr. Elder's own description of them.
Green Bars = The 13-period EMA is sloping positively and the MACD histogram is rising compared to previous bars. The trader should only consider buying/long opportunities when a green bar is most recent.
Red Bars = The 13-period EMA is sloping negatively and the MACD histogram is falling compared to previous bars. The trader should only consider selling/short opportunities when a red bar is most recent.
Blue Bars = The 13-period EMA and the MACD histogram are not aligned. One of the indicators is sloping opposite to the other indicator. These are known as indecision bars and are typically seen near the end of a previously established trend. The trader can choose to wait for either a green or red bar to shape their trading bias if they are more risk-averse while a counter-trend trader may decide to try opening a position against the currently-established trend.
How To Trade the System:
This system is unique in that it is so versatile and will fit the styles of many traders, be it trend following traders (generally the original Elder Impulse System design) or mean-reversion/counter-trend trading (the original Keltner Channel design). None of the examples below or in the chart above are financial advice and are just there for demonstration purposes only.
1) The most basic signal given would be the moving average cross up or down. A cross of the 13-EMA over the 26-EMA signals upward trend strength and the trader could look for buying opportunities. Conversely, the 13-EMA under the 26-EMA shows downward trend strength and the trader could look for selling opportunities.
2) Following the Elder Impulse system in conjunction with the EMAs. Look for long opportunities when a green bar is printed and price is over both of the 13- and 26-period EMAs. Look for short opportunities when a red bar is printed and price is below both of the 13- and 26-period EMAs. Keep in mind this does not necessarily need a moving average cross to be viable, a green or red bar over both EMAs is a valid signal in this system, usually. Examine price more closely for better entry signals when a blue bar is printed and price is either above or below both EMAs if you are a trend trader. This is how Dr. Elder originally intended the system to be used in conjunction with his famous Triple Screen Trading System. I am not going into detail here as it is a deep subject but I would suggest an interested trader to examine this Triple Screen System further as it is widely accepted as a strong strategy.
3) Mean Reversion and Counter-Trend Trading. Dr. Elder mentions that the zone between the two EMAs is called the Value Zone. A mean reversion trader could look for buying opportunities if price has generally been in an uptrend and falls back to value, conversely, they could look for shorting opportunities if price has generally been in a downtrend and rises back to value. These are your very basic pull backs found in trends that create your higher lows in an uptrend or your lower highs in a downtrend. A mean reversion/scalper trader may also look to use the upper and lower most ATR bands as an indication of price being overbought or oversold and could look to enter a counter-trend trade here once a blue indecision bar is printed and to ride that move back down to the Value Zone.
Taking Profits and Risk Management
This system again is very versatile and will fit a wide range of trading styles. It has built in take profit levels and risk management depending on your style of trading.
1a) In original Triple Screen Trading (and the original Elder Impulse system), a trader was to place a buy order one tick above a newly printed green bar with a stop loss one tick below the most recent 2-day low, and vice-versa for red bars on short selling. as long as other criteria were met, that I will not go into. It is all over YouTube and in his books and on Investopedia if you want more information. The general idea is to continue the trend in the direction if price is strong and you are bought into that move with a close stop, or if price falls back a little bit, you can get in at a better price. This would be a system typically better suited to a scalper.
1b) The updated risk management according to the above video is to place a stop loss at least 2ATR away from price. These bands already have calculated these values so a trader can place a stop one tick below the 2 or even 3ATR zones depending on their risk appetite. This is assuming you have already received a strong buy signal based on the system you follow. This would be a system typically better suited to a trend-trader.
2a) Taking profits if you are a trend trader has several possibilities. The first, as Dr. Elder suggests, is to place a price target 2ATR values away from your entry giving you approximately a 1:1 risk-reward ratio.
2b) The second possibility if the trade is successful is to ride the trend upwards until a blue bar is printed, suggesting indecision in the market. A modified version of this that could let a winning trade run longer is to wait for the price to close under the 13-EMA in fast markets, or close under the 26-EMA in slightly slower markets to maximize potential winnings.
2c) A scalper trader may wish to have a target at either the value zone if they are playing an extended buy/short back to the mean, or if they are being at the mean, to sell or cover when price extends back out to the 2x or 3x zone.
3) Trend traders can additionally use the ATR zones as a sort of safety guidelines for entering a trade. Anything within the 1ATR zone is typically a safer entry as the market is less volatile at this time. Entering when price has gone into the 2ATR zone is signaled as a strong momentum move and can signal a stronger move in the direction of the current closing bar. While not always the case, it is suggested by Dr. Elder to not enter trend trades at the 3ATR zone as this is where you will be likely looking for a counter-trend retracement back to value and a trader entering here in the direction of the trade has a higher chance of being stopped out or not getting in at the best possible price.
Joseph Nemeth Heiken Ashi Renko MTF StrategyFor Educational Purposes. Results can differ on different markets and can fail at any time. Profit is not guaranteed. This only works in a few markets and in certain situations. Changing the settings can give better or worse results for other markets.
Nemeth is a forex trader that came up with a multi-time frame heiken ashi based strategy that he showed to an older audience crowd on a speaking event video. He seems to boast about his strategy having high success results and makes an astonishing claim that looking at heiken ashi bars instead of regular candlestick bar charts can show the direction of the trend better and simpler than many other slower non-price based indicators. He says pretty much every indicator is about the same and the most important indicator is price itself. He is pessimistic about the markets and seems to think it is rigged and there is a sort of cabal that created rules to favor themselves, such as the inability of traders to hedge in one broker account, and that to win you have to take advantage of the statistics involved in the game. He believes fundamentals, chart patterns such as cup and handle and head and shoulders, and fibonacci numbers don't matter, only price matters. The foundation of his trading strategy is based around heiken ashi bars because they show a statistical pattern that can supposedly be taken advantage of by them repeating around seventy or so percent of the time, and then combines this idea with others based on the lower time frames involved.
The first step he uses is to identify the trend direction in the higher time frame(daily or 4 hourly) using the color of the heiken ashi bar itself. If it is green then take only long position after the bar completes, if it is red then take only short position. Next, on a lower time frame(1 hour or 30 minutes) look for the slope of the 20 exponential moving average to be sloping upward if going long or the slope of the ema to be sloping downward if going short(the price being above the moving average can work too if it's too hard to visualize the slope). Then look for the last heiken ashi bar, similarly to the first step, if it is green take long position, if it is red take short position. Finally the entry indicator itself will decide the entry on the lowest time frame. Nemeth recommends using MACD or CCI or possibly combine the two indicators on a 5 min or 15 min or so time frame if one does not have access to renko or range bars. If renko bars are available, then he recommends a 5 or 10 tick bar for the size(although I'm not sure if it's really possible to remove the time frame from renko bars or if 5 or 10 ticks is universal enough for everything). The idea is that renko bars paint a bar when there is price movement and it's important to have movement in the market, plus it's a simple indicator to use visually. The exit strategy is when the renko or the lowest time frame indicator used gives off an exit signal or if the above conditions of the higher time frames are not being met(he was a bit vague on this). Enter trades with only one-fifth of your capital because the other fifths will be used in case the trades go against you by applying a hedging technique he calls "zero zone recovery". He is somewhat vague about the full workings(perhaps because he uses his own software to automate his strategy) but the idea is that the second fifth will be used to hedge a trade that isn't going well after following the above, and the other fifths will be used to enter on another entry condition or if the other hedges fail also. Supposedly this helps the trader always come out with a profit in a sort of bushido-like trading tactic of never accepting defeat. Some critics argue that this is simply a ploy by software automation to boost their trade wins or to sell their product. The other argument against this strategy is that trading while the heiken ashi bar has not completed yet can jack up the backtest results, but when it comes to trading in real time, the strategy can end up repainting, so who knows if Nemeth isn't involving repainting or not, however he does mention the trades are upon completion of the bar(it came from an audience member's question). Lastly, the 3 time frames in ascending or descending fashion seem to be spaced out by about factors of 4 if you want to trade other time frames other than 5/15min,30min/1hour, or 4hour/daily(he mentioned the higher time frame should be atleast a dozen times higher than the lower time frame).
Personally I have not had luck getting the seventy+ percent accuracy that he talks about, whether in forex or other things. I made the default on renko bars to an ATR size 1 setting because it looks like the most universal option if the traditional mode box size is too hard to guess, and I made it so that you can switch between ATR and Traditional mode just in case. I don't think the strategy repaints because I think TV set a default on the multi-time frame aspects of their code to not re-paint, but I could be wrong so you might want to watch out for that. The zero zone recovery technique is included in the code but I commented it out and/or remove it because TV does not let you apply hedging properly, as far as I know. If you do use a proper hedging strategy with this, you'll find a very interesting bushido type of trading style involved with the Japanese bars that can boost profits and win rates of around possibly atleast seventy percent on every trade but unfortunately I was not able to test this part out properly because of the limitation on hedging here, and who knows if the hedging part isn't just a plot to sell his product. If his strategy does involve the repainting feature of the heiken ashi bars then it's possible he might have been preaching fools-gold but it's hard to say because he did mention it is upon completion of the bars. If you find out if this strategy works or doesn't work or find out a good setting that I somehow didn't catch, please feel free to let me know, will gladly appreciate it. We are all here to make some money!
Bitcoin Block Height (Total Blocks)Bitcoin Block Height by RagingRocketBull 2020
Version 1.0
Differences between versions are listed below:
ver 1.0: compare QUANDL Difficulty vs Blockchain Difficulty sources, get total error estimate
ver 2.0: compare QUANDL Hash Rate vs Blockchain Hash Rate sources, get total error estimate
ver 3.0: Total Blocks estimate using different methods
--------------------------------
This indicator estimates Bitcoin Block Height (Total Blocks) using Difficulty and Hash Rate in the most accurate way possible, since
QUANDL doesn't provide a direct source for Bitcoin Block Height (neither QUANDL:BCHAIN, nor QUANDL:BITCOINWATCH/MINING).
Bitcoin Block Height can be used in other calculations, for instance, to estimate the next date of Bitcoin Halving.
Using this indicator I demonstrate:
- that QUANDL data is not accurate and differ from Blockchain source data (industry standard), but still can be used in calculations
- how to plot a series of data points from an external csv source and compare it with another source
- how to accurately estimate Bitcoin Block Height
Features:
- compare QUANDL Difficulty source (EOD, D1) with external Blockchain Difficulty csv source (EOD, D1, embedded)
- show/hide Quandl/Blockchain Difficulty curves
- show/hide Blockchain Difficulty candles
- show/hide differences (aqua vertical lines)
- show/hide time gaps (green vertical lines)
- count source differences within data range only or for the whole history
- multiply both sources by alpha to match before comparing
- floor/round both matched sources when comparing
- Blockchain Difficulty offset to align sequences, bars > 0
- count time gaps and missing bars (as result of time gaps)
WARNING:
- This indicator hits the max 1000 vars limit, adding more plots/vars/data points is not possible
- Both QUANDL/Blockchain provide daily EOD data and must be plotted on a daily D1 chart otherwise results will be incorrect
- current chart must not have any time gaps inside the range (time gaps outside the range don't affect the calculation). Time gaps check is provided.
Otherwise hardcoded Blockchain series will be shifted forward on gaps and the whole sequence become truncated at the end => data comparison/total blocks estimate will be incorrect
Examples of valid charts that can run this indicator: COINBASE:BTCUSD,D1 (has 8 time gaps, 34 missing bars outside the range), QUANDL:BCHAIN/DIFF,D1 (has no gaps)
Usage:
- Description of output plot values from left to right:
- c_shifted - 4x blockchain plotcandles ohlc, green/black (default na)
- diff - QUANDL Difficulty
- c_shifted - Blockchain Difficulty with offset
- QUANDL Difficulty multiplied by alpha and rounded
- Blockchain Difficulty multiplied by alpha and rounded
- is_different, bool - cur bar's source values are different (1) or not (0)
- count, number of differences
- bars, total number of bars/data points in the range
- QUANDL daily blocks
- Blockchain daily blocks
- QUANDL total blocks
- Blockchain total blocks
- total_error - difference between total_blocks estimated using both sources as of cur bar, blocks
- number_of_gaps - number of time gaps on a chart
- missing_bars - number of missing bars as result of time gaps on a chart
- Color coding:
- Blue - QUANDL data
- Red - Blockchain data
- Black - Is Different
- Aqua - number of differences
- Green - number of time gaps
- by default the indicator will show lots of vertical aqua lines, 138 differences, 928 bars, total error -370 blocks
- to compare the best match of the 2 sources shift Blockchain source 1 bar into the future by setting Blockchain Difficulty offset = 1, leave alpha = 0.01 =>
this results in no vertical aqua lines, 0 differences, total_error = 0 blocks
if you move the mouse inside the range some bars will show total_error = 1 blocks => total_error <= 1 blocks
- now uncheck Round Difficulty Values flag => some filled aqua areas, 218 differences.
- now set alpha = 1 (use raw source values) instead of 0.01 => lots of filled aqua areas, 871 differences.
although there are many differences this still doesn't affect the total_blocks estimate provided Difficulty offset = 1
Methodology:
To estimate Bitcoin Block Height we need 3 steps, each step has its own version:
- Step 1: Compare QUANDL Difficulty vs Blockchain Difficulty sources and estimate error based on differences
- Step 2: Compare QUANDL Hash Rate vs Blockchain Hash Rate sources and estimate error based on differences
- Step 3: Estimate Bitcoin Block Height (Total Blocks) using different methods in the most accurate way possible
QUANDL doesn't provide block time data, but we can calculate it using the Hash Rate approximation formula:
estimated Hash rate/sec H = 2^32 * D / T, where D - Difficulty, T - block time, sec
1. block time (T) can be derived from the formula, since we already know Difficulty (D) and Hash Rate (H) from QUANDL
2. using block time (T) we can estimate daily blocks as daily time / block time
3. block height (total blocks) = cumulative sum of daily blocks of all bars on the chart (that's why having no gaps is important)
Notes:
- This code uses Pinescript v3 compatibility framework
- hash rate is in THash/s, although QUANDL falsely states in description GHash/s! THash = 1000 GHash
- you can't read files, can only embed/hardcode raw data in script
- both QUANDL and Blockchain sources have no gaps
- QUANDL and Blockchain series are different in the following ways:
- all QUANDL data is already shifted 1 bar into the future, i.e. prev day's value is shown as cur day's value => Blockchain data must be shifted 1 bar forward to match
- all QUANDL diff data > 1 bn (10^12) are truncated and have last 1-2 digits as zeros, unlike Blockchain data => must multiply both values by 0.01 and floor/round the results
- QUANDL sometimes rounds, other times truncates those 1-2 last zero digits to get the 3rd last digit => must use both floor/round
- you can only shift sequences forward into the future (right), not back into the past (left) using positive offset => only Blockchain source can be shifted
- since total_blocks is already a cumulative sum of all prev values on each bar, total_error must be simple delta, can't be also int(cum()) or incremental
- all Blockchain values and total_error are na outside the range - move you mouse cursor on the last bar/inside the range to see them
TLDR, ver 1.0 Conclusion:
QUANDL/Blockchain Difficulty source differences don't affect total blocks estimate, total error <= 1 block with avg 150 blocks/day is negligible
Both QUANDL/Blockchain Difficulty sources are equally valid and can be used in calculations. QUANDL is a relatively good stand in for Blockchain industry standard data.
Links:
QUANDL difficulty source: www.quandl.com
QUANDL hash rate source: www.quandl.com
Blockchain difficulty source (export data as csv): www.blockchain.com
Price Action and 3 EMAs Momentum plus Sessions FilterThis indicator plots on the chart the parameters and signals of the Price Action and 3 EMAs Momentum plus Sessions Filter Algorithmic Strategy. The strategy trades based on time-series (absolute) and relative momentum of price close, highs, lows and 3 EMAs.
I am still learning PS and therefore I have only been able to write the indicator up to the Signal generation. I plan to expand the indicator to Entry Signals as well as the full Strategy.
The strategy works best on EURUSD in the 15 minutes TF during London and New York sessions with 1 to 1 TP and SL of 30 pips with lots resulting in 3% risk of the account per trade. I have already written the full strategy in another language and platform and back tested it for ten years and it was profitable for 7 of the 10 years with average profit of 15% p.a which can be easily increased by increasing risk per trade. I have been trading it live in that platform for over two years and it is profitable.
Contributions from experienced PS coders in completing the Indicator as well as writing the Strategy and back testing it on Trading View will be appreciated.
STRATEGY AND INDICATOR PARAMETERS
Three periods of 12, 48 and 96 in the 15 min TF which are equivalent to 3, 12 and 24 hours i.e (15 min * period / 60 min) are the foundational inputs for all the parameters of the PA & 3 EMAs Momentum + SF Algo Strategy and its Indicator.
3 EMAs momentum parameters and conditions
• FastEMA = ema of 12 periods
• MedEMA = ema of 48 periods
• SlowEMA = ema of 96 periods
• All the EMAs analyse price close for up to 96 (15 min periods) equivalent to 24 hours
• There’s Upward EMA momentum if price close > FastEMA and FastEMA > MedEMA and MedEMA > SlowEMA
• There’s Downward EMA momentum if price close < FastEMA and FastEMA < MedEMA and MedEMA < SlowEMA
PA momentum parameters and conditions
• HH = Highest High of 48 periods from 1st closed bar before current bar
• LL = Lowest Low of 48 periods from 1st closed bar from current bar
• Previous HH = Highest High of 84 periods from 12th closed bar before current bar
• Previous LL = Lowest Low of 84 periods from 12th closed bar before current bar
• All the HH & LL and prevHH & prevLL are within the 96 periods from the 1st closed bar before current bar and therefore indicative of momentum during the past 24 hours
• There’s Upward PA momentum if price close > HH and HH > prevHH and LL > prevLL
• There’s Downward PA momentum if price close < LL and LL < prevLL and HH < prevHH
Signal conditions and Status (BuySignal, SellSignal or Neutral)
• The strategy generates Buy or Sell Signals if both 3 EMAs and PA momentum conditions are met for each direction and these occur during the London and New York sessions
• BuySignal if price close > FastEMA and FastEMA > MedEMA and MedEMA > SlowEMA and price close > HH and HH > prevHH and LL > prevLL and timeinrange (LDN&NY) else Neutral
• SellSignal if price close < FastEMA and FastEMA < MedEMA and MedEMA < SlowEMA and price close < LL and LL < prevLL and HH < prevHH and timeinrange (LDN&NY) else Neutral
Entry conditions and Status (EnterBuy, EnterSell or Neutral)(NOT CODED YET)
• ENTRY IS NOT AT THE SIGNAL BAR but at the current bar tick price retracement to FastEMA after the signal
• EnterBuy if current bar tick price <= FastEMA and current bar tick price > prevHH at the time of the Buy Signal
• EnterSell if current bar tick price >= FastEMA and current bar tick price > prevLL at the time of the Sell Signal
Combo Detector (The Strat)Description:
The Combo Detector (The Strat) identifies sequences of bar types on a higher timeframe (HTF) according to a user-defined combo pattern. Bar types are classified as:
1 (Inside bar): High ≤ previous high and Low ≥ previous low
2 (Directional bar): Neither inside nor outside
3 (Outside bar): High > previous high and Low < previous low
The indicator matches the combo pattern from most recent bar backward and highlights occurrences with optional labels.
For combos ending in 2-2, the indicator can further classify the pattern as:
Reversal: First and third bars exceed the second bar in the same direction (highs or lows)
Continuation: The second bar’s high or low is between the extremes of the first and third bars
Inputs:
Detection Timeframe: Choose the higher timeframe to analyze (e.g., 60, 240, 4H, 12H)
Strat Combo: Define a pattern of bar types (e.g., 3-2-2, 322, 122). Hyphens are optional; labels always display hyphenated.
Include Forming Candle: If enabled, the currently forming bar is included in detection; otherwise only confirmed bars are used.
Show Labels: Toggle to display labels on chart (turn OFF for clean charts).
Pattern Option for 22: Choose "All", "Reversal", or "Continuation" for Strat combos ending in 2-2.
Usage Notes:
Intended as a research and pattern-detection tool; not a trading signal.
Labels and colors are customizable for visual reference.
An optional alert condition is provided for informational awareness only and is not intended as a trading signal.
The bar classification framework aligns with the widely known “The Strat” methodology popularized by Rob Smith; this indicator is an independent, unaffiliated research tool.
Al Brooks_BarCount_Start from Opening🔹 Key Features
Counts from the RTH open every trading day
Stocks: 09:30–16:00 (New York Time)
Futures: 08:30–15:15 (Chicago Time)
Automatically detects stocks vs futures
Always displays the first bar of the session
Optional display every N bars to reduce chart clutter
Custom highlight rules
Highlight specific bar numbers (e.g. bar 18)
Highlight bar multiples (e.g. every 12 bars)
Fully customizable label size and colors
🔹 Why count from the open?
In Al Brooks’ Price Action framework:
The first 30–60 bars after the open often define the day’s structure
Trends, failed breakouts, and trading ranges frequently align with specific bar counts
Counting across overnight or pre-market sessions can distort intraday analysis
👉 This indicator resets precisely at the RTH open, keeping the count aligned with real trading decisions.
🔹 Inputs Overview
Display at every X bars
Show bar numbers at fixed intervals (bar 1 is always shown)
Count From RTH Open (Session Filter)
Limits counting strictly to regular trading hours (recommended ON)
Special Color Multiple
Highlights every N-th bar
Special Number 1 / 2
Highlights specific bar numbers
Label Size / Colors
Visual customization options
🔹 Markets Supported
✅ US index futures (ES, MES, NQ, MNQ, GC, CL – RTH)
✅ US stocks and indices (NYSE / NASDAQ)
❗ Not intended for 24h markets (e.g. crypto)
🔹 Usage Tips (Al Brooks Style)
Observe price behavior around early session bars (5–10)
Watch key counts like 12, 18, 24 for acceleration or failure
Combine with EMAs, trend lines, and trading-range highs/lows
Timeframe-Independent Anchored VWAPAn anchored VWAP (Volume Weighted Average Price) that produces identical values (down to the tick!) across different timeframes (unlike, for example, TradingView's built-in Anchored VWAP).
Advantages
This indicator calculates identical values whether you view it on 1m, 5m, 15m, or any other timeframe within reasonable ranges. Even challenging non-integer timeframe ratios like calculating on 2m while viewing on 3m are handled perfectly. In High or Low mode, VWAP will anchor precisely at the selected candle's high/low. As usual for AVWAP, up to 3 standard deviation bands are supported.
How to Use
Setting the Anchor: When the indicator is added, select your anchor time. This is typically placed at a significant swing high/low or session open.
Source Selection: Choose whether to anchor from High, Low, or Close price.
Calculation Timeframe: Select the timeframe used for VWAP calculation.
For intraday trading (1m-1H charts): Just keep the default setting (1m)
For swing trading (4H-D charts): Use 5m or 15m calculation timeframe
For position trading (D-W charts): Use 1H calculation timeframe
Important: Lower calculation timeframes provide more precise data but may hit Pine Script's bar limit on very long timeframes
Standard Deviation Bands: Enable additional band sets as needed for your trading style.
Technical Implementation
The indicator achieves timeframe independence through the following algorithm:
Lower Timeframe Sampling: Uses Pine Script's request.security_lower_tf() to retrieve bar data at the specified calculation timeframe, regardless of the viewing timeframe. This provides consistent data resolution across all chart timeframes.
Anchor Detection: Scans the lower timeframe data to identify the exact bar containing the selected anchor price. The algorithm handles both simple cases (where anchor falls on a complete bar) and complex cases (where anchor falls within a split bar in non-integer timeframe ratios like calculating on 2m while viewing on 3m).
FIFO Buffer Management: Maintains a First-In-First-Out buffer of lower timeframe bars. On each chart bar:
Adds new lower timeframe bars to the buffer
Processes exactly one period worth of bars (matching the viewing timeframe)
Removes processed bars from the buffer
This approach ensures consistent calculation regardless of viewing timeframe.
First Bar Initialization: On the anchor bar, processes only the single anchor bar to ensure the VWAP starts exactly at the anchor price. Subsequent bars process the full period, maintaining mathematical accuracy.
VWAP Calculation: Applies the standard volume-weighted average price formula:
VWAP = Σ(Price × Volume) / Σ(Volume)
StdDev = √(Σ(Price² × Volume) / Σ(Volume) - VWAP²)
All calculations accumulate from the anchor point forward.
Visual Continuity: For edge cases where the anchor falls in an incomplete bar (e.g., calculating on 2m while viewing on 3m), displays the anchor price as a visual placeholder until the actual calculation begins on the next bar. This ensures the line always starts visually at the anchor point.
Red Bull Wings [JOAT]RED BULL WINGS - Bullish-Only Institutional Overlay
Introduction and Purpose
RED BULL WINGS is an open-source overlay indicator that combines five distinct bullish detection methods into a single composite scoring system. The core problem this indicator solves is that individual bullish signals (patterns, volume, zones, trendlines) often disagree or fire in isolation. A bullish engulfing pattern means little if volume is weak and price is far from support. Traders need confluence across multiple dimensions to identify high-probability setups.
This indicator addresses that by scoring each bullish component separately, then combining them into a weighted WINGS score (0-100) that reflects overall bullish conviction. When multiple components align, the score rises; when they disagree, the score stays low.
Why These Five Modules Work Together
Each module measures a different aspect of bullish market structure:
1. Module A - Bullish Candlestick Engine - Detects classic reversal patterns (engulfing, marubozu, hammer, 3-bar cluster). These patterns identify WHERE buyers are stepping in.
2. Module B - PVSRA Volume Climax - Measures spread x volume to detect institutional participation. This tells you WHETHER smart money is involved.
3. Module C - Demand Zone Detection - Identifies and tracks order block zones where buyers previously overwhelmed sellers. This shows you WHERE institutional support exists.
4. Module D - Trendline Channel - Builds dynamic support/resistance from pivot points. This reveals the STRUCTURE of the current trend.
5. Module E - Ichimoku Assist - Optional filter using Tenkan/Kijun cross, cloud position, and Chikou confirmation. This provides TREND PERMISSION context.
The combination works because:
Patterns alone can fail without volume confirmation
Volume alone means nothing without price structure context
Zones alone are static without pattern/volume triggers
Trendlines alone miss the micro-level entry timing
When 3+ modules agree, the probability of a valid bullish setup increases significantly
How the Calculations Work
Module A - Pattern Detection:
Bullish Engulfing - Current bullish bar completely engulfs prior bearish bar:
bool engulfingCond = isBullish() and
isBearish() and
open <= close and
close >= open and
bodySize() > bodySize()
Marubozu - Strong body with minimal wicks (body >= 1.8x average, wick ratio < 20%):
float wickRatio = candleRange() > 0 ? (upperWick() + lowerWick()) / candleRange() : 0
bool marubozuCond = isBullish() and
bodySize() >= bodySizeAvg * i_maruMult and
wickRatio < i_wickRatioMax
Hammer - Long lower wick (>= 2.5x body), close in upper third, volume confirmation:
bool hammerWick = lowerWick() >= i_hammerWickMult * bodySize()
bool hammerClose = close >= low + (candleRange() * 0.66)
bool hammerVol = volume >= i_pvsraRisingMult * volAvg
3-Bar Cluster - Three consecutive bullish closes with increasing prices and volume spike:
bool threeBarBullish = isBullish() and isBullish() and isBullish()
bool increasingCloses = close > close and close > close
bool volSpike3Bar = volume >= i_pvsraRisingMult * volAvg or
volume >= i_pvsraRisingMult * volAvg
Module B - PVSRA Volume Analysis:
Uses spread x volume to detect climax conditions:
float spreadVol = candleRange() * volume
float maxSpreadVol = ta.highest(spreadVol, ADJ_PVSRA_LOOKBACK)
bool volClimax = volume >= i_pvsraClimaxMult * volAvg or spreadVol >= maxSpreadVol
bool volRising = volume >= i_pvsraRisingMult * volAvg and volume < i_pvsraClimaxMult * volAvg
Volume only scores when the candle is bullish, preventing false signals on bearish volume spikes.
Module C - Demand Zone Detection:
Identifies zones using a two-candle structure:
// Small bearish candle A followed by larger bullish candle B
bool candleA_bearish = isBearish()
bool candleB_bullish = isBullish()
bool newZoneCond = candleA_bearish and candleB_bullish and
candleB_size >= i_zoneSizeMult * candleA_size
Zones are drawn as rectangles and tracked for retests. Score increases when price is near or inside an active zone, with bonus points for rejection candles.
Module D - Trendline Channel:
Builds dynamic channel from confirmed pivot points:
float ph = ta.pivothigh(high, i_pivotLeft, i_pivotRight)
float pl = ta.pivotlow(low, i_pivotLeft, i_pivotRight)
Pivots are stored and connected to form upper/lower channel lines. The indicator detects breakouts when price closes beyond the channel with volume confirmation.
Module E - Ichimoku Assist:
Standard Ichimoku calculations with bullish scoring:
float tenkan = (ta.highest(high, i_tenkanLen) + ta.lowest(low, i_tenkanLen)) / 2
float kijun = (ta.highest(high, i_kijunLen) + ta.lowest(low, i_kijunLen)) / 2
bool tkCross = ta.crossover(tenkan, kijun)
bool priceAboveCloud = close > cloudTop
bool chikouAbovePrice = chikou > close
Module F - WINGS Composite Score:
All module scores are combined using adjustable weights:
float WINGS_score = 100 * (nW_pattern * S_pattern +
nW_volume * S_vol +
nW_zone * S_zone +
nW_trend * S_trend +
nW_ichi * S_ichi)
Default weights: Pattern 30%, Volume 25%, Zone 20%, Trend 15%, Ichimoku 10%.
Signal Thresholds
WATCH (30-49) - Interesting bullish context forming, not yet actionable
MOMENTUM (50-74) - Strong bullish conditions, multiple modules agreeing
LIFT-OFF (75+) - High-confidence bullish confluence across most modules
WINGS Badge (Dashboard)
The right-side panel displays:
WINGS Score - Current composite score (0-100)
Pattern - Active pattern name and strength, or neutral placeholder
Volume - Normal / Rising / CLIMAX status
Zone - ACTIVE if price is near a demand zone
Trend - Channel position or BREAK status
Ichimoku - OFF / Weak / Bullish / STRONG
Status - Overall signal level (Neutral / WATCH / MOMENTUM / LIFT-OFF)
Input Parameters
Module Toggles:
Enable Bullish Patterns (true) - Toggle pattern detection
Enable PVSRA Volume (true) - Toggle volume analysis
Enable Order Blocks (true) - Toggle demand zone detection
Enable Trendlines (true) - Toggle pivot channel
Enable Ichimoku Assist (false) - Toggle Ichimoku filter (off by default for performance)
Enable Visual Effects (false) - Toggle labels, trails, and visual elements
LIVE MODE (false) - Enable intrabar signals (WARNING: signals may repaint)
Pattern Engine:
Pattern Lookback (5) - Bars for body size averaging
Marubozu Body Multiplier (1.8) - Minimum body size vs average
Hammer Wick Multiplier (2.5) - Minimum lower wick vs body
Max Wick Ratio (0.2) - Maximum wick percentage for marubozu
Volume / PVSRA:
PVSRA Lookback (10) - Period for volume averaging
Climax Multiplier (2.0) - Volume threshold for climax detection
Rising Volume Multiplier (1.5) - Volume threshold for rising detection
Order Blocks:
Zone Size Multiplier (2.0) - Minimum bullish candle size vs bearish
Zone Extend Bars (200) - How far zones project forward
Max Zones (12) - Maximum active zones displayed
Remove Zone on Close Below (true) - Delete broken zones
Trendlines:
Pivot Left/Right Bars (3/3) - Pivot detection sensitivity
Min Slope % (0.25) - Minimum trendline angle
Max Trendlines (5) - Maximum pivot points stored
Trendline Projection Bars (60) - Forward projection distance
Ichimoku:
Tenkan Length (9) - Conversion line period
Kijun Length (26) - Base line period
Senkou B Length (52) - Leading span B period
Displacement (26) - Cloud displacement
WINGS Score:
Weight: Pattern (0.30) - Pattern contribution to score
Weight: Volume (0.25) - Volume contribution to score
Weight: Zone (0.20) - Zone contribution to score
Weight: Trend (0.15) - Trendline contribution to score
Weight: Ichimoku (0.10) - Ichimoku contribution to score
Lift-Off Threshold (75) - Score required for LIFT-OFF signal
Momentum Watch Threshold (50) - Score required for MOMENTUM signal
Visuals:
Signal Cooldown (8) - Minimum bars between labels
Show WINGS Score Badge (true) - Toggle dashboard
Show Wing Combos (true) - Show DOUBLE/MEGA WINGS streaks
Red Background Wash (true) - Tint chart background
Show Lift-Off Trails (false) - Toggle golden trail visuals
How to Use This Indicator
For Bullish Entry Identification:
1. Monitor the WINGS badge for score changes
2. Wait for MOMENTUM (50+) or LIFT-OFF (75+) signals
3. Check which modules are contributing (Pattern + Volume + Zone = stronger)
4. Use demand zones and trendlines as structural reference for entries
For Confluence Confirmation:
1. Use alongside your existing analysis
2. LIFT-OFF signals indicate multiple bullish factors aligning
3. Low scores (< 30) suggest weak bullish context even if one factor looks good
For Zone-Based Trading:
1. Watch for price approaching active demand zones
2. Look for pattern + volume confirmation at zone retests
3. Zone score increases with successful retests
For Trendline Analysis:
1. Monitor the pivot-based channel for trend structure
2. Breakouts with volume confirmation trigger TREND BREAK alerts
3. Price inside channel with bullish patterns = trend continuation setup
1M and lower timeframes:
Alerts Available
LIFT-OFF - High-confidence bullish confluence
MOMENTUM - Strong bullish conditions
Zone Retest - Bullish rejection from demand zone
Trendline Break - Breakout with volume confirmation
Individual patterns (Engulfing, Marubozu, Hammer, 3-Bar Cluster)
Volume Climax - Institutional volume spike
DOUBLE WINGS / MEGA WINGS - Consecutive lift-off signals
Repainting Behavior
By default, the indicator uses confirmed bars only (barstate.isconfirmed), meaning signals appear after the bar closes and do not repaint. However:
LIVE MODE - When enabled, signals can appear intrabar but may disappear if conditions change before bar close. A warning label displays when LIVE MODE is active.
Trendlines - Pivot detection requires lookback bars, so the most recent trendline segments may adjust as new pivots confirm. This is inherent to pivot-based analysis.
Demand Zones - Zones are created on confirmed bars and do not repaint, but they can be removed if price closes below the zone bottom (configurable).
Live Mode with 'Enable Visual Effect' turned off in settings:
Limitations
This is a bullish-only indicator. It does not detect bearish setups or provide short signals.
The WINGS score is a confluence measure, not a prediction. High scores indicate favorable conditions, not guaranteed outcomes.
Pattern detection uses simplified logic. Not all candlestick nuances are captured.
Volume analysis requires reliable volume data. Results may vary on instruments with inconsistent volume reporting.
Ichimoku calculations add processing overhead. Disable if not needed.
Demand zones are based on a specific two-candle structure. Other valid zones may not be detected.
Trendlines use linear regression between pivots. Curved or complex channels are not supported.
Timeframe Recommendations
15m-1H: More frequent signals, useful for intraday analysis. Higher noise.
4H-Daily: Best balance of signal quality and frequency for swing trading.
Weekly: Fewer but more significant signals for position trading.
Adjust lookback periods and thresholds based on your timeframe. Shorter timeframes may benefit from shorter lookbacks.
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes. The source code is fully visible and can be studied to understand how each module works.
This indicator does not constitute financial advice. The WINGS score and signals do not guarantee profitable trades. Past performance does not guarantee future results. Always use proper risk management, position sizing, and stop-losses. Test thoroughly on your preferred instruments and timeframes before using in live trading.
- Made with passion by officialjackofalltrades
VMDivergencesTH Volume Momentum Divergences - How It Works
🎯 Overview
This indicator detects divergences between price action and a custom momentum oscillator. Divergences occur when price moves one direction while momentum moves the opposite direction — often signaling potential reversals or trend continuations.
⚙️ The Hidden Oscillator Engine
The oscillator runs in the background (not plotted on chart) and combines two components:
Component 1: Momentum (MACD-style)
Momentum = Fast EMA(12) - Slow EMA(26)
Measures the difference between a fast and slow exponential moving average. Positive = bullish momentum, Negative = bearish momentum.
Component 2: Bollinger Band Distance
Distance = (Price - BB Middle) / Standard Deviation
Measures how far price has strayed from its "normal" range. Values > 2 = overbought territory, Values < -2 = oversold territory.
Hybrid Blend
Final Oscillator = (Normalized Momentum × Blend) + (Band Distance × (1 - Blend))
The Momentum Blend setting (default 1.0) controls the mix:
1.0 = Pure momentum (like MACD)
0.0 = Pure band distance (like Bollinger %B)
0.5 = Equal blend of both
🔍 Pivot Detection
The indicator identifies swing highs and swing lows on both:
Price (using high and low)
Oscillator (using the hybrid oscillator value)
How Pivots Are Found
text
Swing High = A bar where the high is higher than X bars on BOTH sides
Swing Low = A bar where the low is lower than X bars on BOTH sides
The Swing Strength setting (default 5) controls how many bars on each side are required:
Lower values (2-3) = More pivots, more signals, more noise
Higher values (7-10) = Fewer pivots, fewer signals, higher quality
🔀 Divergence Types Explained
1. 🟢 Regular Bullish Divergence (Reversal Signal)
Price: Lower Low ↘ (making new lows)
Oscillator: Higher Low ↗ (momentum improving)
Meaning: Price is falling but momentum is building. The selling pressure is weakening — potential bottom forming.
Visual: Green triangle below bar + solid line connecting lows
2. 🔴 Regular Bearish Divergence (Reversal Signal)
text
Price: Higher High ↗ (making new highs)
Oscillator: Lower High ↘ (momentum fading)
Meaning: Price is rising but momentum is declining. The buying pressure is weakening — potential top forming.
Visual: Red triangle above bar + solid line connecting highs
3. 🟡 Hidden Bullish Divergence (Continuation Signal)
text
Price: Higher Low ↗ (holding above previous low)
Oscillator: Lower Low ↘ (momentum dipped)
Meaning: In an uptrend, price made a higher low but oscillator made a lower low. The oscillator "reset" while price held strong — trend likely to continue UP.
Visual: Green diamond below bar + dashed line
4. 🟠 Hidden Bearish Divergence (Continuation Signal)
text
Price: Lower High ↘ (staying below previous high)
Oscillator: Higher High ↗ (momentum bounced)
Meaning: In a downtrend, price made a lower high but oscillator made a higher high. The oscillator bounced but price couldn't — trend likely to continue DOWN.
Visual: Red diamond above bar + dashed line
5. 🔵 Double Bottom with Divergence (Strong Support)
text
Price: Two lows at SIMILAR levels (within ATR tolerance)
Oscillator: Second low HIGHER than first
Meaning: Price tested the same support twice, but momentum was stronger on the second test — buyers defending that level aggressively.
Visual: Cyan circle below bar + dotted line
6. 🟣 Double Top with Divergence (Strong Resistance)
text
Price: Two highs at SIMILAR levels (within ATR tolerance)
Oscillator: Second high LOWER than first
Meaning: Price tested the same resistance twice, but momentum was weaker on the second test — sellers defending that level.
Visual: Purple circle above bar + dotted line
✅ Validation Filters
Not every pivot pair creates a signal. The indicator applies filters:
Filter Purpose
Min Pivot Distance (default 5) Pivots must be at least 5 bars apart — prevents micro-divergences
Max Pivot Distance (default 50) Pivots must be within 50 bars — prevents stale/irrelevant divergences
DTB Tolerance (default 0.3 × ATR) For double top/bottom, price levels must be within 30% of ATR
📊 Visual Elements
Element Description
Markers Shapes above/below candles when divergence triggers
Lines Connect the two pivot points involved in the divergence
Labels Text tags showing divergence type (REG, HID, DBL)
Glow Effect Thicker semi-transparent line behind main line
Background Flash Brief color flash on signal bar
Status Panel Real-time table showing oscillator value and active signals
🧠 Trading Logic Summary
┌──────────────────────────────────────────────────────────┐
│ DIVERGENCE CHEAT SHEET │
├──────────────────────────────────────────────────────────┤
│ REGULAR BULLISH │ Price ↘ Osc ↗ │ Look for LONGS │
│ REGULAR BEARISH │ Price ↗ Osc ↘ │ Look for SHORTS │
│ HIDDEN BULLISH │ Price ↗ Osc ↘ │ Add to LONGS │
│ HIDDEN BEARISH │ Price ↘ Osc ↗ │ Add to SHORTS │
│ DOUBLE BOTTOM │ Same low, Osc ↗ │ Strong SUPPORT │
│ DOUBLE TOP │ Same high, Osc ↘ │ Strong RESISTANCE │
└──────────────────────────────────────────────────────────┘
The SHIFT - Signal Harmonic Inflection Flow Tracker🔄 THE SHIFT — SIGNAL HARMONIC INFLECTION FLOW TRACKER
Precision reversal detection at the exact moment price shifts direction.
📐 CORE CONCEPT: THE INFLECTION POINT
Every sustained price move begins with a single moment — the instant price crosses from one phase to another. THE SHIFT captures this exact inflection point by combining two essential confirmations:
1. The Phase Cross
Price crossing the EMA ribbon midpoint represents a structural change in market bias. The ribbon midpoint is calculated as the average of EMA 21 and EMA 55, creating a dynamic equilibrium zone. When price decisively crosses this level, it signals a potential phase transition.
2. The Confirming Wick
Not every ribbon cross leads to continuation. THE SHIFT filters for quality by requiring the crossing candle to show directional commitment through its wick structure:
✓ Bullish SHIFT: Lower wick ≥ 25% of bar range (buyers absorbed selling pressure)
✓ Bearish SHIFT: Upper wick ≥ 25% of bar range (sellers absorbed buying pressure)
This dual confirmation eliminates weak crosses that occur during sideways chop.
⚙️ HOW IT WORKS
The EMA Ribbon
Five exponential moving averages (8, 13, 21, 34, 55) form an adaptive ribbon that expands during trends and contracts during consolidation. The ribbon serves multiple purposes:
✓ Visual trend identification through color gradient
✓ Dynamic support/resistance zones
✓ Phase boundary definition via ribbon midpoint
Phase Detection
The indicator tracks three distinct market phases:
✓ VELOCITY BULLISH — Price confirmed above ribbon midpoint
✓ VELOCITY BEARISH — Price confirmed below ribbon midpoint
✓ EQUILIBRIUM — Price oscillating around midpoint without confirmation
Phase confirmation requires price to remain on one side of the ribbon for a user-defined number of bars (default: 2), preventing false signals from single-bar noise.
Market Pressure Index (MPI)
MPI quantifies the balance between buying and selling pressure within each bar by analyzing where price closes relative to its range, weighted by volume. This provides momentum context for phase transitions:
✓ Positive MPI confirms bullish pressure
✓ Negative MPI confirms bearish pressure
✓ Strong readings (above threshold) indicate conviction
Consensus Grading System
Each SHIFT signal receives a quality grade (A+, A, B, C) based on five factors:
✓ Phase Strength — EMA alignment plus MPI strength
✓ Trend Alignment — All EMAs properly stacked
✓ Volume Confirmation — Above-average participation
✓ Momentum Convergence — MPI confirms direction
✓ Structure Respect — Price at value area
Higher grades indicate stronger confluence and potentially higher-probability setups.
📊 VISUAL SYSTEM
SHIFT Labels
✓ ▲ SHIFT — Bullish phase flip detected
✓ ▼ SHIFT — Bearish phase flip detected
Labels appear at the exact bar where the phase transition occurs.
Entry Zones
When a qualified SHIFT fires, a colored box appears showing:
✓ Entry zone boundaries
✓ Signal direction (LONG/SHORT)
✓ Wick percentage that triggered the signal
✓ Quality grade
Dynamic Trade Management
THE SHIFT tracks three profit targets (T1, T2, T3) and stop levels with intelligent visual feedback:
✓ Target Lines — Display as dashed lines during active trade
✓ Target Hit — Line turns GREEN with "✓ T1/T2/T3" label
✓ Target Fade — Hit targets progressively fade and disappear after user-defined bars
✓ Stop Hit — Line turns RED with "❌ STOPPED OUT" label
This visual system keeps your chart clean while providing clear feedback on trade progress.
Background Shading
Subtle background color indicates current phase:
✓ Green tint — Bullish phase
✓ Red tint — Bearish phase
✓ Yellow tint — Equilibrium
🧠 SHIFT ASSISTANT — INTELLIGENT COACHING PANEL
The SHIFT Assistant provides real-time contextual guidance that adapts to market conditions:
MARKET READ
Current market assessment:
✓ "💪 Strong bullish trend in play"
✓ "📈 Bullish momentum building"
✓ "🔥 Compression detected - breakout imminent"
✓ "⚖️ Equilibrium - wait for SHIFT"
ACTION
Specific guidance for current situation:
✓ "🟢 SHIFT LONG - Wick confirmed buyers"
✓ "📊 Halfway to T1 - Hold with conviction"
✓ "✅ T1 Hit - Consider partials, move stop to entry"
✓ "👀 Bullish shift but weak wick - skip"
✓ "⏸️ No setup - Patience pays"
CAUTION
Risk warnings when applicable:
✓ "⚠️ Bearish divergence forming - caution on new longs"
✓ "🌊 Volatility expanding - widen mental stops"
INSIGHT
Additional observations:
✓ "✨ Perfect bullish SHIFT setup"
✓ "📊 EMAs fully stacked - trend mature"
✓ "💎 Grade A+ conditions"
TRADE STATUS
When in an active trade:
✓ Current P&L percentage
✓ Bars in trade
✓ Risk buffer remaining (ATR to stop)
📋 MAIN DASHBOARD
The dashboard displays comprehensive real-time information:
Phase Status
✓ Current phase (Velocity Bullish/Bearish/Equilibrium)
✓ Phase strength (Strong/Moderate/Weak)
✓ MPI reading
Consensus Breakdown
✓ Visual progress bar showing consensus score
✓ Individual check status for all five factors
✓ Current quality grade
Wick & Shift Status
✓ Current wick type and percentage
✓ Whether a SHIFT is occurring on current bar
Three Laws Display
✓ Law 1: Direction (SHIFT BULL/BEAR or No Shift)
✓ Law 2: Confirmation (Wick Confirms or Weak Wick)
✓ Law 3: Quality (Grade passes filter or not)
All three laws must be satisfied for a signal to fire.
⚙️ INPUT PARAMETERS
SHIFT Core Engine
✓ MPI Period (14) — Lookback for Market Pressure Index calculation
✓ MPI Sensitivity (1.5) — Amplification factor for pressure readings
✓ Phase Confirmation Bars (2) — Bars required on one side of ribbon to confirm phase
✓ Strong Momentum Threshold (0.5) — MPI level considered "strong"
EMA Ribbon
✓ Show EMA Ribbon — Toggle ribbon visibility
✓ EMA Fast/2/Core/4/Slow (8/13/21/34/55) — Individual EMA periods
Signal Settings
✓ Show Signals — Toggle signal generation
✓ Minimum Signal Grade (B) — Filter signals below this quality threshold
✓ Min Wick Ratio (0.25) — Minimum wick size as percentage of bar range to confirm shift
✓ Show Entry Zones/Stops/Targets — Toggle visual elements
✓ Stop Loss ATR (1.5) — Stop distance in ATR multiples
✓ Zone Width (15) — How many bars entry zones extend forward
✓ Target Fade Duration (8) — Bars before hit targets disappear
Assistant & Dashboard
✓ Position and size options for both panels
✓ Independent show/hide toggles
Visual
✓ Customizable colors for bullish, bearish, neutral, target hit, and stop hit
✓ Background and label transparency controls
🎯 RECOMMENDED USAGE
Best Timeframes
✓ 5-minute to 1-hour for intraday trading
✓ 4-hour to Daily for swing trading
✓ Adjust Min Wick Ratio lower (0.20) on higher timeframes where wicks tend to be smaller
Best Markets
✓ Liquid instruments with clear trending behavior
✓ Futures, Forex, and large-cap equities
✓ Avoid during major news events when price action becomes erratic
Signal Filtering
✓ Grade A+ and A signals have highest confluence
✓ Grade B signals are acceptable with additional confirmation
✓ Grade C signals should generally be skipped
✓ Use the Assistant's ACTION guidance to understand why signals fire or don't fire
Trade Management
✓ T1 at 1× risk (1:1 R) — Consider taking partials
✓ T2 at 2× risk (2:1 R) — Move stop to breakeven
✓ T3 at 3× risk (3:1 R) — Full target, close remaining position
✓ Watch for phase invalidation (opposite SHIFT) as hard stop signal
🔔 ALERTS
THE SHIFT includes comprehensive alert conditions:
✓ SHIFT Long — Bullish entry signal
✓ SHIFT Short — Bearish entry signal
✓ T1/T2/T3 Hit — Target reached notifications
✓ Stopped Out — Stop level breached
✓ Shift Bullish/Bearish — Phase flip events (with or without trade signal)
Dynamic alerts include grade and wick percentage information for complete context.
📝 DEVELOPMENT NOTES
THE SHIFT emerged from extensive research into what makes reversal signals reliable versus unreliable. The key insight was that most failed reversals lack wick confirmation — the candle crosses a level but shows no evidence that the opposing force actually stepped in.
By requiring both the structural cross (price through ribbon midpoint) AND the wick confirmation (evidence of absorption), THE SHIFT filters out the low-quality signals that plague simpler crossover systems.
The intelligent Assistant panel was designed to function as a trading coach, helping traders understand not just WHEN to trade but WHY conditions are or aren't favorable. This educational component helps develop intuition over time.
⚠️ RISK DISCLAIMER
This indicator is a technical analysis tool designed to identify potential trading opportunities. It does not guarantee profits and should not be used as the sole basis for trading decisions.
Past performance of any trading system or methodology is not necessarily indicative of future results. Trading involves substantial risk of loss and is not suitable for all investors.
Always use proper risk management, position sizing appropriate to your account, and never risk more than you can afford to lose. Paper trade any new system extensively before committing real capital.
The developer makes no claims about win rates, profit factors, or expected returns. Your results will vary based on market conditions, timeframe selection, and execution.
🎯 SUMMARY
THE SHIFT provides a unified approach to reversal detection:
✓ Simple Logic — Phase cross + wick confirmation = signal
✓ Quality Grading — Consensus scoring filters for best setups
✓ Visual Clarity — Dynamic trade management keeps charts clean
✓ Intelligent Coaching — Assistant explains market conditions in real-time
✓ Complete System — Entry, targets, stops, and management in one indicator
One objective. One system. Catch the shift.
"The market speaks in inflection points. THE SHIFT translates."
Taking you to school. — Dskyz , Trade with insight. Trade with anticipation.
CUSUM Volatility BreakoutCUSUM Volatility Breakout A statistical trend-detection and volatility-breakout indicator that identifies subtle momentum shifts earlier than traditional tools.
OVERVIEW
The CUSUM control chart is a statistical tool designed to detect small, gradual shifts from a target value. In trading, it helps identify the early stages of a trend, giving traders a heads-up before momentum becomes obvious on standard price charts. By spotting these subtle movements, the CUSUM Volatility Breakout indicator (CUSUM VB) can highlight potential breakout opportunities earlier than traditional indicators. In other words, a statistical trend detection & breakout indicator.
Copyright © 2025 CoinOperator
HOW IT WORKS
CUSUM VB uses a combination of differenced price series, volume normalization, and dynamic control limits:
CUSUM Principle: Tracks cumulative deviations of price from a zero reference. Signals occur when cumulative deviations exceed a control limit shown on the chart and clears any enabled filters.
Adaptive Volatility: H adjusts automatically based on short- vs long-term ATR ratios, allowing faster detection during volatile periods and reduced false signals in calm markets.
Volume Weighting (optional): Amplifies price CUSUM values during high-volume bars to prioritize market participation strength.
ATR Confirmation (optional): Ensures breakouts are accompanied by expanded volatility.
Bollinger Band Squeeze Integration (optional): Confirms trend breakouts by detecting volatility contraction and release shown on the chart as triangles.
Signals:
Arrows on the price chart mark the bars where trades are actually filled, based on conditions detected on the prior signal bar.
Long Entry: Confirmed positive CUSUM breach (price & volume) with BB breakout (signal bar).
Short Entry: Confirmed negative CUSUM breach (price & volume) with BB breakout (signal bar).
Exit Signals: Triggered automatically by opposite-side signals.
Alerts, when created, fire on the bars where fills occur.
CHART COMPONENTS
CUSUM Upper Price (CU Price) and CUSUM Lower Price (CL Price) are green/red circles for confirmed signals.
● Rapid upward accumulation of CU Price indicates a developing bullish trend.
● Rapid downward accumulation of CL Price indicates a developing bearish trend.
Decision/Control limits (UCL/LCL, red)
Zero line (reference for the differenced price series baseline)
Optional BB triangles and volume CUSUM
SETUP AND CONFIGURATION
Differenced Price Series
Differenced Price Length and Lag
Increase differencing lag or window length → Increases variance of residuals → Wider control limits (UCL/LCL) → Slower to trigger.
Decrease lag or window → Tighter limits, more responsive to short-term regime shifts.
CUSUM Parameters
Volume-Weighted CUSUM
NOTE : Uses price length if 'Confirm Price with Volume' is disabled, otherwise will use volume length.
Amplifies CUSUM price responses during high-volume bars and reduces them during low-volume bars. This links trend detection to market participation strength.
Volume-Weighted CUSUM doesn’t replace price confirmation with volume; it modulates it by volume intensity, amplifying price signals when participation is strong and suppressing them when weak.
Recommended when analyzing assets with consistent volume patterns (e.g., stocks, major futures).
Disable for low-liquidity or irregular-volume instruments (e.g., crypto pairs, small-cap stocks).
ATR Confirmation
Enable this feature to confirm CUSUM signals only when price deviations are accompanied by higher-than-normal volatility. The indicator compares current ATR to a smoothed ATR to detect volatility expansion. This helps distinguish true breakouts from low-volatility noise and reduces false signals during quiet periods.
Adjust the ATR lookback length, smoothing length, and expansion factor to control sensitivity. Rule of thumb:
ATR Length ≈ 0.5 × differenced price length to 1.5 × differenced price length gives balanced sensitivity.
ATR Smoothing 5–10 bars.
ATR Expansion 5% to 50%.
CUSUM Input Mode
Select how CUSUM processes differenced price and log-normalized volume — either directly (Txfrm Data) or as deviations from a short-term EMA baseline (Residuals):
Txfrm Data = transformed input: differenced price & log-normalized volume as input for CUSUM (larger swings, more frequent control limit breaches)
Residuals = deviation from short-term EMA baseline (smaller swings, fewer control limit breaches, but higher signal quality).
Residual EMA Length: Defines how quickly the residual baseline adapts to recent differenced price moves. Shorter = more reactive; longer = smoother baseline. Keep EMA length moderate; over-smoothing can distort timing.
Control Sensitivity (K)
Increase K → Less sensitive → CUSUM accumulates slower → Fewer signals, captures only major trends.
Decrease K → More sensitive → CUSUM accumulates faster → More signals, captures minor swings too.
Reset Mode : Method of resetting CUSUM values.
Immediate Reset: Reset both immediately after any signal breach. Traditional SPC.
Opposite-Side Reset: Reset only the opposite side when a valid signal fires. Best for ongoing trend tracking.
Decay Reset: Gradually reduce CUSUM values toward zero with a decay factor each bar. Maintains trend memory but allows slow “forgetting.”
Threshold Reset: Reset only if CUSUM returns below a small threshold (10 % of H). Filters noise without full wipe.
No Reset / Continuous: Never reset; instead track running totals. Long-term cumulative bias measurement.
Conflict Handling : Method of handling conflicting signals.
Ignore Both: Discards both when overlap occurs.
Prioritize Latest: Chooses the direction implied by the most recent close.
Prioritize Stronger: Compares absolute magnitudes of CU Price vs CL Price.
Average Resolve: Looks at the difference; small overlap → ignore, otherwise pick direction by sign.
Sequential Confirm: Requires N consecutive same-direction signals before confirmation.
Volume Parameters (Optional)
Amplification Factor
Adjusts volume sensitivity and effectively rescales the log series of volume to a comparable magnitude with price changes.
Since price and volume are normalized in a compatible way, the amplification factor is used instead of independent K and H values for volume.
Bollinger Bands (Optional)
Lookback Synchronization
BB Lookback (for CUSUM): Number of bars that define a window for the BB signal to look back for the CUSUM signal.
CUSUM Lookback (for BB): Number of bars that define a window for the CUSUM signal to look back for the BB signal.
Both can be enabled for stricter alignment.
Relationship Between K, H, ARL₀ and ARL₁
H (max) is usually the only H you need to adjust. With everything else being constant, increasing either K or H (max) generally increases both ARL₀ and ARL₁ : higher thresholds reduce false alarms but slow detection, and lower thresholds do the opposite.
Increase Min Target ARL ratio →
ARL₀ increases (safer, fewer false alarms)
ARL₁ decreases or stays small (faster detection)
Control limits slightly expand to achieve separation
Strategy becomes more selective and stable
Decrease Min Target ARL ratio →
ARL₀ decreases (more false alarms tolerated)
ARL₁ increases (slower detection tolerated)
Control limits tighten
Strategy becomes more sensitive but lower quality
The ARL Ratio of ARL₀ / ARL₁ is typically between 3 and 8. This implies you want your ARL₀ (false-alarm interval) ≈ 'Min Target ARL ratio' × differenced price length window.
Example:
"Min Target ARL ratio = 4.0"
⇒ implies you want your ARL₀ (false-alarm interval) ≈ 4 × differenced price length.
Assume price length = 50 (typical differencing window).
ARL ratio = 4.0 → target ARL = 4 × 50 = 200 bars.
● On a 6-hour chart (≈4 bars/day) → ~50 days between expected false alarms (on average).
● On a daily chart → ~200 trading days between false alarms (very conservative).
ARL ratio = 8.0 → target ARL = 400 bars → twice as infrequent signals vs ratio=4.
ARL ratio = 2.0 → target ARL = 100 bars → about half the inter-signal interval.
Another way to think about it: probability of a false alarm on any bar ≈ 1 / target ARL. If you want ~1% of bars producing alarms, target ARL ≈ 100.
QUICK START
Start with the defaults.
Set price series → length/order/lag
Configure CUSUM thresholds → K, H min/max
1. Adjust the price differencing lag/window.
2. Verify that it captures real price inflection points without overreacting to bar noise.
Enable optional filters → Volume, ATR, BB
The optional Bollinger Bands squeeze usually works best if used with CUSUM Input Mode = Txfrm Data.
Monitor CUSUM chart → CU Price, CL Price, thresholds, zero line
Act on signals → data window / chart triangles
Adjust sensitivity → H (max), K, lengths
Monitor ARL ratio and CUSUM behavior for fine-tuning
Note : When you’ve finalized the length, lag, and order of the Price Difference, as well as the Ln(Vol) Series of “Confirm Price with Volume” if enabled, then pass both through the Augmented Dickey–Fuller (ADF) mean reversion test to ensure they are stationary, i.e., mean reverting. You can find a ready-made indicator for such use at . Many thanks to tbtkg for this indicator.
SUMMARY
CUSUM VB combines CUSUM statistical control, volatility-adaptive thresholds, volume weighting, and optional BB breakout confirmation to provide robust, actionable signals across a wide variety of trading instruments.
Why traders use it : Fast detection of shifts, reduced false alarms, versatile across markets.
Ideal for : Futures (continuous contracts), forex, crypto, stocks, ETFs, and commodity/index CFDs, especially where:
● Price and volume data exist
● Breakouts and volatility shifts are tradable
● There’s enough liquidity for meaningful signals
Visualization : Upper/lower CUSUM circles, UCL/LCL thresholds, optional highlight traded background, optional volume and BB overlays on the chart, optional entry/exit labels on the price chart, as well as entry/exit signals in the data window.
Alerts : For entry/exit labels when trades are actually filled.
CUSUM VB is designed for traders who want statistically grounded trend detection with configurable sensitivity, visual clarity, and multi-market versatility.
DISCLAIMER
This software and documentation are provided “as is” without any warranties of any kind, express or implied. CoinOperator assumes no responsibility or liability for any errors, omissions, or losses arising from the use or interpretation of this software or its outputs. Trading and investing carry inherent risks, and users are solely responsible for their own decisions and results.
ZLT - Date and Time MarkerPine Script v5 indicator called “DateTime Marker” that overlays on the chart and marks bars whose timestamp matches a user-defined schedule. When a bar “matches,” it can draw:
a vertical line through the bar,
a label with a time/date string, and
a triangle marker below the bar (always plotted on matches).
What you can configure
Marker Type (the matching rule)
You choose one of five modes:
Every Minute
Inputs: everyNMinutes (default 15), minuteOffset (default 0)
Match condition: minute % everyNMinutes == minuteOffset
Example with defaults: marks bars at :00, :15, :30, :45 each hour.
Hourly
Inputs: everyNHours (default 4), hourlyMinute (default 0)
Match condition: hour % everyNHours == 0 AND minute == hourlyMinute
Example with defaults: marks bars at 00:00, 04:00, 08:00, 12:00, 16:00, 20:00 (at minute 00).
Daily Time
Inputs: dailyHour (default 10), dailyMinute (default 0)
Match condition: hour == dailyHour AND minute == dailyMinute
Example with defaults: marks 10:00 every day.
Weekly Day & Time
Inputs: weekDay (default Tuesday), weeklyHour (default 16), weeklyMinute (default 0)
It converts the weekday name to Pine’s dayofweek number via getDayNumber().
Match condition: dayofweek == targetDay AND hour == weeklyHour AND minute == weeklyMinute
Example with defaults: marks Tuesday 16:00.
Monthly Date & Time
Inputs: monthlyDay (default 2), monthlyHour (default 23), monthlyMinute (default 0)
Match condition: dayofmonth == monthlyDay AND hour == monthlyHour AND minute == monthlyMinute
Example with defaults: marks the 2nd day of each month at 23:00.
Visual settings
showLine: whether to draw the vertical line.
lineStyle: Solid/Dashed/Dotted (mapped to Pine line styles by getLineStyle()).
lineColor, lineWidth: styling for the line (width is rounded to an integer because Pine line width is integer).
showLabel: whether to draw a label.
labelColor: background color of the label (text is forced white).
What happens when a bar matches
When isMatch becomes true on a bar:
Vertical line: line.new() at that bar’s bar_index, from low to high, extended extend.both (so it spans the full chart vertically).
Label: label.new() at the bar’s high, with mode-specific text:
Minute/Hourly/Daily: "HH:mm"
Weekly: "Tuesday HH:mm" (or whatever day selected)
Monthly: "Day 2 - HH:mm" (or chosen day)
Triangle marker: plotshape() draws a triangle up below the bar on every match (this happens regardless of showLine / showLabel).
Important practical implications
This uses the bar’s exchange/chart time (TradingView’s time, hour, minute, etc.), so results depend on the symbol/session and chart timezone settings.
On timeframes coarser than 1 minute, “Every Minute” still checks only the bar’s timestamp minute value; it won’t mark intra-bar minutes that don’t exist as separate bars.
Because it can create many objects (lines/labels), it sets max_labels_count=500. Lines are not capped here, so very dense marking can still clutter the chart.
If you tell me your intended use (e.g., “mark NY open,” “mark every 15m candle close,” “mark macro events weekly”), I can point out whether the current matching logic fits that precisely or needs adjustments (sessions, timezones, avoiding duplicates, limiting lines, etc.).















