Hello, hopefully someone can help me with this. I really don't have any experience with writing indicators/studies but have been reviewing lots of codes trying to get a handle on it. I am trying to create an Keltner Channel "Ribbon". to have 4-5 different ATR's on one indicator, but am stuck on how to do this. Below is what I have so far. I would greatly appreciate any feedback or help with this.
declare weak_volume_dependency;
input displace = 0;
input factor = 1.5;
input length = 1;
input price = close;
input averageType = AverageType.EXPONENTIAL;
input trueRangeAverageType = AverageType.EXPONENTIAL;
def shift = factor * MovingAverage(trueRangeAverageType, TrueRange(high, close, low), length);
def average = MovingAverage(averageType, price, length);
plot Avg = average[-displace];
Avg.SetDefaultColor(GetColor(1));
plot Upper_Band = average[-displace] + shift[-displace];
Upper_Band.SetDefaultColor(GetColor(8));
plot Lower_Band = average[-displace] - shift[-displace];
Lower_Band.SetDefaultColor(GetColor(5));
plot ATR1;
plot ATR2;
plot ATR3;
plot ATR4;
plot ATR5;
if (factor == 1.5)
then {
ATR1 = KeltnerChannels(price, Length);
ATR2 = KeltnerChannels(price, Length + .5
ATR3 = KeltnerChannels(price, Length + 1
ATR4 = KeltnerChannels(price, Length + 1.5
ATR5 = KeltnerChannels(price, Length + 2
} else {
ATR1 = KeltnerChannels(price, Length);
ATR2 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, .5));
ATR3 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 1));
ATR4 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 1.5));
ATR5 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 2));
}
ATR1.SetDefaultColor(CreateColor(255, 65, 0));
ATR2.SetDefaultColor(CreateColor(255, 90, 0));
ATR3.SetDefaultColor(CreateColor(255, 115, 0));
ATR4.SetDefaultColor(CreateColor(255, 140, 0));
ATR5.SetDefaultColor(CreateColor(255, 150, 0));
What is being flagged is;
if
ATR2 = KeltnerChannels(price, Length + .5
ATR3 = KeltnerChannels(price, Length + 1
ATR4 = KeltnerChannels(price, Length + 1.5
ATR5 = KeltnerChannels(price, Length + 2
} else {
ATR1 = KeltnerChannels(price, Length);
declare weak_volume_dependency;
input displace = 0;
input factor = 1.5;
input length = 1;
input price = close;
input averageType = AverageType.EXPONENTIAL;
input trueRangeAverageType = AverageType.EXPONENTIAL;
def shift = factor * MovingAverage(trueRangeAverageType, TrueRange(high, close, low), length);
def average = MovingAverage(averageType, price, length);
plot Avg = average[-displace];
Avg.SetDefaultColor(GetColor(1));
plot Upper_Band = average[-displace] + shift[-displace];
Upper_Band.SetDefaultColor(GetColor(8));
plot Lower_Band = average[-displace] - shift[-displace];
Lower_Band.SetDefaultColor(GetColor(5));
plot ATR1;
plot ATR2;
plot ATR3;
plot ATR4;
plot ATR5;
if (factor == 1.5)
then {
ATR1 = KeltnerChannels(price, Length);
ATR2 = KeltnerChannels(price, Length + .5
ATR3 = KeltnerChannels(price, Length + 1
ATR4 = KeltnerChannels(price, Length + 1.5
ATR5 = KeltnerChannels(price, Length + 2
} else {
ATR1 = KeltnerChannels(price, Length);
ATR2 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, .5));
ATR3 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 1));
ATR4 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 1.5));
ATR5 = KeltnerChannels(price, Length * Power(incrementOrMultiplier, 2));
}
ATR1.SetDefaultColor(CreateColor(255, 65, 0));
ATR2.SetDefaultColor(CreateColor(255, 90, 0));
ATR3.SetDefaultColor(CreateColor(255, 115, 0));
ATR4.SetDefaultColor(CreateColor(255, 140, 0));
ATR5.SetDefaultColor(CreateColor(255, 150, 0));
What is being flagged is;
if
ATR2 = KeltnerChannels(price, Length + .5
ATR3 = KeltnerChannels(price, Length + 1
ATR4 = KeltnerChannels(price, Length + 1.5
ATR5 = KeltnerChannels(price, Length + 2
} else {
ATR1 = KeltnerChannels(price, Length);