The Symmetric Triangle has converging trendlines with lower highs and higher lows — the market is compressing, undecided. It can break either way. Most often continues the prior trend direction, but always wait for confirmation.
Highs falling (112, 108, 105) and lows rising (92, 96, 99), using swings over five bars. The widest part is 112 − 92 = 20. Day 21 closes at 107, above the last high, so the measured move is 107 + 20 = 127.
The example data
The turning points the daily closes run through, in straight lines between them; high and low are half a point either side of each bar.
| Day | Close |
|---|---|
| 0 | 100 |
| 3 | 112 |
| 6 | 92 |
| 9 | 108 |
| 12 | 96 |
| 15 | 105 |
| 18 | 99 |
| 21 | 107 |
- It has no direction until it breaks; reading the prior trend into it is a guess.
- Edwards and Magee found breaks most reliable between half and three-quarters of the way to the apex; late breaks are weaker.
- False breaks that fall back into the triangle are common.
def swings(s, n=2): # a swing high (low) is the extreme of the 2n+1 bars around it
w = s.rolling(2 * n + 1, center=True)
return s[s == w.max()], s[s == w.min()]
c = df['close']
highs, lows = swings(c)
hi, lo = highs.iloc[-3:], lows.iloc[-3:]
symmetric = hi.is_monotonic_decreasing and lo.is_monotonic_increasing
height = hi.iloc[0] - lo.iloc[0] # the widest part
breakout = c.iloc[-1] > hi.iloc[-1]
target = c.iloc[-1] + heightAssumes import numpy as np, import pandas as pd, and a DataFrame df with columns open, high, low and close for the data above.
- Technical Analysis of Stock Trends, R. D. Edwards & J. Magee, 1948 (later editions revised by W. H. C. Bassetti)
- Encyclopedia of Chart Patterns (2nd ed.), T. N. Bulkowski, Wiley, 2005 — success and failure rates from large counts of patterns
Last reviewed October 2026 · How this site checks its content · Report a mistake