input lenSMA = 50;
input lenATR = 14;
input firstFactor = 1.610;
input secondFactor = 2.618;
input thirdFactor = 3.618;
input fourthFactor = 4.236;
input sPeriod = {default DAY};
def offset = 1;
script MTF_ATR {
input TF = AggregationPeriod.HOUR;
input Length = 14;
input averageType = AverageType.WILDERS;
plot ATR =
MovingAverage(
averageType,
TrueRange(
high(period = TF),
close(period = TF),
low(period = TF)
),
Length
)
;
}
;
def VAtr = ATR(lenATR);
def vSma = Average(close, lenSMA);
def fib1u = vSma + VAtr * firstFactor;
def fib1l = vSma - VAtr * firstFactor;
def fib2u = vSma + VAtr * secondFactor;
def fib2l = vSma - VAtr * secondFactor;
def fib3u = vSma + VAtr * thirdFactor;
def fib3l = vSma - VAtr * thirdFactor;
def fib4u = vSma + VAtr * fourthFactor;
def fib4l = vSma - VAtr * fourthFactor;
plot Centerline = vSma;
plot band1upper = fib1u;
band1upper.SetDefaultColor(GetColor(9));
plot band1lower = fib1l;
band1lower.SetDefaultColor(GetColor(9));
plot band2upper = fib2u;
band2upper.SetDefaultColor(GetColor(6));
plot band2lower = fib2l;
band2lower.SetDefaultColor(GetColor(6));
plot band3upper = fib3u;
band3upper.SetDefaultColor(GetColor(5));
plot band3lower = fib3l;
band3lower.SetDefaultColor(GetColor(5));
plot band4upper = fib4u;
band3upper.SetDefaultColor(GetColor(5));
plot band4lower = fib4l;
band3lower.SetDefaultColor(GetColor(5));
AddCloud(band1upper, band1lower, color.light_green, color.light_green);
AddCloud(band2upper, band3upper, color.yellow, color.yellow);
AddCloud(band2upper, band1upper, color.cyan, color.cyan);
AddCloud(band2lower, band3lower, color.yellow, color.yellow);
AddCloud(band2lower, band1lower, color.cyan, color.cyan);
AddCloud(band4lower, band3lower, color.red, color.red);
AddCloud(band4upper, band3upper, color.red, color.red);
def varhigh = high(period = sPeriod)[offset];
def varlow = low(period = sPeriod)[offset];
def h = fold ih = 0 to 1 while !IsNaN(close[10]) do varhigh;
def l = fold il = 0 to 1 while !IsNaN(close[10]) do varlow;
plot DayHigh = if h > 1 then h else Double.NaN;
DayHigh.SetPaintingStrategy(PaintingStrategy.LINE);
DayHigh.SetDefaultColor(Color.LIGHT_GREEN);
plot DayLow = if l > 1 then l else Double.NaN;
DayLow.SetPaintingStrategy(PaintingStrategy.LINE);
DayLow.SetDefaultColor(Color.LIGHT_RED);
AddCloud(if close > DayHigh or close[-1] > DayHigh then DayHigh else Double.NEGATIVE_INFINITY,if close > DayHigh or close[-1] > DayHigh then DayLow else Double.NEGATIVE_INFINITY,color.LIGHT_GREEN,color.LIGHT_GREEN,no);
AddCloud(if close < DayLow or close[-1] < DayLow then DayHigh else Double.NEGATIVE_INFINITY,if close < DayLow or close[-1] < DayLow then DayLow else Double.NEGATIVE_INFINITY,color.LIGHT_RED,color.LIGHT_RED,no);
AddCloud(if (close <= DayHigh and close >= DayLow) or (close[-1] <= DayHigh and close[-1] >= DayLow) then DayHigh else Double.NEGATIVE_INFINITY,if (close <= DayHigh and close >= DayLow) or (close[-1] <= DayHigh and close[-1] >= DayLow) then DayLow else Double.NEGATIVE_INFINITY,color.LIGHT_GRAY,color.LIGHT_GRAY,no);