What's the best Scalping Trend indicator (In Your Opinion).

METAL

Active member
Plus
Hey all, I have tried so many indicators, I have forgot more than I can remember. I would like to know what you guys use. Preferably a lower but upper will do. I am using it on low time frames 1m to 3m. Thanks in advance.
 
  • Like
Reactions: KAK
Hey all, I have tried so many indicators, I have forgot more than I can remember. I would like to know what you guys use. Preferably a lower but upper will do. I am using it on low time frames 1m to 3m. Thanks in advance.
You don't have very many choices for the scalping timeframes.
Because most trend indicators use some sort of moving averages. Moving averages are a lagging indicator.
They are contra-indicated on 5min charts and below.

Scalpers focus on reading the tape, price action, and candle patterns:
https://usethinkscript.com/threads/price-action-toolbox-for-thinkorswim.10747/
 
Last edited:
Hey all, I have tried so many indicators, I have forgot more than I can remember. I would like to know what you guys use. Preferably a lower but upper will do. I am using it on low time frames 1m to 3m. Thanks in advance.
As noted above, it's difficult to scalp with trend indicators. I use the following:

1- Williams ProGo for entry when institutions have retail traders trapped.
2- Hand drawn fibs to target various percentages of structure for exits and stops.
3- Saty pivots to assess whether price has moved enough to trigger an entry or has already moved too far for my risk tolerance.
4-Zscore colored candles.
6-Stacked EMAs on higher timeframe for trend direction so that lower timeframe trades are taken in same direction as higher timeframe trend.

Best wishes and happy trading :)
 
As noted above, it's difficult to scalp with trend indicators. I use the following:

1- Williams ProGo for entry when institutions have retail traders trapped.
2- Hand drawn fibs to target various percentages of structure for exits and stops.
3- Saty pivots to assess whether price has moved enough to trigger an entry or has already moved too far for my risk tolerance.
4-Zscore colored candles.
6-Stacked EMAs on higher timeframe for trend direction so that lower timeframe trades are taken in same direction as higher timeframe trend.

Best wishes and happy trading :)
Thank you Trader Rader. I will check these out. At the moment, I trade SPX mainly

1 - 2m chart:
1)HMA at 15 length to help stay in trades. Sometimes, it gets me out to early.
2) I use the 50 EMA on the 1m as a S/R and a breakout possibility
3) I also have VWAP and 9 SMA
4) DTS Scalping indicator (The one I accidentally created)
5)Wave Trend for possible heads up

3min chart
1) Satys Pivot ribbon
2 Big 4

10m chart
1) Stacked EMA's for trend direction

-Is Saty's Pivots for sale or free? I have not seen that one.
-I draw major supply/demand zones based off of 30m up to wk TF.
- I try (LOL) to only take trades that reject or break and retest these zones.
 
You don't have very many choices for the scalping timeframes.
Because most trend indicators use some sort of moving averages. Moving averages are a lagging indicator.
They are contra-indicated on 5min charts and below.

Many scalpers rely on the repainters. They are the fastest way to catch trends:
read more:
https://usethinkscript.com/threads/the-power-of-repainters-in-thinkorswim.16461/
MerryDay, when you say
"Moving averages are a lagging indicator.
They are contra-indicated on 5min charts and below." Does that mean when we think price is going to zig it zags. Just trying to learn so that I can plug up some more holes.
 
-Is Saty's Pivots for sale or free? I have not seen that one.
I apologize! They are called Saty ATR Levels. That thread contains a link to Saty's web site where there are free scans, etc, if you are interested. For me, the trick was to figure out which higher timeframe aggregation (4 hours, daily, etc) I wanted. Also had to figure out how to stop the lines from printing across the chart to keep it nice and tidy ;)

Best wishes and happy trading!
 
I apologize! They are called Saty ATR Levels. That thread contains a link to Saty's web site where there are free scans, etc, if you are interested. For me, the trick was to figure out which higher timeframe aggregation (4 hours, daily, etc) I wanted. Also had to figure out how to stop the lines from printing across the chart to keep it nice and tidy ;)

