Don't generally post on this thread but for those interested in this strategy, this is a good example of a broadening formation on the monthly timeframe:
2
bo7a method... method for GBP/JPY 205 replies
5 Tricks of Trend Trading, by Rob Booker 25 replies
Trading the Non Farm Payroll Report Like a Savage Pip Fiend, by Rob Booker 24 replies
Mr Spock. on Trading, by Rob Booker 2 replies
Core Setup Differences
How to Trade the 2-2 Continuation
Would you like to see how to align a 2-2 continuation with Timeframe Continuity for higher probability entries?
AI responses may include mistakes. For financial advice, consult a professional. Learn more
I also clicked on a link that is mentioned and I found a article by Ali Muhammad at Forexbee discussing all the setups. https://forexbee.co/the-strat-patterns/ please check it out, it is good. He also mentions the 2-2 continuation as a valid setup. On his setup sheet (see screenshot) he does have the 2-2 bearish continuation as well as the 2-2 bullish continuation, and if you click on it he discusses it some more.
What do you guys think about this?
Disliked{quote} Hi there, i was just wondering, do you have a "go to" set up for the strat? There are so many different ways people use it. ThanksIgnored
Disliked{quote} I am revisiting this strategy once again; my advice is to observe and learn the meaning of the numbers. I think the easiest strategy to begin with and have as the "go-to" set up would have to be the 2-2 continuations. Poetically and ironically, that is absolutely funny and appropriate as in go to (2-2), moving on. As a trend trader, I like it, but I see many posts about reversals set ups which distract me from the main mission. Let's look at Gold on 1-hour for yesterday; many 2's up are showing from Tokyo open, buy above and hold will be...Ignored
Disliked{quote} Thank you for your detailed response. I suppose one of the reasons The Strat focuses on reversal setups is because they're generally considered safer than trading continuations. Reversals often occur at the edges of a range, whereas continuation trades can carry a higher risk of entering near exhaustion. From what I've learned, the original beginner-friendly Strat approach is to look for Full Time Frame Continuity (FTFC) on the monthly, weekly, daily, and hourly charts, then focus on 2-1-2 and 3-1-2 setups. Sara always seemed to emphasise...Ignored
Disliked{quote}The 2-2 Pattern: Trend Continuation: Formation: Two consecutive directional bars in the same direction (2 up followed by 2 up, or 2 down followed by 2 down). Trading the 2-2: This pattern indicates strong momentum and trend continuation. Traders enter on the break of the second directional bar's high (for bullish 2-2) or low (for bearish 2-2). The pattern suggests that the trend is likely to continue, making it a high-probability continuation setup.Ignored
DislikedThanks for the reply! I think I probably didn't explain myself very well. What I meant was using FTFC on the monthly, weekly and daily to establish the overall direction, then looking for reversal setups on the hourly chart that get you back into alignment with that higher timeframe trend. So, in my mind, you're still trading with FTFC rather than against it. That said, one thing I've struggled with is that people seem to trade The Strat quite differently. Some focus almost exclusively on reversals, while others seem happy to trade continuations,...Ignored
//@version=6
indicator("Strat Assistant - Erebus Edition", overlay=true, precision=0, max_bars_back=5000)
//---------------------------------------------------------
// USER SETTINGS
//---------------------------------------------------------
labelSizeInput = input.string("small", "Label Size", options=["tiny","small","normal","large","huge"])
showLabels = input.bool(true, "Show Strat Labels")
var labelSize = size.small
if labelSizeInput == "tiny"
labelSize := size.tiny
else if labelSizeInput == "small"
labelSize := size.small
else if labelSizeInput == "normal"
labelSize := size.normal
else if labelSizeInput == "large"
labelSize := size.large
else
labelSize := size.huge
//---------------------------------------------------------
// COLORS
//---------------------------------------------------------
insideColor = color.rgb(156, 39, 176)
insideColorWeak = color.new(insideColor, 50)
strong2U = color.rgb(76, 175, 80)
weak2U = color.new(strong2U, 50)
strong2D = color.rgb(244, 67, 54)
weak2D = color.new(strong2D, 50)
bear3Strong = color.rgb(255, 152, 0)
bear3Weak = color.new(bear3Strong, 50)
bull3Strong = color.rgb(41, 98, 255)
bull3Weak = color.new(bull3Strong, 50)
//---------------------------------------------------------
// :star: PATCHED STRAT DETECTION (correct equal‑high/low logic)
//---------------------------------------------------------
isInside() =>
high <= high[1] and low >= low[1]
isOutside() =>
high >= high[1] and low <= low[1]
is3() =>
isOutside() and not isInside()
is2U() =>
high > high[1] and low >= low[1]
is2D() =>
low < low[1] and high <= high[1]
//---------------------------------------------------------
// WEAK 2 LOGIC
//---------------------------------------------------------
isWeak2U() =>
is2U() and (close < open or close < (low + (high - low) * 0.5))
isWeak2D() =>
is2D() and (close > open or close > (low + (high - low) * 0.5))
//---------------------------------------------------------
// :star: PATCHED WEAK‑3 LOGIC (nested inside is3())
//---------------------------------------------------------
isWeakBull3() =>
is3() and (
close > open and (
close < (low + (high - low) * 0.7) or
math.abs(close - open) < (high - low) * 0.25
)
)
isWeakBear3() =>
is3() and (
close < open and (
close > (low + (high - low) * 0.3) or
math.abs(close - open) < (high - low) * 0.25
)
)
//---------------------------------------------------------
// BAR COLORING
//---------------------------------------------------------
getBarColor() =>
var color c = na
if isInside()
c := insideColor
else if is3()
if close > open
c := isWeakBull3() ? bull3Weak : bull3Strong
else
c := isWeakBear3() ? bear3Weak : bear3Strong
else if isWeak2U()
c := weak2U
else if isWeak2D()
c := weak2D
else if is2U()
c := strong2U
else if is2D()
c := strong2D
c
barcolor(getBarColor())
//---------------------------------------------------------
// SPACING MEMORY
//---------------------------------------------------------
var float lastAboveY = na
var float lastBelowY = na
var int lastAboveBar = na
var int lastBelowBar = na
//---------------------------------------------------------
// OFFSET HELPERS
//---------------------------------------------------------
aboveY() => high + (high - low) * 0.30
belowY() => low - (high - low) * 0.30
//---------------------------------------------------------
// STRAT LABELS
//---------------------------------------------------------
if showLabels
// Inside bar (#1)
if isInside()
float yA = aboveY()
if lastAboveBar == bar_index - 1
yA += (high - low) * 0.15
lastAboveY := yA
lastAboveBar := bar_index
label.new(bar_index, yA, "1",
style = label.style_label_center,
textcolor = color.white,
color = insideColor,
size = labelSize)
// 3 bars
if is3()
if close > open
float yA = aboveY()
if lastAboveBar == bar_index - 1
yA += (high - low) * 0.15
lastAboveY := yA
lastAboveBar := bar_index
label.new(bar_index, yA, "3",
style = label.style_label_center,
textcolor = color.white,
color = isWeakBull3() ? bull3Weak : bull3Strong,
size = labelSize)
else
float yB = belowY()
if lastBelowBar == bar_index - 1
yB -= (high - low) * 0.15
lastBelowY := yB
lastBelowBar := bar_index
label.new(bar_index, yB, "3",
style = label.style_label_center,
textcolor = color.white,
color = isWeakBear3() ? bear3Weak : bear3Strong,
size = labelSize)
// Strong 2U
if is2U() and not isWeak2U()
float yA = aboveY()
if lastAboveBar == bar_index - 1
yA += (high - low) * 0.15
lastAboveY := yA
lastAboveBar := bar_index
label.new(bar_index, yA, "2",
style = label.style_label_center,
textcolor = color.white,
color = strong2U,
size = labelSize)
// Strong 2D
if is2D() and not isWeak2D()
float yB = belowY()
if lastBelowBar == bar_index - 1
yB -= (high - low) * 0.15
lastBelowY := yB
lastBelowBar := bar_index
label.new(bar_index, yB, "2",
style = label.style_label_center,
textcolor = color.white,
color = strong2D,
size = labelSize)
// Weak 2U
if isWeak2U()
float yA = aboveY()
if lastAboveBar == bar_index - 1
yA += (high - low) * 0.15
lastAboveY := yA
lastAboveBar := bar_index
label.new(bar_index, yA, "2",
style = label.style_label_center,
textcolor = color.white,
color = weak2U,
size = labelSize)
// Weak 2D
if isWeak2D()
float yB = belowY()
if lastBelowBar == bar_index - 1
yB -= (high - low) * 0.15
lastBelowY := yB
lastBelowBar := bar_index
label.new(bar_index, yB, "2",
style = label.style_label_center,
textcolor = color.white,
color = weak2D,
size = labelSize)