Daily Historical Volatility StdDev Levels

3967 visningar
This indicator plots Daily Standard deviation levels on price chart based on Historical Volatility (HV). It uses the most common approach for calculating historical volatility as standard deviation of logarithmic returns, based on daily closing/settlement prices.

Assets: Currency Pairs, Commodities , also works on stocks, some indices.
Time Frames: 5min to 60min. This will also work on Daily Chart , by setting "DaystoExpire" to 21

  • Use Daily Data to Calculate StdDev HV (default), otherwise use the charts Time Frame
  • Lookback = number of days/periods to calculate stddev of HV (21 by default)
  • Annual = number of trading days in a calender year (252 by default)
  • Days to Expiry = number of days for the life of this option ( for auto calculation
    this is 1 for intraday, 21 for daily and annual when chart TF used)
  • Settlement Source = close price by default, can use another source.
  • Settlement Volume Weighted Average Length = by setting this to >1 then an average
    is used for settlement.
  • Display ### Standard Deviation Levels = select what levels are to be displayed.

Release Notes: Corrected Change of day detection for Intraday TFs
Corrected -0.75 Label.
Release Notes: Small changes:
  • Changed to only display background fill for upto +/- 1 Stddev.
  • Added option to Display Todays Only Levels.
Release Notes: ...
  • Made changes so that it also work with Renko Charts, BUT only works well with short TF (<=5min) and brick (<=6pip).
  • Added Option to display Previous Day's High Low Levels.
  • Added Option to display Current Day's High Low Levels.
  • Changed 0.75 level to 0.7 level.
  • Shortened short title to "HVSD" for easier visual when Indicator Labels are used.
Release Notes: ...
  • Modified the way displaying "Only Today" levels, now only show up within the current days price action.

Release Notes: Efficiency Update
  • Improved efficiency by reducing the number of plot lines required by adding "style=2" (Line with Breaks) to the plot options.
  • Added fill colour for 2nd and 3rd Stddevs.

Release Notes: Minor update
  • Corrected no History flag "nohist" calculation, would misread the number of days of data left in the history.
Ta bort från favoritskript Lägg till som favoritskript


Long waiting for this script to be here in TV. Thanks JustUncleL for your effort and generosity making this available for the whole community. Each line represents the EXPECTED move of the price based on the standard deviation formula using the historical volatility data of the underlying. Just drop the indicator on any chart and see for your self how nicely the price has reacted when has reached those lines. Nicely done UncleL thank you very much!
+3 Svara
Question: if you state: // get the Daily Settlement

settlement = sLength==1? src : vwma(src,sLength)
settlement := newDay ? settlement : nz(settlement)

Then you call:

// Calculate STDdev over life of the option (generally this is one day for 5min to 60min TFs,
// and 21 days for Daily TF)
stdhv = 0.0
DaystoExpire = DaystoExpire_==0? isintraday? useDaily? 1 : min(annual,1440/interval) : 21 : DaystoExpire_
stdhv := newDay? settlement*hv*sqrt(DaystoExpire/annual) : nz(stdhv)

To which of the settlements then the program is referring to?

JustUncleL syracusepro
@syracusepro, Settlement is generally the last close (src) value of the previous Day, there is an option to create a volume weighted average of close instead. So basically the value for settlement used in subsequent calculations is always the same until the next change of Day.
syracusepro JustUncleL
@JustUncleL, Thanks a lot.
Very very nice work.

Hopefully it can work on indices in the future. Thank you!
JustUncleL edin228
@edin228, I have updated the script with a correction on new Day detection. This update now seems to work OK on indices better, give it a try. I had a bit of trouble getting the new day detection to work until I added the flags barmerge.gaps_off and barmerge.lookahead_on to the security call for Daily time.
edin228 JustUncleL
@JustUncleL, Works perfectly! thank you very much, excellent work
It is start = security(tickerid,"D", time) such as NY trading start time and then
it is newDay = isintraday ? hour(time)==hour(start) and minute(time)==minute(start) : dayofmonth(time)<dayofmonth(time) such as time from start trading time to time before end if day?

JustUncleL syracusepro
@syracusepro, Yes, however, I have now changed the new day detection in the latest correction. The old code did not always work when there is a gap in the data stream at the start of day.
Hem Aktie-screener Forex-screener Krypto-screener Ekonomisk kalender Hur det fungerar Diagramfunktioner Priser Tipsa en vän Ordningsregler Hjälpcenter Webbsidor och mäklarlösningar Widgets Diagramlösningar Lightweight Charting Library Blogg och nyheter Twitter
Profil Profilinställningar Konto och fakturering Hänvisade vänner Mynt Mina kölappar Hjälpcenter Publicerade idéer Följare Följer Privata meddelanden Chatt Logga ut