Appearance

Personalize your experience

Mode
Accent Color
Direction
All Docs/QuaScript//
QuaScript logo

QuaScript Documentation

Language guide, engine API, 601 builtins and the preset library · v3.0.0-phase1

ta: technical analysis

Generated from the engine catalog by tools/gen-docs.mjs; do not edit.

ta.accum_dist

script.qs
ta.accum_dist() -> series

Accumulation / distribution line.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.accum_dist" { overlay = true }

v = ta.accum_dist()
render.line(v, "ta.accum_dist", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.adx

script.qs
ta.adx(len = 14, smooth = 14) -> (adx, plus_di, minus_di)

Average directional index: (adx, plusdi, minusdi).

ArgumentKindDefaultNotes
lenint14
smoothint14

Returns 3 values: adx, plus_di, minus_di. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.adx" { overlay = true }

(v_adx, v_plus_di, v_minus_di) = ta.adx()
render.line(v_adx, "adx", color = color.sky.400, width = 2, pane = 1)
render.line(v_plus_di, "plus_di", color = color.amber.400, width = 2, pane = 1)
render.line(v_minus_di, "minus_di", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.aroon

script.qs
ta.aroon(len = 14) -> (up, down, osc)

Aroon: (up, down, osc).

ArgumentKindDefaultNotes
lenint14

Returns 3 values: up, down, osc. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.aroon" { overlay = true }

(v_up, v_down, v_osc) = ta.aroon()
render.line(v_up, "up", color = color.sky.400, width = 2, pane = 1)
render.line(v_down, "down", color = color.amber.400, width = 2, pane = 1)
render.line(v_osc, "osc", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.atr

script.qs
ta.atr(len = 14) -> series

Average true range (RMA of the true range).

ArgumentKindDefaultNotes
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.atr" { overlay = true }

v = ta.atr()
render.line(v, "ta.atr", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.awesome

script.qs
ta.awesome(fast = 5, slow = 34) -> series

Awesome oscillator: SMA(mid, fast) - SMA(mid, slow).

ArgumentKindDefaultNotes
fastint5
slowint34

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.awesome" { overlay = true }

v = ta.awesome()
render.line(v, "ta.awesome", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.bars_since

script.qs
ta.bars_since(cond) -> series

Bars since cond was last true (na before the first time).

ArgumentKindDefaultNotes
condboolrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.bars_since" { overlay = true }

v = ta.bars_since(close > ta.sma(close, 20))
render.line(v, "ta.bars_since", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.bollinger

script.qs
ta.bollinger(src, len = 20, mult = 2) -> (mid, upper, lower)

Bollinger bands: (mid, upper, lower).

ArgumentKindDefaultNotes
srcseriesrequired
lenint20
multnum2

Returns 3 values: mid, upper, lower. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.bollinger" { overlay = true }

(v_mid, v_upper, v_lower) = ta.bollinger(close)
render.line(v_mid, "mid", color = color.sky.400, width = 2)
render.line(v_upper, "upper", color = color.amber.400, width = 2)
render.line(v_lower, "lower", color = color.violet.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.bollinger_pct

script.qs
ta.bollinger_pct(src, len = 20, mult = 2) -> series

Position of src inside the bands (0 = lower, 1 = upper).

ArgumentKindDefaultNotes
srcseriesrequired
lenint20
multnum2

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.bollinger_pct" { overlay = true }

v = ta.bollinger_pct(close)
render.line(v, "ta.bollinger_pct", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.bollinger_width

script.qs
ta.bollinger_width(src, len = 20, mult = 2) -> series

Bollinger band width: (upper - lower) / mid.

ArgumentKindDefaultNotes
srcseriesrequired
lenint20
multnum2

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.bollinger_width" { overlay = true }

v = ta.bollinger_width(close)
render.line(v, "ta.bollinger_width", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.cci

script.qs
ta.cci(src = bar.typical, len = 20) -> series

Commodity channel index.

ArgumentKindDefaultNotes
srcseriesbar.typical
lenint20

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.cci" { overlay = true }

v = ta.cci()
render.line(v, "ta.cci", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.chaikin_mf

script.qs
ta.chaikin_mf(len = 20) -> series

Chaikin money flow.

ArgumentKindDefaultNotes
lenint20

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.chaikin_mf" { overlay = true }

v = ta.chaikin_mf()
render.line(v, "ta.chaikin_mf", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.chaikin_osc

script.qs
ta.chaikin_osc(fast = 3, slow = 10) -> series

Chaikin oscillator.

ArgumentKindDefaultNotes
fastint3
slowint10

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.chaikin_osc" { overlay = true }

v = ta.chaikin_osc()
render.line(v, "ta.chaikin_osc", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.chande

script.qs
ta.chande(src, len = 9) -> series

Chande momentum oscillator (-100 .. 100).

ArgumentKindDefaultNotes
srcseriesrequired
lenint9

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.chande" { overlay = true }

v = ta.chande(close)
render.line(v, "ta.chande", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.chandelier

script.qs
ta.chandelier(len = 22, mult = 3) -> (long_stop, short_stop)

Chandelier exits: (longstop, shortstop).

ArgumentKindDefaultNotes
lenint22
multnum3

Returns 2 values: long_stop, short_stop. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.chandelier" { overlay = true }

(v_long_stop, v_short_stop) = ta.chandelier()
render.line(v_long_stop, "long_stop", color = color.sky.400, width = 2)
render.line(v_short_stop, "short_stop", color = color.amber.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.change

script.qs
ta.change(src, len = 1) -> series

src - src[len] (momentum).

ArgumentKindDefaultNotes
srcseriesrequired
lenint1

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.change" { overlay = true }

v = ta.change(close)
render.line(v, "ta.change", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.choppiness

script.qs
ta.choppiness(len = 14) -> series

Choppiness index (100 = choppy, 0 = trending).

ArgumentKindDefaultNotes
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.choppiness" { overlay = true }

v = ta.choppiness()
render.line(v, "ta.choppiness", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.connors_rsi

script.qs
ta.connors_rsi(src, rsi_len = 3, streak_len = 2, rank_len = 100) -> series

Connors RSI: mean of RSI, streak RSI and percent rank of the 1-bar return.

ArgumentKindDefaultNotes
srcseriesrequired
rsi_lenint3
streak_lenint2
rank_lenint100

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.connors_rsi" { overlay = true }

v = ta.connors_rsi(close)
render.line(v, "ta.connors_rsi", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.coppock

script.qs
ta.coppock(src, wma_len = 10, long_roc = 14, short_roc = 11) -> series

Coppock curve.

ArgumentKindDefaultNotes
srcseriesrequired
wma_lenint10
long_rocint14
short_rocint11

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.coppock" { overlay = true }

v = ta.coppock(close)
render.line(v, "ta.coppock", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.cross

script.qs
ta.cross(a, b) -> bool

True on the bar where a crosses b in either direction.

ArgumentKindDefaultNotes
aseriesrequired
bseriesrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.cross" { overlay = true }

v = ta.cross(close, ta.sma(close, 20))
render.mark(v, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.cross_down

script.qs
ta.cross_down(a, b) -> bool

True on the bar where a crosses below b.

ArgumentKindDefaultNotes
aseriesrequired
bseriesrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.cross_down" { overlay = true }

v = ta.cross_down(close, ta.sma(close, 20))
render.mark(v, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.cross_up

script.qs
ta.cross_up(a, b) -> bool

True on the bar where a crosses above b.

ArgumentKindDefaultNotes
aseriesrequired
bseriesrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.cross_up" { overlay = true }

v = ta.cross_up(close, ta.sma(close, 20))
render.mark(v, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.cum

script.qs
ta.cum(src) -> series

Cumulative sum since the first bar.

ArgumentKindDefaultNotes
srcseriesrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.cum" { overlay = true }

v = ta.cum(close)
render.line(v, "ta.cum", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.decycler

script.qs
ta.decycler(src, len = 20) -> series

Removes cycles shorter than len with a high-pass filter.

ArgumentKindDefaultNotes
srcseriesrequired
lenint20

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.decycler" { overlay = true }

v = ta.decycler(close)
render.line(v, "ta.decycler", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.dema

script.qs
ta.dema(src, len) -> series

Double exponential moving average: 2*EMA - EMA(EMA).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.dema" { overlay = true }

v = ta.dema(close, 20)
render.line(v, "ta.dema", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.divergence

script.qs
ta.divergence(osc, left = 5, right = 5, range_max = 60, hidden = 0) -> (bullish, bearish)

Price / oscillator divergence at confirmed pivots: (bullish, bearish).

ArgumentKindDefaultNotes
oscseriesrequired
leftint5
rightint5
range_maxint60
hiddenbool0

Returns 2 values: bullish, bearish. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.divergence" { overlay = true }

(v_bullish, v_bearish) = ta.divergence(ta.rsi(close, 14))
render.mark(v_bullish, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "bullish")
render.mark(v_bearish, shape = shape.triangle_up, at = anchor.below_bar, color = color.amber.400, text = "bearish")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.donchian

script.qs
ta.donchian(len = 20) -> (mid, upper, lower)

Donchian channels: (mid, upper, lower).

ArgumentKindDefaultNotes
lenint20

Returns 3 values: mid, upper, lower. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.donchian" { overlay = true }

(v_mid, v_upper, v_lower) = ta.donchian()
render.line(v_mid, "mid", color = color.sky.400, width = 2)
render.line(v_upper, "upper", color = color.amber.400, width = 2)
render.line(v_lower, "lower", color = color.violet.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.ease_of_movement

script.qs
ta.ease_of_movement(len = 14, divisor = 10000) -> series

Ease of movement.

ArgumentKindDefaultNotes
lenint14
divisornum10000

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.ease_of_movement" { overlay = true }

v = ta.ease_of_movement()
render.line(v, "ta.ease_of_movement", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.ema

script.qs
ta.ema(src, len) -> series

Exponential moving average (alpha = 2 / (len + 1)), seeded with the SMA.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.ema" { overlay = true }

v = ta.ema(close, 20)
render.line(v, "ta.ema", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.falling

script.qs
ta.falling(src, len) -> bool

True when src is below each of its last len values.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.falling" { overlay = true }

v = ta.falling(close, 20)
render.mark(v, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.fisher

script.qs
ta.fisher(len = 9) -> (fisher, trigger)

Fisher transform of the bar mid: (fisher, trigger).

ArgumentKindDefaultNotes
lenint9

Returns 2 values: fisher, trigger. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.fisher" { overlay = true }

(v_fisher, v_trigger) = ta.fisher()
render.line(v_fisher, "fisher", color = color.sky.400, width = 2, pane = 1)
render.line(v_trigger, "trigger", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.force

script.qs
ta.force(len = 13) -> series

Force index (EMA of change x volume).

ArgumentKindDefaultNotes
lenint13

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.force" { overlay = true }

v = ta.force()
render.line(v, "ta.force", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.frama

script.qs
ta.frama(src, len = 16) -> series

Fractal adaptive moving average.

ArgumentKindDefaultNotes
srcseriesrequired
lenint16

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.frama" { overlay = true }

v = ta.frama(close)
render.line(v, "ta.frama", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.highest

script.qs
ta.highest(src, len) -> series

Highest value of the last len bars.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.highest" { overlay = true }

v = ta.highest(close, 20)
render.line(v, "ta.highest", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.highest_offset

script.qs
ta.highest_offset(src, len) -> series

Bars back to the highest value of the window (0 = current bar).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.highest_offset" { overlay = true }

v = ta.highest_offset(close, 20)
render.line(v, "ta.highest_offset", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.historical_vol

script.qs
ta.historical_vol(src, len = 20, annual = 252) -> series

Annualised historical volatility of log returns, in percent.

ArgumentKindDefaultNotes
srcseriesrequired
lenint20
annualint252

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.historical_vol" { overlay = true }

v = ta.historical_vol(close)
render.line(v, "ta.historical_vol", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.hull

script.qs
ta.hull(src, len) -> series

Hull moving average: WMA(2*WMA(n/2) - WMA(n), sqrt(n)).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.hull" { overlay = true }

v = ta.hull(close, 20)
render.line(v, "ta.hull", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.ichimoku

script.qs
ta.ichimoku(conversion = 9, base = 26, span_b = 52, displacement = 26) -> (conversion, base, span_a, span_b, lagging)

Cloud system lines; draw spana/spanb with offset = displacement and lagging with offset = -displacement.

ArgumentKindDefaultNotes
conversionint9
baseint26
span_bint52
displacementint26

Returns 5 values: conversion, base, span_a, span_b, lagging. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.ichimoku" { overlay = true }

(v_conversion, v_base, v_span_a, v_span_b, v_lagging) = ta.ichimoku()
render.line(v_conversion, "conversion", color = color.sky.400, width = 2)
render.line(v_base, "base", color = color.amber.400, width = 2)
render.line(v_span_a, "span_a", color = color.violet.400, width = 2)
render.line(v_span_b, "span_b", color = color.emerald.400, width = 2)
render.line(v_lagging, "lagging", color = color.rose.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.intraday_intensity

script.qs
ta.intraday_intensity() -> series

Intraday intensity of the bar.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.intraday_intensity" { overlay = true }

v = ta.intraday_intensity()
render.line(v, "ta.intraday_intensity", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.jurik

script.qs
ta.jurik(src, len = 7, phase = 0, power = 2) -> series

Jurik-style adaptive low-lag filter.

ArgumentKindDefaultNotes
srcseriesrequired
lenint7
phasenum0
powernum2

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.jurik" { overlay = true }

v = ta.jurik(close)
render.line(v, "ta.jurik", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.kalman

script.qs
ta.kalman(src, process_noise = 0.01, measurement_noise = 0.1) -> series

One-dimensional Kalman filter estimate.

ArgumentKindDefaultNotes
srcseriesrequired
process_noisenum0.01
measurement_noisenum0.1

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.kalman" { overlay = true }

v = ta.kalman(close)
render.line(v, "ta.kalman", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.kaufman

script.qs
ta.kaufman(src, len = 10, fast = 2, slow = 30) -> series

Kaufman adaptive moving average driven by the efficiency ratio.

ArgumentKindDefaultNotes
srcseriesrequired
lenint10
fastint2
slowint30

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.kaufman" { overlay = true }

v = ta.kaufman(close)
render.line(v, "ta.kaufman", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.keltner

script.qs
ta.keltner(src, len = 20, mult = 1.5, atr_len = 10) -> (mid, upper, lower)

Keltner channels: (mid, upper, lower).

ArgumentKindDefaultNotes
srcseriesrequired
lenint20
multnum1.5
atr_lenint10

Returns 3 values: mid, upper, lower. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.keltner" { overlay = true }

(v_mid, v_upper, v_lower) = ta.keltner(close)
render.line(v_mid, "mid", color = color.sky.400, width = 2)
render.line(v_upper, "upper", color = color.amber.400, width = 2)
render.line(v_lower, "lower", color = color.violet.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.kst

script.qs
ta.kst(src, r1 = 10, r2 = 15, r3 = 20, r4 = 30, s1 = 10, s2 = 10, s3 = 10, s4 = 15, signal = 9) -> (kst, signal)

Know sure thing: (kst, signal).

ArgumentKindDefaultNotes
srcseriesrequired
r1int10
r2int15
r3int20
r4int30
s1int10
s2int10
s3int10
s4int15
signalint9

Returns 2 values: kst, signal. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.kst" { overlay = true }

(v_kst, v_signal) = ta.kst(close)
render.line(v_kst, "kst", color = color.sky.400, width = 2, pane = 1)
render.line(v_signal, "signal", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.legoux

script.qs
ta.legoux(src, len = 9, offset = 0.85, sigma = 6) -> series

Gaussian-weighted moving average with an offset towards recent bars.

ArgumentKindDefaultNotes
srcseriesrequired
lenint9
offsetnum0.85
sigmanum6

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.legoux" { overlay = true }

v = ta.legoux(close)
render.line(v, "ta.legoux", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.lowest

script.qs
ta.lowest(src, len) -> series

Lowest value of the last len bars.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.lowest" { overlay = true }

v = ta.lowest(close, 20)
render.line(v, "ta.lowest", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.lowest_offset

script.qs
ta.lowest_offset(src, len) -> series

Bars back to the lowest value of the window (0 = current bar).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.lowest_offset" { overlay = true }

v = ta.lowest_offset(close, 20)
render.line(v, "ta.lowest_offset", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.macd

script.qs
ta.macd(src, fast = 12, slow = 26, signal = 9) -> (line, signal, hist)

MACD: (line, signal, hist).

ArgumentKindDefaultNotes
srcseriesrequired
fastint12
slowint26
signalint9

Returns 3 values: line, signal, hist. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.macd" { overlay = true }

(v_line, v_signal, v_hist) = ta.macd(close)
render.line(v_line, "line", color = color.sky.400, width = 2, pane = 1)
render.line(v_signal, "signal", color = color.amber.400, width = 2, pane = 1)
render.line(v_hist, "hist", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.mcginley

script.qs
ta.mcginley(src, len = 14) -> series

McGinley dynamic average.

ArgumentKindDefaultNotes
srcseriesrequired
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.mcginley" { overlay = true }

v = ta.mcginley(close)
render.line(v, "ta.mcginley", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.money_flow

script.qs
ta.money_flow(len = 14) -> series

Money flow index (volume-weighted RSI).

ArgumentKindDefaultNotes
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.money_flow" { overlay = true }

v = ta.money_flow()
render.line(v, "ta.money_flow", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.nvi

script.qs
ta.nvi() -> series

Negative volume index.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.nvi" { overlay = true }

v = ta.nvi()
render.line(v, "ta.nvi", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.obv

script.qs
ta.obv() -> series

On-balance volume.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.obv" { overlay = true }

v = ta.obv()
render.line(v, "ta.obv", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.pivot_high

script.qs
ta.pivot_high(left = 10, right = 10, src = high) -> series

Pivot high value, reported right bars after the pivot (na elsewhere).

ArgumentKindDefaultNotes
leftint10
rightint10
srcserieshigh

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.pivot_high" { overlay = true }

v = ta.pivot_high()
render.line(v, "ta.pivot_high", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.pivot_low

script.qs
ta.pivot_low(left = 10, right = 10, src = low) -> series

Pivot low value, reported right bars after the pivot (na elsewhere).

ArgumentKindDefaultNotes
leftint10
rightint10
srcserieslow

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.pivot_low" { overlay = true }

v = ta.pivot_low()
render.line(v, "ta.pivot_low", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.ppo

script.qs
ta.ppo(src, fast = 12, slow = 26, signal = 9) -> (line, signal, hist)

Percentage price oscillator: (line, signal, hist).

ArgumentKindDefaultNotes
srcseriesrequired
fastint12
slowint26
signalint9

Returns 3 values: line, signal, hist. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.ppo" { overlay = true }

(v_line, v_signal, v_hist) = ta.ppo(close)
render.line(v_line, "line", color = color.sky.400, width = 2, pane = 1)
render.line(v_signal, "signal", color = color.amber.400, width = 2, pane = 1)
render.line(v_hist, "hist", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.psar

script.qs
ta.psar(start = 0.02, inc = 0.02, max = 0.2) -> series

Parabolic stop and reverse.

ArgumentKindDefaultNotes
startnum0.02
incnum0.02
maxnum0.2

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.psar" { overlay = true }

v = ta.psar()
render.line(v, "ta.psar", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.pvi

script.qs
ta.pvi() -> series

Positive volume index.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.pvi" { overlay = true }

v = ta.pvi()
render.line(v, "ta.pvi", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.pvt

script.qs
ta.pvt() -> series

Price-volume trend.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.pvt" { overlay = true }

v = ta.pvt()
render.line(v, "ta.pvt", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.rising

script.qs
ta.rising(src, len) -> bool

True when src is above each of its last len values.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.rising" { overlay = true }

v = ta.rising(close, 20)
render.mark(v, shape = shape.triangle_up, at = anchor.below_bar, color = color.sky.400, text = "")
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.rma

script.qs
ta.rma(src, len) -> series

Wilder's running moving average (alpha = 1 / len).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.rma" { overlay = true }

v = ta.rma(close, 20)
render.line(v, "ta.rma", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.roc

script.qs
ta.roc(src, len = 9) -> series

Rate of change in percent.

ArgumentKindDefaultNotes
srcseriesrequired
lenint9

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.roc" { overlay = true }

v = ta.roc(close)
render.line(v, "ta.roc", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.rsi

script.qs
ta.rsi(src, len = 14) -> series

Relative strength index (Wilder).

ArgumentKindDefaultNotes
srcseriesrequired
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.rsi" { overlay = true }

v = ta.rsi(close)
render.line(v, "ta.rsi", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.sma

script.qs
ta.sma(src, len) -> series

Simple moving average of the last len values.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.sma" { overlay = true }

v = ta.sma(close, 20)
render.line(v, "ta.sma", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.stoch

script.qs
ta.stoch(src = close, high_src = high, low_src = low, len = 14, smooth_k = 1, smooth_d = 3) -> (k, d)

Stochastic oscillator: (k, d).

ArgumentKindDefaultNotes
srcseriesclose
high_srcserieshigh
low_srcserieslow
lenint14
smooth_kint1
smooth_dint3

Returns 2 values: k, d. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.stoch" { overlay = true }

(v_k, v_d) = ta.stoch()
render.line(v_k, "k", color = color.sky.400, width = 2, pane = 1)
render.line(v_d, "d", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.stoch_rsi

script.qs
ta.stoch_rsi(src, len = 14, stoch_len = 14, smooth_k = 3, smooth_d = 3) -> (k, d)

Stochastic of the RSI: (k, d).

ArgumentKindDefaultNotes
srcseriesrequired
lenint14
stoch_lenint14
smooth_kint3
smooth_dint3

Returns 2 values: k, d. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.stoch_rsi" { overlay = true }

(v_k, v_d) = ta.stoch_rsi(close)
render.line(v_k, "k", color = color.sky.400, width = 2, pane = 1)
render.line(v_d, "d", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.super_smoother

script.qs
ta.super_smoother(src, len = 10) -> series

Two-pole Butterworth low-pass filter.

ArgumentKindDefaultNotes
srcseriesrequired
lenint10

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.super_smoother" { overlay = true }

v = ta.super_smoother(close)
render.line(v, "ta.super_smoother", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.supertrend

script.qs
ta.supertrend(factor = 3, len = 10) -> (line, direction)

Supertrend: (line, direction) with direction 1 up, -1 down.

ArgumentKindDefaultNotes
factornum3
lenint10

Returns 2 values: line, direction. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.supertrend" { overlay = true }

(v_line, v_direction) = ta.supertrend()
render.line(v_line, "line", color = color.sky.400, width = 2)
render.line(v_direction, "direction", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.symmetric

script.qs
ta.symmetric(src) -> series

Symmetric 4-bar weighted average (1, 2, 2, 1).

ArgumentKindDefaultNotes
srcseriesrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.symmetric" { overlay = true }

v = ta.symmetric(close)
render.line(v, "ta.symmetric", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.tema

script.qs
ta.tema(src, len) -> series

Triple exponential moving average.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.tema" { overlay = true }

v = ta.tema(close, 20)
render.line(v, "ta.tema", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.triple_smooth

script.qs
ta.triple_smooth(src, len = 5, vfactor = 0.7) -> series

Six-stage EMA smoother with volume factor (T3-type).

ArgumentKindDefaultNotes
srcseriesrequired
lenint5
vfactornum0.7

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.triple_smooth" { overlay = true }

v = ta.triple_smooth(close)
render.line(v, "ta.triple_smooth", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.trix

script.qs
ta.trix(src, len = 18) -> series

Rate of change of a triple EMA, in percent.

ArgumentKindDefaultNotes
srcseriesrequired
lenint18

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.trix" { overlay = true }

v = ta.trix(close)
render.line(v, "ta.trix", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.true_range

script.qs
ta.true_range() -> series

True range of the bar.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.true_range" { overlay = true }

v = ta.true_range()
render.line(v, "ta.true_range", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.tsi

script.qs
ta.tsi(src, short = 13, long = 25, signal = 13) -> (tsi, signal)

True strength index: (tsi, signal).

ArgumentKindDefaultNotes
srcseriesrequired
shortint13
longint25
signalint13

Returns 2 values: tsi, signal. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.tsi" { overlay = true }

(v_tsi, v_signal) = ta.tsi(close)
render.line(v_tsi, "tsi", color = color.sky.400, width = 2, pane = 1)
render.line(v_signal, "signal", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.ultimate

script.qs
ta.ultimate(fast = 7, mid = 14, slow = 28) -> series

Ultimate oscillator over three windows.

ArgumentKindDefaultNotes
fastint7
midint14
slowint28

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.ultimate" { overlay = true }

v = ta.ultimate()
render.line(v, "ta.ultimate", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.value_at

script.qs
ta.value_at(cond, src, occurrence = 0) -> series

Value of src on the occurrence-th most recent bar where cond was true.

ArgumentKindDefaultNotes
condboolrequired
srcseriesrequired
occurrenceint0

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.value_at" { overlay = true }

v = ta.value_at(close > ta.sma(close, 20), close)
render.line(v, "ta.value_at", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.vidya

script.qs
ta.vidya(src, len = 14, cmo_len = 9) -> series

Variable index dynamic average (CMO-adaptive).

ArgumentKindDefaultNotes
srcseriesrequired
lenint14
cmo_lenint9

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.vidya" { overlay = true }

v = ta.vidya(close)
render.line(v, "ta.vidya", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.volume_osc

script.qs
ta.volume_osc(short = 5, long = 10) -> series

Volume oscillator in percent.

ArgumentKindDefaultNotes
shortint5
longint10

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.volume_osc" { overlay = true }

v = ta.volume_osc()
render.line(v, "ta.volume_osc", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.volume_profile

script.qs
ta.volume_profile(rows = 24, value_area = 0.7, period = session, bars = 0) -> (poc, vah, val)

Volume profile levels: (poc, vah, val).

ArgumentKindDefaultNotes
rowsint24
value_areanum0.7
periodtextsessionone of session, bars, all
barsint0

Returns 3 values: poc, vah, val. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.volume_profile" { overlay = true }

(v_poc, v_vah, v_val) = ta.volume_profile()
render.line(v_poc, "poc", color = color.sky.400, width = 2)
render.line(v_vah, "vah", color = color.amber.400, width = 2)
render.line(v_val, "val", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.vortex

script.qs
ta.vortex(len = 14) -> (plus, minus)

Vortex: (plus, minus).

ArgumentKindDefaultNotes
lenint14

Returns 2 values: plus, minus. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.vortex" { overlay = true }

(v_plus, v_minus) = ta.vortex()
render.line(v_plus, "plus", color = color.sky.400, width = 2, pane = 1)
render.line(v_minus, "minus", color = color.amber.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.vwap

script.qs
ta.vwap(src = bar.typical, period = day, mult = 1, reset = 0) -> (vwap, upper, lower)

Anchored VWAP with deviation bands: (vwap, upper, lower).

ArgumentKindDefaultNotes
srcseriesbar.typical
periodtextdayone of day, week, month, none
multnum1
resetbool0

Returns 3 values: vwap, upper, lower. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.vwap" { overlay = true }

(v_vwap, v_upper, v_lower) = ta.vwap()
render.line(v_vwap, "vwap", color = color.sky.400, width = 2)
render.line(v_upper, "upper", color = color.amber.400, width = 2)
render.line(v_lower, "lower", color = color.violet.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.vwma

script.qs
ta.vwma(src, len, vol = volume) -> series

Volume-weighted moving average.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired
volseriesvolume

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.vwma" { overlay = true }

v = ta.vwma(close, 20)
render.line(v, "ta.vwma", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.williams

script.qs
ta.williams(len = 14) -> series

Williams %R (-100 .. 0).

ArgumentKindDefaultNotes
lenint14

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.williams" { overlay = true }

v = ta.williams()
render.line(v, "ta.williams", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.williams_ad

script.qs
ta.williams_ad() -> series

Williams accumulation / distribution.

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.williams_ad" { overlay = true }

v = ta.williams_ad()
render.line(v, "ta.williams_ad", color = color.sky.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.wma

script.qs
ta.wma(src, len) -> series

Linearly weighted moving average.

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.wma" { overlay = true }

v = ta.wma(close, 20)
render.line(v, "ta.wma", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.zero_lag

script.qs
ta.zero_lag(src, len) -> series

Zero-lag EMA (de-lagged input).

ArgumentKindDefaultNotes
srcseriesrequired
lenintrequired

Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.zero_lag" { overlay = true }

v = ta.zero_lag(close, 20)
render.line(v, "ta.zero_lag", color = color.sky.400, width = 2)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

ta.zigzag

script.qs
ta.zigzag(deviation = 5, depth = 10) -> (price, offset, direction)

Last confirmed swing: (price, bars back, direction).

ArgumentKindDefaultNotes
deviationnum5
depthint10

Returns 3 values: price, offset, direction. Keeps state per call site.

QuaScriptengine result
Loading the engine result…
example.qs
analysis "ta.zigzag" { overlay = true }

(v_price, v_offset, v_direction) = ta.zigzag()
render.line(v_price, "price", color = color.sky.400, width = 2)
render.line(v_offset, "offset", color = color.amber.400, width = 2, pane = 1)
render.line(v_direction, "direction", color = color.violet.400, width = 2, pane = 1)
quatick-charts · QuaScript engine on synthetic 1-minute bars · drag to pan · scroll to zoom · Run executes the script on the engine (⌘/Ctrl+Enter while editing)

© 2026 Quatick Technologies. All rights reserved.