← All ideas
#020BreakoutIntraday

Espresso: a bracket around the candle that closes at the index open

Stop orders above and below the candle that closes exactly at the DAX or Dow open, with a wide offset. The goal is to get into a trend day earlier than School Run. Parameters differ between streams, and the only backtest is short.

Trader Tom · Karaoke Andi · Watch video

Markets

Indices

Timeframe

M1, M5, M10

Data

OHLC, Session times

Rules

Partly formalised

Difficulty

Medium

Status

Untested

Some rules were added by us and are marked in the text.

TradingView has pitfalls
EasyLanguage has pitfalls
MetaTrader 5 has pitfalls

Idea in brief

Espresso was created by Tom Hougaard to get into a trend day as early as possible. School Run waits for the close of the second 15-minute candle, and by then the market has sometimes already moved dozens of points. Espresso places two stop orders around the last candle before the cash session open: a buy above its high and a sell below its low, with a wide offset. Whichever order fills first sets the direction of the trade. The other one is canceled.

There is no official description from Tom. Karaoke Andi, who hosts streams on Tom's channel and explains Espresso on slides, says this several times. Most of the numbers below come from Andi's explanations and from Tom's remarks on air, and they differ between streams. We show both versions with sources.

The technique was originally built for the FTSE. Now Tom and Andi trade it on the DAX and the Dow. According to Tom, a version for the NASDAQ has not been found yet.

Why it might work

According to Andi, about one day in five is a trend day. On such a day, price travels from one edge of the chart to the other, and most of the move goes to those who entered in the first minutes. As Andi explains, the DAX reference candle coincides with the Xetra opening auction window. A break of its boundaries with a margin should filter out the noise of the first seconds. Andi explains the large offset by the sharpness of the open. Andi's slide lists what happens in the first minutes: orders meet cash session liquidity, the spread normalizes, stops beyond the first obvious range get taken out, and fast false breakouts happen.

The flip side is in the same explanation. Four days out of five are not trend days, and on those days the breakout often reverses. Andi trades Espresso partly by feel: taking profit quickly in some cases, holding in others. Andi's bot with a fixed stop and target comes out at about zero, according to Andi. The only result figures were produced by a community member over four and a half months, with an unknown methodology.

Rules

Reference candle

// exchange time
DAX: SessionOpen = 09:00 CET (Xetra)
Dow: SessionOpen = 09:30 ET
// Andi's slides give 15:30 CET for the Dow. This is correct only when the US and Europe
// are in the same daylight saving mode

// version 1: Andi's slide (V90), "the 10-minute candle that ends at the open"
RefBar = candle [SessionOpen - 10 min; SessionOpen)

// version 2: Andi's practice in 2026 (V70, V90, V113, V114)
DAX: RefBar = 5-minute candle 08:55-09:00 CET
Dow: RefBar = 10-minute candle 09:20-09:30 ET

// Andi explains the switch to 5 minutes by the move of the Xetra opening auction:
// on Andi's slide (V113), the DAX auction moved from 08:50-09:00 to 08:55-09:00 (November 2025).
// Finetiq: in both versions the DAX reference candle coincides with the auction window

During the auction, the DAX cash index has no quotes. You need a CFD or a futures contract that has a price at 08:55-09:00.

Entry

BuyLevel  = RefBar.High + Offset
SellLevel = RefBar.Low  - Offset

BUY STOP at BuyLevel
SELL SHORT STOP at SellLevel
// OCO: once one order fills, the other is canceled

// offset in index points
DAX: Offset = 17-18      // Tom, V126. Andi uses 17-19: 19 (V70), 18 (V90, V114), 17-18 (V113)
Dow: Offset = 35-40      // Tom, V103. Andi 36-38 (V113)
// Andi: the old version had a smaller offset, it had to be increased as the indices rose

// order lifetime
IF no fill by SessionOpen + 3 min THEN CANCEL both
// this is how Andi describes Tom's practice (V70), Tom cancels unfilled orders on V120
// community: in the backtest, orders were canceled after 10 minutes (V70)

Andi and Tom place orders before the reference candle closes and move them while the candle is forming. In a test, the orders should appear exactly at SessionOpen.

Karaoke Espresso (Andi)

// only if the base bracket did not fill
IF no fill by 09:03 CET (DAX) or 09:33 ET (Dow)
    ExtHigh = high from 08:55 to 09:03 CET         // Dow: 09:20-09:33 ET
    ExtLow  = low over the same window
    BUY STOP at ExtHigh + 2                        // slide V113, aloud Andi says 2-3 points
    SELL SHORT STOP at ExtLow - 2
    // stop follows the same logic as the base version (slide: "by the candle or fixed")

