Indicator

Indicator

Relative Strength Screener V2 - Top 100 volume leadersNew and improved strength heatmap for the top 100 volume leaders in the S&P. Coded in a workaround to the 40 request.security limitation that currently exists in Pine. Added the ability to input the number of columns (time frames) you wish to display.
For 3 time frame analysis, add the indicator to your chart 3 times. Change the number of columns to 3 for each of these indicators. Specify the column and time frame for each one (example, 5 minute for column 1, 1 hour for column 2 and Daily chart for column 3). It will automatically resize the columns/tables to properly display the output. This provides a sort of "Strength Heatmap" for the top 100 stocks in the S&P. To achieve this, make a copy of the indicator and substitute lines 68-105 with the following premade watchlists :
Make a copy 1 - FIrst 38 volume leaders in the S&P
s01 = input.symbol('AAPL', group = 'Symbols', inline = 's01')
s02 = input.symbol('ABBV', group = 'Symbols', inline = 's02')
s03 = input.symbol('ABT', group = 'Symbols', inline = 's03')
s04 = input.symbol('ACN', group = 'Symbols', inline = 's04')
s05 = input.symbol('AEP', group = 'Symbols', inline = 's05')
s06 = input.symbol('AIG', group = 'Symbols', inline = 's06')
s07 = input.symbol('AMAT', group = 'Symbols', inline = 's07')
s08 = input.symbol('AMD', group = 'Symbols', inline = 's08')
s09 = input.symbol('APA', group = 'Symbols', inline = 's09')
s10 = input.symbol('ATVI', group = 'Symbols', inline = 's10')
s11 = input.symbol('AXP', group = 'Symbols', inline = 's11')
s12 = input.symbol('BA', group = 'Symbols', inline = 's12')
s13 = input.symbol('BBWI', group = 'Symbols', inline = 's13')
s14 = input.symbol('BBY', group = 'Symbols', inline = 's14')
s15 = input.symbol('BK', group = 'Symbols', inline = 's15')
s16 = input.symbol('BMY', group = 'Symbols', inline = 's16')
s17 = input.symbol('BRK.B', group = 'Symbols', inline = 's17')
s18 = input.symbol('C', group = 'Symbols', inline = 's18')
s19 = input.symbol('CAT', group = 'Symbols', inline = 's19')
s20 = input.symbol('CCL', group = 'Symbols', inline = 's20')
s21 = input.symbol('CFG', group = 'Symbols', inline = 's21')
s22 = input.symbol('CL', group = 'Symbols', inline = 's22')
s23 = input.symbol('CNC', group = 'Symbols', inline = 's23')
s24 = input.symbol('COF', group = 'Symbols', inline = 's24')
s25 = input.symbol('COP', group = 'Symbols', inline = 's25')
s26 = input.symbol('COST', group = 'Symbols', inline = 's26')
s27 = input.symbol('CRM', group = 'Symbols', inline = 's27')
s28 = input.symbol('CVS', group = 'Symbols', inline = 's28')
s29 = input.symbol('CVX', group = 'Symbols', inline = 's29')
s30 = input.symbol('DAL', group = 'Symbols', inline = 's30')
s31 = input.symbol('DIS', group = 'Symbols', inline = 's31')
s32 = input.symbol('DISCA', group = 'Symbols', inline = 's32')
s33 = input.symbol('DISCK', group = 'Symbols', inline = 's33')
s34 = input.symbol('DISH', group = 'Symbols', inline = 's34')
s35 = input.symbol('DLTR', group = 'Symbols', inline = 's35')
s36 = input.symbol('DOW', group = 'Symbols', inline = 's36')
s37 = input.symbol('DVN', group = 'Symbols', inline = 's37')
s38 = input.symbol('EBAY', group = 'Symbols', inline = 's38')
Make a copy 2 - Tickers 39 to 76
s01 = input.symbol('EOG', group = 'Symbols', inline = 's01')
s02 = input.symbol('F', group = 'Symbols', inline = 's02')
s03 = input.symbol('FB', group = 'Symbols', inline = 's03')
s04 = input.symbol('FCX', group = 'Symbols', inline = 's04')
s05 = input.symbol('FIS', group = 'Symbols', inline = 's05')
s06 = input.symbol('GE', group = 'Symbols', inline = 's06')
s07 = input.symbol('GIS', group = 'Symbols', inline = 's07')
s08 = input.symbol('GM', group = 'Symbols', inline = 's08')
s09 = input.symbol('GS', group = 'Symbols', inline = 's09')
s10 = input.symbol('HD', group = 'Symbols', inline = 's10')
s11 = input.symbol('IBM', group = 'Symbols', inline = 's11')
s12 = input.symbol('INTC', group = 'Symbols', inline = 's12')
s13 = input.symbol('JNJ', group = 'Symbols', inline = 's13')
s14 = input.symbol('JPM', group = 'Symbols', inline = 's14')
s15 = input.symbol('KR', group = 'Symbols', inline = 's15')
s16 = input.symbol('LUV', group = 'Symbols', inline = 's16')
s17 = input.symbol('LVS', group = 'Symbols', inline = 's17')
s18 = input.symbol('MA', group = 'Symbols', inline = 's18')
s19 = input.symbol('MCD', group = 'Symbols', inline = 's19')
s20 = input.symbol('MCHP', group = 'Symbols', inline = 's20')
s21 = input.symbol('MDT', group = 'Symbols', inline = 's21')
s22 = input.symbol('MET', group = 'Symbols', inline = 's22')
s23 = input.symbol('MGM', group = 'Symbols', inline = 's23')
s24 = input.symbol('MOS', group = 'Symbols', inline = 's24')
s25 = input.symbol('MPC', group = 'Symbols', inline = 's25')
s26 = input.symbol('MRK', group = 'Symbols', inline = 's26')
s27 = input.symbol('MRNA', group = 'Symbols', inline = 's27')
s28 = input.symbol('MS', group = 'Symbols', inline = 's28')
s29 = input.symbol('MSFT', group = 'Symbols', inline = 's29')
s30 = input.symbol('MU', group = 'Symbols', inline = 's30')
s31 = input.symbol('NCLH', group = 'Symbols', inline = 's31')
s32 = input.symbol('NEE', group = 'Symbols', inline = 's32')
s33 = input.symbol('NEM', group = 'Symbols', inline = 's33')
s34 = input.symbol('NFLX', group = 'Symbols', inline = 's34')
s35 = input.symbol('NKE', group = 'Symbols', inline = 's35')
s36 = input.symbol('NVDA', group = 'Symbols', inline = 's36')
s37 = input.symbol('ORCL', group = 'Symbols', inline = 's37')
s38 = input.symbol('OXY', group = 'Symbols', inline = 's38')
Make a copy 3 - tickers 77 to 114
s01 = input.symbol('PENN', group = 'Symbols', inline = 's01')
s02 = input.symbol('PEP', group = 'Symbols', inline = 's02')
s03 = input.symbol('PFE', group = 'Symbols', inline = 's03')
s04 = input.symbol('PG', group = 'Symbols', inline = 's04')
s05 = input.symbol('PM', group = 'Symbols', inline = 's05')
s06 = input.symbol('PYPL', group = 'Symbols', inline = 's06')
s07 = input.symbol('QCOM', group = 'Symbols', inline = 's07')
s08 = input.symbol('RTX', group = 'Symbols', inline = 's08')
s09 = input.symbol('SBUX', group = 'Symbols', inline = 's09')
s10 = input.symbol('SCHW', group = 'Symbols', inline = 's10')
s11 = input.symbol('SLB', group = 'Symbols', inline = 's11')
s12 = input.symbol('SYF', group = 'Symbols', inline = 's12')
s13 = input.symbol('T', group = 'Symbols', inline = 's13')
s14 = input.symbol('TFC', group = 'Symbols', inline = 's14')
s15 = input.symbol('TGT', group = 'Symbols', inline = 's15')
s16 = input.symbol('TJX', group = 'Symbols', inline = 's16')
s17 = input.symbol('TMUS', group = 'Symbols', inline = 's17')
s18 = input.symbol('TSLA', group = 'Symbols', inline = 's18')
s19 = input.symbol('TWTR', group = 'Symbols', inline = 's19')
s20 = input.symbol('TXN', group = 'Symbols', inline = 's20')
s21 = input.symbol('UAL', group = 'Symbols', inline = 's21')
s22 = input.symbol('UNH', group = 'Symbols', inline = 's22')
s23 = input.symbol('V', group = 'Symbols', inline = 's23')
s24 = input.symbol('VIAC', group = 'Symbols', inline = 's24')
s25 = input.symbol('WBA', group = 'Symbols', inline = 's25')
s26 = input.symbol('WFC', group = 'Symbols', inline = 's26')
s27 = input.symbol('WMT', group = 'Symbols', inline = 's27')
s28 = input.symbol('WYNN', group = 'Symbols', inline = 's28')
s29 = input.symbol('XOM', group = 'Symbols', inline = 's29')
s30 = input.symbol('SPY', group = 'Symbols', inline = 's30')
s31 = input.symbol('SPY', group = 'Symbols', inline = 's31')
s32 = input.symbol('SPY', group = 'Symbols', inline = 's32')
s33 = input.symbol('SPY', group = 'Symbols', inline = 's33')
s34 = input.symbol('SPY', group = 'Symbols', inline = 's34')
s35 = input.symbol('SPY', group = 'Symbols', inline = 's35')
s36 = input.symbol('SPY', group = 'Symbols', inline = 's36')
s37 = input.symbol('SPY', group = 'Symbols', inline = 's37')
s38 = input.symbol('SPY', group = 'Symbols', inline = 's38') Indicator

