TradingView chart patterns

Descending triangle pattern: support and lower highs

A descending triangle pattern has repeated lows near horizontal support and lower highs beneath a falling resistance line. It is commonly read as a bearish setup, but the shape does not determine the breakout direction. A close below support, a failed breakdown and a close above descending resistance are different outcomes that should all remain in the record.

See the decision guide

Recognize horizontal support and descending resistance

The descending triangle chart pattern narrows because each rebound reaches a lower high while the lows stay near the same level. TradingView describes this geometry in its Triangle drawing tool and explicitly allows an upside break. A hand-drawn outline identifies a candidate; it does not establish a trade entry or a probability of success.

FeatureWhat to defineWhat does not qualify
SupportA saved horizontal price and a tolerance around itMoving support lower whenever a new low appears
Lower highsAt least two separate rebound highs, with the later high lowerTwo highs at the same level, which describe a different boundary
TouchesAlternating swings with a minimum separationSeveral adjacent candles touching support during one visit
ConvergenceFalling resistance remains above support until the projected intersectionTwo falling boundaries, which need a wedge or channel definition
ContextRecord the preceding trend separately from the geometryAssuming the shape must continue a downtrend regardless of what follows

A hypothetical five-touch specification

This example uses three support visits and two rebound highs, in the order L1, H1, L2, H2, L3. It is a custom specification, not a TradingView default or a recommended trading setup. Use standard price candles. Confirm each swing only after three bars on either side have strictly lower highs or strictly higher lows, respectively; reject ties.

  • Require every close from L1 through candidate creation to remain between S - 0.3 and R(t) + 0.3. Freeze the selected swings, S and m when the candidate becomes available.
  • Here L3 becomes confirmed at the close of bar 33. Assume the containment rule still holds then; evaluate the first breakout on bars 34 through 39. A move that happened before creation is not backdated into a signal.
  • If consecutive detected pivots have the same type, retain the more extreme one before selecting the five-swing sequence. Once a candidate is active, keep its anchors unchanged until its first breakout or expiry.
  • The 0.3-unit band is meaningful only for this hypothetical price scale. Percentage or volatility-based tolerances are alternative models that require separate tests.
RuleIllustrative settingWorked example
Swing selectionUse the latest five alternating confirmed swings; each neighboring swing is 4 to 12 bars apartL1 at bar 10, H1 at 15, L2 at 20, H2 at 25, L3 at 30
Support toleranceSet S = L1; require L2 and L3 within 0.3 price units of SL1 = 100, L2 = 100.2, L3 = 99.9; S = 100
ReboundsRequire H1 > H2 and both highs at least 2 units above SH1 = 110 and H2 = 106
Resistance slopem = (H2 - H1) / (bar H2 - bar H1)(106 - 110) / (25 - 15) = -0.4 units per bar
Resistance at bar tR(t) = H1 + m × (t - bar H1)At bar 34: 110 - 0.4 × 19 = 102.4
ExpiryStop evaluating new breakouts when R(t) reaches SThe lines meet at bar 40; eligible events end at bar 39

Compare a breakdown, a false breakdown and an upside break

All paths below start from the same saved candidate and branch after bar 33. A downside event is the first completed close below S - 0.3; an upside event is the first completed close above R(t) + 0.3. Equality does not qualify. Consume the candidate after its first event so one structure cannot generate repeated entries.

  • For this experiment, label an early false breakdown when a close above S + 0.3 occurs within the next five bars after the downside event. A later recovery is logged separately. This definition is not TradingView's built-in Failed status.
  • Apply a corresponding rule to upside events: a close below R(t) - 0.3 within the next five bars is an early failed upside break. Use the saved line for this follow-up, even if the original candidate has expired.
  • An upside break before a downside event is not a failed short trade when no short entry existed. Keep candidate invalidation, post-signal failure and trade profit or loss in separate columns.
