1337 VolumeThis volume indicator gives you a unique perspective and ability to analyze volume in any market. The upper line that is always >=0 represents average up volume over a user definable period while the lower line that is always <= 0 represents the average down volume over a user definable period.
green == bullish candle but volume lower than average
lime == bullish candle with above average volume
crimson == bearish candle with below average volume
red == bearish candle with above average volume
This indicator is very useful for spotting bottoms / tops (do a visual backtest and observe its behavior) as well as entry opportunities.
By default, the lookback period for average volume is 7, but I encourage you to change this value in order to find settings that work best for your particular market.
If you have any feedback or ideas for improvement, please comment.
Enjoy :D
Komut dosyalarını "bear" için ara
Super Envolvente (Bullish y Bearish)Identificador de Super-envolventes (SE), se encarga de darle un color verde a la SE alzista (Bullish) verde y rojo a la bajista (Bearish).
Candlestick Patterns Identified (updated 3/11/15)I decided to republish this one without the trend filter and with all the major symbols active. This will allow for all the patterns to show up.
Due to 15 different candlestick formations in this one script, it will be difficult to turn off the last few due to screen size. You can turn off individual patterns on the settings screen.
I have everything spelled out except the hammer and inverted hammer. They are "H" and "IH" respectively on the charts. They show up so often that they cluttered the charts.
The default script has: Doji, Evening Star, Morning Star, Shooting Star, Hammer, Inverted Hammer, Bearish Harami, Bullish Harami, Bearish Engulfing, Bullish Engulfing, Piercing Line, Bullish Belt, Bullish Kicker, Bearish Kicker, Hanging man, and Dark Cloud Cover. You can turn off what you don't like. The Piercing Line, Bullish Belt, and the Kickers will usually show up better in the daily charts.
I recommend watching videos with Stephen Bigalow to get a feel for how to trade these. You will want to add an 8 EMA to your chart with his setups. Enjoy.
If you want the old version: Take a look at the related ideas below.
Candlesticks Patterns IdentifiedI was using another script that colored the bars to show the different candle patterns. Thanks to HPotter (www.tradingview.com). Unfortunately, I can't think that fast when looking across a screen of charts with different color bars. Fortunately, Tradingview came up with symbols and names on 2/26/15. I decided to take my favorite symbols and attach them to a name. This makes it easier to see what is going on and where your entry would be if it confirms. Works beautifully for me. Decided to share. I also added the ability to alter what shows up based upon a look back. A bullish engulfing at the top of a trend, or a bearish harami at the bottom of the trend, is nearly useless and clutters the chart. I have the default set for the open of the current bar to be higher or lower than the open from 5 bars back. You can adjust in the settings to what you like. This trend setting is on all the patterns except doji. If you want to see all the candle patterns, set it to "1".
The doji can be adjusted as well. I left some other patterns at the bottom of the script, but they are turned off. They became too much of a clutter for me. I prefer DovCaspi's pattern finder for hammers and stars: I use his due to the clean appearance.
The default script has: Doji, Bearish Harami, Bullish Harami, Bearish Engulfing, Bullish Engulfing, Piercing Line, Bullish Belt, Bullish Kicker, and Bearish Kicker. You can turn off what you don't like. The Piercing Line, Bullish Belt, and the Kickers will usually show up better in the daily charts.
If you would like the updated version, see the Related Ideas below:
Keltner Channel with auto highlighting of Bear/Bull reversals*** New version @ ****
All options configurable.
Reversals are marked using crosses. as well as highlighted using green/red color (depending on bull/bear). Enjoy!
Bearish signal using Point of Control (POC) with PAC by guruThis indicator code helps traders identify potential sell opportunities using several important technical indicators:
Point of Control (POC) – This is the price level where the most volume was traded over the past several days.
Previous Day's Low – This shows the lowest price reached during the previous day.
PAC (Price Action Channel) EMA – These are two moving averages (one based on the low price and one based on the close price) that help determine if the price is trending within a certain range.
Volume SMA – This is a 3-day simple moving average (SMA) of volume, which helps filter out signals based on market activity.
What the Script Does:
Point of Control (POC):
The script looks at the last 50 days (configurable) and calculates which price level had the highest trading volume.
It then plots a red line on the chart at the POC level. This is important because it helps identify areas where there was strong market interest in the past.
Volume Moving Average:
The script calculates a 3-day SMA of volume, but it excludes the current day to avoid premature signals based on today’s trading.
The volume SMA is used to ensure there’s enough market activity (with a threshold set to 25 units) before triggering a sell signal.
Price Action Channel (PAC) EMA:
The PAC consists of two exponential moving averages (EMAs):
The PAC Low EMA: This is based on the low prices over the last 34 periods (configurable).
The PAC Close EMA: This is based on the closing prices over the last 34 periods.
These EMAs help determine if the price is trending above or below certain price levels.
Sell Signal Logic: The script checks three conditions before displaying a "Sell" signal:
Price Below POC and Previous Day’s Low:
The close price must be below both the Point of Control (POC) and the previous day's low.
Volume SMA Above 25:
The 3-day volume SMA must be greater than 25. This ensures the signal only triggers when there’s enough trading volume in the market.
Today’s Low is Above PAC EMAs:
Today's low price must be above both the PAC low EMA and the PAC close EMA. This prevents sell signals when prices are already significantly below the PAC, indicating possible exhaustion in the downtrend.
If all three conditions are met, the script will display a red "Sell" label on the chart, signaling a potential selling opportunity.
No Sell Signal if Price Reverses:
If the price crosses back above the POC or the previous day's low, the script will remove the sell signal and reset for a new opportunity.
Summary of Conditions:
For the script to display a "Sell" label:
The close price must be below the Point of Control (POC) and the previous day’s low.
The 3-day volume SMA (excluding today) must be greater than 25 units.
The low price of the current day must be above both the PAC low EMA and the PAC close EMA.
If these conditions are met, a red sell label appears on the chart as a potential signal for a short (sell) trade.
HSM TOOLS//@version=5
indicator("HSM TOOLS", overlay=true, max_lines_count=500, max_labels_count=5, max_boxes_count=500)
// General Settings Inputs
TZI = input.string (defval="UTC -4", title="Timezone Selection", options= , tooltip="Select the Timezone. ( Shifts Chart Elements )", group="Global Settings")
Timezone = TZI == "UTC -10" ? "GMT-10:00" : TZI == "UTC -7" ? "GMT-07:00" : TZI == "UTC -6" ? "GMT-06:00" : TZI == "UTC -5" ? "GMT-05:00" : TZI == "UTC -4" ? "GMT-04:00" : TZI == "UTC -3" ? "GMT-03:00" : TZI == "UTC +0" ? "GMT+00:00" : TZI == "UTC +1" ? "GMT+01:00" : TZI == "UTC +2" ? "GMT+02:00" : TZI == "UTC +3" ? "GMT+03:00" : TZI == "UTC +3:30" ? "GMT+03:30" : TZI == "UTC +4" ? "GMT+04:00" : TZI == "UTC +5" ? "GMT+05:00" : TZI == "UTC +5:30" ? "GMT+05:30" : TZI == "UTC +6" ? "GMT+06:00" : TZI == "UTC +7" ? "GMT+07:00" : TZI == "UTC +8" ? "GMT+08:00" : TZI == "UTC +9" ? "GMT+09:00" : TZI == "UTC +9:30" ? "GMT+09:30" : TZI == "UTC +10" ? "GMT+10:00" : TZI == "UTC +10:30" ? "GMT+10:30" : TZI == "UTC +11" ? "GMT+11:00" : TZI == "UTC +13" ? "GMT+13:00" : "GMT+13:45"
inputMaxInterval = input.int (31, title="Hide Indicator Above Specified Minutes", tooltip="Above 30Min, Chart Will Become Messy & Unreadable", group="Global Settings")
// Session options
ShowTSO = input.bool (true, title="Show Today's Session Only", group="Session Options", tooltip="Hide Historical Sessions")
ShowTWO = input.bool (true, title="Show Current Week's Sessions Only", group="Session Options", tooltip="Show All Sessions from the current week")
SL4W = input.bool (true, title="Show Last 4 Week Sessions", group="Session Options", tooltip="Show All Sessions from Last Four Weeks \nShould Disable Current Week Session to Work")
ShowSFill = input.bool (false, title="Show Session Highlighting", group="Session Options", tooltip="Highlights Session from Top of the Chart to Bottom")
//----------------------------------------------
// Historical Lines
ShowMOPL = input.bool (title="Midnight Historical Price Lines", defval=false, group="Historical Lines", tooltip="Shows Historical Midnight Price Lines")
MOLHist = input.bool (title="Midnight Historical Vertical Lines", defval=true, group="Historical Lines", tooltip="Shows Historical Midnight Vertical Lines")
ShowPrev = input.bool (false, title="Misc. Historical Price Lines", group="Historical Lines", tooltip="Makes Chart Cluttered, Use For Backtesting Only")
//----------------------------------------------
// Session Bool
ShowLondon = input.bool (false, "", inline="LONDON", group="Sessions", tooltip="01:00 to 05:00")
ShowNY = input.bool (false, "", inline="NY", group="Sessions", tooltip="07:00 to 10:00")
ShowLC = input.bool (false, "", inline="LC", group="Sessions", tooltip="10:00 to 12:00")
ShowPM = input.bool (false, "",inline="PM", group="Sessions", tooltip="13:00 to 16:00")
ShowAsian = input.bool (false, "",inline="ASIA2", group="Sessions", tooltip="20:00 to 00:00")
ShowFreeSesh = input.bool (false, "",inline="FREE", group="Sessions", tooltip="Custom Session")
// Session Strings
txt2 = input.string ("LONDON", title="", inline="LONDON", group="Sessions")
txt3 = input.string ("NEW YORK", title="", inline="NY", group="Sessions")
txt4 = input.string ("LDN CLOSE", title="", inline="LC", group="Sessions")
txt5 = input.string ("AFTERNOON", title="", inline="PM", group="Sessions")
txt6 = input.string ("ASIA", title="", inline="ASIA2", group="Sessions")
txt9 = input.string ("FREE SESH", title="", inline="FREE", group="Sessions")
// CBDR = input.session ('1400-2000:1234567', "", inline="CBDR", group="Sessions")
// ASIA = input.session ('2000-0000:1234567', "", inline="ASIA", group="Sessions")
// Session Times
LDNsesh = input.session ('0200-0500:1234567', "", inline="LONDON", group="Sessions")
NYsesh = input.session ('0700-1000:1234567', "", inline="NY", group="Sessions")
LCsesh = input.session ('1000-1200:1234567', "", inline="LC", group="Sessions")
PMsesh = input.session ('1300-1600:1234567', "", inline="PM", group="Sessions")
ASIA2sesh = input.session ('2000-2359:1234567', "", inline="ASIA2", group="Sessions")
FreeSesh = input.session ('0000-0000:1234567', "", inline="FREE", group="Sessions")
// Session Color
LSFC = input.color (color.new(#787b86, 90), "", inline="LONDON", group="Sessions")
NYSFC = input.color (color.new(#787b86, 90), "",inline="NY", group="Sessions")
LCSFC = input.color (color.new(#787b86, 90), "",inline="LC", group="Sessions")
PMSFC = input.color (color.new(#787b86, 90), "",inline="PM", group="Sessions")
ASFC = input.color (color.new(#787b86, 90), "",inline="ASIA2", group="Sessions")
FSFC = input.color (color.new(#787b86, 90), "",inline="FREE", group="Sessions")
//----------------------------------------------
// Vertical Line Bool
ShowMOP = input.bool (title="", defval=true, inline="MOP", group="Vertical Lines", tooltip="00:00 AM")
txt12 = input.string ("MIDNIGHT", title="", inline="MOP", group="Vertical Lines")
ShowLOP = input.bool (title="", defval=false, inline="LOP", group="Vertical Lines", tooltip="03:00 AM")
txt14 = input.string ("LONDON", title="", inline="LOP", group="Vertical Lines")
ShowNYOP = input.bool (title="", defval=true, inline="NYOP", group="Vertical Lines", tooltip="08:30 AM")
txt15 = input.string ("NEW YORK", title="", inline="NYOP", group="Vertical Lines")
ShowEOP = input.bool (title="", defval=false, inline="EOP", group="Vertical Lines", tooltip="09:30 AM")
txt16 = input.string ("EQUITIES", title="", inline="EOP", group="Vertical Lines")
// Vertical Line Color
MOPColor = input.color (color.new(#787b86, 0), "", inline="MOP", group="Vertical Lines")
LOPColor = input.color (color.rgb(0,128,128,60), "", inline="LOP", group="Vertical Lines")
NYOPColor = input.color (color.rgb(0,128,128,60), "", inline="NYOP", group="Vertical Lines")
EOPColor = input.color (color.rgb(0,128,128,60), "", inline="EOP", group="Vertical Lines")
// Vertical LineStyle
Midnight_Open_LS = input.string ("Dotted", "", options= , inline="MOP", group="Vertical Lines")
london_Open_LS = input.string ("Solid", "", options= , inline="LOP", group="Vertical Lines")
NY_Open_LS = input.string ("Solid", "", options= , inline="NYOP", group="Vertical Lines")
Equities_Open_LS = input.string ("Solid", "", options= , inline="EOP", group="Vertical Lines")
// Vertical LineWidth
Midnight_Open_LW = input.string ("1px", "", options= , inline="MOP", group="Vertical Lines")
London_Open_LW = input.string ("1px", "", options= , inline="LOP", group="Vertical Lines")
NY_Open_LW = input.string ("1px", "", options= , inline="NYOP", group="Vertical Lines")
Equities_Open_LW = input.string ("1px", "", options= , inline="EOP", group="Vertical Lines")
//----------------------------------------------
// Opening Price Bool
ShowMOPP = input.bool (title="", defval=true, inline="MOPP", group="Opening Price Lines", tooltip="00:00 AM")
txt13 = input.string ("MIDNIGHT", title="", inline="MOPP", group="Opening Price Lines")
ShowNYOPP = input.bool (title="", defval=false, inline="NYOPP", group="Opening Price Lines", tooltip="08:30 AM")
txt17 = input.string ("NEW YORK", title="", inline="NYOPP", group="Opening Price Lines")
ShowEOPP = input.bool (title="", defval=false, inline="EOPP", group="Opening Price Lines", tooltip="09:30 AM")
txt18 = input.string ("EQUITIES", title="", inline="EOPP", group="Opening Price Lines")
ShowAFTPP = input.bool (title="", defval=false, inline="AFTOPP", group="Opening Price Lines", tooltip="01:30 PM")
txt1330 = input.string ("AFTERNOON", title="", inline="AFTOPP", group="Opening Price Lines")
// Opening Price Color
MOPColP = input.color (color.new(#787b86, 0), "", inline="MOPP", group="Opening Price Lines")
NYOPColP = input.color (color.new(#787b86, 0), "", inline="NYOPP", group="Opening Price Lines")
EOPColP = input.color (color.new(#787b86, 0), "", inline="EOPP", group="Opening Price Lines")
AFTOPColP = input.color (color.new(#787b86, 0), "", inline="AFTOPP", group="Opening Price Lines")
// Opening Price LineStyle
MOPLS = input.string ("Dotted", "", options= , inline="MOPP", group="Opening Price Lines")
NYOPLS = input.string ("Dotted", "", options= , inline="NYOPP", group="Opening Price Lines")
EOPLS = input.string ("Dotted", "", options= , inline="EOPP", group="Opening Price Lines")
AFTOPLS = input.string ("Dotted", "", options= , inline="AFTOPP", group="Opening Price Lines")
// Opening Price LineWidth
i_MOPLW = input.string ("1px", "", options= , inline="MOPP", group="Opening Price Lines")
i_NYOPLW = input.string ("1px", "", options= , inline="NYOPP", group="Opening Price Lines")
i_EOPLW = input.string ("1px", "", options= , inline="EOPP", group="Opening Price Lines")
i_AFTOPLW = input.string ("1px", "", options= , inline="AFTOPP", group="Opening Price Lines")
//----------------------------------------------
// W&M Bool
ShowWeekOpen = input.bool (defval=false, title="", tooltip="Draw Weekly Open Price Line", group="HTF Opening Price Lines", inline="WO")
showMonthOpen = input.bool (defval=false, title="", tooltip="Draw Monthly Open Price Line", group="HTF Opening Price Lines", inline="MO")
// W&M String
txt19 = input.string ("WEEKLY", title="", inline="WO", group="HTF Opening Price Lines")
txt20 = input.string ("MONTHLY", title="", inline="MO", group="HTF Opening Price Lines")
// W&M Color
i_WeekOpenCol = input.color (title="", defval=color.new(#787b86, 0), group="HTF Opening Price Lines", inline="WO")
i_MonthOpenCol = input.color (title="", tooltip="", defval=color.new(#787b86, 0), group="HTF Opening Price Lines", inline="MO")
// W&M LineStyle
WOLS = input.string ("Dotted", "", options= , inline="WO", group="HTF Opening Price Lines")
MOLS = input.string ("Dotted", "", options= , inline="MO", group="HTF Opening Price Lines")
// W&M LineWidth
i_WOPLW = input.string ("1px", "", options= , inline="WO", group="HTF Opening Price Lines")
i_MONPLW = input.string ("1px", "", options= , inline="MO", group="HTF Opening Price Lines")
//----------------------------------------------
// CBDR, ASIA & FLOUT
ShowCBDR = input.bool (true, "", inline='CBDR', group="CBDR, ASIA & FLOUT")
ShowASIA = input.bool (true, "", inline='ASIA', group="CBDR, ASIA & FLOUT")
ShowFLOUT = input.bool (false, "", inline='FLOUT', group="CBDR, ASIA & FLOUT")
// Strings
txt0 = input.string ("CBDR", title="", inline="CBDR", group="CBDR, ASIA & FLOUT", tooltip="16:00 to 20:00 \nSD Increments of 1")
txt1 = input.string ("ASIA", title="", inline="ASIA", group="CBDR, ASIA & FLOUT", tooltip="20:00 to 00:00 \nSD Increments of 1")
txt7 = input.string ("FLOUT", title="", inline="FLOUT", group="CBDR, ASIA & FLOUT", tooltip="16:00 to 00:00 \nSD Increments of 0.5")
// Color
CBDRBoxCol = input.color (color.new(#787b86, 0),"", inline='CBDR', group="CBDR, ASIA & FLOUT")
ASIABoxCol = input.color (color.new(#787b86, 0), "", inline='ASIA', group="CBDR, ASIA & FLOUT")
FLOUTBoxCol = input.color (color.new(#787b86, 0),"", inline='FLOUT', group="CBDR, ASIA & FLOUT")
// Extras
box_text_cbdr = input.bool (true, "Show Text", inline="CBDR", group="CBDR, ASIA & FLOUT")
box_text_cbdr_col = input.color (color.new(color.gray, 80), "", inline="CBDR", group="CBDR, ASIA & FLOUT")
bool_cbdr_dev = input.bool (true, "SD", inline="CBDR", group="CBDR, ASIA & FLOUT")
box_text_asia = input.bool (true, "Show Text", inline="ASIA", group="CBDR, ASIA & FLOUT")
box_text_asia_col = input.color (color.new(color.gray, 80), "", inline="ASIA", group="CBDR, ASIA & FLOUT")
bool_asia_dev = input.bool (true, "SD", inline="ASIA", group="CBDR, ASIA & FLOUT")
box_text_flout = input.bool (true, "Show Text", inline="FLOUT", group="CBDR, ASIA & FLOUT")
box_text_flout_col = input.color (color.new(color.gray, 80), "", inline="FLOUT", group="CBDR, ASIA & FLOUT")
bool_flout_dev = input.bool (true, "SD", inline="FLOUT", group="CBDR, ASIA & FLOUT")
// Table
// SD Lines
ShowDevLN = input.bool (title="", defval=true, inline="DEVLN", group="Standard Deviation", tooltip="Deviation Lines")
DEVLNTXT = input.string ("SD LINES", title="", inline="DEVLN", group="Standard Deviation")
DevLNCol = input.color (color.new(#787b86, 0), "", inline="DEVLN", group="Standard Deviation")
DEVLS = input.string ("Solid", "", options= , inline="DEVLN", group="Standard Deviation")
i_DEVLW = input.string ("1px", "", options= , inline="DEVLN", group="Standard Deviation")
DEVLSS = DEVLS=="Solid" ? line.style_solid : DEVLS == "Dotted" ? line.style_dotted : line.style_dashed
DEVLW = i_DEVLW=="1px" ? 1 : i_DEVLW == "2px" ? 2 : i_DEVLW == "3px" ? 3 : i_DEVLW == "4px" ? 4 : 5
ShowDev = input.bool (false, '', inline="DEV", group="Standard Deviation")
txt8 = input.string ("SD COUNT", title="", inline="DEV", group="Standard Deviation")
SDCountCol = input.color (color.new(#787b86, 0), "", inline="DEV", group="Standard Deviation")
DevInput = input.string ("2 SD", "", options= , inline="DEV", group="Standard Deviation")
DevDirection = input.string ("Both", "", options= , inline="DEV", group="Standard Deviation", tooltip="SD Count, NULL, SD Count, SD Direction")
DevCount = DevInput == "1 SD" ? 1 : DevInput == "2 SD" ? 2 : DevInput == "3 SD" ? 3 : 4
Auto_Select = input.bool (false, "", group="Standard Deviation", inline="AUTOSD", tooltip="Auto SD Selection | Charter Content, Range Table \nMight Bug Out On Mondays" )
txtSD = input.string ("AUTO SD", "", group="Standard Deviation", inline="AUTOSD")
Tab1txtCol = input.color (color.new(#808080, 0), "", inline='AUTOSD', group="Standard Deviation")
TabOptionShow = input.string ("Show Table", "", options= , inline="AUTOSD", group="Standard Deviation")
Stats = TabOptionShow == "Show Table" ? true : false
TabOption1 = input.string ("Top Right", "", options= , inline="AUTOSD", group="Standard Deviation")
tabinp1 = TabOption1 == "Top Left" ? position.top_left : TabOption1 == "Top Center" ? position.top_center : TabOption1 == "Top Right" ? position.top_right : TabOption1 == "Middle Left" ? position.middle_left : TabOption1 == "Middle Right" ? position.middle_right : TabOption1 == "Bottom Left" ? position.bottom_left : TabOption1 == "Bottom Center" ? position.bottom_center : position.bottom_right
L_Prof = true
CellBG = color.new(#131722, 100)
//----------------------------------------------
// Day Of Week & Labels
// Label Settings Inputs
ShowLabel = input.bool (true, title="", inline="Glabel", group="Day Of Week & Labels")
txt21 = input.string ("LABEL", title="", inline="Glabel", group="Day Of Week & Labels")
LabelColor = input.color (color.rgb(0,0,0,100), "", inline="Glabel", group="Day Of Week & Labels")
LabelSizeInput = input.string ("Normal", "", options= , inline="Glabel", group="Day Of Week & Labels")
Terminusinp = input.string ("Terminus @ Current Time +1hr", "", options = , inline="Glabel", group="Day Of Week & Labels", tooltip="Select Label Size & Color & Terminus \nHistorical Price Lines needs to be toggled off for using Terminus")
ShowLabelText = input.bool (true, title="", inline="label", group="Day Of Week & Labels")
txt22 = input.string ("LABEL TEXT", title="", inline="label", group="Day Of Week & Labels")
LabelTextColor = input.color (color.new(#787b86, 0), title="", inline="label", group="Day Of Week & Labels")
LabelTextOptioninput = input.string ("Time", "", options= , inline="label", group="Day Of Week & Labels", tooltip="Choose Between Descriptive Text as Label or Time \nShow/Hide Prices on Labels")
ShowPricesBool = input.string ("Hide Prices", title="", options= , group="Day Of Week & Labels", inline="label")
ShowPrices = ShowPricesBool == "Show Prices" ? true : false
showDOW = input.bool (true, title="", inline="DOW", group="Day Of Week & Labels")
txt24 = input.string ("DAY OF WEEK", title="", inline="DOW", group="Day Of Week & Labels")
i_DOWCol = input.color (color.new(#787b86, 0), title="", inline="DOW", group="Day Of Week & Labels")
DOWTime = input.int (defval = 12, title="", inline="DOW", group="Day Of Week & Labels")
DOWLoc_inpt = input.string ("Bottom", "", options = , inline="DOW", group="Day Of Week & Labels", tooltip="DOW Color, Time Alignment, Vertical Location")
DOWLoc = DOWLoc_inpt == "Bottom" ? location.bottom : location.top
//----------------------------------------------
BIAS_M_Bool = input.bool (false, "", group="BIAS & NOTES PRECONFIG", inline="stats")
txt100 = input.string ("BIAS", title="", inline="stats", group="BIAS & NOTES PRECONFIG")
TableBG2 = color.new(#131722, 100)
Tab2txtCol = input.color (color.new(#787b86, 0), "", inline='stats', group="BIAS & NOTES PRECONFIG")
TabOption2 = input.string ("Bottom Right", "", options= , inline="stats", group="BIAS & NOTES PRECONFIG")
tabinp2 = TabOption2 == "Top Left" ? position.top_left : TabOption2 == "Top Center" ? position.top_center : TabOption2 == "Top Right" ? position.top_right : TabOption2 == "Middle Left" ? position.middle_left : TabOption2 == "Middle Right" ? position.middle_right : TabOption2 == "Bottom Left" ? position.bottom_left : TabOption2 == "Bottom Center" ? position.bottom_center : position.bottom_right
notesbool = false
NOTES_M_Bool = input.bool (true, "", group="BIAS & NOTES PRECONFIG", inline="stats2")
txt101 = input.string ("NOTES", title="", inline="stats2", group="BIAS & NOTES PRECONFIG")
Tab3txtCol = input.color (color.new(#787b86, 0), "", inline='stats2', group="BIAS & NOTES PRECONFIG")
TabOption3 = input.string ("Top Center", "", options= , inline="stats2", group="BIAS & NOTES PRECONFIG")
tabinp3 = TabOption3 == "Top Left" ? position.top_left : TabOption3 == "Top Center" ? position.top_center : TabOption3 == "Top Right" ? position.top_right : TabOption3 == "Middle Left" ? position.middle_left : TabOption3 == "Middle Right" ? position.middle_right : TabOption3 == "Bottom Left" ? position.bottom_left : TabOption3 == "Bottom Center" ? position.bottom_center : position.bottom_right
BIASbool1 = input.bool (true, '', inline="BIAS1", group="BIAS & NOTES")
txt52 = input.string ("DXY ", title="", inline="BIAS1", group="BIAS & NOTES")
BIASOption1 = input.string ("Unclear", options= , title="", inline="BIAS1", group="BIAS & NOTES")
BIASbool2 = input.bool (true, '', inline="BIAS2", group="BIAS & NOTES")
txt53 = input.string ("SPX ", title="", inline="BIAS2", group="BIAS & NOTES")
BIASOption2 = input.string ("Unclear", options= , title="", inline="BIAS2", group="BIAS & NOTES")
BIASbool3 = input.bool (true, '', inline="BIAS3", group="BIAS & NOTES")
txt54 = input.string ("DOW ", title="", inline="BIAS3", group="BIAS & NOTES")
BIASOption3 = input.string ("Unclear", options= , title="", inline="BIAS3", group="BIAS & NOTES")
BIASbool4 = input.bool (true, '', inline="BIAS4", group="BIAS & NOTES")
txt55 = input.string ("NAS ", title="", inline="BIAS4", group="BIAS & NOTES")
BIASOption4 = input.string ("Unclear", options= , title="", inline="BIAS4", group="BIAS & NOTES")
notes = input.text_area ("@hiran.invest", "Notes", group = "BIAS & NOTES")
//--------------------END OF INPUTS--------------------//
// Pre-Def
DOM = (timeframe.multiplier <= inputMaxInterval) and (timeframe.isintraday)
newDay = ta.change(dayofweek)
newWeek = ta.change(weekofyear)
newMonth = ta.change(time("M"))
transparentcol = color.rgb(255,255,255,100)
LSVLC = color.rgb(255,255,255,100)
NYSVLC = color.rgb(255,255,255,100)
PMSVLC = color.rgb(255,255,255,100)
ASVLC = color.rgb(255,255,255,100)
LSVLS = "dotted"
NYSVLS = "dotted"
PMSVLS = "dotted"
ASVLS = "dotted"
// Functions
isToday = false
if year(timenow) == year(time) and month(timenow) == month(time) and dayofmonth(timenow) == dayofmonth(time)
isToday := true
// Current Week
thisweek = year(timenow) == year(time) and weekofyear(timenow) == weekofyear(time)
LastOneWeek = year(timenow) == year(time) and weekofyear(timenow-604800000) == weekofyear(time)
LastTwoWeek = year(timenow) == year(time) and weekofyear(timenow-1209600000) == weekofyear(time)
LastThreeWeek = year(timenow) == year(time) and weekofyear(timenow-1814400000) == weekofyear(time)
LastFourWeek = year(timenow) == year(time) and weekofyear(timenow-2419200000) == weekofyear(time)
Last4Weeks = false
if thisweek == true or LastOneWeek == true or LastTwoWeek == true or LastThreeWeek == true or LastFourWeek == true
Last4Weeks := true
// Function to draw Vertical Lines
vline(Start, Color, linestyle, LineWidth) =>
line.new(x1=Start, y1=low - ta.tr, x2=Start, y2=high + ta.tr, xloc=xloc.bar_time, extend=extend.both, color=Color, style=linestyle, width=LineWidth)
// Function to convert forex pips into whole numbers
atr = ta.atr(14)
toWhole(number) =>
if syminfo.type == "forex" // This method only works on forex pairs
_return = atr < 1.0 ? (number / syminfo.mintick) / 10 : number
_return := atr >= 1.0 and atr < 100.0 and syminfo.currency == "JPY" ? _return * 100 : _return
else
number
// Function for determining the Start of a Session (taken from the Pinescript manual: www.tradingview.com )
SessionBegins(sess) =>
t = time("", sess , Timezone)
DOM and (not barstate.isfirst) and na(t ) and not na(t)
// BarIn Session
BarInSession(sess) =>
time(timeframe.period, sess, Timezone) != 0
// Label Type Logic
var SFistrue = true
if LabelTextOptioninput == "Time"
SFistrue := true
else
SFistrue := false
// Session String to int
SeshStartHour(Session) =>
math.round(str.tonumber(str.substring(Session,0,2)))
SeshStartMins(Session) =>
math.round(str.tonumber(str.substring(Session,2,4)))
SeshEndHour(Session) =>
math.round(str.tonumber(str.substring(Session,5,7)))
SeshEndMins(Session) =>
math.round(str.tonumber(str.substring(Session,7,9)))
// Time periods
CBDR = "1600-2000:1234567"
ASIA = "2000-0000:1234567"
FLOUT = "1600-0000:1234567"
midsesh = "0000-1600:1234567"
cbdrOpenTime = timestamp (Timezone, year, month, dayofmonth, SeshStartHour(CBDR), SeshStartMins(CBDR), 00)
cbdrEndTime = timestamp (Timezone, year, month, dayofmonth, SeshEndHour(CBDR), SeshEndMins(CBDR), 00)
asiaOpenTime = timestamp (Timezone, year, month, dayofmonth, SeshStartHour(ASIA), SeshStartMins(ASIA), 00)
asiaEndTime = timestamp (Timezone, year, month, dayofmonth, SeshEndHour(ASIA), SeshEndMins(ASIA), 00)+86400000
floutOpenTime = timestamp (Timezone, year, month, dayofmonth, SeshStartHour(FLOUT), SeshStartMins(FLOUT), 00)
floutEndTime = timestamp (Timezone, year, month, dayofmonth, SeshEndHour(FLOUT), SeshEndMins(FLOUT), 00)+86400000
CBDRTime = time (timeframe.period, CBDR, Timezone)
ASIATime = time (timeframe.period, ASIA, Timezone)
FLOUTTime = time (timeframe.period, FLOUT, Timezone)
LabelOnlyToday = true
// Time Periods
LondonStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(LDNsesh), SeshStartMins(LDNsesh), 00)
LondonEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(LDNsesh), SeshEndMins(LDNsesh), 00)
NYStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(NYsesh), SeshStartMins(NYsesh), 00)
NYEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(NYsesh), SeshEndMins(NYsesh), 00)
LCStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(LCsesh), SeshStartMins(LCsesh), 00)
LCEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(LCsesh), SeshEndMins(LCsesh), 00)
PMStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(PMsesh), SeshStartMins(PMsesh), 00)
PMEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(PMsesh), SeshEndMins(PMsesh), 00)
AsianStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(ASIA2sesh), SeshStartMins(ASIA2sesh), 00)
AsianEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(ASIA2sesh), SeshEndMins(ASIA2sesh), 00)
FreeStartTime = timestamp(Timezone, year, month, dayofmonth, SeshStartHour(FreeSesh), SeshStartMins(FreeSesh), 00)
FreeEndTime = timestamp(Timezone, year, month, dayofmonth, SeshEndHour(FreeSesh), SeshEndMins(FreeSesh), 00)
MidnightOpenTime = timestamp(Timezone, year, month, dayofmonth, 0, 0, 00)
CLEANUPTIME = timestamp(Timezone, year, month, dayofmonth, 0, 0, 00) - 16200000
LondonOpenTime = timestamp(Timezone, year, month, dayofmonth, 3, 0, 00)
NYOpenTime = timestamp(Timezone, year, month, dayofmonth, 8, 30, 00)
EquitiesOpenTime = timestamp(Timezone, year, month, dayofmonth, 9, 30, 00)
AfternoonOpenTime = timestamp(Timezone, year, month, dayofmonth, 13, 30, 00)
tMidnight = time("1", "0000-0001:1234567", Timezone)
// Cleanup - Remove old drawing objects
Cleanup(days) =>
// Delete old drawing objects
// One day is 86400000 milliseconds
removal_timestamp = (CLEANUPTIME) - (days * 86400000) // Remove every drawing object older than the start of the Today's Midnight
a_allLines = line.all
a_allLabels = label.all
a_allboxes = box.all
// Remove old lines
if array.size(a_allLines) > 0
for i = 0 to array.size(a_allLines) - 1
line_x2 = line.get_x2(array.get(a_allLines, i))
if line_x2 < (removal_timestamp)
line.delete(array.get(a_allLines, i))
// Remove old labels
if array.size(a_allLabels) > 0
for i = 0 to array.size(a_allLabels) - 1
label_x = label.get_x(array.get(a_allLabels, i))
if label_x < removal_timestamp
label.delete(array.get(a_allLabels, i))
// Remove old boxes
if array.size(a_allboxes) > 0
for i = 0 to array.size(a_allboxes) - 1
box_x = box.get_right(array.get(a_allboxes, i))
if box_x < (removal_timestamp - 86400000)
box.delete(array.get(a_allboxes, i))
// End of Cleanup function
// Terminus Function
Terminus(Terminus_Inp)=>
if Terminus_Inp == "Terminus @ Current Time"
_return = timenow
else if Terminus_Inp == "Terminus @ Current Time +15min"
_return = timenow + 900000
else if Terminus_Inp == "Terminus @ Current Time +30min"
_return = timenow + 1800000
else if Terminus_Inp == "Terminus @ Current Time +45min"
_return = timenow + 2700000
else if Terminus_Inp == "Terminus @ Current Time +1hr"
_return = timenow + 3600000
else if Terminus_Inp == "Terminus @ Current Time +2hr"
_return = timenow + 7200000
else
_return = timenow + 10800000
// Linestyle Function
MNOPLS = Midnight_Open_LS=="Solid" ? line.style_solid : Midnight_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
LNOPLS = london_Open_LS=="Solid" ? line.style_solid : london_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
NWYOPLS = NY_Open_LS=="Solid" ? line.style_solid : NY_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
EQOPLS = Equities_Open_LS=="Solid" ? line.style_solid : Equities_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
MOPLSS = MOPLS=="Solid" ? line.style_solid : MOPLS == "Dotted" ? line.style_dotted : line.style_dashed
NYOPLSS = NYOPLS=="Solid" ? line.style_solid : NYOPLS == "Dotted" ? line.style_dotted : line.style_dashed
EOPLSS = EOPLS=="Solid" ? line.style_solid : EOPLS == "Dotted" ? line.style_dotted : line.style_dashed
AFTOPLSS = AFTOPLS=="Solid" ? line.style_solid : AFTOPLS == "Dotted" ? line.style_dotted : line.style_dashed
WeekOpenLS = WOLS=="Solid" ? line.style_solid : WOLS == "Dotted" ? line.style_dotted : line.style_dashed
MonthOpenLS = MOLS=="Solid" ? line.style_solid : MOLS == "Dotted" ? line.style_dotted : line.style_dashed
// Linewidth Function
MOPLW = Midnight_Open_LW=="1px" ? 1 : Midnight_Open_LW == "2px" ? 2 : Midnight_Open_LW == "3px" ? 3 : Midnight_Open_LW == "4px" ? 4 : 5
LOPLW = London_Open_LW=="1px" ? 1 : London_Open_LW == "2px" ? 2 : London_Open_LW == "3px" ? 3 : London_Open_LW == "4px" ? 4 : 5
NYOPLW = NY_Open_LW=="1px" ? 1 : NY_Open_LW == "2px" ? 2 : NY_Open_LW == "3px" ? 3 : NY_Open_LW == "4px" ? 4 : 5
EOPLW = Equities_Open_LW=="1px" ? 1 : Equities_Open_LW == "2px" ? 2 : Equities_Open_LW == "3px" ? 3 : Equities_Open_LW == "4px" ? 4 : 5
MOPPLW = i_MOPLW=="1px" ? 1 : i_MOPLW == "2px" ? 2 : i_MOPLW == "3px" ? 3 : i_MOPLW == "4px" ? 4 : 5
NYOPPLW = i_NYOPLW=="1px" ? 1 : i_NYOPLW == "2px" ? 2 : i_NYOPLW == "3px" ? 3 : i_NYOPLW == "4px" ? 4 : 5
EOPPLW = i_EOPLW=="1px" ? 1 : i_EOPLW == "2px" ? 2 : i_EOPLW == "3px" ? 3 : i_EOPLW == "4px" ? 4 : 5
AFTOPLW = i_AFTOPLW=="1px" ? 1 : i_AFTOPLW == "2px" ? 2 : i_AFTOPLW == "3px" ? 3 : i_AFTOPLW == "4px" ? 4 : 5
WEEKOPPLW = i_WOPLW=="1px" ? 1 : i_WOPLW == "2px" ? 2 : i_WOPLW == "3px" ? 3 : i_WOPLW == "4px" ? 4 : 5
MONTHOPPLW = i_MONPLW=="1px" ? 1 : i_MONPLW == "2px" ? 2 : i_MONPLW == "3px" ? 3 : i_MONPLW == "4px" ? 4 : 5
// Label Size Function
LabelSize =LabelSizeInput=="Auto" ? size.auto : LabelSizeInput=="Tiny" ? size.tiny : LabelSizeInput=="Small" ? size.small : LabelSizeInput=="Normal" ? size.normal : LabelSizeInput=="Large" ? size.large : size.huge
// Creating Variables
var London_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=LSVLC, width=1)
var London_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=LSVLC, width=1)
var LondonFill = linefill.new(London_Start_Vline, London_End_Vline, LSFC)
var NY_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=NYSVLC, width=1)
var NY_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=NYSVLC, width=1)
var NYFill = linefill.new(NY_Start_Vline, NY_End_Vline, NYSFC)
var LC_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=NYSVLC, width=1)
var LC_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=NYSVLC, width=1)
var LCFill = linefill.new(LC_Start_Vline, LC_End_Vline, LCSFC)
var PM_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=PMSVLC, width=1)
var PM_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=PMSVLC, width=1)
var PMFill = linefill.new(PM_Start_Vline, PM_End_Vline, PMSFC)
var Asian_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=ASVLC, width=1)
var Asian_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=ASVLC, width=1)
var AsianFill = linefill.new(Asian_Start_Vline, Asian_End_Vline, ASFC)
var Free_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=ASVLC, width=1)
var Free_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=ASVLC, width=1)
var FreeFill = linefill.new(Free_Start_Vline, Free_End_Vline, FSFC)
var Midnight_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=MOPColor, width=1)
var London_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=LOPColor, width=1)
var NY_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=NYOPColor, width=1)
var Equities_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=EOPColor, width=1)
// When a New Day Starts, Start Drawing all lines
if newDay and dayofweek != dayofweek.sunday
// London Session
if (ShowLondon and DOM)
if ShowTSO
line.delete(London_Start_Vline )
line.delete(London_End_Vline )
linefill.delete(LondonFill )
London_Start_Vline := vline(LondonStartTime,transparentcol, line.style_solid, 1)
London_End_Vline := vline(LondonEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
LondonFill := linefill.new(London_Start_Vline, London_End_Vline, LSFC)
// New York Session
if (ShowNY and DOM)
if ShowTSO
line.delete(NY_Start_Vline )
line.delete(NY_End_Vline )
linefill.delete(NYFill )
NY_Start_Vline := vline(NYStartTime, transparentcol, line.style_solid, 1)
NY_End_Vline := vline(NYEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
NYFill := linefill.new(NY_Start_Vline, NY_End_Vline, NYSFC)
// London Close
if (ShowLC and DOM)
if ShowTSO
line.delete(LC_End_Vline )
linefill.delete(LCFill )
LC_Start_Vline := vline(LCStartTime, transparentcol, line.style_solid, 1)
LC_End_Vline := vline(LCEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
LCFill := linefill.new(LC_Start_Vline, LC_End_Vline, LCSFC)
// PM Session
if (ShowPM and DOM)
if ShowTSO
line.delete(PM_Start_Vline )
line.delete(PM_End_Vline )
linefill.delete(PMFill )
PM_Start_Vline := vline(PMStartTime, transparentcol, line.style_solid, 1)
PM_End_Vline := vline(PMEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
PMFill := linefill.new(PM_Start_Vline, PM_End_Vline, PMSFC)
// Asian Session
if (ShowAsian and DOM)
if ShowTSO
line.delete(Asian_Start_Vline )
line.delete(Asian_End_Vline )
linefill.delete(AsianFill )
Asian_Start_Vline := vline(AsianStartTime, transparentcol, line.style_solid, 1)
Asian_End_Vline := vline(AsianEndTime, transparentcol, line.style_solid, 1)
// if dayofweek == dayofweek.friday
// // line.delete(Asian_Start_Vline)
// // line.delete(Asian_End_Vline)
// Asian_Start_Vline := vline(MidnightOpenTime+244800000, transparentcol, line.style_solid, 1)
// Asian_End_Vline := vline(MidnightOpenTime+259200000, transparentcol, line.style_solid, 1)
if ShowSFill
AsianFill := linefill.new(Asian_Start_Vline, Asian_End_Vline, ASFC)
// Free Session
if (ShowFreeSesh and DOM)
if ShowTSO
line.delete(Free_Start_Vline )
line.delete(Free_End_Vline )
linefill.delete(FreeFill )
Free_Start_Vline := vline(FreeStartTime, transparentcol, line.style_solid, 1)
Free_End_Vline := vline(FreeEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
FreeFill := linefill.new(Free_Start_Vline, Free_End_Vline, FSFC)
// Midnight Opening Price
if (ShowMOP and DOM)
if MOLHist == false
line.delete(Midnight_Open )
Midnight_Open := vline(MidnightOpenTime, MOPColor, MNOPLS, MOPLW)
// London Opening Price
if (ShowLOP and DOM)
if ShowTSO
line.delete(London_Open )
London_Open := vline(LondonOpenTime, LOPColor, LNOPLS, LOPLW)
// New York Opening Price
if (ShowNYOP and DOM)
if ShowTSO
line.delete(NY_Open )
NY_Open := vline(NYOpenTime, NYOPColor, NWYOPLS, NYOPLW)
// Equities Opening Price
if (ShowEOP and DOM)
if ShowTSO
line.delete(Equities_Open )
Equities_Open := vline(EquitiesOpenTime, EOPColor, EQOPLS, EOPLW)
// Variables
var label MOPLB = na
var line MOPLN = na
var label NYOPLB = na
var line NYOPLN = na
var label EOPLB = na
var line EOPLN = na
var line AFTLN = na
var label AFTLB = na
// New York Midnight Open Price line
var openMidnight = 0.0
if tMidnight
if not tMidnight
openMidnight := open
else
openMidnight := math.max(open, openMidnight)
if (ShowMOPP and (openMidnight != openMidnight ) and DOM and barstate.isconfirmed)
label.delete(MOPLB )
if ShowMOPL == false
line.delete(MOPLN )
MOPLN := line.new(x1=tMidnight, y1=openMidnight, x2=tMidnight+86400000, xloc=xloc.bar_time, y2=openMidnight, color=MOPColP, style=MOPLSS, width=MOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(MOPLN, tMidnight+259200000)
if ShowLabel
MOPLB := label.new(x=tMidnight+86400000, y=openMidnight, xloc=xloc.bar_time, color=LabelColor, textcolor=MOPColP, style=label.style_label_left, size=LabelSize, tooltip="Midnight Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(MOPLB, tMidnight+259200000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(MOPLB, " 00:00 | " + str.tostring(open))
else
label.set_text(MOPLB, " 00:00 ")
label.set_tooltip(MOPLB, "Midnight Opening Price")
else
if ShowPrices == true
label.set_text(MOPLB, " Midnight Opening Price | " + str.tostring(open))
else
label.set_text(MOPLB, " Midnight Opening Price ")
label.set_tooltip(MOPLB, "")
label.set_textcolor(MOPLB, LabelTextColor)
label.set_size(MOPLB,LabelSize)
if time > PMEndTime and time < (MidnightOpenTime + 86400000)
line.delete(MOPLN )
if Terminusinp != "Terminus @ Next Midnight" and ShowMOPL == false
line.set_x2(MOPLN, Terminus(Terminusinp))
label.set_x(MOPLB, Terminus(Terminusinp))
// New York Opening Price Line
if (ShowNYOPP and (time == NYOpenTime) and DOM)
label.delete(NYOPLB )
if ShowPrev == false
line.delete(NYOPLN )
NYOPLN := line.new(x1=NYOpenTime, y1=open, x2=NYOpenTime+55800000, xloc=xloc.bar_time, y2=open, color=NYOPColP, style=NYOPLSS, width=NYOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(NYOPLN, NYOpenTime+228600000)
if ShowLabel
NYOPLB := label.new(x=NYOpenTime+55800000, y=open, xloc=xloc.bar_time, color=LabelColor, textcolor=NYOPColP, style=label.style_label_left, size=LabelSize, tooltip="New York Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(NYOPLB, NYOpenTime+228600000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(NYOPLB, " 08:30 | " + str.tostring(open))
else
label.set_text(NYOPLB, " 08:30 ")
label.set_tooltip(NYOPLB, "New York Opening Price")
else
if ShowPrices == true
label.set_text(NYOPLB, " New York Opening Price | " + str.tostring(open))
else
label.set_text(NYOPLB, " New York Opening Price ")
label.set_tooltip(NYOPLB, "")
label.set_textcolor(NYOPLB, LabelTextColor)
label.set_size(NYOPLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(NYOPLN, Terminus(Terminusinp))
label.set_x(NYOPLB, Terminus(Terminusinp))
// Equities Opening Price Line
if (ShowEOPP and (time == EquitiesOpenTime) and DOM)
label.delete(EOPLB )
if ShowPrev == false
line.delete(EOPLN )
EOPLN := line.new(x1=EquitiesOpenTime, y1=open, x2=EquitiesOpenTime+52200000, xloc=xloc.bar_time, y2=open, color=EOPColP, style=EOPLSS, width=EOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(EOPLN, EquitiesOpenTime+225000000)
if ShowLabel
EOPLB := label.new(x=EquitiesOpenTime+52200000, y=open, xloc=xloc.bar_time, color=LabelColor, textcolor=EOPColP, style=label.style_label_left, size=LabelSize, tooltip="Equities Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(EOPLB, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(EOPLB, " 09:30 | " + str.tostring(open))
else
label.set_text(EOPLB, " 09:30 ")
label.set_tooltip(EOPLB, "Equities Opening Price")
else
if ShowPrices == true
label.set_text(EOPLB, " Equities Opening Price | " + str.tostring(open))
else
label.set_text(EOPLB, " Equities Opening Price ")
label.set_tooltip(EOPLB, "")
label.set_textcolor(EOPLB, LabelTextColor)
label.set_size(EOPLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(EOPLN, Terminus(Terminusinp))
label.set_x(EOPLB, Terminus(Terminusinp))
// Afternoon Opening Price Line
if (ShowAFTPP and (time == AfternoonOpenTime) and DOM)
label.delete(AFTLB )
if ShowPrev == false
line.delete(AFTLN )
AFTLN := line.new(x1=AfternoonOpenTime, y1=open, x2=EquitiesOpenTime+52200000, xloc=xloc.bar_time, y2=open, color=AFTOPColP, style=AFTOPLSS, width=AFTOPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(AFTLN, EquitiesOpenTime+225000000)
if ShowLabel
AFTLB := label.new(x=EquitiesOpenTime+52200000, y=open, xloc=xloc.bar_time, color=LabelColor, textcolor=AFTOPColP, style=label.style_label_left, size=LabelSize, tooltip="Equities Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(AFTLB, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(AFTLB, " 01:30 | " + str.tostring(open))
else
label.set_text(AFTLB, " 01:30 ")
label.set_tooltip(AFTLB, " Afternoon Opening Price")
else
if ShowPrices == true
label.set_text(AFTLB, " Afternoon Opening Price | " + str.tostring(open))
else
label.set_text(AFTLB, " Afternoon Opening Price ")
label.set_tooltip(AFTLB, "")
label.set_textcolor(AFTLB, LabelTextColor)
label.set_size(AFTLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(AFTLN, Terminus(Terminusinp))
label.set_x(AFTLB, Terminus(Terminusinp))
// HTF Variables
var Weekly_open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=i_WeekOpenCol, style=WeekOpenLS, width=1)
var Weekly_openlbl = label.new(x=na, y=na, xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize)
var WeeklyOpenTime = time
var Monthly_open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close, color=i_MonthOpenCol, style=MonthOpenLS, width=1)
var Monthly_openlbl = label.new(x=na, y=na, xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize)
var MonthlyOpenTime = time
// Get HTF Price levels
WeeklyOpen = request.security(syminfo.tickerid, "W", open, lookahead = barmerge.lookahead_on)
MonthlyOpen = request.security(syminfo.tickerid, "M", open, lookahead = barmerge.lookahead_on)
// Weekly Open
if newWeek
WeeklyOpenTime := time
if ShowWeekOpen and newDay and Last4Weeks
label.delete(Weekly_openlbl )
line.delete(Weekly_open )
// if ShowPrev == false
// line.delete(Weekly_open )
Weekly_open:= line.new(x1=WeeklyOpenTime-25200000, y1=WeeklyOpen, x2=EquitiesOpenTime+52200000, xloc=xloc.bar_time, y2=WeeklyOpen, color=i_WeekOpenCol, style=WeekOpenLS, width=WEEKOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(Weekly_open, EquitiesOpenTime+225000000)
if ShowLabel
Weekly_openlbl := label.new(x=EquitiesOpenTime+52200000, y=WeeklyOpen, xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize, tooltip="Weekly Open: " + str.tostring(WeeklyOpen))
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(Weekly_openlbl, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(Weekly_openlbl," W.O. | " + str.tostring(WeeklyOpen))
else
label.set_text(Weekly_openlbl," W.O. ")
label.set_tooltip(Weekly_openlbl, " Weekly Opening Price ")
else
if ShowPrices == true
label.set_text(Weekly_openlbl," Weekly Open | " + str.tostring(WeeklyOpen))
else
label.set_text(Weekly_openlbl," Weekly Open ")
label.set_tooltip(Weekly_openlbl, "")
label.set_textcolor(Weekly_openlbl, LabelTextColor)
label.set_size(Weekly_openlbl, LabelSize)
if timeframe.multiplier > 60
line.set_x2(Weekly_open, AsianEndTime + 232000000)
label.set_x(Weekly_openlbl, AsianEndTime + 232000000)
if timeframe.period == "D"
line.set_x2(Weekly_open, AsianEndTime + 832000000)
label.set_x(Weekly_openlbl, AsianEndTime + 832000000)
if timeframe.period == "M"
line.delete(Weekly_open)
label.delete(Weekly_openlbl)
if Terminusinp != "Terminus @ Next Midnight" and DOM
line.set_x2(Weekly_open, Terminus(Terminusinp))
label.set_x(Weekly_openlbl, Terminus(Terminusinp))
// Monthly Open
if newMonth
MonthlyOpenTime := time
if showMonthOpen and newDay
line.delete(Monthly_open )
label.delete(Monthly_openlbl )
Monthly_open:= line.new(x1=MonthlyOpenTime, y1=MonthlyOpen, x2=AsianEndTime, xloc=xloc.bar_time, y2=MonthlyOpen, color=i_MonthOpenCol, style=MonthOpenLS, width=MONTHOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(Monthly_open, EquitiesOpenTime+225000000)
if ShowLabel
Monthly_openlbl := label.new(x=AsianEndTime, y=MonthlyOpen, xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize, tooltip="Monthly Open: " + str.tostring(MonthlyOpen))
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(Monthly_openlbl, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(Monthly_openlbl," M.O. | " + str.tostring(MonthlyOpen))
else
label.set_text(Monthly_openlbl," M.O. ")
label.set_tooltip(Monthly_openlbl, " Monthly Opening Price ")
else
if ShowPrices == true
label.set_text(Monthly_openlbl, " Monthly Open | " + str.tostring(MonthlyOpen))
else
label.set_text(Monthly_openlbl, " Monthly Open ")
label.set_tooltip(Monthly_openlbl, "")
label.set_textcolor(Monthly_openlbl, LabelTextColor)
label.set_size(Monthly_openlbl, LabelSize)
if timeframe.multiplier > 60
line.set_x2(Monthly_open, AsianEndTime + 232000000)
label.set_x(Monthly_openlbl, AsianEndTime + 232000000)
if timeframe.period == "D"
line.set_x2(Monthly_open, AsianEndTime + 832000000)
label.set_x(Monthly_openlbl, AsianEndTime + 832000000)
if timeframe.period == "W"
line.set_x2(Monthly_open, AsianEndTime + 2592000000)
label.set_x(Monthly_openlbl, AsianEndTime + 2592000000)
if timeframe.period == "M"
line.delete(Monthly_open)
label.delete(Monthly_openlbl)
if Terminusinp != "Terminus @ Next Midnight" and DOM
line.set_x2(Monthly_open, Terminus(Terminusinp))
label.set_x(Monthly_openlbl, Terminus(Terminusinp))
// CBDR Stuff
var float cbdr_hi = na
var float cbdr_lo = na
var float cbdr_diff = na
var box cbdrbox = na
var line cbdr_hi_line = na
var line cbdr_lo_line = na
var line dev01negline = na
var line dev02negline = na
var line dev03negline = na
var line dev04negline = na
var line dev01posline = na
var line dev02posline = na
var line dev03posline = na
var line dev04posline = na
if SessionBegins(CBDR) and DOM
cbdr_hi := high
cbdr_lo := low
cbdr_diff := cbdr_hi - cbdr_lo
if ShowTSO
box.delete(cbdrbox )
line.delete(dev01posline )
line.delete(dev01negline )
line.delete(dev02posline )
line.delete(dev02negline )
line.delete(dev03posline )
line.delete(dev03negline )
line.delete(dev04posline )
line.delete(dev04negline )
if ShowCBDR
cbdrbox := box.new(cbdrOpenTime, cbdr_hi, cbdrEndTime, cbdr_lo, color.new(CBDRBoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time, color.new(CBDRBoxCol,90), txt0, size.auto, color.new(box_text_cbdr_col,80), text_wrap=text.wrap_auto)
if dayofweek == dayofweek.friday
box.set_right(cbdrbox, cbdrOpenTime+187200000)
line.set_x2(cbdr_hi_line, cbdrOpenTime+187200000)
line.set_x2(cbdr_lo_line, cbdrOpenTime+187200000)
if box_text_cbdr == false
box.set_text(cbdrbox, "")
if ShowDev and ShowCBDR and bool_cbdr_dev
for i = 1 to DevCount by 1
if i == 1
dev01posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i, cbdrEndTime, cbdr_hi + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev01negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i, cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev01posline, cbdrOpenTime+187200000)
line.set_x2(dev01negline, cbdrOpenTime+187200000)
if i == 2
dev02posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i, cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev02negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i, cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev02posline, cbdrOpenTime+187200000)
line.set_x2(dev02negline, cbdrOpenTime+187200000)
if i == 3
dev03posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i, cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev03negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i, cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev03posline, cbdrOpenTime+187200000)
line.set_x2(dev03negline, cbdrOpenTime+187200000)
if i == 4
dev04posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i, cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev04negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i, cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev04posline, cbdrOpenTime+187200000)
line.set_x2(dev04negline, cbdrOpenTime+187200000)
else if CBDRTime
cbdr_hi := math.max(high, cbdr_hi)
cbdr_lo := math.min(low, cbdr_lo)
cbdr_diff := cbdr_hi - cbdr_lo
for i = 1 to DevCount by 1
if i == 1 and ShowDev
line.set_y1(dev01posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev01posline, cbdr_hi + cbdr_diff * i)
line.set_y1(dev01negline, cbdr_lo - cbdr_diff * i)
line.set_y2(dev01negline, cbdr_lo - cbdr_diff * i)
if i == 2 and ShowDev
line.set_y1(dev02posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev02posline, cbdr_hi + cbdr_diff * i)
line.set_y1(dev02negline, cbdr_lo - cbdr_diff * i)
line.set_y2(dev02negline, cbdr_lo - cbdr_diff * i)
if i == 3 and ShowDev
line.set_y1(dev03posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev03posline, cbdr_hi + cbdr_diff * i)
line.set_y1(dev03negline, cbdr_lo - cbdr_diff * i)
line.set_y2(dev03negline, cbdr_lo - cbdr_diff * i)
if i == 4 and ShowDev
line.set_y1(dev04posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev04posline, cbdr_hi + cbdr_diff * i)
line.set_y1(dev04negline, cbdr_lo - cbdr_diff * i)
line.set_y2(dev04negline, cbdr_lo - cbdr_diff * i)
if (cbdr_hi > cbdr_hi )
if ShowCBDR
box.set_top(cbdrbox, cbdr_hi)
if (cbdr_lo < cbdr_lo )
if ShowCBDR
box.set_bottom(cbdrbox, cbdr_lo)
if DevDirection == "Upside Only"
line.delete(dev01negline)
line.delete(dev02negline)
line.delete(dev03negline)
line.delete(dev04negline)
else if DevDirection == "Downside Only"
line.delete(dev01posline)
line.delete(dev02posline)
line.delete(dev03posline)
line.delete(dev04posline)
// ASIA Stuff
var float asia_hi = na
var float asia_lo = na
var float asia_diff = na
var box asia_box = na
var line asia_hi_line = na
var line asia_lo_line = na
var line dev01negline_asia = na
var line dev02negline_asia = na
var line dev03negline_asia = na
var line dev04negline_asia = na
var line dev01posline_asia = na
var line dev02posline_asia = na
var line dev03posline_asia = na
var line dev04posline_asia = na
if SessionBegins(ASIA) and DOM
asia_hi := high
asia_lo := low
asia_diff := asia_hi - asia_lo
if ShowTSO
box.delete(asia_box )
line.delete(dev01posline_asia )
line.delete(dev01negline_asia )
line.delete(dev02posline_asia )
line.delete(dev02negline_asia )
line.delete(dev03posline_asia )
line.delete(dev03negline_asia )
line.delete(dev04posline_asia )
line.delete(dev04negline_asia )
if ShowASIA
asia_box := box.new(asiaOpenTime, asia_hi, asiaEndTime, asia_lo, color.new(ASIABoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time, color.new(ASIABoxCol,90), txt1, size.auto, color.new(box_text_asia_col,80), text_wrap=text.wrap_auto)
if box_text_asia == false
box.set_text(asia_box, "")
if ShowDev and ShowASIA and bool_asia_dev
for i = 1 to DevCount by 1
if i == 1
dev01posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff * i, asiaEndTime, asia_hi + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev01negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff * i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if i == 2
dev02posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff * i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev02negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff * i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if i == 3
dev03posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff * i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev03negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff * i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if i == 4
dev04posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff * i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev04negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff * i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
else if ASIATime
asia_hi := math.max(high, asia_hi)
asia_lo := math.min(low, asia_lo)
asia_diff := asia_hi - asia_lo
for i = 1 to DevCount by 1
if i == 1 and ShowDev
line.set_y1(dev01posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev01posline_asia, asia_hi + asia_diff * i)
line.set_y1(dev01negline_asia, asia_lo - asia_diff * i)
line.set_y2(dev01negline_asia, asia_lo - asia_diff * i)
if i == 2 and ShowDev
line.set_y1(dev02posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev02posline_asia, asia_hi + asia_diff * i)
line.set_y1(dev02negline_asia, asia_lo - asia_diff * i)
line.set_y2(dev02negline_asia, asia_lo - asia_diff * i)
if i == 3 and ShowDev
line.set_y1(dev03posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev03posline_asia, asia_hi + asia_diff * i)
line.set_y1(dev03negline_asia, asia_lo - asia_diff * i)
line.set_y2(dev03negline_asia, asia_lo - asia_diff * i)
if i == 4 and ShowDev
line.set_y1(dev04posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev04posline_asia, asia_hi + asia_diff * i)
line.set_y1(dev04negline_asia, asia_lo - asia_diff * i)
line.set_y2(dev04negline_asia, asia_lo - asia_diff * i)
if (asia_hi > asia_hi )
box.set_top(asia_box, asia_hi)
if (asia_lo < asia_lo )
box.set_bottom(asia_box, asia_lo)
if DevDirection == "Upside Only"
line.delete(dev01negline_asia)
line.delete(dev02negline_asia)
line.delete(dev03negline_asia)
line.delete(dev04negline_asia)
else if DevDirection == "Downside Only"
line.delete(dev01posline_asia)
line.delete(dev02posline_asia)
line.delete(dev03posline_asia)
line.delete(dev04posline_asia)
// FLOUT Stuff
var float flout_hi = na
var float flout_lo = na
var float flout_diff = na
var box floutbox = na
var line flout_hi_line = na
var line flout_lo_line = na
var line dev01negline_flout = na
var line dev02negline_flout = na
var line dev03negline_flout = na
var line dev04negline_flout = na
var line dev01posline_flout = na
var line dev02posline_flout = na
var line dev03posline_flout = na
var line dev04posline_flout = na
if SessionBegins(FLOUT) and DOM
flout_hi := high
flout_lo := low
flout_diff := flout_hi - flout_lo
if ShowTSO
box.delete(floutbox )
line.delete(dev01posline_flout )
line.delete(dev01negline_flout )
line.delete(dev02posline_flout )
line.delete(dev02negline_flout )
line.delete(dev03posline_flout )
line.delete(dev03negline_flout )
line.delete(dev04posline_flout )
line.delete(dev04negline_flout )
if ShowFLOUT
floutbox := box.new(floutOpenTime, flout_hi, floutEndTime, flout_lo, color.new(FLOUTBoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time, color.new(FLOUTBoxCol,90), txt7, size.auto, color.new(box_text_flout_col,80), text_wrap=text.wrap_auto)
if dayofweek == dayofweek.friday
box.set_right(floutbox, floutOpenTime+201600000)
line.set_x2(flout_hi_line, floutOpenTime+201600000)
line.set_x2(flout_lo_line, floutOpenTime+201600000)
if box_text_cbdr == false
box.set_text(floutbox, "")
if ShowDev and ShowFLOUT and bool_flout_dev
for i = 0.5 to DevCount by 0.5
if i == 0.5
dev01posline_flout := line.new(floutOpenTime, flout_hi + flout_diff * i, floutEndTime, flout_hi + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev01negline_flout := line.new(floutOpenTime, flout_hi - flout_diff * i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev01posline_flout, floutOpenTime+201600000)
line.set_x2(dev01negline_flout, floutOpenTime+201600000)
if i == 1
dev02posline_flout := line.new(floutOpenTime, flout_hi + flout_diff * i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev02negline_flout := line.new(floutOpenTime, flout_hi - flout_diff * i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev02posline_flout, floutOpenTime+201600000)
line.set_x2(dev02negline_flout, floutOpenTime+201600000)
if i == 1.5
dev03posline_flout := line.new(floutOpenTime, flout_hi + flout_diff * i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev03negline_flout := line.new(floutOpenTime, flout_hi - flout_diff * i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev03posline_flout, floutOpenTime+201600000)
line.set_x2(dev03negline_flout, floutOpenTime+201600000)
if i == 2
dev04posline_flout := line.new(floutOpenTime, flout_hi + flout_diff * i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
dev04negline_flout := line.new(floutOpenTime, flout_hi - flout_diff * i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol, style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev04posline_flout, floutOpenTime+201600000)
line.set_x2(dev04negline_flout, floutOpenTime+201600000)
else if FLOUTTime
flout_hi := math.max(high, flout_hi)
flout_lo := math.min(low, flout_lo)
flout_diff := flout_hi - flout_lo
for i = 0.5 to DevCount by 0.5
if i == 0.5 and ShowDev
line.set_y1(dev01posline_flout, flout_hi + flout_diff * i)
line.set_y2(dev01posline_flout, flout_hi + flout_diff * i)
line.set_y1(dev01negline_flout, flout_lo - flout_diff * i)
line.set_y2(dev01negline_flout, flout_lo - flout_diff * i)
if i == 1 and ShowDev
line.set_y1(dev02posline_flout, flout_hi + flout_diff * i)
line.set_y2(
Advanced Dynamic Swing Anchored VWAP (Adaptive, Smart Pivots)🔹 Overview
The Advanced Dynamic Swing Anchored VWAP is a powerful trading tool that automatically anchors VWAP to detected swing highs and lows, while adapting dynamically to market volatility using ATR-based tracking.
Unlike static VWAP lines, this adaptive version provides smarter trend tracking, real-time pivot detection, and swing labeling (HH, HL, LH, LL) to help traders identify market structure shifts with precision.
✨ Key Features
✅ Swing Pivot Detection – Automatic detection of swing highs & lows based on your chosen period.
✅ Adaptive ATR Tracking – VWAP responsiveness adjusts dynamically with volatility.
✅ Smart Labels – Marks pivots with HH, HL, LH, LL to track market structure.
✅ Trend-Based Coloring – VWAP changes color based on bullish or bearish direction.
✅ Alerts – Get notified instantly on new swing pivots or trend shifts.
✅ Multi-Market Ready – Works across Forex, Crypto, Stocks, and Indices.
🔍 How to Use
Identify Trend Direction – Green VWAP line = bullish swings; Red = bearish swings.
Watch Pivots – HH/HL indicate bullish structure, while LH/LL indicate bearish structure.
Combine With Confirmation – Best used with RSI, MACD, or Price Action for confluence.
Set Alerts – Never miss a trend shift with built-in TradingView alerts.
🎯 Best For
Swing traders looking for precision pivot detection.
Trend-following traders using VWAP-based support/resistance.
Scalpers who need adaptive VWAP levels that adjust to volatility.
Multi-asset traders (Crypto, Forex, Stocks, Futures).
📈 Why This Indicator?
The standard VWAP is static. Anchored VWAP requires manual anchoring. This advanced version automates the process, adapts to volatility, and visually shows pivots for smarter entries and exits.
By combining anchored VWAP logic with adaptive ATR filtering, this tool gives a next-gen trading edge for both discretionary and systematic traders.
Eureka & Phoenix Thrust — NYSE (90% Breadth Days)🚀Eureka & Phoenix Thrust Indicator (NYSE Breadth)
Overview
This free indicator highlights rare but powerful breadth thrust days on the NYSE that can mark important turning points in the market.
It automatically detects both:
📈 Eureka Thrust (90% Up Day)
– At least 90% of NYSE issues advance and at least 90% of NYSE volume is advancing.
– Often signals broad-based institutional buying and strong market demand.
📉 Phoenix Thrust (90% Down Day)
– At least 90% of NYSE issues decline and at least 90% of NYSE volume is declining.
– Reflects broad institutional selling or panic, sometimes marking capitulation lows.
Both signal types were popularized by Lowry’s Research and O’Neil/IBD market models.
Notes
Eureka Thrusts are bullish confirmation signals, especially when clustered.
Phoenix Thrusts often mark panic selling — bearish in the short term, but can precede market bottoms if followed by Eurekas.
These events are rare. You may need to scroll back in history (e.g., March 2020, 2008, 1987) to see them in action.
Disclaimer
This tool is for educational and informational purposes only.
It is not financial advice. Always do your own research and risk management before making trading or investment decisions.
Swing Highs/Lows & Candle Patterns[LuxAlgo] [Filtered]Swing Highs/Lows & Candle Patterns - Tweaked Version
This indicator is a customized and enhanced version of LuxAlgo’s original Swing Highs/Lows & Candle Patterns indicator. It identifies and labels critical swing high and swing low points to help visualize market structure, alongside detecting key reversal candlestick patterns such as Hammer, Inverted Hammer, Bullish Engulfing, Hanging Man, Shooting Star, and Bearish Engulfing.
With added options to selectively display only Lower Highs (LH) and Higher Lows (HL), this tweaked version offers greater flexibility for traders focusing on specific market dynamics. Users can also customize the lookback length and label styling to fit their preferences.
Credit to LuxAlgo for the original concept and foundation of this powerful tool, which this script builds upon to support more tailored technical analysis. Ideal for swing traders and technical analysts seeking improved entry and exit signals through a combination of price swings and candlestick pattern recognition.
Radial Basis Kernel RSI for LoopRadial Basis Kernel RSI for Loop
What it is
An RSI-style oscillator that uses a radial basis function (RBF) kernel to compute a similarity-weighted average of gains and losses across many lookback lengths and kernel widths (γ). By averaging dozens of RSI estimates—each built with different parameters—it aims to deliver a smoother, more robust momentum signal that adapts to changing market conditions.
How it works
The script measures up/down price changes from your chosen Source (default: close).
For each combination of RSI length and Gamma (γ) in your ranges, it builds an RSI where recent bars that look most similar (by price behavior) get more weight via an RBF kernel.
It averages all those RSIs into a single value, then smooths it with your selected Moving Average type (SMA, EMA, WMA, HMA, DEMA) and a light regression-based filter for stability.
Inputs you can tune
Min/Max RSI Kernel Length & Step: Range of RSI lookbacks to include in the ensemble (e.g., 20→40 by 1) or (e.g., 30→50 by 1).
Min/Max Gamma & Step: Controls the RBF “width.” Lower γ = broader similarity (smoother); higher γ = more selective (snappier).
Source: Price series to analyze.
Overbought / Oversold levels: Defaults 70 / 30, with a midline at 50. Shaded regions help visualize extremes.
MA Type & Period (Confluence): Final smoothing on the averaged RSI line (e.g., DEMA(44) by default).
Red “OB” labels when the line crosses down from extreme highs (~80) → potential overbought fade/exit areas.
Green “OS” labels when the line crosses up from extreme lows (~20) → potential oversold bounce/entry areas.
How to use it
Treat it like RSI, but expect fewer whipsaws thanks to the ensemble and kernel weighting.
Common approaches:
Look for crosses back inside the bands (e.g., down from >70 or up from <30).
Use the 50 midline for directional bias (above = bullish momentum tilt; below = bearish).
Combine with trend filters (e.g., your chart MA) for higher-probability signals.
Performance note: This is really heavy and depending on how much time your subscription allows you could experience this timing out. Increasing the step size is the easiest way to reduce the load time.
Works on any symbol or timeframe. Like any oscillator, best used alongside price action and risk management rather than in isolation.
Market Zone Analyzer[BullByte]Understanding the Market Zone Analyzer
---
1. Purpose of the Indicator
The Market Zone Analyzer is a Pine Script™ (version 6) indicator designed to streamline market analysis on TradingView. Rather than scanning multiple separate tools, it unifies four core dimensions—trend strength, momentum, price action, and market activity—into a single, consolidated view. By doing so, it helps traders:
• Save time by avoiding manual cross-referencing of disparate signals.
• Reduce decision-making errors that can arise from juggling multiple indicators.
• Gain a clear, reliable read on whether the market is in a bullish, bearish, or sideways phase, so they can more confidently decide to enter, exit, or hold a position.
---
2. Why a Trader Should Use It
• Unified View: Combines all essential market dimensions into one easy-to-read score and dashboard, eliminating the need to piece together signals manually.
• Adaptability: Automatically adjusts its internal weighting for trend, momentum, and price action based on current volatility. Whether markets are choppy or calm, the indicator remains relevant.
• Ease of Interpretation: Outputs a simple “BULLISH,” “BEARISH,” or “SIDEWAYS” label, supplemented by an intuitive on-chart dashboard and an oscillator plot that visually highlights market direction.
• Reliability Features: Built-in smoothing of the net score and hysteresis logic (requiring consecutive confirmations before flips) minimize false signals during noisy or range-bound phases.
---
3. Why These Specific Indicators?
This script relies on a curated set of well-established technical tools, each chosen for its particular strength in measuring one of the four core dimensions:
1. Trend Strength:
• ADX/DMI (Average Directional Index / Directional Movement Index): Measures how strong a trend is, and whether the +DI line is above the –DI line (bullish) or vice versa (bearish).
• Moving Average Slope (Fast MA vs. Slow MA): Compares a shorter-period SMA to a longer-period SMA; if the fast MA sits above the slow MA, it confirms an uptrend, and vice versa for a downtrend.
• Ichimoku Cloud Differential (Senkou A vs. Senkou B): Provides a forward-looking view of trend direction; Senkou A above Senkou B signals bullishness, and the opposite signals bearishness.
2. Momentum:
• Relative Strength Index (RSI): Identifies overbought (above its dynamically calculated upper bound) or oversold (below its lower bound) conditions; changes in RSI often precede price reversals.
• Stochastic %K: Highlights shifts in short-term momentum by comparing closing price to the recent high/low range; values above its upper band signal bullish momentum, below its lower band signal bearish momentum.
• MACD Histogram: Measures the difference between the MACD line and its signal line; a positive histogram indicates upward momentum, a negative histogram indicates downward momentum.
3. Price Action:
• Highest High / Lowest Low (HH/LL) Range: Over a defined lookback period, this captures breakout or breakdown levels. A closing price near the recent highs (with a positive MA slope) yields a bullish score, and near the lows (with a negative MA slope) yields a bearish score.
• Heikin-Ashi Doji Detection: Uses Heikin-Ashi candles to identify indecision or continuation patterns. A small Heikin-Ashi body (doji) relative to recent volatility is scored as neutral; a larger body in the direction of the MA slope is scored bullish or bearish.
• Candle Range Measurement: Compares each candle’s high-low range against its own dynamic band (average range ± standard deviation). Large candles aligning with the prevailing trend score bullish or bearish accordingly; unusually small candles can indicate exhaustion or consolidation.
4. Market Activity:
• Bollinger Bands Width (BBW): Measures the distance between BB upper and lower bands; wide bands indicate high volatility, narrow bands indicate low volatility.
• Average True Range (ATR): Quantifies average price movement (volatility). A sudden spike in ATR suggests a volatile environment, while a contraction suggests calm.
• Keltner Channels Width (KCW): Similar to BBW but uses ATR around an EMA. Provides a second layer of volatility context, confirming or contrasting BBW readings.
• Volume (with Moving Average): Compares current volume to its moving average ± standard deviation. High volume validates strong moves; low volume signals potential lack of conviction.
By combining these tools, the indicator captures trend direction, momentum strength, price-action nuances, and overall market energy, yielding a more balanced and comprehensive assessment than any single tool alone.
---
4. What Makes This Indicator Stand Out
• Multi-Dimensional Analysis: Rather than relying on a lone oscillator or moving average crossover, it simultaneously evaluates trend, momentum, price action, and activity.
• Dynamic Weighting: The relative importance of trend, momentum, and price action adjusts automatically based on real-time volatility (Market Activity State). For example, in highly volatile conditions, trend and momentum signals carry more weight; in calm markets, price action signals are prioritized.
• Stability Mechanisms:
• Smoothing: The net score is passed through a short moving average, filtering out noise, especially on lower timeframes.
• Hysteresis: Both Market Activity State and the final bullish/bearish/sideways zone require two consecutive confirmations before flipping, reducing whipsaw.
• Visual Interpretation: A fully customizable on-chart dashboard displays each sub-indicator’s value, regime, score, and comment, all color-coded. The oscillator plot changes color to reflect the current market zone (green for bullish, red for bearish, gray for sideways) and shows horizontal threshold lines at +2, 0, and –2.
---
5. Recommended Timeframes
• Short-Term (5 min, 15 min): Day traders and scalpers can benefit from rapid signals, but should enable smoothing (and possibly disable hysteresis) to reduce false whipsaws.
• Medium-Term (1 h, 4 h): Swing traders find a balance between responsiveness and reliability. Less smoothing is required here, and the default parameters (e.g., ADX length = 14, RSI length = 14) perform well.
• Long-Term (Daily, Weekly): Position traders tracking major trends can disable smoothing for immediate raw readings, since higher-timeframe noise is minimal. Adjust lookback lengths (e.g., increase adxLength, rsiLength) if desired for slower signals.
Tip: If you keep smoothing off, stick to timeframes of 1 h or higher to avoid excessive signal “chatter.”
---
6. How Scoring Works
A. Individual Indicator Scores
Each sub-indicator is assigned one of three discrete scores:
• +1 if it indicates a bullish condition (e.g., RSI above its dynamically calculated upper bound).
• 0 if it is neutral (e.g., RSI between upper and lower bounds).
• –1 if it indicates a bearish condition (e.g., RSI below its dynamically calculated lower bound).
Examples of individual score assignments:
• ADX/DMI:
• +1 if ADX ≥ adxThreshold and +DI > –DI (strong bullish trend)
• –1 if ADX ≥ adxThreshold and –DI > +DI (strong bearish trend)
• 0 if ADX < adxThreshold (trend strength below threshold)
• RSI:
• +1 if RSI > RSI_upperBound
• –1 if RSI < RSI_lowerBound
• 0 otherwise
• ATR (as part of Market Activity):
• +1 if ATR > (ATR_MA + stdev(ATR))
• –1 if ATR < (ATR_MA – stdev(ATR))
• 0 otherwise
Each of the four main categories shares this same +1/0/–1 logic across their sub-components.
B. Category Scores
Once each sub-indicator reports +1, 0, or –1, these are summed within their categories as follows:
• Trend Score = (ADX score) + (MA slope score) + (Ichimoku differential score)
• Momentum Score = (RSI score) + (Stochastic %K score) + (MACD histogram score)
• Price Action Score = (Highest-High/Lowest-Low score) + (Heikin-Ashi doji score) + (Candle range score)
• Market Activity Raw Score = (BBW score) + (ATR score) + (KC width score) + (Volume score)
Each category’s summed value can range between –3 and +3 (for Trend, Momentum, and Price Action), and between –4 and +4 for Market Activity raw.
C. Market Activity State and Dynamic Weight Adjustments
Rather than contributing directly to the netScore like the other three categories, Market Activity determines how much weight to assign to Trend, Momentum, and Price Action:
1. Compute Market Activity Raw Score by summing BBW, ATR, KCW, and Volume individual scores (each +1/0/–1).
2. Bucket into High, Medium, or Low Activity:
• High if raw Score ≥ 2 (volatile market).
• Low if raw Score ≤ –2 (calm market).
• Medium otherwise.
3. Apply Hysteresis (if enabled): The state only flips after two consecutive bars register the same high/low/medium label.
4. Set Category Weights:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use the trader’s base weight inputs (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 % by default).
D. Calculating the Net Score
5. Normalize Base Weights (so that the sum of Trend + Momentum + Price Action always equals 100 %).
6. Determine Current Weights based on the Market Activity State (High/Medium/Low).
7. Compute Each Category’s Contribution: Multiply (categoryScore) × (currentWeight).
8. Sum Contributions to get the raw netScore (a floating-point value that can exceed ±3 when scores are strong).
9. Smooth the netScore over two bars (if smoothing is enabled) to reduce noise.
10. Apply Hysteresis to the Final Zone:
• If the smoothed netScore ≥ +2, the bar is classified as “Bullish.”
• If the smoothed netScore ≤ –2, the bar is classified as “Bearish.”
• Otherwise, it is “Sideways.”
• To prevent rapid flips, the script requires two consecutive bars in the new zone before officially changing the displayed zone (if hysteresis is on).
E. Thresholds for Zone Classification
• BULLISH: netScore ≥ +2
• BEARISH: netScore ≤ –2
• SIDEWAYS: –2 < netScore < +2
---
7. Role of Volatility (Market Activity State) in Scoring
Volatility acts as a dynamic switch that shifts which category carries the most influence:
1. High Activity (Volatile):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal +1.
• The script sets Trend weight = 50 % and Momentum weight = 35 %. Price Action weight is minimized at 15 %.
• Rationale: In volatile markets, strong trending moves and momentum surges dominate, so those signals are more reliable than nuanced candle patterns.
2. Low Activity (Calm):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal –1.
• The script sets Price Action weight = 55 %, Trend = 25 %, and Momentum = 20 %.
• Rationale: In quiet, sideways markets, subtle price-action signals (breakouts, doji patterns, small-range candles) are often the best early indicators of a new move.
3. Medium Activity (Balanced):
• Raw Score between –1 and +1 from the four volatility metrics.
• Uses whatever base weights the trader has specified (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
Because volatility can fluctuate rapidly, the script employs hysteresis on Market Activity State: a new High or Low state must occur on two consecutive bars before weights actually shift. This avoids constant back-and-forth weight changes and provides more stability.
---
8. Scoring Example (Hypothetical Scenario)
• Symbol: Bitcoin on a 1-hour chart.
• Market Activity: Raw volatility sub-scores show BBW (+1), ATR (+1), KCW (0), Volume (+1) → Total raw Score = +3 → High Activity.
• Weights Selected: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Signals:
• ADX strong and +DI > –DI → +1
• Fast MA above Slow MA → +1
• Ichimoku Senkou A > Senkou B → +1
→ Trend Score = +3
• Momentum Signals:
• RSI above upper bound → +1
• MACD histogram positive → +1
• Stochastic %K within neutral zone → 0
→ Momentum Score = +2
• Price Action Signals:
• Highest High/Lowest Low check yields 0 (close not near extremes)
• Heikin-Ashi doji reading is neutral → 0
• Candle range slightly above upper bound but trend is strong, so → +1
→ Price Action Score = +1
• Compute Net Score (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 1 × 0.15 = 0.15
• Raw netScore = 1.50 + 0.70 + 0.15 = 2.35
• Since 2.35 ≥ +2 and hysteresis is met, the final zone is “Bullish.”
Although the netScore lands at 2.35 (Bullish), smoothing might bring it slightly below 2.00 on the first bar (e.g., 1.90), in which case the script would wait for a second consecutive reading above +2 before officially classifying the zone as Bullish (if hysteresis is enabled).
---
9. Correlation Between Categories
The four categories—Trend Strength, Momentum, Price Action, and Market Activity—often reinforce or offset one another. The script takes advantage of these natural correlations:
• Bullish Alignment: If ADX is strong and pointed upward, fast MA is above slow MA, and Ichimoku is positive, that usually coincides with RSI climbing above its upper bound and the MACD histogram turning positive. In such cases, both Trend and Momentum categories generate +1 or +2. Because the Market Activity State is likely High (given the accompanying volatility), Trend and Momentum weights are at their peak, so the netScore quickly crosses into Bullish territory.
• Sideways/Consolidation: During a low-volatility, sideways phase, ADX may fall below its threshold, MAs may flatten, and RSI might hover in the neutral band. However, subtle price-action signals (like a small breakout candle or a Heikin-Ashi candle with a slight bias) can still produce a +1 in the Price Action category. If Market Activity is Low, Price Action’s weight (55 %) can carry enough influence—even if Trend and Momentum are neutral—to push the netScore out of “Sideways” into a mild bullish or bearish bias.
• Opposing Signals: When Trend is bullish but Momentum turns negative (for example, price continues up but RSI rolls over), the two scores can partially cancel. Market Activity may remain Medium, in which case the netScore lingers near zero (Sideways). The trader can then wait for either a clearer momentum shift or a fresh price-action breakout before committing.
By dynamically recognizing these correlations and adjusting weights, the indicator ensures that:
• When Trend and Momentum align (and volatility supports it), the netScore leaps strongly into Bullish or Bearish.
• When Trend is neutral but Price Action shows an early move in a low-volatility environment, Price Action’s extra weight in the Low Activity State can still produce actionable signals.
---
10. Market Activity State & Its Role (Detailed)
The Market Activity State is not a direct category score—it is an overarching context setter for how heavily to trust Trend, Momentum, or Price Action. Here’s how it is derived and applied:
1. Calculate Four Volatility Sub-Scores:
• BBW: Compare the current band width to its own moving average ± standard deviation. If BBW > (BBW_MA + stdev), assign +1 (high volatility); if BBW < (BBW_MA × 0.5), assign –1 (low volatility); else 0.
• ATR: Compare ATR to its moving average ± standard deviation. A spike above the upper threshold is +1; a contraction below the lower threshold is –1; otherwise 0.
• KCW: Same logic as ATR but around the KCW mean.
• Volume: Compare current volume to its volume MA ± standard deviation. Above the upper threshold is +1; below the lower threshold is –1; else 0.
2. Sum Sub-Scores → Raw Market Activity Score: Range between –4 and +4.
3. Assign Market Activity State:
• High Activity: Raw Score ≥ +2 (at least two volatility metrics are strongly spiking).
• Low Activity: Raw Score ≤ –2 (at least two metrics signal unusually low volatility or thin volume).
• Medium Activity: Raw Score is between –1 and +1 inclusive.
4. Hysteresis for Stability:
• If hysteresis is enabled, a new state only takes hold after two consecutive bars confirm the same High, Medium, or Low label.
• This prevents the Market Activity State from bouncing around when volatility is on the fence.
5. Set Category Weights Based on Activity State:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use trader’s base weights (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
6. Impact on netScore: Because category scores (–3 to +3) multiply by these weights, High Activity amplifies the effect of strong Trend and Momentum scores; Low Activity amplifies the effect of Price Action.
7. Market Context Tooltip: The dashboard includes a tooltip summarizing the current state—e.g., “High activity, trend and momentum prioritized,” “Low activity, price action prioritized,” or “Balanced market, all categories considered.”
---
11. Category Weights: Base vs. Dynamic
Traders begin by specifying base weights for Trend Strength, Momentum, and Price Action that sum to 100 %. These apply only when volatility is in the Medium band. Once volatility shifts:
• High Volatility Overrides:
• Trend jumps from its base (e.g., 40 %) to 50 %.
• Momentum jumps from its base (e.g., 30 %) to 35 %.
• Price Action is reduced to 15 %.
Example: If base weights were Trend = 40 %, Momentum = 30 %, Price Action = 30 %, then in High Activity they become 50/35/15. A Trend score of +3 now contributes 3 × 0.50 = +1.50 to netScore; a Momentum +2 contributes 2 × 0.35 = +0.70. In total, Trend + Momentum can easily push netScore above the +2 threshold on its own.
• Low Volatility Overrides:
• Price Action leaps from its base (30 %) to 55 %.
• Trend falls to 25 %, Momentum falls to 20 %.
Why? When markets are quiet, subtle candle breakouts, doji patterns, and small-range expansions tend to foreshadow the next swing more effectively than raw trend readings. A Price Action score of +3 in this state contributes 3 × 0.55 = +1.65, which can carry the netScore toward +2—even if Trend and Momentum are neutral or only mildly positive.
Because these weight shifts happen only after two consecutive bars confirm a High or Low state (if hysteresis is on), the indicator avoids constantly flipping its emphasis during borderline volatility phases.
---
12. Dominant Category Explained
Within the dashboard, a label such as “Trend Dominant,” “Momentum Dominant,” or “Price Action Dominant” appears when one category’s absolute weighted contribution to netScore is the largest. Concretely:
• Compute each category’s weighted contribution = (raw category score) × (current weight).
• Compare the absolute values of those three contributions.
• The category with the highest absolute value is flagged as Dominant for that bar.
Why It Matters:
• Momentum Dominant: Indicates that the combined force of RSI, Stochastic, and MACD (after weighting) is pushing netScore farther than either Trend or Price Action. In practice, it means that short-term sentiment and speed of change are the primary drivers right now, so traders should watch for continued momentum signals before committing to a trade.
• Trend Dominant: Means ADX, MA slope, and Ichimoku (once weighted) outweigh the other categories. This suggests a strong directional move is in place; trend-following entries or confirming pullbacks are likely to succeed.
• Price Action Dominant: Occurs when breakout/breakdown patterns, Heikin-Ashi candle readings, and range expansions (after weighting) are the most influential. This often happens in calmer markets, where subtle shifts in candle structure can foreshadow bigger moves.
By explicitly calling out which category is carrying the most weight at any moment, the dashboard gives traders immediate insight into why the netScore is tilting toward bullish, bearish, or sideways.
---
13. Oscillator Plot: How to Read It
The “Net Score” oscillator sits below the dashboard and visually displays the smoothed netScore as a line graph. Key features:
1. Value Range: In normal conditions it oscillates roughly between –3 and +3, but extreme confluences can push it outside that range.
2. Horizontal Threshold Lines:
• +2 Line (Bullish threshold)
• 0 Line (Neutral midline)
• –2 Line (Bearish threshold)
3. Zone Coloring:
• Green Background (Bullish Zone): When netScore ≥ +2.
• Red Background (Bearish Zone): When netScore ≤ –2.
• Gray Background (Sideways Zone): When –2 < netScore < +2.
4. Dynamic Line Color:
• The plotted netScore line itself is colored green in a Bullish Zone, red in a Bearish Zone, or gray in a Sideways Zone, creating an immediate visual cue.
Interpretation Tips:
• Crossing Above +2: Signals a strong enough combined trend/momentum/price-action reading to classify as Bullish. Many traders wait for a clear crossing plus a confirmation candle before entering a long position.
• Crossing Below –2: Indicates a strong Bearish signal. Traders may consider short or exit strategies.
• Rising Slope, Even Below +2: If netScore climbs steadily from neutral toward +2, it demonstrates building bullish momentum.
• Divergence: If price makes a higher high but the oscillator fails to reach a new high, it can warn of weakening momentum and a potential reversal.
---
14. Comments and Their Necessity
Every sub-indicator (ADX, MA slope, Ichimoku, RSI, Stochastic, MACD, HH/LL, Heikin-Ashi, Candle Range, BBW, ATR, KCW, Volume) generates a short comment that appears in the detailed dashboard. Examples:
• “Strong bullish trend” or “Strong bearish trend” for ADX/DMI
• “Fast MA above slow MA” or “Fast MA below slow MA” for MA slope
• “RSI above dynamic threshold” or “RSI below dynamic threshold” for RSI
• “MACD histogram positive” or “MACD histogram negative” for MACD Hist
• “Price near highs” or “Price near lows” for HH/LL checks
• “Bullish Heikin Ashi” or “Bearish Heikin Ashi” for HA Doji scoring
• “Large range, trend confirmed” or “Small range, trend contradicted” for Candle Range
Additionally, the top-row comment for each category is:
• Trend: “Highly Bullish,” “Highly Bearish,” or “Neutral Trend.”
• Momentum: “Strong Momentum,” “Weak Momentum,” or “Neutral Momentum.”
• Price Action: “Bullish Action,” “Bearish Action,” or “Neutral Action.”
• Market Activity: “Volatile Market,” “Calm Market,” or “Stable Market.”
Reasons for These Comments:
• Transparency: Shows exactly how each sub-indicator contributed to its category score.
• Education: Helps traders learn why a category is labeled bullish, bearish, or neutral, building intuition over time.
• Customization: If, for example, the RSI comment says “RSI neutral” despite an impending trend shift, a trader might choose to adjust RSI length or thresholds.
In the detailed dashboard, hovering over each comment cell also reveals a tooltip with additional context (e.g., “Fast MA above slow MA” or “Senkou A above Senkou B”), helping traders understand the precise rule behind that +1, 0, or –1 assignment.
---
15. Real-Life Example (Consolidated)
• Instrument & Timeframe: Bitcoin (BTCUSD), 1-hour chart.
• Current Market Activity: BBW and ATR both spike (+1 each), KCW is moderately high (+1), but volume is only neutral (0) → Raw Market Activity Score = +2 → State = High Activity (after two bars, if hysteresis is on).
• Category Weights Applied: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Sub-Scores:
1. ADX = 25 (above threshold 20) with +DI > –DI → +1.
2. Fast MA (20-period) sits above Slow MA (50-period) → +1.
3. Ichimoku: Senkou A > Senkou B → +1.
→ Trend Score = +3.
• Momentum Sub-Scores:
4. RSI = 75 (above its moving average +1 stdev) → +1.
5. MACD histogram = +0.15 → +1.
6. Stochastic %K = 50 (mid-range) → 0.
→ Momentum Score = +2.
• Price Action Sub-Scores:
7. Price is not within 1 % of the 20-period high/low and slope = positive → 0.
8. Heikin-Ashi body is slightly larger than stdev over last 5 bars with haClose > haOpen → +1.
9. Candle range is just above its dynamic upper bound but trend is already captured, so → +1.
→ Price Action Score = +2.
• Calculate netScore (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 2 × 0.15 = 0.30
• Raw netScore = 1.50 + 0.70 + 0.30 = 2.50 → Immediately classified as Bullish.
• Oscillator & Dashboard Output:
• The oscillator line crosses above +2 and turns green.
• Dashboard displays:
• Trend Regime “BULLISH,” Trend Score = 3, Comment = “Highly Bullish.”
• Momentum Regime “BULLISH,” Momentum Score = 2, Comment = “Strong Momentum.”
• Price Action Regime “BULLISH,” Price Action Score = 2, Comment = “Bullish Action.”
• Market Activity State “High,” Comment = “Volatile Market.”
• Weights: Trend 50 %, Momentum 35 %, Price Action 15 %.
• Dominant Category: Trend (because 1.50 > 0.70 > 0.30).
• Overall Score: 2.50, posCount = (three +1s in Trend) + (two +1s in Momentum) + (two +1s in Price Action) = 7 bullish signals, negCount = 0.
• Final Zone = “BULLISH.”
• The trader sees that both Trend and Momentum are reinforcing each other under high volatility. They might wait one more candle for confirmation but already have strong evidence to consider a long.
---
• .
---
Disclaimer
This indicator is strictly a technical analysis tool and does not constitute financial advice. All trading involves risk, including potential loss of capital. Past performance is not indicative of future results. Traders should:
• Always backtest the “Market Zone Analyzer ” on their chosen symbols and timeframes before committing real capital.
• Combine this tool with sound risk management, position sizing, and, if possible, fundamental analysis.
• Understand that no indicator is foolproof; always be prepared for unexpected market moves.
Goodluck
-BullByte!
---
Turbo Oscillator [RunRox]Introducing Turbo Oscillator by RunRox, our new indicator that combines a multitude of useful and unique features, which we will detail in this post.
List of Advanced Technologies:
Real-Time Divergences: Detects discrepancies between price movements and oscillator indicators to forecast potential price reversals.
Real-Time Hidden Divergences: We identify hidden divergences in real-time. These are not the standard type of divergences; they are opposite to regular divergences, providing unique insights into potential market movements.
Overbought and Oversold Zones: Identifies areas where the market is potentially overextended, suggesting possible entry and exit points.
Signal Line: Indicates the market direction, helping traders to quickly understand current trends.
Money Flow Histogram: Shows the flow of money into and out of the market, providing insights into buying and selling pressure.
Predicted Reversal Zones: Pinpoints areas where the market might experience reversals, aiding in strategic planning and risk management. These zones also serve as potential areas for taking profits, enhancing their utility for exit strategy planning.
Customizable Alerts: You can flexibly set up alerts for any events detected by our indicator, ensuring you stay informed about critical market movements.
To begin with, I would like to describe the difference between classic divergences and hidden divergences.
As you can see, these are opposite situations. Our oscillator identifies both types of divergences and displays them in real-time.
Divergences can serve as points where the price might reverse in the opposite direction, making both classic and hidden divergences powerful tools for spotting reversal points. I'll show a few examples of how divergences are used in our oscillator.
Classic Divergences - which we identify in real-time. As you can see, the price often reacts strongly to the formation of these divergences, frequently changing its direction.
Hidden Divergences - we also observe frequent movement in the opposite direction on the chart. The advantage of our indicator is that we show divergences in real-time without delays, allowing you to react immediately to trend changes.
Overbought and Oversold Zones - These zones allow you to see trend changes when the price is clearly overbought or oversold. When the color changes from a contrasting shade to a neutral one, you can observe the trend shift. The lines work by combining the positivity/negativity of the histogram, the positivity/negativity of the signal line, and the direction of the signal line (red/green). This sophisticated interaction provides precise insights into market conditions, making it an invaluable tool for traders.
Signal Line - This provides insights into trend changes and price reversals. The points on the line better indicate the beginning of a trend shift. These points can vary in size, offering a clearer understanding of the strength of the emerging trend. This feature works in combination with RSI, Stochastic, and MFI. RSI and MFI are top-tier indicators, while Stochastic adds responsiveness and sensitivity to trend changes, ensuring you capture every market movement accurately and promptly.
Money Flow Histogram - As shown in the example, our histogram displays the divergence between money flow and the actual price. You can see that while the price is rising, the money flow is decreasing, indicating insufficient demand for the asset and an imminent trend change. This feature uses MFI with an extended period, providing a more comprehensive and accurate analysis of market conditions. The extended period enhances the reliability of the Money Flow Index, making it an essential tool for identifying subtle shifts in market dynamics.
Predicted Reversal Zones - We automatically identify potential price reversal zones and display them above our overbought and oversold zones. In cases of strong overbought or oversold conditions, we detect potential price pullbacks and mark the beginning of a trend change. This helps you better identify trend shifts. We recommend considering these zones as potential take profit points for your trades.
Customizable Alerts - Our flexible alert system allows you to receive notifications only for the events you are interested in. These can include:
1. Classic Divergences
2. Hidden Divergences
3. Overbought or Oversold conditions on the status line
4. Strong Overbought or Oversold conditions on the status line
5. Signals from the signal line
6. Reversal zones in any direction
Our oscillator is a unique indicator that provides a comprehensive understanding of price movements. It can be used as a standalone tool for analyzing price action.
Here are a few examples of using our Oscillator in practice:
In the example above, you can see three conditions that have formed for a potential trade:
1. Clear overbought condition with a formed reversal point.
2. Decreasing Money Flow Index diverging from the rising price.
3. Formed classic divergence.
The entry point could be the formed divergence, while the exit point could be the overbought condition at the bottom of the oscillator along with the reversal points.
Here's another example of using hidden divergence, where you can see three conditions for a potential trade:
1. Overbought zone
2. Formed hidden divergence
3. Start of bearish movement indicated by the signal line
You can enter the trade either when the hidden divergence forms or wait for confirmation of the trend change by the signal line and enter the trade when the corresponding signal forms on the signal line. The exit point could be the opposite reversal point or the formation of a new hidden divergence.
We have demonstrated a few examples of how you can use our indicator, but we are confident that you will find many more applications in your own strategies.
Oscillator offers a variety of customizable parameters to tailor the indicator to your trading preferences. Here’s what our settings include:
Signal Line
Turn On/Off: Enable or disable the signal line.
Length: Set the length period for the signal line calculation.
Smooth: Adjust the smoothing level of the signal line for more accurate display.
Histogram
Turn On/Off: Enable or disable the histogram.
Length: Set the length period for the histogram calculation.
Smooth: Adjust the smoothing level of the histogram.
Other
Show Divergence Line: Display divergence lines on the chart.
Show Hidden Divergence: Display hidden divergences.
Show Status Line: Show the status line indicating overbought or oversold conditions.
Show TP Signal: Display signals for take profit.
Show Reversal Points: Display potential trend reversal points.
Delete Broken Divergence Lines: Remove broken divergence lines from the chart.
Alerts Customization
Signal Line Bull/Bear: Set alerts for bullish or bearish signals from the signal line.
TP Bull/Bear: Set alerts for take profit signals.
Status Bull/Bear: Set alerts for bullish or bearish status conditions.
Status Bull+/Bear+: Set enhanced alerts for stronger bullish or bearish status conditions.
Divergence Bull/Bear: Set alerts for bullish or bearish divergences.
Hidden Divergence Bull/Bear: Set alerts for hidden bullish or bearish divergences.
With these comprehensive settings, you can fine-tune the Oscillator to perfectly fit your trading strategy and preferences.
Our indicator utilizes technologies such as RSI, Stochastic, and Money Flow Index, with numerous enhancements from our team. It includes exclusive features such as real-time detection of hidden and classic divergences, identification of reversal points using our unique methodology, and much more.
Disclaimer:
While we consider our Turbo Oscillator to be an excellent tool, it is important to understand that past performance is not indicative of future results. We recommend approaching market analysis comprehensively, using a combination of tools and techniques to make well-informed trading decisions. Always consider the full range of market data and risks when using any trading indicator.
MTF_DrawingsLibrary 'MTF_Drawings'
This library helps with drawing indicators and candle charts on all timeframes.
FEATURES
CHART DRAWING : Library provides functions for drawing High Time Frame (HTF) and Low Time Frame (LTF) candles.
INDICATOR DRAWING : Library provides functions for drawing various types of HTF and LTF indicators.
CUSTOM COLOR DRAWING : Library allows to color candles and indicators based on specific conditions.
LINEFILLS : Library provides functions for drawing linefills.
CATEGORIES
The functions are named in a way that indicates they purpose:
{Ind} : Function is meant only for indicators.
{Hist} : Function is meant only for histograms.
{Candle} : Function is meant only for candles.
{Draw} : Function draws indicators, histograms and candle charts.
{Populate} : Function generates necessary arrays required by drawing functions.
{LTF} : Function is meant only for lower timeframes.
{HTF} : Function is meant only for higher timeframes.
{D} : Function draws indicators that are composed of two lines.
{CC} : Function draws custom colored indicators.
USAGE
Import the library into your script.
Before using any {Draw} function it is necessary to use a {Populate} function.
Choose the appropriate one based on the category, provide the necessary arguments, and then use the {Draw} function, forwarding the arrays generated by the {Populate} function.
This doesn't apply to {Draw_Lines}, {LineFill}, or {Barcolor} functions.
EXAMPLE
import Spacex_trader/MTF_Drawings/1 as tf
//Request lower timeframe data.
Security(simple string Ticker, simple string New_LTF, float Ind) =>
float Value = request.security_lower_tf(Ticker, New_LTF, Ind)
Value
Timeframe = input.timeframe('1', 'Timeframe: ')
tf.Draw_Ind(tf.Populate_LTF_Ind(Security(syminfo.tickerid, Timeframe, ta.rsi(close, 14)), 498, color.purple), 1, true)
FUNCTION LIST
HTF_Candle(BarsBack, BodyBear, BodyBull, BordersBear, BordersBull, WickBear, WickBull, LineStyle, BoxStyle, LineWidth, HTF_Open, HTF_High, HTF_Low, HTF_Close, HTF_Bar_Index)
Populates two arrays with drawing data of the HTF candles.
Parameters:
BarsBack (int) : Bars number to display.
BodyBear (color) : Candle body bear color.
BodyBull (color) : Candle body bull color.
BordersBear (color) : Candle border bear color.
BordersBull (color) : Candle border bull color.
WickBear (color) : Candle wick bear color.
WickBull (color) : Candle wick bull color.
LineStyle (string) : Wick style (Solid-Dotted-Dashed).
BoxStyle (string) : Border style (Solid-Dotted-Dashed).
LineWidth (int) : Wick width.
HTF_Open (float) : HTF open price.
HTF_High (float) : HTF high price.
HTF_Low (float) : HTF low price.
HTF_Close (float) : HTF close price.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Two arrays with drawing data of the HTF candles.
LTF_Candle(BarsBack, BodyBear, BodyBull, BordersBear, BordersBull, WickBear, WickBull, LineStyle, BoxStyle, LineWidth, LTF_Open, LTF_High, LTF_Low, LTF_Close)
Populates two arrays with drawing data of the LTF candles.
Parameters:
BarsBack (int) : Bars number to display.
BodyBear (color) : Candle body bear color.
BodyBull (color) : Candle body bull color.
BordersBear (color) : Candle border bear color.
BordersBull (color) : Candle border bull color.
WickBear (color) : Candle wick bear color.
WickBull (color) : Candle wick bull color.
LineStyle (string) : Wick style (Solid-Dotted-Dashed).
BoxStyle (string) : Border style (Solid-Dotted-Dashed).
LineWidth (int) : Wick width.
LTF_Open (float ) : LTF open price.
LTF_High (float ) : LTF high price.
LTF_Low (float ) : LTF low price.
LTF_Close (float ) : LTF close price.
Returns: Two arrays with drawing data of the LTF candles.
Draw_Candle(Box, Line, Offset)
Draws HTF or LTF candles.
Parameters:
Box (box ) : Box array with drawing data.
Line (line ) : Line array with drawing data.
Offset (int) : Offset of the candles.
Returns: Drawing of the candles.
Populate_HTF_Ind(IndValue, BarsBack, IndColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF indicator.
Parameters:
IndValue (float) : Indicator value.
BarsBack (int) : Indicator lines to display.
IndColor (color) : Indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: An array with drawing data of the HTF indicator.
Populate_LTF_Ind(IndValue, BarsBack, IndColor)
Populates one array with drawing data of the LTF indicator.
Parameters:
IndValue (float ) : Indicator value.
BarsBack (int) : Indicator lines to display.
IndColor (color) : Indicator color.
Returns: An array with drawing data of the LTF indicator.
Draw_Ind(Line, Mult, Exe)
Draws one HTF or LTF indicator.
Parameters:
Line (line ) : Line array with drawing data.
Mult (int) : Coordinates multiplier.
Exe (bool) : Display the indicator.
Returns: Drawing of the indicator.
Populate_HTF_Ind_D(IndValue_1, IndValue_2, BarsBack, IndColor_1, IndColor_2, HTF_Bar_Index)
Populates two arrays with drawing data of the HTF indicators.
Parameters:
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
IndColor_1 (color) : First indicator color.
IndColor_2 (color) : Second indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Two arrays with drawing data of the HTF indicators.
Populate_LTF_Ind_D(IndValue_1, IndValue_2, BarsBack, IndColor_1, IndColor_2)
Populates two arrays with drawing data of the LTF indicators.
Parameters:
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
IndColor_1 (color) : First indicator color.
IndColor_2 (color) : Second indicator color.
Returns: Two arrays with drawing data of the LTF indicators.
Draw_Ind_D(Line_1, Line_2, Mult, Exe_1, Exe_2)
Draws two LTF or HTF indicators.
Parameters:
Line_1 (line ) : First line array with drawing data.
Line_2 (line ) : Second line array with drawing data.
Mult (int) : Coordinates multiplier.
Exe_1 (bool) : Display the first indicator.
Exe_2 (bool) : Display the second indicator.
Returns: Drawings of the indicators.
Barcolor(Box, Line, BarColor)
Colors the candles based on indicators output.
Parameters:
Box (box ) : Candle box array.
Line (line ) : Candle line array.
BarColor (color ) : Indicator color array.
Returns: Colored candles.
Populate_HTF_Ind_D_CC(IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, IndColor_1, HTF_Bar_Index)
Populates two array with drawing data of the HTF indicators with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bear color.
IndColor_1 (color) : First indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Three arrays with drawing and color data of the HTF indicators.
Populate_LTF_Ind_D_CC(IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, IndColor_1)
Populates two arrays with drawing data of the LTF indicators with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
IndColor_1 (color) : First indicator color.
Returns: Three arrays with drawing and color data of the LTF indicators.
Populate_HTF_Hist_CC(HistValue, IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF histogram with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
HistValue (float) : Indicator value.
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
HTF_Bar_Index (int) : HTF bar_index
Returns: Two arrays with drawing and color data of the HTF histogram.
Populate_LTF_Hist_CC(HistValue, IndValue_1, IndValue_2, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF histogram with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
HistValue (float ) : Indicator value.
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two array with drawing and color data of the LTF histogram.
Populate_LTF_Hist_CC_VA(HistValue, Value, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF histogram with color based on: HistValue >= Value ? BullColor : BearColor.
Parameters:
HistValue (float ) : Indicator value.
Value (float) : First indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two array with drawing and color data of the LTF histogram.
Populate_HTF_Ind_CC(IndValue, IndValue_1, BarsBack, BullColor, BearColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF indicator with color based on: IndValue >= IndValue_1 ? BullColor : BearColor.
Parameters:
IndValue (float) : Indicator value.
IndValue_1 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
HTF_Bar_Index (int) : HTF bar_index
Returns: Two arrays with drawing and color data of the HTF indicator.
Populate_LTF_Ind_CC(IndValue, IndValue_1, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF indicator with color based on: IndValue >= IndValue_1 ? BullColor : BearColor.
Parameters:
IndValue (float ) : Indicator value.
IndValue_1 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two arrays with drawing and color data of the LTF indicator.
Draw_Lines(BarsBack, y1, y2, LineType, Fill)
Draws price lines on indicators.
Parameters:
BarsBack (int) : Indicator lines to display.
y1 (float) : Coordinates of the first line.
y2 (float) : Coordinates of the second line.
LineType (string) : Line type.
Fill (color) : Fill color.
Returns: Drawing of the lines.
LineFill(Upper, Lower, BarsBack, FillColor)
Fills two lines with linefill HTF or LTF.
Parameters:
Upper (line ) : Upper line.
Lower (line ) : Lower line.
BarsBack (int) : Indicator lines to display.
FillColor (color) : Fill color.
Returns: Linefill of the lines.
Populate_LTF_Hist(HistValue, BarsBack, HistColor)
Populates one array with drawing data of the LTF histogram.
Parameters:
HistValue (float ) : Indicator value.
BarsBack (int) : Indicator lines to display.
HistColor (color) : Indicator color.
Returns: One array with drawing data of the LTF histogram.
Populate_HTF_Hist(HistValue, BarsBack, HistColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF histogram.
Parameters:
HistValue (float) : Indicator value.
BarsBack (int) : Indicator lines to display.
HistColor (color) : Indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: One array with drawing data of the HTF histogram.
Draw_Hist(Box, Mult, Exe)
Draws HTF or LTF histogram.
Parameters:
Box (box ) : Box Array.
Mult (int) : Coordinates multiplier.
Exe (bool) : Display the histogram.
Returns: Drawing of the histogram.
Multiple (12) Strong Buy/Sell Signals + Momentum
Indicator Manual: "Multiple (12) Strong Buy/Sell Signals + Momentum"
This indicator is designed to identify strong buy and sell signals based on 12 configurable conditions, which include a variety of technical analysis methods such as trend-following indicators, pattern recognition, volume analysis, and momentum oscillators. It allows for customizable alerts and visual cues on the chart. The indicator helps traders spot potential entry and exit points by displaying buy and sell signals based on the selected conditions.
Key Observations:
• The script integrates multiple indicators and pattern recognition methods to provide comprehensive buy/sell signals.
• Trend-based indicators like EMAs and MACD are combined with pattern recognition (flags, triangles) and momentum-based signals (RSI, ADX, and volume analysis).
• User customization is a core feature, allowing adjustments to the conditions and thresholds for more tailored signals.
• The script is designed to be responsive to market conditions, with multiple conditions filtering out noise to generate reliable signals.
________________________________________
Key Features:
1. 12 Combined Buy/Sell Signal Conditions: This indicator incorporates a diverse set of conditions based on trend analysis, momentum, and price patterns.
2. Minimum Conditions Input: You can adjust the threshold of conditions that need to be met for the buy/sell signals to appear.
3. Alert Customization: Set alert thresholds for both buy and sell signals.
4. Dynamic Visualization: Buy and sell signals are shown as triangles on the chart, with momentum signals highlighted as circles.
________________________________________
Detailed Description of the 12 Conditions:
1. Exponential Moving Averages (EMA):
o Conditions: The indicator uses EMAs with periods 3, 8, and 13 for quick trend-following signals.
o Bullish Signal: EMA3 > EMA8 > EMA13 (Bullish stack).
o Bearish Signal: EMA3 < EMA8 < EMA13 (Bearish stack).
o Reversal Signal: The crossing over or under of these EMAs can signify trend reversals.
2. MACD (Moving Average Convergence Divergence):
o Fast MACD (2, 7, 3) is used to confirm trends quickly.
o Bullish Signal: When the MACD line crosses above the signal line.
o Bearish Signal: When the MACD line crosses below the signal line.
3. Donchian Channel:
o Tracks the highest high and lowest low over a given period (default 20).
o Breakout Signal: Price breaking above the upper band is bullish; breaking below the lower band is bearish.
4. VWAP (Volume-Weighted Average Price):
o Above VWAP: Bullish condition (price above VWAP).
o Below VWAP: Bearish condition (price below VWAP).
5. EMA Stacking & Reversal:
o Tracks the order of EMAs (3, 8, 13) to confirm strong trends and reversals.
o Bullish Reversal: EMA3 < EMA8 < EMA13 followed by a crossing to bullish.
o Bearish Reversal: EMA3 > EMA8 > EMA13 followed by a crossing to bearish.
6. Bull/Bear Flags:
o Bull Flag: Characterized by a strong price movement (flagpole) followed by a pullback and breakout.
o Bear Flag: Similar to Bull Flag but in the opposite direction.
7. Triangle Patterns (Ascending and Descending):
o Detects ascending and descending triangles using pivot highs and lows.
o Ascending Triangle: Higher lows and flat resistance.
o Descending Triangle: Lower highs and flat support.
8. Volume Sensitivity:
o Identifies price moves with significant volume increases.
o High Volume: When current volume is significantly above the moving average volume (set to 1.2x of the average).
9. Momentum Indicators:
o RSI (Relative Strength Index): Confirms overbought and oversold levels with thresholds set at 65 (overbought) and 35 (oversold).
o ADX (Average Directional Index): Confirms strong trends when ADX > 28.
o Momentum Up: Momentum is upward with strong volume and bullish RSI/ADX conditions.
o Momentum Down: Momentum is downward with strong volume and bearish RSI/ADX conditions.
10. Bollinger & Keltner Squeeze:
o Squeeze Condition: A contraction in both Bollinger Bands and Keltner Channels indicates low volatility, signaling a potential breakout.
o Squeeze Breakout: Price breaking above or below the squeeze bands.
11. 3 Consecutive Candles Condition:
o Bullish: Price rises for three consecutive candles with higher highs and lows.
o Bearish: Price falls for three consecutive candles with lower highs and lows.
12. Williams %R and Stochastic RSI:
o Williams %R: A momentum oscillator with signals when the line crosses certain levels.
o Stochastic RSI: Provides overbought/oversold levels with smoother signals.
o Combined Signals: You can choose whether to require both WPR and StochRSI to signal a buy/sell.
________________________________________
User Inputs (Inputs Tab):
1. Minimum Conditions for Buy/Sell:
o min_conditions: Number of conditions required to trigger a buy/sell signal on the chart (1 to 12).
o Alert_min_conditions: User-defined alert threshold (how many conditions must be met before an alert is triggered).
2. Donchian Channel Settings:
o Show Donchian: Toggle visibility of the Donchian channel.
o Donchian Length: The length of the Donchian Channel (default 20).
3. Bull/Bear Flag Settings:
o Bull Flag Flagpole Strength: ATR multiplier to define the strength of the flagpole.
o Bull Flag Pullback Length: Length of pullback for the bull flag pattern.
o Bull Flag EMA Length: EMA length used to confirm trend during bull flag pattern.
Similar settings exist for Bear Flag patterns.
4. Momentum Indicators:
o RSI Length: Period for calculating the RSI (default 9).
o RSI Overbought: Overbought threshold for the RSI (default 65).
o RSI Oversold: Oversold threshold for the RSI (default 35).
5. Bollinger/Keltner Squeeze Settings:
o Squeeze Width Threshold: The maximum width of the Bollinger and Keltner Bands for squeeze conditions.
6. Stochastic RSI Settings:
o Stochastic RSI Length: The period for calculating the Stochastic RSI.
7. WPR Settings:
o WPR Length: Period for calculating Williams %R (default 14).
________________________________________
User Inputs (Style Tab):
1. Signal Plotting:
o Control the display and colors of the buy/sell signals, momentum indicators, and pattern signals on the chart.
o Buy/Sell Signals: Can be customized with different colors and shapes (triangle up for buys, triangle down for sells).
o Momentum Signals: Custom circle placement for momentum-up or momentum-down signals.
2. Donchian Channel:
o Show Donchian: Toggle visibility of the Donchian upper, lower, and middle bands.
o Band Colors: Choose the color for each band (upper, lower, middle).
________________________________________
How to Use the Indicator:
1. Adjust Minimum Conditions: Set the minimum number of conditions that must be met for a signal to appear. For example, set it to 5 if you want only stronger signals.
2. Set Alert Threshold: Define the number of conditions needed to trigger an alert. This can be different from the minimum conditions for visual signals.
3. Customize Appearance: Modify the colors and styles of the signals to match your preferences.
________________________________________
Conclusion:
This comprehensive trading indicator uses a combination of trend-following, pattern recognition, and momentum-based conditions to help you spot potential buy and sell opportunities. By adjusting the input settings, you can fine-tune it to match your specific trading strategy, making it a versatile tool for different market conditions.
Signal Reliability Based on Condition Count
The reliability of the buy/sell signals increases as more conditions are met. Here's a breakdown of the probabilities:
1. 1-3 Conditions Met: Lower Probability
o Signals that meet only 1-3 conditions tend to have lower reliability and are considered less probable. These signals may represent false positives or weaker market movements, and traders should approach them with caution.
2. 4 Conditions Met: More Reliable Signal
o When 4 conditions are met, the signal becomes more reliable. This indicates that multiple indicators or market patterns are aligning, increasing the likelihood of a valid buy/sell opportunity. While not foolproof, it's a stronger indication that the market may be moving in a particular direction.
3. 5-6 Conditions Met: Strong Signal
o A signal meeting 5-6 conditions is considered a strong signal. This indicates a well-confirmed move, with several technical indicators and market factors aligning to suggest a higher probability of success. These are the signals that traders often prioritize.
4. 7+ Conditions Met: Rare and High-Confidence Signal
o Signals that meet 7 or more conditions are rare and should be considered high-confidence signals. These represent a significant alignment of multiple factors, and while they are less frequent, they are highly reliable when they do occur. Traders can be more confident in acting on these signals, but they should still monitor market conditions for confirmation.
________________________________________
You can adjust the number of conditions as needed, but this breakdown should give a clear structure on how the signal strength correlates with the number of conditions met!
BTC Markup/Markdown Zones by Koenigsegg📈 BTC Markup/Markdown Zones
A handcrafted indicator designed to mark Bitcoin's most critical High Time Frame (HTF) structure shifts. This tool overlays true institutional-level Markup and Markdown Zones, selected manually after deep market review. Whether you're testing strategies or actively trading, this tool gives you the bigger picture at all times.
🔍 Key Features:
✅ HTF Markup & Markdown Zones
Every zone is manually selected — no indicators, no repainting. Just raw market history and real structure.
✅ Two Display Modes
• Background Zones — soft overlays with low opacity for visual context — with the option to increase opacity manually if desired.
• Start Candle Highlight — sharply highlighted candle marking the final pivot before a macro reversal.
✅ Custom Color Controls (Style Tab)
All visual styling lives in the Style tab, with clearly labeled fields:
• Markup Zone
• Markdown Zone
• Start Candle Highlight Markup
• Start Candle Highlight Markdown
✅ Minimal Input Section
Just one toggle: display mode. Everything else is kept clean and intuitive.
🧠 Purpose:
This script is made for any timeframe:
• Zoom into lower timeframes to know whether you're trading inside a Markup or Markdown
• Use it during strategy testing for true structural awareness
📅 Handpicked Macro Turning Points:
Each zone originates from a manually confirmed candle — the last meaningful candle before a shift in control between bulls and bears:
• FRI 19 AUG 2011 12PM – MARK DOWN
• THU 20 OCT 2011 12AM – MARK UP
• WED 10 APR 2013 12PM – MARK DOWN
• FRI 12 APR 2013 12PM – MARK UP
• SAT 30 NOV 2013 12AM – MARK DOWN
• WED 14 JAN 2015 12PM – MARK UP
• SUN 17 DEC 2017 12PM – MARK DOWN
• SAT 15 DEC 2018 12PM – MARK UP
• WED 14 APR 2021 4AM – MARK DOWN
• TUE 22 JUN 2021 12PM – MARK UP
• WED 10 NOV 2021 12PM – MARK DOWN
• MON 21 NOV 2022 8PM – MARK UP
• THU 14 MAR 2024 4AM – MARK DOWN
• MON 5 AUG 2024 12PM – MARK UP
• MON 20 JAN 2025 4AM – MARK DOWN
💡 Zones are manually updated by me after each new confirmed Markup or Markdown.
🧬 Fractal Structure for MTF Systems
Price is fractal — meaning the same principles of structure repeat across all timeframes. In Version 2, this tool evolves by introducing manually selected sub-zones inside each High Time Frame (HTF) Markup or Markdown. These sub-zones reflect Medium Timeframe (MTF) structure shifts, offering precision for traders who operate on both intraday and swing levels.
This makes the indicator ideal for low timeframe (LTF) Markup/Markdown awareness — whether you're managing 15m entries or building multi-timeframe confluence systems.
No auto-zones. No guesswork. Just clean, intentional structure division within the broader trend, handpicked for maximum clarity and edge.
💡 Pro Tip:
When price is inside a Markup Zone, shorting becomes riskier — you're trading against a macro bullish structure.
When inside a Markdown Zone, longing becomes riskier — you're fighting against confirmed bearish momentum.
Use this tool to stay aligned with the broader move, especially when zoomed into smaller timeframes or managing entries/exits during intraday setups.
📈 Markup Phase – Bullish Sentiment
Definition: A period where price makes higher highs and higher lows — the uptrend is in full force.
Why sentiment is bullish:
- Institutions and smart money are already positioned long.
- Public/institutional demand drives prices up.
- Momentum is supported by positive news, breakouts, and FOMO.
- Higher highs confirm buyers are in control.
📉 Markdown Phase – Bearish Sentiment
Definition: A period where price makes lower lows and lower highs — clear downtrend.
Why sentiment is bearish:
- Distribution has already occurred, and supply outweighs demand.
- Smart money is short or sidelined, waiting for deeper prices.
- Panic selling or trend-following traders add downside momentum.
- Lower lows confirm sellers are in control.
❌ Trading Against the Trend — Consequences:
-Reduced Probability of Success
-You’re fighting the dominant flow. Most participants are pushing in the opposite direction.
-Drawdowns & Stop-Outs
-Countertrend trades often get wicked or flushed before any meaningful move, especially without structure-based entries.
-Low Risk-Reward Ratio
-Trends offer sustained moves. Countertrend trades may have small take-profit zones or chop.
-Mental Drain & Doubt
-Fighting momentum causes anxiety, second-guessing, and emotional reactions.
-Missed Opportunities
-Focusing on fighting the trend makes you blind to the high-probability setups with the trend.
-Increased Transaction Costs
-More stop-outs and re-entries mean more fees, more friction.
-FOMO from Watching the Trend Run
-Entering countertrend means you might watch the trend explode without you.
-Confirmation Bias & Stubbornness
-Countertrend traders often look for reasons to justify staying in the wrong direction — leading to bigger losses.
🧠 Summary
In markup = bulls dominate → you swim with the current.
In markdown = bears dominate → going long is like pushing a rock uphill.
Trading with the trend is not just safer, it's smarter. The edge lives in momentum — not ego.
⚠️ Disclaimer
This indicator is for educational and analytical use only. It is not financial advice and should not be relied on for decision-making without personal analysis.
This is not a predictive tool. No indicator can forecast upcoming price movements.
What you see here is based purely on past market behavior — specifically, historical tops and bottoms that marked the start of confirmed reversals.
This script does not know where the next reversal begins, nor can it determine where a new Markup or Markdown starts or ends. It is designed to provide context, not prediction.
Always trade with responsibility and perform your own due diligence.
AI Momentum [YinYang]Overview:
AI Momentum is a kernel function based momentum Indicator. It uses Rational Quadratics to help smooth out the Moving Averages, this may give them a more accurate result. This Indicator has 2 main uses, first it displays ‘Zones’ that help you visualize the potential movement areas and when the price is out of bounds (Overvalued or Undervalued). Secondly it creates signals that display the momentum of the current trend.
The Zones are composed of the Highest Highs and Lowest lows turned into a Rational Quadratic over varying lengths. These create our Rational High and Low zones. There is however a second zone. The second zone is composed of the avg of the Inner High and Inner Low zones (yellow line) and the Rational Quadratic of the current Close. This helps to create a second zone that is within the High and Low bounds that may represent momentum changes within these zones. When the Rationalized Close crosses above the High and Low Zone Average it may signify a bullish momentum change and vice versa when it crosses below.
There are 3 different signals created to display momentum:
Bullish and Bearish Momentum. These signals display when there is current bullish or bearish momentum happening within the trend. When the momentum changes there will likely be a lull where there are neither Bullish or Bearish momentum signals. These signals may be useful to help visualize when the momentum has started and stopped for both the bulls and the bears. Bullish Momentum is calculated by checking if the Rational Quadratic Close > Rational Quadratic of the Highest OHLC4 smoothed over a VWMA. The Bearish Momentum is calculated by checking the opposite.
Overly Bullish and Bearish Momentum. These signals occur when the bar has Bullish or Bearish Momentum and also has an Rationalized RSI greater or less than a certain level. Bullish is >= 57 and Bearish is <= 43. There is also the option to ‘Factor Volume’ into these signals. This means, the Overly Bullish and Bearish Signals will only occur when the Rationalized Volume > VWMA Rationalized Volume as well as the previously mentioned factors above. This can be useful for removing ‘clutter’ as volume may dictate when these momentum changes will occur, but it can also remove some of the useful signals and you may miss the swing too if the volume just was low. Overly Bullish and Bearish Momentum may dictate when a momentum change will occur. Remember, they are OVERLY Bullish and Bearish, meaning there is a chance a correction may occur around these signals.
Bull and Bear Crosses. These signals occur when the Rationalized Close crosses the Gaussian Close that is 2 bars back. These signals may show when there is a strong change in momentum, but be careful as more often than not they’re predicting that the momentum may change in the opposite direction.
Tutorial:
As we can see in the example above, generally what happens is we get the regular Bullish or Bearish momentum, followed by the Rationalized Close crossing the Zone average and finally the Overly Bullish or Bearish signals. This is normally the order of operations but isn’t always how it happens as sometimes momentum changes don’t make it that far; also the Rationalized Close and Zone Average don’t follow any of the same math as the Signals which can result in differing appearances. The Bull and Bear Crosses are also quite sporadic in appearance and don’t generally follow any sort of order of operations. However, they may occur as a Predictor between Bullish and Bearish momentum, signifying the beginning of the momentum change.
The Bull and Bear crosses may be a Predictor of momentum change. They generally happen when there is no Bullish or Bearish momentum happening; and this helps to add strength to their prediction. When they occur during momentum (orange circle) there is a less likely chance that it will happen, and may instead signify the exact opposite; it may help predict a large spike in momentum in the direction of the Bullish or Bearish momentum. In the case of the orange circle, there is currently Bearish Momentum and therefore the Bull Cross may help predict a large momentum movement is about to occur in favor of the Bears.
We have disabled signals here to properly display and talk about the zones. As you can see, Rationalizing the Highest Highs and Lowest Lows over 2 different lengths creates inner and outer bounds that help to predict where parabolic movement and momentum may move to. Our Inner and Outer zones are great for seeing potential Support and Resistance locations.
The secondary zone, which can cross over and change from Green to Red is also a very important zone. Let's zoom in and talk about it specifically.
The Middle Zone Crosses may help deduce where parabolic movement and strong momentum changes may occur. Generally what may happen is when the cross occurs, you will see parabolic movement to the High / Low zones. This may be the Inner zone but can sometimes be the outer zone too. The hard part is sometimes it can be a Fakeout, like displayed with the Blue Circle. The Cross doesn’t mean it may move to the opposing side, sometimes it may just be predicting Parabolic movement in a general sense.
When we turn the Momentum Signals back on, we can see where the Fakeout occurred that it not only almost hit the Inner Low Zone but it also exhibited 2 Overly Bearish Signals. Remember, Overly bearish signals mean a momentum change in favor of the Bulls may occur soon and overly Bullish signals mean a momentum change in favor of the Bears may occur soon.
You may be wondering, well what does “may occur soon” mean and how do we tell?
The purpose of the momentum signals is not only to let you know when Momentum has occurred and when it is still prevalent. It also matters A LOT when it has STOPPED!
In this example above, we look at when the Overly Bullish and Bearish Momentum has STOPPED. As you can see, when the Overly Bullish or Bearish Momentum stopped may be a strong predictor of potential momentum change in the opposing direction.
We will conclude our Tutorial here, hopefully this Indicator has been helpful for showing you where momentum is occurring and help predict how far it may move. We have been dabbling with and are planning on releasing a Strategy based on this Indicator shortly.
Settings:
1. Momentum:
Show Signals: Sometimes it can be difficult to visualize the zones with signals enabled.
Factor Volume: Factor Volume only applies to Overly Bullish and Bearish Signals. It's when the Volume is > VWMA Volume over the Smoothing Length.
Zone Inside Length: The Zone Inside is the Inner zone of the High and Low. This is the length used to create it.
Zone Outside Length: The Zone Outside is the Outer zone of the High and Low. This is the length used to create it.
Smoothing length: Smoothing length is the length used to smooth out our Bullish and Bearish signals, along with our Overly Bullish and Overly Bearish Signals.
2. Kernel Settings:
Lookback Window: The number of bars used for the estimation. This is a sliding value that represents the most recent historical bars. Recommended range: 3-50.
Relative Weighting: Relative weighting of time frames. As this value approaches zero, the longer time frames will exert more influence on the estimation. As this value approaches infinity, the behavior of the Rational Quadratic Kernel will become identical to the Gaussian kernel. Recommended range: 0.25-25.
Start Regression at Bar: Bar index on which to start regression. The first bars of a chart are often highly volatile, and omission of these initial bars often leads to a better overall fit. Recommended range: 5-25.
If you have any questions, comments, ideas or concerns please don't hesitate to contact us.
HAPPY TRADING!
Bar metrics / quantifytools— Overview
Rather than eyeball evaluating bullishness/bearishness in any given bar, bar metrics allow a quantified approach using three basic fundamental data points: relative close, relative volatility and relative volume. These data points are visualized in a discreet data dashboard form, next to all real-time bars. Each value also has a dot in front, representing color coded extremes in the values.
Relative close represents position of bar's close relative to high and low, high of bar being 100% and low of bar being 0%. Relative close indicates strength of bulls/bears in a given bar, the higher the better for bulls, the lower the better for bears. Relative volatility (bar range, high - low) and relative volume are presented in a form of a multiplier, relative to their respective moving averages (SMA 20). A value of 1x indicates volume/volatility being on par with moving average, 2x indicates volume/volatility being twice as much as moving average and so on. Relative volume and volatility can be used for measuring general market participant interest, the "weight of the bar" as it were.
— Features
Users can gauge past bar metrics using lookback via input menu. Past bars, especially recent ones, are helpful for giving context for current bar metrics. Lookback bars are highlighted on the chart using a yellow box and metrics presented on the data dashboard with lookback symbols:
To inspect bar metric data and its implications, users can highlight bars with specified bracket values for each metric:
When bar highlighter is toggled on and desired bar metric values set, alert for the specified combination can be toggled on via alert menu. Note that bar highlighter must be enabled in order for alerts to function.
— Visuals
Bar metric dots are gradient colored the following way:
Relative volatility & volume
0x -> 1x / Neutral (white) -> Light (yellow)
1x -> 1.7x / Light (yellow) -> Medium (orange)
1.7x -> 2.4x / Medium (orange) -> Heavy (red)
Relative close
0% -> 25% / Heavy bearish (red) -> Light bearish (dark red)
25% -> 45% / Light bearish (dark red) -> Neutral (white)
45% - 55% / Neutral (white)
55% -> 75% / Neutral (white) -> Light bullish (dark green)
75% -> 100% / Light bullish (dark green) -> Heavy bullish (green)
All colors can be adjusted via input menu. Label size, label distance from bar (offset) and text format (regular/stealth) can be adjusted via input menu as well:
— Practical guide
As interpretation of bar metrics is highly contextual, it is especially important to use other means in conjunction with the metrics. Levels, oscillators, moving averages, whatever you have found useful for your process. In short, relative close indicates directional bias and relative volume/volatility indicates "weight" of directional bias.
General interpretation
High relative close, low relative volume/volatility = mildly bullish, bias up/consolidation
High relative close, medium relative volume/volatility = bullish, bias up
High relative close, high relative volume/volatility = exuberantly bullish, bias up/down depending on context
Medium relative close, low relative volume/volatility = noise, no bias
Medium relative close, medium to high relative volume/volatility = indecision, further evidence needed to evaluate bias
Low relative close, low relative volume/volatility = mildly bearish, bias down/consolidation
Low relative close, medium relative volume/volatility = bearish, bias down
Low relative close, high relative volume/volatility = exuberantly bearish, bias down/up depending on context
Nuances & considerations
As to relative close, it's important to note that each bar is a trading range when viewed on a lower timeframe, ES 1W vs. ES 4H:
When relative close is high, bulls were able to push price to range high by the time of close. When relative close is low, bears were able to push price to range low by the time of close. In other words, bulls/bears were able to gain the upper hand over a given trading range, hinting strength for the side that made the final push. When relative close is around middle range (40-60%), it can be said neither side is clearly dominating the range, hinting neutral/indecision bias from a relative close perspective.
As to relative volume/volatility, low values (less than ~0.7x) imply bar has low market participant interest and therefore is likely insignificant, as it is "lacking weight". Values close to or above 1x imply meaningful market participant interest, whereas values well above 1x (greater than ~1.3x) imply exuberance. This exuberance can manifest as initiation (beginning of a trend) or as exhaustion (end of a trend):
Smart Money Precision Structure [BullByte]Smart Money Precision Structure
Advanced Market Structure Analysis Using Institutional Order Flow Concepts
---
OVERVIEW
Smart Money Precision Structure (SMPS) is a comprehensive market analysis indicator that combines six analytical frameworks to identify high-probability market structure patterns. The indicator uses multi-dimensional scoring algorithms to evaluate market conditions through institutional order flow concepts, providing traders with professional-grade market analysis.
---
PURPOSE AND ORIGINALITY
Why This Indicator Was Developed
• Addresses the gap between retail and institutional analysis methods
• Consolidates multiple analysis techniques that professionals use separately
• Automates complex market structure evaluation into actionable insights
• Eliminates the need for multiple indicators by providing comprehensive analysis
What Makes SMPS Original
• Six-Layer Confluence System - Unique combination of market regime, structure, volume flow, momentum, price action, and adaptive filtering
• Institutional Pattern Recognition - Identifies smart money accumulation and distribution patterns
• Adaptive Intelligence - Parameters automatically adjust based on detected market conditions
• Real-Time Market Scoring - Proprietary algorithm rates market quality from 0-100%
• Structure Break Detection - Advanced pivot analysis identifies trend reversals early
---
HOW IT WORKS - TECHNICAL METHODOLOGY
1. Market Regime Analysis Engine
The indicator evaluates five core market dimensions:
• Volatility Score - Measures current volatility against 50-period historical baseline
• Trend Score - Analyzes alignment between 8, 21, and 50-period EMAs
• Momentum Score - Combines RSI divergence with MACD signal alignment
• Structure Score - Evaluates pivot point formation clarity
• Efficiency Score - Calculates directional movement efficiency ratio
These scores combine to classify markets into five regimes:
• TRENDING - Strong directional movement with aligned indicators
• RANGING - Sideways movement with mixed directional signals
• VOLATILE - Elevated volatility with unpredictable price swings
• QUIET - Low volatility consolidation periods
• TRANSITIONAL - Market shifting between different regimes
2. Market Structure Analysis
Advanced pivot point analysis identifies:
• Higher Highs and Higher Lows for bullish structure
• Lower Highs and Lower Lows for bearish structure
• Structure breaks when established patterns fail
• Dynamic support and resistance from recent pivot points
• Key level proximity detection using ATR-based buffers
3. Volume Flow Decoding
Institutional activity detection through:
• Volume surge identification when volume exceeds 2x average
• Buy versus sell pressure analysis using price-volume correlation
• Flow strength measurement through directional volume consistency
• Divergence detection between volume and price movements
• Institutional threshold alerts when unusual volume patterns emerge
4. Multi-Period Momentum Synthesis
Weighted momentum calculation across four timeframes:
• 1-period momentum weighted at 40%
• 3-period momentum weighted at 30%
• 5-period momentum weighted at 20%
• 8-period momentum weighted at 10%
Result smoothed with 6-period EMA for noise reduction.
5. Price Action Quality Assessment
Each bar evaluated for:
• Range quality relative to 20-period average
• Body-to-range ratio for directional conviction
• Wick analysis for rejection pattern identification
• Pattern recognition including engulfing and hammer formations
• Sequential price movement analysis
6. Adaptive Parameter System
Parameters automatically adjust based on detected regime:
• Trending markets reduce sensitivity and confirmation requirements
• Volatile markets increase filtering and require additional confirmations
• Ranging markets maintain neutral settings
• Transitional markets use moderate adjustments
---
COMPLETE SETTINGS GUIDE
Section 1: Core Analysis Settings
Analysis Sensitivity (0.3-2.0)
• Default: 1.0
• Lower values require stronger price movements
• Higher values detect more subtle patterns
• Scalpers use 0.8-1.2, swing traders use 1.5-2.0
Noise Reduction Level (2-7)
• Default: 4
• Controls filtering of false patterns
• Higher values reduce pattern frequency
• Increase in volatile markets
Minimum Move % (0.05-0.50)
• Default: 0.15%
• Sets minimum price movement threshold
• Adjust based on instrument volatility
• Forex: 0.05-0.10%, Stocks: 0.15-0.25%, Crypto: 0.20-0.50%
High Confirmation Mode
• Default: True (Enabled)
• Requires all technical conditions to align
• Reduces frequency but increases reliability
• Disable for more aggressive pattern detection
Section 2: Market Regime Detection
Enable Regime Analysis
• Default: True (Enabled)
• Activates market environment evaluation
• Essential for adaptive features
• Keep enabled for best results
Regime Analysis Period (20-100)
• Default: 50 bars
• Determines regime calculation lookback
• Shorter for responsive, longer for stable
• Scalping: 20-30, Swing: 75-100
Minimum Market Clarity (0.2-0.8)
• Default: 0.4
• Quality threshold for pattern generation
• Higher values require clearer conditions
• Lower for more patterns, higher for quality
Adaptive Parameter Adjustment
• Default: True (Enabled)
• Enables automatic parameter optimization
• Adjusts based on market regime
• Highly recommended to keep enabled
Section 3: Market Structure Analysis
Enable Structure Validation
• Default: True (Enabled)
• Validates patterns against support/resistance
• Confirms trend structure alignment
• Essential for reliability
Structure Analysis Period (15-50)
• Default: 30 bars
• Period for structure pattern analysis
• Affects support/resistance calculation
• Match to your trading timeframe
Minimum Structure Alignment (0.3-0.8)
• Default: 0.5
• Required structure score for valid patterns
• Higher values need stronger structure
• Balance with desired frequency
Section 4: Analysis Configuration
Minimum Strength Level (3-5)
• Default: 4
• Minimum confirmations for pattern display
• 5 = Maximum reliability, 3 = More patterns
• Beginners should use 4-5
Required Technical Confirmations (4-6)
• Default: 5
• Number of aligned technical factors
• Higher = fewer but better patterns
• Works with High Confirmation Mode
Pattern Separation (3-20 bars)
• Default: 8 bars
• Minimum bars between patterns
• Prevents clustering and overtrading
• Increase for cleaner charts
Section 5: Technical Filters
Momentum Validation
• Default: True (Enabled)
• Requires momentum alignment
• Filters counter-trend patterns
• Essential for trend following
Volume Confluence Analysis
• Default: True (Enabled)
• Requires volume confirmation
• Identifies institutional participation
• Critical for reliability
Trend Direction Filter
• Default: True (Enabled)
• Only shows patterns with trend
• Reduces counter-trend signals
• Disable for reversal hunting
Section 6: Volume Flow Analysis
Institutional Activity Threshold (1.2-3.5)
• Default: 2.0
• Multiplier for unusual volume detection
• Lower finds more institutional activity
• Stock: 2.0-2.5, Forex: 1.5-2.0, Crypto: 2.5-3.5
Volume Surge Multiplier (1.8-4.5)
• Default: 2.5
• Defines significant volume increases
• Adjust per instrument characteristics
• Higher for stocks, lower for forex
Volume Flow Period (12-35)
• Default: 18 bars
• Smoothing for volume analysis
• Shorter = responsive, longer = smooth
• Match to timeframe used
Section 7: Analysis Frequency Control
Maximum Analysis Points Per Hour (1-5)
• Default: 3
• Limits pattern frequency
• Prevents overtrading
• Scalpers: 4-5, Swing traders: 1-2
Section 8: Target Level Configuration
Target Calculation Method
• Default: Market Adaptive
• Three modes available:
- Fixed: Uses set point distances
- Dynamic: ATR-based calculations
- Market Adaptive: Structure-based levels
Minimum Target/Risk Ratio (1.0-3.0)
• Default: 1.5
• Minimum acceptable reward vs risk
• Higher filters lower probability setups
• Professional standard: 1.5-2.0
Fixed Mode Settings:
• Fixed Target Distance: 50 points default
• Fixed Invalidation Distance: 30 points default
• Use for consistent instruments
Dynamic Mode Settings:
• Dynamic Target Multiplier: 1.8x ATR default
• Dynamic Invalidation Multiplier: 1.0x ATR default
• Adapts to volatility automatically
Market Adaptive Settings:
• Use Structure Levels: True (default)
• Structure Level Buffer: 0.1% default
• Places levels at actual support/resistance
Section 9: Visual Display Settings
Color Theme Options
• Professional (Teal/Red)
- Bullish: Teal (#26a69a)
- Bearish: Red (#ef5350)
- Neutral: Gray (#78909c)
- Best for: Traditional traders, clean appearance
• Dark (Neon Green/Pink)
- Bullish: Neon Green (#00ff88)
- Bearish: Hot Pink (#ff0044)
- Neutral: Dark Gray (#333333)
- Best for: Dark theme users, high contrast
• Light (Green/Red Classic)
- Bullish: Green (#4caf50)
- Bearish: Red (#f44336)
- Neutral: Light Gray (#9e9e9e)
- Best for: Light backgrounds, traditional colors
• Vibrant (Cyan/Magenta)
- Bullish: Cyan (#00ffff)
- Bearish: Magenta (#ff00ff)
- Neutral: Medium Gray (#888888)
- Best for: High visibility, modern appearance
Dashboard Position
• Options: Top Left, Top Right, Bottom Left, Bottom Right, Middle Left, Middle Right
• Default: Top Right
• Choose based on chart layout preference
Dashboard Size
• Full: Complete information display (desktop)
• Mobile: Compact view for small screens
• Default: Full
Analysis Display Style
• Arrows : Simple directional markers
• Labels : Detailed text information
• Zones : Colored areas showing pattern regions
• Default: Labels (most informative)
Display Options:
• Display Analysis Strength: Shows star rating
• Display Target Levels: Shows target/invalidation lines
• Display Market Regime: Shows regime in pattern labels
---
HOW TO USE SMPS - DETAILED GUIDE
Understanding the Dashboard
Top Row - Header
• SMPS Dashboard title
• VALUE column: Current readings
• STATUS column: Condition assessments
Market Regime Row
• Shows: TRENDING, RANGING, VOLATILE, QUIET, or TRANSITIONAL
• Color coding: Green = Favorable, Red = Caution
• Status: FAVORABLE or CAUTION trading conditions
Market Score Row
• Percentage from 0-100%
• Above 60% = Strong conditions
• 40-60% = Moderate conditions
• Below 40% = Weak conditions
Structure Row
• Direction: BULLISH, BEARISH, or NEUTRAL
• Status: INTACT or BREAK
• Orange BREAK indicates structure failure
Volume Flow Row
• Direction: BUYING or SELLING
• Intensity: STRONG or WEAK
• Color indicates dominant pressure
Momentum Row
• Numerical momentum value
• Positive = Upward pressure
• Negative = Downward pressure
Volume Status Row
• INST = Institutional activity detected
• HIGH = Above average volume
• NORM = Normal volume levels
Adaptive Mode Row
• ACTIVE = Parameters adjusting
• STATIC = Fixed parameters
• Shows required confirmations
Analysis Level Row
• Minimum strength level setting
• Pattern separation in bars
Market State Row
• Current analysis: BULLISH, BEARISH, NEUTRAL
• Shows analysis price level when active
T:R Ratio Row
• Current target to risk ratio
• GOOD = Meets minimum requirement
• LOW = Below minimum threshold
Strength Row
• BULL or BEAR dominance
• Numerical strength value 0-100
Price Row
• Current price
• Percentage change
Last Analysis Row
• Previous pattern direction
• Bars since last pattern
Reading Pattern Signals
Bullish Structure Pattern
• Upward triangle or "Bullish Structure" label
• Star rating shows strength (★★★★★ = strongest)
• Green line = potential target level
• Red dashed line = invalidation level
• Appears below price bars
Bearish Structure Pattern
• Downward triangle or "Bearish Structure" label
• Star rating indicates reliability
• Green line = potential target level
• Red dashed line = invalidation level
• Appears above price bars
Pattern Strength Interpretation
• ★★★★★ = 6 confirmations (exceptional)
• ★★★★☆ = 5 confirmations (strong)
• ★★★☆☆ = 4 confirmations (moderate)
• ★★☆☆☆ = 3 confirmations (minimum)
• Below minimum = filtered out
Visual Elements on Chart
Lines and Levels:
• Gray Line = 21 EMA trend reference
• Green Stepline = Dynamic support level
• Red Stepline = Dynamic resistance level
• Green Solid Line = Active target level
• Red Dashed Line = Active invalidation level
Pattern Markers:
• Triangles = Arrow display mode
• Text Labels = Label display mode
• Colored Boxes = Zone display mode
Target Completion Labels:
• "Target" = Price reached target level
• "Invalid" = Pattern invalidated by price
---
RECOMMENDED USAGE BY TIMEFRAME
1-Minute Charts (Scalping)
• Sensitivity: 0.8-1.2
• Noise Reduction: 3-4
• Pattern Separation: 3-5 bars
• High Confirmation: Optional
• Best for: Quick intraday moves
5-Minute Charts (Precision Intraday)
• Sensitivity: 1.0 (default)
• Noise Reduction: 4 (default)
• Pattern Separation: 8 bars
• High Confirmation: Enabled
• Best for: Day trading
15-Minute Charts (Short Swing)
• Sensitivity: 1.0-1.5
• Noise Reduction: 4-5
• Pattern Separation: 10-12 bars
• High Confirmation: Enabled
• Best for: Intraday swings
30-Minute to 1-Hour (Position Trading)
• Sensitivity: 1.5-2.0
• Noise Reduction: 5-7
• Pattern Separation: 15-20 bars
• Regime Period: 75-100
• Best for: Multi-day positions
Daily Charts (Swing Trading)
• Sensitivity: 1.8-2.0
• Noise Reduction: 6-7
• Pattern Separation: 20 bars
• All filters enabled
• Best for: Long-term analysis
---
MARKET-SPECIFIC SETTINGS
Forex Pairs
• Minimum Move: 0.05-0.10%
• Institutional Threshold: 1.5-2.0
• Volume Surge: 1.8-2.2
• Target Mode: Dynamic or Market Adaptive
Stock Indices (ES, NQ, YM)
• Minimum Move: 0.10-0.15%
• Institutional Threshold: 2.0-2.5
• Volume Surge: 2.5-3.0
• Target Mode: Market Adaptive
Individual Stocks
• Minimum Move: 0.15-0.25%
• Institutional Threshold: 2.0-2.5
• Volume Surge: 2.5-3.5
• Target Mode: Dynamic
Cryptocurrency
• Minimum Move: 0.20-0.50%
• Institutional Threshold: 2.5-3.5
• Volume Surge: 3.0-4.5
• Target Mode: Dynamic
• Increase noise reduction
---
PRACTICAL APPLICATION EXAMPLES
Example 1: Strong Trending Market
Dashboard Reading:
• Market Regime: TRENDING
• Market Score: 75%
• Structure: BULLISH, INTACT
• Volume Flow: BUYING, STRONG
• Momentum: +0.45
Interpretation:
• Strong uptrend environment
• Institutional buying present
• Look for bullish patterns as continuation
• Higher probability of success
• Consider using lower sensitivity
Example 2: Range-Bound Conditions
Dashboard Reading:
• Market Regime: RANGING
• Market Score: 35%
• Structure: NEUTRAL
• Volume Flow: SELLING, WEAK
• Momentum: -0.05
Interpretation:
• No clear direction
• Low opportunity environment
• Patterns are less reliable
• Consider waiting for regime change
• Or switch to a range-trading approach
Example 3: Structure Break Alert
Dashboard Reading:
• Previous: BULLISH structure
• Current: Structure BREAK
• Volume: INST flag active
• Momentum: Shifting negative
Interpretation:
• Trend reversal potentially beginning
• Institutional participation detected
• Watch for bearish pattern confirmation
• Adjust bias accordingly
• Increase caution on long positions
Example 4: Volatile Market
Dashboard Reading:
• Market Regime: VOLATILE
• Market Score: 45%
• Adaptive Mode: ACTIVE
• Confirmations: Increased to 6
Interpretation:
• Choppy conditions
• Parameters auto-adjusted
• Fewer but higher quality patterns
• Wider stops may be needed
• Consider reducing position size
Below are a few chart examples of the Smart Money Precision Structure (SMPS) indicator in action.
• Example 1 – Bullish Structure Detection on SOLUSD 5m
• Example 2 – Bearish Structure Detected with Strong Confluence on SOLUSD 5m
---
TROUBLESHOOTING GUIDE
No Patterns Appearing
Check these settings:
• High Confirmation Mode may be too restrictive
• Minimum Strength Level may be too high
• Market Clarity threshold may be too high
• Regime filter may be blocking patterns
• Try increasing sensitivity
Too Many Patterns
Adjust these settings:
• Enable High Confirmation Mode
• Increase Minimum Strength Level to 5
• Increase Pattern Separation
• Reduce Sensitivity below 1.0
• Enable all technical filters
Dashboard Shows "CAUTION"
This indicates:
• Market conditions are unfavorable
• Regime is RANGING or QUIET
• Market score is low
• Consider waiting for better conditions
• Or adjust expectations accordingly
Patterns Not Reaching Targets
Consider:
• Market may be choppy
• Volatility may have changed
• Try Dynamic target mode
• Reduce target/risk ratio requirement
• Check if regime is VOLATILE
---
ALERTS CONFIGURATION
Alert Message Format
Alerts include:
• Pattern type (Bullish/Bearish)
• Strength rating
• Market regime
• Analysis price level
• Target and invalidation levels
• Strength percentage
• Target/Risk ratio
• Educational disclaimer
Setting Up Alerts
• Click Alert button on TradingView
• Select SMPS indicator
• Choose alert frequency
• Customize message if desired
• Alerts fire on pattern detection
---
DATA WINDOW INFORMATION
The Data Window displays:
• Market Regime Score (0-100)
• Market Structure Bias (-1 to +1)
• Bullish Strength (0-100)
• Bearish Strength (0-100)
• Bull Target/Risk Ratio
• Bear Target/Risk Ratio
• Relative Volume
• Momentum Value
• Volume Flow Strength
• Bull Confirmations Count
• Bear Confirmations Count
---
BEST PRACTICES AND TIPS
For Beginners
• Start with default settings
• Use High Confirmation Mode
• Focus on TRENDING regime only
• Paper trade first
• Learn one timeframe thoroughly
For Intermediate Users
• Experiment with sensitivity settings
• Try different target modes
• Use multiple timeframes
• Combine with price action analysis
• Track pattern success rate
For Advanced Users
• Customize per instrument
• Create setting templates
• Use regime information for bias
• Combine with other indicators
• Develop systematic rules
---
IMPORTANT DISCLAIMERS
• This indicator is for educational and informational purposes only
• Not financial advice or a trading system
• Past performance does not guarantee future results
• Trading involves substantial risk of loss
• Always use appropriate risk management
• Verify patterns with additional analysis
• The author is not a registered investment advisor
• No liability accepted for trading losses
---
VERSION NOTES
Version 1.0.0 - Initial Release
• Six-layer confluence system
• Adaptive parameter technology
• Institutional volume detection
• Market regime classification
• Structure break identification
• Real-time dashboard
• Multiple display modes
• Comprehensive settings
## My Final Thoughts
Smart Money Precision Structure represents an advanced approach to market analysis, bringing institutional-grade techniques to retail traders through intelligent automation and multi-dimensional evaluation. By combining six analytical frameworks with adaptive parameter adjustment, SMPS provides comprehensive market intelligence that single indicators cannot achieve.
The indicator serves as an educational tool for understanding how professional traders analyze markets, while providing practical pattern detection for those seeking to improve their technical analysis. Remember that all trading involves risk, and this tool should be used as part of a complete analysis approach, not as a standalone trading system.
- BullByte
Six Meridian Divine Swords [theUltimator5]The Six Meridian Divine Sword is a legendary martial arts technique in the classic wuxia novel “Demi-Gods and Semi-Devils” (天龙八部) by Jin Yong (金庸). The technique uses powerful internal energy (qi) to shoot invisible sword-like energy beams from the six meridians of the hand. Each of the six fingers/meridians corresponds to a “sword,” giving six different sword energies.
The Six Meridian Divine Swords indicator is a compact “signal dashboard” that fuses six classic indicators (fingers)—MACD, KDJ, RSI, LWR (Williams %R), BBI, and MTM—into one pane. Each row is a traffic-light dot (green/bullish, red/bearish, gray/neutral). When all six align, the script draws a confirmation line (“All Bullish” or “All Bearish”). It’s designed for quick consensus reads across trend, momentum, and overbought/oversold conditions.
How to Read the Dashboard
The pane has 6 horizontal rows (explained in depth later):
MACD
KDJ
RSI
LWR (Larry Williams %R)
BBI (Bull & Bear Index)
MTM (Momentum)
Each tick in the row is a dot, with sentiment identified by a color.
Green = bullish condition met
Red = bearish condition met
Gray = inside a neutral band (filtering chop), shown when Use Neutral (Gray) Colors is ON
There are two lines that track the dots on the top or bottom of the pane.
All Bullish Signal Line: appears only if all 6 are strongly bullish (default color = white)
All Bearish Signal Line: appears only if all 6 are strongly bearish (default color = fuchsia)
The Six Meridians (Indicators) — What They Mean:
1) MACD — Trend & Momentum
What it is: A trend-following momentum indicator based on the relationship between two moving averages (typically 12-EMA and 26-EMA)
Logic used: Classic MACD line (EMA12−EMA26) vs its 9-EMA signal.
Bullish: MACD > Signal and |MACD−Signal| > Neutral Threshold
Bearish: MACD < Signal and |diff| > threshold
Neutral: |diff| ≤ threshold
Why: Small crosses can whipsaw. The neutral band ignores tiny separations to reduce noise.
Inputs: Fast/Slow/Signal lengths, Neutral Threshold.
2) KDJ — Stochastic with J-line boost
What it is: A variation of the stochastic oscillator popular in Chinese trading systems
Logic used: K = SMA(Stochastic, smooth), D = SMA(K, smooth), J = 3K − 2D.
Bullish: K > D and |K−D| > 2
Bearish: K < D and |K−D| > 2
Neutral: |K−D| ≤ 2
Why: K–D separation filters tiny wiggles; J offers an “extreme” early-warning context in the value label.
Inputs: Length, Smoothing.
3) RSI — Momentum balance (0–100)
What it is: A momentum oscillator measuring speed and magnitude of price changes (0–100)
Logic used: RSI(N).
Bullish: RSI > 50 + Neutral Zone
Bearish: RSI < 50 − Neutral Zone
Neutral: Between those bands
Why: Centerline/adaptive bands (around 50) give a directional bias without relying on fixed 70/30.
Inputs: Length, Neutral Zone (± around 50).
4) LWR (Williams %R) — Overbought/Oversold
What it is: An oscillator similar to stochastic, measuring how close the close is to the high-low range over N periods
Logic used: %R over N bars (0 to −100).
Bullish: %R > −50 + Neutral Zone
Bearish: %R < −50 − Neutral Zone
Neutral: Between those bands
Why: Uses a centered band around −50 instead of only −20/−80, making it act like a directional filter.
Inputs: Length, Neutral Zone (± around −50).
5) BBI (Bull & Bear Index) — Smoothed trend bias
What it is: A composite moving average, essentially the average of several different moving averages (often 3, 6, 12, 24 periods)
Logic used: Average of 4 SMAs (3/6/12/24 by default):
BBI = (MA3 + MA6 + MA12 + MA24) / 4
Bullish: Close > BBI and |Close−BBI| > 0.2% of BBI
Bearish: Close < BBI and |diff| > threshold
Neutral: |diff| ≤ threshold
Why: Multiple MAs blended together reduce single-MA whipsaw. A dynamic 0.2% band ignores tiny drift.
Inputs: 4 lengths (default 3/6/12/24). Threshold is auto-scaled at 0.2% of BBI.
6) MTM (Momentum) — Rate of change in price
What it is: A simple measure of rate of change
Logic used: MTM = Close − Close
Bullish: MTM > 0.5% of Close
Bearish: MTM < −0.5% of Close
Neutral: |MTM| ≤ threshold
Why: A percent-based gate adapts across prices (e.g., $5 vs $500) and mutes insignificant moves.
Inputs: Length. Threshold auto-scaled to 0.5% of current Close.
Display & Inputs You Can Tweak
🎨 Use Neutral (Gray) Colors
ON (default): 3-color mode with clear “no-trade”/“weak” states.
OFF: classic binary (green/red) without neutral filtering.
BVB dominance bars
Hello everyone, this is my first indicator. these candles shows you who's in control. I like to think its some what close to heikin ashi candles as it shows you the Trend but doesn't average it out. also shows you when there is indecision. please read the instructions on how it works. its not a stand alone strategy. but adds value to your own strategy.
📖 How It Works
The BvB Dominance Bars indicator is a visual tool that colors candles based on market control—whether bulls or bears are in charge. It uses a custom metric comparing the price's relationship to a smoothed moving average (EMA), then normalizes that difference over time to express relative bullish or bearish pressure.
Here’s the breakdown:
Bulls vs Bears Logic:
A short-term EMA (default: 14-period) is used to establish a midpoint reference.
Bull Pressure is calculated as how far the high is above this EMA.
Bear Pressure is how far the low is below this EMA.
These are normalized over a lookback period (default: 120 bars) to produce percentile scores (0–100) for both bulls and bears.
Dominance & Color Coding:
The indicator compares normalized bull and bear scores.
Candles are color-coded based on:
Bright Lime: Strong Bull Dominance (with high confidence)
Soft Lime/Yellow: Moderate Bull Control
Bright Red: Strong Bear Dominance
Soft Red/Yellow: Moderate Bear Control
Gray: Neutral/Low conviction
Optional Live Label:
A small floating label shows who has control: “Bull Control,” “Bear Control,” or “Neutral.”
🧠 How to Use It (Example Strategy)
The BvB Dominance Bars indicator is not a standalone buy/sell signal but a market sentiment overlay. It’s most effective when combined with your own strategy, like price action or trend-following tools.
Here’s an example use case:
🧪 Reversal Confirmation Strategy
Objective: Catch high-probability reversals during key kill zones or supply/demand levels.
Setup:
Mark your key support/resistance zones using your standard method (e.g., FVGs, liquidity sweeps, or ICT PD arrays).
Wait for price to reach one of these zones.
Watch candle colors from the BvB Dominance Bars:
If you expect a bullish reversal, wait for a transition from red/gray candles to lime green or bright lime (bullish dominance taking over).
If you expect a bearish reversal, look for a change from green/gray to red or bright red.
Entry Filter:
Only enter if the dominant color holds for 2+ candles.
Avoid trades when candles are gray or yellow (indecision/neutral).
Exit Option:
Exit if dominance shifts against you (e.g., from lime to red), or use structure-based stops.
⚙️ Settings You Can Adjust:
BvB Period: Controls how fast EMA responds.
Bars Back: Determines how long the normalization looks back.
Thresholds: Influence how strong the dominance must be to change candle color.
✅ Best Used When:
You already have a bias and just want a confirmation of sentiment.
You're trading intraday and want a feel for shifting momentum without relying on noisy indicators.
You want a clean, color-coded overlay to help filter out fakeouts and indecision.
Frozen Bias Zones – Sentiment Lock-insOverview
The Frozen Bias Zones indicator visualizes market sentiment lock-ins using a combination of RSI, MACD, and OBV. It creates "bias zones" that indicate whether the market is in a sustained bullish or bearish phase. These zones are then highlighted on the chart, helping traders spot when the market is locked in a bias. The script also detects breakout events from these zones and marks them with clear labels for easier decision-making.
Features
Multi-Indicator Sentiment Analysis: Combines RSI, MACD, and OBV to detect synchronized bullish or bearish sentiment.
Frozen Bias Zones: Identifies and visually represents zones where the market has remained in a particular sentiment (bullish or bearish) for a defined period.
Breakout Alerts: Displays labels to indicate when the price breaks out of the established bias zone.
Customizable Inputs: Adjust the zone duration, RSI, MACD, and breakout label visibility.
Input Parameters
Bias Duration (biasLength)
The minimum number of candles the market must stay in a specific sentiment to consider it a "Frozen Bias Zone".
Default: 5 candles.
RSI Period (rsiPeriod)
Period for the Relative Strength Index (RSI) calculation.
Default: 14 periods.
MACD Settings
MACD Fast (macdFast): The fast-moving average period for the MACD calculation.
Default: 12.
MACD Slow (macdSlow): The slow-moving average period for the MACD calculation.
Default: 26.
MACD Signal (macdSig): The signal line period for MACD.
Default: 9.
Show Break Label (showBreakLabel)
Toggle to show labels when the price breaks out of the bias zone.
Default: True (shows label).
Bias Zone Colors
Bullish Bias Color (bullColor): The color for bullish zones (light green).
Bearish Bias Color (bearColor): The color for bearish zones (light red).
How It Works
This indicator analyzes three key market metrics to determine whether the market is in a bullish or bearish phase:
RSI (Relative Strength Index)
Measures the speed and change of price movements. RSI > 50 indicates a bullish phase, while RSI < 50 indicates a bearish phase.
MACD (Moving Average Convergence Divergence)
Measures the relationship between two moving averages of the price. A positive MACD histogram indicates bullish momentum, while a negative histogram indicates bearish momentum.
OBV (On-Balance Volume)
Uses volume flow to determine if a trend is likely to continue. A rising OBV indicates bullish accumulation, while a falling OBV indicates bearish distribution.
Bias Zone Detection
The market sentiment is considered bullish if all three indicators (RSI, MACD, and OBV) are bullish, and bearish if all three indicators are bearish.
Bullish Zone: A zone is created when the market sentiment remains bullish for the duration of the specified biasLength.
Bearish Zone: A zone is created when the market sentiment remains bearish for the duration of the specified biasLength.
These bias zones are visually represented on the chart as colored boxes (green for bullish, red for bearish).
Breakout Detection
The script automatically detects when the market exits a bias zone. If the price moves outside the bounds of the established zone (either up or down), the script will display one of the following labels:
Bias Break (Up): Indicates that the price has broken upwards out of the zone (with a green label).
Bias Break (Down): Indicates that the price has broken downwards out of the zone (with a red label).
These labels help traders easily identify potential breakout points.
Example Use Case
Bullish Market Conditions: If the RSI is above 50, the MACD histogram is positive, and OBV is increasing, the script will highlight a green bias zone. Traders can watch for potential bullish breakouts or trend continuation after the zone ends.
Bearish Market Conditions: If the RSI is below 50, the MACD histogram is negative, and OBV is decreasing, the script will highlight a red bias zone. Traders can look for potential bearish breakouts when the zone ends.
Conclusion
The Frozen Bias Zones indicator is a powerful tool for traders looking to visualize prolonged market sentiment, whether bullish or bearish. By combining RSI, MACD, and OBV, it helps traders spot when the market is "locked in" to a bias. The breakout labels make it easier to take action when the price moves outside of the established zone, potentially signaling the start of a new trend.
Instructions
To use this script:
Add the Frozen Bias Zones indicator to your TradingView chart.
Adjust the input parameters to suit your trading strategy.
Observe the colored bias zones on your chart, along with breakout labels, to make informed decisions on trend continuation or reversal.