Best wishes and happy trading!
Okay. I already have those. I use the one that allows me to use the scalp option.
 
MerryDay, when you say
"Moving averages are a lagging indicator.
They are contra-indicated on 5min charts and below." Does that mean when we think price is going to zig it zags. Just trying to learn so that I can plug up some more holes.

Think about carrying weights along the length of a chain that is dragging behind you.
Are those weights back along that chain going to be able to immediately alert you when the road starts to curve and that you should make a turn?

No, those weights don't start turning until well after you have hit that turn.

That is the story of moving averages. They cannot react to what is happening NOW. That is death to scalpers.

Longer moving averages are awesome for overall trend / range data on all timeframes. But not for use in determining buy / sell signals on timeframes of 5min and lower.

71Warhawk, you bring up another bane of moving averages: the whipsaws.
Here are all the reasons why moving averages should not be considered as part of a scalping strategy:
https://usethinkscript.com/threads/lagging-indicator-accuracy-in-thinkorswim.15624/#post-126015
 
Last edited:
I think one that’s overlooked is the 14Day volume based RSI overlapped with the 14 day regular price based RSI. To catch reversals after a liquidity sweep. Specially when both lines are in over bought or over sold territories and they cross.
I am intrigued to look into this, but I don't know of a distinction between a volume based RSI vs. a regular RSI. Is there a particular indicator that plots volume based RSI, or is it a built in TOS study? I searched Google and didn't find any more information.
 
I think one that’s overlooked is the 14Day volume based RSI overlapped with the 14 day regular price based RSI. To catch reversals after a liquidity sweep. Specially when both lines are in over bought or over sold territories and they cross.

here is something to experiment with
i copied the rsi code twice and set one up for price and the second one for volume.

when both rsi's are above their overbought levels, it draws a down arrow.
when both rsi's are below their oversold levels, it draws a up arrow.

to me , my signals seems hit or miss.
maybe i'm doing it wrong, but i've never seen reliable signals from a rsi.

Code:
# rsi_vol_price

#https://usethinkscript.com/threads/whats-the-best-scalping-trend-indicator-in-your-opinion.16487/#post-133314
#iMauiC  11/9  #9
# 14 Day volume based RSI overlapped with the 14 day regular price based RSI. To catch reversals after a liquidity sweep.
# Specially when both lines are in over bought or over sold territories and they cross.



# RSI
# TD Ameritrade IP Company, Inc. (c) 2007-2023

declare lower;

def na = double.nan;
def bn = barnumber();

#---------------------------
# RSI - price

input length = 14;
input over_Bought = 60;
input over_Sold = 40;
def price = close;
input averageType = AverageType.WILDERS;
input showBreakoutSignals = no;

def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

plot RSI = 50 * (ChgRatio + 1);
plot OverSold = over_Sold;
plot OverBought = over_Bought;
plot UpSignal = if RSI crosses above OverSold then OverSold else Double.NaN;
plot DownSignal = if RSI crosses below OverBought then OverBought else Double.NaN;

UpSignal.SetHiding(!showBreakoutSignals);
DownSignal.SetHiding(!showBreakoutSignals);

RSI.DefineColor("OverBought", GetColor(5));
RSI.DefineColor("Normal", GetColor(7));
RSI.DefineColor("OverSold", GetColor(1));
RSI.AssignValueColor(if RSI > over_Bought then RSI.Color("OverBought") else if RSI < over_Sold then RSI.Color("OverSold") else RSI.Color("Normal"));
OverSold.SetDefaultColor(GetColor(8));
OverBought.SetDefaultColor(GetColor(8));
UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------
# RSI - volume

input vol_length = 14;
input vol_over_Bought = 60;
input vol_over_Sold = 48;
def vol_price = volume/1000;
input vol_averageType = AverageType.WILDERS;
input vol_showBreakoutSignals = no;

def vol_NetChgAvg = MovingAverage(vol_averageType, vol_price - vol_price[1], vol_length);
def vol_TotChgAvg = MovingAverage(vol_averageType, AbsValue(vol_price - vol_price[1]), vol_length);
def vol_ChgRatio = if vol_TotChgAvg != 0 then vol_NetChgAvg / vol_TotChgAvg else 0;

