Appearance

Personalize your experience

Mode
Accent Color
Direction
Indicator Reference

Indicator Reference

Reference

All 94 indicators the strategy engine computes, grouped as in the builder's picker, with their parameters, outputs and the range of values each output can take.

How to read this

These tables are generated from the engine's — the same list the form, node and JSON editors offer — so a name, parameter or output listed here is one the engine accepts, and anything not listed is with the JSON of the mistake. Every indicator is causal (its on a bar depends only on that bar and earlier ones) and has no value while it warms up.

The column matters for writing conditions: a condition that for a outside it can never be true and is (RSI > 120, Doji == 2). Prices are always above zero; events are 0 or 1; directions are −1, 0 or +1.

Families matter more than individual names. Every trend indicator answers “which way and how hard”, every momentum oscillator “how stretched”. Two members of one family give the same answer twice; useful combinations families.

Price

Bar prices and price changes.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
Close price.—value: price
OpenBar open price.—value: price
HighBar high price.—value: price
LowBar low price.—value: price
HL2(high + low) / 2.—value: price
HLC3(high + low + close) / 3.—value: price
OHLC4(open + high + low + close) / 4.—value: price
PriceChangeChange of the source over N bars, in price units.period = 1 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value

Trend

Moving averages and trend-following overlays.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
SMASimple moving average.period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
EMA.period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
WMALinearly weighted moving average.period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
DEMADouble exponential moving average: 2· − EMA(EMA).period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
TEMATriple exponential moving average.period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
HMAHull moving average: WMA(2·WMA(n/2) − WMA(n), √n).period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
KAMAKaufman adaptive moving average.period = 10 (2…1000); fast = 2 (1…100); slow = 30 (2…500); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
VWMAVolume-weighted moving average.period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
Supertrend trailing that flips with the trend.period = 10 (1…1000); multiplier = 3 (0.1…20)line: price; direction: -1, 0 or +1
ParabolicSAR's stop-and-reverse.step = 0.02 (0.001…0.5); max = 0.2 (0.01…1)sar: price; direction: -1, 0 or +1
IchimokuIchimoku lines; the cloud spans are shown as plotted at the current bar.tenkan = 9 (1…200); kijun = 26 (1…300); senkou = 52 (1…500)tenkan: price; kijun: price; spanA: price; spanB: price
AroonBars since the / lowest low, scaled 0..100.period = 25 (1…1000)up: between 0 and 100; down: between 0 and 100; oscillator: between -100 and 100
ADXAverage directional index with +DI / −DI.period = 14 (1…1000)adx: between 0 and 100; plusDI: between 0 and 100; minusDI: between 0 and 100

Momentum

Oscillators measuring speed and strength of moves.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
RSI's .period = 14 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: between 0 and 100
MACD(fast) − EMA(slow) with a signal line.fast = 12 (1…500); slow = 26 (2…1000); signal = 9 (1…500); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)macd: any value; signal: any value; histogram: any value
StochasticSlow stochastic oscillator %K / %D.kPeriod = 14 (1…500); kSmooth = 3 (1…50); dPeriod = 3 (1…50)k: between 0 and 100; d: between 0 and 100
StochRSIStochastic of .rsiPeriod = 14 (2…500); stochPeriod = 14 (1…500); kSmooth = 3 (1…50); dSmooth = 3 (1…50); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)k: between 0 and 100; d: between 0 and 100
CCICommodity channel index of the typical price.period = 20 (2…1000)value: any value
WilliamsRClose relative to the N-bar range, −100..0.period = 14 (1…1000)value: between -100 and 0
ROCPercent change of the source over N bars.period = 12 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value
MFIVolume-weighted of the typical price.period = 14 (1…1000)value: between 0 and 100
AwesomeOscSMA(hl2, fast) − SMA(hl2, slow).fast = 5 (1…200); slow = 34 (2…500)value: any value

Volatility

Range, deviation and channel indicators.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
ATR's average true range, in price units.period = 14 (1…1000)value: at least 0
BollingerBandsSMA ± k standard deviations.period = 20 (2…1000); stdDev = 2 (0.1…10); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)middle: price; upper: price; lower: price; width: at least 0; percentB: any value
KeltnerChannel ± multiple of .period = 20 (1…1000); multiplier = 2 (0.1…10); atrPeriod = 10 (1…500)middle: price; upper: price; lower: price
DonchianChannel / lowest low over N bars (includes the current bar — use offset 1 for breakouts).period = 20 (1…1000)middle: price; upper: price; lower: price
StdDev population .period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: at least 0

Volume

