← All ideas
#008TrendSwing

Breakout of the 100/200-day high, exit on a close below MA10

Buy when the close is above the 100- or 200-day high (the all-time high is strongest), exit on a close below the 10-day average. Nick Radge's variant: the same breakout, a regime filter and a trailing stop not based on an average.

Chart Fanatics · Pavel Kycek · Watch video

Markets

Stocks, Indices, Futures, Commodities, Forex, Crypto

Timeframe

D1

Data

OHLC

Rules

Author's rules

Difficulty

Easy

Status

Untested

The author named entry, exit and parameters.

TradingView ports directly
EasyLanguage ports directly
MetaTrader 5 has pitfalls

Idea in brief

Pavel Kycek manages algorithmic funds (Robuxio) and reduces any strategy to three movements: short-term momentum, mean reversion and long-term trend. For the trend Kycek drew the simplest mechanics on the whiteboard. A daily close above the high of the last 100 bars opens a long. The position is held until a close below the 10-day moving average.

The window can be lengthened. According to the author, 200 days is stronger than 100, and a breakout of the all-time high gives the strongest trend signal possible. The author considers entering on a close above the level or on a touch equally valid.

Nick Radge trades an absolute trend system on Australian stocks that was originally built in the late 1990s for futures. The entry is the same: a breakout of a new 100-day high. On top of it Radge adds a market regime filter and a trailing stop that does not rely on a moving average. This version is described below as variant B.

Why it might work

Kycek's explanation: once a strong level is broken, price more often continues the move than returns, and the stronger the level, the greater the potential of the next move. A 100-day high is stronger than yesterday's high, and an all-time high is stronger than any window. Trend following catches a major regime change and tries to stay in the position as long as possible. Profits come from rare long trends, and the short average quickly closes the trades in which a trend did not happen.

The author explains why this edge does not disappear through competition. Long-term momentum has a low Sharpe, and big money concentrates on lower timeframes and the most liquid markets. That is why the author calls this approach the most robust, one that works across all asset classes, and advises beginners to start with it. For stocks and stock indices Kycek recommends long only: after corrections the broad market on average keeps rising.

Radge looks at the same idea through the right tail of the distribution. Trends do not happen all the time, but they happen often enough, and a single stock like Tesla in 2020 makes the whole year. Radge names the weak spot directly: a sideways market with frequent false breakouts. Another of Radge's observations concerns market selection. The more densely a market is covered by analysts and institutions, the worse absolute trend works on it.

Neither author showed a backtest of these exact rules. The explanations above are their logic, which we have not verified.

Rules

Core version (Pavel Kycek)

// daily bars
HH100 = Highest(High, 100)[1]            // high of the last 100 bars, excluding the current one
MA10  = SMA(Close, 10)                   // Finetiq: the author did not name the average type, we use a simple one

// entry: close above the level (author)
IF MarketPosition = 0 AND Close > HH100
    BUY AT NEXT BAR OPEN

// entry on a touch, also valid according to the author
// IF MarketPosition = 0 THEN BUY STOP at HH100     // the level updates on every bar

// exit (author)
IF MarketPosition > 0 AND Close < MA10
    EXIT AT NEXT BAR OPEN
// the author has no separate stop-loss, the MA10 exit serves as protection

Window length (author)

HH200 = Highest(High, 200)[1]            // stronger than 100 days
ATH   = highest High over the whole history up to the previous bar      // the strongest variant
// Finetiq: use ATH only after 500 bars of history,
// otherwise at the start of the data almost every new high counts as a record

Short side and position size (Finetiq)

// the author showed only the long side. For commodities, currencies and crypto the author allows trend following,
// but did not give mirrored rules
LL100 = Lowest(Low, 100)[1]
IF MarketPosition = 0 AND Close < LL100   SELL SHORT AT NEXT BAR OPEN   // Finetiq
IF MarketPosition < 0 AND Close > MA10    EXIT AT NEXT BAR OPEN          // Finetiq

// the author did not name the position size. To compare markets we use equal risk
Lots = Equity * 0.5% / (ATR(20) * PointValue)       // Finetiq: starting value

Variant B. Nick Radge's absolute trend