plot vol_RSI = 50 * (vol_ChgRatio + 1);
plot vol_OverSold = vol_over_Sold;
plot vol_OverBought = vol_over_Bought;
plot vol_UpSignal = if vol_RSI crosses above vol_OverSold then vol_OverSold else Double.NaN;
plot vol_DownSignal = if vol_RSI crosses below vol_OverBought then vol_OverBought else Double.NaN;

vol_UpSignal.SetHiding(!vol_showBreakoutSignals);
vol_DownSignal.SetHiding(!vol_showBreakoutSignals);

vol_RSI.DefineColor("OverBought", GetColor(5));
vol_RSI.DefineColor("Normal", GetColor(7));
vol_RSI.DefineColor("OverSold", GetColor(1));
vol_RSI.AssignValueColor(if vol_RSI > vol_over_Bought then vol_RSI.Color("OverBought") else if vol_RSI < vol_over_Sold then vol_RSI.Color("OverSold") else vol_RSI.Color("Normal"));
vol_OverSold.SetDefaultColor(GetColor(8));
vol_OverBought.SetDefaultColor(GetColor(8));
vol_UpSignal.SetDefaultColor(Color.UPTICK);
vol_UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
vol_DownSignal.SetDefaultColor(Color.DOWNTICK);
vol_DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------

def both_top = (RSI > over_Bought and vol_RSI > vol_over_Bought);
def both_bot = (RSI < over_Sold and vol_RSI < vol_over_Sold);

# num#1 > num#2 , then 1st color , else 2nd color
#addcloud(50, 20, color.green, color.red);

addcloud(if both_top then 100 else na, 70, color.red);
addcloud(if both_bot then 30 else na, 0, color.green);


input arrows = yes;
plot dwn_arrow = if both_top then max(rsi, vol_RSI) else na;
dwn_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
dwn_arrow.SetDefaultColor(Color.red);
dwn_arrow.setlineweight(3);
dwn_arrow.hidebubble();

plot up_arrow = if both_bot then min(rsi, vol_RSI) else na;
up_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
up_arrow.SetDefaultColor(Color.green);
up_arrow.setlineweight(3);
up_arrow.hidebubble();

#
 
here is something to experiment with
i copied the rsi code twice and set one up for price and the second one for volume.

when both rsi's are above their overbought levels, it draws a down arrow.
when both rsi's are below their oversold levels, it draws a up arrow.

to me , my signals seems hit or miss.
maybe i'm doing it wrong, but i've never seen reliable signals from a rsi.

Code:
# rsi_vol_price

#https://usethinkscript.com/threads/whats-the-best-scalping-trend-indicator-in-your-opinion.16487/#post-133314
#iMauiC  11/9  #9
# 14 Day volume based RSI overlapped with the 14 day regular price based RSI. To catch reversals after a liquidity sweep.
# Specially when both lines are in over bought or over sold territories and they cross.



# RSI
# TD Ameritrade IP Company, Inc. (c) 2007-2023

declare lower;

def na = double.nan;
def bn = barnumber();

#---------------------------
# RSI - price

input length = 14;
input over_Bought = 60;
input over_Sold = 40;
def price = close;
input averageType = AverageType.WILDERS;
input showBreakoutSignals = no;

def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

plot RSI = 50 * (ChgRatio + 1);
plot OverSold = over_Sold;
plot OverBought = over_Bought;
plot UpSignal = if RSI crosses above OverSold then OverSold else Double.NaN;
plot DownSignal = if RSI crosses below OverBought then OverBought else Double.NaN;

UpSignal.SetHiding(!showBreakoutSignals);
DownSignal.SetHiding(!showBreakoutSignals);

RSI.DefineColor("OverBought", GetColor(5));
RSI.DefineColor("Normal", GetColor(7));
RSI.DefineColor("OverSold", GetColor(1));
RSI.AssignValueColor(if RSI > over_Bought then RSI.Color("OverBought") else if RSI < over_Sold then RSI.Color("OverSold") else RSI.Color("Normal"));
OverSold.SetDefaultColor(GetColor(8));
OverBought.SetDefaultColor(GetColor(8));
UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------
# RSI - volume

