sellitmarin
New member
I did a search, it shows things in consolidation but not the ones that break out into the long or short. Should I add more bars?
@Sellitmarin, Although I'm not the creator of the original B3 Consolidation Box Indicator, here are some things that I found while using it. Depending on the type of stocks that are being traded, it might take some fine-tuning in order to determine the actual optimum values for "BarsUsedForRange" and "BarsRequiredToRemainInRange".I did a search, it shows things in consolidation but not the ones that break out into the long or short. Should I add more bars?
@amao11, from any ToS chart, click on Studies.I use this box all the time. Finally someone came up with a scanner for it. I tried to make it work but dont understand the “comment out #” commands for instances. could you please give me the instructions on how to install it in baby steps? (Think of me as a 5 year old) i would greatly appreciate it. Thank you!!!
Just simply having the bar in the middle to tell you when its probably gonna be over sold and when to "sell the high" or "buy the dip" along with these clearly defined ranges is ridiculously simply for finding entry in both forex and stocks. I'm setting up a Heiken ashi with auto stop loss and ... hell it will run it self for a positive cash flow even if its not 100%... its damn close.
Is there anyway this could be use on 30M, 1H, 4Hr timeframe?Found this really interesting indicator for ThinkorSwim called B3 Consolidation Box that I wanted to share with everyone here.
Want to know if a stock is under consolidation? Well, this indicator is perfect for that. It basically highlights when a stock is consolidating and at which level it will be breaking down or breaking out. In addition, a stop loss level will be provided in case it's a false breakout/breakdown and target levels so you can know where to take profit.
Here are a few examples:
Notes:
- Grey shadow box is your Consolidation box.
- The white dotted line is Stop loss
- Red lines are Profit Target Levels for Breakdown
- Green lines are Profit Target Levels for Breakout
- Use this indicator on the 5, 10, or 15 mins timeframe with Pre-market on.
thinkScript Code
Rich (BB code):# B3 Consolidation Box v1 # -- Automates a box and shows the breakouts via price color with targets based on the box's range. # -- In a system the gray balance line would be your stop, or you may exit on any trip back within the old box range. # -- The color of the candles does not tell you when to be long or short, it simply tells you the last signal given. # -- You must manage your trade targets via your own profit protection tactics. # Intended only for the use of the person(s) to who(m) this script was originally distributed. # User of the script assumes all risk; # The coder and the distributers are not responsible for any loss of capital incurred upon usage of this script. # amalia added commentary after chatting more with B3 about the study: # The first 2 inputs will need to be set for the chart you are looking at. What you want to find is the consolidation box settings that give you actionable targeting. If the price is shooting way past the tgt6 point, you need to lower the second input. The first input should likely be either 1, 2 or 3 only. Script is based on a strategy I learned from Ben's webcasts on TOS. He was doing some futurescast thing on consolidation boxes, and I had to see if I could make it work too. My Hypothesis is it is a great little scalper... you have to be willing to take singles and doubles and forget homers. He was trading ES declare upper; input BarsUsedForRange = 2; input BarsRequiredToRemainInRange = 7; input TargetMultiple = 0.5; input ColorPrice = yes; input HideTargets = no; input HideBalance = no; input HideBoxLines = no; input HideCloud = no; input HideLabels = no; # Identify Consolidation def HH = highest(high[1], BarsUsedForRange); def LL = lowest(low[1], BarsUsedForRange); def maxH = highest(hh, BarsRequiredToRemainInRange); def maxL = lowest(ll, BarsRequiredToRemainInRange); def HHn = if maxH == maxH[1] or maxL == maxL then maxH else HHn[1]; def LLn = if maxH == maxH[1] or maxL == maxL then maxL else LLn[1]; def Bh = if high <= HHn and HHn == HHn[1] then HHn else double.nan; def Bl = if low >= LLn and LLn == LLn[1] then LLn else double.nan; def CountH = if isnan(Bh) or isnan(Bl) then 2 else CountH[1] + 1; def CountL = if isnan(Bh) or isnan(Bl) then 2 else CountL[1] + 1; def ExpH = if barnumber() == 1 then double.nan else if CountH[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then HHn[-BarsRequiredToRemainInRange] else if High <= ExpH[1] then ExpH[1] else double.nan; def ExpL = if barnumber() == 1 then double.nan else if Countl[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then LLn[-BarsRequiredToRemainInRange] else if Low >= ExpL[1] then ExpL[1] else double.nan; # Plot the High and Low of the Box; Paint Cloud plot BoxHigh = if !isnan(expL) and !isnan(ExpH) then ExpH else double.nan; plot BoxLow = if !isnan(expL) and !isnan(ExpH) then ExpL else double.nan; boxhigh.setdefaultColor(color.dark_green); BoxHigh.setpaintingStrategy(paintingStrategy.HORIZONTAL); BoxLow.setpaintingStrategy(paintingStrategy.HORIZONTAL); BoxLow.setdefaultColor(color.dark_red); BoxHigh.SETHIDING(HideBoxLines); BoxLow.SETHIDING(HideBoxLines); addcloud(if !HideCloud then BoxHigh else double.nan, BoxLow, color.gray, color.gray); # Things to the Right of a Finished Box def eH = if barnumber() == 1 then double.nan else if !isnan(BoxHigh[1]) and isnan(BoxHigh) then BoxHigh[1] else eh[1]; def eL = if barnumber() == 1 then double.nan else if !isnan(BoxLow[1]) and isnan(BoxLow) then BoxLow[1] else el[1]; def diff = (eh - el) * TargetMultiple; plot Balance = if isnan(boxhigh) and isnan(boxlow) then (eh+el)/2 else double.nan; plot Htgt_1 = if isnan(Boxhigh) and high >= eh then eh + diff else double.nan; plot Htgt_2 = if isnan(Boxhigh) and high >= eh then eh + diff*2 else double.nan; plot Htgt_3 = if isnan(Boxhigh) and high >= eh then eh + diff*3 else double.nan; plot Htgt_4 = if isnan(Boxhigh) and high >= eh then eh + diff*4 else double.nan; plot Htgt_5 = if isnan(Boxhigh) and high >= eh then eh + diff*5 else double.nan; plot Htgt_6 = if isnan(Boxhigh) and high >= eh then eh + diff*6 else double.nan; plot Ltgt_1 = if isnan(BoxLow) and Low <= eL then eL - diff else double.nan; plot Ltgt_2 = if isnan(BoxLow) and Low <= eL then eL - diff*2 else double.nan; plot Ltgt_3 = if isnan(BoxLow) and Low <= eL then eL - diff*3 else double.nan; plot Ltgt_4 = if isnan(BoxLow) and Low <= eL then eL - diff*4 else double.nan; plot Ltgt_5 = if isnan(BoxLow) and Low <= eL then eL - diff*5 else double.nan; plot Ltgt_6 = if isnan(BoxLow) and Low <= eL then eL - diff*6 else double.nan; Balance.SETHIDING(HideBalance); Balance.setdefaultColor(CREATECOLOR(255,255,255)); Balance.setpaintingStrategy(PAIntingStrategy.SQUARES); Htgt_2.setlineWeight(2); Htgt_4.setlineWeight(2); Htgt_6.setlineWeight(2); Htgt_1.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_1.setpaintingStrategy(PAIntingStrategy.DASHES); Htgt_2.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_2.setpaintingStrategy(paintingStrategy.HORIZONTAL); Htgt_3.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_3.setpaintingStrategy(PAIntingStrategy.DASHES); Htgt_4.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_4.setpaintingStrategy(paintingStrategy.HORIZONTAL); Htgt_5.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_5.setpaintingStrategy(PAIntingStrategy.DASHES); Htgt_6.setdefaultColor(CREATECOLOR( 50, 100 , 75)); Htgt_6.setpaintingStrategy(paintingStrategy.HORIZONTAL); Ltgt_2.setlineWeight(2); Ltgt_4.setlineWeight(2); Ltgt_6.setlineWeight(2); Ltgt_1.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_1.setpaintingStrategy(PAIntingStrategy.DASHES); Ltgt_2.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_2.setpaintingStrategy(paintingStrategy.HORIZONTAL); Ltgt_3.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_3.setpaintingStrategy(PAIntingStrategy.DASHES); Ltgt_4.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_4.setpaintingStrategy(paintingStrategy.HORIZONTAL); Ltgt_5.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_5.setpaintingStrategy(PAIntingStrategy.DASHES); Ltgt_6.setdefaultColor(CREATECOLOR( 100, 50 , 75)); Ltgt_6.setpaintingStrategy(paintingStrategy.HORIZONTAL); Htgt_1.SETHIDING(HIDETARGETS); Htgt_2.SETHIDING(HIDETARGETS); Htgt_3.SETHIDING(HIDETARGETS); Htgt_4.SETHIDING(HIDETARGETS); Htgt_5.SETHIDING(HIDETARGETS); Htgt_6.SETHIDING(HIDETARGETS); Ltgt_1.SETHIDING(HIDETARGETS); Ltgt_2.SETHIDING(HIDETARGETS); Ltgt_3.SETHIDING(HIDETARGETS); Ltgt_4.SETHIDING(HIDETARGETS); Ltgt_5.SETHIDING(HIDETARGETS); Ltgt_6.SETHIDING(HIDETARGETS); # Labels addlabel(!HideLabels, "TgtLvls = " + diff + "pts each | Bal = " + balance, if high > eh and low < el then color.yellow else if high > eh then color.green else if low < el then color.red else color.gray); addlabel(!HideLabels && high > eh && low < el, "OUTSIDE BAR!!", color.yellow); addlabel(!HideLabels && high > eh && low >= el, "Long", color.green); addlabel(!HideLabels && high <= eh && low < el, "Short", color.red); #Price Color assignPriceColor(if !ColorPrice then color.current else if !isnan(BoxHigh) then color.gray else if high > eh and low < el then color.yellow else if high > eh then color.green else if low < el then color.red else color.gray);
Shareable Link
https://tos.mx/oPI7Kp
Video Tutorial
I recently use the scan to identify ShortSell on NASDAQ100. I read the charts, found that DLTR in on the list, but on the TOS it didn't show the consolidation Box. Wondering why the box was gone.
# Consolidation Box Barebones - with Grey Consolidation Box
# tomsk
# 11.23.2019
# As requested by Playstation, this is B3 Consolidation Box with all lines removed
# Only the grey consolidation box remains
# B3 Consolidation Box
# Hammond B3
# 2.2.2019
input BarsUsedForRange = 2;
input BarsRequiredToRemainInRange = 7;
input ColorPrice = yes;
input HideBoxLines = no;
input HideLabels = no;
# Identify Consolidation
def HH = highest(high[1], BarsUsedForRange);
def LL = lowest(low[1], BarsUsedForRange);
def maxH = highest(hh, BarsRequiredToRemainInRange);
def maxL = lowest(ll, BarsRequiredToRemainInRange);
def HHn = if maxH == maxH[1] or maxL == maxL then maxH else HHn[1];
def LLn = if maxH == maxH[1] or maxL == maxL then maxL else LLn[1];
def Bh = if high <= HHn and HHn == HHn[1] then HHn else double.nan;
def Bl = if low >= LLn and LLn == LLn[1] then LLn else double.nan;
def CountH = if isnan(Bh) or isnan(Bl) then 2 else CountH[1] + 1;
def CountL = if isnan(Bh) or isnan(Bl) then 2 else CountL[1] + 1;
def ExpH = if barnumber() == 1 then double.nan
else if CountH[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then HHn[-BarsRequiredToRemainInRange]
else if High <= ExpH[1] then ExpH[1]
else double.nan;
def ExpL = if barnumber() == 1 then double.nan
else if Countl[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then LLn[-BarsRequiredToRemainInRange]
else if Low >= ExpL[1] then ExpL[1] else double.nan;
# Plot the High and Low of the Box; Paint Cloud
plot BoxHigh = if !isnan(expL) and !isnan(ExpH) then ExpH else double.nan;
boxhigh.setdefaultColor(color.dark_green);
BoxHigh.setpaintingStrategy(paintingStrategy.HORIZONTAL);
BoxHigh.SETHIDING(HideBoxLines);
plot BoxLow = if !isnan(expL) and !isnan(ExpH) then ExpL else double.nan;
BoxLow.setpaintingStrategy(paintingStrategy.HORIZONTAL);
BoxLow.setdefaultColor(color.dark_red);
BoxLow.SETHIDING(HideBoxLines);
addcloud(BoxHigh, BoxLow, color.gray, color.gray);
# Things to the Right of a Finished Box
def eH = if barnumber() == 1 then double.nan else if !isnan(BoxHigh[1]) and isnan(BoxHigh) then BoxHigh[1] else eh[1];
def eL = if barnumber() == 1 then double.nan else if !isnan(BoxLow[1]) and isnan(BoxLow) then BoxLow[1] else el[1];
assignPriceColor(if !ColorPrice then color.current else if !isnan(BoxHigh) then color.gray else
if high > eh and low < el then color.yellow else
if high > eh then color.green else if low < el then color.red else color.gray);
# Consolidation Box Barebones
I have another questions:When you use the naked B3 code below, what code could be used to identify the black box, then put a line outwards showing the average price, or the high / low average? I would love to read through the code and see how this is done. I'm getting amazing results using the 1 Day charts to decide the way of the worlds profit. I've started to only dig into companies that are easy to borrow and then follow the ATS trade idea of looking to short below the average, buy above the average, then wait for the reversals or like heiken ashi, the counter candle to close out my order.
That would be another thing that would be cool.... how could you set an alert each time a candle or X candles show a reverse direction? That would set you up pretty nicely with forex and other very high yielding growth curves which utilize the "average price = 0" type mentality...
Below is the B3 naked chart Benten was kind enough to alter.
The Daily and weekly charts don't seem to show anything? Is it just me and my stocks or is there something else going on? I have it detached and stripped of all other indicators or anything else. Just the naked B3 consolidation code.
is there a way to get this to work to scan for stocks,i can get it in the indicator , but not where it will scan for stocks any help would be very much appreciated?@Playstation As requested here is B3 Consolidation Box with all lines removed. Only the grey consolidation box remains
Load this study on a 5 minute chart of /ES and you 'll see all the consolidation boxes displayed
Code:# Consolidation Box Barebones - with Grey Consolidation Box # tomsk # 11.23.2019 # As requested by Playstation, this is B3 Consolidation Box with all lines removed # Only the grey consolidation box remains # B3 Consolidation Box # Hammond B3 # 2.2.2019 input BarsUsedForRange = 2; input BarsRequiredToRemainInRange = 7; input ColorPrice = yes; input HideBoxLines = no; input HideLabels = no; # Identify Consolidation def HH = highest(high[1], BarsUsedForRange); def LL = lowest(low[1], BarsUsedForRange); def maxH = highest(hh, BarsRequiredToRemainInRange); def maxL = lowest(ll, BarsRequiredToRemainInRange); def HHn = if maxH == maxH[1] or maxL == maxL then maxH else HHn[1]; def LLn = if maxH == maxH[1] or maxL == maxL then maxL else LLn[1]; def Bh = if high <= HHn and HHn == HHn[1] then HHn else double.nan; def Bl = if low >= LLn and LLn == LLn[1] then LLn else double.nan; def CountH = if isnan(Bh) or isnan(Bl) then 2 else CountH[1] + 1; def CountL = if isnan(Bh) or isnan(Bl) then 2 else CountL[1] + 1; def ExpH = if barnumber() == 1 then double.nan else if CountH[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then HHn[-BarsRequiredToRemainInRange] else if High <= ExpH[1] then ExpH[1] else double.nan; def ExpL = if barnumber() == 1 then double.nan else if Countl[-BarsRequiredToRemainInRange] >= BarsRequiredToRemainInRange then LLn[-BarsRequiredToRemainInRange] else if Low >= ExpL[1] then ExpL[1] else double.nan; # Plot the High and Low of the Box; Paint Cloud plot BoxHigh = if !isnan(expL) and !isnan(ExpH) then ExpH else double.nan; boxhigh.setdefaultColor(color.dark_green); BoxHigh.setpaintingStrategy(paintingStrategy.HORIZONTAL); BoxHigh.SETHIDING(HideBoxLines); plot BoxLow = if !isnan(expL) and !isnan(ExpH) then ExpL else double.nan; BoxLow.setpaintingStrategy(paintingStrategy.HORIZONTAL); BoxLow.setdefaultColor(color.dark_red); BoxLow.SETHIDING(HideBoxLines); addcloud(BoxHigh, BoxLow, color.gray, color.gray); # Things to the Right of a Finished Box def eH = if barnumber() == 1 then double.nan else if !isnan(BoxHigh[1]) and isnan(BoxHigh) then BoxHigh[1] else eh[1]; def eL = if barnumber() == 1 then double.nan else if !isnan(BoxLow[1]) and isnan(BoxLow) then BoxLow[1] else el[1]; assignPriceColor(if !ColorPrice then color.current else if !isnan(BoxHigh) then color.gray else if high > eh and low < el then color.yellow else if high > eh then color.green else if low < el then color.red else color.gray); # Consolidation Box Barebones
@Jonas J, that scanner is not 100% precise, especially if it's not tuned to be matched with the script that shows the results. For what time frame are you scanning? And, what are your other scanning criteria?I have followed the steps to set up the scanner but I am getting many results (per my other scan criteria) and none of them show a break out within 1 bar. Some tickers broke out weeks or even months ago. Why are those showing up? How do I get just stocks that just turned green within 1 candle? (I'm sorry but I don't know how to upload a picture onto this post for better clarification) Thx
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
Darvas Box with Target Levels for ThinkorSwim (Scalping Strategy) | Indicators | 19 | ||
S | Volatility Box Indicator for ThinkorSwim | Indicators | 99 | |
RedK Chop & Breakout Scout V2.0 for ThinkOrSwim | Indicators | 17 | ||
G | Potential Breakout (PBO) Indicator for ThinkorSwim | Indicators | 8 | |
Repaints B4 Balanced BB Breakout For ThinkOrSwim | Indicators | 843 |
Start a new thread and receive assistance from our community.
useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.
We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.
If you are new, or just looking for guidance, here are some helpful links to get you started.