ICT Concepts Strategy

Created 02 Feb 2024 · Updated 04 Feb 2026

The ICT Concepts Strategy is a Premium mechanical strategy for the NinjaTrader 8 platform. The strategy can be used to pass trader funding programs.

Prerequisites

To properly use this strategy you should have the following prerequisites available.


Important Disclaimer

We strongly recommend that you never run your algorithmic trading systems on your hard-earned real money. You should always minimize your risk and run your strategies on trader funding programs, so the maximum amount you risk losing is the monthly subscription fee you pay those programs.

The ICT strategy is based on concepts introduced by ICT, such as Market Structure events, Fair Value Gaps, Breaker Blocks and Order Blocks, inverted FVGs, and FVG Confluences. The strategy provides several entry setups based on these concepts.

Entry Setup Examples

Entry Setup: MSS+FVG

This entry setup is based on a confluence between a Market Structure Shift and a Fair Value Gap.

This entry opens a trade after an FVG occurs at the same level as an MSS (Market Structure Shift), or after an FVG occurs at the same level as a BOS (Break of Structure).

MSS+FVG entry setup
Click to enlarge

This entry can be triggered immediately after the FVG forms, or after waiting for price to pull back into the FVG and confirming the entry with a bar close in the direction of the entry — entering on pullback requires touching the FVG only, not necessarily going fully inside it, and generally produces fewer but higher-quality entries.

MSS+FVG entry setup with pullback
Click to enlarge
Entry Setup: Breaker Block (Unicorn)

This entry setup is based on a confluence between an FVG and a broken Order Block. For this entry to trigger, an Order Block needs to get broken while a Fair Value Gap forms right at the zone where price breaks the Order Block for the first time.

Breaker Block (Unicorn) entry setup
Click to enlarge

An Order Block that gets broken with a strong FVG in the breakout direction triggers the entry once a bar closes beyond the Order Block. Notice that this setup enters long when a bearish Order Block is broken and enters short when a bullish Order Block is broken.

Entry Setup: Order Block

The Order Block entry is based on waiting for price to create an Order Block, then pull back and fully retrace into the Order Block without breaking it, then move back in the Order Block's initial direction with an FVG occurring at the same time.

Order Block entry setup
Click to enlarge

The stop loss for this entry can be set on different levels according to different Stop Loss strategies — see the Parameters section below for the full list.

Entry Setup: iFVG (Inverted Fair Value Gap)

The iFVG entry setup is based on a broken Fair Value Gap pattern. It can be viewed as the inverse entry setup of the MSS+FVG setup above.

iFVG entry setup
Click to enlarge
Entry Setup: MSS+BOS Sequence

This entry setup is based on the occurrence of a sequence of market structure events. The sequence this setup looks for is MSS + BOS + BOS — a Market Structure Shift (also known as a Change of Character) followed by two consecutive Breaks of Structure.

MSS+BOS sequence entry setup
Click to enlarge

A trade opens immediately after a bar closes beyond the second BOS of the sequence, in the direction of that sequence.

FVG Confluence

The FVG Confluence entry is based on two events. First, an FVG forms, price retraces to it and rebounds, forming a first pullback in the trade direction. Second, an inverse FVG or a broken FVG occurs in the direction of the trade. Together, these two events constitute the confluence that defines this entry setup.

FVG Confluence entry setup, first example
Click to enlarge
FVG Confluence entry setup, second example
Click to enlarge

Features

The ICT Concepts strategy has a set of unique features:

  • A robust in-house implementation of the ICT components
  • No pending orders are placed — only market orders, avoiding order rejection due to slippage or fill failures
  • Full-auto strategy that can be scaled into multiple instances across multiple propfirm accounts
  • Precise backtesting capabilities following NinjaTrader's official best practices, achieving precise entry/exit backtesting at the tick level and intrabar granularity
  • A robust in-house order management library, resistant to connection loss, that works seamlessly on Rithmic or Tradovate accounts
Dynamic Quantity and Risk Management

