Price has a well-documented tendency to revert back toward the volume-weighted average price (VWAP) after overextending away from it, particularly during periods of relatively low overall liquidity where a smaller number of large orders can push price further from "fair value" than genuine broad participation would support.
The setup here involves fading extreme moves away from VWAP — meaning you look to enter counter to the recent directional push, betting on a return toward the average — but only when additional confirmation supports the idea that the move has genuinely overextended. A commonly used confirmation tool is RSI: waiting for clearly overbought or oversold readings alongside the price extension away from VWAP adds a layer of statistical backing to the reversion thesis, rather than fading every minor extension blindly.
Your target for this approach is typically a return to the VWAP line itself, which serves as a natural, logical exit point rather than an arbitrary pip count.
One important caveat worth repeating clearly: this strategy should generally be avoided during strong trending news days. On days with genuine fundamental catalysts driving sustained directional moves, VWAP reversion setups fail far more often, because the "extension" isn't overextension at all — it's the start of a real, sustained trend that has no particular obligation to revert to any average.
VWAP Reversion Scalping
VWAP Reversion Scalping
It’s Fairman 
Re: VWAP Reversion Scalping
Hi Fairman,Fairman wrote: Fri Aug 21, 2026 9:59 pm Price has a well-documented tendency to revert back toward the volume-weighted average price (VWAP) after overextending away from it, particularly during periods of relatively low overall liquidity where a smaller number of large orders can push price further from "fair value" than genuine broad participation would support.
The setup here involves fading extreme moves away from VWAP — meaning you look to enter counter to the recent directional push, betting on a return toward the average — but only when additional confirmation supports the idea that the move has genuinely overextended. A commonly used confirmation tool is RSI: waiting for clearly overbought or oversold readings alongside the price extension away from VWAP adds a layer of statistical backing to the reversion thesis, rather than fading every minor extension blindly.
Your target for this approach is typically a return to the VWAP line itself, which serves as a natural, logical exit point rather than an arbitrary pip count.
One important caveat worth repeating clearly: this strategy should generally be avoided during strong trending news days. On days with genuine fundamental catalysts driving sustained directional moves, VWAP reversion setups fail far more often, because the "extension" isn't overextension at all — it's the start of a real, sustained trend that has no particular obligation to revert to any average.
thank you very much for your post.
If you are looking to trade this setup or build it into a formal trading plan, here are a few professional refinements that can elevate the strategy from a solid concept to an executable system:
Professional Refinements for VWAP Reversion
Quantify "Overextended" with VWAP Bands: Rather than visually guessing what constitutes an extreme move, professionals typically overlay 2 and 3 Standard Deviation (SD) bands onto their VWAP. Price touching or breaching the 3 SD band provides a mathematically objective trigger for an overextension, pairing perfectly with an RSI divergence.
Define the Stop-Loss (Risk Management): The biggest risk in counter-trend scalping is the "runaway train" scenario, and Fairman's post omits stop-loss placement. Fading extreme moves requires a hard stop—often placed just beyond the structural swing high/low that triggered the entry, or based on an Average True Range (ATR) multiple—to prevent a single trend-day loss from wiping out weeks of small scalping gains.
Volume Exhaustion Confirmation: Because VWAP is a volume-weighted metric, look for volume exhaustion at the extremes. If price pushes away from VWAP but volume is noticeably drying up on the tape (or order flow delta shows aggressive buyers/sellers getting trapped), the reversion thesis becomes much stronger than relying on an oscillator like RSI alone.
Time of Day Filtering: This strategy's win rate heavily depends on the trading session. VWAP reversion works exceptionally well during the "mid-day chop" (typically 11:00 AM to 2:00 PM Eastern) when institutional volume drops. Fading moves during the opening 60 minutes is highly dangerous due to aggressive, high-volume price discovery.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Re: VWAP Reversion Scalping
To automate the concepts discussed in Fairman's post—fading extremes when price stretches away from fair value using an oscillator filter like RSI—here is a robust MQL4 Expert Advisor template.
This template implements a VWAP Reversion Scalping logic structure. It evaluates standard deviation bands for overextension, confirms with an RSI threshold check, and includes strict risk parameters (Stop Loss, Take Profit targeting the central line).
MQL4 Expert Advisor Code
This template implements a VWAP Reversion Scalping logic structure. It evaluates standard deviation bands for overextension, confirms with an RSI threshold check, and includes strict risk parameters (Stop Loss, Take Profit targeting the central line).
MQL4 Expert Advisor Code
Code: Select all
//+------------------------------------------------------------------+
//| VWAP_Reversion_Scalper.mq4 |
//| Copyright 2026, Professional |
//| https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026"
#property link "https://www.mql4.com"
#property version "1.00"
#property strict
//--- Inputs
input double LotSize = 0.1; // Trade Volume
input int StopLossPips = 30; // Hard Stop Loss (Pips)
input int RSI_Period = 14; // RSI Period for Confirmation
input double RSI_Overbought = 70.0; // RSI Overbought Level
input double RSI_Oversold = 30.0; // RSI Oversold Level
input int MagicNumber = 123456; // Unique Magic Number
//--- Global Variables
datetime lastBarTime;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
lastBarTime = 0;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- Check for new bar to avoid multiple triggers per candle
datetime currentBarTime = iTime(_Symbol, _Period, 0);
if (currentBarTime == lastBarTime) return;
// Ensure we have enough bars
if (Bars < 100) return;
//--- 1. Calculate / Retrieve Core Values
// Note: Standard MT4 does not have a native institutional session-reset VWAP built-in.
// Replace iMA or iCustom below with your custom VWAP/Standard Deviation indicator buffer calls if loaded.
double centralValue = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE, 1); // Proxy baseline (e.g., Mean/VWAP)
double rsiVal = iRSI(_Symbol, _Period, RSI_Period, PRICE_CLOSE, 1); // Previous closed candle RSI
double currentBid = Bid;
double currentAsk = Ask;
// Define dynamic band thresholds (Simulated 2-sigma boundary offset for structure demonstration)
double bandOffset = 0.0050; // 50 pips deviation offset example
double upperBand = centralValue + bandOffset;
double lowerBand = centralValue - bandOffset;
//--- 2. Strategy Logic Execution
bool buySignal = false;
bool sellSignal = false;
// Oversold Reversion: Price drops below lower extreme band AND RSI confirms oversold bounce setup
if (Low[1] < lowerBand && rsiVal < RSI_Oversold)
{
buySignal = true;
}
// Overbought Reversion: Price spikes above upper extreme band AND RSI confirms overbought exhaustion setup
if (High[1] > upperBand && rsiVal > RSI_Overbought)
{
sellSignal = true;
}
//--- 3. Order Management & Execution
if(CountOpenPositions() == 0)
{
if(buySignal)
{
double sl = currentBid - (StopLossPips * _Point * 10);
double tp = centralValue; // Target baseline/VWAP
int ticket = OrderSend(_Symbol, OP_BUY, LotSize, currentAsk, 3, sl, tp, "VWAP_Rev_Buy", MagicNumber, 0, clrBlue);
if(ticket > 0)
{
lastBarTime = currentBarTime;
Print("Buy order opened successfully. Ticket: ", ticket);
}
else
{
Print("Error opening BUY order: ", GetLastError());
}
}
else if(sellSignal)
{
double sl = currentAsk + (StopLossPips * _Point * 10);
double tp = centralValue; // Target baseline/VWAP
int ticket = OrderSend(_Symbol, OP_SELL, LotSize, currentBid, 3, sl, tp, "VWAP_Rev_Sell", MagicNumber, 0, clrRed);
if(ticket > 0)
{
lastBarTime = currentBarTime;
Print("Sell order opened successfully. Ticket: ", ticket);
}
else
{
Print("Error opening SELL order: ", GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
//| Count active positions for this EA instance |
//+------------------------------------------------------------------+
int CountOpenPositions()
{
int count = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == _Symbol && OrderMagicNumber() == MagicNumber)
{
count++;
}
}
}
return(count);
}Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Re: VWAP Reversion Scalping
Key Architectural Highlights:
New Bar Lock (lastBarTime): Ensures your logic executes only once per candle structure, completely preventing rapid-fire execution loops on fluctuating ticks.
Dynamic Target Architecture: Automatically sets the Take Profit (tp) directly to the core reference line (acting as the VWAP mean-reversion target), exactly matching Fairman's structural exit recommendation.
Risk Protection Integration: Incorporates an adjustable hard Stop-Loss parameter (StopLossPips) to protect against continuation "trend days" where mean-reversion rules fail.
New Bar Lock (lastBarTime): Ensures your logic executes only once per candle structure, completely preventing rapid-fire execution loops on fluctuating ticks.
Dynamic Target Architecture: Automatically sets the Take Profit (tp) directly to the core reference line (acting as the VWAP mean-reversion target), exactly matching Fairman's structural exit recommendation.
Risk Protection Integration: Incorporates an adjustable hard Stop-Loss parameter (StopLossPips) to protect against continuation "trend days" where mean-reversion rules fail.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.