The Three Step Future-Trend combines volume analysis, price action, and forward-looking visualization to anticipate potential market movements. By focusing on delta volume —the difference between volume in bullish and bearish candles— the indicator groups this information into sequential blocks, offering insight into the evolution of buying or selling pressure over time.
It is especially useful for traders seeking visual tools to assess market trends from a forward-thinking perspective. Whether for intraday trading or higher timeframe analysis, this indicator provides clear signals of trend continuity or potential reversals.
At its core, the Three Step Future-Trend relies on delta volume analysis, which distinguishes whether a candle’s volume is bullish or bearish. If a bar closes above its open, its volume is considered positive; otherwise, it is treated as negative. This simple logic helps evaluate whether volume is aligned with the market direction.
The indicator groups delta volume into three sequential blocks of equal size (default: 25 bars per block):
Each block also includes the total volume, allowing traders to compare buying/selling pressure across time. This layered analysis reveals momentum changes and the strength behind trends.
A key feature of the Three Step Future-Trend is its strong visual presentation. Each of the three volume blocks is drawn as a colored rectangle directly over the price chart, giving the user an immediate visual impression of the recent volume trend.
Each rectangle spans the high-low range of the last 50 bars within the corresponding period block, providing price context for the volume data.
Color coding enhances interpretation:
This visual approach enables quick pattern recognition and identification of consistent or shifting market behavior.
The most innovative element of the Three Step Future-Trend is its ability to project future price movement based solely on the closing behavior of candles within past blocks.
The indicator calculates average closing values over three 25-bar blocks and compares them to the current close. It then estimates a difference between the current price and the average, applying that offset forward using the same block logic to create a projected price curve.
This projection is drawn with line segments extending into the future, visually outlining a possible price path based on historical structure. While delta volume does not influence the price projection itself, it determines the color of the projection:
This overlay offers a forecast-like view of price structure while incorporating recent volume sentiment as visual context.
The Three Step Future-Trend includes an informative data panel that offers a compact summary of the volume blocks and, optionally, the projected price.
Displayed directly on the chart, the panel includes:
This information helps detect shifts in buying/selling dynamics over time.
Both elements are optional and can be enabled or hidden via the indicator settings.
The Three Step Future-Trend offers several configurable options to adapt it to various trading styles and timeframes:
period):showDelta):showPrice):These settings allow the indicator to serve both visual traders and those who prefer a more analytical approach.
//---------------------------------------------------//
//PRC_Three Step Future-Trend
//version = 0
//20.05.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//---------------------------------------------------//
// INPUTS
//---------------------------------------------------//
defparam drawonlastbaronly = true
period = 25
showDelta = 1
showPrice = 1
//---------------------------------------------------//
//---------------------------------------------------//
// === DELTA VOLUME CALCULATION ===
IF close > open THEN
deltaVolume = volume
ELSE
deltaVolume = -volume
ENDIF
// === DELTA PER BLOCK ===
delta1 = summation[period](deltaVolume)
delta2 = summation[period * 2](deltaVolume) - delta1
delta3 = summation[period * 3](deltaVolume) - delta1 - delta2
// === TOTAL VOLUME PER BLOCK ===
total1 = summation[period](volume)
total2 = summation[period * 2](volume) - total1
total3 = summation[period * 3](volume) - total1 - total2
// === COLORS BASED ON TREND ===
IF delta1 > 0 THEN
red1 = 0
green1 = 230
blue1 = 118
ELSE
red1 = 212
green1 = 37
blue1 = 131
ENDIF
IF delta2 > 0 THEN
red2 = 0
green2 = 230
blue2 = 118
ELSE
red2 = 212
green2 = 37
blue2 = 131
ENDIF
IF delta3 > 0 THEN
red3 = 0
green3 = 230
blue3 = 118
ELSE
red3 = 212
green3 = 37
blue3 = 131
ENDIF
// === VOLUME BLOCK VISUALIZATION ===
// Box 1 (most recent)
left1 = barindex - period
right1 = barindex
top1 = highest[50](high)
bot1 = lowest[50](low)
drawrectangle(left1, top1, right1, bot1) coloured(red1, green1, blue1) fillcolor(red1, green1, blue1, 30)
// Box 2 (previous)
left2 = barindex - period * 2
right2 = barindex - period
top2 = highest[50](high)[period]
bot2 = lowest[50](low)[period]
drawrectangle(left2, top2, right2, bot2) coloured(red2, green2, blue2) fillcolor(red2, green2, blue2, 30)
// Box 3 (oldest)
left3 = barindex - period * 3
right3 = barindex - period * 2
top3 = highest[50](high)[period * 2]
bot3 = lowest[50](low)[period * 2]
drawrectangle(left3, top3, right3, bot3) coloured(red3, green3, blue3) fillcolor(red3, green3, blue3, 30)
// === FUTURE TREND PROJECTION ===
refValue = (close[0] + close[period] + close[period * 2]) / 3
IF islastbarupdate THEN
cumDelta = 0
FOR i = 0 TO period DO
$Value[i] = (close[i] + close[i + period] + close[i + period * 2]) / 3
$delta[i] = (deltaVolume[i] + deltaVolume[i + period] + deltaVolume[i + period * 2]) / 3
cumDelta = cumDelta + $delta[i]
NEXT
FOR j = 0 TO period DO
$ValueRev[j] = $Value[period - j]
NEXT
diff = close - $ValueRev[0]
voldelta = cumDelta / period
IF voldelta > 0 THEN
r = 0
g = 230
b = 118
ELSE
r = 212
g = 37
b = 131
ENDIF
FOR k = 0 TO period DO
$futureIdx[k] = barindex + k
$futurePrice[k] = diff + $ValueRev[k]
drawsegment($futureIdx[k + 1], $futurePrice[k + 1], $futureIdx[k], $futurePrice[k]) coloured(r, g, b)
NEXT
// === DATA TABLE ===
// Delta Volume
if showDelta then
drawrectangle(-300, -80, -10, -180) anchor(topright, xshift, yshift)fillcolor(r,g,b,30)
drawtext("Period", -250, -100) anchor(topright, xshift, yshift)
drawtext("Delta", -150, -100) anchor(topright, xshift, yshift)
drawtext("Total", -50, -100) anchor(topright, xshift, yshift)
drawtext("25-0", -250, -120) anchor(topright, xshift, yshift)
drawtext("#delta1#", -150, -120) anchor(topright, xshift, yshift)
drawtext("#total1#", -50, -120) anchor(topright, xshift, yshift)
drawtext("50-25", -250, -140) anchor(topright, xshift, yshift)
drawtext("#delta2#", -150, -140) anchor(topright, xshift, yshift)
drawtext("#total2#", -50, -140) anchor(topright, xshift, yshift)
drawtext("75-50", -250, -160) anchor(topright, xshift, yshift)
drawtext("#delta3#", -150, -160) anchor(topright, xshift, yshift)
drawtext("#total3#", -50, -160) anchor(topright, xshift, yshift)
endif
// Proyected Price
If showPrice then
FuturePrice=$futurePrice[period]
drawtext("Proyected Price",-220,-200)anchor(topright,xshift,yshift)
drawtext("#FuturePrice#",-75,-200)anchor(topright,xshift,yshift)
drawrectangle(-300,-220,-10,-180)anchor(topright,xshift,yshift)fillcolor(r,g,b,30)
endif
ENDIF
//---------------------------------------------------//
return