Chart pattern ยท Bullish continuation
Ascending Triangle pattern
By the PatternX team ยท Published
- Type
- Bullish continuation
- PatternX trades it
- Long (buy) on the breakout
- Also called
- ascending right-angle triangle, flat-top triangle
- Detected on
- 8 timeframes, 1-minute to daily โ crypto, stocks, ETFs and FX
Short answer
An ascending triangle is a chart pattern in which price repeatedly stalls at a roughly flat resistance level while each pullback ends at a higher low, squeezing the range between a horizontal ceiling and a rising floor. It is traditionally read as bullish: the usual signal is a close above resistance, with a measured-move target equal to the triangle's opening height.
What is an Ascending Triangle?
An ascending triangle forms when sellers defend one price level while buyers keep stepping in earlier on every dip. The highs line up along a horizontal resistance level and the lows rise along an upward-sloping trendline, so each swing is smaller than the last. Its mirror image is the descending triangle.
The usual reading is about pressure. A fixed ceiling suggests a block of supply at a known price, such as a large seller or a cluster of resting sell orders. Rising lows suggest demand is growing less patient: buyers no longer wait for the old lows. If the supply at the ceiling runs out, price can move quickly, because nobody is left absorbing the bids.
Classical charting treats it as a bullish continuation pattern within an uptrend, although it also appears as a base after a decline. It describes a tendency, not a certainty; the rising lows can always give way. PatternX trades it long only and, like all its detectors except the rectangles, does not check the prior trend.
Anatomy of the Ascending Triangle
Every ascending triangle is built from the same few parts. Naming them precisely makes the pattern easier to measure, and harder to imagine where it doesn't exist.
| Part | What it is | Why it matters |
|---|---|---|
| Flat resistance | Two or more swing highs at nearly the same price | The level that must give way; the breakout reference |
| Rising support | Two or more higher lows joined by a trendline | Shows buyers acting at progressively higher prices |
| Opening height | Resistance minus the first higher low | Sets the measured-move target |
| Latest height | Resistance minus the most recent higher low | Shows how far the range has compressed |
| Apex | Where the two lines would meet if extended | Breakouts very close to it are traditionally treated with caution |
| Breakout bar | The first close above resistance | The trigger, judged by its body and its volume |
Measure both heights in percentage terms rather than price units, so a $5 stock and a high-priced coin compare fairly. PatternX states its own limits the same way: the opening height as a percentage of the level, the latest height as a fraction of the opening height (see how PatternX detects patterns).
How to identify an Ascending Triangle
Use this checklist on any chart, with or without automation:
- Find the ceiling. Look for at least two swing highs that stop within a narrow band, around 1%. A "flat" line with a 3% spread is usually something else.
- Find the rising floor. Mark at least two swing lows, each higher than the one before. A single lower low in the sequence breaks the pattern.
- Check the size. Measure the opening height. If it is no bigger than the market's normal bar-to-bar noise, the triangle is too shallow to trade.
- Check the squeeze. The latest pullback should be clearly shallower than the first. Rising lows without a narrowing range describe a rising channel, not a triangle.
- Check that it is current. The ceiling should have been tested recently; a level last touched long ago is history.
- Wait for the break. You want a close above resistance, not a wick that pokes through and falls back.
- Plan before entering. Know the stop (usually under the latest higher low), the target (the opening height added to the breakout) and whether the reward justifies the risk.
The most common mistake is drawing the ceiling after the fact, through whichever wicks make a messy range look tidy.
Confirmation
Traditional confirmation has three parts: a close above resistance rather than an intrabar poke, a visible expansion in volume, and follow-through over the next few bars. Some traders also wait for a throwback, where price returns to the old ceiling and holds it as support. That entry offers a tighter stop, but many strong breakouts never come back, so waiting means missing some moves.
PatternX does not wait for follow-through or a retest. It evaluates the breakout on the latest bar: the close must be at least 0.1% above the level, the breakout candle's close must be above its open, and its volume must be at least 1.2 times the 20-bar average.
Invalidation
Before a breakout, the structure fails if price closes below the rising support line and sets a lower low: the buyers who kept stepping up have stopped. After a breakout, a quick return below the old resistance is the classic warning sign of a false breakout, and many discretionary traders exit on a close back inside the triangle.
PatternX does not make that kind of judgement once a trade is open. It has no post-entry invalidation logic beyond the stop level: the latest higher low, or your own stop-loss if that is tighter, is where the trade is closed. A close back under resistance does not end the position by itself. Earlier exits come from trailing-stop or break-even settings, run by PatternX's software loop rather than the venue, or from closing the trade yourself.
Volume
In the textbook version, volume tends to shrink as the triangle tightens, because fewer participants want to trade inside an ever-narrower range. The breakout itself is expected to arrive on a clear increase. A breakout on light volume is generally treated as less convincing, since it suggests the sellers at the ceiling stepped aside rather than being overwhelmed. Some analysts also like to see rallies toward the ceiling carry more volume than the pullbacks.
PatternX has no triangle-specific volume rule and does not examine volume inside the pattern. Its only requirement is the universal one applied to every detector: the breakout bar's volume must be at least 1.2 times its 20-bar average. Beyond that pass-or-fail test, the size of the surge feeds the Volume factor of the PatternX Score, so a stronger surge earns more points.
Common false signals
Ascending triangles fail in a few recognisable ways:
- The bull trap. Price closes above resistance, draws in breakout buyers, then sinks back into the triangle. It is more common when the break comes on thin volume or runs straight into resistance on a higher timeframe.
- The late break. A breakout that arrives only when the lines have almost met has little range left behind it and often lacks conviction.
- The breakdown. Rising lows are not a promise. If buyers stop stepping up, the floor gives way and the pattern resolves lower.
- The wick-drawn ceiling. A "flat" line fitted loosely through scattered highs creates a false level, and its "breakout" is just noise.
What helps: insist on a clear close rather than a wick, compare the level with resistance on a higher timeframe (multi-timeframe analysis), and size positions so that a failed break is an affordable loss. None of these steps makes a failure impossible.
Market context
Context changes how much weight an ascending triangle deserves. It reads most naturally as a pause within an existing uptrend, where the ceiling is simply the last pocket of supply before the advance resumes. After a long decline the same shape can be a base, but it is working against the larger trend and deserves more caution.
Look above the ceiling as well. If a major higher-timeframe level sits just overhead, the measured move may meet supply before it reaches its target. Very quiet markets are another warning sign, because breakouts from low volatility often lack follow-through.
PatternX's ascending-triangle detector does not check the prior trend. Context enters through the score instead: trend alignment (EMA20 against EMA50) and higher-timeframe agreement raise or lower confidence, which then has to clear your minimum. Neither is a hard filter.
In crypto markets
Crypto trades around the clock, so triangles form without the overnight gaps that complicate stock charts. Two features of crypto deserve extra attention. First, a flat ceiling on a popular coin is visible to everyone, and brief spikes through it that immediately reverse are common on lower timeframes; a wick above the level is not a breakout. Second, many traders use perpetual futures, where the funding rate shows whether longs are already crowded before the break.
Every PatternX signal must pass the liquidity and spread filters, and crypto adds a 24-hour volume floor of $3M, which keeps very thin markets out. Funding and open interest are small factors in the PatternX Score. See crypto chart pattern recognition for how scanning works across exchanges.
In stocks, ETFs and FX
In stocks and ETFs, the trading session shapes the pattern. Overnight news can open a stock above its resistance, so the break happens as a gap rather than a gradual push. That puts the entry far from the higher lows, widens the stop distance and weakens reward:risk; in PatternX a signal whose reward:risk falls below 1 is dropped. Earnings dates deserve the same caution, because a triangle that resolves on an earnings release is reacting to news rather than to the supply and demand the pattern described.
PatternX scans traditional markets through your own broker connection, across a curated list of 309 instruments covering US stocks, ETFs, leveraged and inverse ETFs, Bitcoin and Ether ETFs, and FX pairs. See stock chart pattern recognition for the details.
Timeframes
PatternX scans eight timeframes: 1m, 3m, 5m, 15m, 30m, 1h, 4h and 1d, and new accounts start with 5m, 15m and 1h. The ascending-triangle detector reads the last 80 bars, so the largest triangle it can see depends on the chart:
| Timeframe | 80 bars is about |
|---|---|
| 5m | 6.7 hours |
| 15m | 20 hours |
| 1h | 3.3 days |
| 4h | 13 days |
| 1d | 80 sessions (16 weeks of US trading, or 80 days in crypto) |
A multi-month triangle on a daily chart is outside the window, so it is not detected. Lower timeframes produce more, smaller triangles with more noise; higher timeframes produce fewer, larger ones. Each signal is also compared with the trend on the next timeframe up, which changes the score but never blocks the signal.
Example: the logic step by step
For example, suppose a hypothetical stock on a daily chart makes swing highs at 100.10, 100.40 and 100.25, giving a flat resistance near 100.25. In between, it sets swing lows at 96.00, 97.40 and 98.60, each higher than the last.
- Opening height: 100.25 โ 96.00 = 4.25, about 4.2% of the level.
- Latest height: 100.25 โ 98.60 = 1.65, about 39% of the opening height, so the range has clearly tightened.
- Breakout: the latest bar's close is 100.90, more than 0.1% above the level, on rising volume.
- Stop: below the latest higher low at 98.60, a risk of 2.30 per share.
- Target: 100.90 + 4.25 = 105.15, a reward of 4.25.
- Reward:risk: 4.25 รท 2.30 โ 1.8.
With PatternX's default settings, the stop would sit 0.2% below the higher low, at about 98.40, because that is tighter than a 5% stop at about 95.86, and the target would stay at 105.15 because it is nearer than a 10% take-profit at about 110.99. That trims reward:risk to about 1.7, still above the minimum of 1. None of these numbers describe a real trade.
How PatternX detects the Ascending Triangle
The ascending-triangle detector is deterministic: the same candles always give the same result. Each scan applies these rules to the latest 80 bars.
- Swing points. A bar is a swing high (or low) when it is the extreme of the five bars centred on it, two either side, so every swing is confirmed two bars after it forms.
- Flat resistance. At least two of the last eight swing highs within 1.2% of each other (up to four set the level), touched within the last 30 bars.
- Rising support. At least two swing lows, each strictly higher than the one before.
- Size and squeeze. The opening height must be at least 1.5% of the level, and the latest height no more than 72% of the opening height.
- Breakout. The latest bar must make a fresh close at least 0.1% above the level, and the last higher low must be no more than 20 bars old.
- Levels. Stop = the latest higher low. Target = entry + the opening height.
A match must then pass the universal filters: the breakout candle's close above its open, volume of at least 1.2ร the 20-bar average, ATR of at least 0.05% of price, a liquidity score of 30 or more, a spread of 0.25% or less, order-book imbalance against the long no worse than โ0.5 and, for crypto, at least $3M of 24-hour volume. The detector's geometry score is capped at 85. Pattern detection covers all 20 detectors.
How PatternX Classic evaluates it
In PatternX Classic, a detected ascending triangle is scored by the PatternX Score, a deterministic 0โ100 blend of 13 weighted factors. The triangle's geometry and a fixed prior for the pattern type make up 24% of the weight; the rest describes the market around it, from breakout strength and volume surge to EMA20/50 trend alignment, higher-timeframe agreement, liquidity, spread, order book and volatility. Scores land in four categories (Elite 80+, High 65+, Medium 50+, Weak below 50), and the score becomes the signal's confidence, which must reach your minimum (65 by default).
Levels are then combined with yours: the stop is the tighter of your stop-loss and the latest higher low with a 0.2% buffer, and the target is the nearer of your take-profit and the measured move. A signal with reward:risk below 1 is dropped, signals expire after 15 minutes, and every order still passes the risk controls.
What PatternX AI adds
PatternX AI, available on Pro and Elite, never searches for triangles; detection is identical in both modes. It runs afterwards, only on setups the engine has already accepted, and scores eight context factors with fixed weights. For an ascending-triangle long, the heaviest of them are directly relevant: trend strength (EMA12 against EMA26) asks whether the larger move is up, market structure checks whether the last three swing highs and lows within 60 candles agree with a long, and confluence counts how many of trend, structure, volume and momentum line up. Volatility regime compares ATR with price. The result can veto the setup or re-weight its confidence, but it never changes the stop, the target or the position size. The Classic vs AI page explains the difference in full.
Frequently asked questions
Is an ascending triangle always bullish?
No. It is traditionally read as bullish, but the rising lows can give way and the pattern can resolve downward. PatternX only trades the upside break, so a breakdown through the rising lows never produces an ascending-triangle signal.
How do you calculate an ascending triangle's price target?
Measure the triangle at its widest point, from resistance down to the first higher low, and add that distance to the breakout price. PatternX does the same, then uses whichever is nearer: that measured move or your own take-profit.
Where do traders put the stop-loss on an ascending triangle?
Common choices are just below the most recent higher low or just below the rising trendline. PatternX uses the latest higher low with a 0.2% buffer, unless your own stop-loss setting is tighter.
What is the difference between an ascending triangle and a bullish rectangle?
A rectangle has flat support as well as flat resistance, while an ascending triangle's lows keep rising. In PatternX, the bullish rectangle detector also requires a prior uptrend; the triangle detector does not.
How many touches does an ascending triangle need?
Two touches on each side is the minimum needed to draw the lines, and more touches make the levels easier to trust. PatternX needs at least two swing highs within 1.2% of each other and at least two strictly rising swing lows.