Mag7 IndexThis is an indicator index based on cumulative market value of the Magnificent 7 (AAPL, MSFT, NVDA, TSLA, META, AMZN, GOOG). Such an indicator for the famous Mag 7, against which your main security can be benchmarked, was missing from the TradingView user library.
The index bar values are calculated by taking the weighted average of the 7 stocks, relative to their market cap. Explicitly, we are multiplying each bar period's total outstanding stock amount by the OHLC of that period for each stock and dividing that value by the combined sum of outstanding stock for the 7 corporations. OHLC is taken for the extended trading session.
The index dynamically adjusts with respect to the chosen main security and the bars/line visible in the chart window; that is, the first close value is normalized to the main security's first close value. It provides recalculation of the performance in that chart window as you scroll (this isn't apparent in the demo chart above this description).
It can be useful for checking market breadth, or benchmarking price performance of the individual stock components that comprise the Magnificent 7. I prefer comparing the indicator to the Nasdaq Composite Index (IXIC) or S&P500 (SPX), but of course you can make comparisons to any security or commodity.
Settings Input Options:
1) Bar vs. Line - view as OHLC colored bars or line chart. Line chart color based on close above or below the previous period close as green or red line respectively.
2) % vs Regular - the final value for the window period as % return for that window or index value
3) Turn on/off - bottom right tile displaying window-period performance
Inspired by the simpler NQ 7 Index script by @RaenonX but with normalization to main security at start of window and additional settings input options.
Please provide feedback for additional features, e.g., if a regular/extended session option is useful.
Cari dalam skrip untuk "spx"
Danger Signals from The Trading MindwheelThe " Danger Signals " indicator, a collaborative creation from the minds at Amphibian Trading and MARA Wealth, serves as your vigilant lookout in the volatile world of stock trading. Drawing from the wisdom encapsulated in "The Trading Mindwheel" and the successful methodologies of legends like William O'Neil and Mark Minervini, this tool is engineered to safeguard your trading journey.
Core Features:
Real-Time Alerts: Identify critical danger signals as they emerge in the market. Whether it's a single day of heightened risk or a pattern forming, stay informed with specific danger signals and a tally of signals for comprehensive decision-making support. The indicator looks for over 30 different signals ranging from simple closing ranges to more complex signals like blow off action.
Tailored Insights with Portfolio Heat Integration: Pair with the "Portfolio Heat" indicator to customize danger signals based on your current positions, entry points, and stops. This personalized approach ensures that the insights are directly relevant to your trading strategy. Certain signals can have different meanings based on where your trade is at in its lifecycle. Blow off action at the beginning of a trend can be viewed as strength, while after an extended run could signal an opportunity to lock in profits.
Forward-Looking Analysis: Leverage the 'Potential Danger Signals' feature to assess future risks. Enter hypothetical price levels to understand potential market reactions before they unfold, enabling proactive trade management.
The indicator offers two different modes of 'Potential Danger Signals', Worst Case or Immediate. Worst Case allows the user to input any price and see what signals would fire based on price reaching that level, while the Immediate mode looks for potential Danger Signals that could happen on the next bar.
This is achieved by adding and subtracting the average daily range to the current bars close while also forecasting the next values of moving averages, vwaps, risk multiples and the relative strength line to see if a Danger Signal would trigger.
User Customization: Flexibility is at your fingertips with toggle options for each danger signal. Tailor the indicator to match your unique trading style and risk tolerance. No two traders are the same, that is why each signal is able to be turned on or off to match your trading personality.
Versatile Application: Ideal for growth stock traders, momentum swing traders, and adherents of the CANSLIM methodology. Whether you're a novice or a seasoned investor, this tool aligns with strategies influenced by trading giants.
Validation and Utility:
Inspired by the trade management principles of Michael Lamothe, the " Danger Signals " indicator is more than just a tool; it's a reflection of tested strategies that highlight the importance of risk management. Through rigorous validation, including the insights from "The Trading Mindwheel," this indicator helps traders navigate the complexities of the market with an informed, strategic approach.
Whether you're contemplating a new position or evaluating an existing one, the " Danger Signals " indicator is designed to provide the clarity needed to avoid potential pitfalls and capitalize on opportunities with confidence. Embrace a smarter way to trade, where awareness and preparation open the door to success.
Let's dive into each of the components of this indicator.
Volume: Volume refers to the number of shares or contracts traded in a security or an entire market during a given period. It is a measure of the total trading activity and liquidity, indicating the overall interest in a stock or market.
Price Action: the analysis of historical prices to inform trading decisions, without the use of technical indicators. It focuses on the movement of prices to identify patterns, trends, and potential reversal points in the market.
Relative Strength Line: The RS line is a popular tool used to compare the performance of a stock, typically calculated as the ratio of the stock's price to a benchmark index's price. It helps identify outperformers and underperformers relative to the market or a specific sector. The RS value is calculated by dividing the close price of the chosen stock by the close price of the comparative symbol (SPX by default).
Average True Range (ATR): ATR is a market volatility indicator used to show the average range prices swing over a specified period. It is calculated by taking the moving average of the true ranges of a stock for a specific period. The true range for a period is the greatest of the following three values:
The difference between the current high and the current low.
The absolute value of the current high minus the previous close.
The absolute value of the current low minus the previous close.
Average Daily Range (ADR): ADR is a measure used in trading to capture the average range between the high and low prices of an asset over a specified number of past trading days. Unlike the Average True Range (ATR), which accounts for gaps in the price from one day to the next, the Average Daily Range focuses solely on the trading range within each day and averages it out.
Anchored VWAP: AVWAP gives the average price of an asset, weighted by volume, starting from a specific anchor point. This provides traders with a dynamic average price considering both price and volume from a specific start point, offering insights into the market's direction and potential support or resistance levels.
Moving Averages: Moving Averages smooth out price data by creating a constantly updated average price over a specific period of time. It helps traders identify trends by flattening out the fluctuations in price data.
Stochastic: A stochastic oscillator is a momentum indicator used in technical analysis that compares a particular closing price of an asset to a range of its prices over a certain period of time. The theory behind the stochastic oscillator is that in a market trending upwards, prices will tend to close near their high, and in a market trending downwards, prices close near their low.
While each of these components offer unique insights into market behavior, providing sell signals under specific conditions, the power of combining these different signals lies in their ability to confirm each other's signals. This in turn reduces false positives and provides a more reliable basis for trading decisions
These signals can be recognized at any time, however the indicators power is in it's ability to take into account where a trade is in terms of your entry price and stop.
If a trade just started, it hasn’t earned much leeway. Kind of like a new employee that shows up late on the first day of work. It’s less forgivable than say the person who has been there for a while, has done well, is on time, and then one day comes in late.
Contextual Sensitivity:
For instance, a high volume sell-off coupled with a bearish price action pattern significantly strengthens the sell signal. When the price closes below an Anchored VWAP or a critical moving average in this context, it reaffirms the bearish sentiment, suggesting that the momentum is likely to continue downwards.
By considering the relative strength line (RS) alongside volume and price action, the indicator can differentiate between a normal retracement in a strong uptrend and a when a stock starts to become a laggard.
The integration of ATR and ADR provides a dynamic framework that adjusts to the market's volatility. A sudden increase in ATR or a character change detected through comparing short-term and long-term ADR can alert traders to emerging trends or reversals.
The "Danger Signals" indicator exemplifies the power of integrating diverse technical indicators to create a more sophisticated, responsive, and adaptable trading tool. This approach not only amplifies the individual strengths of each indicator but also mitigates their weaknesses.
Portfolio Heat Indicator can be found by clicking on the image below
Danger Signals Included
Price Closes Near Low - Daily Closing Range of 30% or Less
Price Closes Near Weekly Low - Weekly Closing Range of 30% or Less
Price Closes Near Daily Low on Heavy Volume - Daily Closing Range of 30% or Less on Heaviest Volume of the Last 5 Days
Price Closes Near Weekly Low on Heavy Volume - Weekly Closing Range of 30% or Less on Heaviest Volume of the Last 5 Weeks
Price Closes Below Moving Average - Price Closes Below One of 5 Selected Moving Averages
Price Closes Below Swing Low - Price Closes Below Most Recent Swing Low
Price Closes Below 1.5 ATR - Price Closes Below Trailing ATR Stop Based on Highest High of Last 10 Days
Price Closes Below AVWAP - Price Closes Below Selected Anchored VWAP (Anchors include: High of base, Low of base, Highest volume of base, Custom date)
Price Shows Aggressive Selling - Current Bars High is Greater Than Previous Day's High and Closes Near the Lows on Heaviest Volume of the Last 5 Days
Outside Reversal Bar - Price Makes a New High and Closes Near the Lows, Lower Than the Previous Bar's Low
Price Shows Signs of Stalling - Heavy Volume with a Close of Less than 1%
3 Consecutive Days of Lower Lows - 3 Days of Lower Lows
Close Lower than 3 Previous Lows - Close is Less than 3 Previous Lows
Character Change - ADR of Last Shorter Length is Larger than ADR of Longer Length
Fast Stochastic Crosses Below Slow Stochastic - Fast Stochastic Crosses Below Slow Stochastic
Fast & Slow Stochastic Curved Down - Both Stochastic Lines Close Lower than Previous Day for 2 Consecutive Days
Lower Lows & Lower Highs Intraday - Lower High and Lower Low on 30 Minute Timeframe
Moving Average Crossunder - Selected MA Crosses Below Other Selected MA
RS Starts Curving Down - Relative Strength Line Closes Lower than Previous Day for 2 Consecutive Days
RS Turns Negative Short Term - RS Closes Below RS of 7 Days Ago
RS Underperforms Price - Relative Strength Line Not at Highs, While Price Is
Moving Average Begins to Flatten Out - First Day MA Doesn't Close Higher
Price Moves Higher on Lighter Volume - Price Makes a New High on Light Volume and 15 Day Average Volume is Less than 50 Day Average
Price Hits % Target - Price Moves Set % Higher from Entry Price
Price Hits R Multiple - Price hits (Entry - Stop Multiplied by Setting) and Added to Entry
Price Hits Overhead Resistance - Price Crosses a Swing High from a Monthly Timeframe Chart from at Least 1 Year Ago
Price Hits Fib Level - Price Crosses a Fib Extension Drawn From Base High to Low
Price Hits a Psychological Level - Price Crosses a Multiple of 0 or 5
Heavy Volume After Significant Move - Above Average and Heaviest Volume of the Last 5 Days 35 Bars or More from Breakout
Moving Averages Begin to Slope Downward - Moving Averages Fall for 2 Consecutive Days
Blow Off Action - Highest Volume, Largest Spread, Multiple Gaps in a Row 35 Bars or More Post Breakout
Late Buying Frenzy - ANTS 35 Bars or More Post Breakout
Exhaustion Gap - Gap Up 5% or Higher with Price 125% or More Above 200sma
Buy and hold visualiserThis indicator shows the historical performance of a buy and hold portfolio. The purpose of the indicator is to show
1. the effect of the hold time (time between buying and selling a number of instruments) and
2. the effect of investing all capital at once (lump sum) versus dividing the investment over a number of months or years (cost averaging).
The indicator shows four lines:
- a dotted line at 0 (dollar or any other currency),
- a dotted line at the level of initial investment,
- a blue line that shows the amount of capital after selling at the end of the investment period after a lump sum investment,
- a green line that shows the amount of capital after selling at the end of the investment period after an investment that was done in chunks (cost averaging)
When 'chunks' is set to 1, the green line will match the blue line.
When 'investment' is set to 1, the blue and green lines will show the factor by which the initial investment was multiplied at the end of the investment period.
The effect of the hold time can be easily seen in the following example: Choose SPX (CBOE) as the active instrument, set 'chunks' to 1 and 'months' to 12. Depending on when you bought your portfolio, selling it a year later is like tossing a coin. Set 'months' to 360 and it becomes clear that it doesn't matter when you buy, the value of your portfolio will likely multiply considerably in 30 years, even if you bought everything all at once just before a bear market. It shows that with a long time horizon, you don't have to worry about timing the market.
Continue the example above and set 'chunks' to 12, thus spreading the initial investment over 12 months. The green line shows the cost averaging performance. The blue lump sum line is above the green line most of the time. Increase the chunks to 60 and the difference increases.
ARIMA Moving Average and Forecaster [SS]Finally releasing this. This took months, over 3 months to be precise, to figure out, code and troubleshoot! I honestly was going to give up on this project, but I finally got it to actually work fairly reliably. So hopefully you like it!
This is a very basic ARIMA modeler. It can do the following:
1. Provide you with an ARIMA based Moving Average;
2. Provide you with a standard error band;
3. Auto-select a lag length for assessment based on stationarity;
3. Provide you with the option of extending the error range by a user selected amount of standard deviations; and
4. Forecasting and plotting the forecast on the chart.
I will go over each function individually, but before I do, I think its important to talk a bit about what an ARIMA Model is and does:
ARIMA stands for AutoRegressive Integrated Moving Average and is an approach to modeling and time series forecasting. In simple terms, it combines autoregressive (AR) and moving average (MA) components to capture the underlying patterns in a time series data. The "AutoRegressive" part accounts for the relationship between an observation and its previous values, while the "Moving Average" part considers the relationship between an observation and a residual error from past observations. The "Integrated" component involves differencing the time series to make it stationary, which aids in stabilizing the model. ARIMA models help predict future values based on patterns observed in historical data, making them useful for forecasting in various fields such as economics, finance, and weather prediction.
The benefits to ARIMA is it will forecast based on the current trend, but it also provides for both the up and down scenario of the trend (i.e., if we are in a downtrend, what it would look like and what values we could expect if the trend reverses and vice versa). All of this is within the scope of this indicator, believe it or not!
If you would like more information on ARIMA, you can check out my educational post about it here:
Alrighty, now for the indicator functions.
ARIMA Moving Average and Standard Error Band
The ARIMA moving average is very simple, it takes the SMA of the current trend, lags it and plots out the lagged SMA. You can toggle the auto-select lag on, or you can pick your own lag manually. The above image is an auto-selected lag, but if we manually lag it by 5, this is what it looks like:
Its simply a lagged average of the 5 SMA (that is essentially how ARIMA works, by creating a moving average and lagging the moving average).
There are some implications to selecting a lag factor when it comes to forecasting, but I will cover this in the forecasting section. But I do want to make mention, you can use the ARIMA moving average in lieu of other moving averages. The advantage to doing this is it will be able to plot out the error bands. For example, if we wanted to get an ARIMA MA of the 200 SMA, we can toggle on the error bands and this is what we get:
Or the 50 MA:
NOTE: You ABSOLUTELY SHOULD NEVER use more than a lag of 4 or 5 for Forecasting (will be discussed later).
Auto-Select Lag
The indicator pulls the ARIMA modeler framework from my Forecasting library and pulls the stationarity assessment from my SPTS library. When you are doing an ARIMA model for forecasting, we need to ensure the data is stationary. Thus, if you want to forecast out the current trend, its highly recommended you select the "Auto Determine Lag Length" to find the most appropriate lag and forecast accordingly.
You can, however, chose your own lag order (model order), but this should never be above 4 or 5.
You should never select a lag of more than 5 because you are introducing too much "trendiness" into the equation, and you will get astronomical readings. ARIMA models never generally exceed a lag of 3 or 4 at most, as they are supposed be stationary and de-trended.
Extending by Standard Deviation
There is an option to select a standard deviation extension band. This is helpful for active day trading. Here is NIO extended by 2 standard deviations:
General suggestion is to only extend by 2 standard deviations and this is sufficient for most stocks.
Forecasting
The hallmark of an ARIMA model is the ability to use it for forecasting. Thus, the forecasting feature is a large portion of this indicator. You can see it displayed in the main chart above, but let's show some other examples:
NIO on the 1 hour:
TSLA on the 4 hour:
You can also display a forecasting table:
The result row shows the most likely, conservative, price at each time increment.
The Upper Confidence and Lower Confidence show what the trend would look like if it continued up or down at the current rate and the 95% confidence intervals show the values that the true source is likely to fall between at various increments in time with a 95% confidence (i.e. 95% probability that it should fall between these levels at period xyz assuming normal distribution).
The important levels, in my opinion, are the upper and lower confidence levels. These show you the current rate of decline or increase that the stock is expecting and what the trend would look like with a continuation or a reversal. This is ARIMA's biggest strength, as it has the ability to plot both outcomes assuming the current trend rate and time remains constant.
And that is the indicator! ARIMA is a bit of a complex process, but its a very powerful tool when used properly!
Troubleshooting:
One thing of note. Sometimes when autoselecting a length for forecasting, if there has been a heavy trend in one direction, you will not get the upper or lower confidence levels because of the lack of any up or down movement. In this case, manually select a lag of 3 to 5 to correct for this.
Let me know if you have any questions below and safe trades everyone!
Market Average TrendThis indicator aims to be complimentary to SPDR Tracker , but I've adjusted the name as I've been able to utilize the "INDEX" data provider to support essentially every US market.
This is a breadth market internal indicator that allows quick review of strength given the 5, 20, 50, 100, 150 and 200 simple moving averages. Each can be toggled to build whatever combinations are desired, I recommend reviewing classic combinations such as 5 & 20 as well as 50 & 200.
It's entirely possible that I've missed some markets that "INDEX" provides data for, if you find any feel free to drop a comment and I'll add support for them in an update.
Markets currently supported:
S&P 100
S&P 500
S&P ENERGIES
S&P INFO TECH
S&P MATERIALS
S&P UTILITIES
S&P FINANCIALS
S&P REAL ESTATE
S&P CON STAPLES
S&P HEALTH CARE
S&P INDUSTRIALS
S&P TELECOM SRVS
S&P CONSUMER DISC
S&P GROWTH
NAS 100
NAS COMP
DOW INDUSTRIAL
DOW COMP
DOW UTILITIES
DOW TRANSPORTATION
RUSSELL 1000
RUSSELL 2000
RUSSELL 3000
You can utilize this to watch stocks for dip buys or potential trend continuation entries, short entries, swing exits or numerous other portfolio management strategies.
If using it with stocks, it's advisable to ensure the stock often follows the index, otherwise obviously it's great to use with major indexes and determine holdings sentiment.
Important!
The "INDEX" data provider only supplies updates to all of the various data feeds at the end of day, I've noticed quite some delays even after market close and not taken time to review their actual update schedule (if even published). Therefore, it's strongly recommended to mostly ignore the last value in the series until it's the day after.
Only works on daily timeframes and above, please don't comment that it's not working if on other timeframes lower than daily :)
Feedback and suggestions are always welcome, enjoy!
chrono_utilsLibrary "chrono_utils"
Collection of objects and common functions that are related to datetime windows session days and time
ranges. The main purpose of this library is to handle time-related functionality and make it easy to reason about a
future bar and see if it is part of a predefined user session and/or inside a datetime window. All existing session
functions I found in the documentation e.g. "not na(time(timeframe, session, timezone))" are not suitable for
strategies, since the execution of the orders is delayed by one bar due to the execution happening at the bar close.
So a prediction for the next bar is necessary. Moreover, a history operator with a negative value is not allowed e.g.
`not na(time(timeframe, session, timezone) )` expression is not valid. Thus, I created this library to overcome
this small but very important limitation. In the meantime, I added useful functionality to handle session-based
behavior. An interesting utility that emerged from this development is data anomaly detection where a comparison
between the prediction and the actual value is happening. If those two values are different then a data inconsistency
happens between the prediction bar and the actual bar (probably due to a holiday or half session day etc..)
exTimezone(timezone)
exTimezone - Convert extended timezone to timezone string
Parameters:
timezone (simple string) : - The timezone or a special string
Returns: string representing the timezone
nameOfDay(day)
nameOfDay - Convert the day id into a short nameOfDay
Parameters:
day (int) : - The day id to convert
Returns: - The short name of the day
today()
today - Get the day id of this day
Returns: - The day id
nthDayAfter(day, n)
nthDayAfter - Get the day id of n days after the given day
Parameters:
day (int) : - The day id of the reference day
n (int) : - The number of days to go forward
Returns: - The day id of the day that is n days after the reference day
nextDayAfter(day)
nextDayAfter - Get the day id of next day after the given day
Parameters:
day (int) : - The day id of the reference day
Returns: - The day id of the next day after the reference day
nthDayBefore(day, n)
nthDayBefore - Get the day id of n days before the given day
Parameters:
day (int) : - The day id of the reference day
n (int) : - The number of days to go forward
Returns: - The day id of the day that is n days before the reference day
prevDayBefore(day)
prevDayBefore - Get the day id of previous day before the given day
Parameters:
day (int) : - The day id of the reference day
Returns: - The day id of the previous day before the reference day
tomorrow()
tomorrow - Get the day id of the next day
Returns: - The next day day id
normalize(num, min, max)
normalizeHour - Check if number is inthe range of
Parameters:
num (int)
min (int)
max (int)
Returns: - The normalized number
normalizeHour(hourInDay)
normalizeHour - Check if hour is valid and return a noralized hour range from
Parameters:
hourInDay (int)
Returns: - The normalized hour
normalizeMinute(minuteInHour)
normalizeMinute - Check if minute is valid and return a noralized minute from
Parameters:
minuteInHour (int)
Returns: - The normalized minute
monthInMilliseconds(mon)
monthInMilliseconds - Calculate the miliseconds in one bar of the timeframe
Parameters:
mon (int) : - The month of reference to get the miliseconds
Returns: - The number of milliseconds of the month
barInMilliseconds()
barInMilliseconds - Calculate the miliseconds in one bar of the timeframe
Returns: - The number of milliseconds in one bar
method init(this, fromDateTime, toDateTime)
init - Initialize the time window object from boolean values of each session day
Namespace types: DateTimeWindow
Parameters:
this (DateTimeWindow) : - The time window object that will hold the from and to datetimes
fromDateTime (int) : - The starting datetime of the time window
toDateTime (int) : - The ending datetime of the time window
Returns: - The time window object
method init(this, refTimezone, chTimezone, fromDateTime, toDateTime)
init - Initialize the time window object from boolean values of each session day
Namespace types: DateTimeWindow
Parameters:
this (DateTimeWindow) : - The time window object that will hold the from and to datetimes
refTimezone (simple string) : - The timezone of reference of the 'from' and 'to' dates
chTimezone (simple string) : - The target timezone to convert the 'from' and 'to' dates
fromDateTime (int) : - The starting datetime of the time window
toDateTime (int) : - The ending datetime of the time window
Returns: - The time window object
method init(this, sun, mon, tue, wed, thu, fri, sat)
init - Initialize the session days object from boolean values of each session day
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object that will hold the day selection
sun (bool) : - Is Sunday a trading day?
mon (bool) : - Is Monday a trading day?
tue (bool) : - Is Tuesday a trading day?
wed (bool) : - Is Wednesday a trading day?
thu (bool) : - Is Thursday a trading day?
fri (bool) : - Is Friday a trading day?
sat (bool) : - Is Saturday a trading day?
Returns: - The session days objectfrom_chart
method init(this, unixTime)
init - Initialize the object from the hour and minute of the session time in exchange timezone (syminfo.timezone)
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
unixTime (int) : - The unix time
Returns: - The session time object
method init(this, hourInDay, minuteInHour)
init - Initialize the object from the hour and minute of the session time in exchange timezone (syminfo.timezone)
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
hourInDay (int) : - The hour of the time
minuteInHour (int) : - The minute of the time
Returns: - The session time object
method init(this, hourInDay, minuteInHour, refTimezone)
init - Initialize the object from the hour and minute of the session time
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
hourInDay (int) : - The hour of the time
minuteInHour (int) : - The minute of the time
refTimezone (string) : - The timezone of reference of the 'hour' and 'minute'
Returns: - The session time object
method init(this, startTime, endTime)
init - Initialize the object from the start and end session time in exchange timezone (syminfo.timezone)
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object that will hold the start and end time of the daily session
startTime (SessionTime) : - The time the session begins
endTime (SessionTime) : - The time the session ends
Returns: - The session time range object
method init(this, startTimeHour, startTimeMinute, endTimeHour, endTimeMinute, refTimezone)
init - Initialize the object from the start and end session time
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object that will hold the start and end time of the daily session
startTimeHour (int) : - The time hour the session begins
startTimeMinute (int) : - The time minute the session begins
endTimeHour (int) : - The time hour the session ends
endTimeMinute (int) : - The time minute the session ends
refTimezone (string)
Returns: - The session time range object
method init(this, days, timeRanges)
init - Initialize the user session object from session days and time range
Namespace types: UserSession
Parameters:
this (UserSession) : - The user-defined session object that will hold the day and the time range selection
days (SessionDays) : - The session days object that defines the days the session is happening
timeRanges (SessionTimeRange ) : - The array of all the session time ranges during a session day
Returns: - The user session object
method to_string(this)
to_string - Formats the time window into a human-readable string
Namespace types: DateTimeWindow
Parameters:
this (DateTimeWindow) : - The time window object with the from and to datetimes
Returns: - The string of the time window
method to_string(this)
to_string - Formats the session days into a human-readable string with short day names
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object with the day selection
Returns: - The string of the session day short names
method to_string(this)
to_string - Formats the session time into a human-readable string
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
Returns: - The string of the session time
method to_string(this)
to_string - Formats the session time into a human-readable string
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object with the start and end time of the daily session
Returns: - The string of the session time
method to_string(this)
to_string - Formats the user session into a human-readable string
Namespace types: UserSession
Parameters:
this (UserSession) : - The user-defined session object with the day and the time range selection
Returns: - The string of the user session
method to_string(this)
to_string - Formats the bar into a human-readable string
Namespace types: Bar
Parameters:
this (Bar) : - The bar object with the open and close times
Returns: - The string of the bar times
method to_string(this)
to_string - Formats the chart session into a human-readable string
Namespace types: ChartSession
Parameters:
this (ChartSession) : - The chart session object that contains the days and the time range shown in the chart
Returns: - The string of the chart session
method get_size_in_secs(this)
get_size_in_secs - Count the seconds from start to end in the given timeframe
Namespace types: DateTimeWindow
Parameters:
this (DateTimeWindow) : - The time window object with the from and to datetimes
Returns: - The number of seconds inside the time widow for the given timeframe
method get_size_in_secs(this)
get_size_in_secs - Calculate the seconds inside the session
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object with the start and end time of the daily session
Returns: - The number of seconds inside the session
method get_size_in_bars(this)
get_size_in_bars - Count the bars from start to end in the given timeframe
Namespace types: DateTimeWindow
Parameters:
this (DateTimeWindow) : - The time window object with the from and to datetimes
Returns: - The number of bars inside the time widow for the given timeframe
method get_size_in_bars(this)
get_size_in_bars - Calculate the bars inside the session
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object with the start and end time of the daily session
Returns: - The number of bars inside the session for the given timeframe
method from_chart(this)
from_chart - Initialize the session days object from the chart
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object that will hold the day selection
Returns: - The user session object
method from_chart(this)
from_chart - Initialize the session time range object from the chart
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object that will hold the start and end time of the daily session
Returns: - The session time range object
method from_chart(this)
from_chart - Initialize the session object from the chart
Namespace types: ChartSession
Parameters:
this (ChartSession) : - The chart session object that will hold the days and the time range shown in the chart
Returns: - The chart session object
method to_sess_string(this)
to_sess_string - Formats the session days into a session string with day ids
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object
Returns: - The string of the session day ids
method to_sess_string(this)
to_sess_string - Formats the session time into a session string
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
Returns: - The string of the session time
method to_sess_string(this)
to_sess_string - Formats the session time into a session string
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object with the start and end time of the daily session
Returns: - The string of the session time
method to_sess_string(this)
to_sess_string - Formats the user session into a session string
Namespace types: UserSession
Parameters:
this (UserSession) : - The user-defined session object with the day and the time range selection
Returns: - The string of the user session
method to_sess_string(this)
to_sess_string - Formats the chart session into a session string
Namespace types: ChartSession
Parameters:
this (ChartSession) : - The chart session object that contains the days and the time range shown in the chart
Returns: - The string of the chart session
method from_sess_string(this, sess)
from_sess_string - Initialize the session days object from the session string
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object that will hold the day selection
sess (string) : - The session string part that represents the days
Returns: - The session days object
method from_sess_string(this, sess)
from_sess_string - Initialize the session time object from the session string in exchange timezone (syminfo.timezone)
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object that will hold the hour and minute of the time
sess (string) : - The session string part that represents the time HHmm
Returns: - The session time object
method from_sess_string(this, sess, refTimezone)
from_sess_string - Initialize the session time object from the session string
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object that will hold the hour and minute of the time
sess (string) : - The session string part that represents the time HHmm
refTimezone (simple string) : - The timezone of reference of the 'hour' and 'minute'
Returns: - The session time object
method from_sess_string(this, sess)
from_sess_string - Initialize the session time range object from the session string in exchange timezone (syminfo.timezone)
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object that will hold the start and end time of the daily session
sess (string) : - The session string part that represents the time range HHmm-HHmm
Returns: - The session time range object
method from_sess_string(this, sess, refTimezone)
from_sess_string - Initialize the session time range object from the session string
Namespace types: SessionTimeRange
Parameters:
this (SessionTimeRange) : - The session time range object that will hold the start and end time of the daily session
sess (string) : - The session string part that represents the time range HHmm-HHmm
refTimezone (simple string) : - The timezone of reference of the time ranges
Returns: - The session time range object
method from_sess_string(this, sess)
from_sess_string - Initialize the user session object from the session string in exchange timezone (syminfo.timezone)
Namespace types: UserSession
Parameters:
this (UserSession) : - The user-defined session object that will hold the day and the time range selection
sess (string) : - The session string that represents the user session HHmm-HHmm,HHmm-HHmm:ddddddd
Returns: - The session time range object
method from_sess_string(this, sess, refTimezone)
from_sess_string - Initialize the user session object from the session string
Namespace types: UserSession
Parameters:
this (UserSession) : - The user-defined session object that will hold the day and the time range selection
sess (string) : - The session string that represents the user session HHmm-HHmm,HHmm-HHmm:ddddddd
refTimezone (simple string) : - The timezone of reference of the time ranges
Returns: - The session time range object
method nth_day_after(this, day, n)
nth_day_after - The nth day after the given day that is a session day (true) in the object
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object with the day selection
day (int) : - The day id of the reference day
n (int) : - The number of days after
Returns: - The day id of the nth session day of the week after the given day
method nth_day_before(this, day, n)
nth_day_before - The nth day before the given day that is a session day (true) in the object
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object with the day selection
day (int) : - The day id of the reference day
n (int) : - The number of days after
Returns: - The day id of the nth session day of the week before the given day
method next_day(this)
next_day - The next day that is a session day (true) in the object
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object with the day selection
Returns: - The day id of the next session day of the week
method previous_day(this)
previous_day - The previous day that is session day (true) in the object
Namespace types: SessionDays
Parameters:
this (SessionDays) : - The session days object with the day selection
Returns: - The day id of the previous session day of the week
method get_sec_in_day(this)
get_sec_in_day - Count the seconds since the start of the day this session time represents
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
Returns: - The number of seconds passed from the start of the day until that session time
method get_ms_in_day(this)
get_ms_in_day - Count the milliseconds since the start of the day this session time represents
Namespace types: SessionTime
Parameters:
this (SessionTime) : - The session time object with the hour and minute of the time of the day
Returns: - The number of milliseconds passed from the start of the day until that session time
method eq(this, other)
eq - Compare two bars
Namespace types: Bar
Parameters:
this (Bar) : - The bar object with the open and close times
other (Bar) : - The bar object to compare with
Returns: - Whether this bar is equal to the other one
method get_open_time(this)
get_open_time - The open time object
Namespace types: Bar
Parameters:
this (Bar) : - The bar object with the open and close times
Returns: - The open time object
method get_close_time(this)
get_close_time - The close time object
Namespace types: Bar
Parameters:
this (Bar) : - The bar object with the open and close times
Returns: - The close time object
method get_time_range(this)
get_time_range - Get the time range of the bar
Namespace types: Bar
Parameters:
this (Bar) : - The bar object with the open and close times
Returns: - The time range that the bar is in
getBarNow()
getBarNow - Get the current bar object with time and time_close timestamps
Returns: - The current bar
getFixedBarNow()
getFixedBarNow - Get the current bar with fixed width defined by the timeframe. Note: There are case like SPX 15min timeframe where the last session bar is only 10min. This will return a bar of 15 minutes
Returns: - The current bar
method is_in_window(this, win)
is_in_window - Check if the given bar is between the start and end dates of the window
Namespace types: Bar
Parameters:
this (Bar) : - The bar to check if it is between the from and to datetimes of the window
win (DateTimeWindow) : - The time window object with the from and to datetimes
Returns: - Whether the current bar is inside the datetime window
method is_in_timerange(this, rng)
is_in_timerange - Check if the given bar is inside the session time range
Namespace types: Bar
Parameters:
this (Bar) : - The bar to check if it is between the from and to datetimes
rng (SessionTimeRange) : - The session time range object with the start and end time of the daily session
Returns: - Whether the bar is inside the session time range and if this part of the next trading day
method is_in_days(this, days)
is_in_days - Check if the given bar is inside the session days
Namespace types: Bar
Parameters:
this (Bar) : - The bar to check if its day is a trading day
days (SessionDays) : - The session days object with the day selection
Returns: - Whether the current bar day is inside the session
method is_in_session(this, sess)
is_in_session - Check if the given bar is inside the session as defined by the input params (what "not na(time(timeframe.period, this.to_sess_string()) )" should return if you could write it
Namespace types: Bar
Parameters:
this (Bar) : - The bar to check if it is between the from and to datetimes
sess (UserSession) : - The user-defined session object with the day and the time range selection
Returns: - Whether the current time is inside the session
method next_bar(this, offsetBars)
next_bar - Predicts the next bars open and close time based on the charts session
Namespace types: ChartSession
Parameters:
this (ChartSession) : - The chart session object that contains the days and the time range shown in the chart
offsetBars (simple int) : - The number of bars forward
Returns: - Whether the current time is inside the session
DateTimeWindow
DateTimeWindow - Object that represents a datetime window with a beginning and an end
Fields:
fromDateTime (series int) : - The beginning of the datetime window
toDateTime (series int) : - The end of the datetime window
SessionDays
SessionDays - Object that represent the trading days of the week
Fields:
days (map) : - The map that contains all days of the week and their session flag
SessionTime
SessionTime - Object that represents the time (hour and minutes)
Fields:
hourInDay (series int) : - The hour of the day that ranges from 0 to 24
minuteInHour (series int) : - The minute of the hour that ranges from 0 to 59
minuteInDay (series int) : - The minute of the day that ranges from 0 to 1440. They will be calculated based on hourInDay and minuteInHour when method is called
SessionTimeRange
SessionTimeRange - Object that represents a range that extends from the start to the end time
Fields:
startTime (SessionTime) : - The beginning of the time range
endTime (SessionTime) : - The end of the time range
isOvernight (series bool) : - Whether or not this is an overnight time range
UserSession
UserSession - Object that represents a user-defined session
Fields:
days (SessionDays) : - The map of the user-defined trading days
timeRanges (SessionTimeRange ) : - The array with all time ranges of the user-defined session during the trading days
Bar
Bar - Object that represents the bars' open and close times
Fields:
openUnixTime (series int) : - The open time of the bar
closeUnixTime (series int) : - The close time of the bar
chartDayOfWeek (series int)
ChartSession
ChartSession - Object that represents the default session that is shown in the chart
Fields:
days (SessionDays) : - A map with the trading days shown in the chart
timeRange (SessionTimeRange) : - The time range of the session during a trading day
isFinalized (series bool)
simple pull back TJlv26This is a very simple strategy for swing trade in stock indexes.
this strategy only trade long position, recommend to use this in day chart of sp500 or nas100.
SPX
NDX
Buy condition:
close price above long term SMA(default period 200),close price under short term SMA(default period 10), RSI is under 30(default period 3)
Sell condition:
1:if close price is above short period SMA and current close price is lower than low price of previous bar
2:hit the take profit target(default value 10%)
3:hit the stop loss target(default value 5%)
from author:
As you can see, it's a very simple logic. You only start trading when the price is above long-term moving average, so you can avoid risk by taking positions only in the uptrend. You also use stop-loss, so even in situations where there is a significant downturn, you can minimize losses.
However, it's important to note that this strategy performs well only in markets where long-term (approximately 10 years) upward movements are expected. It often yields disappointing results during prolonged bear markets. This is where each user's fundamental analysis comes into play, as there is no such thing as a perfect trading logic.
Another noteworthy point is that, as seen in the results of back testing, this strategy tends to underperform buy-and-hold in most cases. As mentioned earlier, it's a strategy focused on risk mitigation and starting trades at the most advantageous prices, so I believe that using leverage of 2-4 times can maximize profits. However, trading with leverage is highly risky, so it should be assessed based on each individual's risk tolerance.
Anchored Relative StrengthThe Anchored Relative Strength (RS) Indicator is a tool designed for traders to compare the performance of a selected stock or security against a benchmark index or another security starting from a specific point in time.
Traditional Relative Strength
The traditional RS line is a popular tool used to compare the performance of a stock, typically calculated as the ratio of the stock's price to a benchmark index's price. It helps identify outperformers and underperformers relative to the market or a specific sector.
The Anchored Approach
The Anchored RS line enhances the traditional concept of the RS line by introducing an anchored approach, where calculations begin from a user-defined date. This feature provides the flexibility to start the comparison from a specific historical event, earnings, market peak, trough, or any date significant to the trader's analysis.
Calculating Relative Strength
The RS value is calculated by dividing the close price of the chosen stock by the close price of the comparative symbol (SPX by default). This calculation is performed for each bar since the Anchor Date.
Indicator Features
🔶Custom Start Date
🔶Custom Comparison Symbol
🔶RS Line Moving Average
🔶Comparison Symbol Line
🔶Customize Colors & Appearance
Users can change the anchor date simply by clicking on the indicator and dragging the anchor point.
Bull Flag DetectionThe FuturesGod bull flag indicator aims to identify the occurrence of bull flags.
Bull flags are a popular trading pattern that allows users to gauge long entries into a given market. Flags consist of a pole that is followed by either a downward or sideways consolidation period.
This script can be used on any market but was intended for futures (NQ, ES) trading on the intraday timeframe.
The script does the following:
1. Identifies the occurrence of a flag pole. This is based on a lookback period and percentage threshold decided by the user.
2. Marks the consolidation area after the pole occurrence using swing highs and swing lows.
3. Visually the above is represented by a shaded green area.
4. When a pole is detected, it is marked by a downward off-white triangle. Note that if the percentage threshold is reached several times on the same upward climb, the script will continue to identify points where the threshold for pole detection is met.
5. Also visualized are the 20, 50 and 200 period exponential moving averages. The area between the 20 and 50 EMAs are shaded to provide traders a visual of a possible support area.
Market Internals (TICK, ADD, VOLD, TRIN, VIX)OVERVIEW
This script allows you to perform data transformations on Market Internals, across exchanges, and specify signal parameters, to more easily identify sentiment extremes.
Notable transformations include:
1. Cumulative session values
2. Directional bull-bear Ratios and Percent Differences
3. Data Normalization
4. Noise Reduction
This kind of data interaction is very useful for understanding the relationship between two mutually exclusive metrics, which is the essence of Market Internals: Up vs. Down. Even so, they are not possible with symbol expressions alone. And the kind of symbol expression needed to produce baseline data that can be reliably transformed is opaque to most traders, made worse by the fact that prerequisite symbol expressions themselves are not uniform across symbols. It's very nuanced, and if this last bit was confusing … exactly.
All this to say, rather than forcing that burden onto you, I've baked the baseline symbol expressions into the indicator so: 1) the transform functions consistently ingest the baseline data in the correct format and 2) you don't have to spend time trying to figure it all out. Trading is hard. There's no need to make it harder.
INPUTS
Indicator
Allows you to specify the base Market Internal and Exchange data to use. The list of Market Internals is simplified to their fundamental representation (TICK, ADD, VOLD, TRIN, VIX, ABVD, TKCD), and the list of Exchange data is limited to the most common (NYSE, NASDAQ, All US Stocks). There are also options for basic exchange combinations (Sum or Average of NYSE & NASDAQ).
Mode
Short for "Plot Mode", this is where you specify the bars style (Candles, Bars, Line, Circles, Columns) and the source value (used for single value plots and plot color changes).
Scale
This is the first and second data transformation grouped together. The default is to show the origin data as it might appear on a chart. You can then specify if each bar should retain it's unique value (Bar Value) or be added to a running total (Cumulative). You can also specify if you would like the data to remain unaltered (Raw) or converted to a directional ratio (Ratio) or a percentage (Percent Diff). These options determine the scale of the plot.
Both Ratio and Percent Diff. convert a given symbol into a positive or negative number, where positive numbers are bullish and negative numbers are bearish.
Ratio will divide Bull values by Bear values, then further divide -1 by the quotient if it is less than 1. For example, if "0.5" was the quotient, the Ratio would be "-2".
Percent Diff. subtracts Bear values from Bull values, then divides that difference by the sum of Bull and Bear values multiplied by 100. If a Bull value was "3" and Bear value was "7", the difference would be "-4", the sum would be "10", and the Percent Diff. would be "-40", as the difference is both bearish and 40% of total.
Ratio Norm. Threshold
This is the third data transformation . While quotients can be less than 1, directional ratios are never less than 1. This can lead to barcode-like artifacts as plots transition between positive and negative values, visually suggesting the change is much larger than it actually is. Normalizing the data can resolve this artifact, but undermines the utility of ratios. If, however, only some of the data is normalized, the artifact can be resolved without jeopardizing its contextual usefulness.
The utility of ratios is how quickly they communicate proportional differences. For example, if one side is twice as big as the other, "2" communicates this efficiently. This necessarily means the numerical value of ratios is worth preserving. Also, below a certain threshold, the utility of ratios is diminished. For example, an equal distribution being represented as 0, 1, 1:1, 50/50, etc. are all equally useful. Thus, there is a threshold, above which we want values to be exact, and below which the utility of linear visual continuity is more important. This setting accounts for that threshold.
When this setting is enabled, a ratio will be normalized to 0 when 1:1, scaled linearly toward the specified threshold when greater than 1:1, and then retain its exact value when the threshold is crossed. For example, with a threshold of "2", 1:1 = 0, 1.5:1 = 1, 2:1 = 2, 3:1 = 3, etc.
With all this in mind, most traders will want to set the ratios threshold at a level where accuracy becomes more important than visual continuity. If this level is unknown, "2" is a good baseline.
Reset cumulative total with each new session
Cumulative totals can be retained indefinitely or be reset each session. When enabled, each session has its own cumulative total. When disabled, the cumulative total is maintained indefinitely.
Show Signal Ranges
Because everything in this script is designed to make identifying sentiment extremes easier, an obvious inclusion would be to not only display ranges that are considered extreme for each Market Internal, but to also change the color of the plot when it is within, or beyond, that range. That is exactly what this setting does.
Override Max & Min
While the min-max signal levels have reasonable defaults for each symbol and transformation type, the Override Max and Override Min options allow you to … (wait for it) … override the max … and min … signal levels. This may be useful should you find a different level to be more suitable for your exact configuration.
Reduce Noise
This is the fourth data transformation . While the previous Ratio Norm. Threshold linearly stretches values between a threshold and 0, this setting will exponentially squash values closer to 0 if below the lower signal level.
The purpose of this is to compress data below the signal range, then amplify it as it approaches the signal level. If we are trying to identify extremes (the signal), minimizing values that are not extreme (the noise) can help us visually focus on what matters.
Always keep both signal zones visible
Some traders like to zoom in close to the bars. Others prefer to keep a wider focus. For those that like to zoom in, if both signals were always visible, the bar values can appear squashed and difficult to discern. For those that keep a wider focus, if both signals were not always visible, it's possible to lose context if a signal zone is vertically beyond the pane. This setting allows you to decide which scenario is best for you.
Plot Colors
These define the default color, within signal color, and beyond signal color for Bullish and Bearish directions.
Plot colors should be relative to zero
When enabled, the plot will inherit Bullish colors when above zero and Bearish colors when below zero. When disabled and Directional Colors are enabled (below), the plot will inherit the default Bullish color when rising, and the default Bearish color when falling. Otherwise, the plot will use the default Bullish color for all directions.
Directional colors
When the plot colors should be relative to zero (above), this changes the opacity of a bars color if moving toward zero, where "100" percent is the full value of the original color and "0" is transparent. When the plot colors are NOT relative to zero, the plot will inherit Bullish colors when rising and Bearish colors when falling.
Differentiate RTH from ETH
Market Internal data is typically only available during regular trading hours. When this setting is enabled, the background color of the indicator will change as a reminder that data is not available outside regular trading hours (RTH), if the chart is showing electronic trading hours (ETH).
Show zero line
Similar to always keeping signal zones visible (further up), some traders prefer zooming in while others prefer a wider context. This setting allows you to specify the visibility of the zero line to best suit your trading style.
Linear Regression
Polynomial regressions are great for capturing non-linear patterns in data. TradingView offers a "linear regression curve", which this script is using as a substitute. If you're unfamiliar with either term, think of this like a better moving average.
Symbol
While the Market Internal symbol will display in the status line of the indicator, the status line can be small and require more than a quick glance to read properly. Enabling this setting allows you to specify if / where / how the symbol should display on the indicator to make distinguishing between Market Internals more efficient.
Speaking of symbols, this indicator is designed for, and limited to, the following …
TICK - The TICK subtracts the total number of stocks making a downtick from the total number of stocks making an uptick.
ADD - The Advance Decline Difference subtracts the total number of stocks below yesterdays close from the total number of stocks above yesterdays close.
VOLD - The Volume Difference subtracts the total declining volume from the total advancing volume.
TRIN - The Arms Index (aka. Trading Index) divides the ratio of Advancing Stocks / Volume by the ratio of Declining Stocks / Volume. Given the inverse correlation of this index to market movement, when transforming it to a Ratio or Percent Diff., its values are inverted to preserve the bull-bear sentiment of the transformations.
VIX - The CBOE Volatility Index is derived from SPX index option prices, generating a 30-day forward projection of volatility. Given the inverse correlation of this index to market movement, when transforming it to a Ratio or Percent Diff., its values are inverted and normalized to the sessions first bar to preserve the bull-bear sentiment of the transformations. Note: If you do not have a Cboe CGIF subscription , VIX data will be delayed and plot unexpectedly.
ABVD - The Above VWAP Difference is an unofficial index measuring all stocks above VWAP as a percent difference. For the purposes of this indicator (and brevity), TradingViews PCTABOVEVWAP has has been shortened to simply be ABVD.
TKCD - The Tick Cumulative Difference is an unofficial index that subtracts the total number of market downticks from the total number of market upticks. Where "the TICK" (further up) is a measurement of stocks ticking up and down, TKCD is a measurement of the ticks themselves. For the purposes of this indicator (and brevity), TradingViews UPTKS and DNTKS symbols have been shorted to simply be TKCD.
INSPIRATION
I recently made an indicator automatically identifying / drawing daily percentage levels , based on 4 assumptions. One of these assumptions is about trend days. While trend days do not represent the majority of days, they can have big moves worth understanding, for both capitalization and risk mitigation.
To this end, I discovered:
• Article by Linda Bradford Raschke about Capturing Trend Days.
• Video of Garrett Drinon about Trend Day Trading.
• Videos of Ryan Trost about How To Use ADD and TICK.
• Article by Jason Ruchel about Overview of Key Market Internals.
• Including links to resources outside of TradingView violates the House Rules, but they're not hard to find, if interested.
These discoveries inspired me adopt the underlying symbols in my own trading. I also found myself wanting to make using them easier, the net result being this script.
While coding everything, I also discovered a few symbols I believe warrant serious consideration. Specifically the Percent Above VWAP symbols and the Up Ticks / Down Ticks symbols (referenced as ABVD and TKCD in this indicator, for brevity). I found transforming ABVD or TKCD into a Ratio or Percent Diff. to be an incredibly useful and worthy inclusion.
ABVD is a Market Breadth cousin to Brian Shannon's work, and TKCD is like the 3rd dimension of the TICKs geometry. Enjoy.
Rule of 16 - LowerThe "Rule of 16" is a simple guideline used by traders and investors to estimate the expected annualized volatility of the S&P 500 Index (SPX) based on the level of the CBOE Volatility Index (VIX). The VIX, often referred to as the "fear gauge" or "fear index," measures the market's expectations for future volatility. It is calculated using the implied volatility of a specific set of S&P 500 options.
The Rule of 16 provides a rough approximation of the expected annualized percentage change in the S&P 500 based on the VIX level. Here's how it works:
Find the VIX level: Look up the current value of the VIX. Let's say it's currently at 20.
Apply the Rule of 16: Divide the VIX level by 16. In this example, 20 divided by 16 equals 1.25.
Result: The result of this calculation represents the expected annualized percentage change in the S&P 500. In this case, 1.25% is the estimated annualized volatility.
So, according to the Rule of 16, a VIX level of 20 suggests an expected annualized volatility of approximately 1.25% in the S&P 500.
Here's how you can use the Rule of 16:
Market Sentiment: The VIX is often used as an indicator of market sentiment. When the VIX is high (above its historical average), it suggests that investors expect higher market volatility, indicating potential uncertainty or fear in the markets. Conversely, when the VIX is low, it suggests lower expected volatility and potentially more confidence in the markets.
Risk Management: Traders and investors can use the Rule of 16 to estimate the potential risk associated with their portfolios. For example, if you have a portfolio of S&P 500 stocks and the VIX is at 20, you can use the Rule of 16 to estimate that the annualized volatility of your portfolio may be around 1.25%. This information can help you make decisions about position sizing and risk management.
Option Pricing: Options traders may use the Rule of 16 to get a quick estimate of the implied annualized volatility priced into S&P 500 options. It can help them assess whether options are relatively expensive or cheap based on the VIX level.
It's important to note that the Rule of 16 is a simplification and provides only a rough estimate of expected volatility. Market conditions and the relationship between the VIX and the S&P 500 can change over time. Therefore, it should be used as a guideline rather than a precise forecasting tool. Traders and investors should consider other factors and use additional analysis to make informed decisions.
McClellan Indicators (Oscillator, Summation Index w/ RSI & MACD)Four indicators in one based on the McClellan Oscillator for both the NYSE and Nasdaq exchanges. Designed to be used in conjunction with each other- plot the Oscillator (Osc), Summation Index (MSI), and RSI/MACD of the MSI on both your SPX and Nasdaq chart. Select the exchange and indicator within the settings. These tools are secondary- but when the signals are combined with the action of the index and stocks can be helpful in identifying market turns and trend strength.
McClellan Oscillator--
The Osc is a market breadth tool that uses a fast and slow EMA based on the difference between advancing and declining stocks on the exchange. Used primarily to identify breadth thrusts, divergences, and extremes (oversold/overbought). Plot horizontal levels to see when the market internals are extremely overbought or oversold, and take note of when the Osc is declining while the market is advancing or vice versa.
McClellan Summation Index--
For intermediate trends the MSI is a running total of the Osc which can be used to confirm the strength of a trend, and spot potential reversals. A 10 period ema is included on this indicator, where crossovers can aid in spotting the change in trend of market internals, and divergences can identify when market internals are not in line with the trend. Shading is applied for when the internals are in a bullish or bearish trend.
Two additional indicators are the RSI and MACD of the Summation Index. An overbought or oversold MSI RSI generally indicates a strong trend in the market internals, however you may want to take note when the RSI stalls and begins to "hook" in the opposite direction. This indicator has signals to show when the market internals may be turning and to be on lookout for trend change.
Similarly- the MACD of the MSI identifies the strength of the trend, and crossovers can be used to help spot reversals. Shading is included in this indicator to spot the bullish/bearish trend of internals.
NQ 7 IndexThis is a simple index-like script that adds up the market value of the magnificent 7 (AAPL, MSFT, NVDA, TSLA, META, AMZN, GOOG) and divided by a constant.
The way this works is similar to SPX and NDX, except that it doesn't have any special weighting mechanism.
Average Range LinesThis Average Range Lines indicator identifies high and low price levels based on a chosen time period (day, week, month, etc.) and then uses a simple moving average over the length of the lookback period chosen to project support and resistance levels, otherwise referred to as average range. The calculation of these levels are slightly different than Average True Range and I have found this to be more accurate for intraday price bounces.
Lines are plotted and labeled on the chart based on the following methodology:
+3.0: 3x the average high over the chosen timeframe and lookback period.
+2.5: 2.5x the average high over the chosen timeframe and lookback period.
+2.0: 2x the average high over the chosen timeframe and lookback period.
+1.5: 1.5x the average high over the chosen timeframe and lookback period.
+1.0: The average high over the chosen timeframe and lookback period.
+0.5: One-half the average high over the chosen timeframe and lookback period.
Open: Opening price for the chosen time period.
-0.5: One-half the average low over the chosen timeframe and lookback period.
-1.0: The average low over the chosen timeframe and lookback period.
-1.5: 1.5x the average low over the chosen timeframe and lookback period.
-2.0: 2x the average low over the chosen timeframe and lookback period.
-2.5: 2.5x the average low over the chosen timeframe and lookback period.
-3.0: 3x the average low over the chosen timeframe and lookback period.
Look for price to find support or resistance at these levels for either entries or to take profit. When price crosses the +/- 2.0 or beyond, the likelihood of a reversal is very high, especially if set to weekly and monthly levels.
This indicator can be used/viewed on any timeframe. For intraday trading and viewing on a 15 minute or less timeframe, I recommend using the 4 hour, 1 day, and/or 1 week levels. For swing trading and viewing on a 30 minute or higher timeframe, I recommend using the 1 week, 1 month, or longer timeframes. I don’t believe this would be useful on a 1 hour or less timeframe, but let me know if the comments if you find otherwise.
Based on my testing, recommended lookback periods by timeframe include:
Timeframe: 4 hour; Lookback period: 60 (recommend viewing on a 5 minute or less timeframe)
Timeframe: 1 day; Lookback period: 10 (also check out 25 if your chart doesn’t show good support/resistance at 10 days lookback – I have found 25 to be useful on charts like SPX)
Timeframe: 1 week; Lookback period: 14
Timeframe: 1 month; Lookback period: 10
The line style and colors are all editable. You can apply a global coloring scheme in the event you want to add this indicator to your chart multiple times with different time frames like I do for the weekly and monthly.
I appreciate your comments/feedback on this indicator to improve. Also let me know if you find this useful, and what settings/ticker you find it works best with!
Also check out my profile for more indicators!
Global Liquidity IndexThe Global Liquidity Index offers a consolidated view of all major central bank balance sheets from around the world. For consistency and ease of comparison, all values are converted to USD using their relevant forex rates and are expressed in trillions. The indicator incorporates specific US accounts such as the Treasury General Account (TGA) and Reverse Repurchase Agreements (RRP), both of which are subtracted from the Federal Reserve's balance sheet to give a more nuanced view of US liquidity. Users have the flexibility to enable or disable specific central banks and special accounts based on their preference. Only central banks that both don’t engage in currency pegging and have reliable data available from late 2007 onwards are included in this aggregated liquidity model.
Global Liquidity Index = Federal Reserve System (FED) - Treasury General Account (TGA) - Reverse Repurchase Agreements (RRP) + European Central Bank (ECB) + People's Bank of China (PBC) + Bank of Japan (BOJ) + Bank of England (BOE) + Bank of Canada (BOC) + Reserve Bank of Australia (RBA) + Reserve Bank of India (RBI) + Swiss National Bank (SNB) + Central Bank of the Russian Federation (CBR) + Central Bank of Brazil (BCB) + Bank of Korea (BOK) + Reserve Bank of New Zealand (RBNZ) + Sweden's Central Bank (Riksbank) + Central Bank of Malaysia (BNM).
This tool is beneficial for anyone seeking to get a snapshot of global liquidity to interpret macroeconomic trends. By examining these balance sheets, users can deduce policy trajectories and evaluate the global economic climate. It also offers insights into asset pricing and assists investors in making informed capital allocation decisions. Historically, riskier assets, such as small caps and cryptocurrencies, have typically performed well during periods of rising liquidity. Thus, it may be prudent for investors to avoid additional risk unless there's a consistent upward trend in global liquidity.
Market Smith IndicatorsMarket Smith has a collection of tools that are useful for identifying stocks. On their charts they have a 21/50/200 day moving averages, high and low pivot points, a relative strength line, and a relative strength rating. This script contains indicators for the following:
21/50/200 Day Moving Averages
High and Low pivot points
A Relative Strength line
A Relative Strength rating
21/50/200 Day Moving Averages
The 21/50/200 Day moving averages are simple moving averages. They are visible in any chart increment but to use them properly you need to set you charts to be by day. Labels will appear on the right of the lines to show that they are representative of 21/50/200 day moving averages.
High and Low pivot points
The High and Low pivot points are green for high pivot points and red for low points. They are show in the Market Smith style with the numbers simply above the pivot points.
Relative Strength line
The Relative Strength line is a line that shows the strength of the stock compared to the S&P 500. In this case we utilize the SPX ticker to compare the stock to. This line is almost identical to the Market Smith tool and is an excellent tool to determine how a stock is doing compared to the market. When movements in the stock and shown with sideways trending of the RS line that means that the stock is following the market. When a stock is outperforming the market the RS line will follow.
Relative Strength rating
Thank you to ©Fred6724 for the RS Rating inspiration. They wrote excellent open source code for a RS Rating comparable to Market Smith. As the RS Rating in Market Smith is not open source it is difficult to know exactly how it is being calculated. After simplifying Fred's code and building upon a few ideas I had I compared the RS Rating to multiple Market Smith Ratings. The rating is close but often off by multiple points. If there is anyone who has a better idea on how to get this rating or how to improve on the code please send me a PM or fork this project. This rating is a good indicator to see how a certain stock compares to other stocks in the market. In Market Smith they are able to utilize their database to compare it to all other stocks. Since we do not have access to the same tools we are only able to compare it to the percentage of stocks above the 200, 150, 100, 50, and 20 day moving average.
Using these tools together are a small fraction what make people like Bill O'neill and Jim Roppel so successful. I plan on updating the RS Rating as I continue to work on this project so if there is anyone who has ideas then please send me a PM. Ultimately the goal of this project is to have a solution that is identical to Market Smith.
CE - Market Performance TableThe 𝓜𝓪𝓻𝓴𝓮𝓽 𝓟𝓮𝓻𝓯𝓸𝓻𝓶𝓪𝓷𝓬𝓮 𝓣𝓪𝓫𝓵𝓮 is a sophisticated market tool designed to provide valuable insights into the current market trends and the approximate current position in the Macroeconomic Regime.
Furthermore the 𝓜𝓪𝓻𝓴𝓮𝓽 𝓟𝓮𝓻𝓯𝓸𝓻𝓶𝓪𝓷𝓬𝓮 𝓣𝓪𝓫𝓵𝓮 provides the Correlation Implied Trend for the Asset on the Chart. Lastly it provides information about current "RISK ON" or "RISK OFF" periods.
Methodology:
𝓜𝓪𝓻𝓴𝓮𝓽 𝓟𝓮𝓻𝓯𝓸𝓻𝓶𝓪𝓷𝓬𝓮 𝓣𝓪𝓫𝓵𝓮 tracks the 15 underlying Stock ETF's to identify their performance and puts the combined performances together to visualize 42MACRO's GRID Equity Model.
For this it uses the below ETF's:
Dividends (SPHD)
Low Beta (SPLV)
Quality (QUAL)
Defensives (DEF)
Growth (IWF)
High Beta (SPHB)
Cyclicals (IYT, IWN)
Value (IWD)
Small Caps (IWM)
Mid Caps (IWR)
Mega Cap Growth (MGK)
Size (OEF)
Momentum (MTUM)
Large Caps (IWB)
Overall Settings:
The main time values you want to change are:
Correlation Length
- Defines the time horizon for the Correlation Table
ROC Period
- Defines the time horizon for the Performance Table
Normalization lookback
- Defines the time horizon for the Trend calculation of the ETF's
- For longer term Trends over weeks or months a length of 50 is usually pretty accurate
Visuals:
There is a variety of options to change the visual settings of what is being plotted and the two table positions and additional considerations.
Everything that is relevant in the underlying logic that can help comprehension can be visualized with these options.
Market Correlation:
The Market Correlation Table takes the Correlation of the above ETF's to the Asset on the Chart, it furthermore uses the Normalized KAMA Oscillator by IkkeOmar to analyse the current trend of every single ETF.
It then Implies a Correlation based on the Trend and the Correlation to give a probabilistically adjusted expectation for the future Chart Asset Movement. This is strengthened by taking the average of all Implied Trends.
With this the Correlation Table provides valuable insights about probabilistically likely Movement of the Asset, for Traders and Investors alike, over the defined time duration.
Market Performance:
𝓜𝓪𝓻𝓴𝓮𝓽 𝓟𝓮𝓻𝓯𝓸𝓻𝓶𝓪𝓷𝓬𝓮 𝓣𝓪𝓫𝓵𝓮 is the actual valuable part of this Indicator.
It provides valuable information about the current market environment (whether it's risk on or risk off), the rough GRID models from 42MACRO and the actual market performance.
This allows you to obtain a deeper understanding of how the market works and makes it simple to identify the actual market direction.
Utility:
The 𝓜𝓪𝓻𝓴𝓮𝓽 𝓟𝓮𝓻𝓯𝓸𝓻𝓶𝓪𝓷𝓬𝓮 𝓣𝓪𝓫𝓵𝓮 is divided in 4 Sections which are the GRID regimes:
Economic Growth:
Goldilocks
Reflation
Economic Contraction:
Inflation
Deflation
Top 5 Equity Style Factors:
Are the values green for a specific Column? If so then the market reflects the corresponding GRID behavior.
Bottom 5 Equity Style Factors:
Are the values red for a specific Column? If so then the market reflects the corresponding GRID behavior.
So if we have Goldilocks as current regime we would see green values in the Top 5 Goldilocks Cells and red values in the Bottom 5 Goldilocks Cells.
You will find that Reflation will look similar, as it is also a sign of Economic Growth.
Same is the case for the two Contraction regimes.
REVE Cohorts - Range Extension Volume Expansion CohortsREVE Cohorts stands for Range Extensions Volume Expansions Cohorts.
Volume is divided in four cohorts, these are depicted in the middle band with colors and histogram spikes.
0-80 percent i.e. low volumes; these get a green color and a narrow histogram bar
80-120 percent, normal volumes, these get a blue color and a narrow histogram bar
120-200 percent, high volume, these get an orange color and a wide histogram bar
200 and more percent is extreme volume, maroon color and wide bar.
All histogram bars have the same length. They point to the exact candle where the volume occurs.
Range is divided in two cohorts, these are depicted as candles above and below the middle band.
0-120 percent: small and normal range, depicted as single size, square candles
120 percent and more, wide range depicted as double size, rectangular candles.
The range candles are placed and colored according to the Advanced Price Algorithm (published script). If the trend is up, the candles are in the uptrend area, which is above the volume band, , downtrend candles below in the downtrend area. Dark blue candles depict a price movement which confirms the uptrend, these are of course in the uptrend area. In this area are also light red candles with a blue border, these depict a faltering price movement countering the uptrend. In the downtrend area, which is below the volume band, are red candles which depict a price movement confirming the downtrend and light blue candles with a red border depicting price movement countering the downtrend. A trend in the Advanced Price Algorithm is in equal to the direction of a simple moving average with the same lookback. The indicator has the same lagging.as this SMA.
Signals are placed in the vacated spaces, e.g. during an uptrend the downtrend area is vacated.
There are six signals, which arise as follows:
1 Two blue triangles up on top of each other: high or extreme volume in combination with wide range confirming uptrend. This indicates strong and effective up pressure in uptrend
2 Two pink tringles down on top of each other: high or extreme volume in combination with wide range down confirming downtrend. This indicates strong and effective down pressure in downtrend
3 Blue square above pink down triangle down: extreme volume in combination with wide range countering uptrend. This indicates a change of heart, down trend is imminent, e.g. during a reversal pattern. Down Pressure in uptrend
4 Pink square below blue triangle up: extreme volume in combination with wide range countering downtrend. This indicates a change of heart, reversal to uptrend is imminent. Up Pressure in downtrend
5 single blue square: a. extreme volume in combination with small range confirming uptrend, b. extreme volume in combination with small range countering downtrend, c. high volume in combination with wide range countering uptrend. This indicates halting upward price movement, occurs often at tops or during distribution periods. Unresolved pressure in uptrend
6 Single pink square: a extreme volume in combination with small range confirming downtrend, b extreme volume in combination with small range countering uptrend, c high volume in combination with wide range countering downtrend. This indicated halting downward price movement. Occurs often at bottoms or during accumulation periods. Unresolved pressure in downtrend.
The signals 5 and 6 are introduced to prevent flipping of signals into their opposite when the lookback is changed. Now signals may only change from unresolved in directional or vice versa. Signals 3 and 4 were introduced to make sure that all occurrences of extreme volume will result in a signal. Occurrences of wide volume only partly lead to a signal.
Use of REVE Cohorts.
This is the indicator for volume-range analyses that I always wanted to have. Now that I managed to create it, I put it in all my charts, it is often the first part I look at, In my momentum investment system I use it primarily in the layout for following open positions. It helps me a lot to decide whether to close or hold a position. The advantage over my previous attempts to create a REVE indicator (published scripts), is that this version is concise because it reports and classifies all possible volumes and ranges, you see periods of drying out of volume, sequences of falter candles, occurrences of high morning volume, warning and confirming signals.. The assessment by script whether some volume should be considered low, normal, high or extreme gives an edge over using the standard volume bars.
Settings of REVE Cohorts
The default setting for lookback is ‘script sets lookback’ I put this in my indicators because I want them harmonized, the script sets lookback according to timeframe. The tooltip informs which lookback will be set at which timeframe, you can enable a feedback label to show the current lookback. If you switch ‘script sets lookback’ off, you can set your own preferred user lookback. The script self-adapts its settings in such a way that it will show up from the very first bar of historical chart data, it adds volume starting at the fourth bar.
You can switch off volume cohorts, only range candles will show while the middle band disappears. Signals will remain if volume is present in the data. Some Instruments have no volume data, e.g. SPX-S&P 500 Index,, then only range candles will be shown.
Colors can be adapted in the inputs. Because the script calculates matching colors with more transparency it is advised to use 100 percent opacity in these settings.
Take care, Eykpunter
Regression Candle Conversion IndicatorHey everyone!
I got a pseudo-request a while ago for something like this, essentially the ability to track where another ticker would fall based on an alternative ticker.
I did create my ticker correlation reference indicator which directly looks at the correlation between 2 tickers. However, this is an indicator that operates on the same principle but is more pragmatic for trading.
What does it do?
Well, in keeping with the theme of what I call my indicators, this has a title that explains exactly what it does, "Regression Candle Conversion Indicator" or "RCCI" for short. It uses simple regression to convert one ticker to another. So while you are tracking one indicator, you can see where the expected value should fall on the other.
Applications?
The big application of this for me is being able to track where SPY/QQQ or IWM is falling during overnight trading sessions. Extended trading hours close at 8 pm NYSE time. After that, you have to guess where futures prices will put the ETF version of it. This indicator will allow you to track where, theoretically, the underlying ETF ticker will fall based on the current trading behaviour.
Some other applications are just the ability to track how similar or dissimilar one stock is to the other. For example, if we wanted to trade, say, Boeing using shares of DFEN or ITA (a defence specific ETF), here is what we get:
In the chart above we can see BA as the primary chart and ITA as the RCCI converted chart. We will see 2 major things that should cause us concern.
First, there is a really poor correlation between the two tickers. This indicates that ITA may not produce the best exposure if I am directly looking for Boeing exposure.
Second, there is a wide standard error. this means that the results that the RCCI is providing may be skewed up to +/- 2 points (as indicated by the standard error chart).
Let's take a look at BA and DFEN:
In the above, we can see that the correlation is not great, but the standard error is quite low.
This means that, while this may not be the best ticker for Boeing exposure, the RCCI is able to confidently calculate the ticker within +/- 0.50 cents based on BA's underlying data.
However, its important to note that it is not advisable to really rely on these results if the correlation is less than + 0.5 or greater than -0.5.
Let's take a look at a few more examples:
Above we have BA (NYSE) vs BA (NEO TSX CAD Hedged). We can see the strong relationship and high confidence calculations.
And some others:
SPX (primary) and ES1! (secondary):
RTY and IWM:
ES1! and SPY:
Customizations:
As you can see above, it is pretty straight forward. There are 3 options:
Lookback Length: Determines the length of assessment for correlation and the regression assessment.
Manual Ticker Input: The indicator will pull the data from your current chart and compare it against a manually selected indicator. You must tell the indicator which ticker you are comparing against.
Data Table: This will show you the data table which contains the standard error assessment and the correlation assessment. These are determined by your lookback length. The lookback length is defaulted to 500.
And that's the indicator! It's pretty straight forward. Hopefully you find it helpful, especially if you track futures during overnight sessions.
Leave your comments/questions and feedback below.
Thanks for checking it out!
VIX HeatmapVIX HeatMap
Instructions:
- To be used with the S&P500 index (ES, SPX, SPY, any S&P ETF) as that's the input from where the CBOE calculates and measures the VIX. Can also be used with the Dow Jones, Nasdaq, & Nasdaq100.
Description:
- Expected Implied Volatility regime simplified & visualized. Know if we are in a high, medium, or low volatility regime, instantly.
- Ranges from Hot to Cold: The hotter the heat-map, the higher the implied volatility and fear & vice versa.
- The VIX HeatMap, color-maps important VIX levels (7 in this case) in measuring volatility for day trading & swing trading.
Using the VIX HeatMap:
- A LOW level volatility environment: Represented by "cooler" colors (Blue & White) depicts that the level of volatility and fear is low. Percentage moves on the index level are going to be tame and less volatile more often than not. Low fear = low perceived risk.
- A MEDIUM level volatility environment: Represented by "warmer" colors (Green & Yellow) depicts that the markets are transitioning from a calmer period or from a more fearful period. Market volatility here will be higher and provide more volatile swings in price.
- A HIGH level volatility environment: Represented by "hotter" colors (Orange, Red, & Purple) depicts that the markets are very fearful at the moment and will have big swings in both directions. Historically, extreme VIX levels tend to coincide with bottoms but are in no way predictive of the exact timing as the volatile moves can continue for an extended period of time.
- Transitioning between the 7 VIX Zones: Each and every one of these specific VIX zone levels is important.
1. Extreme low: <16
2. Low: 16 to 20
3. Normal: 20 to 24
4. Medium: 24 to 28
5. Med-High: 28 to 32
6. High: 32 to 36
7. Extreme high: >36
- These VIX levels in particular measure volatility changes that have a major impact on switching between smaller time frames and measuring depths of a sell move and vice versa. Each level also behaves as its own support & resistance level in terms of taking a bit of effort to switch regimes, and aids in identifying and measuring the potential depth of pullbacks in bull markets and bounces in bear markets to reveal reversal points.
- Examples of VIX level supports depicted on the chart marked with arrows. From left to right:
1. March 10th: Markets jumped 2 volatility levels in 2 days. The fluctuations from blue to yellow to green where a sign that price action would reverse from the selloff.
2. March 28th: As soon as we move from green to the blue VIX level (<20), markets began to rally and only ended when the volatility level moved sub VIX 16 (white).
3. May 4th & 24th: Next we see the 2 dips where volatility levels went from blue to green (VIX > 20), marked bottoms and reversed higher.
4. June 1st: We see a change in VIX regime yet again into lower VIX level and markets rocket higher.
Knowing the current VIX regime is a very important tool and aid in trading, now easily visualized.
Correlation TrackerCorrelation Tracker Indicator
The Correlation Tracker indicator calculates and visualizes the correlation between two symbols on a chart. It helps traders and investors understand the relationship and strength of correlation between the selected symbol and another symbol of their choice.
Indicator Features:
- Correlation Calculation: The indicator calculates the correlation between two symbols based on the provided lookback period.
- Correlation Scale: The correlation value is normalized to a scale ranging from 0 to 1 for easy interpretation.
- Table Display: A table is displayed on the chart showing the correlation value and a descriptive label indicating the strength of the correlation.
- Customization Options: Users can customize the text color, table background color, and choose whether to display the Pearson correlation value.
- The Correlation Tracker indicator utilizes a logarithmic scale calculation, making it particularly suitable for longer timeframes such as weekly charts, thereby providing a more accurate and balanced measure of correlations across a wide range of values.
How to Use:
1. Select the symbol for which you want to track the correlation (default symbol is "SPX").
2. Adjust the lookback period to define the historical data range for correlation calculation.
3. Customize the text color and table background color according to your preference.
4. Choose whether to display the Pearson correlation value or a descriptive label for correlation strength.
5. Observe the correlation line on the chart, which changes color based on the strength of the correlation.
6. Refer to the correlation table for the exact correlation value or the descriptive label indicating the correlation strength.
Note: The indicator can be applied to any time frame chart and is not limited to logarithmic scale.
AggBands (v1) [qrsq]The "AggBands" indicator is a custom trading indicator designed to provide a consolidated view of the price action across multiple assets or trading pairs. It combines the price data from multiple tickers and calculates an aggregated price using user-defined weights for each ticker.
The indicator starts by defining the tickers to be included in the aggregation. You can choose from predefined configurations such as "BTC PAIRS," "CRYPTO TOTAL MARKET CAP," "TOP 5 PAIRS," "TOP 5 MEMECOINS," "SPX," "DXY," or "FANG." Each configuration includes specific tickers or indices relevant to the chosen category.
The indicator then fetches the closing, high, and low prices for each ticker and applies the user-defined weights to calculate the aggregated prices. The aggregated prices are normalized within a specified length to provide a consistent scale across different assets or pairs.
Next, the indicator calculates the midpoint, which is the average of the highest high and lowest low of the aggregated prices over a specified aggregation period.
To assess the volatility, the indicator calculates the price range and applies the Average True Range (ATR) indicator to determine the volatility value. The standard deviation is then computed using the price range and aggregation period, with an additional scaling factor applied to the volatility value.
Based on the standard deviation, the indicator generates multiple bands above and below the midpoint. By default, three standard deviation bands are calculated, but the user can choose between one and five bands. The upper and lower bands are smoothed using various moving average (MA) types, such as Simple Moving Average (SMA), Exponential Moving Average (EMA), Smoothed Moving Average (SMMA/RMA), Weighted Moving Average (WMA), Volume Weighted Moving Average (VWMA), Volume Weighted Average Price (VWAP), or Arnaud Legoux Moving Average (ALMA). The user can also adjust the length, offset, and sigma parameters for the moving averages.
The indicator can optionally smooth the midpoint, upper bands, and lower bands using a separate set of moving average parameters.
The indicator can be useful for traders and analysts who want to gain a consolidated view of price movements across multiple assets or trading pairs. It helps identify trends, volatility, and potential support and resistance levels based on the aggregated price and standard deviation bands. Traders can use this information to make informed decisions about trading strategies, risk management, and market analysis.
[TT] Sectors Dist % From MA- The script shows the distance in percentages from the 200 MA (or any other MA period) , for the 11 SP500 sectors.
- It works based on the current time frames.
Could be useful when working with mean reversion strategies to detect extremes zones and overbought/oversold conditions in the given sectors compared others.






