As with all our strategies, this strategy implements two methods for setting the quantity of open positions:

  • Fixed Quantity: uses the same quantity for every position. If the stop loss is variable between positions, win/loss amounts will vary too.
  • Dynamic Risk-Adjusted Quantity: calculates each position's quantity from its stop loss, the maximum risk (in $) allowed per position, and the maximum allowed quantity — producing equal win/loss amounts across all positions regardless of stop loss width, an important criterion for long-run profitability.
Position Management

As with all our strategies, this strategy implements multiple position management methods:

  • ATM Strategy: delegate position management entirely to your own ATM strategy, selected from a drop-down.
  • Trailing Stop: trails the stop loss with each new swing point formed on the winning side of the position.
  • SuperTrend: uses the SuperTrend indicator as a position management method.

The strategy also allows setting the stop loss based on multiple strategies and the take profit based on a ratio — see the Parameters section for details.

Account Management

The strategy implements daily stop-trading triggers based on the net winning position count, the net losing position count, or a target realized net profit or net loss.

Parameters

We try to keep the parameters to a minimum — only the most important are exposed.

General
Execute Historical TradesEnables executing trades when the strategy runs in Historical mode — useful to test performance on past days, or simply to verify the parameters will generate trades. Should be unchecked when running Live.
Daily TakeProfit TargetThe strategy stops for the day once this daily take-profit amount is reached after a position closes. Ignored when set to 0.
Daily StopLoss LimitThe strategy stops for the day once the daily loss limit is reached (positive value — e.g. 300 stops trading once realized PnL ≤ -$300). Ignored when set to 0.
Stop @ Winning CountStops trading for the day once the net winning-trade count reaches this value. Ignored when set to 0.
Stop @ Losing CountStops trading for the day once the net losing-trade count reaches this value. Ignored when set to 0.
Order LabelA label suffixed to every position sent to the broker, useful to differentiate your orders from other users of the same strategy.
Enable/Disable Trading Days Restricts trading on certain weekdays.
  • Trade Mondays: enables trading Mondays and Sunday night when futures markets open
  • Trade Tuesdays, Wednesdays, Thursdays, Fridays: same, per weekday
Market Structure
Swings PeriodA swing (higher low, higher high, lower high, or lower low) can be detected after each bar close, but a following bar can still cancel it by forming a new swing of the same type. This parameter sets how many bars are enough to separate two swings of the same type — the higher the value, the fewer swings detected overall, and vice versa. A value of 3 or 4 is typical.
Show Price SwingsEnables/disables drawing swings on the chart. Swings are always analyzed and processed regardless of this parameter, which only affects visibility and render.
Swings Bullish Color / Swings Bearish ColorSets the color used to draw bullish/bearish price swing markers.
Swings Opacity (1-100)Opacity used to draw price swing markers.
Market Structure Confirmation Mode
  • Swing Counting: counts upward/downward swing points and waits for a price breakout of the nearest swing price to detect market structure shifts and breaks of structure
  • Protected High & Lows: a more complex method based on analyzing protected highs and lows to detect market structure shifts and breaks of structure
FVG Candle Filter Filters which Fair Value Gaps are detected.
  • 3 Candles of Same Kind: only FVGs with all 3 candles of the same type are detected
  • 2 Candles of Same Kind: only FVGs with at least 2 candles of the same type are detected
  • No Filter: no filtering on candle types — produces more FVGs than the two options above
Min. FVG Gap (Ticks)Minimum distance, in ticks, required between the wicks of a Fair Value Gap for it to be valid. The higher the value, the fewer FVGs are detected, and vice versa.
Entry Setup
Time Zone The time zone used for the Trade Time parameter below. Futures markets operate on US Eastern time (EST), so this lets you specify the trading interval relative to your own machine's time zone instead.
  • EST, CET, or Local Time
Trade Time Specifies the time interval(s) during which the strategy is allowed to place trades. A few examples:
  • EST time zone, trading restricted to RTH (regular trading hours): 09:30-16:15
  • Machine on Switzerland time, time zone set to Local, trading restricted to RTH: 15:30-22:15
  • EST time zone, trading RTH and ETH (extended trading hours) with gaps to avoid volatile periods: 00:01-08:00,09:55-15:55,18:01-23:59 — note that intervals must be listed in increasing order even though the last one is the first to occur in a new day's session, and the intervals are cut at midnight to avoid issues when stepping into a new day
  • Machine on Switzerland time, time zone set to Local, trading RTH and ETH with a gap to avoid a volatile period: 00:01-14:00,15:55-21:55
