declare lower;
input type_one = {sma, ema, default wma, hma};
input type_two = {sma, ema, default wma, hma};
input source = close;
input len = 8;
input slow_len = 16;
input crossSignalSensitivity = 2.5;
script osc {
input source = close;
input len = 10;
def A = highest(source, len);
def B = lowest(source, len);
plot Oscar_Rough = ((source - B) / (A - B)) * 100;
def Oscar1 = (Oscar_Rough[1] / 3) * 2;
def OscarThird = Oscar_Rough / 3;
plot Oscar = Oscar1 + OscarThird;
};
def t_fast = osc(source, len).Oscar_Rough;
plot oscar;
switch (type_one) {
case sma:
oscar = simpleMovingAvg(t_fast, len);
case ema:
oscar = expAverage(t_fast, len);
case wma:
oscar = WildersAverage(t_fast, len);
case hma:
oscar = hullMovingAvg(t_fast, len);
}
oscar.setDefaultColor(color.dark_green);
def t_signal = osc(source, len).Oscar;
plot signal;
switch (type_two) {
case sma:
signal = simpleMovingAvg(t_signal, len);
case ema:
signal = expAverage(t_signal, len);
case wma:
signal = WildersAverage(t_signal, len);
case hma:
signal = hullMovingAvg(t_signal, len);
}
signal.SetDefaultColor(color.dark_red);
def crossSensitivity = max(oscar, signal) - min(oscar, signal);
plot buy = if oscar crosses above signal AND crossSensitivity > crossSignalSensitivity then signal else double.nan;
buy.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
buy.setDefaultColor(color.dark_green);
plot sell = if oscar crosses below signal AND crossSensitivity > crossSignalSensitivity then signal else double.nan;
sell.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
sell.setDefaultColor(color.dark_red);
plot lower = 20;
lower.setDefaultColor(color.gray);
plot upper = 80;
upper.SetDefaultColor(color.gray);