Indicator for Think or Swim based on Rob Smith's The STRAT

In order to keep the post clean, updates are now found at the very bottom of the thread
NEWEST: 04/25/22

A SUITE OF PRODUCTS BY PELONSAX AKA RAMON DV FOR USE WITH: ROB SMITH’S THE STRAT

I am writing these to help myself learn The STRAT because I am a visual learner. And I am sharing them because many generous people have shared their time and expertise with me along my journey and we can do more when we work together.

But before we get to all of that, here is a link to a really great video that Rob just recorded for Benzinga where he gives a GREAT introduction to The STRAT. It is NOT recommended that you use any of my indicators for trading with live money until you've had the chance to gain a real understanding of how The STRAT works and given yourself ample opportunity to practice on paper.

Here's the video: https://benzinga.wistia.com/medias/zoi6e794v3?fbclid=IwAR06RBtG0bimZcgyDuryjd12K7BdbDPCdkrE-O0k3hcT7JvMsk889v8qv3c

Keep in mind that I am not the creator of The STRAT. I am a disciple who has been creating these TOS studies along the way in my journey to learn this system and be able to visualize how it works. For more information on the STRAT, and to really learn how to use it to trade effectively with or without any of my studies, please visit Rob on Sepia!!

!!!VERY IMPORTANT!!!! THERE ARE NO BUY AND SELL SIGNALS.!!!
The decision to buy or sell MUST BE predicated upon a deeper understanding of this system and any other tools at your disposal.

Lastly, I would like to point out that this is an active thread that is constantly evolving as I continue to improve and add to these studies. If you have questions or comments about them I just ask, as I noted above, that you first make sure you are referring to the most recent version of a particular study and that you be very specific using screenshots in any such comments.

For those of you from Twitter who are just here for the bare essentials, here are two very basic studies:

STRAT BAR NUMBERS 2.0

https://tos.mx/Kac4tLf
View attachment 7560

Code:
#------------------------------------
# S T R A T    N U M B E R S
#
# A study by Ramon DV. aka Pelonsax
#
# Version 1.0  8/01/20
#
# Version 2.0 8/4/20 Corrected errors in logic for scenarios
#
#------------------------------------
#------------------------------------
# DEFINE SCENARIOS
#------------------------------------
def H = high;
def L = low;
def C = close;
def O = open;

def insidebar =  (H < H[1] and L > L[1]) or (H == H[1] and L > L[1]) or (H < H[1] and L == L[1]) or (H == H[1] and L == L[1]);
def outsidebar =  H  > H[1] and L <  L[1];
def twoup  = H > H[1] and L >= L[1];
def twodown  = H <= H[1] and L < L[1];

#------------------------------------
# STRAT NUMBERS
#------------------------------------
input Show_Strat_Numbers = yes;
input Show_Twos = yes;
plot barType = if Show_Strat_Numbers and insidebar then 1 else if Show_Strat_Numbers and outsidebar then 3 else Double.NaN;
barType.SetPaintingStrategy(PaintingStrategy.VALUES_BELOW);
barType.AssignValueColor(color.WHITE);

plot barTypeDN = if Show_Strat_Numbers and !insidebar and !outsidebar and Show_Twos and twodown then 2 else Double.NaN;
barTypeDN.SetPaintingStrategy(PaintingStrategy.VALUES_BELOW);
barTypeDN.AssignValueColor(color.DOWNTICK);

plot barTypeUP = if Show_Strat_Numbers and !insidebar and !outsidebar and Show_Twos and twoup then 2 else Double.NaN;
barTypeUP.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);
barTypeUP.AssignValueColor(color.UPTICK);

STRAT BAR CANDLES PAINT ON ONES AND THREES WITH NUMBERS BELOW

https://tos.mx/jdHvqj4

Add the following line to the code above, down at the very bottom:

assignPriceColor(if insidebar then color.yellow else if outsidebar then color.magenta else color.current);

MAIN STUDIES:

TIME_FRAME_CONTINUITY

https://tos.mx/JZROQzW

Please watch this 10 minute tutorial for how to configure and use this study:
https://youtu.be/wYB-OVTDy6U

STRAT_REMIX_2.0

https://tos.mx/dpLsYg3

STRAT_REMIX_LITE_2.0

https://tos.mx/4osFry3
Same as the REMIX but with candle paint only on Inside Bars, Outside Bars, and Reversals. Allows user to turn toggle each.

STRAT_REMIX_SUPER_LITE

https://tos.mx/l7NLHn2
Same as the REMIX but completely stripped down to the bare essentials for machines with performance issues. This is the study I use.

JUST THE 2-2's PLEASE!!

https://tos.mx/oHUheTI
By popular request! A version of REMIX that only looks for 2-2 reversals. BUT!! You can select a secondary (higher) time frame in the settings. So you could have your chart on the 15ers, for example, and still get alerted to the 2-2 reversals on the 60m. Coming soon: REMIX with Secondary TF.

CONTINUITY FLEX GRID

https://tos.mx/bWIOYRv
Custom Flex Grid I made for a friend. Here's a video for how to load the symbols on it:

Here's what it looks like:
View attachment 7561

RADAR FLEX GRID

https://tos.mx/ekXrkrB
Custom Flex Grid that was Alex Option's idea. Here's a video for it:

Here's what it looks like:
View attachment 7562

VIDEO TUTORIAL FOR MAIN STUDIES:


HAMMERS AND SHOOTERS

