Indicator Catalog
Built-in indicators ship with the platform. Custom indicators (see Custom Indicators) can be defined inline or published to your organization’s catalog.
The platform seeds 175 indicators in seven families. Every one of them is callable from RaamCode, and every one has a page below.
Identifier vs. label
The Indicator column is the identifier a strategy writes — PriceOscillator(12, 26, on=self.trade). The Chart label column is the human name the chart’s indicator picker shows for the same thing. They are two names for one indicator, and only the identifier is valid in RaamCode source; a label with spaces was never a callable name.
Trend (40)
Direction and the lines that draw it — moving averages, channels, stops, and the trend-strength gauges.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
SMA |
Simple Moving Average | single decimal | Trend baseline, crossover signals. |
EMA |
Exponential Moving Average | single decimal | Faster-reacting trend baseline. |
WMA |
Weighted Moving Average | single decimal | Linearly-weighted trend baseline. |
DonchianHigh |
Donchian High | single decimal | Breakout level — rolling maximum close. |
DonchianLow |
Donchian Low | single decimal | Trailing exit level — rolling minimum close. |
DonchianMid |
Donchian Mid | single decimal | Mean-reversion target — channel midpoint. |
Signals |
Crossover Signals | single decimal | Fast MA that draws triangles on price/MA crossovers. |
TrendIntensity |
Trend Intensity | single decimal | Percentage stretch of price from its SMA. |
MADeviation |
MA Deviation | single decimal | Absolute distance between price and its SMA. |
ADX |
Average Directional Index | .adx, .di_plus, .di_minus |
Wilder’s trend-strength gauge from smoothed directional movement, 0–100 and direction-blind; .di_plus/.di_minus carry the direction. |
ALMA |
Arnaud Legoux Moving Average | single decimal | Gaussian-weighted average with a tunable offset — shift the weight toward recency for less lag, toward the middle for more smoothness. |
AccumulativeSwingIndex |
Accumulative Swing Index | single decimal | Wilder’s swing index accumulated bar by bar — a smoothed proxy for the “real” price line behind the noise. |
ChandeKrollStop |
Chande Kroll Stop | .long, .short |
ATR-offset stop levels on both sides, then smoothed by taking the extreme of the last N raw stops. |
DEMA |
Double EMA | single decimal | 2xEMA minus EMA-of-EMA — Mulloy’s lag-reduced exponential average. |
DonchianHighTrue |
Donchian High (True) | single decimal | Rolling maximum of the true highs over the window — the textbook upper channel line. The seeded DonchianHigh uses closes. |
DonchianLowTrue |
Donchian Low (True) | single decimal | Rolling minimum of the true lows over the window — the textbook lower channel line. The seeded DonchianLow uses closes. |
FiftyTwoWeekHighLow |
52 Week High/Low | .high, .low, .position |
The long-lookback high and low with where price sits between them, 0 to 1. Default 252 bars is one year of daily data. |
GuppyMMA |
Guppy Multiple Moving Average | .short_top, .short_bottom, .long_top, .long_bottom, .short_width, .long_width |
Six short EMAs (traders) and six long EMAs (investors) as a ribbon — compression and expansion of the two groups is the signal. |
HMA |
Hull Moving Average | single decimal | Weighted averages combined to cut lag while staying smooth — 2xWMA(n/2) minus WMA(n), WMA-smoothed over sqrt(n). |
HammingMovingAverage |
Hamming Moving Average | single decimal | Cosine-window weighted average — tapers the window’s edges, so old bars leave the average gently instead of falling off a cliff. |
IchimokuCloud |
Ichimoku Cloud | .tenkan, .kijun, .span_a, .span_b |
Tenkan, Kijun and the two Senkou spans — the full Ichimoku set, computed at the current bar rather than displaced forward. |
KAMA |
Kaufman Adaptive Moving Average | single decimal | An average that speeds up when the market moves efficiently and slows to a crawl in noise, driven by the efficiency ratio. |
LSMA |
Least Squares Moving Average | single decimal | The endpoint of the least-squares fit over the window — the regression line’s value at the newest bar. |
LinearRegressionCurve |
Linear Regression Curve | single decimal | The least-squares fitted value at each bar, drawn as a curve. Numerically identical to LSMA; listed under both names members search for. |
LinearRegressionSlope |
Linear Regression Slope | single decimal | Slope of the least-squares fit of price over the window — price units per bar. Positive rising, negative falling. |
McGinleyDynamic |
McGinley Dynamic | single decimal | A self-adjusting average that speeds up in falling markets and hugs price through speed changes — the denominator adapts to the ratio of price to the line. |
HighLowMAChannel |
High/Low MA Channel | .upper, .mid, .lower |
A simple average of the highs and a simple average of the lows, drawn as a band around price. |
ParabolicSAR |
Parabolic SAR | single decimal | Wilder’s stop-and-reverse — a stop that accelerates toward price each time the move extends, and flips on contact. |
FloorPivotPoints |
Floor Pivot Points | .pivot, .r1, .r2, .s1, .s2 |
Classic floor-trader pivot with two supports and two resistances, computed from the previous bar. On a daily session the previous bar is the previous day. |
PriceChannel |
Price Channel | .upper, .mid, .lower |
The N-bar high and low with their midline — the Donchian channel delivered as one three-output indicator. |
SMMA |
Smoothed Moving Average | single decimal | Wilder’s smoothed average (RMA) — prev + (close — prev) / n, seeded with a simple average. The smoothing inside ATR and RSI. |
SuperTrend |
SuperTrend | .line, .direction |
An ATR band that ratchets one way and flips side when price closes through it. .line is the trailing stop, .direction is +1 or -1. |
T3 |
Tillson T3 | single decimal | Six chained EMAs recombined with volume-factor coefficients — smooth like a long average, lag like a short one. |
TEMA |
Triple EMA | single decimal | 3xEMA — 3xEMA-of-EMA + EMA-of-EMA-of-EMA — Mulloy’s further lag-reduced exponential average. |
TRIMA |
Triangular Moving Average | single decimal | Double-smoothed average — triangular weights peak at the window’s centre, so it is smoother and laggier than an SMA. |
TSF |
Time Series Forecast | single decimal | The least-squares regression line extended one bar ahead — the fit’s prediction for the next close. |
VIDYA |
Variable Index Dynamic Average | single decimal | An EMA whose speed is scaled by momentum strength — fast when CMO is stretched, near-frozen when momentum washes out. |
VWMA |
Volume-Weighted Moving Average | single decimal | Average close weighted by each bar’s volume. Tracks where the traded money actually was, not just where price was. |
VortexIndicator |
Vortex Indicator | .vi_plus, .vi_minus |
Upward and downward swing movement normalised by true range — the crossing of the two lines marks a trend change. |
WilliamsAlligator |
Williams Alligator | .jaw, .teeth, .lips |
Three smoothed averages of the bar midpoint — jaw, teeth and lips. Computed at the current bar rather than displaced forward. |
Momentum (33)
Rate of change and the oscillators built on it — how fast price is moving and whether that pace is fading.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
RSI |
Relative Strength Index | single decimal | Overbought / oversold (mean reversion). |
MACD |
MACD | .line, .signal, .histogram |
Trend momentum (EMA difference). |
ROC |
Rate of Change | single decimal | Percentage momentum. |
Momentum |
Momentum | single decimal | Absolute momentum, trend confirmation. |
PriceOscillator |
Price Oscillator | single decimal | Fast SMA minus slow SMA. |
PercentPriceOscillator |
Percent Price Oscillator | single decimal | The same gap as a percentage — portable thresholds. |
StochasticClose |
Stochastic Close | single decimal | Close-only stochastic oscillator, 0–100. |
WilliamsClose |
Williams Close | single decimal | Williams %R variant on closes, −100–0. |
CCI |
Commodity Channel Index | single decimal | Overbought / oversold on typical price. |
Aroon |
Aroon | .up, .down, .oscillator |
Trend-strength + direction. |
AcceleratorOscillator |
Accelerator Oscillator | single decimal | The Awesome Oscillator minus its own simple average — momentum’s acceleration rather than its level. |
AwesomeOscillator |
Awesome Oscillator | single decimal | Fast minus slow simple average of the bar midpoint (H+L)/2. Positive and rising reads as bullish momentum. |
BalanceOfPower |
Balance of Power | single decimal | (Close — Open) / (High — Low) — where the close finished relative to the open, scaled by the bar’s range. Optionally smoothed. |
CMO |
Chande Momentum Oscillator | single decimal | Unsmoothed gains minus losses over the window, scaled -100 to +100. Sharper and noisier than RSI by construction. |
ConnorsRSI |
Connors RSI | single decimal | The average of three components — a short RSI of price, an RSI of the up/down streak, and the percent rank of the last return. |
CoppockCurve |
Coppock Curve | single decimal | A weighted average of two long rates of change — built for monthly index bottoms, read as a slow momentum turn. |
DPO |
Detrended Price Oscillator | single decimal | A past close minus the average centred on it. Removes the trend and leaves the cycle; deliberately not aligned with the current bar. |
FisherTransform |
Fisher Transform | .fisher, .trigger |
Ehlers’ Gaussianised price position — normalises the range position then stretches the tails, so turning points become sharp spikes. |
IntradayMomentumIndex |
Intraday Momentum Index | single decimal | RSI computed on open-to-close moves instead of close-to-close — candle bodies, aggregated into an oscillator. |
KST |
Know Sure Thing | .kst, .signal |
Pring’s summed momentum — four smoothed rates of change on rising horizons, weighted 1/2/3/4, with a signal line. |
UpCloseRatio |
Up-Close Ratio | single decimal | The percentage of the last N bars that closed above the bar before. A blunt, robust regime read. |
PercentRank |
Percent Rank | single decimal | What fraction of the last N values the current one exceeds, 0–100. A distribution-free way to say “unusually high”. |
QStick |
QStick | single decimal | The average of (close — open) over N bars — whether candles have been closing above or below where they opened. |
RateOfChangePercent |
Rate of Change Percent | .percent, .ratio, .ratio100 |
Percentage change over N bars, with the ratio and indexed-ratio variants as extra outputs. |
RelativeVigorIndex |
Relative Vigor Index | .rvi, .signal |
Close-minus-open over high-minus-low, both weighted across four bars and smoothed — does the close finish strong relative to the range?. |
SMIErgodic |
SMI Ergodic | .ergodic, .signal |
The True Strength Index under its other name, with a signal line — Blau’s ergodic oscillator. |
Stochastic |
Stochastic | .k, .d |
%K and %D on the true high-low range — where the close sits in the window’s range, smoothed. The seeded StochasticClose uses closes. |
StochasticMomentumIndex |
Stochastic Momentum Index | .smi, .signal |
Where the close sits relative to the midpoint of the range rather than its low — Blau’s centred stochastic, -100 to +100. |
StochasticRSI |
Stochastic RSI | .k, .d |
The stochastic applied to RSI instead of price — a faster, twitchier oscillator. %K and %D, 0–100. |
TRIX |
TRIX | single decimal | One-bar rate of change of a triple-smoothed EMA, in basis points. Zero-line crosses are the classic signal. |
TSI |
True Strength Index | .tsi, .signal |
Double-smoothed momentum over double-smoothed absolute momentum, scaled -100 to +100, with a signal line. |
UltimateOscillator |
Ultimate Oscillator | single decimal | Buying pressure over true range, blended across three lookbacks (7/14/28 weighted 4/2/1). Reads 0–100. |
WilliamsR |
Williams %R | single decimal | Where the close sits relative to the window’s true high, from 0 (strongest) to -100 (weakest). The seeded WilliamsClose uses closes. |
Volatility (26)
How wide the bars are — ranges, bands, and the regime measures built from them.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
BollingerBands |
Bollinger Bands | .upper, .mid, .lower |
Mean reversion, volatility squeeze. |
ATR |
Average True Range | single decimal | Volatility (true range). |
StdDev |
Standard Deviation | single decimal | Volatility, custom bands. |
VolatilityStdDev |
Annualized Volatility | single decimal | Volatility regime filter — stddev of log returns × √252. |
PriceChannelWidth |
Price Channel Width | single decimal | Channel width in price units (max − min of closes). |
NormalizedRange |
Normalized Range | single decimal | Channel width as a percentage — comparable across instruments. |
ATRPercent |
ATR Percent | single decimal | ATR as a percentage of the close — volatility in units comparable across instruments. The input volatility-scaled sizing wants. |
BollingerBandwidth |
Bollinger Bandwidth | single decimal | Bollinger band width as a fraction of the middle band — the squeeze detector. Low bandwidth means compression. |
BollingerPercentB |
Bollinger %B | single decimal | Where the close sits inside the Bollinger bands — 0 at the lower band, 1 at the upper, outside that range beyond them. |
ChaikinVolatility |
Chaikin Volatility | single decimal | The rate of change of a smoothed high-low range — how fast the market’s daily range is expanding or contracting. |
ChoppinessIndex |
Choppiness Index | single decimal | Range efficiency on a 0–100 log scale — near 100 the market is chopping in place, near 0 it is trending. |
Envelopes |
Envelopes | .upper, .mid, .lower |
Fixed-percentage bands around a simple average. The non-adaptive control every volatility band is judged against. |
GarmanKlassVolatility |
Garman-Klass Volatility | single decimal | An OHLC volatility estimator — combines the log range with the log open-to-close move for a more efficient read than either alone. |
HistoricalVolatility |
Historical Volatility | single decimal | Annualised standard deviation of log returns, in percent. Set annualization to bars per year for the session in use. |
KeltnerChannels |
Keltner Channels | .upper, .mid, .lower |
EMA centreline with ATR bands. Smoother than Bollinger and gap-aware; the squeeze setup compares the two. |
MassIndex |
Mass Index | single decimal | A bulge in the ratio of two smoothed range EMAs — range expansion that often precedes a reversal, regardless of direction. |
NATR |
Normalized ATR | single decimal | TA-Lib’s normalised average true range — ATR as a percentage of the close, under the name TA-Lib users search for. |
ParkinsonVolatility |
Parkinson Volatility | single decimal | A range-based volatility estimator — uses the high-low span rather than closes, so it extracts more information per bar. |
RangeExpansionIndex |
Range Expansion Index | single decimal | Tom DeMark’s REI — how much the recent highs and lows have expanded relative to their own recent movement, -100 to +100. |
RelativeVolatilityIndex |
Relative Volatility Index | single decimal | RSI computed on standard deviation instead of price — is volatility itself trending up or down?. |
StandardError |
Standard Error | single decimal | How far price scatters around its own regression line — low means the trend explains the move, high means it does not. |
StandardErrorBands |
Standard Error Bands | .upper, .mid, .lower |
The regression line with bands a multiple of the standard error away — a channel that narrows when the trend is clean. |
TR |
True Range | single decimal | Max of (high-low), |high-previous close|, |low-previous close|. Wilder’s raw one-bar volatility unit; ATR is its average. |
UlcerIndex |
Ulcer Index | single decimal | Root-mean-square drawdown from the running high — downside-only volatility, the measure that matches how losses actually feel. |
VolatilityCloseToClose |
Close-to-Close Volatility | single decimal | The plain close-to-close estimator with a zero-mean assumption — the baseline every other volatility estimator is compared against. |
VolatilityCloseToCloseMovingBars |
Close-to-Close Volatility (Moving Bars) | single decimal | Close-to-close volatility over only the bars whose close changed, so illiquid flat bars cannot drag the estimate down. |
Volume (19)
What traded, not just where — accumulation, flow, and volume-weighted prices.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
Volume |
Volume | single decimal | Per-bar volume, tinted by candle direction. |
AccumulationDistribution |
Accumulation/Distribution | single decimal | Cumulative close-location-value times volume — where in the range the bar closed, weighted by how much traded. |
ChaikinMoneyFlow |
Chaikin Money Flow | single decimal | Close-location value times volume, summed over the window and scaled by total volume. Bounded -1 to +1, no drift. |
ChaikinOscillator |
Chaikin Oscillator | single decimal | MACD of the accumulation/distribution line — fast minus slow EMA of A/D, so it reads money-flow momentum rather than level. |
EaseOfMovement |
Ease of Movement | single decimal | How far price moved per unit of volume — high when a small amount of trading moved the market a long way. |
ForceIndex |
Force Index | single decimal | Price change times volume, smoothed — Elder’s measure of the force behind a move, combining direction, size and participation. |
KlingerOscillator |
Klinger Oscillator | .kvo, .signal |
Volume force signed by the direction of the typical price, smoothed fast and slow — long-term money flow with a signal line. |
MarketFacilitationIndex |
Market Facilitation Index | single decimal | Bar range per unit of volume — how much price movement each contract bought. Read alongside volume’s own direction. |
MoneyFlowIndex |
Money Flow Index | single decimal | RSI weighted by volume — typical-price money flow split into positive and negative, scaled 0–100. |
NegativeVolumeIndex |
Negative Volume Index | single decimal | A cumulative index that only changes on falling-volume bars — the theory being that quiet days are the smart money’s days. |
SignedVolume |
Signed Volume | single decimal | Volume signed by the bar’s direction: positive on an up close, negative on a down close, optionally summed over a window. |
OBV |
On-Balance Volume | single decimal | Cumulative volume signed by the close’s direction. The level is meaningless — read the slope and divergences. |
PositiveVolumeIndex |
Positive Volume Index | single decimal | A cumulative index that only changes on rising-volume bars — the crowd’s index, the mirror of NVI. |
PriceVolumeTrend |
Price Volume Trend | single decimal | Cumulative percentage price change times volume — OBV’s cousin, weighting each bar’s volume by how far price actually moved. |
RelativeVolume |
Relative Volume | single decimal | Volume as a multiple of its own N-bar average — 2.0 means twice the usual participation. |
RollingVWAP |
Rolling VWAP | single decimal | Volume-weighted average of typical price over the last N bars. Not session VWAP — it has no anchor and never resets at the open. |
VWAPDeviation |
VWAP Deviation | single decimal | Distance from the rolling VWAP in standard deviations — the mean-reversion read on a volume-weighted reference. |
VolumeOscillator |
Volume Oscillator | single decimal | Fast volume average versus slow, as a percentage of the slow. Positive means activity is picking up. |
VolumeROC |
Volume Rate of Change | single decimal | Percentage change in volume over N bars — the participation spike that confirms or contradicts a price move. |
Statistical (15)
Descriptive statistics on the price series — regressions, moments, and the average prices.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
AutoCorrelation |
Auto-Correlation | single decimal | Correlation of returns with their own lag — positive means momentum persists, negative means the series mean-reverts bar to bar. |
AverageDeviation |
Average Deviation | single decimal | Mean absolute deviation from the window’s mean — dispersion that does not square outliers, so a single spike moves it less than stddev. |
AveragePrice |
Average Price | single decimal | (Open + High + Low + Close) / 4 — the four-point bar average, optionally smoothed by a simple average. |
EfficiencyRatio |
Efficiency Ratio | single decimal | Net move divided by total path — 1 when price went straight there, near 0 when it wandered. Kaufman’s noise measure. |
HurstExponent |
Hurst Exponent | single decimal | Rescaled-range estimate of persistence — above 0.5 the series trends, below 0.5 it mean-reverts, 0.5 is a random walk. |
Kurtosis |
Kurtosis | single decimal | Tail weight of the return distribution — excess kurtosis, where 0 is Gaussian and positive means fatter tails than normal. |
LinearRegression |
Linear Regression | .fitted, .slope, .r2 |
Least-squares fit of price on bar index over the window — the fitted endpoint, the slope, and the R-squared fit quality. |
LinearRegressionAngle |
Linear Regression Angle | single decimal | The regression slope expressed as an angle in degrees — a bounded reading that does not scale with the instrument’s price. |
LinearRegressionIntercept |
Linear Regression Intercept | single decimal | The fitted value at the window’s first bar — where the regression line starts, the anchor its slope pivots from. |
MedianPrice |
Median Price | single decimal | (High + Low) / 2 — the bar’s midpoint, optionally smoothed by a simple average. The Awesome Oscillator’s input. |
Skewness |
Skewness | single decimal | Asymmetry of the return distribution over the window — negative means the left tail is longer, the crash-risk direction. |
TypicalPrice |
Typical Price | single decimal | (High + Low + Close) / 3, optionally smoothed by a simple average. The price transform CCI, MFI and rolling VWAP build on. |
Variance |
Variance | single decimal | Rolling variance of the close — the squared dispersion standard deviation is the root of, useful where a squared scale is wanted. |
WeightedClose |
Weighted Close | single decimal | (High + Low + 2xClose) / 4 — a bar summary that leans toward the close, optionally smoothed by a simple average. |
ZScore |
Z-Score | single decimal | How many standard deviations the close sits from its rolling mean. The general-purpose mean-reversion primitive. |
Regime (8)
One reading that answers “is this market trending or ranging” before a strategy commits to either.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
ADXR |
ADX Rating | single decimal | The average of today’s ADX and the ADX from N bars ago — a slower, steadier read of trend strength. |
ElderRayPower |
Elder-Ray Power | .bull, .bear, .power |
Elder’s Elder-Ray: how far the high sits above an EMA (bulls) and how far the low sits below it (bears), plus their sum. |
ChopZone |
Chop Zone | single decimal | A trend-direction zone from the slope angle of a typical-price EMA: -4 (steep down) through 0 (flat) to +4 (steep up). |
MarketMeanness |
Market Meanness Index | single decimal | How often price crosses back over its own running median — near 75 percent is random, lower means a real trend is present. |
TrendQuality |
Trend Quality | single decimal | Trend strength divided by the noise around it — the regression slope over the window, scaled by its own standard error. |
CorrelationTrend |
Correlation Trend (Ehlers) | single decimal | Ehlers’ correlation of price with time over the window, -1 to +1: a direct measure of how steadily price has been moving. |
VerticalHorizontalFilter |
Vertical Horizontal Filter | single decimal | Net range over total path travelled — high means one directional move, low means the same ground covered many times. |
VolatilityRegime |
Volatility Regime | single decimal | Current volatility as a percentile of its own long history — 0 means the calmest it has been, 100 the most violent. |
Patterns (34)
Single- and multi-bar candlestick and structure events — each returns 1 or −1 on the bar it fires, 0 otherwise.
| Indicator | Chart label | Output | What it measures |
|---|---|---|---|
BeltHold |
Belt Hold | single decimal | A long body that opened at its own extreme and never looked back — bullish opens at the low, bearish opens at the high. |
DarkCloudCover |
Dark Cloud Cover | single decimal | A black bar that opens above the previous white bar’s high and closes back below its midpoint — a rejected gap up. Returns -1. |
Doji |
Doji | single decimal | A bar whose body is negligible against its range — buyers and sellers finished level. Returns 1 when present, 0 otherwise. |
DojiStar |
Doji Star | single decimal | A doji that gaps away from the previous long body — the trend ran out of participants overnight. Returns 1 after a black bar, -1 after a white one. |
DragonflyDoji |
Dragonfly Doji | single decimal | A doji whose open and close sit at the top of the range — a long lower shadow rejected entirely. Bullish, returns 1. |
Engulfing |
Engulfing | single decimal | A body that completely covers the previous bar’s body and closes the other way — the strongest two-bar reversal. Returns 1 bullish, -1 bearish. |
EveningStar |
Evening Star | single decimal | A long white bar, a small gapped-up body, then a black bar closing well into the first — a three-bar top. Returns -1. |
FractalHigh |
Fractal High | single decimal | Williams’ five-bar fractal — a high with two lower highs on each side. Confirmed two bars late by construction. |
FractalLow |
Fractal Low | single decimal | Williams’ five-bar fractal — a low with two higher lows on each side. Confirmed two bars late by construction. |
GapDown |
Gap Down | single decimal | An open below the previous bar’s low — the market repriced between sessions. Returns -1. |
GapUp |
Gap Up | single decimal | An open above the previous bar’s high — the market repriced between sessions. Returns 1. |
GravestoneDoji |
Gravestone Doji | single decimal | A doji whose open and close sit at the bottom of the range — a long upper shadow rejected entirely. Bearish, returns -1. |
Hammer |
Hammer | single decimal | A small body at the top of the range with a long lower shadow, after a decline — sellers pushed down and were rejected. Returns 1. |
HangingMan |
Hanging Man | single decimal | A hammer shape appearing after an advance — the same long lower shadow, read as a warning instead of a bottom. Returns -1. |
Harami |
Harami | single decimal | A small body contained entirely inside the previous bar’s larger body — the trend paused. Returns 1 after a black bar, -1 after a white one. |
HaramiCross |
Harami Cross | single decimal | A harami whose inside bar is a doji — the pause is a complete standstill, which makes the signal stronger than a plain harami. |
InsideBar |
Inside Bar | single decimal | A bar whose entire range sits inside the previous bar’s range — a contraction, and the setup half of most breakout rules. Returns 1. |
InvertedHammer |
Inverted Hammer | single decimal | A small body at the bottom of the range with a long upper shadow, after a decline — a failed rally that still shows demand. Returns 1. |
LongLeggedDoji |
Long-Legged Doji | single decimal | A doji with long shadows on both sides — a wide fight that settled exactly where it started. Indecision, returns 1. |
Marubozu |
Marubozu | single decimal | A bar that is almost all body — it opened at one extreme and closed at the other. Returns 1 for white, -1 for black. |
MorningStar |
Morning Star | single decimal | A long black bar, a small gapped-down body, then a white bar closing well into the first — a three-bar bottom. Returns 1. |
NBarNarrowRange |
N-Bar Narrow Range | single decimal | The narrowest range of the last N bars — the NR4 and NR7 compression setups. Returns 1 on the narrow bar. |
OutsideBar |
Outside Bar | single decimal | A bar whose range contains the previous bar’s entirely — an expansion that took out both sides. Returns 1. |
PiercingLine |
Piercing Line | single decimal | A white bar that opens below the previous black bar’s low and closes back above its midpoint — a rejected gap down. Returns 1. |
PivotHigh |
Pivot High | single decimal | A local high with equal numbers of lower highs on each side. Confirmed only after the right-hand bars arrive — it is late, not repainted. |
PivotLow |
Pivot Low | single decimal | A local low with equal numbers of higher lows on each side. Confirmed only after the right-hand bars arrive — it is late, not repainted. |
ShootingStar |
Shooting Star | single decimal | A small body at the bottom of the range with a long upper shadow, after an advance — buyers pushed up and were rejected. Returns -1. |
SpinningTop |
Spinning Top | single decimal | A small body with shadows on both sides — a bar that moved but resolved nothing. Indecision, returns 1. |
ThreeBlackCrows |
Three Black Crows | single decimal | Three consecutive black bars, each opening inside the last body and closing lower — a steady, broad decline. Returns -1. |
ThreeInside |
Three Inside Up/Down | single decimal | A harami confirmed by a third bar closing beyond the first body — the pause resolved in the new direction. Returns 1 up, -1 down. |
ThreeOutside |
Three Outside Up/Down | single decimal | An engulfing bar confirmed by a third bar continuing beyond it — the reversal followed through. Returns 1 up, -1 down. |
ThreeWhiteSoldiers |
Three White Soldiers | single decimal | Three consecutive white bars, each opening inside the last body and closing higher — a steady, broad advance. Returns 1. |
TweezerBottom |
Tweezer Bottom | single decimal | Two consecutive bars with matching lows after a decline — the same level defended twice. Returns 1. |
TweezerTop |
Tweezer Top | single decimal | Two consecutive bars with matching highs after an advance — the same level rejected twice. Returns -1. |
How to read each page
Every indicator page has the same shape:
- Signature — exact constructor with required and optional args.
- Formula — what it computes, in math.
- Warmup — how many bars before output is valid, and what it reports until then.
- Reading the value — single-value vs multi-value access.
- Example — minimal strategy using it.
- Notes — edge cases, common bugs.
Declaration convention
All indicators are constructed at the top of execute(). The transpiler hoists them so every bar feeds the indicator — not just bars where a conditional fires.
class DeclarationOrder(Strategy): """Indicators first, logic afterwards.""" fast = Param(7, min=2, max=50) slow = Param(21, min=10, max=200) trade = Symbol() sizing = FixedCapital()
def execute(self): # indicators at the top fast = SMA(self.fast, on=self.trade) slow = SMA(self.slow, on=self.trade) rsi = RSI(14, on=self.trade)
# logic afterwards self.stop_loss(2.0)
if fast.crossed_above(slow) and rsi.value < 70 and self.trade.is_flat: self.buy(self.trade)
if fast.crossed_below(slow) and self.trade.is_long: self.sell(self.trade, self.trade.position)