Explanation from Vervoort:
"HACO is not meant to be an automatic trading system, so when there is a buy or sell signal from HACO, make sure it is confirmed by other TA techniques. HACO will certainly aid in signaling buy/sell opportunities and help you hold on to a trade, making it more profitable. The behavior of HACO is closely related to the level and speed of price change. It can be used on charts of any time frame ranging from intraday to monthly."
HACO has 2 configurable length parameters - "UP length" and "Down length". Vervoort suggests having them the same value.
I have also added an option to color the bars (overlay mode).
Trading with the Heiken-Ashi Oscillator - Sylvian Vervoort
List of my other indicators:
- GDoc: https://docs.google.com/document/d/15AGCufJZ8CIUvwFJ9W-IKns88gkWOKBCvByMEvm5MLo/edit?usp=sharing
// // @author LazyBear // List of all my indicators: // https://docs.google.com/document/d/15AGCufJZ8CIUvwFJ9W-IKns88gkWOKBCvByMEvm5MLo/edit?usp=sharing // study("Vervoort Heiken Ashi Candlestick Oscillator [LazyBear]", shorttitle="HACO_LB") avgup = input(title="Up TEMA Length", defval=34, minval=1, maxval=100 ) avgdn = input(title="Down TEMA Length", defval=34, minval=1, maxval=100 ) overlayMode=input(defval=false, title="Overlay mode (color bars)?") calc_tema(src, length) => ema1 = ema(src, length) ema2 = ema(ema1, length) ema3 = ema(ema2, length) 3 * (ema1 - ema2) + ema3 calc_zltema( src, length ) => tma1 = calc_tema( src, length ) tma2 = calc_tema( tma1, length ) diff = tma1 - tma2 tma1 + diff haO = (ohlc4 + nz(haO))/2 haC = (ohlc4+haO+max(high,haO)+min(low,haO))/4 upTMA1= calc_zltema(haC,avgup) upTMA2= calc_zltema(upTMA1,avgup) upDiff= upTMA1 - upTMA2 upZlHa= upTMA1 + upDiff upTMA12= calc_zltema(hl2,avgup) upTMA22= calc_zltema(upTMA12,avgup) upDiff2= upTMA12 - upTMA22 upZlCl= upTMA12 + upDiff2 upZlDiff= upZlCl - upZlHa upKeep1= (haC >= haO) and (haC >= haO) upKeep2= upZlDiff>=0 upKeeping= (upKeep1 or upKeep2) upKeepAll= upKeeping or (nz(upKeeping) and (close>=open) or close>=close) upKeep3= (abs(close-open)<(high-low)*0.35 and high>=(low)) upTrend= upKeepAll or (nz(upKeepAll) and upKeep3) dnTMA1= calc_zltema(haC,avgdn) dnTMA2= calc_zltema(dnTMA1,avgdn) dnDiff= dnTMA1 - dnTMA2 dnZlHa= dnTMA1 + dnDiff dnTMA12= calc_zltema(hl2,avgdn) dnTMA22= calc_zltema(dnTMA12,avgdn) dnDiff2= dnTMA12 - dnTMA22 dnZlCl= dnTMA12 + dnDiff2 dnZlDiff= dnZlCl - dnZlHa dnKeep1= haC<haO and (haC<haO) dnKeep2= dnZlDiff<0 dnKeep3= abs(close-open)<(high-low)*0.35 and low<=high dnKeeping= dnKeep1 or dnKeep2 dnKeepAll= dnKeeping or (nz(dnKeeping) and (close<open) or (close<close)) dnTrend= iff(dnKeepAll or (nz(dnKeepAll) and dnKeep3)==1,1,0) upw= dnTrend==0 and nz(dnTrend) and upTrend dnw= upTrend==0 and nz(upTrend) and dnTrend haco= iff(upw,1,iff(dnw,-1,nz(haco))) haco_c=haco>0?green:red plot(not overlayMode ? haco : na, style=columns, color=haco_c) barcolor(overlayMode ? haco_c : na)
Only one tiny not important issue: I'm usually extremely happy with every of your coding decisions, but in this case I don't like the automatic hiding of the oscillator as soon as the color the bars (the overlay mode) is activated. I would prefer to see both the oscillator and the colored bars at the same time and only have an extra option (if possible) to hide the oscillator when the overlay mode is activated.
idea behind overlay is to save one indicator pane. If you want to show the oscillator and colored bars, you can add another instance of this indicator and set one to overlaid, the other to osc-mode (just like my published chart above).
If you still want to do both simultaneously using ONE indicator instance, change this line in the source
>> plot(not overlayMode ? haco : na, style=columns, color=haco_c)
>> plot(haco, style=columns, color=haco_c)