input vol_length = 14;
input vol_over_Bought = 60;
input vol_over_Sold = 48;
def vol_price = volume/1000;
input vol_averageType = AverageType.WILDERS;
input vol_showBreakoutSignals = no;

def vol_NetChgAvg = MovingAverage(vol_averageType, vol_price - vol_price[1], vol_length);
def vol_TotChgAvg = MovingAverage(vol_averageType, AbsValue(vol_price - vol_price[1]), vol_length);
def vol_ChgRatio = if vol_TotChgAvg != 0 then vol_NetChgAvg / vol_TotChgAvg else 0;

plot vol_RSI = 50 * (vol_ChgRatio + 1);
plot vol_OverSold = vol_over_Sold;
plot vol_OverBought = vol_over_Bought;
plot vol_UpSignal = if vol_RSI crosses above vol_OverSold then vol_OverSold else Double.NaN;
plot vol_DownSignal = if vol_RSI crosses below vol_OverBought then vol_OverBought else Double.NaN;

vol_UpSignal.SetHiding(!vol_showBreakoutSignals);
vol_DownSignal.SetHiding(!vol_showBreakoutSignals);

vol_RSI.DefineColor("OverBought", GetColor(5));
vol_RSI.DefineColor("Normal", GetColor(7));
vol_RSI.DefineColor("OverSold", GetColor(1));
vol_RSI.AssignValueColor(if vol_RSI > vol_over_Bought then vol_RSI.Color("OverBought") else if vol_RSI < vol_over_Sold then vol_RSI.Color("OverSold") else vol_RSI.Color("Normal"));
vol_OverSold.SetDefaultColor(GetColor(8));
vol_OverBought.SetDefaultColor(GetColor(8));
vol_UpSignal.SetDefaultColor(Color.UPTICK);
vol_UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
vol_DownSignal.SetDefaultColor(Color.DOWNTICK);
vol_DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------

def both_top = (RSI > over_Bought and vol_RSI > vol_over_Bought);
def both_bot = (RSI < over_Sold and vol_RSI < vol_over_Sold);

# num#1 > num#2 , then 1st color , else 2nd color
#addcloud(50, 20, color.green, color.red);

addcloud(if both_top then 100 else na, 70, color.red);
addcloud(if both_bot then 30 else na, 0, color.green);


input arrows = yes;
plot dwn_arrow = if both_top then max(rsi, vol_RSI) else na;
dwn_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
dwn_arrow.SetDefaultColor(Color.red);
dwn_arrow.setlineweight(3);
dwn_arrow.hidebubble();

plot up_arrow = if both_bot then min(rsi, vol_RSI) else na;
up_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
up_arrow.SetDefaultColor(Color.green);
up_arrow.setlineweight(3);
up_arrow.hidebubble();

#
Our codes are a quite different.

here try this one: https://tos.mx/7UqMBuW

Here's the code with added Delta Labels:

Code:
declare lower;
# Define the input parameters
input length = 14;
input showBreakoutSignals = yes;


def overboughtLevel = 70;
def extremeoverboughtlevel = 80;
def oversoldLevel = 30;
def extremeoversoldlevel = 20;
def Zero = 0;
def hundred = 100;
def midlinelevel = 50;
def price = close;
def averageType = AverageType.WILDERS;
def showlabel = yes;

def AGG1 = AggregationPeriod.TWO_MIN;
def AGG2 = AggregationPeriod.FIVE_MIN;
def AGG3 = AggregationPeriod.TEN_MIN;
def AGG4 = AggregationPeriod.FIFTEEN_MIN;
def AGG5 = AggregationPeriod.THIRTY_MIN;
def AGG6 = AggregationPeriod.HOUR;
def AGG7 = AggregationPeriod.FOUR_HOURS;

def c1 = close(period = agg1);
def c2 = close(period = agg2);
def c3 = close(period = agg3);
def c4 = close(period = agg4);
def c5 = close(period = agg5);
def c6 = close(period = agg6);
def c7 = close(period = agg7);

