IndicatorsLibrary "Indicators"
this has a calculation for the most used indicators.
macd4C(fastMa, slowMa)
this calculates macd 4c
Parameters:
fastMa (simple int) : is the period for the fast ma. the minimum value is 7
slowMa (simple int) : is the period for the slow ma. the minimum value is 7
Returns: the macd 4c value for the current bar
rsi(rsiSourceInput, rsiLengthInput)
this calculates rsi
Parameters:
rsiSourceInput (float) : is the source for the rsi
rsiLengthInput (simple int) : is the period for the rsi
Returns: the rsi value for the current bar
ao(source, fastPeriod, slowPeriod)
this calculates ao
Parameters:
source (float) : is the source for the ao
fastPeriod (int) : is the period for the fast ma
slowPeriod (int) : is the period for the slow ma
Returns: the ao value for the current bar
kernelAoOscillator(kernelFastLookback, kernelSlowLookback, kernelFastWeight, kernelSlowWeight, kernelFastRegressionStart, kernelSlowRegressionStart, kernelFastSmoothPeriod, kernelSlowSmoothPeriod, kernelFastSmooth, kernelSlowSmooth, source)
this calculates our own kernel ao oscillator which we made
Parameters:
kernelFastLookback (simple int)
kernelSlowLookback (simple int)
kernelFastWeight (simple float)
kernelSlowWeight (simple float)
kernelFastRegressionStart (simple int)
kernelSlowRegressionStart (simple int)
kernelFastSmoothPeriod (int)
kernelSlowSmoothPeriod (int)
kernelFastSmooth (bool)
kernelSlowSmooth (bool)
source (float) : is the source for the ao
Returns: the kernel ao oscillator value for the current bar, the colors for both the fast and slow kernel, the fast & slow kernel
signalLineKernel(lag, h, r, x_0, smoothColors, _src, c_bullish, c_bearish)
Parameters:
lag (int)
h (float)
r (float)
x_0 (int)
smoothColors (bool)
_src (float)
c_bullish (color)
c_bearish (color)
zigzagCalc(Depth, Deviation, Backstep, repaint, Show_zz, line_thick, text_color)
Parameters:
Depth (int)
Deviation (int)
Backstep (int)
repaint (bool)
Show_zz (bool)
line_thick (int)
text_color (color)
在脚本中搜索"text"
Asay (1982) Margined Futures Option Pricing Model [Loxx]Asay (1982) Margined Futures Option Pricing Model is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". This version is to price Options on Futures where premium is fully margined. This means the Risk-free Rate, dividend, and cost to carry are all zero. The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDvol, Speed
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The Black-Scholes-Merton model can be "generalized" by incorporating a cost-of-carry rate b. This model can be used to price European options on stocks, stocks paying a continuous dividend yield, options on futures , and currency options:
c = S * e^((b - r) * T) * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(-d2) - S * e^((b - r) * T) * N(-d1)
where
d1 = (log(S / X) + (b + v^2 / 2) * T) / (v * T^0.5)
d2 = d1 - v * T^0.5
b = r ... gives the Black and Scholes (1973) stock option model.
b = r — q ... gives the Merton (1973) stock option model with continuous dividend yield q.
b = 0 ... gives the Black (1976) futures option model.
b = 0 and r = 0 ... gives the Asay (1982) margined futures option model. <== this is the one used for this indicator!
b = r — rf ... gives the Garman and Kohlhagen (1983) currency option model.
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
d = dividend yield
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Black-76 Options on Futures [Loxx]Black-76 Options on Futures is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". This version is to price Options on Futures. The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDvol, Speed
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Rate/Carry Greeks: Rho futures option
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The Black-Scholes-Merton model can be "generalized" by incorporating a cost-of-carry rate b. This model can be used to price European options on stocks, stocks paying a continuous dividend yield, options on futures , and currency options:
c = S * e^((b - r) * T) * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(-d2) - S * e^((b - r) * T) * N(-d1)
where
d1 = (log(S / X) + (b + v^2 / 2) * T) / (v * T^0.5)
d2 = d1 - v * T^0.5
b = r ... gives the Black and Scholes (1973) stock option model.
b = r — q ... gives the Merton (1973) stock option model with continuous dividend yield q.
b = 0 ... gives the Black (1976) futures option model. <== this is the one used for this indicator!
b = 0 and r = 0 ... gives the Asay (1982) margined futures option model.
b = r — rf ... gives the Garman and Kohlhagen (1983) currency option model.
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
d = dividend yield
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Garman and Kohlhagen (1983) for Currency Options [Loxx]Garman and Kohlhagen (1983) for Currency Options is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". This version of BSMOPM is to price Currency Options. The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDSpot/speed, DGammaDvol/Zomma
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP, Speed
Theta Greeks: Theta
Rate/Carry Greeks: Rho, Rho futures option, Carry Rho, Phi/Rho2
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing for Currency Options
The Garman and Kohlhagen (1983) modified Black-Scholes model can be used to price European currency options; see also Grabbe (1983). The model is mathematically equivalent to the Merton (1973) model presented earlier. The only difference is that the dividend yield is replaced by the risk-free rate of the foreign currency rf:
c = S * e^(-rf * T) * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(-d2) - S * e^(-rf * T) * N(-d1)
where
d1 = (log(S / X) + (r - rf + v^2 / 2) * T) / (v * T^0.5)
d2 = d1 - v * T^0.5
For more information on currency options, see DeRosa (2000)
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
rf = Risk-free rate of the foreign currency
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Related indicators:
BSM OPM 1973 w/ Continuous Dividend Yield
Black-Scholes 1973 OPM on Non-Dividend Paying Stocks
Generalized Black-Scholes-Merton w/ Analytical Greeks
Generalized Black-Scholes-Merton Option Pricing Formula
Sprenkle 1964 Option Pricing Model w/ Num. Greeks
Modified Bachelier Option Pricing Model w/ Num. Greeks
Bachelier 1900 Option Pricing Model w/ Numerical Greeks
BSM OPM 1973 w/ Continuous Dividend Yield [Loxx]Generalized Black-Scholes-Merton w/ Analytical Greeks is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDSpot/speed, DGammaDvol/Zomma
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Rate/Carry Greeks: Rho, Rho futures option, Carry Rho, Phi/Rho2
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The Black-Scholes-Merton model can be "generalized" by incorporating a cost-of-carry rate b. This model can be used to price European options on stocks, stocks paying a continuous dividend yield, options on futures, and currency options:
c = S * e^((b - r) * T) * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(-d2) - S * e^((b - r) * T) * N(-d1)
where
d1 = (log(S / X) + (b + v^2 / 2) * T) / (v * T^0.5)
d2 = d1 - v * T^0.5
b = r ... gives the Black and Scholes (1973) stock option model.
b = r — q ... gives the Merton (1973) stock option model with continuous dividend yield q. <== this is the one used for this indicator!
b = 0 ... gives the Black (1976) futures option model.
b = 0 and r = 0 ... gives the Asay (1982) margined futures option model.
b = r — rf ... gives the Garman and Kohlhagen (1983) currency option model.
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
d = dividend yield
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Black-Scholes 1973 OPM on Non-Dividend Paying Stocks [Loxx]Black-Scholes 1973 OPM on Non-Dividend Paying Stocks is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. Making b equal to r yields the BSM model where dividends are not considered. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton ( BSM ) formula. For our purposes here are, Analytical Greeks are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDSpot/speed, DGammaDvol/Zomma
Vega Greeks: Vega , DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Rate/Carry Greeks: Rho
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The BSM formula and its binomial counterpart may easily be the most used "probability model/tool" in everyday use — even if we con- sider all other scientific disciplines. Literally tens of thousands of people, including traders, market makers, and salespeople, use option formulas several times a day. Hardly any other area has seen such dramatic growth as the options and derivatives businesses. In this chapter we look at the various versions of the basic option formula. In 1997 Myron Scholes and Robert Merton were awarded the Nobel Prize (The Bank of Sweden Prize in Economic Sciences in Memory of Alfred Nobel). Unfortunately, Fischer Black died of cancer in 1995 before he also would have received the prize.
It is worth mentioning that it was not the option formula itself that Myron Scholes and Robert Merton were awarded the Nobel Prize for, the formula was actually already invented, but rather for the way they derived it — the replicating portfolio argument, continuous- time dynamic delta hedging, as well as making the formula consistent with the capital asset pricing model (CAPM). The continuous dynamic replication argument is unfortunately far from robust. The popularity among traders for using option formulas heavily relies on hedging options with options and on the top of this dynamic delta hedging, see Higgins (1902), Nelson (1904), Mello and Neuhaus (1998), Derman and Taleb (2005), as well as Haug (2006) for more details on this topic. In any case, this book is about option formulas and not so much about how to derive them.
Provided here are the various versions of the Black-Scholes-Merton formula presented in the literature. All formulas in this section are originally derived based on the underlying asset S follows a geometric Brownian motion
dS = mu * S * dt + v * S * dz
where t is the expected instantaneous rate of return on the underlying asset, a is the instantaneous volatility of the rate of return, and dz is a Wiener process.
The formula derived by Black and Scholes (1973) can be used to value a European option on a stock that does not pay dividends before the option's expiration date. Letting c and p denote the price of European call and put options, respectively, the formula states that
c = S * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(d2) - S * N(d1)
where
d1 = (log(S / X) + (r + v^2 / 2) * T) / (v * T^0.5)
d2 = (log(S / X) + (r - v^2 / 2) * T) / (v * T^0.5) = d1 - v * T^0.5
**This version of the Black-Scholes formula can also be used to price American call options on a non-dividend-paying stock, since it will never be optimal to exercise the option before expiration.**
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
b = Cost of carry
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
Generalized Black-Scholes-Merton w/ Analytical Greeks [Loxx]Generalized Black-Scholes-Merton w/ Analytical Greeks is an adaptation of the Black-Scholes-Merton Option Pricing Model including Analytical Greeks and implied volatility calculations. The following information is an excerpt from Espen Gaarder Haug's book "Option Pricing Formulas". The options sensitivities (Greeks) are the partial derivatives of the Black-Scholes-Merton (BSM) formula. Analytical Greeks for our purposes here are broken down into various categories:
Delta Greeks: Delta, DDeltaDvol, Elasticity
Gamma Greeks: Gamma, GammaP, DGammaDSpot/speed, DGammaDvol/Zomma
Vega Greeks: Vega, DVegaDvol/Vomma, VegaP
Theta Greeks: Theta
Rate/Carry Greeks: Rho, Rho futures option, Carry Rho, Phi/Rho2
Probability Greeks: StrikeDelta, Risk Neutral Density
(See the code for more details)
Black-Scholes-Merton Option Pricing
The BSM formula and its binomial counterpart may easily be the most used "probability model/tool" in everyday use — even if we con- sider all other scientific disciplines. Literally tens of thousands of people, including traders, market makers, and salespeople, use option formulas several times a day. Hardly any other area has seen such dramatic growth as the options and derivatives businesses. In this chapter we look at the various versions of the basic option formula. In 1997 Myron Scholes and Robert Merton were awarded the Nobel Prize (The Bank of Sweden Prize in Economic Sciences in Memory of Alfred Nobel). Unfortunately, Fischer Black died of cancer in 1995 before he also would have received the prize.
It is worth mentioning that it was not the option formula itself that Myron Scholes and Robert Merton were awarded the Nobel Prize for, the formula was actually already invented, but rather for the way they derived it — the replicating portfolio argument, continuous- time dynamic delta hedging, as well as making the formula consistent with the capital asset pricing model (CAPM). The continuous dynamic replication argument is unfortunately far from robust. The popularity among traders for using option formulas heavily relies on hedging options with options and on the top of this dynamic delta hedging, see Higgins (1902), Nelson (1904), Mello and Neuhaus (1998), Derman and Taleb (2005), as well as Haug (2006) for more details on this topic. In any case, this book is about option formulas and not so much about how to derive them.
Provided here are the various versions of the Black-Scholes-Merton formula presented in the literature. All formulas in this section are originally derived based on the underlying asset S follows a geometric Brownian motion
dS = mu * S * dt + v * S * dz
where t is the expected instantaneous rate of return on the underlying asset, a is the instantaneous volatility of the rate of return, and dz is a Wiener process.
The formula derived by Black and Scholes (1973) can be used to value a European option on a stock that does not pay dividends before the option's expiration date. Letting c and p denote the price of European call and put options, respectively, the formula states that
c = S * N(d1) - X * e^(-r * T) * N(d2)
p = X * e^(-r * T) * N(d2) - S * N(d1)
where
d1 = (log(S / X) + (r + v^2 / 2) * T) / (v * T^0.5)
d2 = (log(S / X) + (r - v^2 / 2) * T) / (v * T^0.5) = d1 - v * T^0.5
Inputs
S = Stock price.
X = Strike price of option.
T = Time to expiration in years.
r = Risk-free rate
b = Cost of carry
v = Volatility of the underlying asset price
cnd (x) = The cumulative normal distribution function
nd(x) = The standard normal density function
convertingToCCRate(r, cmp ) = Rate compounder
gImpliedVolatilityNR(string CallPutFlag, float S, float x, float T, float r, float b, float cm , float epsilon) = Implied volatility via Newton Raphson
gBlackScholesImpVolBisection(string CallPutFlag, float S, float x, float T, float r, float b, float cm ) = implied volatility via bisection
Implied Volatility: The Bisection Method
The Newton-Raphson method requires knowledge of the partial derivative of the option pricing formula with respect to volatility ( vega ) when searching for the implied volatility . For some options (exotic and American options in particular), vega is not known analytically. The bisection method is an even simpler method to estimate implied volatility when vega is unknown. The bisection method requires two initial volatility estimates (seed values):
1. A "low" estimate of the implied volatility , al, corresponding to an option value, CL
2. A "high" volatility estimate, aH, corresponding to an option value, CH
The option market price, Cm , lies between CL and cH . The bisection estimate is given as the linear interpolation between the two estimates:
v(i + 1) = v(L) + (c(m) - c(L)) * (v(H) - v(L)) / (c(H) - c(L))
Replace v(L) with v(i + 1) if c(v(i + 1)) < c(m), or else replace v(H) with v(i + 1) if c(v(i + 1)) > c(m) until |c(m) - c(v(i + 1))| <= E, at which point v(i + 1) is the implied volatility and E is the desired degree of accuracy.
Implied Volatility: Newton-Raphson Method
The Newton-Raphson method is an efficient way to find the implied volatility of an option contract. It is nothing more than a simple iteration technique for solving one-dimensional nonlinear equations (any introductory textbook in calculus will offer an intuitive explanation). The method seldom uses more than two to three iterations before it converges to the implied volatility . Let
v(i + 1) = v(i) + (c(v(i)) - c(m)) / (dc / dv (i))
until |c(m) - c(v(i + 1))| <= E at which point v(i + 1) is the implied volatility , E is the desired degree of accuracy, c(m) is the market price of the option, and dc/ dv (i) is the vega of the option evaluaated at v(i) (the sensitivity of the option value for a small change in volatility ).
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen
StapleIndicatorsLibrary "StapleIndicators"
This Library provides some common indicators commonly referenced from other studies in Pine Script
squeeze(bbSrc, bbPeriod, bbDev, kcSrc, kcPeriod, kcATR, signalPeriod) Volatility Squeeze
Parameters:
bbSrc : (Optional) Bollinger Bands Source. By default close
bbPeriod : (Optional) Bollinger Bands Period. By default 20
bbDev : (Optional) Bollinger Bands Standard Deviation. By default 2.0
kcSrc : (Optional) Keltner Channel Source. By default close
kcPeriod : (Optional) Keltner Channel Period. By default 20
kcATR : (Optional) Keltner Channel ATR Multiplier. By default 1.5
signalPeriod : (Optional) Keltner Channel ATR Multiplier. By default 1.5
Returns:
adx(diPeriod, adxPeriod, signalPeriod, adxTier1, adxTier2, adxTier3) ADX: Average Directional Index
Parameters:
diPeriod : (Optional) Directional Indicator Period. By default 14
adxPeriod : (Optional) ADX Smoothing. By default 14
signalPeriod : (Optional) Signal Period. By default 13
adxTier1 : (Optional) ADX Tier #1 Level. By default 20
adxTier2 : (Optional) ADX Tier #2 Level. By default 15
adxTier3 : (Optional) ADX Tier #3 Level. By default 10
Returns:
smaPreset(srcMa) Delivers a set of frequently used Simple Moving Averages
Parameters:
srcMa : (Optional) MA Source. By default 'close'
Returns:
emaPreset(srcMa) Delivers a set of frequently used Exponential Moving Averages
Parameters:
srcMa : (Optional) MA Source. By default 'close'
Returns:
maSelect(ma, srcMa) Filters and outputs the selected MA
Parameters:
ma : (Optional) MA text. By default 'Ema-21'
srcMa : (Optional) MA Source. By default 'close'
Returns: maSelected
periodAdapt(modeAdaptative, src, maxLen, minLen) Adaptative Period
Parameters:
modeAdaptative : (Optional) Adaptative Mode. By default 'Average'
src : (Optional) Source. By default 'close'
maxLen : (Optional) Max Period. By default '60'
minLen : (Optional) Min Period. By default '4'
Returns: periodAdaptative
azlema(modeAdaptative, srcMa) Azlema: Adaptative Zero-Lag Ema
Parameters:
modeAdaptative : (Optional) Adaptative Mode. By default 'Average'
srcMa : (Optional) MA Source. By default 'close'
Returns: azlema
ssma(lsmaVar, srcMa, periodMa) SSMA: Smooth Simple MA
Parameters:
lsmaVar : Linear Regression Curve.
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '13'
Returns: ssma
jvf(srcMa, periodMa) Jurik Volatility Factor
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
Returns:
jBands(srcMa, periodMa) Jurik Bands
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
Returns:
jma(srcMa, periodMa, phase) Jurik MA (JMA)
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
phase : (Optional) Phase. By default '50'
Returns: jma
maCustom(ma, srcMa, periodMa, lrOffset, almaOffset, almaSigma, jmaPhase, azlemaMode) Creates a custom Moving Average
Parameters:
ma : (Optional) MA text. By default 'Ema'
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '13'
lrOffset : (Optional) Linear Regression Offset. By default '0'
almaOffset : (Optional) Alma Offset. By default '0.85'
almaSigma : (Optional) Alma Sigma. By default '6'
jmaPhase : (Optional) JMA Phase. By default '50'
azlemaMode : (Optional) Azlema Adaptative Mode. By default 'Average'
Returns: maTF
3B-Play Finder1 - Objective
2 - How to use (Theory)
3 - How to use (Grade System)
4 - Inputs
5 - Extras and Alerts
6 - Notes
Objective
This script aims to mark 3 Bar play patterns (both short and long) by identifying them on the chart, with an arrow pointing up from long and down for short. Aswell, setting alerts based on grade.
Following the base concept, this script comes with a "grade" system (A, B, C), which aims to classify 3B-Play according to input parameters.
2 - How to use (Theory)
The pattern is described by a wide range Ignite bar followed by a narrow resting bar.
Long
Given a 3 Bar play pattern, with a wide range green bar, the entry point should be above the ignite and narrow bar wicks (high) with stop loss set below the resting bar wick low but within ignite wide range bar.
The exit depends on the chart analysis, and there is no set rule for it.
Short
Similar to long but is with a wide range red bar and entry is defined on wick low and stop-loss at wick high.
3 - How to use (Grade System)
Since 3B-play come in all sort of shapes, some are "textbook" perfect, others a bit more "loose". I set a grading system, to differentiate each one.
The way the 3 Bar play quality is determined is based on the percentage size of the resting bar in relation to igniting bar size, starting from de close. An example of how this works is the following. Note: enabling the extra draws lines helps visually to adjust the grades to your preference.
4 - Inputs
3B Quality section
Enable/disable each grade.
CONTROL LONG / SHORT
Set the percentage values for each grade.
Extras
Enable/Disable extra plots.
5 - Extras and Alerts
This script comes with an extra section, enabling it, draws lines on the max and min values, as well, showing the values in text and the set percentage.
Also, you can set alerts based on the grade and short/long, note you should set the alert to bar close to avoid pre-trigger warnings.
6 - Notes
The script can be shorted a lot, by only looking for a single 3 bar play, to less than 30 lines.
Custom Checklist# Custom Checklist - Trading Preparation & Reminders
A fully customizable checklist overlay indicator for TradingView that helps traders maintain discipline and follow their trading routine systematically.
## 🎯 Purpose
This indicator serves as a visual reminder system on your charts to ensure you complete all necessary analysis steps before entering a trade. Perfect for traders who want to maintain consistency and avoid emotional or rushed trading decisions.
## ✨ Key Features
- **20 Customizable Lines**: Create your own checklist items with any text you need
- **Flexible Display Options**:
- Show/hide title header
- Toggle entire checklist on/off
- Position anywhere on chart (9 positions available)
- Adjustable text size (tiny to huge)
- **Symbol Filtering**: Option to show checklist only on specific symbols (BTC/USD, GOLD, SPX500, USOIL)
- **Customizable Appearance**:
- Background color
- Text color
- Border color
- Transparency controls
- **Clean Interface**: Empty by default - add only the items you need
## 📋 Use Cases
- **Morning Routine**: Daily market preparation checklist
- **Trade Entry Rules**: Verify all setup conditions are met
- **Risk Management**: Confirm stop-loss, position size, and exit strategy
- **Multi-Timeframe Analysis**: Ensure you checked all required timeframes
- **Technical Analysis**: Track which indicators and patterns you've reviewed
- **News & Events**: Remember to check economic calendar and news
- **Personal Rules**: Your custom trading rules and reminders
## 🎨 Customization
Every aspect is customizable:
- All 20 lines can be edited to your needs
- Only non-empty lines are displayed
- Table position adjustable to any corner or middle position
- Color scheme fully customizable to match your chart theme
- Text size scalable for different screen sizes
## 💡 How to Use
1. Add indicator to your chart
2. Open Settings > Checklist Items
3. Fill in your checklist items (Line 1, Line 2, etc.)
4. Customize colors and position in Display Settings
5. Optional: Enable "Show Only on Specific Symbols" to show on select instruments
## 🔧 Display Settings
- **Checklist Title**: Custom header for your checklist
- **Show Title Header**: Toggle title display
- **Show Checklist**: Master on/off switch
- **Symbol Filter**: Restrict display to specific trading instruments
- **Position**: 9 placement options (corners and middle positions)
- **Text Size**: 5 size options (tiny, small, normal, large, huge)
- **Colors**: Background, text, and border fully customizable
## 📝 Example Checklist Ideas
**Swing Trading:**
- Support/Resistance levels identified
- Trend direction confirmed
- Volume analysis completed
- RSI/MACD signals checked
- Risk/Reward ratio calculated
**Day Trading:**
- Pre-market review done
- Key levels marked
- Economic calendar checked
- Trading plan written
- Position size calculated
**Technical Analysis:**
- Multiple timeframe alignment
- Chart patterns identified
- Moving averages reviewed
- Fibonacci levels drawn
- Volume profile analyzed
## ⚙️ Technical Details
- Pine Script v6
- Overlay indicator (displays on main chart)
- Lightweight - no complex calculations
- No repainting
- Works on all timeframes and instruments
## 🎓 Perfect For
- Beginner traders learning systematic analysis
- Experienced traders maintaining discipline
- Anyone who wants visual trading reminders
- Traders following multi-step strategies
- Those prone to FOMO or emotional trading
---
**Note**: This is a visual tool only. It does not generate trading signals or perform analysis. It serves as a reminder checklist to help you follow your own trading process consistently.
Custom Checklist# Custom Checklist - Trading Preparation & Reminders
A fully customizable checklist overlay indicator for TradingView that helps traders maintain discipline and follow their trading routine systematically.
## 🎯 Purpose
This indicator serves as a visual reminder system on your charts to ensure you complete all necessary analysis steps before entering a trade. Perfect for traders who want to maintain consistency and avoid emotional or rushed trading decisions.
## ✨ Key Features
- **20 Customizable Lines**: Create your own checklist items with any text you need
- **Flexible Display Options**:
- Show/hide title header
- Toggle entire checklist on/off
- Position anywhere on chart (9 positions available)
- Adjustable text size (tiny to huge)
- **Symbol Filtering**: Option to show checklist only on specific symbols (BTC/USD, GOLD, SPX500, USOIL)
- **Customizable Appearance**:
- Background color
- Text color
- Border color
- Transparency controls
- **Clean Interface**: Empty by default - add only the items you need
## 📋 Use Cases
- **Morning Routine**: Daily market preparation checklist
- **Trade Entry Rules**: Verify all setup conditions are met
- **Risk Management**: Confirm stop-loss, position size, and exit strategy
- **Multi-Timeframe Analysis**: Ensure you checked all required timeframes
- **Technical Analysis**: Track which indicators and patterns you've reviewed
- **News & Events**: Remember to check economic calendar and news
- **Personal Rules**: Your custom trading rules and reminders
## 🎨 Customization
Every aspect is customizable:
- All 20 lines can be edited to your needs
- Only non-empty lines are displayed
- Table position adjustable to any corner or middle position
- Color scheme fully customizable to match your chart theme
- Text size scalable for different screen sizes
## 💡 How to Use
1. Add indicator to your chart
2. Open Settings > Checklist Items
3. Fill in your checklist items (Line 1, Line 2, etc.)
4. Customize colors and position in Display Settings
5. Optional: Enable "Show Only on Specific Symbols" to show on select instruments
## 🔧 Display Settings
- **Checklist Title**: Custom header for your checklist
- **Show Title Header**: Toggle title display
- **Show Checklist**: Master on/off switch
- **Symbol Filter**: Restrict display to specific trading instruments
- **Position**: 9 placement options (corners and middle positions)
- **Text Size**: 5 size options (tiny, small, normal, large, huge)
- **Colors**: Background, text, and border fully customizable
## 📝 Example Checklist Ideas
**Swing Trading:**
- Support/Resistance levels identified
- Trend direction confirmed
- Volume analysis completed
- RSI/MACD signals checked
- Risk/Reward ratio calculated
**Day Trading:**
- Pre-market review done
- Key levels marked
- Economic calendar checked
- Trading plan written
- Position size calculated
**Technical Analysis:**
- Multiple timeframe alignment
- Chart patterns identified
- Moving averages reviewed
- Fibonacci levels drawn
- Volume profile analyzed
## ⚙️ Technical Details
- Pine Script v6
- Overlay indicator (displays on main chart)
- Lightweight - no complex calculations
- No repainting
- Works on all timeframes and instruments
## 🎓 Perfect For
- Beginner traders learning systematic analysis
- Experienced traders maintaining discipline
- Anyone who wants visual trading reminders
- Traders following multi-step strategies
- Those prone to FOMO or emotional trading
---
**Note**: This is a visual tool only. It does not generate trading signals or perform analysis. It serves as a reminder checklist to help you follow your own trading process consistently.
Ehlers Phasor Analysis (PHASOR)# PHASOR: Phasor Analysis (Ehlers)
## Overview and Purpose
The Phasor Analysis indicator, developed by John Ehlers, represents an advanced cycle analysis tool that identifies the phase of the dominant cycle component in a time series through complex signal processing techniques. This sophisticated indicator uses correlation-based methods to determine the real and imaginary components of the signal, converting them to a continuous phase angle that reveals market cycle progression. Unlike traditional oscillators, the Phasor provides unwrapped phase measurements that accumulate continuously, offering unique insights into market timing and cycle behavior.
## Core Concepts
* **Complex Signal Analysis** — Uses real and imaginary components to determine cycle phase
* **Correlation-Based Detection** — Employs Ehlers' correlation method for robust phase estimation
* **Unwrapped Phase Tracking** — Provides continuous phase accumulation without discontinuities
* **Anti-Regression Logic** — Prevents phase angle from moving backward under specific conditions
Market Applications:
* **Cycle Timing** — Precise identification of cycle peaks and troughs
* **Market Regime Analysis** — Distinguishes between trending and cycling market conditions
* **Turning Point Detection** — Advanced warning system for potential market reversals
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
|-----------|---------|----------|----------------|
| Period | 28 | Fixed cycle period for correlation analysis | Match to expected dominant cycle length |
| Source | Close | Price series for phase calculation | Use typical price or other smoothed series |
| Show Derived Period | false | Display calculated period from phase rate | Enable for adaptive period analysis |
| Show Trend State | false | Display trend/cycle state variable | Enable for regime identification |
## Calculation and Mathematical Foundation
**Technical Formula:**
**Stage 1: Correlation Analysis**
For period $n$ and source $x_t$:
Real component correlation with cosine wave:
$$R = \frac{n \sum x_t \cos\left(\frac{2\pi t}{n}\right) - \sum x_t \sum \cos\left(\frac{2\pi t}{n}\right)}{\sqrt{D_{cos}}}$$
Imaginary component correlation with negative sine wave:
$$I = \frac{n \sum x_t \left(-\sin\left(\frac{2\pi t}{n}\right)\right) - \sum x_t \sum \left(-\sin\left(\frac{2\pi t}{n}\right)\right)}{\sqrt{D_{sin}}}$$
where $D_{cos}$ and $D_{sin}$ are normalization denominators.
**Stage 2: Phase Angle Conversion**
$$\theta_{raw} = \begin{cases}
90° - \arctan\left(\frac{I}{R}\right) \cdot \frac{180°}{\pi} & \text{if } R \neq 0 \\
0° & \text{if } R = 0, I > 0 \\
180° & \text{if } R = 0, I \leq 0
\end{cases}$$
**Stage 3: Phase Unwrapping**
$$\theta_{unwrapped}(t) = \theta_{unwrapped}(t-1) + \Delta\theta$$
where $\Delta\theta$ is the normalized phase difference.
**Stage 4: Ehlers' Anti-Regression Condition**
$$\theta_{final}(t) = \begin{cases}
\theta_{final}(t-1) & \text{if regression conditions met} \\
\theta_{unwrapped}(t) & \text{otherwise}
\end{cases}$$
**Derived Calculations:**
Derived Period: $P_{derived} = \frac{360°}{\Delta\theta_{final}}$ (clamped to )
Trend State:
$$S_{trend} = \begin{cases}
1 & \text{if } \Delta\theta \leq 6° \text{ and } |\theta| \geq 90° \\
-1 & \text{if } \Delta\theta \leq 6° \text{ and } |\theta| < 90° \\
0 & \text{if } \Delta\theta > 6°
\end{cases}$$
> 🔍 **Technical Note:** The correlation-based approach provides robust phase estimation even in noisy market conditions, while the unwrapping mechanism ensures continuous phase tracking across cycle boundaries.
## Interpretation Details
* **Phasor Angle (Primary Output):**
- **+90°**: Potential cycle peak region
- **0°**: Mid-cycle ascending phase
- **-90°**: Potential cycle trough region
- **±180°**: Mid-cycle descending phase
* **Phase Progression:**
- Continuous upward movement → Normal cycle progression
- Phase stalling → Potential cycle extension or trend development
- Rapid phase changes → Cycle compression or volatility spike
* **Derived Period Analysis:**
- Period < 10 → High-frequency cycle dominance
- Period 15-40 → Typical swing trading cycles
- Period > 50 → Trending market conditions
* **Trend State Variable:**
- **+1**: Long trend conditions (slow phase change in extreme zones)
- **-1**: Short trend or consolidation (slow phase change in neutral zones)
- **0**: Active cycling (normal phase change rate)
## Applications
* **Cycle-Based Trading:**
- Enter long positions near -90° crossings (cycle troughs)
- Enter short positions near +90° crossings (cycle peaks)
- Exit positions during mid-cycle phases (0°, ±180°)
* **Market Timing:**
- Use phase acceleration for early trend detection
- Monitor derived period for cycle length changes
- Combine with trend state for regime-appropriate strategies
* **Risk Management:**
- Adjust position sizes based on cycle clarity (derived period stability)
- Implement different risk parameters for trending vs. cycling regimes
- Use phase velocity for stop-loss placement timing
## Limitations and Considerations
* **Parameter Sensitivity:**
- Fixed period assumption may not match actual market cycles
- Requires cycle period optimization for different markets and timeframes
- Performance degrades when multiple cycles interfere
* **Computational Complexity:**
- Correlation calculations over full period windows
- Multiple mathematical transformations increase processing requirements
- Real-time implementation requires efficient algorithms
* **Market Conditions:**
- Most effective in markets with clear cyclical behavior
- May provide false signals during strong trending periods
- Requires sufficient historical data for correlation analysis
Complementary Indicators:
* MESA Adaptive Moving Average (cycle-based smoothing)
* Dominant Cycle Period indicators
* Detrended Price Oscillator (cycle identification)
## References
1. Ehlers, J.F. "Cycle Analytics for Traders." Wiley, 2013.
2. Ehlers, J.F. "Cybernetic Analysis for Stocks and Futures." Wiley, 2004.
HTF Cross Breakout [CHE] HTF Cross Breakout — Detects higher timeframe close crossovers for breakout signals, anchors VWAP for trend validation, and flags continuations or traps with visual extensions for delta percent and stop levels.
Summary
This indicator spots moments when the current chart's close price crosses a higher timeframe close, marking potential breakouts only when the current bar shows directional strength. It anchors a volume-weighted average price line from the breakout point to track trend health, updating labels to show if the move continues or reverses into a trap. Extensions add a dotted line linking the breakout level to the current close with percent change display, plus a stop-loss marker at the VWAP end. Signals gain robustness from higher timeframe confirmation and anti-repainting options, reducing noise in live bars compared to simple crossover tools.
Motivation: Why this design?
Traders often face false breakouts from intrabar wiggles on lower timeframes, especially without higher timeframe alignment, leading to whipsaws in volatile sessions. This design uses higher timeframe close as a stable reference for crossover detection, combined with anchored volume weighting to gauge sustained momentum. It addresses these by enforcing bar confirmation and directional filters, providing clearer entry validation and risk points without overcomplicating the chart.
What’s different vs. standard approaches?
Reference baseline
Standard crossover indicators like moving average crosses operate solely on the chart timeframe, ignoring higher timeframe context and lacking volume anchoring.
Architecture differences
- Higher timeframe data pulls via security calls with optional repainting control for stability.
- Anchored VWAP resets at each signal, accumulating from the breakout bar only.
- Label dynamics update in real-time for continuation checks, with extensions for visual delta and stop computation.
- Event-driven line finalization prunes old elements after a set bar extension.
Practical effect
Charts show persistent lines and labels that extend live but finalize cleanly on new events, avoiding clutter. This matters for spotting trap reversals early via label color shifts, and extensions provide quick risk visuals without manual calculations, improving decision speed in trend trades.
How it works (technical)
The indicator first determines a higher timeframe based on user selection, pulling its close price securely. It checks for crossovers or crossunders of the current close against this higher close, but only triggers on confirmed bars with matching directional opens and closes. On a valid event, a horizontal line and label mark the higher close level, while a dashed VWAP line starts accumulating typical price times volume from that bar onward. During the active phase, the breakout line extends to the current bar, the label repositions and updates text based on whether the current close holds above or below the level for bulls or bears. A background tint warns if the close deviates adversely from the current VWAP. Extensions draw a vertical dotted line at the last bar between the breakout level and close, placing a midpoint label with percent difference; separately, a label at the VWAP end shows a computed stop price. Persistent variables track the active state and accumulators, resetting on new events after briefly extending old elements. Repaint risk from security calls is mitigated by confirmed bar gating or user opt-in.
Parameter Guide
Plateau Length (reserved for future, currently unused): Sets a length for potential plateau detection in extensions; default 3, minimum 1. Higher values would increase stability but are not active yet—leave at default to avoid tuning.
Line Width: Controls thickness of breakout, VWAP, and extension lines; default 2, range 1 to 5. Thicker lines improve visibility on busy charts but may obscure price action—use 1 for clean views, 3 or more for emphasis.
+Bars after next HTF event (finalize old, then delete): Extends old lines and labels by this many bars before deletion on new signals; default 20, minimum 0. Shorter extensions keep charts tidy but risk cutting visuals prematurely; longer aids review but builds clutter over time.
Evaluate label only on HTF close (prevents gray traps intrabar): When true, label updates wait for higher timeframe confirmation; default true. Enabling reduces intrabar flips for stabler signals, though it may delay feedback—disable for faster live trading at repaint cost.
Allow Repainting: Permits real-time security data without confirmation offset; default false. False ensures historical accuracy but lags live bars; true speeds updates but can repaint on HTF closes.
Timeframe Type: Chooses HTF method—Auto Timeframe (dynamic steps up), Multiplier (chart multiple), or Manual (fixed string); default Auto Timeframe. Auto adapts to chart scale for convenience; Multiplier suits custom scaling like 5 times current; Manual for precise like 1D on any chart.
Multiplier for Alternate Resolution: Scales chart timeframe when Multiplier type selected; default 5, minimum 1. Values near 1 mimic current resolution for subtle shifts; higher like 10 jumps to broader context, increasing signal rarity.
Manual Resolution: Direct timeframe string like 60 for 1H when Manual type; default 60. Match to trading horizon—shorter for swing, longer for positional—to balance frequency and reliability.
Show Extension 1: Toggles dotted line and delta percent label between breakout level and current close; default true. Disable to simplify for basic use, enable for precise momentum tracking.
Dotted Line Width: Thickness for Extension 1 line; default 2, range 1 to 5. Align with main Line Width for consistency.
Text Size: Size for delta percent label; options tiny, small, normal, large; default normal. Smaller reduces overlap on dense charts; larger aids glance reads.
Decimals for Δ%: Precision in percent change display; default 2, range 0 to 6. Fewer decimals speed reading; more suit low-volatility assets.
Positive Δ Color: Hue for upward percent changes; default lime. Choose contrasting for visibility.
Negative Δ Color: Hue for downward percent changes; default red. Pair with positive for quick polarity scan.
Dotted Line Color: Color for Extension 1 line; default gray. Neutral tones blend well; brighter for emphasis.
Background Transparency (0..100): Opacity for delta label background; default 90. Higher values fade for subtlety; lower solidifies for readability.
Show Extension 2: Toggles stop-loss label at VWAP end; default true. Turn off for entry focus only.
Stop Method: Percent from VWAP end or fixed ticks; options Percent, Ticks; default Percent. Percent scales with price levels; Ticks suits tick-based instruments.
Stop %: Distance as fraction of VWAP for Percent method; default 1.0, step 0.05, minimum 0.0. Tighter like 0.5 reduces risk but increases stops; wider like 2.0 allows breathing room.
Stop Ticks: Tick count offset for Ticks method; default 20, minimum 0. Adjust per asset volatility—fewer for tight control.
Price Decimals: Rounding for stop price text; default 4, range 0 to 10. Match syminfo.precision for clean display.
Text Size: Size for stop label; options tiny, small, normal, large; default normal. Scale to chart zoom.
Text Color: Foreground for stop text; default white. Ensure contrast with background.
Inherit VWAP Color (BG tint): Bases stop label background on VWAP hue; default true. True maintains theme; false allows custom black base.
BG Transparency (0..100): Opacity for stop label background; default 0. Zero for no tint; up to 100 for full fade.
Reading & Interpretation
Breakout lines appear green for bullish crosses or red for bearish, extending live until a new event finalizes them briefly then deletes. Labels start blank, updating to Bull Cont. or Bear Cont. in matching colors if holding the level, or gray Bull Trap/Bear Trap on reversal. VWAP dashes yellow for bulls, orange for bears, sloping with accumulated volume weight—deviations trigger faint red background warnings. Extension 1's dotted vertical shows at the last bar, with midpoint label green/red for positive/negative percent from breakout to close. Extension 2 places a left-aligned label at VWAP end with stop price and method note, tinted to VWAP for context.
Practical Workflows & Combinations
For trend following, enter long on green Bull Cont. labels above VWAP with higher highs confirmation, filtering via rising structure; short on red Bear Cont. below. Pair with volume surges or RSI above 50 for bulls to avoid traps. For exits, trail stops using the Extension 2 level, tightening on warnings or gray labels—aggressive on continuations, conservative post-trap. In multi-timeframe setups, use default Auto on 15m charts for 1H signals, scaling multiplier to 4 for daily context on hourly; test on forex/stocks where volume is reliable, avoiding low-liquidity assets.
Behavior, Constraints & Performance
Signals confirm on bar close with HTF gating when strict mode active, but live bars may update if repainting enabled—opt false for backtest fidelity, true for intraday speed. Security calls risk minor repaints on HTF closes, mitigated by confirmation offsets. Resources cap at 1000 bars back, 50 lines/labels total, with event prunes to stay under budgets—no loops, minimal arrays. Limits include VWAP lag in low-volume periods and dependency on accurate HTF data; gaps or holidays may skew anchors.
Sensible Defaults & Quick Tuning
Defaults suit 5m-1H charts on liquid assets: Auto HTF, no repaint, 1% stops. For choppy markets with excess signals, enable strict eval and bump multiplier to 10 for rarer triggers. If sluggish in trends, shorten extend bars to 10 and allow repainting for quicker visuals. On high-vol like crypto, widen stop % to 2.0 and use Ticks method; for stables like indices, tighten to 0.5% and keep Percent.
What this indicator is—and isn’t
This is a signal visualization layer for breakout confirmation and basic risk marking, best as a filter in discretionary setups. It isn’t a standalone system or predictive oracle—combine with price structure, news awareness, and sizing rules for real edges.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino
JK_Traders_Reality_LibLibrary "JK_Traders_Reality_Lib"
This library contains common elements used in Traders Reality scripts
calcPvsra(pvsraVolume, pvsraHigh, pvsraLow, pvsraClose, pvsraOpen, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, darkGreyCandleColor, lightGrayCandleColor)
calculate the pvsra candle color and return the color as well as an alert if a vector candle has apperared.
Situation "Climax"
Bars with volume >= 200% of the average volume of the 10 previous chart TFs, or bars
where the product of candle spread x candle volume is >= the highest for the 10 previous
chart time TFs.
Default Colors: Bull bars are green and bear bars are red.
Situation "Volume Rising Above Average"
Bars with volume >= 150% of the average volume of the 10 previous chart TFs.
Default Colors: Bull bars are blue and bear are violet.
Parameters:
pvsraVolume (float) : the instrument volume series (obtained from request.sequrity)
pvsraHigh (float) : the instrument high series (obtained from request.sequrity)
pvsraLow (float) : the instrument low series (obtained from request.sequrity)
pvsraClose (float) : the instrument close series (obtained from request.sequrity)
pvsraOpen (float) : the instrument open series (obtained from request.sequrity)
redVectorColor (simple color) : red vector candle color
greenVectorColor (simple color) : green vector candle color
violetVectorColor (simple color) : violet/pink vector candle color
blueVectorColor (simple color) : blue vector candle color
darkGreyCandleColor (simple color) : regular volume candle down candle color - not a vector
lightGrayCandleColor (simple color) : regular volume candle up candle color - not a vector
@return
adr(length, barsBack)
Parameters:
length (simple int) : how many elements of the series to calculate on
barsBack (simple int) : starting possition for the length calculation - current bar or some other value eg last bar
@return adr the adr for the specified lenght
adrHigh(adr, fromDo)
Calculate the ADR high given an ADR
Parameters:
adr (float) : the adr
fromDo (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrHigh the position of the adr high in price
adrLow(adr, fromDo)
Parameters:
adr (float) : the adr
fromDo (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrLow the position of the adr low in price
splitSessionString(sessXTime)
given a session in the format 0000-0100:23456 split out the hours and minutes
Parameters:
sessXTime (simple string) : the session time string usually in the format 0000-0100:23456
@return
calcSessionStartEnd(sessXTime, gmt)
calculate the start and end timestamps of the session
Parameters:
sessXTime (simple string) : the session time string usually in the format 0000-0100:23456
gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return
drawOpenRange(sessXTime, sessXcol, showOrX, gmt)
draw open range for a session
Parameters:
sessXTime (simple string) : session string in the format 0000-0100:23456
sessXcol (simple color) : the color to be used for the opening range box shading
showOrX (simple bool) : boolean flag to toggle displaying the opening range
gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return void
drawSessionHiLo(sessXTime, showRectangleX, showLabelX, sessXcolLabel, sessXLabel, gmt, sessionLineStyle)
Parameters:
sessXTime (simple string) : session string in the format 0000-0100:23456
showRectangleX (simple bool)
showLabelX (simple bool)
sessXcolLabel (simple color) : the color to be used for the hi/low lines and label
sessXLabel (simple string) : the session label text
gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
sessionLineStyle (simple string) : the line stile for the session high low lines
@return void
calcDst()
calculate market session dst on/off flags
@return indicating if DST is on or off for a particular region
timestampPreviousDayOfWeek(previousDayOfWeek, hourOfDay, gmtOffset, oneWeekMillis)
Timestamp any of the 6 previous days in the week (such as last Wednesday at 21 hours GMT)
Parameters:
previousDayOfWeek (simple string) : Monday or Satruday
hourOfDay (simple int) : the hour of the day when psy calc is to start
gmtOffset (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
oneWeekMillis (simple int) : the amount if time for a week in milliseconds
@return the timestamp of the psy level calculation start time
getdayOpen()
get the daily open - basically exchange midnight
@return the daily open value which is float price
newBar(res)
new_bar: check if we're on a new bar within the session in a given resolution
Parameters:
res (simple string) : the desired resolution
@return true/false is a new bar for the session has started
toPips(val)
to_pips Convert value to pips
Parameters:
val (float) : the value to convert to pips
@return the value in pips
rLabel(ry, rtext, rstyle, rcolor, valid, labelXOffset)
a function that draws a right aligned lable for a series during the current bar
Parameters:
ry (float) : series float the y coordinate of the lable
rtext (simple string) : the text of the label
rstyle (simple string) : the style for the lable
rcolor (simple color) : the color for the label
valid (simple bool) : a boolean flag that allows for turning on or off a lable
labelXOffset (int) : how much to offset the label from the current position
rLabelOffset(ry, rtext, rstyle, rcolor, valid, labelOffset)
a function that draws a right aligned lable for a series during the current bar
Parameters:
ry (float) : series float the y coordinate of the lable
rtext (string) : the text of the label
rstyle (simple string) : the style for the lable
rcolor (simple color) : the color for the label
valid (simple bool) : a boolean flag that allows for turning on or off a lable
labelOffset (int)
rLabelLastBar(ry, rtext, rstyle, rcolor, valid, labelXOffset)
a function that draws a right aligned lable for a series only on the last bar
Parameters:
ry (float) : series float the y coordinate of the lable
rtext (string) : the text of the label
rstyle (simple string) : the style for the lable
rcolor (simple color) : the color for the label
valid (simple bool) : a boolean flag that allows for turning on or off a lable
labelXOffset (int) : how much to offset the label from the current position
drawLine(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, xLabelOffset, validTimeFrame)
a function that draws a line and a label for a series
Parameters:
xSeries (float) : series float the y coordinate of the line/label
res (simple string) : the desired resolution controlling when a new line will start
tag (simple string) : the text for the lable
xColor (simple color) : the color for the label
xStyle (simple string) : the style for the line
xWidth (simple int) : the width of the line
xExtend (simple string) : extend the line
isLabelValid (simple bool) : a boolean flag that allows for turning on or off a label
xLabelOffset (int)
validTimeFrame (simple bool) : a boolean flag that allows for turning on or off a line drawn
drawLineDO(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, xLabelOffset, validTimeFrame)
a function that draws a line and a label for the daily open series
Parameters:
xSeries (float) : series float the y coordinate of the line/label
res (simple string) : the desired resolution controlling when a new line will start
tag (simple string) : the text for the lable
xColor (simple color) : the color for the label
xStyle (simple string) : the style for the line
xWidth (simple int) : the width of the line
xExtend (simple string) : extend the line
isLabelValid (simple bool) : a boolean flag that allows for turning on or off a label
xLabelOffset (int)
validTimeFrame (simple bool) : a boolean flag that allows for turning on or off a line drawn
drawPivot(pivotLevel, res, tag, pivotColor, pivotLabelColor, pivotStyle, pivotWidth, pivotExtend, isLabelValid, validTimeFrame, levelStart, pivotLabelXOffset)
draw a pivot line - the line starts one day into the past
Parameters:
pivotLevel (float) : series of the pivot point
res (simple string) : the desired resolution
tag (simple string) : the text to appear
pivotColor (simple color) : the color of the line
pivotLabelColor (simple color) : the color of the label
pivotStyle (simple string) : the line style
pivotWidth (simple int) : the line width
pivotExtend (simple string) : extend the line
isLabelValid (simple bool) : boolean param allows to turn label on and off
validTimeFrame (simple bool) : only draw the line and label at a valid timeframe
levelStart (int) : basically when to start drawing the levels
pivotLabelXOffset (int) : how much to offset the label from its current postion
@return the pivot line series
getPvsraFlagByColor(pvsraColor, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, lightGrayCandleColor)
convert the pvsra color to an internal code
Parameters:
pvsraColor (color) : the calculated pvsra color
redVectorColor (simple color) : the user defined red vector color
greenVectorColor (simple color) : the user defined green vector color
violetVectorColor (simple color) : the user defined violet vector color
blueVectorColor (simple color) : the user defined blue vector color
lightGrayCandleColor (simple color) : the user defined regular up candle color
@return pvsra internal code
updateZones(pvsra, direction, boxArr, maxlevels, pvsraHigh, pvsraLow, pvsraOpen, pvsraClose, transperancy, zoneupdatetype, zonecolor, zonetype, borderwidth, coloroverride, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor)
a function that draws the unrecovered vector candle zones
Parameters:
pvsra (int) : internal code
direction (simple int) : above or below the current pa
boxArr (array) : the array containing the boxes that need to be updated
maxlevels (simple int) : the maximum number of boxes to draw
pvsraHigh (float) : the pvsra high value series
pvsraLow (float) : the pvsra low value series
pvsraOpen (float) : the pvsra open value series
pvsraClose (float) : the pvsra close value series
transperancy (simple int) : the transparencfy of the vecor candle zones
zoneupdatetype (simple string) : the zone update type
zonecolor (simple color) : the zone color if overriden
zonetype (simple string) : the zone type
borderwidth (simple int) : the width of the border
coloroverride (simple bool) : if the color overriden
redVectorColor (simple color) : the user defined red vector color
greenVectorColor (simple color) : the user defined green vector color
violetVectorColor (simple color) : the user defined violet vector color
blueVectorColor (simple color) : the user defined blue vector color
cleanarr(arr)
clean an array from na values
Parameters:
arr (array) : the array to clean
@return if the array was cleaned
calcPsyLevels(oneWeekMillis, showPsylevels, psyType, sydDST)
calculate the psy levels
4 hour res based on how mt4 does it
mt4 code
int Li_4 = iBarShift(NULL, PERIOD_H4, iTime(NULL, PERIOD_W1, Li_0)) - 2 - Offset;
ObjectCreate("PsychHi", OBJ_TREND, 0, Time , iHigh(NULL, PERIOD_H4, iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)), iTime(NULL, PERIOD_W1, 0), iHigh(NULL, PERIOD_H4,
iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)));
so basically because the session is 8 hours and we are looking at a 4 hour resolution we only need to take the highest high an lowest low of 2 bars
we use the gmt offset to adjust the 0000-0800 session to Sydney open which is at 2100 during dst and at 2200 otherwize. (dst - spring foward, fall back)
keep in mind sydney is in the souther hemisphere so dst is oposite of when london and new york go into dst
Parameters:
oneWeekMillis (simple int) : a constant value
showPsylevels (simple bool) : should psy levels be calculated
psyType (simple string) : the type of Psylevels - crypto or forex
sydDST (bool) : is Sydney in DST
@return
adrHiLo(length, barsBack, fromDO)
Parameters:
length (simple int) : how many elements of the series to calculate on
barsBack (simple int) : starting possition for the length calculation - current bar or some other value eg last bar
fromDO (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adr, adrLow and adrHigh - the adr, the position of the adr High and adr Low with respect to price
drawSessionHiloLite(sessXTime, showRectangleX, showLabelX, sessXcolLabel, sessXLabel, gmt, sessionLineStyle, sessXcol)
Parameters:
sessXTime (simple string) : session string in the format 0000-0100:23456
showRectangleX (simple bool)
showLabelX (simple bool)
sessXcolLabel (simple color) : the color to be used for the hi/low lines and label
sessXLabel (simple string) : the session label text
gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
sessionLineStyle (simple string) : the line stile for the session high low lines
sessXcol (simple color) : - the color for the box color that will color the session
@return void
msToHmsString(ms)
converts milliseconds into an hh:mm string. For example, 61000 ms to '0:01:01'
Parameters:
ms (int) : - the milliseconds to convert to hh:mm
@return string - the converted hh:mm string
countdownString(openToday, closeToday, showMarketsWeekends, oneDay)
that calculates how much time is left until the next session taking the session start and end times into account. Note this function does not work on intraday sessions.
Parameters:
openToday (int) : - timestamps of when the session opens in general - note its a series because the timestamp was created using the dst flag which is a series itself thus producing a timestamp series
closeToday (int) : - timestamp of when the session closes in general - note its a series because the timestamp was created using the dst flag which is a series itself thus producing a timestamp series
@return a countdown of when next the session opens or 'Open' if the session is open now
showMarketsWeekends (simple bool)
oneDay (simple int)
countdownStringSyd(sydOpenToday, sydCloseToday, showMarketsWeekends, oneDay)
that calculates how much time is left until the next session taking the session start and end times into account. special case of intraday sessions like sydney
Parameters:
sydOpenToday (int)
sydCloseToday (int)
showMarketsWeekends (simple bool)
oneDay (simple int)
Multi-Symbol and Multi-Timeframe Supertrend Screener [Pineify]Multi-Symbol and Multi-Timeframe Supertrend Screener
Advanced Supertrend screener for TradingView that monitors 6 symbols across 4 timeframes simultaneously. Features customizable ATR periods, visual alerts, and color-coded trend direction displays for efficient market scanning.
Key Features
The Supertrend Screener is a comprehensive multi-symbol market monitoring tool that displays Supertrend indicator signals across multiple assets and timeframes in a single, organized table view. This screener eliminates the need to manually check individual charts by providing real-time trend analysis for up to 6 symbols across 4 different timeframes simultaneously.
How It Works
The screener utilizes the proven Supertrend indicator methodology, which combines Average True Range (ATR) and price action to determine trend direction. The core calculation involves:
Computing the ATR using a customizable period (default: 10)
Applying a multiplication factor (default: 3.0) to create dynamic support/resistance levels
Determining trend direction based on price position relative to these levels
Displaying results through color-coded cells with customizable text labels
The indicator employs the request.security() function to fetch data from multiple symbols and timeframes, ensuring accurate cross-market analysis without chart switching.
Trading Ideas and Insights
This screener excels in several trading scenarios:
Market Overview: Quickly assess overall market sentiment across major cryptocurrencies or forex pairs
Trend Confirmation: Verify trend alignment across multiple timeframes before entering positions
Divergence Spotting: Identify when shorter timeframes diverge from longer-term trends
Opportunity Scanning: Locate assets showing consistent trend direction across all monitored timeframes
Risk Management: Monitor multiple positions simultaneously to spot potential trend reversals
The screener is particularly effective for swing traders and position traders who need to monitor multiple assets without constantly switching between charts.
How Multiple Indicators Work Together
While this screener focuses specifically on the Supertrend indicator, it incorporates several complementary technical analysis components:
ATR Foundation: Uses Average True Range to adapt to market volatility, making the indicator responsive to current market conditions
Multi-Timeframe Analysis: Combines signals from 1-minute, 5-minute, 10-minute, and 30-minute timeframes to provide comprehensive trend perspective
Price Action Integration: The Supertrend calculation inherently incorporates price action by using high, low, and close values
Volatility Adjustment: The ATR-based calculation ensures the indicator adapts to different volatility regimes across various assets
The synergy between these elements creates a robust screening system that accounts for both momentum and volatility , providing more reliable trend identification than single-timeframe analysis.
Unique Aspects
Several features distinguish this screener from standard Supertrend implementations:
Table-Based Display: Presents data in an organized, space-efficient format rather than overlay plots
Customizable Visual Elements: Full control over text labels, colors, and background styling
Multi-Asset Capability: Monitors 6 different symbols simultaneously without performance degradation
Efficient Resource Usage: Optimized code structure minimizes calculation overhead
Professional Presentation: Clean, institutional-grade visual design suitable for trading desks
How to Use
Symbol Configuration: Input your desired symbols in the Symbol section (default includes major crypto pairs)
Timeframe Setup: Configure four timeframes for analysis (default: 1m, 5m, 10m, 30m)
Supertrend Parameters: Adjust the Factor (sensitivity) and ATR Period according to your trading style
Visual Customization: Set custom text labels and colors for up/down trends
Market Analysis: Monitor the table for consistent signals across timeframes and symbols
Interpretation Guide:
- Green cells indicate uptrend (price above Supertrend line)
- Red cells indicate downtrend (price below Supertrend line)
- Look for alignment across multiple timeframes for stronger signal confidence
Customization
The screener offers extensive customization options:
Factor Setting: Adjust sensitivity (higher values = less sensitive, fewer signals)
ATR Period: Modify lookback period for volatility calculation
Text Labels: Customize up/down trend display text
Color Scheme: Full RGB color control for text and background elements
Symbol Selection: Monitor any TradingView-supported symbols
Timeframe Array: Choose any four timeframes for comprehensive analysis
Conclusion
The Supertrend Screener transforms traditional single-chart analysis into an efficient, multi-dimensional market monitoring system. By combining the reliability of the Supertrend indicator with multi-timeframe and multi-symbol capabilities, this tool empowers traders to make more informed decisions with greater market context.
Whether you're managing multiple positions, scanning for new opportunities, or confirming trend direction before entries, this screener provides the comprehensive overview needed for professional trading operations. The clean interface and customizable features make it suitable for traders of all experience levels while maintaining the analytical depth required for serious market analysis.
Perfect for day traders, swing traders, and anyone requiring efficient multi-market trend monitoring in a single view.
Tchwella Stocks Custom WatermarkThis Pine Script v5 indicator adds a customizable watermark to TradingView charts, displaying key stock information while allowing for flexible positioning and formatting.
📌 Features & Functionality:
✅ Custom Positioning:
• Fixed to the top-left corner.
• Adjustable spacing ensures the text is properly aligned.
✅ Displayed Information (Configurable):
• Company Name & Market Cap (Optional: Shows dynamically calculated market cap)
• Stock Ticker & Timeframe
• Industry & Sector
✅ Customization Options:
• Font Size: Huge, Large, Normal, Small
• Text Color & Transparency: Adjustable
• Proper Left Alignment for a clean, structured display
• Vertical Offset Tweaks to move text down for better visibility
✅ Optimized Table Layout:
• Uses table.new() for persistent placement.
• Added an empty row to fine-tune positioning, ensuring the watermark doesn’t overlap key chart areas.
🔧 Use Case:
Designed for traders who want a clear, customizable stock watermark to enhance their charting experience without obstructing price action.
Feb 1
Release Notes
Updated version: now you can decide your location for the watermark
Micha Stocks Custom Watermark (MSWM) – TradingView Script
This Pine Script v5 indicator adds a customizable watermark to TradingView charts, displaying key stock information while allowing for flexible positioning and formatting.
📌 Features & Functionality:
✅ Custom Positioning:
• Fixed to the top-left corner.
• Adjustable spacing ensures the text is properly aligned.
✅ Displayed Information (Configurable):
• Company Name & Market Cap (Optional: Shows dynamically calculated market cap)
• Stock Ticker & Timeframe
• Industry & Sector
✅ Customization Options:
• Font Size: Huge, Large, Normal, Small
• Text Color & Transparency: Adjustable
• Proper Left Alignment for a clean, structured display
• Vertical Offset Tweaks to move text down for better visibility
✅ Optimized Table Layout:
• Uses table.new() for persistent placement.
• Added an empty row to fine-tune positioning, ensuring the watermark doesn’t overlap key chart areas.
🔧 Use Case:
Designed for traders who want a clear, customizable stock watermark to enhance their charting experience without obstructing price action.
Feb 7
Release Notes
Micha Stocks Custom Watermark – Updated Version 🚀
This updated Micha Stocks Custom Watermark script enhances your TradingView experience by adding an ATR-based volatility signal alongside the existing customizable stock watermark.
🆕 New Features & Improvements:
✅ ATR (14-Day) with Dynamic Volatility Indicator
• Displays the ATR value and its percentage relative to price.
• Includes a color-coded volatility signal:
• 🔴 High Volatility (Above user-defined Red Threshold)
• 🟡 Moderate Volatility (Between Red & Yellow Thresholds)
• 🟢 Low Volatility (Below user-defined Yellow Threshold)
✅ Fully Customizable ATR Thresholds
• Users can set their own ATR % levels for Red, Yellow, and Green signals.
✅ Improved Watermark Customization
• Users can still adjust the position, size, and color of the watermark.
• Includes Company Name, Ticker, Market Cap, Industry, and Sector.
• ATR can be turned on/off in settings for flexibility.
🔧 How to Use:
1️⃣ Go to Indicator Settings → Enable or Disable ATR Display
2️⃣ Adjust ATR % Thresholds to fit your volatility preference
3️⃣ Customize Text Position, Color, and Size to match your chart setup
This update makes it easier to quickly assess market volatility while keeping a clean and professional chart layout.
💡 Why Use This Indicator?
• Effortlessly track key stock info without cluttering your chart.
• Quickly identify volatile conditions using ATR percentage signals.
• Adjust settings on the fly to match your trading strategy.
📢 Update Now & Enjoy a Smarter Charting Experience!
Percentage Change per 5 Candles
🔎 What this indicator does
This indicator calculates and displays the percentage change of each candlestick directly on the chart.
• If a candle closed higher than it opened (bullish candle), it shows a positive % change (green).
• If a candle closed lower than it opened (bearish candle), it shows a negative % change (red).
• Small moves below your chosen threshold (e.g., 0.1%) are ignored to avoid clutter.
• The labels are placed above, below, or in the center of the candle (you choose).
So essentially, every candle “tells you in numbers” exactly how much it changed relative to its opening price.
________________________________________
⚙️ How it operates (the logic inside)
1. Calculate the change
o Formula:
\text{% Change} = \frac{(\text{Close} - \text{Open})}{\text{Open}} \times 100
o Example: If a candle opens at 100 and closes at 105, that’s a +5% change.
2. Round it nicely
o You can control decimals (e.g., show 2 decimals → +5.23%).
3. Filter out noise
o If a candle barely moved (say 0.02%), the label won’t appear unless you reduce the threshold.
4. Style the labels
o Bullish = green text, slightly transparent green background.
o Bearish = red text, slightly transparent red background.
o Neutral (0%) = gray.
5. Place the labels
o Options: above the candle, below the candle, or centered.
o Small vertical offset is applied so labels don’t overlap the candle itself.
________________________________________
📊 How this helps traders
This indicator turns visual candles into quantifiable numbers at a glance. Instead of guessing whether a move was “big” or “small,” you see it clearly.
Key Benefits:
1. Quick volatility analysis
o You can instantly see if candles are making big % swings or just small moves.
o This is especially useful on higher timeframes (daily/weekly) where moves can be large.
2. Pattern confirmation
o For example, you might spot a strong bullish engulfing candle — the % change label helps confirm whether it was truly significant (e.g., +4.5%) or just modest (+0.7%).
3. Noise filtering
o By setting a minimum % threshold, you only see labels when moves are meaningful (say > 0.5%). This keeps focus on important candles.
4. Backtesting & comparison
o You can compare moves across time:
“How strong was this breakout candle compared to the last one?”
“Are today’s bearish candles weaker or stronger than yesterday’s bullish candles?”
5. Better decision-making
o If you’re trading breakouts, reversals, or trend-following, knowing the % size of each candle helps confirm if the move has enough momentum.
________________________________________
✅ In short:
This indicator quantifies price action. Instead of just seeing “green” or “red” candles, you now know exactly how much the price changed in percentage terms, directly on the chart, in real time. It helps you distinguish between strong and weak moves and makes your analysis more precise.
________________________________________
Information Flow Analysis[b🔄 Information Flow Analysis: Systematic Multi-Component Market Analysis Framework
SYSTEM OVERVIEW AND ANALYTICAL FOUNDATION
The Information Flow Kernel - Hybrid combines established technical analysis methods into a unified analytical framework. This indicator systematically processes three distinct data streams - directional price momentum, volume-weighted pressure dynamics, and intrabar development patterns - integrating them through weighted mathematical fusion to produce statistically normalized market flow measurements.
COMPREHENSIVE MATHEMATICAL FRAMEWORK
Component 1: Directional Flow Analysis
The directional component analyzes price momentum through three mathematical vectors:
Price Vector: p = C - O (intrabar directional bias)
Momentum Vector: m = C_t - C_{t-1} (bar-to-bar velocity)
Acceleration Vector: a = m_t - m_{t-1} (momentum rate of change)
Directional Signal Integration:
S_d = \text{sgn}(p) \cdot |p| + \text{sgn}(m) \cdot |m| \cdot 0.6 + \text{sgn}(a) \cdot |a| \cdot 0.3
The signum function preserves directional information while absolute values provide magnitude weighting. Coefficients create a hierarchy emphasizing intrabar movement (100%), momentum (60%), and acceleration (30%).
Final Directional Output: K_1 = S_d \cdot w_d where w_d is the directional weight parameter.
Component 2: Volume-Weighted Pressure Analysis
Volume Normalization: r_v = \frac{V_t}{\overline{V_n}} where \overline{V_n} represents the n-period simple moving average of volume.
Base Pressure Calculation: P_{base} = \Delta C \cdot r_v \cdot w_v where \Delta C = C_t - C_{t-1} and w_v is the velocity weighting factor.
Volume Confirmation Function:
f(r_v) = \begin{cases}
1.4 & \text{if } r_v > 1.2 \
0.7 & \text{if } r_v < 0.8 \
1.0 & \text{otherwise}
\end{cases}
Final Pressure Output: K_2 = P_{base} \cdot f(r_v)
Component 3: Intrabar Development Analysis
Bar Position Calculation: B = \frac{C - L}{H - L} when H - L > 0 , else B = 0.5
Development Signal Function:
S_{dev} = \begin{cases}
2(B - 0.5) & \text{if } B > 0.6 \text{ or } B < 0.4 \
0 & \text{if } 0.4 \leq B \leq 0.6
\end{cases}
Final Development Output: K_3 = S_{dev} \cdot 0.4
Master Integration and Statistical Normalization
Weighted Component Fusion: F_{raw} = 0.5K_1 + 0.35K_2 + 0.15K_3
Sensitivity Scaling: F_{master} = F_{raw} \cdot s where s is the sensitivity parameter.
Statistical Normalization Process:
Rolling Mean: \mu_F = \frac{1}{n}\sum_{i=0}^{n-1} F_{master,t-i}
Rolling Standard Deviation: \sigma_F = \sqrt{\frac{1}{n}\sum_{i=0}^{n-1} (F_{master,t-i} - \mu_F)^2}
Z-Score Computation: z = \frac{F_{master} - \mu_F}{\sigma_F}
Boundary Enforcement: z_{bounded} = \max(-3, \min(3, z))
Final Normalization: N = \frac{z_{bounded}}{3}
Flow Metrics Calculation:
Intensity: I = |z|
Strength Percentage: S = \min(100, I \times 33.33)
Extreme Detection: \text{Extreme} = I > 2.0
DETAILED INPUT PARAMETER SPECIFICATIONS
Sensitivity (0.1 - 3.0, Default: 1.0)
Global amplification multiplier applied to the master flow calculation. Functions as: F_{master} = F_{raw} \cdot s
Low Settings (0.1 - 0.5): Enhanced precision for subtle market movements. Optimal for low-volatility environments, scalping strategies, and early detection of minor directional shifts. Increases responsiveness but may amplify noise.
Moderate Settings (0.6 - 1.2): Balanced sensitivity for standard market conditions across multiple timeframes.
High Settings (1.3 - 3.0): Reduced sensitivity to minor fluctuations while emphasizing significant flow changes. Ideal for high-volatility assets, trending markets, and longer timeframes.
Directional Weighting (0.1 - 1.0, Default: 0.7)
Controls emphasis on price direction versus volume and positioning factors. Applied as: K_{1,weighted} = K_1 \times w_d
Lower Values (0.1 - 0.4): Reduces directional bias, favoring volume-confirmed moves. Optimal for ranging markets where momentum may generate false signals.
Higher Values (0.7 - 1.0): Amplifies directional signals from price vectors and acceleration. Ideal for trending conditions where directional momentum drives price action.
Velocity Weighting (0.1 - 1.0, Default: 0.6)
Scales volume-confirmed price change impact. Applied in: P_{base} = \Delta C \times r_v \times w_v
Lower Values (0.1 - 0.4): Dampens volume spike influence, focusing on sustained pressure patterns. Suitable for illiquid assets or news-sensitive markets.
Higher Values (0.8 - 1.0): Amplifies high-volume directional moves. Optimal for liquid markets where volume provides reliable confirmation.
Volume Length (3 - 20, Default: 5)
Defines lookback period for volume averaging: \overline{V_n} = \frac{1}{n}\sum_{i=0}^{n-1} V_{t-i}
Short Periods (3 - 7): Responsive to recent volume shifts, excellent for intraday analysis.
Long Periods (13 - 20): Smoother averaging, better for swing trading and higher timeframes.
DASHBOARD SYSTEM
Primary Flow Gauge
Bilaterally symmetric visualization displaying normalized flow direction and intensity:
Segment Calculation: n_{active} = \lfloor |N| \times 15 \rfloor
Left Fill: Bearish flow when N < -0.01
Right Fill: Bullish flow when N > 0.01
Neutral Display: Empty segments when |N| \leq 0.01
Visual Style Options:
Matrix: Digital blocks (▰/▱) for quantitative precision
Wave: Progressive patterns (▁▂▃▄▅▆▇█) showing flow buildup
Dots: LED-style indicators (●/○) with intensity scaling
Blocks: Modern squares (■/□) for professional appearance
Pulse: Progressive markers (⎯ to █) emphasizing intensity buildup
Flow Intensity Visualization
30-segment horizontal bar graph with mathematical fill logic:
Segment Fill: For i \in : filled if \frac{i}{29} \leq \frac{S}{100}
Color Coding System:
Orange (S > 66%): High intensity, strong directional conviction
Cyan (33% ≤ S ≤ 66%): Moderate intensity, developing bias
White (S < 33%): Low intensity, neutral conditions
Extreme Detection Indicators
Circular markers flanking the gauge with state-dependent illumination:
Activation: I > 2.0 \land |N| > 0.3
Bright Yellow: Active extreme conditions
Dim Yellow: Normal conditions
Metrics Display
Balance Value: Raw master flow output ( F_{master} ) showing absolute directional pressure
Z-Score Value: Statistical deviation ( z_{bounded} ) indicating historical context
Dynamic Narrative System
Context-sensitive interpretation based on mathematical thresholds:
Extreme Flow: I > 2.0 \land |N| > 0.6
Moderate Flow: 0.3 < |N| \leq 0.6
High Volatility: S > 50 \land |N| \leq 0.3
Neutral State: S \leq 50 \land |N| \leq 0.3
ALERT SYSTEM SPECIFICATIONS
Mathematical Trigger Conditions:
Extreme Bullish: I > 2.0 \land N > 0.6
Extreme Bearish: I > 2.0 \land N < -0.6
High Intensity: S > 80
Bullish Shift: N_t > 0.3 \land N_{t-1} \leq 0.3
Bearish Shift: N_t < -0.3 \land N_{t-1} \geq -0.3
TECHNICAL IMPLEMENTATION AND PERFORMANCE
Computational Architecture
The system employs efficient calculation methods minimizing processing overhead:
Single-pass mathematical operations for all components
Conditional visual rendering (executed only on final bar)
Optimized array operations using direct calculations
Real-Time Processing
The indicator updates continuously during bar formation, providing immediate feedback on changing market conditions. Statistical normalization ensures consistent interpretation across varying market regimes.
Market Applicability
Optimal performance in liquid markets with consistent volume patterns. May require parameter adjustment for:
Low-volume or after-hours sessions
News-driven market conditions
Highly volatile cryptocurrency markets
Ranging versus trending market environments
PRACTICAL APPLICATION FRAMEWORK
Market State Classification
This indicator functions as a comprehensive market condition assessment tool providing:
Trend Analysis: High intensity readings ( S > 66% ) with sustained directional bias indicate strong trending conditions suitable for momentum strategies.
Reversal Detection: Extreme readings ( I > 2.0 ) at key technical levels may signal potential trend exhaustion or reversal points.
Range Identification: Low intensity with neutral flow ( S < 33%, |N| < 0.3 ) suggests ranging market conditions suitable for mean reversion strategies.
Volatility Assessment: High intensity without clear directional bias indicates elevated volatility with conflicting pressures.
Integration with Trading Systems
The normalized output range facilitates integration with automated trading systems and position sizing algorithms. The statistical basis provides consistent interpretation across different market conditions and asset classes.
LIMITATIONS AND CONSIDERATIONS
This indicator combines established technical analysis methods and processes historical data without predicting future price movements. The system performs optimally in liquid markets with consistent volume patterns and may produce false signals in thin trading conditions or during news-driven market events. This indicator is provided for educational and analytical purposes only and does not constitute financial advice. Users should combine this analysis with proper risk management, position sizing, and additional confirmation methods before making any trading decisions. Past performance does not guarantee future results.
Note: The term "kernel" in this context refers to modular calculation components rather than mathematical kernel functions in the formal computational sense.
As quantitative analyst Ralph Vince noted: "The essence of successful trading lies not in predicting market direction, but in the systematic processing of market information and the disciplined management of probability distributions."
— Dskyz, Trade with insight. Trade with anticipation.
Adaptive Rolling Quantile Bands [CHE] Adaptive Rolling Quantile Bands
Part 1 — Mathematics and Algorithmic Design
Purpose. The indicator estimates distribution‐aware price levels from a rolling window and turns them into dynamic “buy” and “sell” bands. It can work on raw price or on *residuals* around a baseline to better isolate deviations from trend. Optionally, the percentile parameter $q$ adapts to volatility via ATR so the bands widen in turbulent regimes and tighten in calm ones. A compact, latched state machine converts these statistical levels into high-quality discretionary signals.
Data pipeline.
1. Choose a source (default `close`; MTF optional via `request.security`).
2. Optionally compute a baseline (`SMA` or `EMA`) of length $L$.
3. Build the *working series*: raw price if residual mode is off; otherwise price minus baseline (if a baseline exists).
4. Maintain a FIFO buffer of the last $N$ values (window length). All quantiles are computed on this buffer.
5. Map the resulting levels back to price space if residual mode is on (i.e., add back the baseline).
6. Smooth levels with a short EMA for readability.
Rolling quantiles.
Given the buffer $X_{t-N+1..t}$ and a percentile $q\in $, the indicator sorts a copy of the buffer ascending and linearly interpolates between adjacent ranks to estimate:
* Buy band $\approx Q(q)$
* Sell band $\approx Q(1-q)$
* Median $Q(0.5)$, plus optional deciles $Q(0.10)$ and $Q(0.90)$
Quantiles are robust to outliers relative to means. The estimator uses only data up to the current bar’s value in the buffer; there is no look-ahead.
Residual transform (optional).
In residual mode, quantiles are computed on $X^{res}_t = \text{price}_t - \text{baseline}_t$. This centers the distribution and often yields more stationary tails. After computing $Q(\cdot)$ on residuals, levels are transformed back to price space by adding the baseline. If `Baseline = None`, residual mode simply falls back to raw price.
Volatility-adaptive percentile.
Let $\text{ATR}_{14}(t)$ be current ATR and $\overline{\text{ATR}}_{100}(t)$ its long SMA. Define a volatility ratio $r = \text{ATR}_{14}/\overline{\text{ATR}}_{100}$. The effective quantile is:
Smoothing.
Each level is optionally smoothed by an EMA of length $k$ for cleaner visuals. This smoothing does not change the underlying quantile logic; it only stabilizes plots and signals.
Latched state machines.
Two three-step processes convert levels into “latched” signals that only fire after confirmation and then reset:
* BUY latch:
(1) HLC3 crosses above the median →
(2) the median is rising →
(3) HLC3 prints above the upper (orange) band → BUY latched.
* SELL latch:
(1) HLC3 crosses below the median →
(2) the median is falling →
(3) HLC3 prints below the lower (teal) band → SELL latched.
Labels are drawn on the latch bar, with a FIFO cap to limit clutter. Alerts are available for both the simple band interactions and the latched events. Use “Once per bar close” to avoid intrabar churn.
MTF behavior and repainting.
MTF sourcing uses `lookahead_off`. Quantiles and baselines are computed from completed data only; however, any *intrabar* cross conditions naturally stabilize at close. As with all real-time indicators, values can update during a live bar; prefer bar-close alerts for reliability.
Complexity and parameters.
Each bar sorts a copy of the $N$-length window (practical $N$ values keep this inexpensive). Typical choices: $N=50$–$100$, $q_0=0.15$–$0.25$, $k=2$–$5$, baseline length $L=20$ (if used), adaptation strength $s=0.2$–$0.7$.
Part 2 — Practical Use for Discretionary/Active Traders
What the bands mean in practice.
The teal “buy” band marks the lower tail of the recent distribution; the orange “sell” band marks the upper tail. The median is your dynamic equilibrium. In residual mode, these tails are deviations around trend; in raw mode they are absolute price percentiles. When ATR adaptation is on, tails breathe with regime shifts.
Two core playbooks.
1. Mean-reversion around a stable median.
* Context: The median is flat or gently sloped; band width is relatively tight; instrument is ranging.
* Entry (long): Look for price to probe or close below the buy band and then reclaim it, especially after HLC3 recrosses the median and the median turns up.
* Stops: Place beyond the most recent swing low or $1.0–1.5\times$ ATR(14) below entry.
* Targets: First scale at the median; optional second scale near the opposite band. Trail with the median or an ATR stop.
* Symmetry: Mirror the rules for shorts near the sell band when the median is flat to down.
2. Continuation with latched confirmations.
* Context: A developing trend where you want fewer but cleaner signals.
* Entry (long): Take the latched BUY (3-step confirmation) on close, or on the next bar if you require bar-close validation.
* Invalidation: A close back below the median (or below the lower band in strong trends) negates momentum.
* Exits: Trail under the median for conservative exits or under the teal band for trend-following exits. Consider scaling at structure (prior swing highs) or at a fixed $R$ multiple.
Parameter guidance by timeframe.
* Scalping / LTF (1–5m): $N=30$–$60$, $q_0=0.20$, $k=2$–3, residual mode on, baseline EMA $L=20$, adaptation $s=0.5$–0.7 to handle micro-vol spikes. Expect more signals; rely on latched logic to filter noise.
* Intraday swing (15–60m): $N=60$–$100$, $q_0=0.15$–0.20, $k=3$–4. Residual mode helps but is optional if the instrument trends cleanly. $s=0.3$–0.6.
* Swing / HTF (4H–D): $N=80$–$150$, $q_0=0.10$–0.18, $k=3$–5. Consider `SMA` baseline for smoother residuals and moderate adaptation $s=0.2$–0.4.
Baseline choice.
Use EMA for responsiveness (fast trend shifts) and SMA for stability (smoother residuals). Turning residual mode on is advantageous when price exhibits persistent drift; turning it off is useful when you explicitly want absolute bands.
How to time entries.
Prefer bar-close validation for both band recaptures and latched signals. If you must act intrabar, accept that crosses can “un-cross” before close; compensate with tighter stops or reduced size.
Risk management.
Position size to a fixed fractional risk per trade (e.g., 0.5–1.0% of equity). Define invalidation using structure (swing points) plus ATR. Avoid chasing when distance to the opposite band is small; reward-to-risk degrades rapidly once you are deep inside the distribution.
Combos and filters.
* Pair with a higher-timeframe median slope as a regime filter (trade only in the direction of the HTF median).
* Use band width relative to ATR as a range/trend gauge: unusually narrow bands suggest compression (mean-reversion bias); expanding bands suggest breakout potential (favor latched continuation).
* Volume or session filters (e.g., avoid illiquid hours) can materially improve execution.
Alerts for discretion.
Enable “Cross above Buy Level” / “Cross below Sell Level” for early notices and “Latched BUY/SELL” for conviction entries. Set alerts to “Once per bar close” to avoid noise.
Common pitfalls.
Do not interpret band touches as automatic signals; context matters. A strong trend will often ride the far band (“band walking”) and punish counter-trend fades—use the median slope and latched logic to separate trend from range. Do not oversmooth levels; you will lag breaks. Do not set $q$ too small or too large; extremes reduce statistical meaning and practical distance for stops.
A concise checklist.
1. Is the median flat (range) or sloped (trend)?
2. Is band width expanding or contracting vs ATR?
3. Are we near the tail level aligned with the intended trade?
4. For continuation: did the 3 steps for a latched signal complete?
5. Do stops and targets produce acceptable $R$ (≥1.5–2.0)?
6. Are you trading during liquid hours for the instrument?
Summary. ARQB provides statistically grounded, regime-aware bands and a disciplined, latched confirmation engine. Use the bands as objective context, the median as your equilibrium line, ATR adaptation to stay calibrated across regimes, and the latched logic to time higher-quality discretionary entries.
Disclaimer
No indicator guarantees profits. Adaptive Rolling Quantile Bands is a decision aid; always combine with solid risk management and your own judgment. Backtest, forward test, and size responsibly.
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Enhance your trading precision and confidence 🚀
Best regards
Chervolino
MERV: Market Entropy & Rhythm Visualizer [BullByte]The MERV (Market Entropy & Rhythm Visualizer) indicator analyzes market conditions by measuring entropy (randomness vs. trend), tradeability (volatility/momentum), and cyclical rhythm. It provides traders with an easy-to-read dashboard and oscillator to understand when markets are structured or choppy, and when trading conditions are optimal.
Purpose of the Indicator
MERV’s goal is to help traders identify different market regimes. It quantifies how structured or random recent price action is (entropy), how strong and volatile the movement is (tradeability), and whether a repeating cycle exists. By visualizing these together, MERV highlights trending vs. choppy environments and flags when conditions are favorable for entering trades. For example, a low entropy value means prices are following a clear trend line, whereas high entropy indicates a lot of noise or sideways action. The indicator’s combination of measures is original: it fuses statistical trend-fit (entropy), volatility trends (ATR and slope), and cycle analysis to give a comprehensive view of market behavior.
Why a Trader Should Use It
Traders often need to know when a market trend is reliable vs. when it is just noise. MERV helps in several ways: it shows when the market has a strong direction (low entropy, high tradeability) and when it’s ranging (high entropy). This can prevent entering trend-following strategies during choppy periods, or help catch breakouts early. The “Optimal Regime” marker (a star) highlights moments when entropy is very low and tradeability is very high, typically the best conditions for trend trades. By using MERV, a trader gains an empirical “go/no-go” signal based on price history, rather than guessing from price alone. It’s also adaptable: you can apply it to stocks, forex, crypto, etc., on any timeframe. For example, during a bullish phase of a stock, MERV will turn green (Trending Mode) and often show a star, signaling good follow-through. If the market later grinds sideways, MERV will shift to magenta (Choppy Mode), warning you that trend-following is now risky.
Why These Components Were Chosen
Market Entropy (via R²) : This measures how well recent prices fit a straight line. We compute a linear regression on the last len_entropy bars and calculate R². Entropy = 1 - R², so entropy is low when prices follow a trend (R² near 1) and high when price action is erratic (R² near 0). This single number captures trend strength vs noise.
Tradeability (ATR + Slope) : We combine two familiar measures: the Average True Range (ATR) (normalized by price) and the absolute slope of the regression line (scaled by ATR). Together they reflect how active and directional the market is. A high ATR or strong slope means big moves, making a trend more “tradeable.” We take a simple average of the normalized ATR and slope to get tradeability_raw. Then we convert it to a percentile rank over the lookback window so it’s stable between 0 and 1.
Percentile Ranks : To make entropy and tradeability values easy to interpret, we convert each to a 0–100 rank based on the past len_entropy periods. This turns raw metrics into a consistent scale. (For example, an entropy rank of 90 means current entropy is higher than 90% of recent values.) We then divide by 100 to plot them on a 0–1 scale.
Market Mode (Regime) : Based on those ranks, MERV classifies the market:
Trending (Green) : Low entropy rank (<40%) and high tradeability rank (>60%). This means the market is structurally trending with high activity.
Choppy (Magenta) : High entropy rank (>60%) and low tradeability rank (<40%). This is a mostly random, low-momentum market.
Neutral (Cyan) : All other cases. This covers mixed regimes not strongly trending or choppy.
The mode is shown as a colored bar at the bottom: green for trending, magenta for choppy, cyan for neutral.
Optimal Regime Signal : Separately, we mark an “optimal” condition when entropy_norm < 0.3 and tradeability > 0.7 (both normalized 0–1). When this is true, a ★ star appears on the bottom line. This star is colored white when truly optimal, gold when only tradeability is high (but entropy not quite low enough), and black when neither condition holds. This gives a quick visual cue for very favorable conditions.
What Makes MERV Stand Out
Holistic View : Unlike a single-oscillator, MERV combines trend, volatility, and cycle analysis in one tool. This multi-faceted approach is unique.
Visual Dashboard : The fixed on-chart dashboard (shown at your chosen corner) summarizes all metrics in bar/gauge form. Even a non-technical user can glance at it: more “█” blocks = a higher value, colors match the plots. This is more intuitive than raw numbers.
Adaptive Thresholds : Using percentile ranks means MERV auto-adjusts to each market’s character, rather than requiring fixed thresholds.
Cycle Insight : The rhythm plot adds information rarely found in indicators – it shows if there’s a repeating cycle (and its period in bars) and how strong it is. This can hint at natural bounce or reversal intervals.
Modern Look : The neon color scheme and glow effects make the lines easy to distinguish (blue/pink for entropy, green/orange for tradeability, etc.) and the filled area between them highlights when one dominates the other.
Recommended Timeframes
MERV can be applied to any timeframe, but it will be more reliable on higher timeframes. The default len_entropy = 50 and len_rhythm = 30 mean we use 30–50 bars of history, so on a daily chart that’s ~2–3 months of data; on a 1-hour chart it’s about 2–3 days. In practice:
Swing/Position traders might prefer Daily or 4H charts, where the calculations smooth out small noise. Entropy and cycles are more meaningful on longer trends.
Day trader s could use 15m or 1H charts if they adjust the inputs (e.g. shorter windows). This provides more sensitivity to intraday cycles.
Scalpers might find MERV too “slow” unless input lengths are set very low.
In summary, the indicator works anywhere, but the defaults are tuned for capturing medium-term trends. Users can adjust len_entropy and len_rhythm to match their chart’s volatility. The dashboard position can also be moved (top-left, bottom-right, etc.) so it doesn’t cover important chart areas.
How the Scoring/Logic Works (Step-by-Step)
Compute Entropy : A linear regression line is fit to the last len_entropy closes. We compute R² (goodness of fit). Entropy = 1 – R². So a strong straight-line trend gives low entropy; a flat/noisy set of points gives high entropy.
Compute Tradeability : We get ATR over len_entropy bars, normalize it by price (so it’s a fraction of price). We also calculate the regression slope (difference between the predicted close and last close). We scale |slope| by ATR to get a dimensionless measure. We average these (ATR% and slope%) to get tradeability_raw. This represents how big and directional price moves are.
Convert to Percentiles : Each new entropy and tradeability value is inserted into a rolling array of the last 50 values. We then compute the percentile rank of the current value in that array (0–100%) using a simple loop. This tells us where the current bar stands relative to history. We then divide by 100 to plot on .
Determine Modes and Signal : Based on these normalized metrics: if entropy < 0.4 and tradeability > 0.6 (40% and 60% thresholds), we set mode = Trending (1). If entropy > 0.6 and tradeability < 0.4, mode = Choppy (-1). Otherwise mode = Neutral (0). Separately, if entropy_norm < 0.3 and tradeability > 0.7, we set an optimal flag. These conditions trigger the colored mode bars and the star line.
Rhythm Detection : Every bar, if we have enough data, we take the last len_rhythm closes and compute the mean and standard deviation. Then for lags from 5 up to len_rhythm, we calculate a normalized autocorrelation coefficient. We track the lag that gives the maximum correlation (best match). This “best lag” divided by len_rhythm is plotted (a value between 0 and 1). Its color changes with the correlation strength. We also smooth the best correlation value over 5 bars to plot as “Cycle Strength” (also 0 to 1). This shows if there is a consistent cycle length in recent price action.
Heatmap (Optional) : The background color behind the oscillator panel can change with entropy. If “Neon Rainbow” style is on, low entropy is blue and high entropy is pink (via a custom color function), otherwise a classic green-to-red gradient can be used. This visually reinforces the entropy value.
Volume Regime (Dashboard Only) : We compute vol_norm = volume / sma(volume, len_entropy). If this is above 1.5, it’s considered high volume (neon orange); below 0.7 is low (blue); otherwise normal (green). The dashboard shows this as a bar gauge and percentage. This is for context only.
Oscillator Plot – How to Read It
The main panel (oscillator) has multiple colored lines on a 0–1 vertical scale, with horizontal markers at 0.2 (Low), 0.5 (Mid), and 0.8 (High). Here’s each element:
Entropy Line (Blue→Pink) : This line (and its glow) shows normalized entropy (0 = very low, 1 = very high). It is blue/green when entropy is low (strong trend) and pink/purple when entropy is high (choppy). A value near 0.0 (below 0.2 line) indicates a very well-defined trend. A value near 1.0 (above 0.8 line) means the market is very random. Watch for it dipping near 0: that suggests a strong trend has formed.
Tradeability Line (Green→Yellow) : This represents normalized tradeability. It is colored bright green when tradeability is low, transitioning to yellow as tradeability increases. Higher values (approaching 1) mean big moves and strong slopes. Typically in a market rally or crash, this line will rise. A crossing above ~0.7 often coincides with good trend strength.
Filled Area (Orange Shade) : The orange-ish fill between the entropy and tradeability lines highlights when one dominates the other. If the area is large, the two metrics diverge; if small, they are similar. This is mostly aesthetic but can catch the eye when the lines cross over or remain close.
Rhythm (Cycle) Line : This is plotted as (best_lag / len_rhythm). It indicates the relative period of the strongest cycle. For example, a value of 0.5 means the strongest cycle was about half the window length. The line’s color (green, orange, or pink) reflects how strong that cycle is (green = strong). If no clear cycle is found, this line may be flat or near zero.
Cycle Strength Line : Plotted on the same scale, this shows the autocorrelation strength (0–1). A high value (e.g. above 0.7, shown in green) means the cycle is very pronounced. Low values (pink) mean any cycle is weak and unreliable.
Mode Bars (Bottom) : Below the main oscillator, thick colored bars appear: a green bar means Trending Mode, magenta means Choppy Mode, and cyan means Neutral. These bars all have a fixed height (–0.1) and make it very easy to see the current regime.
Optimal Regime Line (Bottom) : Just below the mode bars is a thick horizontal line at –0.18. Its color indicates regime quality: White (★) means “Optimal Regime” (very low entropy and high tradeability). Gold (★) means not quite optimal (high tradeability but entropy not low enough). Black means neither condition. This star line quickly tells you when conditions are ideal (white star) or simply good (gold star).
Horizontal Guides : The dotted lines at 0.2 (Low), 0.5 (Mid), and 0.8 (High) serve as reference lines. For example, an entropy or tradeability reading above 0.8 is “High,” and below 0.2 is “Low,” as labeled on the chart. These help you gauge values at a glance.
Dashboard (Fixed Corner Panel)
MERV also includes a compact table (dashboard) that can be positioned in any corner. It summarizes key values each bar. Here is how to read its rows:
Entropy : Shows a bar of blocks (█ and ░). More █ blocks = higher entropy. It also gives a percentage (rounded). A full bar (10 blocks) with a high % means very chaotic market. The text is colored similarly (blue-green for low, pink for high).
Rhythm : Shows the best cycle period in bars (e.g. “15 bars”). If no calculation yet, it shows “n/a.” The text color matches the rhythm line.
Cycle Strength : Gives the cycle correlation as a percentage (smoothed, as shown on chart). Higher % (green) means a strong cycle.
Tradeability : Displays a 10-block gauge for tradeability. More blocks = more tradeable market. It also shows “gauge” text colored green→yellow accordingly.
Market Mode : Simply shows “Trending”, “Choppy”, or “Neutral” (cyan text) to match the mode bar color.
Volume Regime : Similar to tradeability, shows blocks for current volume vs. average. Above-average volume gives orange blocks, below-average gives blue blocks. A % value indicates current volume relative to average. This row helps see if volume is abnormally high or low.
Optimal Status (Large Row) : In bold, either “★ Optimal Regime” (white text) if the star condition is met, “★ High Tradeability” (gold text) if tradeability alone is high, or “— Not Optimal” (gray text) otherwise. This large row catches your eye when conditions are ripe.
In short, the dashboard turns the numeric state into an easy read: filled bars, colors, and text let you see current conditions without reading the plot. For instance, five blue blocks under Entropy and “25%” tells you entropy is low (good), and a row showing “Trending” in green confirms a trend state.
Real-Life Example
Example : Consider a daily chart of a trending stock (e.g. “AAPL, 1D”). During a strong uptrend, recent prices fit a clear upward line, so Entropy would be low (blue line near bottom, perhaps below the 0.2 line). Volatility and slope are high, so Tradeability is high (green-yellow line near top). In the dashboard, Entropy might show only 1–2 blocks (e.g. 10%) and Tradeability nearly full (e.g. 90%). The Market Mode bar turns green (Trending), and you might see a white ★ on the optimal line if conditions are very good. The Volume row might light orange if volume is above average during the rally. In contrast, imagine the same stock later in a tight range: Entropy will rise (pink line up, more blocks in dashboard), Tradeability falls (fewer blocks), and the Mode bar turns magenta (Choppy). No star appears in that case.
Consolidated Use Case : Suppose on XYZ stock the dashboard reads “Entropy: █░░░░░░░░ 20%”, “Tradeability: ██████████ 80%”, Mode = Trending (green), and “★ Optimal Regime.” This tells the trader that the market is in a strong, low-noise trend, and it might be a good time to follow the trend (with appropriate risk controls). If instead it reads “Entropy: ████████░░ 80%”, “Tradeability: ███▒▒▒▒▒▒ 30%”, Mode = Choppy (magenta), the trader knows the market is random and low-momentum—likely best to sit out until conditions improve.
Example: How It Looks in Action
Screenshot 1: Trending Market with High Tradeability (SOLUSD, 30m)
What it means:
The market is in a clear, strong trend with excellent conditions for trading. Both trend-following and active strategies are favored, supported by high tradeability and strong volume.
Screenshot 2: Optimal Regime, Strong Trend (ETHUSD, 1h)
What it means:
This is an ideal environment for trend trading. The market is highly organized, tradeability is excellent, and volume supports the move. This is when the indicator signals the highest probability for success.
Screenshot 3: Choppy Market with High Volume (BTC Perpetual, 5m)
What it means:
The market is highly random and choppy, despite a surge in volume. This is a high-risk, low-reward environment, avoid trend strategies, and be cautious even with mean-reversion or scalping.
Settings and Inputs
The script is fully open-source; here are key inputs the user can adjust:
Entropy Window (len_entropy) : Number of bars used for entropy and tradeability (default 50). Larger = smoother, more lag; smaller = more sensitivity.
Rhythm Window (len_rhythm ): Bars used for cycle detection (default 30). This limits the longest cycle we detect.
Dashboard Position : Choose any corner (Top Right default) so it doesn’t cover chart action.
Show Heatmap : Toggles the entropy background coloring on/off.
Heatmap Style : “Neon Rainbow” (colorful) or “Classic” (green→red).
Show Mode Bar : Turn the bottom mode bar on/off.
Show Dashboard : Turn the fixed table panel on/off.
Each setting has a tooltip explaining its effect. In the description we will mention typical settings (e.g. default window sizes) and that the user can move the dashboard corner as desired.
Oscillator Interpretation (Recap)
Lines : Blue/Pink = Entropy (low=trend, high=chop); Green/Yellow = Tradeability (low=quiet, high=volatile).
Fill : Orange tinted area between them (for visual emphasis).
Bars : Green=Trending, Magenta=Choppy, Cyan=Neutral (at bottom).
Star Line : White star = ideal conditions, Gold = good but not ideal.
Horizontal Guides : 0.2 and 0.8 lines mark low/high thresholds for each metric.
Using the chart, a coder or trader can see exactly what each output represents and make decisions accordingly.
Disclaimer
This indicator is provided as-is for educational and analytical purposes only. It does not guarantee any particular trading outcome. Past market patterns may not repeat in the future. Users should apply their own judgment and risk management; do not rely solely on this tool for trading decisions. Remember, TradingView scripts are tools for market analysis, not personalized financial advice. We encourage users to test and combine MERV with other analysis and to trade responsibly.
-BullByte
hudDisplay_v1Library "hudDisplay_v1"
f_getPosition(loc)
Parameters:
loc (string)
f_getTableSize(layout, itemCount)
Parameters:
layout (string)
itemCount (int)
f_getCellPosition(layout, index)
Parameters:
layout (string)
index (int)
f_drawHUD(show, loc, layout, content, textColor, bgColor)
Parameters:
show (bool)
loc (string)
layout (string)
content (array)
textColor (color)
bgColor (color)
LiliALHUNTERSystem_v2📚 **Library: LiliALHUNTERSystem_v2**
This library provides a powerful target management system for Pine Script developers.
It includes advanced calculators for EMA, RMA, and Supertrend, and introduces a central `createTargets()` function to dynamically render target lines and labels based on long/short trade logic.
🛠️ **Main Features:**
– Dynamic horizontal & vertical target lines
– Dual target configuration (Target 1 & Target 2)
– Directional logic via `isLong1`, `isLong2`
– Integrated Supertrend validation
– Visual dashboard and label display
– Works seamlessly with custom indicators
🎯 **Purpose:**
The `LiliALHUNTERSystem_v2` Library enables Pine coders to manage and visualize targets consistently across all trading strategies and indicators. It simplifies target logic while maintaining visual clarity and modular usage.
⚠️ **Disclaimer:**
This script is intended for educational and analytical purposes only. It does not constitute financial advice.
Library "LiliALHUNTERSystem_v2"
ema_calc(len, source)
Parameters:
len (simple int)
source (float)
rma_calc(len, source)
Parameters:
len (simple int)
source (float)
supertrend_calc(length, factor)
Parameters:
length (simple int)
factor (float)
createTargets(config, state, source1A, source1B, source2A, source2B)
Parameters:
config (TargetConfig)
state (TargetState)
source1A (float)
source1B (float)
source2A (float)
source2B (float)
showDashboard(state, dashLoc, textSize)
Parameters:
state (TargetState)
dashLoc (string)
textSize (string)
TargetConfig
Fields:
enableTarget1 (series bool)
enableTarget2 (series bool)
isLong1 (series bool)
isLong2 (series bool)
target1Condition (series string)
target2Condition (series string)
target1Color (series color)
target2Color (series color)
target1Style (series string)
target2Style (series string)
distTarget1 (series float)
distTarget2 (series float)
distOptions1 (series string)
distOptions2 (series string)
showLabels (series bool)
showDash (series bool)
TargetState
Fields:
target1LineV (series line)
target1LineH (series line)
target2LineV (series line)
target2LineH (series line)
target1Lbl (series label)
target2Lbl (series label)
target1Active (series bool)
target2Active (series bool)
target1Value (series float)
target2Value (series float)
countTargets1 (series int)
countTgReached1 (series int)
countTargets2 (series int)
countTgReached2 (series int)
1A Monthly P&L Table - Using Library1A Monthly P&L Table: Track Your Performance Month-by-Month
Overview:
The 1A Monthly P&L Table is a straightforward yet powerful indicator designed to give you an immediate overview of your asset's (or strategy's) percentage performance on a monthly basis. Displayed conveniently in the bottom-right corner of your chart, this tool helps you quickly assess historical gains and losses, making it easier to analyze trends in performance over time.
Key Features:
Monthly Performance at a Glance: Clearly see the percentage change for each past month.
Cumulative P&L: A running total of the displayed monthly P&L is provided, giving you a quick sum of performance over the selected period.
Customizable Display:
Months to Display: Choose how many past months you want to see in the table (from 1 to 60 months).
Text Size: Adjust the text size (Tiny, Small, Normal, Large, Huge) to fit your viewing preferences.
Text Color: Customize the color of the text for better visibility against your chart background.
Intraday & Daily Compatibility: The table is optimized to display on daily and intraday timeframes, ensuring it's relevant for various trading styles. (Note: For very long-term analysis on weekly/monthly charts, you might consider other tools, as this focuses on granular monthly P&L.)
How It Works:
The indicator calculates the percentage change from the close of the previous month to the close of the current month. For the very first month displayed, it calculates the P&L from the opening price of the chart's first bar to the close of that month. This data is then neatly organized into a table, updated on the last bar of the day or session.
Ideal For:
Traders and investors who want a quick, visual summary of monthly performance.
Analyzing seasonal trends or consistent periods of profitability/drawdown.
Supplementing backtesting results with a clear month-by-month breakdown.
Settings:
Text Color: Changes the color of all text within the table.
Text Size: Controls the font size of the table content.
Months to Display: Determines the number of recent months included in the table.






















