The paintbar is like a second-cousin to the variants of ttmsqueeze that you can find all over the net. The two main things the paintbar tries to identify are:
- Signs that we are coming out of a contraction phase. Bollinger Bands must be narrow but widening. The Choppiness Index (an estimation of the fractal dimension of the price action) should indicate choppiness. Price should be near a smooth average.
- Signs of a controlled, directional move out of the consolidation area. Price is near a smooth MA, but is crossing the Keltner bands. RSI and On-Balance Volume should point in direction of the cross of the keltner bands.
I made a video about it in my typical rambling style:
The main points are:
- Use the paintbar on fast charts (I use 3-minute charts). My view has always been that technical indicators work best for daytrading on very fast charts. That’s not to say that traders should trade off those fast candles, necessarily. But they should read indicators that are summarizing fast data. Also, despite how a lot of traders use them, most indicators do not work very robustly against gaps. So, I always enable pre-market data. That way, the indicators have had time to adjust to a morning gap by the time the markets open.
- The only proper use of the paintbar is to support trading ideas you already have. They are not designed to generate trading ideas out of thin air. All they do is verify that some basic conducive conditions are present in the stock… In fact, if you look at my videos, you’ll see that I always have a number of additional reasons I want to take a trade, and often trade a few candles after the paintbars, when the stock is more clearly doing what I want it to do.
- I am providing these videos and paintbar rules as a description of what I am doing… They are purely for your entertainment, and I am not claiming that they will make you any money.
In the video I describe this example trade. See how there’s a PnF chart practically screaming to get short the stock as it continues a downtrend?
… and then the 3-minute chart starts posting confirming paintbars?
This screenshot shows how nicely it would have worked out:
Perfect! If you watch my videos, you know that I don’t leave all those indicators visible on my chart. They are just on this picture to help explain how the paintbar works.
The Rules
Here are the rules. When you add the needed indicators use the (H+L)/2 variant whenever it is available. This helps keep the indicators from getting confused by price spikes, and also keeps the indicator value from changing quite as often in real-time.
Rule 1:
if (Choppiness Index(14)>=50) AND (Bollinger Bandwidth(20,3) <= 0.018) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar Close <= Keltner Bands(20).Lower) AND (Bar High < Keltner Bands(20).Upper) AND (RSI(14,1) <= 50) AND ((T-3(14,0.5) <= T-3(14,0.5)[2]) OR (HMA(14)[2] > HMA(14) AND HMA(14) <= T-3(14,0.5))) AND (Bar Close < HMA(14)) and (On Balance Volume(5).Main <= On Balance Volume(5).Signal) AND (On Balance Volume(5).Signal[1] >= On Balance Volume(5).Signal) AND (((T-3(14,0.5) - Bar Low) / Bar Close) < 0.005) set color to Red and stop
Rule 2:
if (Choppiness Index(14)>=40) AND (Bollinger Bandwidth(20,3) <= 0.018) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar Low <= Keltner Bands(20).Lower) AND (Bar High < Keltner Bands(20).Upper) AND (RSI(14,1) <= 50) AND ((T-3(14,0.5) <= T-3(14,0.5)[2]) OR (HMA(14)[2] > HMA(14) AND HMA(14) <= (T-3(14,0.5) + Bar Close * 0.004))) AND (Bar Close < HMA(14)) and (On Balance Volume(5).Main <= On Balance Volume(5).Signal) AND (On Balance Volume(5).Signal[1] >= On Balance Volume(5).Signal) AND (((T-3(14,0.5) - Bar Low) / Bar Close) < 0.01) set color to Maroon and stop
Rule 3:
if (Choppiness Index(14)>=40) AND (Bollinger Bandwidth(20,3) <= 0.023) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar Low <= Keltner Bands(20).Lower) AND (Bar High < Keltner Bands(20).Upper) AND (RSI(14,1) <= 50) AND ((T-3(14,0.5) <= T-3(14,0.5)[2]) OR (HMA(14)[2] > HMA(14) AND HMA(14) <= (T-3(14,0.5) + Bar Close * 0.004))) AND (Bar Close < HMA(14)) AND (((T-3(14,0.5) - Bar Low) / Bar Close) < 0.01) set color to $0080FF and stop
Rule 4:
if (Choppiness Index(14)>=50) AND (Bollinger Bandwidth(20,3) <= 0.018) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar Close >= Keltner Bands(20).Upper) AND (Bar Low > Keltner Bands(20).Lower) AND (RSI(14,1) >= 50) AND ((T-3(14,0.5) >= T-3(14,0.5)[2]) OR (HMA(14)[2] <= T-3(14,0.5)[2] AND HMA(14) >= T-3(14,0.5))) AND (Bar Close > HMA(14)) and (On Balance Volume(5).Main >= On Balance Volume(5).Signal) AND (On Balance Volume(5).Signal[1] <= On Balance Volume(5).Signal) AND (((Bar High - T-3(14,0.5)) / Bar Close) < 0.005) set color to Lime and stop
Rule 5:
if (Choppiness Index(14)>=40) AND (Bollinger Bandwidth(20,3) <= 0.018) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar High >= Keltner Bands(20).Upper) AND (Bar Low > Keltner Bands(20).Lower) AND (RSI(14,1) >= 50) AND ((T-3(14,0.5) >= T-3(14,0.5)[2]) OR (HMA(14)[2] < HMA(14) AND HMA(14) >= (T-3(14,0.5) - Bar Close * 0.004))) AND (Bar Close > HMA(14)) and (On Balance Volume(5).Main >= On Balance Volume(5).Signal) AND (On Balance Volume(5).Signal[1] <= On Balance Volume(5).Signal) AND (((Bar High - T-3(14,0.5)) / Bar Close) < 0.01) set color to Green and stop
Rule 6:
if (Choppiness Index(14)>=40) AND (Bollinger Bandwidth(20,3) <= 0.023) AND (Bollinger Bandwidth(20,3)[1] < Bollinger Bandwidth(20,3)) AND (Bar High >= Keltner Bands(20).Upper) AND (Bar Low > Keltner Bands(20).Lower) AND (RSI(14,1) >= 50) AND ((T-3(14,0.5) >= T-3(14,0.5)[2]) OR (HMA(14)[2] < HMA(14) AND HMA(14) >= (T-3(14,0.5) - Bar Close * 0.004))) AND (Bar Close > HMA(14)) AND (((Bar High - T-3(14,0.5)) / Bar Close) < 0.01) set color to $FFFF80 and stop
August 13th, 2007 at 6:19 am
Richard, thank you for sharing the rules. What software do you use for intra-day P&F charts (e.g., UTEK chart featured in today’s post). Thanks.
August 13th, 2007 at 8:23 am
It’s all done in Quotetracker (which is also what accepts the above paintbar rules, incidentally). If you are converting the paintbars to a platform with a more sophisticated programming environment, then you probably wouldn’t need all the duplicated checks I have to use. In quotetracker, each rule is completely independent of the others, except for an ordering dependencey.
August 13th, 2007 at 9:45 am
Hi Richard, I’m wondering how you make the videos. Do you do it somehow straight from your computer to you actually hold a camera and zoom in on the charts. Excuse me for my ignorance to these things….
August 13th, 2007 at 10:20 am
programs like camtasia capture the screen. there’s no video camera involved.
August 13th, 2007 at 8:59 pm
Hey, Tex. You from Tex?
August 13th, 2007 at 9:20 pm
Richard,
Thx for sharing the information, you really know how to build paintbars and use them. I was trying to build a paintbar for following situation:
1. CCI(20,6) moving up from -200 to -100
2. OBV(20) coming closer to mean line, kind of moving upward after a hitting low in last few sessions
3. RSI(14,1) moving higher crossing line 30
4. Full STO (5,3,3) moving higher crossing line 20
Check out daily chart for WCC.
Can you help me in this! Thx for your time and help.
Regards
August 14th, 2007 at 12:43 am
Space, do you have any paintbar code so far? Have you read the tutorials on paintbars here on MtM? Just use the site search for “paintbar tutorial”, you can’t miss it. This is a good place to start.
August 14th, 2007 at 2:50 am
Quotetracker paintbar rules are not very sophisticated… they are just one big boolean logical expression. So, your (1) and (2) will need some work to decide what is “good enough” to warrant the paintbar.
You have to pin down what you mean by “moving up from -200 to -100″. Because if you really need that, then you’ll have to add a check for cci[1] < -200 OR cci[2] < -200 OR cci[3] < -200 OR ... and also make sure that it didn't go (for example) from -200 to 50 to -100. So, things that are easy to eyeball are sometimes tricky for QT. But, you can usually get something close by making heavy use of the 'signal' lines that most indicators have, and comparing the distance between the main and signal lines in % terms. This kind-of gives you a rough idea of how hard it's been moving in a direction.
Stuff like your (3) are easy... just ((RSI(14,1).Main > 30) AND (RSI(14,1).Main[1] <= 30)). Your (4) is the same thing just for stochastics.
August 14th, 2007 at 9:12 pm
Richard,
Thx, for taking out time to explain few things. I was getting a real hard time to figure out a way for QT to determine 1 and 2 conditions above. But you gave me a good pointer in terms of “the distance between the main and signal lines in % terms” which might help to construct a better paintbar than individual check.
Thx once again for your time and help.
Regards