######################## OS - OB - MID ################
# Plot the Overbought/Oversold levels
plot Midline = midlinelevel;
midline.SetDefaultColor(Color.gray);
midLine.SetLineWeight(1);
midLine.HideBubble();
midline.hidetitle();

# Plot the Overbought/Oversold levels
plot OverboughtLevelLine = overboughtLevel;
OverboughtLevelLine.SetDefaultColor(Color.magenta);
OverboughtLevelLine.SetLineWeight(1);
OverboughtLevelLine.HideBubble();
OverboughtLevelLine.hidetitle();

plot extremeOverboughtLevelLine = extremeoverboughtLevel;
extremeOverboughtLevelLine.SetDefaultColor(Color.magenta);
extremeOverboughtLevelLine.SetLineWeight(1);
extremeOverboughtLevelLine.HideBubble();
extremeOverboughtLevelLine.hidetitle();

plot OversoldLevelLine = oversoldLevel;
OversoldLevelLine.SetDefaultColor(Color.GREEN);
OversoldLevelLine.SetLineWeight(1);
OversoldLevelLine.HideBubble();
oversoldLevelLine.hidetitle();

plot extremeOversoldLevelLine = extremeoversoldLevel;
extremeOversoldLevelLine.SetDefaultColor(Color.green);
extremeOversoldLevelLine.SetLineWeight(1);
extremeOversoldLevelLine.HideBubble();
extremeoversoldLevelLine.hidetitle();

AddCloud(80, OverboughtLevelLine, Color.Gray, Color.CURRENT);
AddCloud(100, extremeOverboughtLevelLine, Color.pink, Color.CURRENT);
AddCloud(OversoldLevelLine, 20 , Color.Gray, Color.CURRENT);
AddCloud(extremeOversoldLevelLine, 0 , Color.Dark_green, Color.CURRENT);

##################### FIRST ########################################
def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

def RSI = 50 * (ChgRatio + 1);

# Calculate the Volume-Weighted RSI
def vwrsi = Sum(rsi * volume, length) / Sum(volume, length);

# Plot the VWRSI
plot VWRSIPlot = TEMA(vwrsi);
VWRSIPlot.SetDefaultColor(Color.light_gray);
VWRSIPlot.SetLineWeight(2);
VwRSIPlot.hidetitle();

def NetChgAvg1 = MovingAverage(averageType, price - price[1], length);
def TotChgAvg1 = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio1 = if TotChgAvg1 != 0 then NetChgAvg1 / TotChgAvg1 else 0;
def RSI1 = 50 * (ChgRatio1 + 1);

# Calculate the Price-Weighted RSI
plot RSI2 = TEMA(RSI1);

RSI2.AssignValueColor(if RSI2 > VWRSIPlot then color.cyan else if RSI2 < VwRSIPlot then color.red else color.current);
AddLabel(showlabel, " VRSI:  " + Round(VWRSIPlot), if VWRSIPlot <= OversoldLevelLine  then Color.uptick else if VWRSIPlot >= OverboughtLevelLine then color.downtick else Color.yellow);
AddLabel(showlabel, " RSI:  " + Round(RSI2),if RSI2 <= OversoldLevelLine  then Color.uptick else if RSI2 >= OverboughtLevelLine then color.downtick else Color.yellow);

#Def bull =  RSI2 Crosses Above VWRSIPLOT;
#Def bear =  RSI2 Crosses Below VWRSIPLOT;

#def bullish01 = bull <= OversoldLevelLine;
#def bearish01 = Bear >= OversoldLevelLine;


#DefineGlobalColor("Bullish", Color.GREEN);
#DefineGlobalColor("Sideways", Color.YELLOW);
#DefineGlobalColor("Bearish", Color.RED);

#AddLabel(yes, "10x:4H",if bullish01 then GlobalColor("Bullish") else if bearish01 then GlobalColor("Bearish") else GlobalColor("Sideways"));

###################################################################################################################

plot UpSignal = RSI2 Crosses Above VWRSIPLOT;
plot DownSignal = RSI2 Crosses Below VWRSIPLOT;