Indicator

Currency StrengthThis script measures the strength of the 6 major currencies USD, EUR, GBP, CAD, AUD and JPY.
Simply, it averages the RSI values of a currency vs the 5 other currencies in the basket, and displays each average RSI value in a table with color coding to quickly identify the strongest and weakest currencies over the past 14 bars (or user defined length).
The Dir. value looks at the difference in average RSI value between current and X bars back (user defined), telling you whether the combined RSI value has gone up or down in the last X bars.
Using the average RSI allows us to get a sense of the currency strength vs an equally weighted basket of the other majors, as opposed to using Indexes which are heavily weighted to 1 or 2 currencies.
The table doesn't load super fast as we are making 15 Security requests to get the values for each pair (where possible we reverse the values of the pair to reduce Security requests, e.g. we don't need to request EURUSD and USDEUR, we reverse the value to calculate the USD RSI). Indicator

ROC PercentileRate Of Change Percentile calculates the current ROC (user defined length) as a percentile rank.
We use 2 separate arrays, one for all positive ROC values and one for all negative values within a defined lookback period. Then the current ROC value is compared to those arrays to find it's percentile ranking.
For example, a ranking of 75 means the ROC is in the 75th percentile of all POSITIVE ROC values over the lookback period.
A ranking of -80 is in the 80th percentile of all NEGATIVE ROC values over the lookback period.
Most ROC scripts use raw ROC values (or smoothed or otherwise altered), or have stochastic formula applied to them, I've not seen one that displays ROC as percentile ranking of previous positive/negative values.
What is the advantage?
Raw ROC data only gives half the picture. What we want to do is compare the ROC to previous ROC values, to give a sense of scale. Raw ROC values don't give you that context and you can only compare visually, usually limited to the number of bars you can see on your screen.
Using a percentile ranking gives us the context of current Rate of Change relative to the previous Rate of Change over a large lookback period, and not just visually but mathematically.
Why not using a long stochastic ROC? The problem with stochastics in general is that an outlier data point can ruin the data for the rest of the lookback period.
For example, imagine a huge outlier 8% ROC. The 2nd largest ROC is 4% and the 3rd largest is 2%, with all other values below this.
In this example, a stochastic ROC would display the 8% outlier as 100, the 4% as 50, the 2% as 25 and all other data would be squeezed down between 0-25.
Additionally, a value of 60 may have vastly different meaning depending on whether the lookback period contains a large outlier or not.
With a percentile ranking, that 8% outlier would still have a value of 100. But the 4% and 2% would be 99 and 98 respectively (this assumes 100 data points in the series, in reality values will usually be decimals).
This effectively flattens the curve and gives a more consistent and dependable experience, allowing you to more accurately assess the relative importance of the current ROC.
The line of circles is set at the 50 and -50 values for quick comparison.
Values > 50 represent ROC greater than 50% of previous positive ROC values.
Values < -50 represent ROC greater than 50% of previous negative ROC values. Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

