On Balance Volume
OBV
OBV adds the bar's volume to a running total when price closes up and subtracts it when price closes down. It is the simplest way to ask whether a move has participation behind it — but on a retail forex chart the volume it counts is tick volume, which is not the same thing as money.
- Period
- None
- Volume used
- Tick
- Zero line
- None
예시용 — 합성 데이터로, 실시간 호가가 아닙니다.
What OBV tells you
OBV keeps one running total. Every bar that closes higher adds that bar's volume; every bar that closes lower subtracts it. The idea is that participation should lead price — if the total keeps climbing while price stalls, buyers are still arriving. What it cannot tell you is how much was traded, because on most retail forex feeds the number being accumulated is a count of price changes, not a quantity.
- Rising OBV: up-closing bars are carrying more volume than down-closing ones
- Falling OBV: the reverse
- The absolute value means nothing — only the direction does
- 1 Compare this close with the previous one
- 2 Add the bar's volume if up, subtract if down
- 3 Carry the running total forward
공식 및 계산 세부 정보 표시
On Balance Volume is a running total with one rule per bar:
- Compare this bar’s close with the previous bar’s close.
- If it closed higher, add this bar’s volume to the total. If it closed lower, subtract it. If they are equal, leave the total alone.
- Carry the result forward to the next bar.
OBV = OBVprev ± Volume, and that is the whole calculation. There is no period, no smoothing and no scaling, which is why the indicator has no settings to tune and why its output has no bounds.
The reasoning behind it is that volume should lead price: if the total keeps rising while price moves sideways, buying is being absorbed and the move is more likely to resolve upward. That reasoning depends entirely on the volume series meaning what it is supposed to mean. On an exchange-traded instrument it does. On a retail forex pair the terminal reports tick volume — the number of quote updates in the bar — so OBV there accumulates activity rather than money, and a burst of small updates counts the same as genuine size.
In MQL5 the call is iOBV(symbol, period, applied_volume) where period is the timeframe and applied_volume is VOLUME_TICK or VOLUME_REAL. There is no applied-price argument — the direction comes from comparing closes internally, and the only thing you choose is which volume series to accumulate. The Builder’s generated code passes VOLUME_TICK.
신호
OBV이 제공하는 백테스트 가능한 뚜렷한 신호 — 및 각 신호에 적합한 시장 상황.
Breakout Confirmation
Builder로 구현 가능Divergence from Price
고급 로직OBV Trendline Break
수동 해석MT5 구현
MetaTrader 5가 실제로 계산하고 그리는 내용 — 이 페이지의 모든 규칙이 기준으로 삼는 사양입니다.
버퍼
| 인덱스 | 버퍼 | MT5 표시 방식 | 저장 값 |
|---|---|---|---|
| 0 | MAIN_LINE | Line | The running total itself. It has no upper or lower bound and no natural origin — the value depends on how far back the chart's history goes, so only its direction and its relation to its own earlier values carry information. |
플랫폼 참고
가장 잘 작동하는 경우 / 주의해서 사용
어떤 지표도 보편적인 우위를 가지지 않습니다. OBV이 도움이 되는 곳 — 그리고 오해를 일으키는 곳.
가장 잘 작동하는 경우
- Confirming a breakout rather than initiating one
- Instruments where the broker supplies real volume
- Higher timeframes, where tick counts are less erratic
- Comparisons against OBV's own recent values
주의해서 사용
- Any absolute threshold on the value
- Comparing OBV across instruments or brokers
- Treating tick volume as traded volume
- Divergence read by eye without a defined rule
OBV 전략 구축
신호를 진입 및 청산 규칙에 연결하고, 컴파일 가능한 MT5 EA를 내보내세요 — 코드 없이.
- OBV read at the current bar
- A second OBV node read 20 bars back
- Compare the two — rising means accumulation
- Price crosses the upper Bollinger band and OBV is rising → Open Buy · SL 50 / TP 150
- Price crosses the lower band and OBV is falling → Open Sell
- Stop then trails behind the recent swing
OBV을 다른 지표와 결합
하나의 지표만으로는 충분하지 않습니다. 이 조합들이 OBV의 취약점을 보완합니다.
OBV + Bollinger Bands
- Price crosses the upper band
- OBV above its value 20 bars ago
- Buy
OBV + Moving Average
- Price above the EMA
- OBV rising
- Buy
No single-flow template pairs OBV with a moving average. Start from OBV Confirmation + Bollinger Breakout and swap the band cross for an MA node with a Compare against price.
Builder 열기 →OBV + MFI
- OBV rising
- MFI below 20
- Buy
No single-flow template pairs OBV with MFI. Start from OBV Confirmation + Bollinger Breakout and add an MFI node with a Compare at 20, replacing the band condition.
Builder 열기 →OBV + Force Index
- OBV above its value 20 bars ago
- Force Index crosses above zero
- Buy
No single-flow template pairs the two. Start from OBV Confirmation + Bollinger Breakout and swap the band cross for a Force Index node crossed against a Constant of 0 — Force Index has a zero to cross, which OBV does not.
Builder 열기 →OBV + Chaikin Oscillator
- OBV above its value 20 bars ago
- Chaikin above zero
- Buy
No single-flow template pairs the two. Start from OBV Confirmation + Bollinger Breakout and swap the band cross for a Chaikin node compared against a Constant of 0 — Chaikin has a zero to compare against, which OBV does not.
Builder 열기 →매개변수
자신의 통화쌍과 시간 프레임에서 검증할 초기값 — 보장된 설정이 아닙니다.
| 매개변수 | 기본값 | 권장 테스트 범위 | 기능 |
|---|---|---|---|
| Applied volume | Tick volume | — | iOBV's only real argument besides symbol and timeframe. MQL5 accepts VOLUME_TICK or VOLUME_REAL, but the Builder's generated code fixes it to tick volume, which is the series retail forex feeds actually populate. |
| Period | — | — | There is none. Unlike almost every other indicator, OBV has no averaging window — it is a running total from the start of the loaded history, so there is nothing here to optimise. |
| Shift | 0 | 0–30 | Which bar back the node reads the buffer from. Because OBV has no threshold to compare against, two nodes at different shifts are the normal way to express 'is it rising' — that is exactly what the template does with 0 and 20. |
초기 프리셋
시장 예시
OBV이 작동하는 곳, 실패하는 곳, 그리고 필터가 결과를 어떻게 바꾸는지.
Break with flow behind it
Price clears the upper band and OBV is already well above where it sat twenty bars earlier — participation arrived before the break and continued after it.
Break on nothing
The same band break happens but OBV is flat or lower than it was. Price pokes through and falls back, which is the case the confirmation exists to filter.
The confirmation blocks the trade
A cluster of band touches in a quiet stretch is skipped entirely because the running total never turns up, and the account avoids a series of small losses.
FAQ
- Is the volume in MT5 real volume?
- On retail forex, no. There is no central exchange for spot FX, so the terminal reports tick volume — how many times the quote changed during the bar. It correlates with activity and is genuinely useful as a participation proxy, but it is a count of updates, not a quantity traded. MQL5 does define VOLUME_REAL for instruments where the broker supplies it, and iOBV accepts it, but the Builder's generated code passes VOLUME_TICK.
- What period should I use for OBV?
- There is no period. OBV is a running total with no averaging window, which is unusual and is the reason there is nothing to optimise on the indicator itself. The number you choose is the comparison distance — how far back you look to decide whether the total is rising — and that lives in your rule, not in iOBV.
- Why can't I just use a threshold like 'OBV above 100,000'?
- Because the value depends on where the chart's history starts. Load more bars and every OBV reading changes. Two terminals on the same pair can show totals that differ by orders of magnitude, so a fixed level is meaningless and will behave differently on your broker than in a backtest with different history depth.
- How do I read OBV divergence in an EA?
- You have to define it first. Divergence means the sequence of price extremes disagrees with the sequence of OBV extremes, which needs swing detection on both series and memory across many bars. The node palette expresses single-bar comparisons, so the slope check is buildable today and divergence needs custom MQL5.
- Can I build an OBV EA without coding?
- Yes, as a confirmation. The OBV Confirmation + Bollinger Breakout template places two OBV nodes — one at the current bar, one twenty bars back — compares them to establish direction, and requires that agreement before acting on a band break. The lookback distance and the band settings are all EA inputs.
- How should I validate settings before going live?
- Backtest on quality tick data first, then run the EA on a demo account before risking money. Be aware that OBV's input is your broker's tick count, so results are more broker-dependent than for a price-only indicator — a backtest on one feed's tick data does not transfer as cleanly as usual. Hold back data the search never saw and prefer settings that stay profitable across periods.