Turtle Soup is a short-term reversal idea that fades false breakouts of a recent high or low. The name comes from a setup popularized by Linda Raschke and Larry Connors in "Street Smarts" as a counter-trade to breakout-style trend systems like the well-known "Turtle" approach: when price pokes just beyond a prior N-bar extreme and then snaps back inside the range, traders read it as a failed breakout rather than a real one. This page explains how the pattern is defined and interpreted for study. It is educational/software content only and makes no claim about profitability or future results.
The setup watches a lookback window — classically the prior 20 bars — to find the lowest low or highest high. A potential setup forms when the current bar trades through that level (a new N-bar low or high), suggesting a breakout. The "soup" is the reversal: instead of continuing, price closes back inside the prior range, which traders interpret as a breakout that failed and trapped participants who chased it. A long candidate looks for a marginal new low that is reclaimed; a short candidate looks for a marginal new high that fails. Many traders also require the broken level to have been set at least a few bars earlier (so it is a "fresh" extreme), then act on the snap-back, placing a protective stop just beyond the false-breakout extreme. The logic is about liquidity and trapped orders, not prediction — there is no guarantee any given failed breakout reverses, and many do not. Want this checked for look-ahead bias and repainting? Run it through the ForexCodes Strategy Validator or try it free.
//@version=6
strategy("Turtle Soup (illustrative)", overlay=true, calc_on_every_tick=false)
// Inputs
lookback = input.int(20, "Lookback bars", minval=2)
freshBars = input.int(3, "Min bars since extreme was set", minval=0)
// Prior N-bar extremes, excluding the current bar (no look-ahead)
priorLow = ta.lowest(low[1], lookback)
priorHigh = ta.highest(high[1], lookback)
// Rough freshness check: how long since the prior-bar extreme last matched
// the lookback extreme. This is an approximation, not an exact bar count.
barsSinceLow = ta.barssince(low[1] == priorLow)
barsSinceHigh = ta.barssince(high[1] == priorHigh)
// Long: marginal new low this bar, then close back above the prior low
longSetup = low < priorLow and close > priorLow and barsSinceLow >= freshBars
// Short: marginal new high this bar, then close back below the prior high
shortSetup = high > priorHigh and close < priorHigh and barsSinceHigh >= freshBars
// Orders execute on the next bar's open; stop sits beyond the signal-bar extreme
if longSetup
strategy.entry("TS Long", strategy.long)
strategy.exit("TS Long Exit", from_entry="TS Long", stop=low, limit=priorHigh)
if shortSetup
strategy.entry("TS Short", strategy.short)
strategy.exit("TS Short Exit", from_entry="TS Short", stop=high, limit=priorLow)
plot(priorLow, "Prior N-bar Low", color=color.new(color.red, 0))
plot(priorHigh, "Prior N-bar High", color=color.new(color.green, 0))
// Educational example only. Backtests are illustrative; past performance does not predict future results.It was framed as a counter-trade to trend-following breakout systems like the well-known "Turtle" approach, which buys new highs and sells new lows. Turtle Soup instead fades those same breakouts when they fail — hence "making soup" out of the turtles. It is simply a memorable name for a failed-breakout reversal pattern. "Turtle" and related names belong to their respective owners.
The original write-ups used a 20-bar window, but the number is a parameter, not a rule. Different markets and timeframes behave differently, and tuning the lookback to fit one chart risks curve-fitting. Test any setting on out-of-sample data and treat the choice as a study variable, not a guaranteed edge.
There is no reliable answer to "does it work" — no pattern is predictive, and failed breakouts can just as easily resume in the original breakout direction. Traders use it as a structured way to study liquidity and trapped-order behavior. Any historical results are illustrative only and do not indicate future performance; trading carries the risk of loss.
Anchor the breakout level to completed bars (use low[1]/high[1] in the lookback rather than the live bar), confirm signals on bar close, and execute on the next bar's open. Running the script through the ForexCodes Strategy Validator flags look-ahead bias, repainting, and intent mismatches automatically.
Educational & software only — not financial advice, not a recommendation to trade. Backtests are illustrative; past performance does not predict future results. Trading involves substantial risk of loss.