◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Strategies / Optimal Trade Entry (OTE) Strategy
Concept breakdown

Optimal Trade Entry (OTE) Strategy

Optimal Trade Entry (OTE) is a public, widely-taught price-action concept popularised in the smart-money / ICT trading community. It frames an "entry zone" as a deep Fibonacci retracement (commonly the 0.62-0.79 band, with 0.705 as the midpoint) of a prior impulse leg, used by traders who want to enter in the direction of that move at a pullback rather than chasing the breakout. This page explains how traders define OTE and the surrounding entry/stop/target framework neutrally. It is educational only: OTE is a discretionary framework, not a predictive system, and nothing here implies profit or a win rate. Trading involves the risk of loss.

How it works

Optimal Trade Entry (OTE) is a label traders apply to a specific slice of a Fibonacci retracement. The idea, as taught publicly in the smart-money / ICT community, is that after a strong directional move (an "impulse leg"), price often pulls back before continuing, and some traders prefer to enter inside a deep retracement zone rather than at the start of the pullback or at the breakout extreme.

The mechanics traders describe are:

  1. Identify a clear impulse leg. This is a swing from a recent low to a recent high (for a long bias) or high to low (for a short bias). The two anchor points are the swing low and swing high of that leg.
  1. Draw a Fibonacci retracement across the leg. The "OTE zone" is conventionally defined as the area between the 0.62 and 0.79 retracement levels, with 0.705 treated as the midpoint or "sweet spot" (the arithmetic midpoint of 0.62 and 0.79 is 0.705). Some teachers also reference 0.618 and 0.786 (the classic Fibonacci ratios) interchangeably with 0.62 and 0.79; the band, not a single magic number, is the point.
  1. Wait for price to trade back into that band. Traders look for the pullback to reach the 0.62-0.79 zone, ideally alongside other context they personally require (for example trading in the direction of the higher-timeframe trend, or near a level they have separately marked such as an order block, fair-value gap, or prior structure).
  1. Look for a trigger inside the zone. OTE on its own is just a region. Most traders combine it with a confirmation they define themselves: a lower-timeframe shift in market structure, a rejection candle, or a return to a marked level. The zone narrows where they consider entering; the trigger decides whether they act.

It is important to be precise about what OTE is and is not. It is a discretionary, context-dependent framework, not a mechanical, fully-automatable strategy. Reasonable traders disagree on how to pick the impulse leg, which timeframe to draw it on, whether to use 0.62/0.79 or 0.618/0.786, and what counts as confirmation. Because of that, OTE does not reduce cleanly to a single deterministic script. The Pine below is therefore an illustrative detection/marker tool: it identifies a recent leg from confirmed swing pivots and shades the 0.62-0.79 retracement band so you can study the concept on a chart. It is not a trade-entry signal and makes no claim about outcomes.

Entry rules

Exit rules

Risk notes

Pine v6 example

//@version=6
indicator("OTE Zone Marker (Illustrative)", overlay = true)

// Illustrative ONLY. OTE is a discretionary concept and does not reduce to a
// mechanical strategy; the way this script auto-pairs two recent pivots is one
// arbitrary choice among many a trader could make. It marks a recent impulse
// leg from CONFIRMED swing pivots and shades the 0.62-0.79 retracement band for
// study. It is not a trade signal and makes no claim about outcomes. Trading
// involves the risk of loss.

// === Inputs ===
swingLen = input.int(10,  "Swing lookback (pivots)", minval = 2)
showZone = input.bool(true, "Shade 0.62-0.79 retracement zone")
showFibs = input.bool(true, "Show 0.62 / 0.705 / 0.79 levels")
zoneCol  = input.color(color.new(color.teal, 80), "Zone fill")

// === Swing detection (confirmed pivots; lag = swingLen bars) ===
ph = ta.pivothigh(high, swingLen, swingLen)
pl = ta.pivotlow(low,   swingLen, swingLen)

var float lastPH    = na
var int   lastPHbar = na
var float lastPL    = na
var int   lastPLbar = na

if not na(ph)
    lastPH    := ph
    lastPHbar := bar_index - swingLen
if not na(pl)
    lastPL    := pl
    lastPLbar := bar_index - swingLen

// Most recent impulse leg from the two latest opposite pivots
bullLeg = not na(lastPH) and not na(lastPL) and lastPLbar < lastPHbar  // low then high
bearLeg = not na(lastPH) and not na(lastPL) and lastPHbar < lastPLbar  // high then low

legLow  = lastPL
legHigh = lastPH
rng     = legHigh - legLow

// Fib retracement of the leg. For a bull leg, 0.62 is shallow (near the high)
// and 0.79 is deep (near the low); for a bear leg it is mirrored from the low.
f62  = bullLeg ? legHigh - 0.62  * rng : legLow + 0.62  * rng
f705 = bullLeg ? legHigh - 0.705 * rng : legLow + 0.705 * rng
f79  = bullLeg ? legHigh - 0.79  * rng : legLow + 0.79  * rng

plotLevels = (bullLeg or bearLeg) and not na(rng) and rng > 0

p62  = plot(showFibs and plotLevels ? f62  : na, "0.62",  color.new(color.gray,   0), 1)
p705 = plot(showFibs and plotLevels ? f705 : na, "0.705", color.new(color.orange, 0), 1)
p79  = plot(showFibs and plotLevels ? f79  : na, "0.79",  color.new(color.gray,   0), 1)

fill(p62, p79, showZone and plotLevels ? zoneCol : na, "OTE zone")

// Marker: price trading back INTO the 0.62-0.79 band (illustrative, NOT a signal)
inZone = plotLevels and close <= math.max(f62, f79) and close >= math.min(f62, f79)
plotshape((inZone and not inZone[1]) and barstate.isconfirmed ? close : na, "Tap into OTE band",
     style = shape.triangleup, location = location.belowbar,
     color = color.new(color.teal, 0), size = size.tiny)

Pitfalls

FAQ

What is the OTE zone in simple terms?

It is the deep part of a Fibonacci retracement of a prior impulse leg, conventionally the 0.62 to 0.79 band with 0.705 as the midpoint. Traders who use it wait for a pullback to trade back into that band, in the direction of the original move, before considering an entry. It is a region of interest, not a buy or sell signal, and it is not predictive.

Is OTE the same as just using the 0.618 and 0.786 Fibonacci levels?

It is closely related. Many teachers use 0.62/0.79 and 0.618/0.786 interchangeably; the point is the deep-retracement band rather than one exact ratio. What distinguishes OTE as it is taught is the surrounding framework: identifying a clear impulse leg, trading with a defined bias, and requiring a separate confirmation inside the zone before acting.

Can OTE be turned into a fully automated strategy?

Not cleanly. OTE is discretionary: leg selection, timeframe, the exact ratios, and what counts as confirmation all vary by trader, so it does not reduce to one deterministic rule set. You can automate the detection part - marking a leg and shading the 0.62-0.79 band, as the illustrative script here does - but treat that as a study tool, not a signal. Because swing pivots only confirm after the fact, watch carefully for look-ahead bias and repainting in any automated OTE code; running it through a validator that checks for those issues is the safe approach.

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.

Catch the bug that compiles.Run auditGet Pro