Volume and money- indicators.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
VolumeBar volume.—value: volume, at least 0
VWAPVolume-weighted average price with standard-deviation bands.anchor = session (session | cumulative); bandMult = 1 (0.1…5)vwap: price; upper: price; lower: price
OBV volume signed by close direction.—value: volume
ADLine close-location-weighted volume.—value: volume
CMFMoney- volume over volume, −1..1.period = 20 (1…1000)value: between -1 and 1
VolumeSMASimple moving average of volume.period = 20 (1…1000)value: volume, at least 0
VolumeROCPercent change of volume over N bars.period = 14 (1…1000)value: any value
RelativeVolumeVolume divided by the average volume of the previous N bars.period = 20 (1…1000)value: at least 0

Statistics

of any bar field.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
StatMedian .period = 20 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
StatVariance population variance.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: at least 0
StatZScoreStandard deviations of the source from its mean.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value
StatPercentRankPercent of the previous N values below the current .period = 100 (1…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: between 0 and 100
StatCorrelationPearson correlation between two bar fields.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume); source2 = volume (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: between -1 and 1
StatSkewness of the .period = 20 (3…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value
StatKurtosis excess (0 = normal).period = 20 (4…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value
StatLinRegSlopeSlope of the least-squares line, price units per bar.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: any value
StatLinReg of the least-squares line at the current bar.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
StatRSquaredGoodness of the linear fit, 0..1.period = 20 (2…1000); source = close (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: between 0 and 1
Highest of the source over N bars (includes the current bar).period = 20 (1…1000); source = high (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price
Lowest of the source over N bars (includes the current bar).period = 20 (1…1000); source = low (close | open | high | low | hl2 | hlc3 | ohlc4 | volume)value: price

Support & Resistance

Daily levels, pivots, ranges and swings.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
PivotPoints floor pivots from the previous trading day.—pp: price; r1: price; r2: price; r3: price; s1: price; s2: price; s3: price
FibRetracement level of the N-bar range, measured down from the high.period = 100 (2…1000); level = 0.618 (0…1)value: price
PrevHighHigh of the previous trading day.—value: price
PrevLowLow of the previous trading day.—value: price
PrevCloseClose of the previous trading day.—value: price
DayOpenOpen of the current trading day.—value: price
DayHighHigh of the current trading day so far.—value: price
DayLowLow of the current trading day so far.—value: price
OpeningRangeHigh / low of the first N minutes of the day; available once the range is complete.minutes = 15 (1…480)high: price; low: price
SwingHighPrice of the most recent confirmed swing high (pivot with N lower highs on each side).strength = 3 (1…50)value: price
SwingLowPrice of the most recent confirmed swing low.strength = 3 (1…50)value: price

Market Structure

Swing structure, breaks and changes of character.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
HigherHigh1 while the latest swing high is above the previous one.strength = 3 (1…50)value: 0 or 1
LowerHigh1 while the latest swing high is below the previous one.strength = 3 (1…50)value: 0 or 1
HigherLow1 while the latest swing low is above the previous one.strength = 3 (1…50)value: 0 or 1
LowerLow1 while the latest swing low is below the previous one.strength = 3 (1…50)value: 0 or 1
BreakOfStructure+1 on the bar that closes above the last swing high, −1 below the last swing low.strength = 3 (1…50)value: -1, 0 or +1
ChangeOfCharacter+1 / −1 on a structure break against the prevailing trend.strength = 3 (1…50)value: -1, 0 or +1

Candlestick Patterns

1 on the bar the pattern completes, else 0.

IndicatorWhat it measuresParameters (default, range)Outputs and value range
DojiBody no larger than a fraction of the range.bodyRatio = 0.1 (0.01…0.5)value: 0 or 1
HammerLong lower , upper shadow, after a down bar.wickRatio = 2 (1…10)value: 0 or 1
InvertedHammerLong upper , lower shadow, after a down bar.wickRatio = 2 (1…10)value: 0 or 1
ShootingStarLong upper , lower shadow, after an up bar.wickRatio = 2 (1…10)value: 0 or 1
BullishEngulfingBullish body the previous bearish body.—value: 0 or 1
BearishEngulfingBearish body the previous bullish body.—value: 0 or 1
BullishHarami bullish body inside the previous bearish body.—value: 0 or 1
BearishHarami bearish body inside the previous bullish body.—value: 0 or 1
MorningStarBearish bar, -bodied bar, then a bullish bar closing past the first bar's midpoint.—value: 0 or 1
EveningStarBullish bar, -bodied bar, then a bearish bar closing past the first bar's midpoint.—value: 0 or 1
ThreeWhiteSoldiersThree rising bullish bars, each opening inside the previous body.—value: 0 or 1
ThreeBlackCrowsThree falling bearish bars, each opening inside the previous body.—value: 0 or 1
Marubozu+1 bullish / −1 bearish bar with (almost) no shadows.wickRatio = 0.05 (0…0.3)value: -1, 0 or +1

Date & Time

Calendar and clock values in the .

IndicatorWhat it measuresParameters (default, range)Outputs and value range
MarketOpen1 on the first bar of each trading day.—value: 0 or 1
MarketClose1 on bars that end within N minutes of the close time.closeTime = 1530 (0…2359); minutesBefore = 0 (0…600)value: 0 or 1
DayOfWeek1 = Monday … 7 = Sunday.—value: between 1 and 7 (whole numbers)
HourOfDayLocal hour, 0..23.—value: between 0 and 23 (whole numbers)
MinuteOfHourLocal minute, 0..59.—value: between 0 and 59 (whole numbers)
TimeOfDayLocal bar open time as HHMM, e.g. 930 for 09:30.—value: between 0 and 2359 (whole numbers)
BarOfDay1 for the first bar of the day, 2 for the second, …—value: at least 1 (whole numbers)

Custom formulas

CustomFormula evaluates an over bar fields and any indicator, per bar, like a indicator. Comparisons and logic yield 1 or 0, and a missing (warm-up) stays missing. The formula is checked when the is parsed: an unknown name or a syntax error is an error, not a silent zero.

formula operands
(close - SMA(close, 20)) / ATR(14)          # distance from the mean in ATRs
(high - low) / close * 100                   # bar range as a percent of price
BollingerBands(close, 20, 2).upper - close   # room left to the upper band
RSI(close, 14)[1] < 30 && close > open       # yesterday oversold, green bar today
KindAvailable
Bar fieldsopen, high, low, close, volume, hl2, hlc3, ohlc4
Functionsabs(), sqrt(), log(), exp(), ceil(), floor(), round(), pow(), min(), max(), sign(), clamp(), nz()
Operators+ - * / % ^ < > <= >= == != && || ! ?:
Indicatorsany catalog indicator as NAME(args).output[barsAgo], e.g. SMA(close, 20), BollingerBands(close, 20, 2).upper, RSI(close, 14)[1]

QuaScript indicators

QuaScript runs one of your QuaScript indicators inside the engine and reads one of its series: a render.line by its title, or a render.mark as a 1 / 0 event named mark: <title>. In the builder, pick it from the Custom category, load a saved indicator or a bundled preset, then choose the series and set the script's inputs.

a QuaScript operand
{
  "indicator": "QuaScript",
  "params": {
    "script": "analysis \"Fast RSI\" {}\nlen = param.int(7, \"Length\")\nrender.line(ta.rsi(close, len), \"RSI\")",
    "series": "RSI",
    "inputs": { "length": 9 }
  },
  "operator": "crossesAbove",
  "value": 30
}
!
Caution:Scripts that read another symbol, order- or files by are — a only has its own bars. Named libraries (use "smc/zones") work.

Choosing indicators

Selection guide

  • One per signal (a or an event), the rest as filters (comparisons)
  • Direction from a trend indicator: / SMA, Supertrend direction, ADX +DI / −DI
  • Timing from an oscillator or an event: , Stochastic, a pattern, a break of structure
  • Confirmation from a different family: volume (RelativeVolume, Volume vs VolumeSMA) or volatility (, bandwidth)
  • A higher-timeframe by setting the operand interval (e.g. 1h 50 on a 5m )
  • Clock and calendar filters (TimeOfDay, DayOfWeek) on intraday strategies — they are free and often worth more than another indicator

See also

Related articles

  • Quatick Script SDK Reference

    Coding / IDE / Reference

    The Quatick IDE injects the SDK directly into TypeScript indicator, overlay, and strategy scripts at Apply time. You do not import SDK functions. Use the…

  • Condition Evaluator

    Automation / Strategy Builder / Reference

    How a condition becomes true on a bar: series computed up front, no value during warm-up, the exact cross and rising rules, and the order of work on each…

  • DSL Bots

    Automation / Strategy Builder / Reference

    The 49 ready-made strategy-DSL bots: where to find them, how to load and adapt one, the file format, and what every bot is tested for.

  • Pitfalls & Anti-Patterns

    Automation / Strategy Builder / Reference

    The failure modes that show up repeatedly, what each one looks like from inside the builder, and the change that actually fixes it.

  • Strategy Builder FAQ

    Automation / Strategy Builder / Reference

    The questions that come up most often, answered with what the engine actually does rather than what would be convenient.

  • Strategy DSL Format

    Automation / Strategy Builder / Reference

    The engine JSON a strategy saves as. The form, node and JSON editors all edit this one document, and the C++ engine runs it unchanged in backtests and live.

  • Variables Reference

    Automation / Strategy Builder / Reference

    What can appear on either side of a condition — bar fields, earlier bars, higher timeframes, statistics, clock and calendar values, and formulas — and how…

  • ATR Channel

    Charts / Drawing Tools / Channels

    A least-squares trend line with boundaries a multiple of average true range away on each side. A volatility channel over a range you select — it answers how…

  • Book vs Tape Profile

    Trading / Order Book / Views

    What is resting at each price beside what has actually traded there — intent against action.

Browse all knowledge base articles →