Hypothetical pathPrice observationClassification
Downside breakBar 34 closes at 99.5, below 99.7A confirmed downside event under this rule; continuation is still unknown
Wick below supportBar 34 trades at 99.4 but closes at 100.1No downside event, because the closing condition fails
False breakdownBar 34 closes at 99.5; bar 35 closes at 100.4A downside event followed by a close above S + 0.3; preserve both events
Upside breakBar 34 closes at 103.0, above 102.4 + 0.3The bearish setup is invalidated; a separate upside model can evaluate it
No breakCloses stay within the buffered boundaries through bar 39Expire the candidate at bar 40 without inventing a direction

Measure volume without using it to choose the answer

Volume describes participation around a move; it cannot establish that support will break or that a breakout will persist. Schwab discusses volume as evidence used alongside price trends. For this example, compare the same volume rule for both directions and retain the unfiltered sample as a baseline.

  • Record formation volume over fixed windows, such as bars 10 through 19 versus bars 20 through 29. Report whether the average rose or fell; do not require contraction after seeing the eventual outcome.
  • An illustrative breakout filter is current completed-bar volume divided by the average volume of the previous 20 completed bars, excluding the trigger bar, at least 1.5. A ratio of 1.8 passes; 1.2 does not. These thresholds have no measured advantage here.
  • Log a missing or zero denominator as unavailable. Do not silently count it as a pass, and document whether the feed represents traded volume or tick activity before comparing instruments.
  • On intraday charts, a simple rolling average can mix quiet and active parts of the session. Comparing equivalent times of day is another model; keep that change separate from the pattern rules.
  • Higher volume on a failed breakdown remains a failed breakdown. A volume filter should not remove losing events from the unfiltered record.

Separate the swing date from the signal date

TradingView's automatic Triangle detector documents 5/5 pivots and close-based breakouts. Its In Progress option can include emerging points that are not confirmed pivots. This differs from the three-right-bar example above. The drawing tool, the automatic indicator and a custom detector need not select the same triangle.

  • A pivot at bar 30 with three required bars on its right becomes known at bar 33, not bar 30. Store the pivot bar, confirmation bar and breakout bar separately.
  • Plotting a confirmed pivot back on its original candle can make a historical chart appear earlier than the information was available. Replay the candidate one completed bar at a time when checking the implementation.
  • Waiting for a completed bar addresses an intrabar condition that may disappear before close. It does not prove that every other source of repainting has been removed.
  • Do not reconstruct the historical sample from only the patterns still visible on the chart. Save events when they occur, including candidates that expire and breakouts that later fail.

Test both directions with fixed trade assumptions

Pattern recognition supplies events, not a complete strategy. Before comparing outcomes, specify order timing, position size, stops, targets, maximum holding time, commissions and slippage. Use the same candidate population for the downside-only and two-direction versions, then explain which events each version trades.

  • An illustrative height projection uses H1 - S = 10. A downside reference is S - 10 = 90; an upside reference from R(34) is 102.4 + 10 = 112.4. This is a chosen geometric convention, not a forecast or guaranteed fill.
  • Keep entry-at-breakout and entry-after-retest as separate experiments. Waiting for a retest can miss a move that never returns, and a touched level does not by itself specify an executable order.
  • Ask Pineify AI Coding Agent to draft the saved-anchor, confirmation and event-log rules. Review the generated code and its syntax, then check that signals appear on the correct bars in TradingView.
  • After those rules are implemented as a strategy, expose tolerances and confirmation choices as supported inputs for Strategy Optimizer. Compare parameter combinations on a research period, then evaluate the chosen settings on a separate period.
  • Report expired candidates, both breakout directions, early failures and net trade outcomes. A profitable selected example or the best parameter combination cannot establish general reliability.
Where Pineify fits

Pine Script AI Coding Agent

Draft a detector from explicit support, lower-high and confirmation rules. Inspect the generated conditions and record both breakout directions. This guide does not scan live markets or provide a pretested strategy.

Also useful: Strategy Optimizer. Compare supported strategy input combinations after implementing the rules in TradingView. Parameter search does not validate the detector or guarantee results outside the tested sample.

Draft descending triangle rules

Frequently asked questions

Educational information, not investment advice. All prices, thresholds and event paths are hypothetical. No backtest or live performance is reported. Pattern confirmation, volume and parameter optimization do not guarantee trading profits.

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.