NYSE extended session backgroundThis script adds background to the chart to highlight different time areas in any chart.
The time areas are in relation to the open/close time of NYSE , both regular and extended session.
The background colors are the following by default:
NO COLOR : NYSE is open
DARK BLUE : NYSE is closed
LIGHT BLUE : NYSE post market session
ORANGE : NYSE pre market session
In addition, previous day close price line is shown during extended and closed sessions (orange line).
This script is useful to visualize any chart in relation to the NYSE timetable.
Komut dosyalarını "sessions" için ara
Pinescript - Common Label & Line Array Functions Library by RRBPinescript - Common Label & Line Array Functions Library by RagingRocketBull 2021
Version 1.0
This script provides a library of common array functions for arrays of label and line objects with live testing of all functions.
Using this library you can easily create, update, delete, join label/line object arrays, and get/set properties of individual label/line object array items.
You can find the full list of supported label/line array functions below.
There are several libraries:
- Common String Functions Library
- Standard Array Functions Library
- Common Fixed Type Array Functions Library
- Common Label & Line Array Functions Library
- Common Variable Type Array Functions Library
Features:
- 30 array functions in categories create/update/delete/join/get/set with support for both label/line objects (45+ including all implementations)
- Create, Update label/line object arrays from list/array params
- GET/SET properties of individual label/line array items by index
- Join label/line objects/arrays into a single string for output
- Supports User Input of x,y coords of 5 different types: abs/rel/rel%/inc/inc% list/array, auto transforms x,y input into list/array based on type, base and xloc, translates rel into abs bar indexes
- Supports User Input of lists with shortened names of string properties, auto expands all standard string properties to their full names for use in functions
- Live Output for all/selected functions based on User Input. Test any function for possible errors you may encounter before using in script.
- Output filters: hide all excluded and show only allowed functions using a list of function names
- Output Panel customization options: set custom style, color, text size, and line spacing
Usage:
- select create function - create label/line arrays from lists or arrays (optional). Doesn't affect the update functions. The only change in output should be function name regardless of the selected implementation.
- specify num_objects for both label/line arrays (default is 7)
- specify common anchor point settings x,y base/type for both label/line arrays and GET/SET items in Common Settings
- fill lists with items to use as inputs for create label/line array functions in Create Label/Line Arrays section
- specify label/line array item index and properties to SET in corresponding sections
- select label/line SET function to see the changes applied live
Code Structure:
- translate x,y depending on x,y type, base and xloc as specified in UI (required for all functions)
- expand all shortened standard property names to full names (required for create/update* from arrays and set* functions, not needed for create/update* from lists) to prevent errors in label.new and line.new
- create param arrays from string lists (required for create/update* from arrays and set* functions, not needed for create/update* from lists)
- create label/line array from string lists (property names are auto expanded) or param arrays (requires already expanded properties)
- update entire label/line array or
- get/set label/line array item properties by index
Transforming/Expanding Input values:
- for this script to work on any chart regardless of price/scale, all x*,y* are specified as % increase relative to x0,y0 base levels by default, but user can enter abs x,price values specific for that chart if necessary.
- all lists can be empty, contain 1 or several items, have the same/different lengths. Array Length = min(min(len(list*)), mum_objects) is used to create label/line objects. Missing list items are replaced with default property values.
- when a list contains only 1 item it is duplicated (label name/tooltip is also auto incremented) to match the calculated Array Length
- since this script processes user input, all x,y values must be translated to abs bar indexes before passing them to functions. Your script may provide all data internally and doesn't require this step.
- at first int x, float y arrays are created from user string lists, transformed as described below and returned as x,y arrays.
- translated x,y arrays can then be passed to create from arrays function or can be converted back to x,y string lists for the create from lists function if necessary.
- all translation logic is separated from create/update/set functions for the following reasons:
- to avoid redundant code/dependency on ext functions/reduce local scopes and to be able to translate everything only once in one place - should be faster
- to simplify internal logic of all functions
- because your script may provide all data internally without user input and won't need the translation step
- there are 5 types available for both x,y: abs, rel, rel%, inc, inc%. In addition to that, x can be: bar index or time, y is always price.
- abs - absolute bar index/time from start bar0 (x) or price (y) from 0, is >= 0
- rel - relative bar index/time from cur bar n (x) or price from y0 base level, is >= 0
- rel% - relative % increase of bar index/time (x) or price (y) from corresponding base level (x0 or y0), can be <=> 0
- inc - relative increment (step) for each new level of bar index/time (x) or price (y) from corresponding base level (x0 or y0), can be <=> 0
- inc% - relative % increment (% step) for each new level of bar index/time (x) or price (y) from corresponding base level (x0 or y0), can be <=> 0
- x base level >= 0
- y base level can be 0 (empty) or open, close, high, low of cur bar
- single item x1_list = "50" translates into:
- for x type abs: "50, 50, 50 ..." num_objects times regardless of xloc => x = 50
- for x type rel: "50, 50, 50 ... " num_objects times => x = x_base + 50
- for x type rel%: "50%, 50%, 50% ... " num_objects times => x_base * (1 + 0.5)
- for x type inc: "0, 50, 100 ... " num_objects times => x_base + 50 * i
- for x type inc%: "0%, 50%, 100% ... " num_objects times => x_base * (1 + 0.5 * i)
- when xloc = xloc.bar_index each rel*/inc* value in the above list is then subtracted from n: n - x to convert rel to abs bar index, values of abs type are not affected
- x1_list = "0, 50, 100, ..." of type rel is the same as "50" of type inc
- x1_list = "50, 50, 50, ..." of type abs/rel/rel% produces a sequence of the same values and can be shortened to just "50"
- single item y1_list = "2" translates into (ragardless of yloc):
- for y type abs: "2, 2, 2 ..." num_objects times => y = 2
- for y type rel: "2, 2, 2 ... " num_objects times => y = y_base + 2
- for y type rel%: "2%, 2%, 2% ... " num_objects times => y = y_base * (1 + 0.02)
- for y type inc: "0, 2, 4 ... " num_objects times => y = y_base + 2 * i
- for y type inc%: "0%, 2%, 4% ... " num_objects times => y = y_base * (1 + 0.02 * i)
- when yloc != yloc.price all calculated values above are simply ignored
- y1_list = "0, 2, 4" of type rel% is the same as "2" with type inc%
- y1_list = "2, 2, 2" of type abs/rel/rel% produces a sequence of the same values and can be shortened to just "2"
- you can enter shortened property names in lists. To lookup supported shortened names use corresponding dropdowns in Set Label/Line Array Item Properties sections
- all shortened standard property names must be expanded to full names (required for create/update* from arrays and set* functions, not needed for create/update* from lists) to prevent errors in label.new and line.new
- examples of shortened property names that can be used in lists: bar_index, large, solid, label_right, white, left, left, price
- expanded to their corresponding full names: xloc.bar_index, size.large, line.style_solid, label.style_label_right, color.white, text.align_left, extend.left, yloc.price
- all expanding logic is separated from create/update* from arrays and set* functions for the same reasons as above, and because param arrays already have different types, implying the use of final values.
- all expanding logic is included in the create/update* from lists functions because it seemed more natural to process string lists from user input directly inside the function, since they are already strings.
Creating Label/Line Objects:
- use study max_lines_count and max_labels_count params to increase the max number of label/line objects to 500 (+3) if necessary. Default number of label/line objects is 50 (+3)
- all functions use standard param sequence from methods in reference, except style always comes before colors.
- standard label/line.get* functions only return a few properties, you can't read style, color, width etc.
- label.new(na, na, "") will still create a label with x = n-301, y = NaN, text = "" because max default scope for a var is 300 bars back.
- there are 2 types of color na, label color requires color(na) instead of color_na to prevent error. text_color and line_color can be color_na
- for line to be visible both x1, x2 ends must be visible on screen, also when y1 == y2 => abs(x1 - x2) >= 2 bars => line is visible
- xloc.bar_index line uses abs x1, x2 indexes and can only be within 0 and n ends, where n <= 5000 bars (free accounts) or 10000 bars (paid accounts) limit, can't be plotted into the future
- xloc.bar_time line uses abs x1, x2 times, can't go past bar0 time but can continue past cur bar time into the future, doesn't have a length limit in bars.
- xloc.bar_time line with length = exact number of bars can be plotted only within bar0 and cur bar, can't be plotted into the future reliably because of future gaps due to sessions on some charts
- xloc.bar_index line can't be created on bar 0 with fixed length value because there's only 1 bar of horiz length
- it can be created on cur bar using fixed length x < n <= 5000 or
- created on bar0 using na and then assigned final x* values on cur bar using set_x*
- created on bar0 using n - fixed_length x and then updated on cur bar using set_x*, where n <= 5000
- default orientation of lines (for style_arrow* and extend) is from left to right (from bar 50 to bar 0), it reverses when x1 and x2 are swapped
- price is a function, not a line object property
Variable Type Arrays:
- you can't create an if/function that returns var type value/array - compiler uses strict types and doesn't allow that
- however you can assign array of any type to another array of any type creating an arr pointer of invalid type that must be reassigned to a matching array type before used in any expression to prevent error
- create_any_array2 uses this loophole to return an int_arr pointer of a var type array
- this works for all array types defined with/without var keyword and doesn't work for string arrays defined with var keyword for some reason
- you can't do this with var type vars, only var type arrays because arrays are pointers passed by reference, while vars are actual values passed by value.
- you can only pass a var type value/array param to a function if all functions inside support every type - otherwise error
- alternatively values of every type must be passed simultaneously and processed separately by corresponding if branches/functions supporting these particular types returning a common single type result
- get_var_types solves this problem by generating a list of dummy values of every possible type including the source type, tricking the compiler into allowing a single valid branch to execute without error, while ignoring all dummy results
Notes:
- uses Pinescript v3 Compatibility Framework
- uses Common String Functions Library, Common Fixed Type Array Functions Library, Common Variable Type Array Functions Library
- has to be a separate script to reduce the number of local scopes/compiled file size, can't be merged with another library.
- lets you live test all label/line array functions for errors. If you see an error - change params in UI
- if you see "Loop too long" error - hide/unhide or reattach the script
- if you see "Chart references too many candles" error - change x type or value between abs/rel*. This can happen on charts with 5000+ bars when a rel bar index x is passed to label.new or line.new instead of abs bar index n - x
- create/update_label/line_array* use string lists, while create/update_label/line_array_from_arrays* use array params to create label/line arrays. "from_lists" is dropped to shorten the names of the most commonly used functions.
- create_label/line_array2,4 are preferable, 5,6 are listed for pure demonstration purposes only - don't use them, they don't improve anything but dramatically increase local scopes/compiled file size
- for this reason you would mainly be using create/update_label/line_array2,4 for list params or create/update_label/line_array_from_arrays2 for array params
- all update functions are executed after each create as proof of work and can be disabled. Only create functions are required. Use update functions when necessary - when list/array params are changed by your script.
- both lists and array item properties use the same x,y_type, x,y_base from common settings
- doesn't use pagination, a single str contains all output
- why is this so complicated? What are all these functions for?
- this script merges standard label/line object methods with standard array functions to create a powerful set of label/line object array functions to simplify manipulation of these arrays.
- this library also extends the functionality of Common Variable Type Array Functions Library providing support for label/line types in var type array functions (any_to_str6, join_any_array5)
- creating arrays from either lists or arrays adds a level of flexibility that comes with complexity. It's very likely that in your script you'd have to deal with both string lists as input, and arrays internally, once everything is converted.
- processing user input, allowing customization and targeting for any chart adds a whole new layer of complexity, all inputs must be translated and expanded before used in functions.
- different function implementations can increase/reduce local scopes and compiled file size. Select a version that best suits your needs. Creating complex scripts often requires rewriting your code multiple times to fit the limits, every line matters.
P.S. Don't rely too much on labels, for too often they are fables.
List of functions*:
* - functions from other libraries are not listed
1. Join Functions
Labels
- join_label_object(label_, d1, d2)
- join_label_array(arr, d1, d2)
- join_label_array2(arr, d1, d2, d3)
Lines
- join_line_object(line_, d1, d2)
- join_line_array(arr, d1, d2)
- join_line_array2(arr, d1, d2, d3)
Any Type
- any_to_str6(arr, index, type)
- join_any_array4(arr, d1, d2, type)
- join_any_array5(arr, d, type)
2. GET/SET Functions
Labels
- label_array_get_text(arr, index)
- label_array_get_xy(arr, index)
- label_array_get_fields(arr, index)
- label_array_set_text(arr, index, str)
- label_array_set_xy(arr, index, x, y)
- label_array_set_fields(arr, index, x, y, str)
- label_array_set_all_fields(arr, index, x, y, str, xloc, yloc, label_style, label_color, text_color, text_size, text_align, tooltip)
- label_array_set_all_fields2(arr, index, x, y, str, xloc, yloc, label_style, label_color, text_color, text_size, text_align, tooltip)
Lines
- line_array_get_price(arr, index, bar)
- line_array_get_xy(arr, index)
- line_array_get_fields(arr, index)
- line_array_set_text(arr, index, width)
- line_array_set_xy(arr, index, x1, y1, x2, y2)
- line_array_set_fields(arr, index, x1, y1, x2, y2, width)
- line_array_set_all_fields(arr, index, x1, y1, x2, y2, xloc, extend, line_style, line_color, width)
- line_array_set_all_fields2(arr, index, x1, y1, x2, y2, xloc, extend, line_style, line_color, width)
3. Create/Update/Delete Functions
Labels
- delete_label_array(label_arr)
- create_label_array(list1, list2, list3, list4, list5, d)
- create_label_array2(x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- create_label_array3(x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- create_label_array4(x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- create_label_array5(x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- create_label_array6(x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- update_label_array2(label_arr, x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- update_label_array4(label_arr, x_list, y_list, str_list, xloc_list, yloc_list, style_list, color1_list, color2_list, size_list, align_list, tooltip_list, d)
- create_label_array_from_arrays2(x_arr, y_arr, str_arr, xloc_arr, yloc_arr, style_arr, color1_arr, color2_arr, size_arr, align_arr, tooltip_arr, d)
- create_label_array_from_arrays4(x_arr, y_arr, str_arr, xloc_arr, yloc_arr, style_arr, color1_arr, color2_arr, size_arr, align_arr, tooltip_arr, d)
- update_label_array_from_arrays2(label_arr, x_arr, y_arr, str_arr, xloc_arr, yloc_arr, style_arr, color1_arr, color2_arr, size_arr, align_arr, tooltip_arr, d)
Lines
- delete_line_array(line_arr)
- create_line_array(list1, list2, list3, list4, list5, list6, d)
- create_line_array2(x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- create_line_array3(x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- create_line_array4(x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- create_line_array5(x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- create_line_array6(x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- update_line_array2(line_arr, x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- update_line_array4(line_arr, x1_list, y1_list, x2_list, y2_list, xloc_list, extend_list, style_list, color_list, width_list, d)
- create_line_array_from_arrays2(x1_arr, y1_arr, x2_arr, y2_arr, xloc_arr, extend_arr, style_arr, color_arr, width_arr, d)
- update_line_array_from_arrays2(line_arr, x1_arr, y1_arr, x2_arr, y2_arr, xloc_arr, extend_arr, style_arr, color_arr, width_arr, d)
Reivaj MA - PreSession This script contains 9 moving averages which can be changed each between "sma", "ema", "wma", "vwma.
The values of the moving averages are:
MMA20 = SMA20
MMA50 = SMA50
MMA100 = SMA100
MMA200 = SMA200
MMA300 = SMA300.
MMAextra1 = ema 8
MMAextra2 = ema21
MMAextra3 = sma400
MMAextra4 = sma500.
It has an Asian range that goes from 21: 00-07: 00 UTC which turns the color of the candle in green.
And pre-sessions that is one hour before the opening, the time of the opening and the hour after the opening of London and New York.
Highlight candles by timeThis allows you to highlight candles that fall within session times so you can see what candles make up sessions on various timeframes.
ICT Time RangesICT Time Ranges is a concept around the fact that price likes to show volatility spikes in certain times of the day.
Although there are many other scripts such as that revolve around this concept, the difference between this one and some of the others out there is the fact that this code specifically focuses on the ranges like New York, London, Asia, and ICTs concept behind having a "True Day Range". Also, prior scripts draw horizontal lines to delineate the High and Low of the Day. Although this is useful in some cases, I find it to clutter up the chart too much for my liking, so this script negates any of that and simply prints a box in the parameters given within the settings pop-up. This also allows you the fact of having a shape and letter(s) marker for when a new day starts at 0:00.
With this script, you can enable / disable times of the day for:
- London Session
- New York Session
- London Close Session
- Asia Session
- "IPDA" True Day
You can also change the times that these sessions will update to, along with the opacity and color that they print to mark out these times / ranges. The same can be said with the "Day of Week" markers, which can be color coded and show different shapes / formats to your liking.
I find that putting the Session boxes opacity to 7-8% and the day of week markers to 20% is best as this makes them visible enough to see while also keeping it easy on your eyes to analyze your charts.
Overall, this script was based around specific concepts I liked from other individuals' scripts such as @BryceWH and @AvniPiro , but that are tweaked to what I personally find as most beneficial. To see others scripts like this one, you can search for "ICT Killzones" in the public script library!
Trading Session Candles [NeoButane]█ OVERVIEW
Display candlesticks for the selected session, regular or extended.
█ CONFIGURATION
Options to change include displaying the regular or extended session, timezone, session hours, and session days.
█ CONCEPTS
Meant for charts with longer trading sessions or to view only extended hours trading action on US stocks that have afterhours available.
█ Notes
For trading days, '23456' refers to Monday to Friday.
Kviateq - Session Pivots for CryptoPretty much the exact same indicator as my other Session Pivots, however this one also shows the weekends and the session times are set to Bitmex exchange (note: I'm in a GMT+7 timezone myself).
[BMAX] Daily Gaps(ENGLISH)
This indicator was built to allow traders to observe the open gaps between sessions in the Market. It can be used either on daily or weekly timeframes. Also it incluses a standard deviation band (such as bollinger band) in order to verify the gaps variance. This indicator can be used to check what is the variance on the session open gaps and prepare to protect the positions against market volatility when swing or position trading.
(PORTUGUÊS)
Este indicador foi construído para permitir que traders observem os gaps de abertura de seção no Mercado. Ele pode ser utilizado no tempo gráfico Diário ou Semanal. Também inclui uma banda de desvio padrão (assim como usado nas Bandas de Bolinger) que permite verifcar a variância dos gaps. Este indicador pode ser usado para se preparar para proteger uma posição em swing ou position trading onde o mercado pode abrir com forte gap em situações de alta volatilidade.
Triple VWAP for FOREX SessionsThis script runs on my previous script Masterwork VWAP .
►It uses regular built-in VWAP improved to avoid weird connecting of the line with its yesterday's value.
►It starts a new VWAP when London session opens . You can select to end it next morning or when the session is about to close.
►It starts a new VWAP when New York session opens . You can select to end it next morning or when the session is about to close.
►You can select intelligent_enabler function to plot the VWAPs on your chart when viewing low timeframe charts (1m, 5m, 15m, 30m)
Difference In PriceWith the difference in price indicator, you can view price change volatility. Specifically, you can view the difference in price for a single candle segment, at any desired candlestick timeframe. This simply takes the sessions high minus the low and gives the difference. Difference in price trend lines help determine if a stock has a history of high volatility or not. This is useful for those looking to invest in stable stocks.
Swing/Daytrading strategy with reversal option
Hello, today I bring a swing reversal strategy that work on all financial markets.
It uses timeframes starting from 1h, the bigger the better.
Its very dangerous because it has no stop loss, neither a take profit. Our exit condition is based on the reversal on the entry .
For entry we have 2 types : normal and reversal
Lets say we want to go long , for that we check the last CLOSE of a candle with the previos HIGH. If its higher than that, and at the same time CLOSE is bigger than the moving average, we have a long entry.
For short we have CLOSE with the previous LOW. If its lower than that and at the same time is lower than moving average, we have a short entry.
For moving average we use T3 MA
For reversal what I do, is , I take the short condition and I apply it to long, and for long I apply the short condition.
On many cases I found out it work amazingly.
I forgot to add: it also has a time entry system, so we use the best hours/sessions for entries .
Exit a trade: lets say we enter short, when we find a long condition, we close short and enter into long. Viceversa for long.
If you have any questions, let me know.
Enjoy it :)
Background to highlight cash/session range [Futures]A simple script which allows the user to highlight the background of a certain session. At the moment there is only one session available, I will work on multiple highlights for numerous sessions at a later date.
Trading Sessions GMT+8 By ShoThis indicator show the trading session for GMT+8. Might be slight vary with some broker
Adaptive and Static Relative Strength OverlayThis indictor combines adaptive and static relative strengths and displays the strength in a unique colour coding on the bars.
With this the one can view the performance of both the relative strengths in one indicator and overlay-ed on the price chart.
Adaptive Relative Strength - Date is identified based on market scenarios. It will change based on how the market trends in the future.
Static Relative Strength - Date is fixed (123 sessions). Roughly corresponds to 6 months.
The (default) colour coding is:
If "Both" is selected:
ars > 0 and srs > 0 = Blue
ars <=0 and srs <= 0 = Maroon
Orange otherwise (Any of ars or srs is negative)
If "Only ARS" is selected:
ars > 0 = Blue
Maroon otherwise
If "Only SRS" is selected:
srs > 0 = Blue
Maroon otherwise
Additionally the ARS and the SRS will be marked as labels on the bars corresponding to the reference dates.
The current ARS and SRS values will be market as label on the last bar.
Source can be any valid source, close is selected by default.
Default benchmark is "Nifty 50" the NSE Indian benchmark. This can be changed.
Responsive Linear Regression ChannelsThis is a linear trend indicator that can:
- automagically adjust to different chart resolutions
- snap to day/session boundaries on intraday
- totally not do the above and use ye olde good fixed lookback window
- show the regression trend and its RMSE channels
- disregard the trend and just show the period average and standard deviation lines (often acting as support and resistance)
The main idea was to allow you to quickly view linear trends for different time periods without having to calculate the required amount of bars.
By default, you will be able to quickly switch between 1-3 months, 6 months, 1 year, 2 years and 5 years of data, as well as various daily lookback periods.
Please adjust resolution settings to your liking.
Caveats:
- More data means more noise and slower calculations.
- HLC3 source is recommended, especially at resolutions above hourly.
- Trend will be slightly different if you use extended hours.
- If you use extended hours and don't have a data subscription, trend will be SUBSTANTIALLY different, especially at smaller resolutions like 1m.
- You might want to use 3.5 days per week for crypto (it's 7 days by default).
Known problems:
- If you can't see the trendlines, scroll to the left or zoom out - the origin could be outside of your viewport.
- Futures' sessions start on the previous day. We currently snap only to day boundaries, not session breaks.
- UVXY and the like that have extremely high price datapoints. The calculations will be wrong on some resolutions.
- Replay can freeze circa bar_index 244 — disable smart lookback and keep your window under 240 bars if you encounter this.
ACKNOWLEDGEMENTS:
Many thanks to alexgrover for his extremely efficient functions (used with permission)
Near & Far Relative StrengthDefine a near time frame base and a far time frame base to compare the selected symbol RS. This helps in situations were you could keep the far RS length to a fixed value and the near RS length to a more recent "event" in the market and it's subsequent movement.
For example, if the market index has made a recovery from a deep crash 80 sessions ago, set the near RS length to 80 and keep the far RS length to a fixed value say, 123 corresponding to 6 months. This will help you gauge the historical vs the recovery strength of your interested symbol before and after the "event".
Pre-session rangeSimple tool to capture high and low of pre-session period (not restricted to stock market, by any means!) and then plotting it on your trading session time.
Session breaksThis indicator marks the start of each trading session around the world, starting with Tokyo at 0am UTC, London at 7am UTC, NY at 12pm and Sydney at 9pm, is non-intrusive (light gray vertical lines) and works with both UTC and exchanges' local time and handles DST / timezone offsets as well.
You can easily see that sometimes it acts as pivot-point especially on high volume.
And last, it is supposed to replace the "Session breaks" option that you can find in "Settings - Appearance" that only displays the end of session for the current exchange.
NSDT Triple VWAP with Adjustable Start TimesAllows you to plot 3 VWAP's with 3 different start times. Very useful for trading futures where there are multiple sessions involved. Can also be used with stocks to set as previous day, pre-market, and market open.