Quantity Strategy
  • Fixed Quantity: fixed quantity per trade; skipped if the evaluated risk exceeds Target Risk Per Trade ($)
  • Risk Adjusted: dynamic contract size, calculated from the stop loss price and Target Risk Per Trade ($)
Max QtyMaximum allowed quantity when Risk Adjusted is selected — useful since some prop firms enforce order-quantity limits that can invalidate an account.
Long/Short Entry Mode Useful if you already have a directional daily bias and want to restrict trading to a specific direction.
  • Long: only long trades are opened
  • Short: only short trades are opened
  • Long & Short: both directions are traded
Order QtyUsed only when Quantity Strategy is Fixed — the fixed quantity per trade (and per quantity increase, if the order management mechanism scales in). Typically 1 or 2.
SuperTrend Entry FilterRestricts long entries to when SuperTrend is bullish and short entries to when it's bearish.
Higher Timeframe FilterEnables/disables using higher-timeframe candles as an entry filter. For a long trade, the higher-timeframe (HTF) candle must have taken (mitigated) its previous candle's high or low and be in the trade's direction — e.g. on a 4-hour HTF filter, the current 4-hour candle's low must be lower than or equal to its previous candle's, and its close must be higher than its open.
Higher TimeFrame Sets the higher-timeframe period used when the Higher Timeframe Filter is enabled.
  • Second, Minute, Day, Week, Month, Year, Tick, Volume, Range, HeikenAshi
Higher TimeFrame PeriodSets the period of the higher timeframe — e.g. for a 4-hour timeframe, select Minute and set the period to 240.
Draw Higher Timeframe CandlesEnables/disables drawing the higher-timeframe candles overlaid on the current chart.
Higher Timeframe Drawing Opacity (1-100)Opacity of the HTF candles, from transparent to fully opaque.
Entry Setup: MSS+FVG
Enable MSS+FVG Entry SetupEnables the MSS+FVG entry setup — see the Entry Setup section above for a description and examples.
StopLoss Strategy Sets the stop loss strategy for the MSS+FVG entry setup.
  • FVG Zone: the edge of the FVG that triggered the trade (lower edge for a long, upper edge for a short)
  • FVG Extreme: the wick of the FVG's first candle that triggered the trade
  • Last Swing Point: the last swing point prior to the trade
  • Supertrend: the SuperTrend level at the entry bar
  • Dynamic: chooses between FVG Zone and Last Swing Point, whichever produces a risk ($) closest to Target Risk Per Trade ($)
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
Entry Mode Sets the entry mode of the MSS+FVG entry setup.
  • Immediate: enters at the first bar close that confirms the entry conditions
  • Wait For Pullback: waits for a retrace of price into the FVG zone before entering — fewer, higher-quality entries than Immediate
Entry Setup: Breaker Block (Unicorn)
Enable Breaker Block Entry SetupEnables the Breaker Block entry setup — see the Entry Setup section above for a description and examples.
StopLoss Strategy
  • FVG Zone: the edge of the FVG that triggered the trade (lower edge for a long, upper edge for a short)
  • Last Swing Point: the last swing point prior to the trade
  • Dynamic: chooses between FVG Zone and Last Swing Point, whichever produces a risk ($) closest to Target Risk Per Trade ($)
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
Entry Setup: Order Block
Enable Order Block Entry SetupEnables the Order Block entry setup — see the Entry Setup section above for a description and examples.
StopLoss Strategy
  • FVG Zone: the edge of the FVG that triggered the trade (lower edge for a long, upper edge for a short)
  • Last Swing Point: the last swing point prior to the trade
  • Dynamic: chooses between FVG Zone and Last Swing Point, whichever produces a risk ($) closest to Target Risk Per Trade ($)
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
Entry Setup: FVG Confluence
Enable FVG Confluence Entry SetupEnables/disables the FVG Confluence entry setup.
StopLoss Strategy
  • FVG Zone: the edge of the FVG that triggered the trade (lower edge for a long, upper edge for a short)
  • FVG Wick: the wick of the FVG's first candle that triggered the trade
  • SuperTrend: the SuperTrend indicator's opposite level value
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
  • Last Swing Point: the last swing point (higher high or lower low) prior to the trade
