input length = 13;
plot FI = ExpAverage(data = (close - close[1]) * volume, length);
FI.SetDefaultColor(GetColor(8));
def h = FI;
def l = FI;
def c = FI;
input ATR_length = 26;
input EMA_length = 26;
input displace = 0;
input multiplier_factor = 1.0;
input mf2 = 2.0;
input mf3 = 3.0;
def val = ExpAverage(c, Ema_length);
def average_true_range = WildersAverage(TrueRange(h, c, l), length = atr_length);
plot Upper_Band = val[-displace] + multiplier_factor * average_true_range[-displace];
Upper_Band.SetDefaultColor(GetColor(0));
plot Midline = val[-displace];
midline.DefineColor("Up", Color.DARK_GREEN);
midline.DefineColor("Down", Color.RED);
midline.DefineColor("Even", Color.WHITE);
midline.AssignValueColor(if midline > midline[1] then midline.Color("Up") else (if midline == midline[1] then midline.Color("Even") else midline.Color("Down")));
midline.SetLineWeight(2);
plot Lower_Band = val[-displace] - multiplier_factor * average_true_range[-displace];
Lower_Band.SetDefaultColor(GetColor(0));
plot Upper_Band2 = val[-displace] + mf2 * average_true_range[-displace];
Upper_Band2.SetDefaultColor(GetColor(0));
plot Lower_Band2 = val[-displace] - mf2 * average_true_range[-displace];
Upper_Band2.SetDefaultColor(GetColor(0));
plot Upper_Band3 = val[-displace] + mf3 * average_true_range[-displace];
Upper_Band2.SetDefaultColor(GetColor(0));
plot Lower_Band3 = val[-displace] - mf3 * average_true_range[-displace];
Upper_Band2.SetDefaultColor(GetColor(0));
plot UpSignal = if Upper_Band3 < FI then FI else Double.NaN;
plot DownSignal = if Lower_Band3 > FI then FI else Double.NaN;
UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.ARRO W_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.AR ROW_DOWN);
Comment