Radge named the framework of a trend system: a regime filter, a filter on the stock itself, a simple entry such as a 100-day breakout, and a trailing stop. The actual filter and trailing stop of the system were not disclosed.

// stocks, daily bars, long only
RegimeOK = IndexClose > SMA(IndexClose, 200)   // author: this is how Radge's regime filters work (S&P 500 above its 200-day)
                                               // Finetiq: for Australian stocks we take the local index
StockOK  = Close > SMA(Close, 200)             // Finetiq: stock filter; the author advises the same length as the regime filter

IF MarketPosition = 0 AND RegimeOK AND StockOK AND Close > Highest(High, 100)[1]
    BUY AT NEXT BAR OPEN                       // author: breakout of a new 100-day high

// author: trailing stop not based on a moving average, on stocks an average is too noisy
TrailStop = max(TrailStop[1], HighestCloseSinceEntry - 3 * ATR(20))   // Finetiq: starting variant
IF MarketPosition > 0 AND Close < TrailStop
    EXIT AT NEXT BAR OPEN
// Finetiq: a switched-off regime blocks new entries, open positions are managed by the trailing stop

Parameters

Parameter Value Source
Timeframe daily bars author
High window 100 or 200 days, or the all-time high author
Breakout condition close above the level or a touch author
Exit close below the 10-day average author
Average type simple Finetiq
Side long; short mirrored for commodities, currencies and crypto author (long), Finetiq (short)
Minimum history for ATH 500 bars Finetiq
Position size 0.5% of capital per ATR(20) Finetiq
B: entry breakout of the 100-day high author
B: regime filter index above SMA 200 author (example from Radge's strategies)
B: stock filter price above SMA 200 Finetiq (equal filter lengths on the author's advice)
B: trailing stop 3 × ATR(20) from the highest close Finetiq (author: not based on an average)
B: choice of lengths round numbers (100, 200) or 21, 42, 63 days author

What to test

  1. Window length. 100 days versus 200 versus the all-time high on the same set of markets. The author claims that longer means stronger. Also look at the number of trades: the all-time high produces few, and a conclusion based on a few dozen trades is unreliable.
  2. Close or touch. The author considers both entries valid. A close entry is one bar late, while a stop order on a gap fills above the level. Compare the average trade and the slippage.
  3. MA10 exit. For an entry on a 100–200-day level this is a very short exit. Count the share of trades closed within the first five days and how often the system re-enters right away. Compare with MA20, MA50 and an ATR trailing stop.
  4. Parameter neighborhood. Window 80, 100, 120, 150, 200, 250; average 8, 10, 12, 15; SMA versus EMA of the same length. Radge advises optimizing to find the most sensitive parameter, not the best one. If swapping SMA for EMA breaks the result, by Radge's standards that is a red flag.
  5. Many markets with one parameter set. Kycek calls the approach robust across all asset classes. Run the rules on 20–30 futures or ETFs without tuning and look at the median. Radge considers a system that works on a single market suspicious.
  6. The variant B regime filter. The same universe with and without the filter, looking separately at sideways market years.
  7. The institutionalization thesis. Run identical rules on the Russell 2000 and the S&P 500, then on US and Australian stocks. Radge claims the result is noticeably better on the less institutionalized market.

Platform notes

TradingView (Pine Script)

  • Take the level without the current bar: ta.highest(high, 100)[1]. With the current bar included, the close can never be above the high, and there will be no signals.
  • Accumulate the all-time high in a var variable on every bar. History depth is limited by the subscription plan, and on a short chart the "record" will be the high of the available data.
  • Entry on a touch: strategy.entry("L", strategy.long, stop = hh). The order stays active until it is filled or canceled, so update the level on every bar and remove the order via strategy.cancel when the condition no longer holds.
  • By default a signal at the close is filled at the open of the next bar, as in the rules.
  • For stocks, check whether dividend adjustment is enabled. Old highs and the breakout day on high-dividend stocks depend on it.

MultiCharts and TradeStation (EasyLanguage)

  • Level: Highest(High, 100)[1], entry Buy next bar at market after the close. For a touch, Buy next bar at HH100 stop lives for one bar and must be sent on every bar while there is no position.
  • Store the all-time high in a variable: ATH = MaxList(ATH, High[1]). For the 200 window, load history with a margin, since the strategy does not trade the first MaxBarsBack bars.
  • A futures daily bar in TradeStation closes on the settlement, a 1440-minute bar on the last trade. A breakout "on the close" gives different signals on the two bar types. Backtest and trade on the same bar type.
  • On a back-adjusted continuous future, the all-time high does not match the actual price record. For the ATH variant, check the level against the unadjusted series.
  • Set the variant B trailing stop as a price: Sell next bar at TrailStop stop. SetDollarTrailing works in money and gives a different level.

MetaTrader 5 (MQL5)

  • Level via iHighest and iHigh with a shift of 1. Take the signal from the closed daily bar and check for a new bar, otherwise the entry will repeat on every tick.
  • A CFD daily bar is built on the broker's server time. Short Sunday bars shift both MA10 and the 100-day high.
  • A broker's price history is often shorter than the exchange's. The all-time high of a CFD on a stock or index may turn out to be the high of the last few years. Check the level against exchange data.
  • Variant B on a list of stocks can be implemented in an EA, but all the stocks and the index for the filter must be available from the broker. Take the index value from the closed bar: iClose(symbol, PERIOD_D1, 1).

Where the idea can break

  • Kycek showed the rules on a whiteboard as an illustration of first principles. The video has no backtest, and the signal strength is described in words.
  • Radge did not disclose the filter, the trailing stop or the exact parameters of the system. Variant B is Radge's framework filled in by us.
  • Sideways markets. A trend system keeps losing a little for a long time, and Radge calls the range the Achilles' heel of the approach. Look at the results by year, not only at the total.
  • Radge bases the institutionalization conclusion on personal experience and says openly that there is no academic explanation behind it.
  • Stocks. The card describes a signal on a single symbol. Radge's system works across the whole market universe, and the tests use historical index constituents, including removed stocks. Such data usually costs money for a retail trader, and a test on today's list is inflated by survivorship bias. Rotation through a list cannot be done in Pine, and EasyLanguage needs a portfolio module.
  • The all-time high depends on the data: futures roll adjustment, dividend adjustment and the broker's history depth give different levels.

Sources

  • 20 Years Of Institutional Trading Knowledge In 70 Minutes ($20M+ AUM)

    Chart Fanatics · Pavel Kycek · 2026-08-09

    • 50:12Trend following: catching a major regime change
    • 50:41The stronger the level, the greater the potential; breakout of the 100-day high
    • 51:40Close or touch; 200 days and the all-time high
    • 52:36Exit: close below the 10-day average
    • 56:33Stocks: long-term trend, long only
    • 59:02Long-term momentum works across all asset classes
    • 59:32Why the edge persists: low Sharpe, big money busy elsewhere
  • 044 — Nick Radge: Want Big Fish? You'll Need a Bigger Rod

    The Algorithmic Advantage · Nick Radge · 2025-10-28

    • 18:14The first trend system from the late 1990s still works
    • 20:50Absolute trend: breakout of a new 100-day high
    • 23:44Sideways market as the weak spot
    • 26:52Regime filter example: S&P 500 above its 200-day average
    • 30:08Market institutionalization and absolute trend
    • 34:08Breakout model, regime filter, trailing stop not based on an average
    • 1:18:53Framework: regime filter, stock filter, breakout, trailing stop
    • 1:19:24Round window lengths, two filters of the same length
    • 1:20:14Look for the most sensitive parameter
    • 1:21:46Swapping EMA for SMA and a single-market system as red flags

Author's claims

These figures and statements are the author's. We have not verified them.

  • Nick Radge: the first systematic trend system was built in the late 1990s on futures and is still traded, now on stocks. According to Radge, almost nothing in it has changed in 30 years.
  • Radge: in the US all the author's strategies are built on relative momentum, there is no absolute trend there. In Australia, two of the four strategies are absolute trend. Radge gives no academic explanation, it is personal experience.
  • Radge: the largest US stocks are covered by 50–60 analysts, the largest Australian ones by about 19–20, and outside the top 10 in Australia by 4–5. In the late 1990s, Russell 2000 futures traded more profitably for Radge than S&P 500 futures.

Related ideas

Updated: 2026-09-10