RedK Bar Strength Inspector / Bar Strength Index (BSI)Summary
=========
The Bar Strength Inspector / Bar Strength Index (BSI) is an indicator that evaluates each price bar against a user-selectable set of "strength categories" - BSI then calculates a combined score from these categories and provides an index - plotted as a centered oscillator - roughly similar to the way Relative Strength Index (RSI) works, which can be used to evaluate the strength of price move and the possibilities of trend continuation or reversal.
Background
=============
BSI is like a Swiss-army knife with many components - so apologies upfront if this guide gets long - and i know i will still miss few pieces that needs explaining. please alert me if something is not clear.
BSI is an advanced / re-built version of my Ultimate Trader Oscillator (UTO)
I continue to believe that one of the best trading tools that i can use, is a tool that can automate the visual inspection of the price chart - a tool that simulates (and quantifies in numbers/score) the way we visually look at a certain price bar, and make a judgement that "this is a strong bar, so I expect the trend down to possibly reverse" - BSI is a an attempt to achieve that. An attempt to answer a simple question (in a quantifiable manner):
how strong / weak is this price bar - how does it compare to previous bars ? what is the average of that strength (or weakness) for the last few bars ?(based on the trader's preferred timeframe)
How does BSI work
====================
* BSI will inspect and evaluate each bar against various (selectable) strength categories.
* BSI will give a -100/+100 score against each "strength category", then combine these scores into an index and create an average of that index
* the average index (also called BSI) will be calculated for both a short and long lengths
* the short length represents "local / short-term" strength - plotted as a blue/orange line (with an additional signal line to make easier to "read")
* the long-term reflects the broader bias (sentiment) - plotted as green/red area (or mountain)
How is BSI different from UTO
=============================
- I wrote BSI from the ground up to validate each scoring calculation and the resulting outcomes - so i would consider BSI to be more accurate than UTO
- i wrote BSI in a way to make it a lot more flexible. BSI allows me to choose which category to include in the "inspection"
- the strength categories are streamlined to reflect single bar strength, strength from bar-to-bar, and relative strength (range and volume) - they have also been chosen in a way that map to commonly used Technical Analysis concepts, to increase the value of BSI and the ability to compare with other common indicators (for example, BoP, Stochastic, Relative Volume and RSI)
- added the table view - which i use mainly to track the action within the current bar - and to learn more about how to evaluate strength vs weakness with various chart patterns
- UTO still represents the foundation of this work - but i will not update UTO any longer so all changes will be applied to the BSI- i have been using both UTO and BSI to guide my trading for the past few months.
- couple of other features in BSI:
- support for instruments with no volume data (even if the user chooses volume) - number of inspection categories will show as "7" in that case
- ability to plot the individual category scores, and the total weighted score (for the selected categories) - these plots are hidden by default
- ability to see the total score for all 8 (or 7 in case no volume data) categories regardless of how many are active - but only in the table view
- ability to be used as both a lower (independent) and a top indicator (on the price chart) -- see below examples.
Structure of the BSI Strength Categories
=====================================
The first 3 inspected strength categories focus on "single bar strength", they evaluate how the bar closes compared to the low, the Balance of Power (BoP) and the relative BoP
The next 3 categories focus on evaluating the bar-to-bar strength: how the bar closes compared to the low of the 2-bar range, how the bar closes compared to prior close - and the relative "shift"
The last 2 "strength" categories evaluate the relative range of bar compared to recent average range and the relative volume.
Understanding the bar inspection & scoring approach
==================================
During inspection for each category, a score is calculated with a value between 0 to 100, then it will be made "directional" - which means that +100 represents highest possible strength score and a value of -100 is the highest possible "weakness" score
Note that a 0 score doesn't mean "weak" - but rather "neutral" - this can be a bit confusing until we get used to the way BSI scoring works.
Example: in relative volume, a bar associated with the lowest volume observed during the lookback length, will have a 0 relative volume score -- while a bar associated with the highest volume observed will have either a +100 or a -100 score (depending on whether it's an up or down bar) - same thing for relative range.. and so on
Here are the 8 strength categories evaluated by the BSI
1 Bar closing score
2 Body : Spread (BoP) ratio
3 Relative BoP
4 2-bar Closing Score
5 2-bar Shift Ratio (Shift : 2R)
6 Relative Shift
7 Relative Range
8 Relative Volume
Specific meaning of keywords / concepts (within BSI context):
======================================================
Relative : compared to recently observed values (= within Lookback # bars)
Shift : the change in closing value vs prior bar
Bar Spread : high - low
Range : True Range ..... as in the tr() Pine function, so not to be confused with "spread"
More detailed notes about scoring and calculations for each strength category are included within the code
BSI Settings:
=============
Here is a chart showing the main sections in the BSI Settings box and how to configure it to your preference
Using the BSI:
================
- I use BSI for 2 main scenarios
(1) Guiding my Day-to-day trading: the usage here is roughly similar to a volume-weighted dual-period RSI .. with a lot more options - picking and choosing between the 8 strength categories in BSI allows for 255 variations of "strength evaluations" - a trader can choose to focus only on "single bar strength" score categories, so only picks the top 3 in the settings - another trader wants to track only the strength reflected by the relative range and relative volume, so picks the lower 2 categories. another trader wants to use BSI as a volume weighted Balance of Power.. and so on. Many combinations are possible.
i have added couple of charts that explain some of the "signals" we can expect from BSI (below chart) - note that i use the "Green/Red mountain plot" as the "prevailing sentiment" - as it confirms the longer term strength (or weakness). the BSI line plot reflects the short term strength and not necessarily tied directly to how the price is moving (see example in the chart - and also compare to how RSI works)
- 2 important points here if you plan to use BSI in trading: set BSI up on a 1-min or 5-min chart and watch how it works to learn how it evaluates each bar - and always use BSI in combination with other indicators that you are familiar with to validate and confirm any signals
(Important note: do not react to the values in the table as they change in real time - i found that to be very tempting - rather look at the broader context and the flow of the BSI / sentiment) - you can also test BSI with Paper Trading in TV - it's like a new car that you need some time to get used to :)
(2) Use BSI to help learn chart / pattern analysis - watch BSI print scores against the various categories in real time to hone your chart (pattern) reading skills and how to evaluate strength of various bar shapes - for example, a bar that closes at the high but does not reach the mid point of the prior bar - strong or weak ? how about a doji or a hammer ? ...etc
Chart showing main usage scenarios
Example BSI in real time:
======================
I hope this work helps few fellow traders hone their trading skills, or help inspire other ideas - please let me know if you have feedback or suggestions.
Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator
