Reading Price Action: Trend, Flip Zones, and Confirmation with Trade with Pat

Video: Once You Understand Price Action, Trading Becomes Almost Too EASY
Creator: Trade with Pat
Original Video: Watch the original video

The Big Idea

Pat organizes price action around three decisions: direction → location → confirmation. First, identify the market’s structure. Next, mark a place where a pullback could offer a trade. Finally, observe how price behaves when it reaches that place.

This framework separates a directional opinion from an entry. An uptrend does not mean every price is a good place to buy. A demand zone does not mean price must rise. A bullish candle does not mean much unless you know where it appears and which broader movement it belongs to.

The video focuses on impulse–pullback–impulse sequences, supply and demand zones, support/resistance flips, and rejection or engulfing candles. Pat also describes discretionary judgment developed through experience. Understanding those ideas is possible without assuming that every example or reported result generalizes.

The learning goal is to move from a convincing chart story to decisions you can record before knowing the outcome. Our research lab translates one part of the framework-confirmed swing breaks followed by flip-zone retests-into an executable baseline.

If You Remember Only One Thing

A candle becomes useful evidence when you connect it to a known level and a clearly defined market structure.

60-Second Summary

  • Pat begins with an impulse, a pullback, and another impulse that breaks prior structure.
  • He seeks buys in an uptrend and sells in a downtrend.
  • A failed extension followed by a break of an opposing swing is his reversal framework.
  • His points of interest include demand, supply, continuation flip zones, and reversal flip zones.
  • He looks for a wick into a level followed by a close away, or an engulfing reaction.
  • Sometimes he enters after confirmation; sometimes he waits for a subsequent retest.
  • He uses structural stops and targets at relevant prior price areas, with discretionary management.
  • Reported win rates and account gains are claims requiring complete records to assess.
  • Our code tests a narrower, mechanical flip-zone model, not the presenter’s complete trading system.

Read the Sequence Before Reading the Candle

An impulse is a directional move; a pullback is a move against it. A second impulse that exceeds the previous high gives a bullish sequence additional evidence of continuation. The bearish version breaks the previous low.

Our original example: price rises from 100 to 105, pulls back to 102, then rises to 108. The higher low at 102 and higher high at 108 describe an upward structure. A pullback toward a previously broken level can now be studied in that context.

Why not simply buy because the last candle is green? A green candle can appear during a downtrend’s temporary rebound. Structure describes the sequence; candle color describes only one interval.

There is still judgment involved. A small swing on a five-minute chart may sit inside a larger daily downtrend. Before reviewing outcomes, choose the timeframe and write down which swing scale determines direction. Otherwise, “the trend” can change whenever a different interpretation looks more convenient.

A Deep Pullback Can Still Belong to an Uptrend

Pat discusses a deep retracement and describes an extended pullback that later reaches its target. His interpretation depends on which structural level remains intact. A deep pullback alone is not the same event as a close below the relevant protected low.

For a bullish swing from 100 to 108, its midpoint is 104. Prices in the lower half of that chosen range can be described as “discounted” relative to the range. That is a location convention, not evidence of intrinsic undervaluation or a guaranteed bargain.

Fibonacci labels depend on the tool’s orientation. Specify the actual prices and midpoint rather than relying on whether a displayed percentage says “above” or “below” 50%. Also decide the swing anchors before the trade; selecting better-looking anchors afterward introduces hindsight.

When Continuation Starts Looking Like Reversal

In Pat’s bearish-to-bullish example, price fails to make a new low, then closes above a prior swing high. That breaks the structure used to justify the bearish direction. The previously resisting area may then become a place to study a bullish retest.

A failure to extend is an alert. A break of the opposing swing is a separate event. Neither guarantees that the next trend will persist: price can also form a range or produce a failed break.

ObservationReasonable interpretationWhat it does not establish
Lower highs and lower lowsDownward structure on the chosen swing scaleEvery rally is a profitable short
A new push fails to break the old lowBearish continuation is less clearA completed bullish reversal
A close above the relevant prior highThe prior bearish structure has been challengedA durable uptrend or a ready-made entry
A later retest holds above that levelA possible support/resistance flipCertainty that the level will hold again

The transcript itself notes that traders might select different highs for the reversal break. That ambiguity matters: two people can draw different structures on the same chart. A mechanical experiment must replace it with an explicit swing definition.

Four Points of Interest, One Location Principle

AreaWhat Pat looks forQuestion at the revisit
DemandA strong upward departure that continues structure, ideally with imbalanceWill price react upward at the area of that departure?
SupplyA strong downward departure within bearish structureWill price react downward at that area?
Continuation flipResistance breaks in an uptrend, or support breaks in a downtrendWill the broken level act in its new role?
Reversal flipA level breaks as the prior structure changes directionWill a retest support the new directional hypothesis?

These locations concentrate attention. They do not prove that resting orders remain there. The useful observation is the departure and the later reaction; the identity and intentions of participants are an additional inference.

What “Institutional Demand” Adds-and What Candles Cannot Show

Pat attributes aggressive moves to institutions and interprets them as evidence that large participants may favor the origin area again. The supplied candles cannot identify who traded, why they traded, or whether they still intend to transact at that price. A large move may also reflect thin liquidity, news, short covering, or several participants acting together.

For research, replace that identity claim with observable variables: candle range, consecutive directional candles, a break of a previously known level, and subsequent retest behavior. An experiment can test whether that pattern predicts outcomes without pretending to identify “smart money.”

The video favors fair value gaps but also includes a supply example without one. A common mechanical bullish gap definition is a three-candle pattern with the third candle’s low above the first candle’s high; the bearish version reverses those comparisons. This is an optional experimental definition, not a reconstruction of the unseen chart. Such a pattern does not mean no trading occurred throughout that interval: the middle candle traded through part of it.

Confirmation: The Reaction Matters More Than the Label

Pat’s first confirmation is a wick entering a level and a close back on the intended side. For a short, price probes resistance and closes below it. His second is an engulfing reaction, especially when price has approached a demand area aggressively.

“Engulfing” needs a precise definition. Does the second candle cover the previous candle’s body or its entire high–low range? Our code uses real-body engulfing: a bullish candle’s body covers the preceding bearish body, with a mirrored bearish rule. This choice is ours.

The presenter sometimes waits for a further tap after confirmation. That creates two entry models: market entry after a completed signal, or a resting order for a later revisit. The latter may improve price but can miss the trade. Compare both filled trades and unfilled opportunities before deciding which model is better.

An Original Trade Example

Suppose resistance at 105 breaks and a later candle revisits a zone around it. A bullish reaction closes at 105.40. A structural stop at 104.80 and a previously known target at 106.60 create $0.60 of planned risk and $1.20 of potential reward: 2R before costs.

If a market entry fills at 105.70 while those levels stay fixed, risk is $0.90 and reward is $0.90: 1R. Confirmation and execution are separate. A good-looking signal can still produce a poor entry.

A buy limit at 105.20 submitted after confirmation may offer better distances if filled. It may also never fill. You cannot count a touch that happened before order submission as an executable entry, and a touch after submission does not guarantee a real fill at an available quote.

Holding Through Adversity Requires a Rule

The live example described in the transcript moves against Pat’s short before ultimately reaching his target. He says he remains in the trade despite concerning price behavior. That example illustrates his management choice; it does not establish that ignoring adverse structure is generally beneficial.

Separate a tolerated fluctuation from invalidation. Before entry, specify the structural stop, whether a completed close triggers an early exit, and any time limit. A winning ending cannot retrospectively justify unlimited patience. The baseline below uses a frozen bracket and a maximum holding time; it does not imitate intuition or discretionary re-entry.

What the Reported Results Do-and Do Not-Tell Us

Pat reports 36 wins and five losses, an over-80% win rate in his streams, and a member’s account gain exceeding 1,000%. He describes verification through Myfxbook. These are the presenter’s claims; no verification records were supplied or checked for this guide.

Our calculation converts 36 wins in 41 trades to approximately 87.8%. Even if those counts are accurate, they omit average win, average loss, costs, sample-selection rules, leverage, drawdown, and whether the trades belong to the exact method being taught.

Win rate alone cannot establish profitability. In our hypothetical example, 88% wins averaging +0.2R and 12% losses averaging −2R produce 0.88 × 0.2 − 0.12 × 2 = −0.064R per trade before costs. Those are teaching numbers, not measured results.

A reported account gain also needs dates, starting equity, deposits and withdrawals, open-position treatment, maximum drawdown, and a complete trade history. The transcript gives July 1 as a starting date but no year; this guide does not infer the missing period. A showcased account cannot establish typical participant outcomes.

Build One Transparent Flip-Zone Experiment

Research question: do retests of previously confirmed swing levels, after a closing breakout and directional confirmation, have positive net expectancy under a fixed fill-relative bracket model?

This experiment focuses on flip zones. It does not try to combine every supply, demand, reversal, gap, and discretionary rule into one strategy.

Source ruleOur experimental definitionImplementation shortcut
Identify market structureConfirmed pivots with three bars on each side; compare the last two highs and last two lowsLatest pivot comparisons approximate trend; they do not enforce every impulse–pullback relationship
Break and retest a flip levelCrossing close beyond a known swing; fixed zone ±0.15 ATR around it; later candle overlapsOnly the newest eligible zone is retained; it expires after 40 bars or fails on a close through its far edge
Wait for confirmationWick-through rejection close or real-body engulfing, selectableMarket entry after the signal; no resting retest entry
Place a stop beyond structureFreeze the signal-to-far-edge distance plus 0.10 ATRTranslate that distance to the actual fill, so the absolute stop can move away from the zone
Target a prior price areaDefault target of 2R from actual fill, rounded to ticksFixed R target replaces discretionary chart-level targets; time exit after 60 holding bars

ATR is an average true range measure used here to scale zone width and buffer to recent volatility. These constants are starting assumptions, not optimized or proven settings. A new eligible breakout replaces an older pending zone; older levels can therefore disappear before receiving a retest. That changes the sample and must remain visible.

Pine Script Research Strategy

//@version=6
strategy("Confirmed swing flip zones: research baseline", overlay=true,
     initial_capital=10000, pyramiding=0,
     default_qty_type=strategy.fixed, default_qty_value=1,
     commission_type=strategy.commission.percent, commission_value=0.01,
     slippage=2, margin_long=100, margin_short=100,
     process_orders_on_close=false, calc_on_order_fills=false,
     calc_on_every_tick=false, use_bar_magnifier=true)

int legs = input.int(3, "Pivot bars on each side", minval=1)
int atrLen = input.int(14, "ATR length", minval=1)
float width = input.float(0.15, "Zone half-width / ATR", minval=0.01, step=0.05)
float buffer = input.float(0.10, "Risk-distance buffer / ATR", minval=0.0, step=0.05)
float rr = input.float(2.0, "Target R", minval=0.5, step=0.5)
int maxAge = input.int(40, "Zone expiry in bars", minval=1)
int maxHold = input.int(60, "Maximum holding bars", minval=1)
bool trendFilter = input.bool(true, "Require higher/lower pivot highs AND lows")
string confirmation = input.string("Rejection", "Confirmation", options=["Rejection", "Engulfing"])
bool longs = input.bool(true, "Longs")
bool shorts = input.bool(true, "Shorts")

float atr = ta.atr(atrLen)
float ph = ta.pivothigh(high, legs, legs)
float pl = ta.pivotlow(low, legs, legs)
var float lastHigh = na
var float prevHigh = na
var float lastLow = na
var float prevLow = na
var int highKey = na
var int lowKey = na
var int usedHigh = na
var int usedLow = na

// Pivots become known NOW, legs bars after their original candle.
// Nothing is backdated to the pivot's original time.
if not na(ph)
    prevHigh := lastHigh
    lastHigh := ph
    highKey := bar_index - legs
if not na(pl)
    prevLow := lastLow
    lastLow := pl
    lowKey := bar_index - legs

bool up = not na(prevHigh) and not na(prevLow) and lastHigh > prevHigh and lastLow > prevLow
bool down = not na(prevHigh) and not na(prevLow) and lastHigh < prevHigh and lastLow < prevLow
bool newUpBreak = not na(lastHigh) and close > lastHigh and close[1] <= lastHigh and (na(usedHigh) or highKey != usedHigh)
bool newDownBreak = not na(lastLow) and close < lastLow and close[1] >= lastLow and (na(usedLow) or lowKey != usedLow)

var int zoneDir = 0
var float zoneLevel = na
var float zoneLo = na
var float zoneHi = na
var int zoneBar = na
var int stopTicks = na
var int targetTicks = na
var int signalBar = na

// After a closing fill, skip this bar's new setups.
bool justClosed = strategy.closedtrades > nz(strategy.closedtrades[1])
bool flat = strategy.position_size == 0 and not justClosed
if flat and not na(atr)
    if zoneDir != 0
        bool expired = bar_index - zoneBar > maxAge
        bool failed = zoneDir == 1 ? close < zoneLo : close > zoneHi
        if expired or failed
            zoneDir := 0

    // New eligible break replaces any pending zone. One zone total.
    if newUpBreak and longs and (not trendFilter or up)
        zoneDir := 1
        zoneLevel := lastHigh
        zoneLo := lastHigh - atr * width
        zoneHi := lastHigh + atr * width
        zoneBar := bar_index
        usedHigh := highKey
    else if newDownBreak and shorts and (not trendFilter or down)
        zoneDir := -1
        zoneLevel := lastLow
        zoneLo := lastLow - atr * width
        zoneHi := lastLow + atr * width
        zoneBar := bar_index
        usedLow := lowKey

    bool overlap = zoneDir != 0 and low <= zoneHi and high >= zoneLo
    bool later = zoneDir != 0 and bar_index > zoneBar
    bool bullReject = close > open and low < zoneLevel and close > zoneLevel
    bool bearReject = close < open and high > zoneLevel and close < zoneLevel
    // Engulfing compares REAL BODIES; full wick engulfment is not required.
    bool bullEngulf = close[1] < open[1] and close > open and open <= close[1] and close >= open[1] and close > zoneLevel
    bool bearEngulf = close[1] > open[1] and close < open and open >= close[1] and close <= open[1] and close < zoneLevel
    bool longSignal = zoneDir == 1 and later and overlap and (confirmation == "Rejection" ? bullReject : bullEngulf)
    bool shortSignal = zoneDir == -1 and later and overlap and (confirmation == "Rejection" ? bearReject : bearEngulf)

    if longSignal or shortSignal
        // Source uses structural stops. Ours translates a frozen distance
        // to the actual fill: this is a material experimental shortcut.
        float distance = longSignal ? close - zoneLo : zoneHi - close
        stopTicks := math.max(1, int(math.ceil((distance + atr * buffer) / syminfo.mintick)))
        targetTicks := math.max(1, int(math.round(stopTicks * rr)))
        signalBar := bar_index
        if longSignal
            strategy.entry("L", strategy.long)
            strategy.exit("LX", "L", loss=stopTicks, profit=targetTicks)
        else
            strategy.entry("S", strategy.short)
            strategy.exit("SX", "S", loss=stopTicks, profit=targetTicks)
        zoneDir := 0

// Frozen trade state: later zones and ATR changes cannot move brackets.
if strategy.position_size > 0
    strategy.exit("LX", "L", loss=stopTicks, profit=targetTicks)
if strategy.position_size < 0
    strategy.exit("SX", "S", loss=stopTicks, profit=targetTicks)

// Measure holding time from the recorded entry fill bar, not signal time.
// This market close normally fills on the following available tick.
if strategy.position_size != 0
    int held = bar_index - strategy.opentrades.entry_bar_index(0)
    if held >= maxHold
        strategy.close_all(comment="Time exit")

plot(zoneDir != 0 ? zoneLevel : na, "Pending flip level", color.orange, style=plot.style_linebr)
plot(zoneDir != 0 ? zoneLo : na, "Zone low", color.gray, style=plot.style_linebr)
plot(zoneDir != 0 ? zoneHi : na, "Zone high", color.gray, style=plot.style_linebr)

This code tests one objective interpretation of the source’s concept. Any mechanical definitions introduced here are ours and are not necessarily the creator’s exact rules.

Start on standard five-minute candles for a liquid instrument, then keep the chart timeframe and session fixed across comparisons. Five minutes is our research starting point, not a timeframe specified in the supplied transcript. Paste the full strategy into TradingView’s Pine Editor and add it to the chart.

What This Code Actually Tests

A pivot is used only after its right-side confirmation bars have completed. A crossing close beyond the latest known swing can create a zone. With the trend filter enabled, both the last two pivot highs and the last two pivot lows must agree with the breakout direction.

On a later candle, price must overlap the pending zone and satisfy the chosen reaction rule. The zone is consumed when the entry is submitted; a rejected order does not restore it. No new zones are created while a position is open, and the script skips fresh setups on a bar that records a closing trade.

The strategy uses one unit and no pyramiding. One pending zone and one position are supported. It does not maintain a catalog of older levels.

Execution Review: From Signal to Fill to Bracket

  • Order timing: signals use completed candles. Market entries normally fill on the next available tick, usually the next bar’s open. Tick-by-tick recalculation and recalculation after fills are disabled.
  • Actual-fill bracket: stop and target are specified as tick distances with the entry, allowing the emulator to anchor both to the filled price. The requested R is approximate because of tick rounding; net realized R changes with costs and stop slippage.
  • Structural approximation: a gap moves the entire bracket with the fill. The stop is therefore not guaranteed to remain beyond the originating zone. This intentional shortcut tests a distance model rather than Pat’s absolute structural-stop rule.
  • Gap handling: the strategy does not reject a gap that destroys the original location thesis. Gaps through active stops may produce worse losses. Record such trades separately.
  • Protection and state: bracket instructions are submitted alongside the entry and their distances remain fixed. Later ATR changes and newer chart structures cannot alter an open trade’s bracket.
  • Intrabar ambiguity: Bar Magnifier is enabled. Where lower-timeframe history is unavailable, stop/target ordering can depend on emulator assumptions. Identify those cases as execution-sensitive.
  • Holding time: the time exit is measured from the recorded entry bar. Once the maximum is reached, a market-close order is submitted and normally fills on the next available tick. It is not a guaranteed exit exactly at the selected bar count.
  • Exposure and costs: one unit is not fixed account risk. The defaults-0.01% commission per filled order and two ticks of slippage-are illustrative. Adjust Strategy Properties for the instrument; the model does not separately capture financing, variable spreads, or every fee.

For the execution mechanism, see TradingView’s strategy FAQ (paid link). Its documentation explains tick-relative brackets; it does not establish that this setup is profitable.

Validation status: This script has not been compiled in TradingView or run against historical data here. No performance results are claimed. The pivot timing, setup replacement, bracket persistence, order timing, and written rule mapping have been reviewed.

What This Code Does Not Test

  • The presenter’s complete impulse–pullback structure, protected-swing selection, or discretionary reversal judgment.
  • Supply/demand origins, institutional participation, fair value gaps, Fibonacci discounts, or multi-timeframe context.
  • Limit entries after confirmation, discretionary re-entry, intuition, or chart-level profit targets.
  • Absolute structural stops: the baseline translates a distance to the fill.
  • A London/New York session filter, real broker execution, realistic sizing across asset classes, or the reported account gains and win rates.

Backtest Lab

Define the symbol set, timeframe, session, development period, and untouched evaluation period before comparing variants. Keep quantity, costs, stop-distance model, and sample dates identical unless one of them is the variable being tested.