// Finetiq: the lifetime of these orders is not named. Starting value: cancel at 09:15 CET (Dow 09:45 ET)

Andi says this version has not been tested on history, only in live trading.

Stop and target: two versions

// "fixed" version: Andi and the community backtest
DAX Long:  StopLoss = EntryPrice - 40;   Target = EntryPrice + 20   // Andi "usually 40 and 20" (V111, V90), backtest V70
Dow Long:  StopLoss = EntryPrice - 100;  Target = EntryPrice + 50   // Andi, V113
// short mirrors this

// "beyond the candle" version: Tom
Long:  StopLoss = RefBar.Low          // Tom, V126: stop below the candle's low, risk about 40
Short: StopLoss = RefBar.High         // Andi, V111: stop beyond the other side of the candle, 53 points
Target = EntryPrice ± 40..80          // Tom, V126: "usually stop 40, target 40-80"

// everything that has not closed
EXIT at 17:25 CET (DAX), 15:55 ET (Dow)     // Finetiq

With an 18-point offset, a stop beyond the candle equals the candle's range plus 18. On a 5-minute DAX candle with a range of 20-35 points, this gives 38-53 points. That is close to the fixed 40 points and to Andi's 53 points on V111.

After a stop

// Tom (V126): do not reverse after an Espresso stop.
// Two losses in the first minutes, about 80 points, are too hard to take
IF StoppedOut THEN no new Espresso entries today
// Andi on V111 allowed a reversal after a stop. A variant for testing

// Finetiq: no more than one Espresso trade per index per day (base or Karaoke)

Tom and Andi also shift direction depending on the situation. On V120, Tom mentions being in no hurry to take Espresso shorts in recent sessions. On a gap down after a red day (V112), Andi planned to take profit on a long quickly and hold a short. No rules follow from this, but it affects the results on air.

Parameters