Entry Setup: iFVG
Enable iFVG Entry SetupEnables the iFVG (Inverted Fair Value Gap) entry setup — see the Entry Setup section above for a description and examples.
StopLoss Strategy
  • FVG Zone: the edge of the FVG that triggered the trade (lower edge for a long, upper edge for a short)
  • SuperTrend: the SuperTrend indicator's opposite level value
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
  • Last Swing Point: the last swing point (higher high or lower low) prior to the trade
Min. Points To Next iFVGWhen an iFVG breaks, other FVGs above or below it can act as a barrier to continuing in the breakout direction. This sets the minimum distance required between the current FVG and its closest FVG for the entry to be allowed — e.g. with a value of 5 points, an iFVG break with another FVG 3 points away in the breakout direction is skipped.
Entry Setup: MSS+BOS Sequence
Enable MSS+BOS sequence Entry SetupEnables the MSS+BOS sequence entry setup — see the Entry Setup section above for a description and examples.
StopLoss Strategy
  • SuperTrend Level: the SuperTrend indicator level
  • Last Swing Point: the last swing point prior to the trade
  • Fixed Currency Value: a currency value rather than a price level
  • Points: a price defined in points from the entry price
Order Management
Order Management Strategy
  • ATM Strategy: delegates position management entirely to a NinjaTrader ATM strategy template of your choice — specify the exact template name in ATM Strategy Template Name below
  • Classic Trail Stop: trails the stop loss based on a trigger and a trailing amount (see Trailing Stop Parameters below)
  • SuperTrend: closes trades using the SuperTrend indicator, when price closes above/below the SuperTrend level
  • Trail Stop on Swings: trails the stop loss each time a swing forms on the winning side of the trade
  • None: the stop loss defined by Target Risk Per Trade ($) is used instead
ATM Strategy selection in NinjaTrader
ATM Strategy Template NameOnly used with the ATM Strategy order management method — the exact template name of your custom ATM strategy. Must match an existing template, or no position will be opened.
On Opposite Signal
  • Breakeven: moves the stop loss to breakeven when an opposite signal occurs
  • Close Position: closes the position immediately when an opposite signal occurs
  • DoNothing: takes no action when an opposite signal occurs
Enable Price BreakevenEnables/disables the price-based breakeven mechanism.
Price Breakeven Strategy
  • Points: breakeven triggers based on points
  • Percentage: breakeven triggers based on percentage of take profit reached
Price Breakeven TriggerAvailable if price-based breakeven is enabled — the trigger value (in points, or a percentage from 1-100) needed to move the stop loss to breakeven.
TakeProfit Strategy
  • Fixed Currency Value: based on the Take Profit Currency parameter
  • Points: a number of points from the entry price
  • Fixed win/loss ratios: 0.5:1 through 6:1, calculated from the stop loss price
  • Custom Win/Loss Ratio: a manually set ratio (see below)
Custom Win/Loss RatioAvailable with the Custom Win/Loss Ratio take-profit strategy — e.g. 2 targets a 2:1 ratio.
Target Risk Per Trade ($)Maximum risk, in dollars, per position — used before opening a trade to verify the calculated stop loss respects this limit; if not, the trade is skipped.
Max Allowed Risk Per ($)Only used with Risk Adjusted quantity — controls how far the real calculated risk is allowed to deviate from the Target Risk (since an exact match is rarely possible; e.g. a $250 target risk might produce a quantity of 3, generating a real risk of $257).
Stop Loss PointsAvailable when the Stop Loss strategy is set to Points.
Stoploss offset PointsAdds an offset, in points, to the calculated stop loss level — used when computing risk per trade.
Take Profit CurrencyThe take-profit amount in dollars, used when the Fixed Currency Value take-profit strategy is selected — otherwise, set this high enough to not interfere with other, ratio-based strategies.
Take Profit PointsAvailable when the Take Profit strategy is set to Points.
Trailing Stop Parameters
Trailing Stop Strategy Available when the Classic Trail Stop order management method is selected.
  • Points: trigger and trailing amount calculated in points from entry
  • Ratio: calculated as a ratio of the stop loss value, mirrored on the winning side
