Free tool

Expresso Offset Levels Indicator for cTrader

Shows High + offset and Low – offset for the current bar and prints the last two digits as a quick reference. This is useful for situational analysis style breakout trades (Tom Hougaard style), where you often bracket a signal bar, go long above, short below, and apply a small offset to avoid noise and spread.

What this indicator does

It draws two live levels for the current bar:

  • High + offset (for long stop placement)
  • Low – offset (for short stop placement)

It also prints the last two digits of those levels, because most of the time you only need a quick sanity check.

The levels update while the bar is forming and settle when the bar closes. This is a utility for clean execution, not a prediction tool.

Expresso Offset Levels indicator screenshot

How it fits a breakout approach

If you trade breakouts in a structured way, you frequently need to bracket a bar: long above, short below, with a small offset. This tool keeps the math out of your head and on the chart.

Typical offsets
  • Small offsets: 2-3 points (avoid noise/spread)
  • Larger offsets: instrument and volatility dependent
  • Works on any timeframe and any symbol where you bracket bars
Want direct help?

If you want to build a repeatable morning routine, refine your entry logic, or fix your execution under pressure, you can book a session via my mentorship page.

Go to mentorship and booking

How to install it in cTrader

  • Open cTrader and go to the Automate tab.
  • Create a new Indicator.
  • Delete the template code and paste the code from the section below.
  • Click Build to compile.
  • Go back to the Trade tab and add the indicator to your chart.
  • Set your offset value (example: 17 for DAX Expresso, smaller offsets like 2-3 for other bar bracketing setups).
What this indicator is not

Not a signal service. Not a trading system. Not a promise of anything. It only visualizes levels you already intend to use for execution.

Show full cTrader indicator code (copy & paste into Automate)
using System;
using cAlgo.API;

namespace cAlgo
{
    [Indicator(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, IsOverlay = true, AutoRescale = false)]
    public class ExpressoOffsetLevels : Indicator
    {
        [Parameter("Offset (price units)", DefaultValue = 17.0)]
        public double Offset { get; set; }

        protected override void Initialize()
        {
            // Nothing to init
        }

        public override void Calculate(int index)
        {
            // Only work on the current (last) bar
            if (index != Bars.Count - 1)
                return;

            var high = Bars.HighPrices[index];
            var low = Bars.LowPrices[index];

            var highLevel = high + Offset;
            var lowLevel = low - Offset;

            // Draw lines
            ChartObjects.DrawHorizontalLine("ExpressoHighLine", highLevel, Colors.Lime);
            ChartObjects.DrawHorizontalLine("ExpressoLowLine", lowLevel, Colors.Red);

            // Last 2 digits helper
            string highLast2 = GetLastTwoDigits(highLevel);
            string lowLast2 = GetLastTwoDigits(lowLevel);

            // Place labels near the bar (default font size)
            ChartObjects.DrawText(
                "ExpressoHighLabel",
                highLast2,
                index,
                highLevel,
                VerticalAlignment.Bottom,
                HorizontalAlignment.Center,
                Colors.Lime
            );

            ChartObjects.DrawText(
                "ExpressoLowLabel",
                lowLast2,
                index,
                lowLevel,
                VerticalAlignment.Top,
                HorizontalAlignment.Center,
                Colors.Red
            );
        }

        private string GetLastTwoDigits(double price)
        {
            // Round to symbol digits, then take last two of integer part
            var rounded = Math.Round(price, Symbol.Digits);
            var intPart = (long)Math.Round(rounded, 0);
            var last2 = intPart % 100;
            return last2.ToString("D2");
        }
    }
}
Disclaimer: This software is provided “as is”, with no guarantees, no warranties, and no promise it still compiles or behaves the same after platform updates. Personal use only. All rights reserved. Redistribution or modification requires my explicit written consent.

This indicator provides no trading signals, no financial advice, and no guarantee of accuracy or suitability. You are fully responsible for your own trading decisions, execution, and risk.