ExperimentChange onlyHypothesis and measurement
Does structure filtering help?Trend filter on versus offThe filter may change net expectancy. Compare trade count, average R, drawdown, and results per eligible breakout-not only win rate.
Does reaction type matter?Rejection versus engulfingDifferent confirmation rules may select different opportunities. Keep zone creation unchanged; compare triggered trades and untriggered zones alongside expectancy.
How sensitive are swing definitions?Pivot legs: 2, 3, 5Coarser structure may trade less often. Record confirmation delay, trade count, and net results. This changes the zone population, so it is a model-sensitivity study.
Does zone width dominate?Half-width: 0.05, 0.15, 0.30 ATRWider zones admit different retests and change risk distance. Record both signal frequency and stop size; do not interpret this as a pure entry-only comparison.
Do exits explain the apparent edge?Target: 1R, 2R, 3RCompare expectancy, average win/loss, profit factor, and time-exit frequency with everything else fixed.

Export trades and record net profit per trade, average R, win rate, profit factor, maximum drawdown, holding time, and performance across time periods. Count every created zone, including overwritten, expired, invalidated, and untriggered zones. The script does not export those setup counts; journal them or add counters before claiming results per eligible setup.

A useful next experiment: compare confirmation-market entry with a limit order placed at the zone midpoint only after confirmation. Keep the same zones and absolute structural stop and target rules in both variants. Predefine the limit order’s expiry and cancellation rules. Count unfilled orders and measure net R per confirmed setup as well as per filled trade. This requires a separate implementation; the baseline’s translated-stop model should not be silently mixed into the comparison.

Look for behavior that persists across adjacent parameter values and a later untouched period. One impressive historical setting does not establish robustness. If realistic costs erase the apparent edge, the model has not demonstrated an executable advantage under those assumptions.

Try It Yourself

Review 20 consecutive replay examples. Before revealing later candles, mark the known swings, direction, point of interest, confirmation rule, entry model, invalidation, and target. Include failures and zones that never trigger.

Use this journal: symbol | date/time | timeframe | swing-confirmation time | trend | zone origin and bounds | zone replacement/expiry | reaction | signal | actual fill | stop model | target | costs | result in R | execution ambiguity.

Then ask a second reviewer to label the same examples using only your written rules. Disagreement identifies definitions that need work. The exercise checks reproducibility; a small sample is not evidence of profitability.

Check Your Understanding

  1. Why can a bullish candle be a poor buy signal? It may be a temporary rebound inside bearish structure or appear far from the chosen location.
  2. What separates a failed extension from a reversal? Failure to extend is an alert; breaking a relevant opposing swing supplies additional evidence.
  3. Does “discount” mean undervalued? Here it means the lower half of a selected swing range, not fundamental value.
  4. Can an aggressive candle identify institutional buyers? No. It shows price movement, while participant identity is an inference.
  5. When may a confirmed pivot enter a backtest decision? After its right-side confirmation bars complete, not at its earlier plotted location.
  6. Why count unfilled limit orders? Otherwise, a selective entry model can look better per trade while ignoring missed opportunities.
  7. Does 87.8% wins establish a profitable system? No. Payoffs, costs, selection rules, and drawdowns remain necessary.

Final Takeaway

Pat’s useful framework connects market structure, a point of interest, and the reaction at that location. It encourages an entry decision based on observed behavior rather than a directional prediction alone.

The supplied transcript does not establish that trading becomes easy or that the reported results are typical. The next useful question is whether explicit flip-zone rules survive realistic execution, alternative confirmation choices, and untouched data. Test that narrower question before attributing an edge to the full discretionary system.


Risk Disclosure: This material is for educational and research purposes only and is not financial or investment advice. Trading can result in substantial losses, and leveraged positions can magnify them. Backtests are hypothetical, depend heavily on their assumptions, and cannot reproduce every aspect of live execution. Commissions, spreads, slippage, liquidity, gaps, order behavior, financing costs, market regime changes, and discretionary decisions can materially affect real-world results. Historical or hypothetical performance does not guarantee future results.

This article is an independent educational companion to the video and is not affiliated with, sponsored by, endorsed by, or authorized by Trade with Pat.

As an Amazon Associate I earn from qualifying purchases.