Trailing Stop TriggerThe trigger (in points or ratio) for the Classic Trail Stop method.
Trail AmountThe amount (in points or ratio) trailed once the trigger is hit.
Super Trend
SuperTrend ModeATR-based, or Adaptive (based on candle close/high/low).
Period / Multiplier / Moving Avg. Type / SmoothStandard SuperTrend calculation parameters — period, band multiplier, moving-average type, and smoothing period.
SuperTrend Close Only WinningWhen SuperTrend is used as an order management method, a trade can open immediately below/above the SuperTrend level, which would otherwise close it right away — enabling this parameter avoids closing trades that were opened while already unfavorable relative to SuperTrend.
Command Buttons
The strategy exposes manual command buttons on the Chart Trader panel — make sure it's displayed on your active chart.
Strategy command buttons on the Chart Trader panel
Arm/Disarm ButtonsManually enable/disable entering long or short trades — useful if you have a directional bias.
Close Position ButtonImmediately flattens the position on the active instrument without restarting the strategy, which keeps looking for new trades afterward.
Increase Qty ButtonIncreases the active position's quantity by the amount set in Order Qty.
Set Breakeven ButtonMoves the open position's stop loss to breakeven, if doing so would improve it.

Performance Reports

Past results are not a guarantee of future results. All backtesting results are for indicative purposes only.

  • Commissions are included, using NinjaTrader's Lifetime license commission schema, for realistic results.
  • We follow NinjaTrader's official guide for precise intrabar-granularity backtesting using additional tick-level data series, and only use market orders — never pending orders — in both real-time and backtest modes.

No performance reports have been uploaded for this strategy yet.

Download & Installation Instructions

License Requirements

At automated-trading.ch you can choose to either purchase a monthly subscription to use our premium products, or use our free products without subscribing.

In both cases, you need to create an account so you can get a License you can use for both premium and free products.

To obtain your license, simply sign up and then get your license on the billing page.

Important: This is a Premium product. It can be run in Backtest, Playback, and Optimization modes for free; an active Premium subscription is required to run it live.
Download
Sign in to download this file.
Latest Version v2.3.0.0 · Published 7 months ago
This file was downloaded 1642 times. Last download was 1 day ago.

You can also download this strategy — and every other automated-trading.ch strategy or indicator — anytime from your centralized Downloads page.

Installation Steps
1
Import the downloaded .zip file into NinjaTrader using the Import NinjaScript menu item.
2
Open a new chart window, making sure the Tick Replay checkbox is checked.
3
If you don't see the Tick Replay checkbox, go to Tools → Options → Market Data and enable Show Tick Replay.
4
Right-click the chart and choose Strategies (or press Ctrl+S) to open the Add New Strategy dialog.
Adding the ICT Concepts Strategy from the Strategies dialog
Click to enlarge
5
After adding the strategy, it runs on the chart's historical data first, then switches to Real-Time mode and adds a license text box to the Chart Trader panel — make sure that panel is displayed.
6
Paste your license (found on the billing page) into the text box and click Check License.
7
Once verified, the "Check License" button turns green along with the next verification date — this only needs to be repeated after that date.
8
Without an active subscription, the strategy can still be run in Playback and Historical modes to test it first.

Frequently Asked Questions

General

Using a VPS is good but not imperative — a low-cost Windows VPS instance is sufficient for most users.

Yes, as long as each instance runs on a unique instrument — NinjaTrader aggregates orders into one position per instrument per account, so running two instances on the same instrument won't work.

You can, but running multiple instances of the strategy directly is usually a better solution — the license allows unlimited instances across multiple machines.

Yes — the strategy is designed for exactly that, and works seamlessly on Rithmic, NinjaTrader brokerage, Tradovate, or any other provider connected to your NinjaTrader platform.

