For the complete documentation index, see llms.txt. This page is also available as Markdown.

OBV oscillator reference

Shared reading rules — index notation, the L/S/N codes, crossings and Reverse — are on Signal passports. Main backtest settings and the card schema are on Settings and card schema. The behaviour contract is Rules for AI assistants.

Knowledge package 0.6.1, checked 22 September 2026, build 03613bfa. Use the shared role, Reverse and timing rules. The current ID OBV_OSCILLATOR is displayed as On Balance Volume (OBV), but its condition uses a normalized, smoothed oscillator, not the raw cumulative OBV line.

Calculation and settings

The reviewed OBV input uses close and quote volume. Start with cumulative volume signed by the change in close. Subtract its EMA with period ch_len, giving D. Smooth abs(D) with the same period, multiply by nm_coef, and divide D by that denominator. Finally smooth the normalized series with an EMA of period avg_len. Call the result O.

Defaults: ch_len=5, avg_len=10, nm_coef=0.015, up=75, low=−75. ch_len and avg_len are integers 2…200. The reviewed constructor does not establish complete bounds or an up>low guard for nm_coef/up/low. Do not import RSI's thresholds or assume a validated channel ordering. A zero normalization denominator is undefined in the reviewed calculation; it is not an invented zero oscillator value.

Entry — obv-oscillator.entry

CEC: O1>low and O0<=low gives L; otherwise O1<up and O0>=up gives S; otherwise N.

CRTC: O1<low and O0>=low gives L; otherwise O1>up and O0<=up gives S; otherwise N.

These are channel events with current equality included and first-branch priority. The mean and normalization periods do not create an MA crossover rule.

Filter — obv-oscillator.filter

BIC: low<=O0<=up gives AA; otherwise N. Both boundaries are included.

BHL: O0>up gives IL; otherwise O0<low gives IS; otherwise N. These outer comparisons are strict. With ordinarily ordered thresholds, equality at either threshold gives N here. Do not silently reorder thresholds; explain the resulting first-match behaviour and obtain explicit values for an unusual channel. The absence of a constructor ordering guard is not an invented rejection rule.

Exit — obv-oscillator.exit

Use the selected CEC/CRTC event and the shared cba/Reverse rules. ED/EDOP responds to the opposite directional result; AVG responds to the own-side result. This is not a condition on raw OBV crossing zero.

Definition coverage and observed controls

The controls below identify this dated schema. Their exact labels, value types and context overrides are in the catalogue. Any omitted standard selector must not be added manually.

  • obv-oscillator.entry — MAIN / OBV_OSCILLATOR. Semantics: Entry — obv-oscillator.entry. Fields: ss, Is, ct, at, rs, ch_len, avg_len, nm_coef, up, low, ec. timeframe: ID-specific list; default 1m; candles: DEFAULT/HEIKEN_ASHI; default DEFAULT; calculation: CL/CR; default CR; Reverse: available; default false.

  • obv-oscillator.exit — CLOSE_BY / OBV_OSCILLATOR. Semantics: Exit — obv-oscillator.exit. Fields: ss, Is, ct, at, rs, cba, ch_len, avg_len, nm_coef, up, low, ec. timeframe: ID-specific list; default 1m; candles: DEFAULT/HEIKEN_ASHI; default DEFAULT; calculation: CL/CR; default CR; Reverse: available; default false.

  • obv-oscillator.filter — PRICE_LIMIT / OBV_OSCILLATOR_PRICE_LIMIT. Semantics: Filter — obv-oscillator.filter. Fields: ss, Is, ct, at, rs, pla, ch_len, avg_len, nm_coef, up, low, ft. timeframe: ID-specific list; default 1m; candles: DEFAULT/HEIKEN_ASHI; default DEFAULT; calculation: CL/CR; default CR; Reverse: available; default false.

Exact machine reference

Read common settings and card schema first. The following blocks are complete family excerpts, not standalone replacement files. Apply only the selected context overrides and check availability. Use the complete downloaded files for the validator.

Catalogue definitions and overrides

Condition constraints and dependencies