Author states: If you’ve ever wondered why your bullish trades keep getting wrecked in a choppy market, or why your puts expire worthless during strong uptrends, you’re not alone. Most traders make the mistake of using the same strategies regardless of market conditions. The Market Pulse indicator fixes this by telling you exactly what type of market you’re trading in.
The biggest mistake? Fighting the stage. I've seen traders buying calls during clear deceleration phases because "the chart looks good." The chart might look good, but the market structure is telling you something different.
Another common error is ignoring the transitions. Those stage changes are where the biggest moves happen, but most people don't notice until it's too late. By then, the easy money is gone.
Also, don't overtrade during distribution phases. Sometimes the best move is no move. The market will give you better opportunities when it shifts into acceleration or deceleration.
https://tosindicators.com/indicators/market-pulse
I would appreciate it if anyone could add the MultiTimeFrame feature to this Indicator.
The biggest mistake? Fighting the stage. I've seen traders buying calls during clear deceleration phases because "the chart looks good." The chart might look good, but the market structure is telling you something different.
Another common error is ignoring the transitions. Those stage changes are where the biggest moves happen, but most people don't notice until it's too late. By then, the easy money is gone.
Also, don't overtrade during distribution phases. Sometimes the best move is no move. The market will give you better opportunities when it shifts into acceleration or deceleration.

https://tosindicators.com/indicators/market-pulse
I would appreciate it if anyone could add the MultiTimeFrame feature to this Indicator.
Code:
#TOS Indicators
#Home of the Volatility Box
#More info regarding this indicator here: tosindicators.com/indicators/market-pulse
#Code written in 2019
#Full Youtube Tutorial here: https://youtu.be/Hku6dLR-m_A
input ChartBubblesOn = no;
input price = close;
input length = 10;
def tmp1 = if price > price[1] then price - price[1] else 0;
def tmp2 = if price[1] > price then price[1] - price else 0;
def d2 = sum(tmp1, length);
def d4 = sum(tmp2, length);
def cond = d2 + d4 == 0;
def ad3 = if cond then 0 else (d2 - d4) / (d2 + d4) * 100;
def coeff = 2 / (length + 1) * AbsValue(ad3) / 100;
def asd = compoundValue("visible data" = coeff * price + (if IsNaN(asd[1]) then 0 else asd[1]) * (1 - coeff), "historical data" = price
);
plot VMA = asd;
VMA.setDefaultColor(GetColor(0));
def vwma8 = sum(volume * close, 8) / sum(volume, 8);
def vwma21 = sum(volume * close, 21) / sum(volume, 21);
def vwma34 = sum(volume * close, 34) / sum(volume, 34);
def bullish = if vwma8 > vwma21 and vwma21 > vwma34 then 1 else 0;
def bearish = if vwma8 < vwma21 and vwma21 < vwma34 then 1 else 0;
def distribution = if !bullish and !bearish then 1 else 0;
AddLabel(yes, if bullish then "Stage: Acceleration" else if bearish then "Stage: Deceleration" else if close>=VMA then "Stage: Accumulation" else "Stage: Distribution", if bullish then color.green else if bearish then color.red else if close >=VMA then color.yellow else color.orange);
VMA.AssignValueColor(if bearish and close<= VMA then color.red
else if bullish and close >= VMA then color.green
else color.gray);
def accumulationToAcceleration = if (bullish and close>=VMA) then 1 else 0;
AddChartBubble(ChartBubblesOn and accumulationToAcceleration and !accumulationToAcceleration[1], close, "Entering Acceleration", color.green);
def distributionToDeceleration = if (bearish and close <= VMA) then 1 else 0;
AddChartBubble(ChartBubblesOn and distributionToDeceleration and !distributionToDeceleration[1], close, "Entering Deceleration", color.red);
Last edited by a moderator: