# Average Price Movements Indicator for ThinkorSwim

#### BenTen

Staff member
Staff
VIP
Uses daily average ranges of 5 and 10 (most used) as buy (support) and highs (resistance) areas.

### thinkScript Code

Code:
``````# Average Price Movements
# Assembled by BenTen at useThinkScript.com

input aggregationPeriod = AggregationPeriod.DAY;
def open = open(period = aggregationPeriod);
def high = high(period = aggregationPeriod);
def low = low(period = aggregationPeriod);
def dayrange = (high - low);

def r1 = dayrange[1];
def r2 = dayrange[2];
def r3 = dayrange[3];
def r4 = dayrange[4];
def r5 = dayrange[5];
def r6 = dayrange[6];
def r7 = dayrange[7];
def r8 = dayrange[8];
def r9 = dayrange[9];
def r10 = dayrange[10];

def adr_10 = (r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10) / 10;
def adr_5 = (r1 + r2 + r3 + r4 + r5) / 5;

def hl1 = (OPEN + (adr_10 / 2));
def ll1 = (OPEN - (adr_10 / 2));
def hl2 = (OPEN + (adr_5 / 2));
def ll2 = (OPEN - (adr_5 / 2));

plot upper2 = hl1;
plot lower1 = ll2;
plot upper1 = hl2;
plot lower2 = ll1;

upper1.SetDefaultColor(Color.dark_red);
upper2.SetDefaultColor(Color.dark_red);
lower1.SetDefaultColor(Color.dark_green);
lower2.SetDefaultColor(Color.dark_green);``````

Last edited:
Hi Ben:

I wanted to ask you if there is a scan available for this indicator? Would love something that can be configured to find stocks within a certain dollar amount from either the high (h1) or low (l1)of their average price move and alert the user for a potential upcoming trade. I used this while watching my favorite stock DIS for four successful early morning trades on 3/27, 3/30, yesterday and today.

Best,

Spriteman

@Spriteman You can use the crosses, crosses above, or crosses below as part of your scanner. There is no special configuration needed.

Is it something like this ... ? Seems quite similar ... If yes ... then i could follow and test that strategy

@Spriteman You can use the crosses, crosses above, or crosses below as part of your scanner. There is no special configuration needed.

@BenTen I was looking for a scan that could be configured to alert the user on a dollar amount or % prior to crossing h1 or l1 as a heads up to reaching either a resistence or support zone. do you think this is possible?

I've been using something similar after modding a @tomsk indicator. It has a wider range than the one posted but will sometimes provide reversal points if the price breaks out from the posted indicator.

@Topas if you change the agg period on this code to hourly or two hour it will sometimes provide signals similar to the volatility box. As you can see in the last image, sometimes the volatility indicators work, sometimes they don't.

Code:
``````# ATR Daily Range
# tomsk
# 12.17.2019

# V1.0 - 12.16.2019 - tomsk   - Initial release ATR Daily Range
# V1.1 - 12.16.2019 - tomsk   - Added performance relative to ATR range
# V1.2 - 12.17.2019 - tomsk   - Added plot lines for ATR High/Low on the chart

# Displays ATR High/Low thresholds relative to daily open

input length = 14;
input averageType = AverageType.WILDERS;

def o = open(period = AggregationPeriod.DAY);
def h = high(period = AggregationPeriod.DAY);
def l = low(period = AggregationPeriod.DAY);
def c = close(period = AggregationPeriod.DAY);
def R = (c - l) / (h - l);
def ATRD = MovingAverage(averageType, TrueRange(h, c, l), length);
def ATRH = o + ATRD;
def ATRL = o - ATRD;

AddLabel(1, "ATR Daily High/Low Level = [ " + Round(ATRH,2) + " / " + Round(ATRL,2) + " ]", Color.PINK);
AddLabel(1, "Current Close = " + close + " [ " + AsPercent(R) + " ]", Color.YELLOW);

def LBN = if isNaN(close[-1]) and !isNaN(close) then barnumber() else Double.NaN;
#plot ATR_High = if barNumber() >= highestAll(LBN)
#                then highestAll(if isNaN(close[-1]) then ATRH else Double.NaN)
#                else Double.NaN;
#ATR_High.SetLineWeight(2);
#ATR_High.SetDefaultColor(Color.Cyan);

#plot ATR_Low = if barNumber() >= highestAll(LBN)
#               then highestAll(if isNaN(close[-1]) then ATRL else Double.NaN) else Double.NaN;
#ATR_Low.SetLineWeight(2);
#ATR_Low.SetDefaultColor(Color.Yellow);

# End ATR Daily Range

##DeusMecanicus Mod
def ATRHH = o + (ATRD  * 1.1);
def ATRLL = o - (ATRD  * 1.1);

plot ATR_High = ATRH;
ATR_High.SetLineWeight(2);
ATR_High.SetDefaultColor(Color.CYAN);

plot ATR_Low = ATRL;
ATR_Low.SetLineWeight(2);
ATR_Low.SetDefaultColor(Color.MAGENTA);

plot ATR_High1 = ATRHH;
ATR_High.SetLineWeight(2);
ATR_High.SetDefaultColor(Color.CYAN);

plot ATR_Low1 = ATRLL;
ATR_Low.SetLineWeight(2);
ATR_Low.SetDefaultColor(Color.MAGENTA);

input showBreakoutSignals = yes;
plot DownSignal = high crosses above ATR_High;
plot UpSignal = low crosses below ATR_Low;

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

UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

@Spriteman You can use the crosses, crosses above, or crosses below as part of your scanner. There is no special configuration needed.
@BenTen I"m not able to set up a scanner for this indicator like explained, It tells me its not allowed.

@K_O_Trader Can you post a screenshot of the error?

@K_O_Trader Oh I see. Unfortunately, ToS doesn't allow their scanner to work with this sort of indicator because it uses higher aggregation period.

@Playstation @fjr1300 thanks for sharing this avg price mov script.

So, I have downloaded and applied post #15 by playstation on 10D 1h chart on my flex grid. It gives red and green resistance and support levels for each day. Cool. Second, it gives red & green bubbles, red for resistance with a price and green for support with price. Great!

Now, jumping to @fjr1300 post #23 - What needs to be added in the script to get:
A. Labels: green/red/yellow
AND
B. Bubbles sell confirmed, buy confirmed that's shown in the picture of #23.

"AddLabel(yes, if ohlc4 > TrailingStop then "BULLISH SWINGARM" else "BEARISH SWINGARM", if ohlc4 > TrailingStop then Color.GREEN else Color.Red);"

However, after adding to script post #15, it gave red background over "trailingstop"

I am not a coder, any help would be beneficial. Thanks again

Edit ----

After reading blagflag thread, I realized that addLabel that @Playstation had posted was for swingarm script & not for avg pr mov. I have added the above label and I am getting label bullish swingarm. Next Q is @fjr1300 can you please advise what script needs to be modified to have sell/buy confirmed bubbles as well.

I am using @Playstation post 15 script along with blackflag script post 1 in your thread - and - hull ma con turning pts. Any help would be great. Using this on 1d 10m chart.

Last edited:
@mansor Hi. This is how I use it for day trading:

This is one way to use the SwingArms for Day Trading:
MONITOR #1 1 Minute Grid https://tos.mx/lM0nCpx MONITOR #2 5 Minute Grid 2 Charts basic view and Trend Momentum View https://tos.mx/J6DFRbk

blackFLAG FTS SwingArm 1 Minute Grid

blackFLAG SwingArm - 5 Minute Grid

Trade in the direction of the 5 Minute when the One Minute setups and agrees to move in the same direction. High probability, low risk, high reward.

Recognizing that the 1 min may cycle as the trade develops. Option one, close trade as the 1 min breaks down or ride it and keep stop below the 5 min. swingarm.

Stay in the trade as long as the 5 min is bullish.

or vice versa with an awareness of higher timeframe swingarm locations to know if you are getting too close to support or resistance zones

Thank you for sharing this great indicator! Is it possible to make a scan version for the support and resistance?

@mini What are you trying to scan for? You can do that via the Scan tab.

@mini What are you trying to scan for? You can do that via the Scan tab.
I want to scan stocks which reach the support zone and resistance zone? Is that possible to create a script for it?

Quick modification to the indicator requested by @dvorakm with the ability to show only current day's zones.

Code:
``````# Average Price Movements
# Assembled by BenTen at useThinkScript.com

input ShowTodayOnly = yes;
def Today = if GetDay() == GetLastDay() then 1 else 0;

input aggregationPeriod = AggregationPeriod.DAY;
def open = open(period = aggregationPeriod);
def high = high(period = aggregationPeriod);
def low = low(period = aggregationPeriod);
def dayrange = (high - low);

def r1 = dayrange[1];
def r2 = dayrange[2];
def r3 = dayrange[3];
def r4 = dayrange[4];
def r5 = dayrange[5];
def r6 = dayrange[6];
def r7 = dayrange[7];
def r8 = dayrange[8];
def r9 = dayrange[9];
def r10 = dayrange[10];

def adr_10 = (r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10) / 10;
def adr_5 = (r1 + r2 + r3 + r4 + r5) / 5;

def hl1 = (OPEN + (adr_10 / 2));
def ll1 = (OPEN - (adr_10 / 2));
def hl2 = (OPEN + (adr_5 / 2));
def ll2 = (OPEN - (adr_5 / 2));

plot upper2 = if ShowTodayOnly and !Today then Double.NaN else hl1;
plot lower1 = if ShowTodayOnly and !Today then Double.NaN else ll2;
plot upper1 = if ShowTodayOnly and !Today then Double.NaN else hl2;
plot lower2 = if ShowTodayOnly and !Today then Double.NaN else ll1;

addCloud(if ShowTodayOnly == yes then upper2 else double.nan, upper1,color.red, color.red);
addCloud(if ShowTodayOnly == yes then lower1 else double.nan, lower2,color.green, color.green);

upper1.SetDefaultColor(Color.dark_red);
upper2.SetDefaultColor(Color.dark_red);
lower1.SetDefaultColor(Color.dark_green);
lower2.SetDefaultColor(Color.dark_green);``````

I have notice that the support and resistance levels do not show during pre market, after market starts the lines appear. Does anyone know if this is fixable? Thanks.

@GGC This indicator does not take into account pre-market hours. If you want to see the projection for next day's support and resistance area, then turn off extended hours.

Hi Ben! Do you have an Average Price Movement indicator that works on Mobile? (I think it needs to get rid of the MTF capability)
@GGC This indicator does not take into account pre-market hours. If you want to see the projection for next day's support and resistance area, then turn off extended hours.

87k+ Posts
228 Online

## The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
• Exclusive indicators
• Proven strategies & setups
• Private Discord community
• Exclusive members-only content
• 1 full year of unlimited support

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?