It's designed to be fully automatic, but its command buttons also let you manage trades manually if you'd rather run it semi-auto.

Automated strategies trade around the clock, execute faster and more precisely, remove psychology and sentiment from the equation, and can scale to dozens or hundreds of instances — producing genuinely passive income rather than another stressful manual job.

Yes — if you have an idea that could improve the strategy, use the contact page to get in touch.

No, the source code is protected for copyright reasons.
Billing

Yes, you can cancel your subscription from the account page at any time to prevent future payments. We can't refund the unused portion of your subscription, but you'll be able to use it for the remainder of the billing cycle.

No, we don't offer a trial subscription plan, but you can download and test the product in backtest and playback modes before subscribing.

We do not offer full or partial refunds, but you may cancel your subscription at any time to stop future payments.
Skeptics

I've been a professional software developer since 2010 and have developed automated trading strategies since 2012, both for myself and for clients worldwide — I've also worked in finance and investment banking. I'm not a marketer, and I don't outsource strategy development.

I'm not selling it — I'm renting it, as an additional income source alongside diversifying my own trading. The strategy is purely mechanical, with no hidden quantitative edge that erodes as more people use it.

Pending (limit) orders offer better price execution and some protection against connectivity issues, but they can be rejected under high volatility, need active management, and are visible to the broker. Market orders guarantee execution regardless of volatility, are invisible to the broker before submission, and execute faster — the only real drawback is that a lost connection prevents sending them at all. NinjaTrader's MIT (market-if-touched) orders are a solid alternative if you specifically want pending-order behavior.

We follow NinjaTrader's official guide for precise intrabar-granularity backtesting using additional tick-level data series. Don't take our word for it — run a backtest at the end of each trading day and compare it against the strategy's actual live trades that day.

Release Notes

  • Added Higher timeframe filter to all entry setups; Added New entry setup: Fvg Confluence; Added New Take profit method: Custom win-loss ratio; Added CET Timezone option; Added new MSS+FVG parameter entry mode: immediate and wait for pullback; Removed VWAP entry filter; Removed time based breakeven; Removed Grid based position management; Removed Execute on another instrument option; Removed Weekly TakeProfit Target

  • Modified iFVG entry logic completely; Added new iFVG stoploss strategy: Supertrend; Added new iFVG parameter: Min. Points To Next iFVG; Fixed Supertrend MA type bug

  • Added Enable/Disable Trading days; Modified SuperTrend trade management logic (stoploss set on tick above/below breakout bar instead of immediate close)

  • Bug Fix: Error when using ATM Strategy

  • Bug Fix: supertrend-inverse stoploss immediate-close bug

  • Complete makeover of the strategy; Added Entry setups: MSS+FVG, Order Block, Breaker Block, iFVG, MSS+BOS sequence

  • Fixed entry when Fixed Currency value set as Stoploss method; Added Points as stoploss method

  • Added Breakeven functionality; Fixed Action buttons not displayed in Playback mode; Fixed Action buttons panel behaviour on tab change; Removed "Stop trading @ trade counts" parameter, always enable "Stop @ winning/losing count"

  • Bug Fix: Max Currency Risk should not take over stoploss price

  • Added Max Quantity parameter for risk adjusted method; Added "Net Losing Count" as daily stop trading strategy; Modified daily stopout trigger to immediate mode based on Unrealized PnL

  • Added Inverse Fair Value Gaps Entries

  • Adding Risk adjusted quantity strategy; Adding daily Stop trading strategy

  • Major update: adding ATM Strategy management capabilities

  • Added Chart panel manual control buttons; Less restrictive swings alignment condition; Added condition of current price breaking last MSS level for entries; Backtest results updated

  • Bug Fix: Risk should not block when fixed value stoploss selected

  • First Release of the strategy
discord
Join our Discord community
Questions, feedback, or just want to chat with other traders? Come say hi.
Join Discord
Quick Facts
Platform NinjaTrader 8
Category Strategy
Plan Required Premium
Latest Version v2.3.0.0
Last Updated 7 months ago
Downloads 1642