TradingView chart patterns

Triple bottom pattern: three tests, then confirmation

A triple bottom pattern has three lows near the same price, separated by two rebounds. It suggests a possible reversal after a decline, but the third touch alone does not confirm one. TradingView uses the higher intervening peak as a horizontal neckline and requires a later close above it. Until then, the structure remains a candidate.

See the decision guide

Define the three tests before drawing the pattern

Label the lows L1, L2 and L3 in time order, with H1 between L1 and L2 and H2 between L2 and L3. A custom detector needs rules for selecting those swings. The following specification is illustrative; its thresholds are not TradingView defaults or measured optimal settings.

  • A fixed 0.5-unit tolerance changes meaning across instruments. A percentage or volatility-scaled tolerance is a different model and needs its own denominator and tests.
  • For a repeatable first version, evaluate the latest three qualifying lows. Do not skip a failed middle low simply because an older combination looks better.
  • A 5% decline filter does not prove an established downtrend. It makes this example context rule measurable; another definition changes which candidates qualify.
RuleIllustrative specificationReason to reject
Prior declineL1 is at least 5% below the highest high of the preceding 20 barsThe example reversal-context filter is not met
Distinct pivotsRequire three bars on either side with strictly higher lows; reject equal-low tiesAn apparent low has not yet received three confirming bars
Price toleranceHighest selected low minus lowest selected low is at most 0.5 price unitsOne low falls outside the permitted band
SpacingEach low-to-low interval is 8 to 30 barsAdjacent lows describe one cluster, or the interval is too long
Rebound and necklineUse the highest high strictly between each pair of lows; each rebound is at least 3 units above both adjacent lows. Save the higher high as NThe intervening move is too small to pass this rule

Work through one candidate without moving its neckline

Assume these hypothetical prices pass the prior-decline filter and the pivot checks above. Lows occur at bar 10 = 100.0, bar 22 = 100.3 and bar 34 = 99.9. The intervening highs are 106.0 at bar 16 and 105.0 at bar 28. The low spread is 0.4, both intervals are 12 bars, and the saved neckline N is 106.0.

  • The breakout condition is previous close at or below N and current completed close above N. Allow the confirmation bar itself if that condition passes.
  • If the crossing happened before L3 became available, do not assign a signal to that earlier bar. This example requires a fresh crossing after eligibility.
  • After creating the candidate, retain its prices and bars. A later high cannot quietly change N from 106 to a more convenient level.
ObservationDecision under this exampleRecorded state
Bar 34 prints 99.9Wait for the three right-side barsThird low is provisional
Bar 37 closes; all three later lows exceed 99.9L3 is now available to the detectorCandidate eligible at 37
Bar 38 trades at 106.4 but closes at 105.8The close does not exceed NNo breakout
Bar 39 closes at 106.2 after the previous close was 105.8Fresh closing crossing above NConfirmed event at 39
No eligible crossing during bars 37 through 56Expire after the 20-bar windowDiscard the candidate

A failed third test can invalidate the shape

Change only the third low in the hypothetical example from 99.9 to 98.8. The spread is now 100.3 minus 98.8, or 1.5 units. That exceeds the 0.5-unit tolerance, so the detector rejects the three-low candidate even if price subsequently rebounds. A later rally does not retroactively make the rejected structure valid.

  • TradingView documents a Failed status when price goes below the last bottom before reaching its target. The custom close-based failure rule above is a separate choice.
  • A wick through support followed by recovery can fit another hypothesis. Calling it a sweep does not exempt it from a detector rule that rejects a low below support.
  • Any trading version also needs order timing, exits, position sizing and costs. A pattern event alone is not a complete strategy.
Failure typeExample rule or observationKeep in the record
Third test outside toleranceL3 = 98.8 fails the permitted low spreadRejected geometry; no confirmed-pattern signal
Support breaks before confirmationFor an accepted candidate, a completed bar low falls below the lowest saved bottom before an eligible breakoutInvalidated candidate; evaluate this before breakout on the same bar
Breakout later failsUnder a custom close-based rule, a later close falls below the saved L3Keep the original breakout plus its later failure event
No breakout by expiryThe 20-bar candidate window endsExpired setup, distinct from a support break

Compare a triple bottom with a double bottom and a range

The number of tests describes the geometry; it does not establish a ranking of signal quality. A range can contain three support touches without producing an upward breakout. Use the same swing and tolerance definitions when comparing candidates.

StructureWhat is presentWhat remains unresolved
Double bottomTwo low tests with one rebound between themA third test is not needed to evaluate its own breakout rule
Triple-bottom candidateThree qualifying lows and two reboundsThe closing breakout may never arrive
Confirmed triple bottomThe saved structure passes its eligible neckline crossingThe signal can still fail or produce a loss after costs
Trading rangePrice remains bounded by support and resistanceNeither an upside reversal nor a breakout direction is established
Inverse head and shouldersThe middle trough is distinctly deeper than the shouldersIts shoulder and neckline rules need separate definitions

Record detection time separately from the low

TradingView documents 5/5 pivots in its built-in triple-bottom indicator; In Progress mode can show an unconfirmed third bottom. Its repainting documentation also explains why a pivot drawn on an old candle can become visible only after later candles confirm it. A historical drawing therefore does not prove that an alert was available at that low.

  • In the custom three-right-bar example, the low at 34 becomes usable at the close of 37. Store both timestamps, then store the breakout at 39 separately.
  • Review the same symbol, timeframe and rules one completed bar at a time. Preserve rejected candidates and failed signals instead of displaying only surviving patterns.
  • Before using generated code, inspect the pivot selection, tie handling, invalidation order and event timestamps. Syntax success cannot verify those choices.
  • Keep unconfirmed previews visually distinct from confirmed events. Waiting for a chart close addresses intrabar changes, but does not remove every source of repainting.
Where Pineify fits

Pine Script AI Coding Agent

Give Pineify your pivot rule, tolerance, spacing, fixed neckline and failure conditions to draft a Pine Script detector. Ask it to record candidate, confirmation and failure times separately, then inspect the code and request a syntax check. This page does not scan live charts or report tested performance.

Draft a triple-bottom detector

Frequently asked questions

Educational information, not investment advice. All numerical examples and custom thresholds are hypothetical. Pattern confirmation does not guarantee a reversal or profit. No backtest or live trading results are presented.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.