input charttype=chartType.CANDLE;
def o = open;
def h = high;
def l = low;
def c = close;
def HAclose = (o+h+l+c)/4;
def HAopen = CompoundValue(1, (HAopen[1] + HAclose[1]) / 2, (o[1] + c[1]) / 2);
def haopen_ = if haopen>haclose
then HAopen + 0
else double.nan;
def HAhigh = if haopen_>=haclose
then Max(Max(h, HAopen_), HAclose)
else double.nan;
def HAlow = if haopen>=haclose
then Min(Min(l, HAopen_), HAclose)
else double.nan;
def bar = secondsfromTime(0930) == 0;
def o1 = if bar and haopen<haclose then l else double.nan;
def c1 = if bar and haopen<haclose then o else double.nan;
def h1 = if bar and haopen<haclose then h else double.nan;
def l1 = if bar and haopen<haclose then l else double.nan;
AddChart(growColor = color.green, fallColor = color.red, neutralColor = color.gray, high = h1, low = l1, open = c1, close = o1, type = chartType);
def o2 = if bar and haopen >=haclose then h else double.nan;
def h2 = if bar and haopen >=haclose then h else double.nan;
def l2 = if bar and haopen >=haclose then halow else double.nan;
def c2 = if bar and haopen >=haclose then haclose else double.nan;
AddChart(growColor = color.red, fallColor = color.green, neutralColor = color.gray, high = h2, low = l2, open = o2, close = c2, type = chartType);
assignpriceColor(if bar then color.black else color.current);