mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-03 19:57:44 +00:00
24e86d762a
- Updated BBWN, BBWP, CCV, CV, CVI, EWMA, GKV, HLV, HV, Jvolty, JVOLTYN, MASSI, NATR, RSV, RV, RVI, TR, UI, VOV, VR, YZV indicators with documentation links. - Added documentation links for Aberration, Acceleration Bands, Andrews' Pitchfork, Adaptive Price Zone, ATR Bands, Bollinger Bands, Center of Gravity, Donchian Channels, Decay Min-Max Channel, Detrended Synthetic Price, EACP, EBSW, HOMOD, Jurik Volatility Bands, Keltner Channel, MA Envelope, Min-Max Channel, Price Channel, Regression Channels, Standard Deviation Channel, Stoller Average Range Channel, Super Trend Bands, Ultimate Bands, Ultimate Channel, VWAP Bands, and VWAP with Standard Deviation Bands.
31 lines
1.1 KiB
Plaintext
31 lines
1.1 KiB
Plaintext
// The MIT License (MIT)
|
|
// © mihakralj
|
|
//@version=6
|
|
indicator("Percentage Change (CHANGE)", "CHANGE", overlay=false, format=format.percent)
|
|
|
|
//@function Calculates the percentage change of a source series over a specified length using the history referencing operator for efficiency.
|
|
//@param source The source series (e.g. close price).
|
|
//@param length The lookback period (number of bars). Must be > 0.
|
|
//@returns float The percentage change over the specified length. Returns `na` if the historical value is `na` or zero.
|
|
//@optimized Uses direct history access `source[length]` instead of array manipulation.
|
|
change(float source, int length) =>
|
|
if length <= 0
|
|
runtime.error("Length must be greater than 0")
|
|
float oldValue = source[length]
|
|
if na(oldValue) or oldValue == 0
|
|
na
|
|
else
|
|
(source / oldValue - 1) // Already a percentage, Pine handles plotting format
|
|
|
|
// ---------- Main loop ----------
|
|
|
|
// Inputs
|
|
i_source = input.source(close, "Source")
|
|
i_length = input.int(1, "Length", minval = 1)
|
|
|
|
// Calculation
|
|
result = change(i_source, i_length)
|
|
|
|
// Plot
|
|
plot(result, "Change %", color.blue, color=color.yellow, linewidth=2)
|