UpSignal.SetHiding(!showBreakoutSignals);
DownSignal.SetHiding(!showBreakoutSignals);



UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.boolean_POINTS);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.boolean_points);


######################################################
def startTime = 0400;
def endTime = 0929;

def startCounter = SecondsFromTime(startTime);
def endCounter = SecondsTillTime(endTime);
def targetPeriod = if startCounter >= 0 and endCounter >= 0 then 1 else 0;




def O = open;
def H = high;
def C = close;
def L = low;
def V = volume;
def Buying = V * (C - L) / (H - L);
def Selling = V * (H - C) / (H - L);
def Delt = buying - selling;

def Delta = Delt;
#Delta.AssignValueColor(if Delta > 0 then Color.GREEN else Color.RED);
#Delta.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
#Delta.hide();




def CumulativeVolumeDelta = sum(Delta,length);
#CumulativeVolumeDelta.AssignValueColor(if CumulativeVolumeDelta > 0 then Color.GREEN else Color.Dark_ORANGE);
#CumulativeVolumeDelta.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);

rec volumeTotal = if targetPeriod and !targetPeriod[1] then delta else if targetPeriod then volumeTotal[1] + delta else volumeTotal[1];

AddLabel(yes, "Curr Delta: " + round (delta), if Delta > 0 then Color.dark_GREEN else Color.light_RED);
AddLabel(yes, "Curr CDVol: " + round (cumulativeVolumeDelta), if CumulativeVolumeDelta > 0 then Color.lime else Color.Dark_ORANGE);
AddLabel(yes, "Last Delta: " + round (delta[1]), color.white);
AddLabel(yes, "Last CDVol: " + round (cumulativevolumedelta[1]), color.white);
#AddLabel(yes, "Curr DeltaVol: " + volumetotal, if volumetotal > 0 then Color.lime else Color.Dark_ORANGE);

Dont worry about the aggregation periods in the code, they are a little useless right now. I was trying to create a MultiTimeframe Label system when both lines cross each other.

I forgot to mention when you load up the script the arrow signals mess up the indicator so another thing is to just not have them show in the script options
 
Thank you Trader Rader. I will check these out. At the moment, I trade SPX mainly

1 - 2m chart:
1)HMA at 15 length to help stay in trades. Sometimes, it gets me out to early.
2) I use the 50 EMA on the 1m as a S/R and a breakout possibility
3) I also have VWAP and 9 SMA
4) DTS Scalping indicator (The one I accidentally created)
5)Wave Trend for possible heads up

3min chart
1) Satys Pivot ribbon
2 Big 4

10m chart
1) Stacked EMA's for trend direction

-Is Saty's Pivots for sale or free? I have not seen that one.
-I draw major supply/demand zones based off of 30m up to wk TF.
- I try (LOL) to only take trades that reject or break and retest these zones.
Saty Bias Candles: https://usethinkscript.com/threads/saty-bias-candles-for-thinkorswim.17314/
Saty ATR Levels: https://usethinkscript.com/threads/saty-atr-levels-for-thinkorswim.14648/
Saty Pivot Ribbon: https://usethinkscript.com/threads/saty-pivot-ribbon-for-thinkorswim.17101/
 
Last edited by a moderator:
here is something to experiment with
i copied the rsi code twice and set one up for price and the second one for volume.

when both rsi's are above their overbought levels, it draws a down arrow.
when both rsi's are below their oversold levels, it draws a up arrow.

to me , my signals seems hit or miss.
maybe i'm doing it wrong, but i've never seen reliable signals from a rsi.

Code:
# rsi_vol_price

#https://usethinkscript.com/threads/whats-the-best-scalping-trend-indicator-in-your-opinion.16487/#post-133314
#iMauiC  11/9  #9
# 14 Day volume based RSI overlapped with the 14 day regular price based RSI. To catch reversals after a liquidity sweep.
# Specially when both lines are in over bought or over sold territories and they cross.



# RSI
# TD Ameritrade IP Company, Inc. (c) 2007-2023

declare lower;

