Professional Documents
Culture Documents
Session Volatility Calculator
Session Volatility Calculator
You specify a start date, an end date, and a session time (eg. market open, Asian session etc)
The script then scans through all the price action on your chart and calculates the average price
movement during that specified period.
What Is It For?
I created this script for my own purposes when developing certain strategies and testing certain ideas.
The purpose of this script is to give you an idea of how much price tends to move during certain times of
day for certain markets.
In crypto and forex this might be how much price tends to move on certain pairs during the
Australian/Asian session, or the European session, or the overnight U.S. session etc.
In stocks this might be how much a symbol tends to move during the first hour of the day or the last hour
of the day.
The point of calculating this information is for better understanding how markets move during certain
times of day.
It's not a perfect science obviously since some days can be wilder than others depending on what
fundamental events are developing, but it's useful information to have for times when there are no
expected volatility-inducing events.
This info can help with optimizing targets and stop loss placement for certain day-trading strategies, and
just generally getting an idea of what kinds of moves you might reasonably expect out of overnight
positions or certain times of day etc - or at least that's what I use it for.
Settings
Hover your mouse over the "i" symbol to get more information on the script's settings, but here's a brief
description:
Start Date: The date to begin calculating from (set to 1000 by default so it scans the entire chart).
End Date: The date to stop calculating (set to 2099 by default so it scans the entire chart)
Time Session: This is the time session during the day that you want to analyze.
Color Background: If turned on, this setting changes the background color to highlight the session.
Indicator Values
The indicator outputs a handful of values onto your chart. This is what the colors correspond to:
Top-Right Box: The average price range during the given time of day over historical price action.
// @version=5
endDate = input.time(title="End Date", defval=timestamp("1 Jan 2099 19:30 +0000"), tooltip="Date &
time to stop analysis")
atr = ta.atr(14)
toWhole(number) =>
_return := atr >= 1.0 and atr < 100.0 and syminfo.currency == "JPY" ? _return * 100 : _return
else
number
// This function returns true if the current bar falls within the given time session (:1234567 is to include
all weekdays)
inSession(sess) => na(time(timeframe.period, sess + ":1234567")) == false and time >= startDate and
time <= endDate
withinSession := true
var sessionsCounted = 0
withinSession := false
// Analyze movement
sessionsCounted := sessionsCounted + 1
highestHigh := -1.0
lowestLow := MAXINT
highestHigh := high
lowestLow := low
_c_color = color.green
_transp = 80
// Only fill the cell data on the last bar on the chart (for optimization)
if barstate.islast
f_fillCell(resultTable, 0, 0, toWhole(averageMovement), syminfo.type == "forex" ? "Pip Change" : "Price
Change")