This study is ONLY meant to allow the user to find the best settings for the hammer and shooting star component of the Remix study and Actionable Signals studies. All it does is find Hammers and Shooters using the same code in those other studies and paints them green or red while all other candles are painted gray. With this study you can tweak the settings in a way that best serves your purposes and then transfer those settings to the Strat studies.

Hammers_N_Shooters
https://tos.mx/zGPo4F4

View attachment 7563


NEW FULL COLOR VERSION OF OVERLAYS

These work great on a white chart
Darkest shade of green/red Version 1: https://tos.mx/tjloQ7e (the lowest time frame)
Medium shade of green/red Version 2:https://tos.mx/TCdGJMZ
Medium shade of green/red Version 3: https://tos.mx/tRTlDa1
Lightest shade of green/red Version 4: https://tos.mx/ZRF4K8Z(the highest time frame)

Pre-Loaded intraday chart: https://tos.mx/q7Bfm3J (Now complete with TFC study!)
Pre-Loaded full chart: https://tos.mx/jSJp52F (Now complete with TFC study!)

New addition to the overlays.:
This one is a script I found in a different thread that is much better than the ones I posted because it shows wicks. It was provided by BPerrot but it appears to be based on the original Paul Townsend framework with elements of logic from Robert Payne as well as Halcyon Guy (I recognized his handiwork in the code). I find this to be particularly useful if all you want is to overlay one or two higher time frames.

https://tos.mx/VX0M8C3


https://imgur.com/R2RTGY3

View attachment 7564

I find these are the best settings to the overall appearance the chart if you're using the green/red overlays:

View attachment 7565


SIMPLE WATCHLIST COLUMNS

Here's what they look like:

View attachment 7566

Here is a code for STRAT Candle watchlist column:


Code:
#------------------------------------
#
#        M T F      S T R A T
#         W A T C H L I S T
# a Study by Ramon DV. aka Pelonsax
#
#------------------------------------
#------------------------------------
# S T R A T    R E V E R S A L S
#
# A study by Ramon DV. aka Pelonsax
#
# Version 1.0  8/01/20
#
# Version 2.0 8/4/20 Corrected errors in logic for scenarios
# Version 2.1 8/15/20 Added Reversals
#
#------------------------------------
def H = high;
def L = low;
def O = open;
def C = close;
#------------------------------------
# DEFINE SCENARIOS
#------------------------------------
def insidebar =  (H < H[1] and L > L[1]) or (H == H[1] and L > L[1]) or (H < H[1] and L == L[1]) or (H == H[1] and L == L[1]);
def outsidebar =  H  > H[1] and L <  L[1];

def insidebarup  = insidebar and O < C;
def twoup  = H > H[1] and L >= L[1];
def outsidebarup  = outsidebar and O < C;
def insidebardown  = insidebar and O > C;
def twodown  = H <= H[1] and L < L[1];
def outsidebardown  = outsidebar and O > C;
#------------------------------------
# LABEL SECTION
#------------------------------------
AddLabel(yes,

if twoup then “2U” else if twodown then “2D” else if insidebarup then “1U" else if insidebardown then “1D” else if outsidebarup then “3U” else if outsidebardown then “3D” else if insidebar and !insidebarup and !insidebardown then "1" else if outsidebar and !outsidebarup and !outsidebardown then "3" else "", color.black);

assignbackgroundColor(
if
twoup then color.green else if
twodown then color.red else if
outsidebarup then color.dark_green else if
insidebarup then color.light_green else if
outsidebardown then color.dark_red else if
insidebardown then color.orange else if
!insidebarup and
!insidebardown and
insidebar then color.white else if
!outsidebardown and
!outsidebarup and
outsidebar then color.white else color.current);

Here is a code for FTC Watchlist columns:

Code:
#S T R A T      F T C
#WATCHLIST
#Ramon DV aka Pelonsax
plot O = open;
def C = close;
assignBackgroundColor(if C > O then color.GREEN else if O > C then color.RED else if O == C then color.white else color.current);
addlabel(yes, O, color.black);
# END
·

NEW WATCHLIST COLUMN.

Here's a video tutorial for how to set it up:

https://youtu.be/UM9v9yYs4qc

Code:
#------------------------------------
#
#        M T F      S T R A T
#         W A T C H L I S T
# a Study by Ramon DV. aka Pelonsax
#
#------------------------------------
#------------------------------------
# S T R A T    R E V E R S A L S
#
# A study by Ramon DV. aka Pelonsax
#
# Version 1.0  8/01/20
#
# Version 2.0 8/4/20 Corrected errors in logic for scenarios
# Version 2.1 8/15/20 Added Reversals
#  9/15/20 added two previous bars and reversals for WL columns
#
#------------------------------------
def H = high;
def L = low;
def O = open;
def C = close;
#------------------------------------
# DEFINE SCENARIOS
#------------------------------------
def insidebar =  (H < H[1] and L > L[1]) or (H == H[1] and L > L[1]) or (H < H[1] and L == L[1]) or (H == H[1] and L == L[1]);
def outsidebar =  H  > H[1] and L <  L[1];

def insidebarup  = insidebar and O < C;
def twoup  = H > H[1] and L >= L[1];
def outsidebarup  = outsidebar and O < C;
def insidebardown  = insidebar and O > C;
def twodown  = H <= H[1] and L < L[1];
def outsidebardown  = outsidebar and O > C;


def insidebar1 =  (H[1] < H[2] and L[1] > L[2]) or (H[1] == H[2] and L[1] > L[2]) or (H[1] < H[2] and L[1] == L[2]) or (H[1] == H[2] and L[1] == L[2]);
def outsidebar1 =  H[1]  > H[2] and L[1] <  L[2];

def insidebarup1  = insidebar1 and O[1] < C[1];
def twoup1 = H[1] > H[2] and L[1] >= L[2];
def outsidebarup1  = outsidebar1 and O[1] < C[1];
def insidebardown1  = insidebar1 and O[1] > C[1];
def twodown1  = H[1] <= H[2] and L[1] < L[2];
def outsidebardown1  = outsidebar1 and O[1] > C[1];


def insidebar2 =  (H[2] < H[3] and L[2] > L[3]) or (H[2] == H[3] and L[2] > L[3]) or (H[2] < H[3] and L[2] == L[3]) or (H[2] == H[3] and L[2] == L[3]);
def outsidebar2 =  H[2]  > H[3] and L[2] <  L[3];

def insidebarup2  = insidebar2 and O[2] < C[2];
def twoup2  = H[2] > H[3] and L[2] >= L[3];
def outsidebarup2  = outsidebar2 and O[2] < C[2];
def insidebardown2  = insidebar2 and O[2] > C[2];
def twodown2  = H[2] <= H[3] and L[2] < L[3];
def outsidebardown2  = outsidebar2 and O[2] > C[2];

#------------------------------------
# DEFINE REVERSALS (Basic four)
#------------------------------------

# Bullish
def TwoOneTwoBull = twoup and insidebar1 and twodown2;
def TwoTwoBull = twoup and twodown1;
def ThreeBull = outsidebarup and (twodown1 or insidebar1 or outsidebardown1);
def ThreeOneTwoBull = twoup and insidebar1 and outsidebardown2;

# Bearish
def TwoOneTwoBear = twodown and insidebar1 and twoup2;
def TwoTwoBear = twodown and twoup2;
def ThreeBear = outsidebardown and (twoup1 or insidebar1 or outsidebarup1);
def ThreeOneTwoBear = twodown and insidebar1 and outsidebarup2;

#------------------------------------
# LABEL SECTION
#------------------------------------
AddLabel(yes,

(if twoup2 then “2U” else if twodown2 then “2D” else if insidebarup2 then “1U" else if insidebardown2 then “1D” else if outsidebarup2 then “3U” else if outsidebardown2 then “3D” else if insidebar2 and !insidebarup2 and !insidebardown2 then "1" else if outsidebar2 and !outsidebarup2 and !outsidebardown2 then "3" else “”) + “-“ +

(if twoup1 then “2U” else if twodown1 then “2D” else if insidebarup1 then “1U" else if insidebardown1 then “1D” else if outsidebarup1 then “3U” else if outsidebardown1 then “3D” else if insidebar1 and !insidebarup1 and !insidebardown1 then "1" else if outsidebar1 and !outsidebarup1 and !outsidebardown1 then "3" else “”)+ ”-“ +

(if twoup then “[2U]” else if twodown then “[2D]” else if insidebarup then “[1U]” else if insidebardown then “[1D]” else if outsidebarup then “[3U]” else if outsidebardown then “[3D]” else if insidebar and !insidebarup and !insidebardown then “[1]” else if outsidebar and !outsidebarup and !outsidebardown then “[3]” else “”), color.black);

assignbackgroundColor(if TwoOneTwoBull or TwoTwoBull or ThreeBull or ThreeOneTwoBull then color.cyan else if TwoOneTwoBear or TwoTwoBear or ThreeBear or ThreeOneTwoBear then color.magenta else if

!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
twoup then color.green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
twodown then color.red else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
outsidebarup then color.dark_green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
insidebarup then color.light_green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
outsidebardown then color.dark_red else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
insidebardown then color.orange else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
!insidebarup and
!insidebardown and
insidebar then color.white else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
!outsidebardown and
!outsidebarup and
outsidebar then color.white

else color.current);

Here's what how they appear:
View attachment 7567

USER MOD BY BOB'S A STRATTER (THANK'S BOB!)

View attachment 7568
Code:
#------------------------------------
#
#        M T F      S T R A T
#         W A T C H L I S T
# a Study by Ramon DV. aka Pelonsax
# Modified by Bob's a Stratter
#
#------------------------------------
#------------------------------------
# S T R A T    R E V E R S A L S
#
# A study by Ramon DV. aka Pelonsax
#
# Version 1.0  8/01/20
#
# Version 2.0 8/4/20 Corrected errors in logic for scenarios
# Version 2.1 8/15/20 Added Reversals
#
#------------------------------------
plot O = open;
def H = high;
def L = low;

def C = close;
#------------------------------------
# DEFINE SCENARIOS
#------------------------------------
def insidebar =  (H < H[1] and L > L[1]) or (H == H[1] and L > L[1]) or (H < H[1] and L == L[1]) or (H == H[1] and L == L[1]);
def outsidebar =  H  > H[1] and L <  L[1];

def insidebarup  = insidebar and O < C;
def twoup  = H > H[1] and L >= L[1];
def outsidebarup  = outsidebar and O < C;
def insidebardown  = insidebar and O > C;
def twodown  = H <= H[1] and L < L[1];
def outsidebardown  = outsidebar and O > C;
#------------------------------------
# LABEL SECTION
#------------------------------------

AssignBackgroundColor(
if
twoup then Color.GREEN else if
twodown then Color.RED else if
outsidebarup then Color.DARK_GREEN else if
insidebarup then Color.LIGHT_GREEN else if
outsidebardown then Color.DARK_RED else if
insidebardown then Color.ORANGE else if
!insidebarup and
!insidebardown and
insidebar then Color.WHITE else if
!outsidebardown and
!outsidebarup and
outsidebar then Color.YELLOW else Color.CURRENT);
addlabel(yes, O, color.black);

COMPLETE TIME FRAME CONTINUITY STUDY WITH BACKGROUND COLOR AND ALERTS

THIS STUDY HAS BEEN INCORPORATED INTO THE TIME FRAME CONTINUITY STUDY AT THE TOP

DO NOT LOAD THIS ON THE WHITE PRELOADED CHARTS. THEY ALREADY HAVE A VERSION THAT DOESN'T CHANGE THE BACKGROUND COLOR


This study incorporates the same elements of the previous TFC studies in one complete script. You can place this script on any chart in any time frame and it will work, but there is a catch and there is nothing anyone can do to change it: like ANY multi time frame study in tThink or Swim, this WILL NOT use the aggregations for time frames that are lower than the chart. This means that it will not draw or consider the open for a lower time frame (for example any intraday TF on a daily chart. I recommend that you use a grid with multiple time frames in order to make the best use of this study. When you place this on a chart, you must check to see how much data you are providing. For example, if you are on a 1min 1D chart, you have only two days worth of data, so you cannot use any time frame higher than a day. In order to use the week or month or year, you would need the chart to include a week, month, year's worth of time. Once you have the time frame the chart is set to and the amount of time that is on the chart, you should go into the settings and select "No" for any time frames that are not included. For example: If you use a 5 min 10 D chart, you should select "no" on Use Minute, Use Three, Use Month, Use Year. If you are only looking for intraday time frame continuity, you should select Use Minute through Use Hour. The study changes the background color of the chart when there is FTFC to the upside (green) or to the downside (red). If the background is black, there is no FTFC. It also has the highest and lowest open levels painted as cyan and magenta lines (like the previous studies) as well as arrows wherever there is FTFC. You can choose to not display only of the elements listed above with the exception of the background color. I recommend you allow the use of the lines and labels when you first place the study on the chart so that you can be sure that you are displaying time frame continuity correctly or as desired. There is also an audible alert. Here's what it looks like:

View attachment 7569

View attachment 7570



Here's the study link:
https://tos.mx/JZROQzW

Here's the code:
Code:
#-------------------------------
#
# S T R A T    O P E N S
#
# a study that indicates the opens
# on mutliple time frames
# for full time frame continuity INTRADAY
# and FULL. All in one.
# Author: Ramon DV aka Pelonsax
#
#--------------------------------
declare upper;
# -----------------------------------
# INPUTS
# -----------------------------------
input Use_Minute = yes;
input Use_Three = yes;
input Use_Five = yes;
input Use_Fifteen = yes;
input Use_Thirty = yes;
input Use_Sixty = yes;
input Use_Day = yes;
input Use_Week = yes;
input Use_Month = yes;
input Use_Year = yes;
input Show_Lines = yes;
input Show_Arrows = yes;
input Show_Label = yes;
# -----------------------------------
# 1 Minute
# -----------------------------------
def "1mAGG" = AggregationPeriod.MIN;
def Vminute = GetAggregationPeriod() <= AggregationPeriod.MIN;
def minute;
if Use_Minute and Vminute {
    minute = open(period = "1mAGG");
} else {
    minute = open;
}
# -----------------------------------
# 3 Minute
# -----------------------------------
def "3mAGG" = AggregationPeriod.THREE_MIN;
def Vthree = GetAggregationPeriod() <= AggregationPeriod.THREE_MIN;
def three;
if Use_Three and Vthree {
    three = open(period = "3mAGG");
} else {
    three = open;
}
# -----------------------------------
# 5 Minute
# -----------------------------------
def "5mAGG" = AggregationPeriod.FIVE_MIN;
def Vfive = GetAggregationPeriod() <= AggregationPeriod.FIVE_MIN;
def five;
if Use_Five and Vfive {
    five = open(period = "5mAGG");
} else {
    five = open;
}
# -----------------------------------
# 15 Minute Line
# -----------------------------------
def "15mAGG" = AggregationPeriod.FIFTEEN_MIN;
def Vfifteen = GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN;
def fifteen;
if Use_Fifteen and  Vfifteen {
    fifteen = open(period = "15mAGG");
} else {
    fifteen = open;
}
# -----------------------------------
# 30 Minute Line
# -----------------------------------
def "30mAGG" = AggregationPeriod.THIRTY_MIN;
def Vthirty = GetAggregationPeriod() <= AggregationPeriod.THIRTY_MIN;
def thirty;
if Use_Thirty and Vthirty {
    thirty = open(period = "30mAGG");
} else {
    thirty = open;
}
# -----------------------------------
# 60 Minute Line
# -----------------------------------
def "60mAGG" = AggregationPeriod.HOUR;
def Vhour = GetAggregationPeriod() <= AggregationPeriod.HOUR;
def hour;
if Use_Sixty and Vhour {
    hour = open(period = "60mAGG");
} else {
    hour = open;
}
# -----------------------------------
# Day
# -----------------------------------
def "1DAGG" = AggregationPeriod.DAY;
def Vday = GetAggregationPeriod() <= AggregationPeriod.DAY;
def day;
if Use_Day and Vday {
    day = open(period = "1DAGG");
} else {
    day = open;
}
# -----------------------------------
# Week
# -----------------------------------
def "1wAGG" = AggregationPeriod.WEEK;
def Vweek = GetAggregationPeriod() <= AggregationPeriod.WEEK;
def week;
if Use_Week and Vweek {
    week = open(period = "1wAGG");
} else {
    week = open;
}
# -----------------------------------
# Month
# -----------------------------------
def "1MOAGG" = AggregationPeriod.MONTH;
def Vmonth = GetAggregationPeriod() <= AggregationPeriod.MONTH;
def month;
if Use_Month and Vmonth {
    month = open(period = "1MOAGG");
} else {
    month = open;
}
# -----------------------------------
# Year
# -----------------------------------
def "1YAGG" = AggregationPeriod.YEAR;
def Vyear = GetAggregationPeriod() <= AggregationPeriod.YEAR;
def year;
if Use_Year and Vyear {
    year = open(period = "1YAGG");
} else {
    year = open;
}

# -----------------------------------
# FTC COMPONENT
# -----------------------------------

# TOP

plot top = if minute >=
three and minute >=
five and minute >=
fifteen and minute >=
thirty and minute >=
hour and minute >=
day and minute >=
week and minute >=
month and minute >=
year then minute else

if three >=
minute and three >=
five and three >=
fifteen and three >=
thirty and three >=
hour and three >=
day and three >=
week and three >=
month and three >=
year then three else

if five >=
minute and five >=
three and five >=
fifteen and five >=
thirty and five >=
hour and five >=
day and five >=
week and five >=
month and five >=
year then five else

if fifteen >=
minute and fifteen >=
three and fifteen >=
five and fifteen >=
thirty and fifteen >=
hour and fifteen >=
day and fifteen >=
week and fifteen >=
month and fifteen >=
year then fifteen else

if thirty >=
minute and thirty >=
three and thirty >=
five and thirty >=
fifteen and thirty >=
hour and thirty >=
day and thirty >=
week and thirty >=
month and thirty >=
year then thirty  else

if hour >=
minute and hour >=
three and hour >=
five and hour >=
fifteen and hour >=
thirty and hour >=
day and hour >=
week and hour >=
month and hour >=
year then hour else

if day >=
minute and day >=
three and day >=
five and day >=
fifteen and day >=
thirty and day >=
hour and day >=
week and day >=
month and day >=
year then day else

if week >=
minute and week >=
three and week >=
five and week >=
fifteen and week >=
thirty and week >=
hour and week >=
day and week >=
month and week >=
year then week else

if month >=
minute and month >=
three and month >=
five and month >=
fifteen and month >=
thirty and month >=
hour and month >=
day and month >=
week and month >=
year then month else

if year >=
minute and year >=
three and year >=
five and year >=
fifteen and year >=
thirty and year >=
hour and year >=
day and year >=
week and year >=
month then year else

Double.NaN;

# BOTTOM

plot bottom = if minute <=
three and minute <=
five and minute <=
fifteen and minute <=
thirty and minute <=
hour and minute <=
day and minute <=
week and minute <=
month and minute <=
year then minute else

if three <=
minute and three <=
five and three <=
fifteen and three <=
thirty and three <=
hour and three <=
day and three <=
week and three <=
month and three <=
year then three else

if five <=
minute and five <=
three and five <=
fifteen and five <=
thirty and five <=
hour and five <=
day and five <=
week and five <=
month and five <=
year then five else

if fifteen <=
minute and fifteen <=
three and fifteen <=
five and fifteen <=
thirty and fifteen <=
hour and fifteen <=
day and fifteen <=
week and fifteen <=
month and fifteen <=
year then fifteen else

if thirty <=
minute and thirty <=
three and thirty <=
five and thirty <=
fifteen and thirty <=
hour and thirty <=
day and thirty <=
week and thirty <=
month and thirty <=
year then thirty  else

if hour <=
minute and hour <=
three and hour <=
five and hour <=
fifteen and hour <=
thirty and hour <=
day and hour <=
week and hour <=
month and hour <=
year then hour else

if day <=
minute and day <=
three and day <=
five and day <=
fifteen and day <=
thirty and day <=
hour and day <=
week and day <=
month and day <=
year then day else

if week <=
minute and week <=
three and week <=
five and week <=
fifteen and week <=
thirty and week <=
hour and week <=
day and week <=
month and week <=
year then week else

if month <=
minute and month <=
three and month <=
five and month <=
fifteen and month <=
thirty and month <=
hour and month <=
day and month <=
week and month <=
year then month else

if year <=
minute and year <=
three and year <=
five and year <=
fifteen and year <=
thirty and year <=
hour and year <=
day and year <=
week and year <=
month then year else
Double.NaN;

top.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
top.SetLineWeight(3);
top.SetDefaultColor(Color.CYAN);
top.SetHiding(!Show_lines);

bottom.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
bottom.SetLineWeight(3);
bottom.SetDefaultColor(Color.MAGENTA);
bottom.SetHiding(!Show_lines);

plot FTCUp = close crosses above top;
FTCUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
FTCUp.SetDefaultColor(Color.gray);
FTCUp.SetLineWeight(1);
FTCUp.SetHiding(!Show_Arrows);

plot FTCDN = close crosses below bottom;
FTCDN.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
FTCDN.SetDefaultColor(Color.gray);
FTCDN.SetLineWeight(1);
FTCDN.SetHiding(!Show_Arrows);

addlabel(Show_Label, "CONTINUITY UP " + asdollars(top) + " DOWN " + asdollars(bottom) + " ", color.light_gray);
addlabel(Show_Label, " USING: ", color.light_gray);
addlabel(Show_Label and Use_Minute, "1min ", color.light_gray);
addlabel(Show_Label and Use_Three, "3min ", color.light_gray);
addlabel(Show_Label and Use_Five, "5min ", color.light_gray);
addlabel(Show_Label and Use_Fifteen, "15min ", color.light_gray);
addlabel(Show_Label and Use_Thirty, "30min ", color.light_gray);
addlabel(Show_Label and Use_Sixty, "60min ", color.light_gray);
addlabel(Show_Label and Use_Day, "Day ", color.light_gray);
addlabel(Show_Label and Use_Week, "Week ", color.light_gray);
addlabel(Show_Label and Use_Month, "Month ", color.light_gray);
addlabel(Show_Label and Use_Year, "Year ", color.light_gray);
# -----------------------------------
# BACKGROUND COLOR
# -----------------------------------

DefineGlobalColor("UP”, CreateColor(000, 065, 000));
DefineGlobalColor("DOWN”, CreateColor(125, 000, 000));

assignBackgroundColor(if FTCUP then GlobalColor("UP") else if FTCDN then GlobalColor("DOWN") else color.black);
input Use_Alerts = yes;
Alert(Use_Alerts and FTCUP, "FTC Upside", Alert.BAR, Sound.Bell);
Alert(Use_Alerts and FTCDN, "FTC Downside", Alert.BAR, Sound.Bell);



BROADENING FORMATIONS (1ST DRAFT)

This study will only find 1-3 combos and extend diagonal lines outward. I wasn't going to release it yet because I'm waiting to really make it work with multi bar pivots, but someone asked for exactly this in the comments and since this one is ready now, here you go. Keep in mind that this is not exactly the same as a broadening formation as Rob describes it. (It is and it isn't. This is only one example of a broadening formation). It could come in handy if you want to run it on a higher time frame like the daily or weekly and then draw over the lines so that it shows up on the lower time frames. I have to credit Halcyon Guy (Don L.) who wrote the backbone and has given me permission to publish. I moded his version of a similar study that looks for wedges. This is basically the 2 bar inverse of his study.

View attachment 7571

3_1_Broadening_Formation
https://tos.mx/U6xvWgx

Code:
## ----------------------------------------
# BROADENING FORMATION
# A STRAT STUDY BY PELONSAX AKA RAMON DV
#
# ADAPTED FROM
# quadinsidebar_01
# 2020-06-27
# halcyonguy
# ----------------------------------------

input extend_lines = 100;

def na = double.nan;
def hi = high;
def lo = low;
def bn = barnumber();


# ----- 2 bar outside pattern ---------------------------------
def insidebar0 = hi < hi[-1] and lo > lo[-1];

def insidebar = insidebar0 or insidebar0[1];
def next = insidebar0[-1];

def pattern = fold i = 0 to extend_lines
                 with p
                 do if i > bn then p + 0 else p + GetValue(insidebar,i);

def extend = if (!next and pattern > 0) then 1 else 0;
def en_slopelines = extend;

# ===================================================================

def bargaps = 1;
def slopehi2 = (hi[-bargaps] - hi[0])/bargaps;
def slopelo2 = (lo[-bargaps] - lo[0])/bargaps;
def slopehi = if insidebar0 then slopehi2 else if en_slopelines then slopehi[1] else na;
def slopelo = if insidebar0 then slopelo2 else if en_slopelines then slopelo[1] else na;
def bar0number = if insidebar0 then barnumber() else if en_slopelines then bar0number[1] else na;
def bar0high = if insidebar0 then hi else if en_slopelines then bar0high[1] else na;
def bar0low = if insidebar0 then lo else if en_slopelines then bar0low[1] else na;

plot diaghi = if en_slopelines then ( bar0high + (slopehi * (barnumber() - bar0number))) else na;
diaghi.AssignValueColor(Color.dark_Green);
diaghi.SetStyle(Curve.MEDIUM_DASH);

plot diaglo = if en_slopelines then ( bar0low + (slopelo * (barnumber() - bar0number))) else na;
diaglo.AssignValueColor(Color.dark_green);
diaglo.SetStyle(Curve.MEDIUM_DASH);

#

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

#

!!ACTIONABLE SIGNAL SCANS!!

Rather than go into another lengthy description, I just decided to make a video and post the links.


1 Bar Rev Strat Daily
https://tos.mx/sml8vKo

2 Bar Rev Strat Daily
https://tos.mx/fUIotqN

Hammer Rev
https://tos.mx/A2w2Jkt

Inside Break Bull
https://tos.mx/JKIrGGZ

Kicking Bull
https://tos.mx/JLI4AXC

FAILED 2 SCAN BY JASON GETGEN:

FAILED 2 DOWN:
https://tos.mx/LFDcKrZ

FAILED 2 UP
https://tos.mx/i9q0UgE

Link to James Fox’s STRAT Scan video:

Check out this really great bottom of the hour scan and video for how to set it up by Tim Greco who has been doing amazing work!

https://twitter.com/tgreco2626/status/1406394354344902657?s=20

UPDATE: 03/23/21 Tried to re-upload complete overlay charts with a new link because I noticed that they were set to use log scale. I noticed it messes with my drawings so I turn it off on all my charts. I think it's the best setting. Ill try to give y'all fresh links later (probably just a problem with TOS right now), but for now, to change it manually, it looks like this:

View attachment 7572


UPDATE: 01/23/23 Added a version of the overlay that I found which appears to be the work of Paul Townsend, Robert Payne and Don Larson (Halcyon Guy). I find it to be superior to mine especially if all you want is to overlay one or two higher time frames.

UPDATE: 04/25/22 Added user contribution by Jason Getgen. Look for his "Failed 2" scan in the scan section.

UPDATE: 08/25/21 By popular request! A version of REMIX that only looks for 2-2 reversals. BUT!! You can select a secondary (higher) time frame in the settings. Coming soon: REMIX with Secondary TF.

UPDATE: 05/21/21 Updated strat numbers so that the 1's and 3's appear as white numbers below, the 2U is a green number above and the 2D is a red number below. Added that component to all REMIX studies. Added REMIX SUPER LITE for machines with performance issues. And lastly, I have added two flex grids, one that is only continuity labels, and another that is a full radar screen based on Alex Option's idea. There are video tutorials for each. I also removed the studies that have been incorporated into the REMIX or TFC master studies as well as older studies that were glitchy and I don't have time or desire to support.

UPDATE: 04/01/21 Updated Kicker Actionable signal to include opposite continuity for kick age and fixed bug with measured move. Streamlined thread removing studies that are now obsolete.

UPDATE: 02/28/21 Added TFC study to Pre-Loaded Color Overlay Charts. This is because the Complete TFC study at the top changes the color of the background which defeats the purpose of the color overlay chart on a white background. This is simply a condensed, simplified version of the TFC study. It will only work if the intraday chart is set to 1 minute and the full chart is set to 1 hour.

UPDATE: 02/28/21 Added additional new version of color script. Re-worked the colors to let each TF stand out.

UPDATE: 02/26/21 Added new color version of the overlay study. There are three separate versions, each a different shade.

UPDATE: 01/02/21 Corrected bug in watchlist columns. Then you very much for catching that @fishstick1229 !!!!!!

UPDATE: 10/19/20 Placed link for the two main studies at the top. Added set up tutorial video for two main (most recent studies). Removed older studies (Basic Four). Added Hammers_and_Shooters study. Added Actionable Signal Scans and video

UPDATE: 10/15/20 Made Background Color script all inclusive and MTF capable. Added specific type of actionable signal onto the alerts written into the Remix version

UPDATE: 10/14/20 Per request, added alerts for reversals to the Reversal Remix and Actionable Signal study. Added alert to Background Color FTC Study. Added 1st draft Broadening Formation study.
the auto-bf script can you edit it to show only the most recent BF drawn or have an option to turn off older BF drawn
 
Here is a peak into the options contracts. Provides more of a confirmation before buying a position
interesting idea can you provide the script you used. I tied to attach my strat list watchlist to the Trade tab, Custom Quotes and it will not even open the script. If there some secret modification, can you disclose it too. Thanks
 
?? please explain more and show a pic if you can
Here is a peak into the options contracts. Provides more of a confirmation before buying a position
 

Attachments

  • Screen Shot 2023-06-05 at 2.38.26 PM.png
    Screen Shot 2023-06-05 at 2.38.26 PM.png
    182 KB · Views: 799
Hi, there are a few modifications I made to the coloring in order to make the representation straightforward. I applied only the colors red and green with lighter and darker representations that show a change in time or reversal patterns. Overwise the script is the same. Select layout in options chain to add timeframes.


#------------------------------------
#
# M T F S T R A T
# W A T C H L I S T
# a Study by Ramon DV. aka Pelonsax
#
#------------------------------------
#------------------------------------
# S T R A T R E V E R S A L S
#
# A study by Ramon DV. aka Pelonsax
#
# Version 1.0 8/01/20
#
# Version 2.0 8/4/20 Corrected errors in logic for scenarios
# Version 2.1 8/15/20 Added Reversals
# 9/15/20 added two previous bars and reversals for WL columns
#
#------------------------------------
def H = high;
def L = low;
def O = open;
def C = close;
#------------------------------------
# DEFINE SCENARIOS
#------------------------------------
def insidebar = (H < H[1] and L > L[1]) or (H == H[1] and L > L[1]) or (H < H[1] and L == L[1]) or (H == H[1] and L == L[1]);
def outsidebar = H > H[1] and L < L[1];

def insidebarup = insidebar and O < C;
def twoup = H > H[1] and L >= L[1];
def outsidebarup = outsidebar and O < C;
def insidebardown = insidebar and O > C;
def twodown = H <= H[1] and L < L[1];
def outsidebardown = outsidebar and O > C;


def insidebar1 = (H[1] < H[2] and L[1] > L[2]) or (H[1] == H[2] and L[1] > L[2]) or (H[1] < H[2] and L[1] == L[2]) or (H[1] == H[2] and L[1] == L[2]);
def outsidebar1 = H[1] > H[2] and L[1] < L[2];

def insidebarup1 = insidebar1 and O[1] < C[1];
def twoup1 = H[1] > H[2] and L[1] >= L[2];
def outsidebarup1 = outsidebar1 and O[1] < C[1];
def insidebardown1 = insidebar1 and O[1] > C[1];
def twodown1 = H[1] <= H[2] and L[1] < L[2];
def outsidebardown1 = outsidebar1 and O[1] > C[1];


def insidebar2 = (H[2] < H[3] and L[2] > L[3]) or (H[2] == H[3] and L[2] > L[3]) or (H[2] < H[3] and L[2] == L[3]) or (H[2] == H[3] and L[2] == L[3]);
def outsidebar2 = H[2] > H[3] and L[2] < L[3];

def insidebarup2 = insidebar2 and O[2] < C[2];
def twoup2 = H[2] > H[3] and L[2] >= L[3];
def outsidebarup2 = outsidebar2 and O[2] < C[2];
def insidebardown2 = insidebar2 and O[2] > C[2];
def twodown2 = H[2] <= H[3] and L[2] < L[3];
def outsidebardown2 = outsidebar2 and O[2] > C[2];

#------------------------------------
# DEFINE REVERSALS (Basic four)
#------------------------------------

# Bullish
def TwoOneTwoBull = twoup and insidebar1 and twodown2;
def TwoTwoBull = twoup and twodown1;
def ThreeBull = outsidebarup and (twodown1 or insidebar1 or outsidebardown1);
def ThreeOneTwoBull = twoup and insidebar1 and outsidebardown2;

# Bearish
def TwoOneTwoBear = twodown and insidebar1 and twoup2;
def TwoTwoBear = twodown and twoup2;
def ThreeBear = outsidebardown and (twoup1 or insidebar1 or outsidebarup1);
def ThreeOneTwoBear = twodown and insidebar1 and outsidebarup2;

#------------------------------------
# LABEL SECTION
#------------------------------------
AddLabel(yes,

(if twoup2 then “2U” else if twodown2 then “2D” else if insidebarup2 then “1U" else if insidebardown2 then “1D” else if outsidebarup2 then “3U” else if outsidebardown2 then “3D” else if insidebar2 and !insidebarup2 and !insidebardown2 then "1" else if outsidebar2 and !outsidebarup2 and !outsidebardown2 then "3" else “”) + “-“ +

(if twoup1 then “2U” else if twodown1 then “2D” else if insidebarup1 then “1U" else if insidebardown1 then “1D” else if outsidebarup1 then “3U” else if outsidebardown1 then “3D” else if insidebar1 and !insidebarup1 and !insidebardown1 then "1" else if outsidebar1 and !outsidebarup1 and !outsidebardown1 then "3" else “”)+ ”-“ +

(if twoup then “[2U]” else if twodown then “[2D]” else if insidebarup then “[1U]” else if insidebardown then “[1D]” else if outsidebarup then “[3U]” else if outsidebardown then “[3D]” else if insidebar and !insidebarup and !insidebardown then “[1]” else if outsidebar and !outsidebarup and !outsidebardown then “[3]” else “”), color.black);

assignbackgroundColor(if TwoOneTwoBull or TwoTwoBull or ThreeBull or ThreeOneTwoBull then color.dark_green else if TwoOneTwoBear or TwoTwoBear or ThreeBear or ThreeOneTwoBear then color.dark_red else if

!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
twoup then color.green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
twodown then color.red else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
outsidebarup then color.green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
insidebarup then color.light_green else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
outsidebardown then color.red else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
insidebardown then color.pink else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
!insidebarup and
!insidebardown and
insidebar then color.white else if

!TwoOneTwoBull and
!TwoTwoBull and
!ThreeBull and
!ThreeOneTwoBull and
!TwoOneTwoBear and
!TwoTwoBear and
!ThreeBear and
!ThreeOneTwoBear and
!outsidebardown and
!outsidebarup and
outsidebar then color.white

else color.current);
 

Attachments

  • Screen Shot 2023-06-20 at 11.32.31 AM.png
    Screen Shot 2023-06-20 at 11.32.31 AM.png
    468.3 KB · Views: 673
Not sure what your asking here but if your not seeing the time frame labels try a different time setting for your chart. Example would be if you had a Daily, Week, and Month labels listed viewing a chart with a weekly time frame setting would not show the Daily label and so on.
Are you referring to:

MAIN STUDIES:

TIME_FRAME_CONTINUITY

https://tos.mx/JZROQzW

If so, this is what I'm getting on a 1min chart. It appears to be broken.
 

Attachments

  • strat failure.PNG
    strat failure.PNG
    6.4 KB · Views: 431
  • Like
Reactions: IPA
I greatly appreciate this collection of excellent work. I have the Remix 2.0 Lite and full. I am unable to tell the difference. What is different between the two?
 
I'm not showing anything either.
Check your Chart time if you have 1m -today your chart with show nothing until RTH starts, if you want the labels to show more, then you need to increase the time limit to exp 1m-30days and you should see a more time labels.
 
Hello Pelonsax, first of all , thank you for providing your wealth of knowledge to us. I am grateful. I am just starting to study the Strat. I use TOS. I see there are different version of your indicator here. As I am starting new, what version of the indicator would you recommend I use at this point of the developments with your indicator? Thank you! once again it is very appreciated!!
 
Is there a way to convert this code to a scannable or searchable breakout signal or trigger?

Code:
plot FTFC = if contFour then 1.1 else Double.NaN;
FTFC.SetPaintingStrategy(PaintingStrategy.SQUARES);
FTFC.setLineWeight(5);
FTFC.AssignValueColor(if directionUpFive then GlobalColor("2Up") else GlobalColor("2Down"));
 
Is there a way to convert this code to a scannable or searchable breakout signal or trigger?

Code:
plot FTFC = if contFour then 1.1 else Double.NaN;
FTFC.SetPaintingStrategy(PaintingStrategy.SQUARES);
FTFC.setLineWeight(5);
FTFC.AssignValueColor(if directionUpFive then GlobalColor("2Up") else GlobalColor("2Down"));

Append this to the end of your script:
plot upTrigger = directionUpFive and !directionUpFive[1] ;
upTrigger.hide();

plot dnTrigger = directionUpFive[1] and !directionUpFive;
dnTrigger.hide();

To set up the above scan filters in the Scan Hacker with these instructions:
https://usethinkscript.com/threads/how-to-use-thinkorswim-stock-hacker-scans.284/
 
@Pelonsax Just wanted to say thank you very much for all of your hard work and dedication in not only providing this threads wealth of knowledge, but also for your selfless and unwavering determination to provide the tools needed for all of us to be successful with Rob Smith's "The Strat " trading strategy. We all thank you very much for your valuable time spent on this!! You are a LEGEND❤️
 

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

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
204 Online
Create Post

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