Intraday vs Overnight OBV🔍 Purpose
This indicator provides a volume-weighted cumulative flow model that mimics On-Balance Volume (OBV) logic but splits the volume impact into intraday vs. overnight sessions. It allows traders to track how volume contributes to price movement in each session and identify whether buying/selling pressure is stronger during or outside of regular trading hours.
This indicator attempts to alleviate some of the downfalls of the standard OBV indicator, which only looks at total volume and total direction. The price of stocks generally behaves extremely differently during market hours and outside market hours, and many of the large moves happen outside of regular market hours on low volume.
⚙️ Core Features
1) OBV-style calculation:
If price increases → volume is added to the OBV stream.
If price decreases → volume is subtracted.
If price is flat → OBV remains unchanged.
2) Session splitting:
Intraday session: movement from today's open to close.
Overnight session: movement from yesterday’s close to today’s open.
Volume is split proportionally between these two periods based on user input.
3) Four visualization modes:
"Intraday" — plots only OBV from intraday price movement.
"Overnight" — plots only OBV from overnight price movement.
"Aggregate" — plots the sum of intraday and overnight OBV for a holistic view.
"Both Intraday and Overnight" — plots intraday and overnight OBV separately on the same chart.
📐 Inputs
1) Synthetic OBV Type:
"Intraday" — Show OBV from open to close only.
"Overnight" — Show OBV from prior close to today's open only.
"Aggregate" — Show a single line combining both.
"Both Intraday and Overnight" — Show both lines on the same chart.
2) Estimated Overnight Volume %:
Percentage of total daily volume assumed to occur during extended hours.
The rest is allocated to regular session (intraday).
Default: 20% overnight, 80% intraday.
🧮 How It Works
Volume Splitting:
Total bar volume is split into overnight Volume and intraday Volume:
Intraday change is the difference between today’s close and open.
Overnight change is the difference between today’s open and yesterday’s close.
Session OBV Calculations:
OBV is incremented/decremented by the session's allocated volume, depending on whether the session’s price change was positive or negative.
Aggregate OBV:
Combines both session deltas for a holistic volume flow view.
📊 Interpretation
Rising OBV (any stream) suggests accumulation; falling OBV suggests distribution.
Divergences between price and OBV lines (especially overnight vs. intraday) can reveal where hidden buying/selling is occurring.
Comparing intraday vs overnight OBV can help:
Spot whether institutional demand is building off-hours.
Detect retail vs. institutional behavior (retail trades often dominate intraday; institutional may prefer after-hours).
💡 Use Cases
Identify whether overnight gaps are supported by overnight volume momentum.
Detect accumulation in low-volume overnight sessions.
Compare intraday and overnight strength during earnings season or news events.
Complement traditional OBV by seeing session-based breakdowns.
Cari dalam skrip untuk "session"
OpeningRange (Trading_Tix)Purpose:
The indicator highlights the high, low, and middle (50%) price levels of a specified session's opening range. These levels can serve as key support and resistance zones for trading strategies. The indicator also offers options to extend these levels beyond the session into later timeframes, making it useful for tracking breakout or trend continuation setups.
Key Features:
1. Session Detection:
The indicator identifies a specific session period using the user-defined Session Time. It calculates the start time, high, and low prices during this period:
rangeTime: Defines the session time range (default: 5:00 PM to 2:59 AM).
extendTime: Defines the extended time range where lines/backgrounds can be prolonged.
2. Opening Range Calculation:
High (high_val) and Low (low_val)**:
Tracks the highest and lowest prices during the session.
Middle Line:
A midpoint is calculated by averaging high_val and low_val.
3. Visual Elements:
Horizontal Lines:
Drawn at the high, low, and middle levels.
Customizable in width and color.
Shaded Background Box:
Covers the range between high and low prices.
The box’s color and transparency can be adjusted.
Line and Box Extension:
Optionally extends these elements into the extended time range.
4. Customization:
Users have the flexibility to:
Toggle visibility of lines, middle line, and background box.
Adjust colors, line thickness, and style.
Enable or disable the extension of lines and backgrounds into the extended period.
How It Works:
Initialization:
The script initializes variables to store range data (startTime, high_val, low_val) and drawing objects (lines, boxes).
It detects whether the current bar falls within the session (inSession) or extended timeframe (inExtend).
Plotting:
During the session:
Deletes previous lines and boxes from prior sessions.
Draws new lines at the high, low, and middle levels.
Creates a background box covering the range, if enabled.
During the extended period:
Extends the session lines and box, if the user has opted for extensions.
Updates:
Continuously adjusts the high/low values and updates the lines as new price data arrives.
Use Cases:
This indicator can be valuable for traders who:
Use the opening range to identify potential breakout zones.
Trade based on price consolidation within the range.
Want a visual representation of key price levels to plan entries and exits.
Would you like help refining this script further or adjusting its settings to match your trading style?
Number of Bars CheatSheetA regular trading day on the New York Stock Exchange (NYSE) consists of two main sessions: the Opening Auction and the Closing Auction, separated by a continuous trading session. Here's a breakdown of the trading day:
1. **Pre-Opening Session**: This session starts at 4:00 AM Eastern Time (ET) and lasts until 9:30 AM ET. During this time, there is limited trading activity, and orders can be entered and canceled. However, most of the trading activity doesn't occur until the regular trading session begins.
2. **Regular Trading Session**: The regular trading session on the NYSE starts at 9:30 AM ET and lasts until 4:00 PM ET. This is the primary trading session where the majority of price bars are formed.
3. **Closing Auction**: After the regular trading session ends at 4:00 PM ET, there is a closing auction period that typically lasts until 4:10 PM ET. During this time, there is a final price discovery process where orders are matched to determine the closing price for each security.
So, during the regular trading session, which is the main focus for most traders and investors, there are a total of 6.5 hours of trading. Trading occurs continuously during this time, with price bars being formed based on the time frame you're looking at. The most common time frames for price bars are one minute, five minutes, 15 minutes, 30 minutes, and one hour, among others. Therefore, the number of price bars in a regular trading day on the NYSE will depend on the time frame you are using for your analysis. For example, if you are using one-minute bars, there will be 6.5 x 60 = 390 price bars in a regular trading day.
time_filtersLibrary "time_filters"
Collection of filters that related with time like sessions and datetime ranges.
All existing session functions I found in the documentation e.g. not na(time(timeframe.period, sessionTimes))
are not suitable for strategies, since the execution of the entries and the exits are delayed by one bar.
Thus I created this library to overcome this small but very important limitation.
is_in_date_range(fromDate, toDate, srcTimezone, dstTimezone, t)
is_in_date_range - Check if the given time is between the start and end dates
Parameters:
fromDate : - The start date in UNIX time of the valid range
toDate : - The end date in UNIX time of the valid range
srcTimezone : - The timezone of reference for the 'from' and 'to' dates
dstTimezone : - The target timezone to convert the 'from' and 'to' dates
t : - The time to compare in UNIX format
Returns: series of bool whether or not the time is inside the valid range
is_in_session(startTime, endTime, days, srcTimezone, dstTimezone, t)
is_in_session - Check if the given time is inside the session as defined by the input params
Parameters:
startTime : - The sessionTime object with the use flag and the start time
endTime : - The sessionTime object with the use flag and the end time
days : - The sessionDays object with the use flag and marks for each day of the session
srcTimezone : - The timezone of reference for the time ranges
dstTimezone : - The target timezone to convert the time ranges
t : - The current time to compare in UNIX format.
Returns: series of bool whether or not the time is inside the session
sessionTime
Fields:
hourInDay
minuteInHour
sessionDays
Fields:
mon
tue
wed
thu
fri
sat
sun
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)
The Daily Bias Dashboard📜 Overview
This indicator is a powerful statistical tool designed to provide traders with a probable Daily Bias based on historical price action. It is built upon the concepts of Quarterly Theory, which divides the 24-hour trading day into 4 distinct sessions to analyze market behavior.
This tool analyzes how the market has behaved in the past to give you a statistical edge. It answers the question: "Based on the last X number of days, what is the most likely way the price will move during the Newyork AM & PM Sessions based on Asian & London Sessions?"
⚙️ How It Works
The indicator divides the 24-hour day (based on the America/New_York timezone) into two 12-hour halves:
First Half - 12 Hour Candle: The Accumulation/Manipulation or Asian/London Sessions (6 PM to 6 AM NY Time)
This period covers the Asian session and the start of the London session.
The indicator's only job here is to identify the highest high and lowest low of this 12-hour block, establishing the initial daily range.
Second Half - 12 Hour Candle: The Distribution/Continuation or NY AM/PM Sessions (6 AM to 6 PM NY Time)
This period covers the main London session and the full New York session.
The indicator actively watches to see if, and in what order, the price breaks out of the range established in Session 1 (FIrst Half of the day).
By tracking this behavior over hundreds of days, the indicator compiles statistics on four possible daily scenarios.
📊 The Four Scenarios & The Dashboard
The indicator presents its findings in a clean, easy-to-read dashboard, calculating the historical probability of each of the following scenarios:
↓ Low, then ↑ High: The price first breaks the low of Session 1 (often a liquidity sweep or stop hunt) before reversing to break the high of Session 1. This suggests a "sweep and reverse" bullish day.
↑ High, then ↓ Low: The price first breaks the high of Session 1 before reversing to break the low of Session 1. This suggests a "sweep and reverse" bearish day.
One-Sided Breakout: The price breaks only one of the boundaries (either the high or the low) and continues in that direction without taking the other side. This indicates a strong, trending day.
No Breakout (Inside Bar): The price fails to break either the high or the low of Session 1, remaining contained within its range. This indicates a day of consolidation and low volatility.
🧠 How to Use This Indicator
This is a confluence tool, not a standalone trading system. Its purpose is to help you frame a high-probability narrative for the trading day.
Establish a Bias: Start checking the dashboard at 06:00 AM Newyork time, which is the start of next half day trading session. If one scenario has a significantly higher probability (e.g., "One-Sided Breakout" at 89%), you have a statistically-backed directional bias in the direction of Breakout.
🔧 Features & Settings
Historical Days to Analyze: Set how many past days the indicator should use for its statistical analysis (default is 500).
Session Timezone : The calculation is locked to America/New_York as it is central to the Quarterly Theory concept, but this setting ensures correct alignment.
Dashboard Display: Fully customize the on-screen table, including its position and text size, or hide it completely.
⚠️ Important Notes
For maximum accuracy, use this indicator on hourly (H1) or lower timeframes.
The statistical probabilities are based on past performance and are not a guarantee of future results.
This tool is designed to sharpen your analytical skills and provide a robust, data-driven framework for your daily trading decisions. Use it to build confidence in your directional bias and to better understand the rhythm of the market.
Disclaimer: This indicator is for educational and informational purposes only and does not constitute financial advice. All trading involves risk.
True Open CalculationsIndicator Description: True Open Calculations
This custom Pine Script indicator calculates and plots key "True Open" levels based on specific time intervals and trading sessions. The True Open levels represent significant price points on the chart, helping traders identify key reference points tied to various market opening times. These levels are important for understanding price action in relation to market sessions and trading cycles. The indicator is designed to plot lines corresponding to different "True Opens" on the chart and display labels with the associated information.
Key Features:
True Year Open:
This represents the opening price on the first Monday of April each year. It serves as a reference point for the yearly price level.
Plot Color: Green.
True Month Open:
This represents the opening price on the second Monday of each month. It helps in identifying monthly trends and provides a key reference for monthly price movements.
Plot Color: Blue.
True Week Open:
This represents the opening price every Monday at 6:00 PM. It gives traders a level to track weekly opening movements and can be useful for weekly trend analysis.
Plot Color: Orange.
True Day Open:
This represents the opening price at 12:00 AM (midnight) each day. It serves as a daily benchmark for price action at the start of the trading day.
Plot Color: Red.
True New York Session Open:
This represents the opening price at 7:30 AM (New York session start time). This level is crucial for traders focused on the New York trading session.
Plot Color: Purple.
Additional Features:
Labels: The indicator displays labels to the right of each plotted line to describe which "True Open" it represents (e.g., "True Year Open," "True Month Open," etc.).
Dynamic Plotting: The lines are only plotted on the current candle, and the lines are dynamically updated for each time period based on the corresponding "True Open."
Visual Cues: The colors of the plotted lines (green, blue, orange, red, purple) help quickly distinguish between different "True Open" levels, making it easy for traders to track price action and make informed decisions.
Use Cases:
Yearly, Monthly, Weekly, Daily, and Session Benchmarking: This indicator provides traders with important price levels to use as benchmarks for the current year, month, week, and day, helping to identify trends and potential reversals.
Session Awareness: It is particularly useful for traders who want to track key market sessions, such as the New York session, and their impact on price movement.
Long-term Analysis: By including the yearly open, this indicator helps traders gain a broader perspective on market trends and provides context for analyzing shorter-term price movements.
Benefits:
Helps identify important reference points for longer-term trends (yearly, monthly) as well as shorter-term moves (daily, weekly, and session).
Visually intuitive with color-coded lines and labels, allowing quick and easy identification of key market open levels.
Dynamic and real-time: The indicator plots and updates the True Open levels dynamically as the market progresses.
DCSessionStatsOHLC_v1.0DCSessionStatsOHLC_v1.0
© dc_77 | Pine Script™ v6 | Licensed under Mozilla Public License 2.0
This indicator overlays customizable session-based OHLC (Open, High, Low, Close) statistics on your TradingView chart. It tracks price action within user-defined sessions, calculates average manipulation and distribution levels based on historical data, and visually projects these levels with lines and labels. Additionally, it provides a session count table to monitor bullish and bearish sessions.
Key Features:
Session Customization: Define session time (e.g., "0000-1600") and time zone (e.g., UTC, America/New_York). Analyze up to 20 historical sessions.
Anchor Line: Displays a vertical line at session start with customizable style, color, and optional label.
Session Open Line: Plots a horizontal line at the session’s opening price with adjustable appearance and label.
Manipulation Levels: Calculates and projects average price extensions (high/low relative to open) for manipulative moves, shown as horizontal lines with labels.
Distribution Levels: Displays average price ranges (high/low beyond open) for distribution phases, with customizable lines and labels.
Visual Flexibility: Adjust line styles (solid, dashed, dotted), colors, widths, label sizes, and projection offsets (bars beyond session start).
Session Stats Table: Optional table showing counts of bullish (close > open) and bearish (close < open) sessions, with configurable position and size.
How It Works:
Tracks OHLC data within each session and identifies session start/end based on the specified time range.
Computes averages for manipulation (e.g., low below open in bullish sessions) and distribution (e.g., high above open) levels from past sessions.
Projects these levels forward as horizontal lines, extending them by a user-defined offset for easy reference.
Updates a table with real-time bullish/bearish session counts.
Use Case:
Ideal for traders analyzing intraday or custom session behavior, identifying key price levels, and gauging market sentiment over time.
Toggle individual elements on/off and fine-tune visuals to suit your trading style.
Momentum Reversal StrategyBEST USE IN 15MIN TIME FRAME EURUSD / XAUSUD
1. Strategy Overview
This strategy hunts short-term momentum reversals at key levels during high-liquidity sessions.
Timeframes: 5-minute for entries; 15-minute for trend context
Sessions: London for EUR/USD & GBP/USD; New York for XAU/USD
Pairs: EUR/USD, GBP/USD, XAU/USD
Indicators (3 max):
EMA(20) and EMA(50) (close)
MACD (12, 26, 9) histogram
Optional: RSI(14) (for divergence filter)
2. Entry Rules
Trend Filter (15 min):
Long only if EMA20 > EMA50; short only if EMA20 < EMA50.
Price-Action Zone (5 min):
Identify recent swing high/low within past 20 bars.
Draw horizontal support (for longs) or resistance (for shorts).
Indicator Alignment (5 min):
MACD histogram crossing from negative to positive for longs, positive to negative for shorts.
Candle close beyond EMA20 in direction of trade.
Candle Confirmation:
Bullish engulfing or hammer at support for longs; bearish engulfing or shooting star at resistance for shorts.
Entry Execution:
Place market order on candle close that meets all above.
3. Exit Rules
Stop-Loss (SL):
Long: 1.5× ATR(14) below entry candle low.
Short: 1.5× ATR(14) above entry candle high.
Take-Profit (TP):
Set at 2× SL distance (RR 1:2).
Trailing SL:
After price moves 1× SL in profit, trail SL to breakeven.
Partial Booking:
Close 50% at 1× SL (50% of TP), move SL to entry.
Close remaining at full TP.
4. Trade Management
False Signal Filter: Skip trades when RSI(14) > 70 for longs or < 30 for shorts (avoids overbought/oversold extremes).
One Trade at a Time: No multiple positions on same pair.
Session Cutoff: Close any open trade 15 minutes before session end.
5. Risk Parameters
Risk per Trade: 1% of account equity.
Reward Target: ≥2% (1:2 RR) per trade.
Win-Rate Expectancy: ≥75% based on indicator confluence and price-action confirmation.
NYCSessionLibrary "NYCSession"
Library for New York trading session time functions
@author abneralvarado
@version 1.0
isInNYSession(sessionStart, sessionEnd)
Determines if the current bar is within New York trading session
Parameters:
sessionStart (simple int) : Starting time of NY session in 24hr format (HHMM) like 0930 for 9:30 AM ET
sessionEnd (simple int) : Ending time of NY session in 24hr format (HHMM) like 1600 for 4:00 PM ET
Returns: True if current bar is within the NY session time, false otherwise
getNYSessionStartTime(lookback, sessionStart)
Gets the start time of NY session for a given bar
Parameters:
lookback (simple int) : Bar index to check (0 is current bar)
sessionStart (simple int) : Starting time of NY session in 24hr format (HHMM)
Returns: Unix timestamp for the start of NY session on the given bar's date
getNYSessionEndTime(lookback, sessionEnd)
Gets the end time of NY session for a given bar
Parameters:
lookback (simple int) : Bar index to check (0 is current bar)
sessionEnd (simple int) : Ending time of NY session in 24hr format (HHMM)
Returns: Unix timestamp for the end of NY session on the given bar's date
isNYSessionOpen(sessionStart)
Checks if current bar opens the NY session
Parameters:
sessionStart (simple int) : Starting time of NY session in 24hr format (HHMM)
Returns: True if current bar marks the session opening, false otherwise
isNYSessionClose(sessionEnd)
Checks if current bar closes the NY session
Parameters:
sessionEnd (simple int) : Ending time of NY session in 24hr format (HHMM)
Returns: True if current bar marks the session closing, false otherwise
isWeekday()
Determines if the current day is a weekday (Mon-Fri)
Returns: True if current bar is on a weekday, false otherwise
getSessionBackgroundColor(sessionStart, sessionEnd, bgColor)
Gets session background color with transparency
Parameters:
sessionStart (simple int) : Starting time of NY session in 24hr format (HHMM)
sessionEnd (simple int) : Ending time of NY session in 24hr format (HHMM)
bgColor (color) : Background color for session highlighting
Returns: Color value for background or na if not in session
One Setup for Life ICTGuided by ICT tutoring, I create this versatile 'One Trading Set Up For Life' indicator
This indicator shows a different way of viewing the "Highs and Lows" of Previous Sessions, drawing from the current day until 09:30 AM, the time at which the Highs and Lows of the previous day's sessions can be taken into consideration for a Reversal or for a Take profit.
Levels tested after 9.30am will be blocked so you have a good and clear view of the levels affected
Timing Session =
London: 02:00 to 05:00
New York: 9.30am to 12.30pm
Lunch: 12.30pm to 1pm
PM Session: 1.30pm to 4pm
The user has the possibility to:
- Choose to view sessions or not
- Choose to show levels from previous sessions
- Choose to show today's session levels
- Choose between 08:30 and 09:30 the starting time for the Liquidity taken
- Choose to view High and Low only from the previous day
- See both the name of the Sessions and the price of the levels
The indicator must be used as ICT shows in its concepts, the indicator takes into consideration both previous sessions and today's sessions, and the session levels can be used both for a reversal and for a possible Take Profit like the example here under
Reversal =
Possible Take Profit =
If something is not clear, comment below and I will reply as soon as possible.
Intraday Volume Pulse GSK-VIZAG-AP-INDIAIntraday Volume Pulse Indicator
Overview
This indicator is designed to track and visualize intraday volume dynamics during a user-defined trading session. It calculates and displays key volume metrics such as buy volume, sell volume, cumulative delta (difference between buy and sell volumes), and total volume. The data is presented in a customizable table overlay on the chart, making it easy to monitor volume pulses throughout the session. This can help traders identify buying or selling pressure in real-time, particularly useful for intraday strategies.
The indicator resets its calculations at the start of each new day and only accumulates volume data from the specified session start time onward. It uses simple logic to classify volume as buy or sell based on candle direction:
Buy Volume: Assigned to green (up) candles or half of neutral (doji) candles.
Sell Volume: Assigned to red (down) candles or half of neutral (doji) candles.
All calculations are approximate and based on available volume data from the chart. This script does not incorporate external data sources, order flow, or tick-level information—it's purely derived from standard OHLCV (Open, High, Low, Close, Volume) bars.
Key Features
Session Customization: Define the start time of your trading session (e.g., market open) and select from common timezones like Asia/Kolkata, America/New_York, etc.
Volume Metrics:
Buy Volume: Total volume attributed to bullish activity.
Sell Volume: Total volume attributed to bearish activity.
Cumulative Delta: Net difference (Buy - Sell), highlighting overall market bias.
Total Volume: Sum of all volume during the session.
Formatted Display: Volumes are formatted for readability (e.g., in thousands "K", lakhs "L", or crores "Cr" for large numbers).
Color-Coded Table: Uses a patriotic color scheme inspired by general themes (Saffron, White, Green) with dynamic backgrounds based on positive/negative values for quick visual interpretation.
Table Options: Toggle visibility and position (top-right, top-left, etc.) for a clean chart layout.
How to Use
Add to Chart: Apply this indicator to any symbol's chart (works best on intraday timeframes like 1-min, 5-min, or 15-min).
Configure Inputs:
Session Start Hour/Minute: Set to your market's open time (default: 9:15 for Indian markets).
Timezone: Choose the appropriate timezone to align with your trading hours.
Show Table: Enable/disable the metrics table.
Table Position: Place the table where it doesn't obstruct your view.
Interpret the Table:
Monitor for spikes in buy/sell volume or shifts in cumulative delta.
Positive delta (green) suggests buying pressure; negative (red) suggests selling.
Use alongside price action or other indicators for confirmation—e.g., high total volume with positive delta could indicate bullish momentum.
Limitations:
Volume classification is heuristic and not based on actual order flow (e.g., it splits doji volume evenly).
Data accumulation starts from the session time and resets daily; historical backtesting may be limited by the max_bars_back=500 setting.
This is for educational and visualization purposes only—do not use as sole basis for trading decisions.
Calculation Details
Session Filter: Uses timestamp() to define the session start and filters bars with time >= sessionStart.
New Day Detection: Resets volumes on daily changes via ta.change(time("D")).
Volume Assignment:
Buy: Full volume if close > open; half if close == open.
Sell: Full volume if close < open; half if close == open.
Cumulative Metrics: Accumulated only during the session.
Formatting: Custom function f_format() scales large numbers for brevity.
Disclaimer
This script is for educational and informational purposes only. It does not provide financial advice or signals to buy/sell any security. Always perform your own analysis and consult a qualified financial professional before making trading decisions.
© 2025 GSK-VIZAG-AP-INDIA
LANZ Strategy 7.0🔷 LANZ Strategy 7.0 — Multi-Session Breakout Logic with Midnight-Cross Support, Dynamic SL/TP, Multi-Account Lot Sizing & Real-Time Visual Tracking
LANZ Strategy 7.0 is a robust, visually-driven trading indicator designed to capture high-probability breakouts from a customizable market session.
It includes full support for sessions that cross midnight, dynamic calculation of Entry Price (EP), Stop Loss (SL) and Take Profit (TP) levels, and a multi-account lot sizing panel for precise risk management.
The system is built to only trigger one trade per day and manages the full trade lifecycle with automated visual cleanup and detailed alerts.
📌 This is an indicator, not a strategy — it does not place trades automatically, but provides exact entry setups, SL/TP levels, risk-based lot size guidance, and real-time alerts for execution.
🧠 Core Logic & Features
🚀 Entry Signal (BUY/SELL)
The trading day begins with a Decision Session (yellow box) where the high/low range is recorded.
Once the Operative Session starts (blue zone), the first touch of the session’s high triggers a BUY setup, and the first touch of the session’s low triggers a SELL setup.
Only one valid trade can be triggered per day — the system locks after the first signal.
⚙️ Dynamic Stop Loss & Take Profit
SL levels are derived from the Decision Session high/low using customizable Fibonacci multipliers (independent for BUY and SELL).
TP is dynamically calculated from the EP–SL distance using a user-defined Risk:Reward ratio (R:R).
All EP, SL, and TP levels are drawn as independent lines with customizable colors, label text size, and style.
⏳ Session & Midnight-Cross Support
Works with any custom Decision/Operative session hours, including sessions that start one day and end the next.
Properly tracks time zones using New York session time for consistency.
Includes Cutoff Time: after this limit, no new entries are allowed, and all visuals are auto-cleared if no trade was triggered.
💰 Multi-Account Risk-Based Lot Sizing
Supports up to 5 independent accounts.
Each account can have:
Own capital
Own risk percentage per trade
Lot size is auto-calculated based on:
SL distance (in pips or points)
Pip value (auto-detected for Forex or manually set for indices/commodities)
Results are displayed in a clean lot size info panel.
🖼️ Real-Time Visual Tracking
Dynamic updates to all levels during the Decision Session.
EP, SL, TP lines update if the session high/low changes before the Operative Session starts.
Trade result labels:
SL hit → “–1.00%” in red
TP hit → “+X.XX%” in green
Manual close at Operative End → shows actual % result in blue or purple.
🔔 Alerts for Every Key Event
Session start notification
EP entry triggered
SL or TP hit
Manual close at session end
Missed entry due to cutoff
🧭 Execution Flow
Decision Session (Yellow) — Capture high/low range.
Operative Session (Blue) — First touch of high = BUY setup; first touch of low = SELL setup.
Plot EP, SL, TP lines + calculate lot sizes for all active accounts.
Track trade until SL, TP, or Operative End.
If no entry triggered by Cutoff Time → clean all visuals and notify.
💡 Ideal For:
Traders who operate breakout logic on specific sessions (NY, London, Asian, or custom).
Those managing multiple accounts with strict risk per trade.
Anyone trading assets with sessions crossing midnight.
👨💻 Credits:
Developer: LANZ
Logic Design: LANZ
Built For: Multi-timeframe session breakouts with high precision.
Purpose: One-shot trade per day, risk consistency, and total visual clarity.
Gold Power Hours Strategy📈 Gold Power Hours Trading Strategy
Trade XAUUSD (Gold) or XAUEUR during the most volatile hours of the New York session, using momentum and trend confirmation, with session-specific risk/reward profiles.
✅ Strategy Rules
🕒 Valid Trading Times ("Power Hours"):
Trades are only taken during high-probability time windows on Tuesdays, Wednesdays, and Thursdays , corresponding to key New York session activity:
Morning Session:
08:00 – 11:00 (NY time)
Afternoon Session:
12:30 – 16:00
19:00 – 22:00
These times align with institutional activity and economic news releases.
📊 Technical Indicators Used:
50-period Simple Moving Average (SMA50):
Identifies the dominant market trend.
14-period Relative Strength Index (RSI):
Measures market momentum with session-adjusted thresholds.
🟩 Buy Signal Criteria:
Price is above the 50-period SMA (bullish trend)
RSI is greater than:
60 during Morning Session
55 during Afternoon Session
Must be during a valid day (Tue–Thu) and Power Hour session
🟥 Sell Signal Criteria:
Price is below the 50-period SMA (bearish trend)
RSI is less than:
40 during Morning Session
45 during Afternoon Session
Must be during a valid day and Power Hour session
🎯 Trade Management Rules:
Morning Session (08:00–11:00)
Stop Loss (SL): 50 pips
Take Profit (TP): 150 pips
Risk–Reward Ratio: 1:3
Afternoon Session (12:30–16:00 & 19:00–22:00)
Stop Loss (SL): 50 pips
Take Profit (TP): up to 100 pips
Risk–Reward Ratio: up to 1:2
⚠️ TP is slightly reduced in the afternoon due to typically lower volatility compared to the morning session.
📺 Visuals & Alerts:
Buy signals: Green triangle plotted below the bar
Sell signals: Red triangle plotted above the bar
SMA50 line: Orange
Valid session background: Light pink
Alerts: Automatic alerts for buy/sell signals
London Breakout Tracker - Box Style📊 London Breakout Tracker (Pine Script v6)
This script is designed to track the Asian session range and identify breakout opportunities when the London session begins. It highlights high-probability trade setups and helps avoid fakeouts or overly wide ranges.
🧱 1. Session Time Definitions (Adjusted for Kenyan Time)
The Asian session is defined as:
3:00 AM to 11:00 AM (Kenyan Time)
🔐 2. Asian Session High & Low
During the Asian session:
The script tracks the highest high and lowest low to define the range.
These are stored in variables: asianHigh and asianLow.
🧊 3. Box Drawing for the Asian Range
Once the Asian session ends:
A visual box is drawn around the session using box.new().
This box spans from the session start to end bars and from the high to low.
It helps visually see the range price must break out from.
🚨 4. Breakout Signals
After the Asian session:
A Long Breakout signal is generated if:
The candle closes above the Asian High.
A Short Breakout signal is generated if:
The candle closes below the Asian Low.
This corresponds to 00:00 to 08:00 UTC
These are shown with:
✅ Green up label for long breakouts
❌ Red down label for short breakouts
🧯 5. Fakeout Detection
If price breaks out but closes back inside the Asian range, it’s marked as a Fakeout:
Long Fakeout: Price breaks above high, then closes back below.
Short Fakeout: Price breaks below low, then closes back above.
These are marked with orange X-crosses above or below candles.
⚠️ 6. Wide Range Filter
If the Asian session range is too wide (e.g. > 40 pips), a gray background is drawn.
This warns you not to trade that day since breakouts from wide ranges are unreliable.
📣 7. Alert Conditions
The script can trigger alerts in TradingView when:
🔔 A Long or Short Breakout occurs
⚠️ A Fakeout is detected
You can set these up via the TradingView alert system.
🎯 Overall Purpose:
The script helps you:
Clearly see the Asian session range
Identify breakout opportunities at the London open
Avoid trading during fakeouts or wide-range sessions
Get alerted when breakout/fakeout conditions occur
2022 Model ICT Entry Strategy [TradingFinder] One Setup For Life🔵 Introduction
The ICT 2022 model, introduced by Michael Huddleston, is an advanced trading strategy rooted in liquidity and price imbalance, where time and price serve as the core elements. This ICT 2022 trading strategy is an algorithmic approach designed to analyze liquidity and imbalances in the market. It incorporates concepts such as Fair Value Gap (FVG), Liquidity Sweep, and Market Structure Shift (MSS) to help traders identify liquidity movements and structural changes in the market, enabling them to determine optimal entry and exit points for their trades.
This Full ICT Day Trading Model empowers traders to pinpoint the Previous Day High/Low as well as the highs and lows of critical sessions like the London and New York sessions. These levels act as Liquidity Zones, which are frequently swept prior to a market structure shift (MSS) or a retracement to areas such as Optimal Trade Entry (OTE).
Bullish :
Bearish :
🔵 How to Use
The ICT 2022 model is a sophisticated trading strategy that focuses on identifying key liquidity levels and price movements. It operates based on two main principles. In the first phase, the price approaches liquidity zones and sweeps critical levels such as the previous day’s high or low and key session levels.
This movement is known as a Liquidity Sweep. In the second phase, following the sweep, the price retraces to areas like the FVG (Fair Value Gap), creating ideal entry points for trades. Below is a detailed explanation of how to apply this strategy in bullish and bearish setups.
🟣 Bullish ICT 2022 Model Setup
To use the ICT 2022 model in a bullish setup, start by identifying the Previous Day High/Low or key session levels, such as those of the London or New York sessions. In a bullish setup, the price usually moves downward first, sweeping the Liquidity Low. This move, known as a Liquidity Sweep, reflects the collection of buy orders by major market participants.
After the liquidity sweep, the price should shift market structure and start moving upward; this shift, referred to as Market Structure Shift (MSS), signals the beginning of an upward trend. Following MSS, areas like FVG, located within the Discount Zone, are identified. At this stage, the trader waits for the price to retrace to these zones. Once the price returns, a long trade is executed.
Finally, the stop-loss should be set below the liquidity low to manage risk, while the take-profit target is usually placed above the previous day’s high or other identified liquidity levels. This structure enables traders to take advantage of the upward price movement after the liquidity sweep.
🟣 Bearish ICT 2022 Model Setup
To identify a bearish setup in the ICT 2022 model, begin by marking the Previous Day High/Low or key session levels, such as the London or New York sessions. In this scenario, the price typically moves upward first, sweeping the Liquidity High. This move, known as a Liquidity Sweep, signifies the collection of sell orders by key market players.
After the liquidity sweep, the price should shift market structure downward. This movement, called the Market Structure Shift (MSS), indicates the start of a downtrend. Following MSS, areas such as FVG, found within the Premium Zone, are identified. At this stage, the trader waits for the price to retrace to these areas. Once the price revisits these zones, a short trade is executed.
In this setup, the stop-loss should be placed above the liquidity high to control risk, while the take-profit target is typically set below the previous day’s low or another defined liquidity level. This approach allows traders to capitalize on the downward price movement following the liquidity sweep.
🔵 Settings
Swing period : You can set the swing detection period.
Max Swing Back Method : It is in two modes "All" and "Custom". If it is in "All" mode, it will check all swings, and if it is in "Custom" mode, it will check the swings to the extent you determine.
Max Swing Back : You can set the number of swings that will go back for checking.
FVG Length : Default is 120 Bar.
MSS Length : Default is 80 Bar.
FVG Filter : This refines the number of identified FVG areas based on a specified algorithm to focus on higher quality signals and reduce noise.
Types of FVG filters :
Very Aggressive Filter: Adds a condition where, for an upward FVG, the last candle's highest price must exceed the middle candle's highest price, and for a downward FVG, the last candle's lowest price must be lower than the middle candle's lowest price. This minimally filters out FVGs.
Aggressive Filter: Builds on the Very Aggressive mode by ensuring the middle candle is not too small, filtering out more FVGs.
Defensive Filter: Adds criteria regarding the size and structure of the middle candle, requiring it to have a substantial body and specific polarity conditions, filtering out a significant number of FVGs.
Very Defensive Filter: Further refines filtering by ensuring the first and third candles are not small-bodied doji candles, retaining only the highest quality signals.
🔵 Conclusion
The ICT 2022 model is a comprehensive and advanced trading strategy designed around key concepts such as liquidity, price imbalance, and market structure shifts (MSS). By focusing on the sweep of critical levels such as the previous day’s high/low and important trading sessions like London and New York, this strategy enables traders to predict market movements with greater precision.
The use of tools like FVG in this model helps traders fine-tune their entry and exit points and take advantage of bullish and bearish trends after liquidity sweeps. Moreover, combining this strategy with precise timing during key trading sessions allows traders to minimize risk and maximize returns.
In conclusion, the ICT 2022 model emphasizes the importance of time and liquidity, making it a powerful tool for both professional and novice traders. By applying the principles of this model, you can make more informed trading decisions and seize opportunities in financial markets more effectively.
Extended Hours Volume FlagOverview: The Extended Hours Volume Flag Indicator is a powerful tool designed for traders who are interested in monitoring and analyzing the volume activity during the extended trading hours—specifically the premarket (4:00 AM to 9:30 AM) and afterhours (4:00 PM to 8:00 PM) sessions. This indicator identifies and flags stocks where the trading volume during these extended hours exceeds 20% of the Average Volume (AVOL) during regular trading hours. Such occurrences often signal unusual activity or potential market-moving events, which can be crucial for informed trading decisions.
Concept: Volume is a critical factor in trading, often providing insights into market sentiment and potential price movements. However, volume during extended hours can be particularly revealing as it may indicate heightened interest or activity outside of the regular trading session. The Extended Hours Volume Flag Indicator is built on the concept that significant volume during premarket or afterhours trading sessions, relative to the average regular session volume, could be an early indicator of upcoming volatility or trends.
How It Works:
Session Segmentation: The indicator distinguishes between regular trading hours (9:30 AM to 4:00 PM) and extended hours (premarket and afterhours). It accumulates the trading volume separately for these sessions.
Volume Comparison: It calculates the Average Volume (AVOL) over a user-defined period (default is 14 days) during regular trading hours. It then compares the extended hours volume to this AVOL.
Flagging Condition: If the volume during the extended hours exceeds 20% of the AVOL, the indicator flags the stock with a warning symbol on the chart. This visual cue helps traders quickly identify stocks with potentially significant afterhours or premarket activity.
Reset Mechanism: The accumulated volumes reset at the start of the new trading day, ensuring accurate calculations for each day.
Usage: This indicator is ideal for traders who are looking for early signals of market activity outside regular hours, which might not be immediately visible when looking solely at price action. It is particularly useful for day traders and swing traders who want to keep an eye on potential premarket or afterhours catalysts.
FIRST-HOUR TOOL V.1.8.08.23Three horizontal lines are drawn on the chart to represent session prices. These prices are calculated based on the user-specified session:
"FirstHour Session High" represents the highest price reached during the firsthour session.
"FirstHour Session Open" represents the opening price of the firsthour session
"FirstHour Session Low" represents the lowest price reached during the firsthour session.
These prices are respectively colored with light blue, light yellow, and light pink.
The chart background can change color based on whether the current time is within the specified session. If the current time is within the session, the background will be colored in semi-transparent aqua green. Otherwise, it will remain transparent.
Upward-pointing triangle markers are used to highlight points where the closing price crosses above (crossover) or below (crossunder) the session levels.
These markers appear below the corresponding bar.
They are colored based on the type of crossover:
Yellow for crossover above the "FirstHour High"
Red for crossover above the "FirstHour Open"
Green for crossover above the "FirstHour Low"
Alerts:
Alert messages are generated when crossovers or crossunders of the closing price relative to the session levels occur.
The alerts appear once per bar. Alerts are generated for the following events:
Crossover of the price above the "Session High" with the message "High First Hour Crossover."
Crossunder of the price below the "Session Open" with the message "Open First Hour Crossunder."
Crossunder of the price below the "Session Low" with the message "Low First Hour Crossunder."
Crossover of the price above the "Session Low" with the message "Low First Hour Crossover."
In summary, this indicator provides a visual representation of session prices and events, helping traders spot significant crossovers and crossunders relative to key price levels.
Author @tumiza999
DTC FX+DTC FX+
All in One Indicator for Forex Markets
A comprehensive FX session indicator designed to help traders identify and analyze different trading sessions throughout the day.
This indicator provides real-time detection of major FX trading sessions including New York, London, and Tokyo sessions. It displays session ranges, highs and lows, and includes volume analysis to help identify periods of increased market activity.
Key features include:
• Real-time FX Session Detection (NY, London, Tokyo)
• Live Daily Candle Overlay with OHLC tracking
• Volume Bars for Strong Volume Detection
• Session Trend Detection
• Dynamic Session Status Tables
• Daily Dividers and Session Box Visualization
• Custom Trading Rules Display
• Watermark System
• Moving Averages (EMA, WMA, SMA)
• Fair Value Gaps (FVG) Detection
• Support & Resistance Levels (CISD)
• Gap Violations Analysis
• Session-specific Volume Analysis
• Customizable Session Times and Colors
• Theme-aware Display Options
• Multiple Watermark Styles
• Session Range and Extremes Display
• Professional Session Dashboard
The session dashboard provides a clear overview of current market conditions, while customizable trading rules can be displayed directly on the chart. Session boxes and dividers help visualize different trading periods, making it easier to understand market structure across different time zones.
All session times, colors, and display options are fully customizable to match your trading preferences. The indicator works across multiple timeframes and includes theme-aware display options for both light and dark chart themes.
Whether you're a day trader looking for session-based opportunities or a swing trader analyzing market structure, this indicator provides the tools needed to better understand FX market dynamics across different trading sessions.
Prev D/W/M + Asia & London Levels [Oeditrades]Prev D/W/M + Asia & London Levels
Author: Oeditrades
Platform: Pine Script® v6
What it does
Plots only the most recent, fully completed:
Previous Day / Week / Month highs & lows
Asia and London session highs & lows
Levels are drawn as true horizontal lines from the period/session start and extended to the right for easy confluence reading. The script is non-repainting.
How it works
Prev Day/Week/Month: Uses completed HTF candles (high / low ) so values are fixed for the entire next period.
Sessions (NY time): Asia (default 20:00–03:00) and London (default 03:00–08:00) are tracked in America/New_York time. High/low are locked when the session ends, and the line is anchored at that session’s start.
Inputs & customization
Visibility: toggle Previous Day/Week/Month, Asia, London, and labels.
Colors: highs default red; lows default green (user-configurable). Session highs default pink, lows aqua (also editable).
Style: line style (solid/dotted/dashed) and width.
Sessions: editable time windows for Asia and London (still interpreted in New York time).
Disclaimer: optional on-chart disclaimer panel with editable text.
Notes
Works on any timeframe. For intraday charts, the HTF values remain constant until the next HTF bar completes.
If your market’s overnight hours differ, simply adjust the session windows in Inputs.
Lines intentionally show only the latest completed period/session to keep charts clean.
Use cases
Quick view of PDH/PDL, PWH/PWL, PMH/PML for bias and liquidity.
Intraday planning around Asia/London range breaks, retests, and overlaps with prior levels.
Disclaimer
This tool is for educational purposes only and is not financial advice. Markets involve risk; past performance does not guarantee future results.
Silver BulletSilver Bullet is a trading tool built for finding cleaner, higher-probability setups. It focuses on key windows of market movement and adds helpful tools like daily range levels and candlestick patterns.
Whether you’re trading breakouts or reversals, Silver Bullet gives you a clearer view of the market and more confidence in your setups.
⸻
🔹 Trading Setup #1: Macro Time
The Macro Time setting offers two modes: Macro Bullet and Silver Bullet. Both help traders focus on specific times when the market tends to deliver clean moves.
• Macro Bullet is based on the high and low of a full macro session. It automatically detects the session’s range and bias, then offers optimal entries for either Long or Short setups. Once the session resolves, it provides Fibonacci-based levels for entry, target, and stop loss.
• Silver Bullet is based on ICT concepts and focuses on the hourly range for London, NY AM, and NY PM sessions. It’s designed for quick time blocks and highlights key levels as the session unfolds.
To use this setup, set Macro Time to “ICT Sessions” and select your preferred mode under Bullet Mode.
⸻
🔹 Trading Setup #2: Daily Range
Enable Daily Range to draw Fibonacci levels based on either the previous day’s candle or the current day’s developing range. These levels help you identify potential support, resistance, and midpoint zones throughout the day.
With the current day’s range, levels automatically update in real time as new highs or lows form — keeping your chart aligned with evolving price action.
⸻
🔹 Trading Setup #3: Candlestick Patterns
Turn on Candlestick Patterns to automatically highlight clean reversal signals such as Hammers, Hanging Men, Shooting Stars, and Tweezers. Each pattern is detected using specific criteria and trend filters to reduce noise and improve reliability. They work especially well as confirmation signals around key levels or session zones.
Silver Bullet brings structure, clarity, and precision to your intraday trading. By combining time-based bias, price action levels, and pattern recognition, it helps you trade with purpose — not guesswork. Use one setup or combine all three for a complete view of the market, tailored to your style and session of choice.
[FS] Time & Cycles Time & Cycles
A comprehensive trading session indicator that helps traders identify and track key market sessions and their price levels. This tool is particularly useful for forex and futures traders who need to monitor multiple trading sessions.
Key Features:
• Multiple Session Support:
- London Session
- New York Session
- Sydney Session
- Asia Session
- Customizable TBD Session
• Session Visualization:
- Clear session boxes with customizable colors
- Session labels with adjustable visibility
- Support for sessions crossing midnight
- Timezone-aware calculations
• Price Level Tracking:
- Daily High/Low levels
- Weekly High/Low levels
- Previous session High/Low levels
- Customizable history depth for each level type
• Customization Options:
- Adjustable colors for each session
- Customizable border styles
- Label visibility controls
- Timezone selection
- History level depth settings
• Technical Features:
- High-performance calculation engine
- Support for multiple timeframes
- Efficient memory usage
- Clean and intuitive visual display
Perfect for:
• Forex traders monitoring multiple sessions
• Futures traders tracking market hours
• Swing traders identifying key session levels
• Day traders planning their trading hours
• Market analysts studying session patterns
The indicator helps traders:
- Identify active trading sessions
- Track session-specific price levels
- Monitor market activity across different time zones
- Plan trades based on session boundaries
- Analyze price action within specific sessions
Note: This indicator is designed to work across all timeframes and is optimized for performance with minimal impact on chart loading times.
Multi-Timeline 1.0Multi-TimeLines 1.0 - Comprehensive Description
WHAT IT DOES:
This indicator creates dynamic horizontal support/resistance lines based on opening prices captured at user-defined New York times. Unlike static horizontal lines, these levels automatically appear and disappear based on sophisticated session logic, providing traders with time-sensitive reference levels that adapt to market sessions.
HOW IT WORKS - TECHNICAL IMPLEMENTATION:
1.
Timezone Conversion Engine:
The script uses Pine Script's "America/New_York" timezone functions to ensure all time calculations are based on NY time, regardless of the user's chart timezone. This eliminates confusion and provides consistent behavior across global markets.
2.
Dual-Category Time Classification System:
The indicator employs a unique two-category classification system:
Category A (16:00-23:59 NY): Evening times that extend overnight until next day 15:59 NY
Category B (00:00-15:59 NY): Day times that extend until same day 15:59 NY
This classification handles the complex logic of overnight sessions and prevents lines from incorrectly resetting at midnight for evening times.
3. Price Capture Mechanism:
Uses precise time-hit detection with backup systems for edge cases (especially midnight 00:00). When a specified time occurs, the script captures the bar's opening price and stores it in persistent variables using Pine Script's var declarations.
4. Session-Aware Display Logic:
Lines only appear during their designated "display windows" - periods when the captured price level is relevant. The script uses conditional plotting with plot.style_linebr to create clean breaks when lines are inactive.
5. Smart Reset System:
Different reset behaviors based on time classification:
Category A times persist across midnight (for overnight analysis)
Category B times reset on day changes (except 00:00 which captures AT day change)
Automatic cleanup when display windows close
ORIGINALITY & UNIQUE FEATURES:
1. Overnight Session Handling:
Unlike basic horizontal line tools, this script properly handles overnight spans for evening times, making it invaluable for analyzing gaps and overnight price action.
2. Automatic Session Management:
No manual line drawing required - the script automatically manages when lines appear/disappear based on NY market sessions (15:59 close, 18:00 after-hours start).
3. Time-Window Display Logic:
Lines only show during relevant periods, reducing chart clutter and focusing attention on currently active levels.
TRADING CONCEPTS & APPLICATIONS:
1. Session-Based Analysis:
Capture opening prices at key session times:
00:00 NY: Sydney/Asian session start
03:00 NY: London pre-market
08:00 NY: London session open
09:30 NY: NYSE opening bell
18:00 NY: After-hours start
2. Gap Analysis:
Evening times (20:00-23:59) that extend overnight are particularly useful for:
Identifying potential gap-fill levels
Tracking overnight high/low breaks
Setting reference points for next-day trading
3. Support/Resistance Framework:
Opening prices at significant times often act as:
Intraday support/resistance levels
Reference points for breakout/breakdown analysis
Pivot levels for mean reversion strategies
HOW TO USE:
1. Time Input:
Enter times in "HH:MM" format using 24-hour NY time:
"09:30" for NYSE open
"15:30" for late-day reference
"20:00" for evening level (extends overnight)
2. Line Behavior:
Blue/Green/Cyan/Red lines: Your custom times
Yellow line: After-hours day open (18:00 NY start)
Lines appear with breaks during inactive periods
3. Strategic Setup:
Use 2-3 key session times for your trading style
Combine morning times (immediate reference) with evening times (overnight analysis)
Toggle after-hours line based on your market focus
CALCULATION METHOD:
The script uses direct opening price capture (no smoothing or averaging) at precise time hits, ensuring the most accurate representation of actual market levels at specified times. This raw price approach maintains the integrity of actual market opening prices rather than manipulated or calculated values.
This method is particularly effective because opening prices at significant times often represent institutional order flow and can act as magnetic levels throughout subsequent sessions.