def na = double.nan;
def bn = barnumber();

#---------------------------
# RSI - price

input length = 14;
input over_Bought = 60;
input over_Sold = 40;
def price = close;
input averageType = AverageType.WILDERS;
input showBreakoutSignals = no;

def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

plot RSI = 50 * (ChgRatio + 1);
plot OverSold = over_Sold;
plot OverBought = over_Bought;
plot UpSignal = if RSI crosses above OverSold then OverSold else Double.NaN;
plot DownSignal = if RSI crosses below OverBought then OverBought else Double.NaN;

UpSignal.SetHiding(!showBreakoutSignals);
DownSignal.SetHiding(!showBreakoutSignals);

RSI.DefineColor("OverBought", GetColor(5));
RSI.DefineColor("Normal", GetColor(7));
RSI.DefineColor("OverSold", GetColor(1));
RSI.AssignValueColor(if RSI > over_Bought then RSI.Color("OverBought") else if RSI < over_Sold then RSI.Color("OverSold") else RSI.Color("Normal"));
OverSold.SetDefaultColor(GetColor(8));
OverBought.SetDefaultColor(GetColor(8));
UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------
# RSI - volume

input vol_length = 14;
input vol_over_Bought = 60;
input vol_over_Sold = 48;
def vol_price = volume/1000;
input vol_averageType = AverageType.WILDERS;
input vol_showBreakoutSignals = no;

def vol_NetChgAvg = MovingAverage(vol_averageType, vol_price - vol_price[1], vol_length);
def vol_TotChgAvg = MovingAverage(vol_averageType, AbsValue(vol_price - vol_price[1]), vol_length);
def vol_ChgRatio = if vol_TotChgAvg != 0 then vol_NetChgAvg / vol_TotChgAvg else 0;

plot vol_RSI = 50 * (vol_ChgRatio + 1);
plot vol_OverSold = vol_over_Sold;
plot vol_OverBought = vol_over_Bought;
plot vol_UpSignal = if vol_RSI crosses above vol_OverSold then vol_OverSold else Double.NaN;
plot vol_DownSignal = if vol_RSI crosses below vol_OverBought then vol_OverBought else Double.NaN;

vol_UpSignal.SetHiding(!vol_showBreakoutSignals);
vol_DownSignal.SetHiding(!vol_showBreakoutSignals);

vol_RSI.DefineColor("OverBought", GetColor(5));
vol_RSI.DefineColor("Normal", GetColor(7));
vol_RSI.DefineColor("OverSold", GetColor(1));
vol_RSI.AssignValueColor(if vol_RSI > vol_over_Bought then vol_RSI.Color("OverBought") else if vol_RSI < vol_over_Sold then vol_RSI.Color("OverSold") else vol_RSI.Color("Normal"));
vol_OverSold.SetDefaultColor(GetColor(8));
vol_OverBought.SetDefaultColor(GetColor(8));
vol_UpSignal.SetDefaultColor(Color.UPTICK);
vol_UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
vol_DownSignal.SetDefaultColor(Color.DOWNTICK);
vol_DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);


#---------------------------

def both_top = (RSI > over_Bought and vol_RSI > vol_over_Bought);
def both_bot = (RSI < over_Sold and vol_RSI < vol_over_Sold);

# num#1 > num#2 , then 1st color , else 2nd color
#addcloud(50, 20, color.green, color.red);

addcloud(if both_top then 100 else na, 70, color.red);
addcloud(if both_bot then 30 else na, 0, color.green);


input arrows = yes;
plot dwn_arrow = if both_top then max(rsi, vol_RSI) else na;
dwn_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
dwn_arrow.SetDefaultColor(Color.red);
dwn_arrow.setlineweight(3);
dwn_arrow.hidebubble();

plot up_arrow = if both_bot then min(rsi, vol_RSI) else na;
up_arrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
up_arrow.SetDefaultColor(Color.green);
up_arrow.setlineweight(3);
up_arrow.hidebubble();

#
could i get a scan for this indicator, thank you , tried searching for conversion of study to scan , came up empty
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
311 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

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.

How do I get started?

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.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top