06 — Continuation Patterns

Bull Flag#

Bullish Cont.Heuristic1 min read
◆ The PatternSharp rally + downward-sloping channel = continuation

The Bull Flag starts with a sharp rally (the pole), followed by a gentle downward-sloping consolidation channel (the flag). Breakout above the flag's upper trendline continues the uptrend. A widely used continuation pattern.

Target = Breakout point + Pole length
The pole measures the initial move; project that distance from the breakout point for the target.
// Bull Flag — pole and flag anatomy
Key insight: The best bull flags have decreasing volume during the flag phase and expanding volume on the breakout — showing sellers exhausting themselves.
Pattern bridge: A pause in an uptrend before continuation. In ML, learning rate warmup creates the same pattern: a brief consolidation phase before the model accelerates.
Worked example

A pole from 100 to 115 in five days, then eleven days drifting down to 110 (a fitted slope of −0.32 a day). Day 16 closes at 116, above the flag’s high of 115. Measured move: 115 + 15 = 130.

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.

DayClose
0100
5115
7112
9114
11111
13113
15110
16116
Where it misleads
  • A flag that drifts too long, or gives back most of the pole, is no longer a pause but a reversal.
  • On real data the pole and flag lengths have to be chosen; the 5 and 11 bars here are fixed to this example.
  • The target assumes the second leg equals the first, and it often falls short.
In code
c = df['close']
pole = c.iloc[-12] - c.iloc[-17]                      # the 5-bar rise
flag = c.iloc[-12:-1]                                 # the 11 bars after it
slope = np.polyfit(np.arange(len(flag)), flag.values, 1)[0]
is_flag = pole / c.iloc[-17] > 0.08 and slope < 0     # sharp rise, then a drift down
breakout = c.iloc[-1] > flag.max()
target = flag.max() + pole
Python, in your browser — edit the code and run it again

Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns open, high, low and close for the data above.

Sources
  • Encyclopedia of Chart Patterns (2nd ed.), T. N. Bulkowski, Wiley, 2005 — success and failure rates from large counts of patterns
  • Technical Analysis of Stock Trends, R. D. Edwards & J. Magee, 1948 (later editions revised by W. H. C. Bassetti)

Last reviewed October 2026 · How this site checks its content · Report a mistake

Check yourself

1. What does a bull flag consist of?

Show answer

C. The flag is a pause after a strong move; the pattern is read as continuation if price breaks above it.

2. What volume pattern is traditionally expected?

Show answer

C. Falling volume during the flag is read as a lack of selling pressure — a heuristic, not a rule.

3. How is the classic target set?

Show answer

C. Measured moves assume the second leg repeats the first — a symmetry with little evidence behind it.

Linked from 1
← Previous
Rounding Bottom
Open in the full reader, with the topic sidebar