Parameter Value Source
Bracket around the candle that closes at the open DAX, Dow (originally FTSE) author
DAX reference candle 10 minutes (slide) or 5 minutes 08:55-09:00 CET community (Andi)
Dow reference candle 10 minutes, 09:20-09:30 ET community (Andi)
DAX offset 17-18 points author (V126), Andi uses 17-19
Dow offset 35-40 points author (V103), Andi uses 36-38
Order cancellation 3 minutes after the open community (Andi on Tom's practice)
Order cancellation in the backtest after 10 minutes community
Karaoke: window and offset until 09:03 CET / 09:33 ET, 2-3 points community (Andi)
Karaoke: order lifetime until 09:15 CET / 09:45 ET Finetiq
DAX stop 40 points or beyond the candle author (V126) and community
DAX target 40-80 points author (V126)
DAX target, Andi's version 20 points community (Andi, backtest V70)
Dow stop and target 100 and 50 points community (Andi)
Reversal after a stop no author (V126)
Time exit 17:25 CET / 15:55 ET Finetiq
Espresso trades per day one per index Finetiq
Risk per trade 1% community (backtest V70)

What to test

  1. Target 20 versus 40-80. In the community backtest, the target is half the stop. With this ratio, the breakeven win rate is 66.7%, and at the stated 72.1% the expectancy is about 0.08 of the stop per trade before costs. A viewer on V70 calculated the same. A DAX CFD spread of 2 points at the open takes away another 0.05 of the stop. Compare the fixed 40/20 with a target of 40, a target of 80 and holding until the end of the session.
  2. 5 minutes versus 10 minutes. Run both reference candles before and after the Xetra auction move in November 2025. If the 5-minute candle is better after the move but not before it, this supports Andi's explanation.
  3. Offset neighborhood. DAX: 10, 14, 18, 22, 26 points. Separately, the offset as a fraction of daily ATR(14): Andi says the offset grows with the index.
  4. Order lifetime. Cancellation after 3 minutes, after 10 minutes, and the Karaoke extension. Calculate what part of the result comes from late fills.
  5. Wednesday. The report has 16-18 trades per day of the week. Check over several years whether Wednesday differs from the other days. Most likely the difference will turn out to be noise.
  6. Stop and reversal. A fixed 40 points versus a stop beyond the candle. With and without a reversal after a stop.
  7. Execution. Test on tick or minute data with the spread. Compare filling the stop order exactly at the level with filling at the first price beyond the level: at 09:00:00 price often jumps over the level.

Platform notes

TradingView (Pine Script)

  • Use a symbol with quotes before the open: a DAX CFD or futures. The cash index has no 08:55-09:00 window. Set times in the exchange time zone: time(timeframe.period, "0855-0900", "Europe/Berlin"), and for the Dow "America/New_York".
  • On a 5-minute chart, the entry, a stop of 40 and a target of 20 often fall within one 09:00-09:05 candle. The tester does not know the order within the candle. You need use_bar_magnifier = true (paid plans) or a one-minute chart.
  • OCO via oca_name and oca_type = strategy.oca.cancel. Canceling after 3 minutes on a one-minute chart: strategy.cancel for both entries on the third bar after the open.
  • The profit and loss parameters in strategy.exit are measured in ticks. A DAX CFD often has a tick size of 0.1, so 40 points is 400 ticks. It is more reliable to set stop and limit as prices.

MultiCharts and TradeStation (EasyLanguage)

  • Time is the bar's close time. The 5-minute DAX reference candle 08:55-09:00 has Time = 900, and the 10-minute Dow candle 09:20-09:30 has Time = 930.
  • Buy next bar at X stop lives for one bar. On a one-minute chart this is convenient: send the orders on bars until 09:03 and then stop sending them, and they will be canceled automatically.
  • The symbol's session must include the minutes before 09:00. If only the main cash market session is selected, the reference candle will not be on the chart.
  • Set the stop and target as prices: Sell next bar at EntryPrice - 40 stop. SetStopLoss works in money, and a point of FDAX is worth 25 euros, FDXM 5 euros, while a CFD has its own point value.

MetaTrader 5 (MQL5)

  • 09:00 CET at a broker with a GMT+2/+3 server is 10:00 server time, but only while both time zones are in the same daylight saving mode. For the Dow, convert 09:30 ET separately: the transitions in the US and Europe do not coincide.
  • Check that the broker quotes GER40 at 08:55-09:00 and what the spread is there. The community backtest was built in MQL5 on broker data, so the "Every tick based on real ticks" tester mode is mandatory here.
  • The offset and stop in index points are set in price: 18 DAX points is 18.0, not 18 * _Point.
  • BuyStop and SellStop can be placed with an expiration, but not every broker symbol accepts an exact expiration time. It is more reliable to delete orders yourself based on server time. OCO has to be done manually.

Where the idea can break

  • There is no official description. The rules are assembled from Andi's slides and on-air remarks, and the reference candle, stop and target differ between streams.
  • The community backtest: about 86 trades for January-May 2026, unknown methodology, the instrument is not named in the report (from the stream, it is the DAX). Andi says directly that the result cannot be confirmed. The day-of-week breakdown rests on 16-18 trades.
  • Andi's bot with fixed parameters is about zero, according to Andi. On V113 a viewer wrote that they had traded Espresso every day for several months and lost hundreds of dollars: the entry triggers, and price reverses immediately. Andi replied that a lot depends on the parameters and on manual management.
  • With a target smaller than the stop, a small drop in the win rate wipes out the result. The spread at the open and slippage on stop orders in the first seconds hit exactly this kind of system.
  • Offsets and stops are set in points. Andi notes that ten years ago, with the DAX at about 10-11 thousand, the offset and stop needed to be roughly half as large.
  • The Xetra auction window changed in November 2025. History before and after cannot be compared directly.

Sources

Author's claims

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

  • A community member ran Espresso from January to May 19, 2026: deposit 10,000, risk 1%, stop 40 points, target 20, offset 18, orders canceled after 10 minutes. Result: 72.1% winning trades (buys 72.9%, sells 71.1%), return from +1.06% to +2.33% a month, maximum drawdown 6.37 with no unit given: Andi reads the number without one, and the frame with the report does not show this field. Andi stresses that the test methodology is unknown to them. The member later clarified that the test was built in MQL5 on data from a New Zealand broker.
  • The same report has only about 86 trades. By day of the week, Tuesday is the best (18 trades, 88.9% winners, +$740), and Wednesday is the only losing day (16 trades, 56.2%, -$340).
  • Andi runs a bot with a fixed stop and target on Espresso. According to Andi in July 2026, the result is about zero, while the spread is still paid.
  • According to Andi, trend days occur on roughly 20% of trading days. Espresso is designed to enter earlier than School Run on such days.

Related ideas

Updated: 2026-09-10