Why Lagging Indicators Can Trip Up DayTraders |
this isn't bad but, it gives a delayed signal.
https://usethinkscript.com/threads/hma-arrow-on-price.13046/
After I tested it, I noticed I was giving a decent amount of money back especially if move is fast.
Question for you is, can you have the arrow present itself when the color of the Hull MA changes instead of relying on price change.
Thanks in advance.
No, you are being fooled by a repainting indicator.Out of all the Hull MA Arrow combination Indicators this one works the best.
https://usethinkscript.com/threads/...t-scan-for-thinkorswim.947/page-5#post-102164
It's not as delayed as the others. You end up being one bar behind where with the others it was a two or three bar lag.
Awesome but it looks just to be following price action and it looks to have some lag. Do you think this is better than let's say the VIPMagicSupertrend or the AMM?
THANK YOUThis study, SuperTrends, and the AMM2 are lagging indicators.
The amount of lag in an indicator depends on how far back it looks for data:
Shorter lookback periods: Less lag, but potentially more noise and less clear ranges or trends.
Longer lookback periods: More lag, but often provide a clearer picture of overall trends or ranges.
These indicators are primarily used for:
Identifying trends
Determining trading ranges
They are used for broader market analysis, not for timing entries and exits.
The lag actually helps smooth out short-term price fluctuations, providing a clearer overall picture.
| Indicator | Lag level | Best use | Bad use |
|---|---|---|---|
| Moving Average | High | Trend regime, dynamic support/resistance | Entry trigger by crossover |
| RSI | Medium | Momentum regime, divergence, reclaim from weak/strong zones | Blind overbought/oversold fades |
| MACD | High | Trend confirmation, momentum expansion | Early entries |
| Bollinger Bands | Medium | Volatility compression/expansion, mean reversion context | Buying/selling just because band touched |
| Volume | Low to medium | Confirmation of effort, accumulation/distribution, breakout quality | Using raw volume without price context |
| Stochastic | Medium | Timing inside ranges | Trending-market reversal calls |
| A/D | Medium | Participation/pressure context | Standalone signal |
| ATR | Not directional | Stops, target spacing, position sizing | Directional prediction |
| Fibonacci | Not predictive | Mapping likely reaction zones | Pretending levels are magic |
| Parabolic SAR | High | Trailing stop in clean trends | Entry signal in chop |
# Early Bullish Repair Scanner - Scan Safe
# Use Scan Hacker aggregation: 1H or 4H
input fastLength = 20;
input slowLength = 50;
input rsiLength = 14;
input lowLookbackShort = 10;
input lowLookbackLong = 30;
input maxExtensionPercent = 4.0;
input minVolume = 500000;
input minPrice = 5.0;
def fastMA = Average(close, fastLength);
def slowMA = Average(close, slowLength);
def rsi = RSI(length = rsiLength);
def recentLow = Lowest(low, lowLookbackShort);
def priorLow = Lowest(low[lowLookbackShort], lowLookbackLong);
def higherLowStructure =
recentLow > priorLow;
def reclaimFast =
close > fastMA and close[1] <= fastMA[1];
def alreadyAboveFast =
close > fastMA;
def rsiRepair =
rsi > 45 and rsi > rsi[3];
def notExtended =
close <= fastMA * (1 + maxExtensionPercent / 100);
def volumeOK =
Average(volume, 20) >= minVolume;
def priceOK =
close >= minPrice;
plot scan =
higherLowStructure and
alreadyAboveFast and
rsiRepair and
notExtended and
volumeOK and
priceOK;
# Bullish Pullback Continuation Scanner - Scan Safe
# Trend exists, but entry is pullback/reclaim based
input fastLength = 20;
input slowLength = 50;
input rsiLength = 14;
input maxDistanceFromFastPercent = 3.0;
input minVolume = 500000;
input minPrice = 5.0;
def fastMA = Average(close, fastLength);
def slowMA = Average(close, slowLength);
def rsi = RSI(length = rsiLength);
def trendOK =
close > slowMA and
fastMA > slowMA;
def pullbackNearFast =
low <= fastMA * (1 + maxDistanceFromFastPercent / 100) and
close >= fastMA * (1 - maxDistanceFromFastPercent / 100);
def reclaimBehavior =
close > fastMA and
close > close[1];
def rsiConstructive =
rsi > 50 and rsi > rsi[2];
def volumeOK =
Average(volume, 20) >= minVolume;
def priceOK =
close >= minPrice;
plot scan =
trendOK and
pullbackNearFast and
reclaimBehavior and
rsiConstructive and
volumeOK and
priceOK;
# Volume Confirmed Reclaim Scanner - Scan Safe
# Looks for fresh reclaim, not late MA alignment
input fastLength = 20;
input slowLength = 50;
input recentBars = 3;
input minVolumeRatio = 1.2;
input minVolume = 500000;
input minPrice = 5.0;
def fastMA = Average(close, fastLength);
def slowMA = Average(close, slowLength);
def avgVol = Average(volume, 20);
def volRatio = volume / avgVol;
def recentBelowFast =
Lowest(close - fastMA, recentBars) < 0;
def reclaimNow =
close > fastMA and
recentBelowFast;
def broaderTrendOK =
close > slowMA;
def volumeConfirm =
volRatio >= minVolumeRatio;
def priceOK =
close >= minPrice;
def liquidityOK =
avgVol >= minVolume;
plot scan =
reclaimNow and
broaderTrendOK and
volumeConfirm and
priceOK and
liquidityOK;
# Relative Strength Repair Scanner - Scan Safe-ish
# If TOS rejects close("SPY") in your scan, use this as a watchlist column instead
input fastLength = 20;
input rsLength = 20;
input minVolume = 500000;
input minPrice = 5.0;
def fastMA = Average(close, fastLength);
def spyClose = close("SPY");
def rsLine = close / spyClose;
def rsMA = Average(rsLine, rsLength);
def rsImproving =
rsLine > rsMA and
rsLine > rsLine[5];
def priceRepair =
close > fastMA and
close > close[3];
def liquidityOK =
Average(volume, 20) >= minVolume;
def priceOK =
close >= minPrice;
plot scan =
rsImproving and
priceRepair and
liquidityOK and
priceOK;
# Early Bearish Failure Scanner - Scan Safe
# Finds rally failures before the full MA stack is obvious
input fastLength = 20;
input slowLength = 50;
input rsiLength = 14;
input highLookbackShort = 10;
input highLookbackLong = 30;
input maxDistanceFromFastPercent = 3.0;
input minVolume = 500000;
input minPrice = 5.0;
def fastMA = Average(close, fastLength);
def slowMA = Average(close, slowLength);
def rsi = RSI(length = rsiLength);
def recentHigh = Highest(high, highLookbackShort);
def priorHigh = Highest(high[highLookbackShort], highLookbackLong);
def lowerHighStructure =
recentHigh < priorHigh;
def belowSlow =
close < slowMA;
def rallyIntoFast =
high >= fastMA * (1 - maxDistanceFromFastPercent / 100) and
close <= fastMA * (1 + maxDistanceFromFastPercent / 100);
def rejection =
close < fastMA and
close < close[1];
def rsiWeak =
rsi < 55 and
rsi < rsi[3];
def volumeOK =
Average(volume, 20) >= minVolume;
def priceOK =
close >= minPrice;
plot scan =
lowerHighStructure and
belowSlow and
rallyIntoFast and
rejection and
rsiWeak and
volumeOK and
priceOK;
# Swing Repair / Failure Scanner - Scan Safe
# Less laggy alternative to MTF MA alignment
# Use Scan Hacker aggregation: 1H or 4H
input Direction = {default Bullish, Bearish};
input fastLength = 20;
input slowLength = 50;
input rsiLength = 14;
input recentBars = 3;
input maxDistanceFromFastPercent = 4.0;
input minVolume = 500000;
input minPrice = 5.0;
input requireVolumeExpansion = no;
input minVolumeRatio = 1.1;
def fastMA = Average(close, fastLength);
def slowMA = Average(close, slowLength);
def rsi = RSI(length = rsiLength);
def avgVol = Average(volume, 20);
def volRatio = if avgVol != 0 then volume / avgVol else 0;
def recentBelowFast =
Lowest(close - fastMA, recentBars) < 0;
def recentAboveFast =
Highest(close - fastMA, recentBars) > 0;
def bullishReclaim =
close > fastMA and
recentBelowFast;
def bearishFailure =
close < fastMA and
recentAboveFast;
def bullishContext =
close > slowMA;
def bearishContext =
close < slowMA;
def bullishRSI =
rsi > 45 and
rsi > rsi[3];
def bearishRSI =
rsi < 55 and
rsi < rsi[3];
def bullishNotExtended =
close <= fastMA * (1 + maxDistanceFromFastPercent / 100);
def bearishNotExtended =
close >= fastMA * (1 - maxDistanceFromFastPercent / 100);
def volumeOK =
if requireVolumeExpansion then volRatio >= minVolumeRatio else avgVol >= minVolume;
def priceOK =
close >= minPrice;
def bullishScan =
bullishContext and
bullishReclaim and
bullishRSI and
bullishNotExtended and
volumeOK and
priceOK;
def bearishScan =
bearishContext and
bearishFailure and
bearishRSI and
bearishNotExtended and
volumeOK and
priceOK;
plot scan =
if Direction == Direction.Bullish
then bullishScan
else bearishScan;
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Start a new thread and receive assistance from our community.
useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.
We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.
If you are new, or just looking for guidance, here are some helpful links to get you started.