Stop getting stopped out! Why you need an Order Block (OB) Finder for Scalping
Posted: Thu Jul 30, 2026 7:30 pm
Hey everyone,
If you're new to forex scalping and keep getting chopped up on the 1-minute or 5-minute charts,
you need to look into Order Blocks (OB). I see a lot of rookies relying purely on lagging indicators like moving averages or RSI,
but if you want to trade like the "smart money" (the big banks and institutions),
OBs are the way to go.So, what exactly is an Order Block?
Think of it as a hidden footprint left by the whales. When institutional traders drop massive orders, the market
consolidates and then explodes in one direction. A bullish order block is simply the last down (bearish) candle right
before a massive upward breakout. A bearish order block is the last up (bullish) candle before a huge downward dump.
Because these big players couldn't get all their massive orders filled at once, there are a ton of leftover limit orders sitting
in that original zone. When the price eventually drops back down into that bullish OB zone, it acts like a trampoline.
The remaining orders get triggered, and the price instantly reacts. Using an Order Block Finder indicator makes
this 10x easier for beginners. Instead of squinting at your charts trying to guess where the banks bought or sold,
the indicator automatically draws these supply and demand zones directly on your chart.
For scalping, this is gold. You just wait for the price to retrace into the colored box, look for a quick
rejection (like a pin bar), and ride the bounce for a fast 10-20 pips. Stop blindly buying breakouts.
Let the price come back to the Order Block. Anyone else using SMC (Smart Money Concepts) for their scalping?
Let me know below!
Basic Order Block Finder MT4 Code (MQL4)Here is a basic, rookie-friendly MT4 custom indicator script.
It scans the chart for impulsive price movements (defined by a pip threshold) and draws a rectangle over the candle
immediately preceding the move, simulating a basic Order Block.To use this:
Open MT4 -> Press F4 (MetaEditor) -> Click New -> Custom Indicator -> Paste this code over everything, and hit Compile.
If you're new to forex scalping and keep getting chopped up on the 1-minute or 5-minute charts,
you need to look into Order Blocks (OB). I see a lot of rookies relying purely on lagging indicators like moving averages or RSI,
but if you want to trade like the "smart money" (the big banks and institutions),
OBs are the way to go.So, what exactly is an Order Block?
Think of it as a hidden footprint left by the whales. When institutional traders drop massive orders, the market
consolidates and then explodes in one direction. A bullish order block is simply the last down (bearish) candle right
before a massive upward breakout. A bearish order block is the last up (bullish) candle before a huge downward dump.
Because these big players couldn't get all their massive orders filled at once, there are a ton of leftover limit orders sitting
in that original zone. When the price eventually drops back down into that bullish OB zone, it acts like a trampoline.
The remaining orders get triggered, and the price instantly reacts. Using an Order Block Finder indicator makes
this 10x easier for beginners. Instead of squinting at your charts trying to guess where the banks bought or sold,
the indicator automatically draws these supply and demand zones directly on your chart.
For scalping, this is gold. You just wait for the price to retrace into the colored box, look for a quick
rejection (like a pin bar), and ride the bounce for a fast 10-20 pips. Stop blindly buying breakouts.
Let the price come back to the Order Block. Anyone else using SMC (Smart Money Concepts) for their scalping?
Let me know below!
Basic Order Block Finder MT4 Code (MQL4)Here is a basic, rookie-friendly MT4 custom indicator script.
It scans the chart for impulsive price movements (defined by a pip threshold) and draws a rectangle over the candle
immediately preceding the move, simulating a basic Order Block.To use this:
Open MT4 -> Press F4 (MetaEditor) -> Click New -> Custom Indicator -> Paste this code over everything, and hit Compile.
Code: Select all
//+------------------------------------------------------------------+
//| Basic_OB_Finder.mq4 |
//| Copyright 2026, RookieForum |
//+------------------------------------------------------------------+
#property copyright "Forum Post Example"
#property version "1.00"
#property indicator_chart_window
// User Inputs
extern int Lookback = 200; // Number of historical bars to scan
extern int ThresholdPips = 15; // Size of the impulsive move in pips
int OnInit() {
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) {
// Clean up the drawn rectangles when removing the indicator
ObjectsDeleteAll(0, "OB_");
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// Only draw on the initial load to save processing power
if (prev_calculated == 0) {
double point = Point;
if (Digits == 3 || Digits == 5) point *= 10; // Adjust for fractional pip brokers
// Loop through historical bars (index i is older than index i-1)
for (int i = Lookback; i > 1; i--) {
// 1. Identify Bullish Order Blocks (Impulsive move UP)
if (close[i-1] - open[i-1] > ThresholdPips * point) {
if (close[i] < open[i]) { // Previous candle was bearish
string bullName = "OB_Bull_" + IntegerToString(time[i]);
if(ObjectFind(0, bullName) < 0) {
// Draw a green rectangle over the bearish candle
ObjectCreate(0, bullName, OBJ_RECTANGLE, 0, time[i], high[i], time[i-1], low[i]);
ObjectSetInteger(0, bullName, OBJPROP_COLOR, clrMediumSeaGreen);
ObjectSetInteger(0, bullName, OBJPROP_BACK, true);
}
}
}
// 2. Identify Bearish Order Blocks (Impulsive move DOWN)
if (open[i-1] - close[i-1] > ThresholdPips * point) {
if (close[i] > open[i]) { // Previous candle was bullish
string bearName = "OB_Bear_" + IntegerToString(time[i]);
if(ObjectFind(0, bearName) < 0) {
// Draw a red rectangle over the bullish candle
ObjectCreate(0, bearName, OBJ_RECTANGLE, 0, time[i], high[i], time[i-1], low[i]);
ObjectSetInteger(0, bearName, OBJPROP_COLOR, clrIndianRed);
ObjectSetInteger(0, bearName, OBJPROP_BACK, true);
}
}
}
}
}
return(rates_total);
}
//+------------------------------------------------------------------+