SNAP BACK WITH STOCH AND RSI STUDIES.
declare lower;
declare all_for_one;
input smoothingType = 1;
input length = 2;
def priceH = high;
def priceL = low;
def priceC = close;
def KPeriod48 = 48;
def DPeriod48 = 3;
def slowing48 = 2;
def KPeriod17 = 17;
def DPeriod17 = 3;
def slowing17 = 5;
def KPeriod8 = 8;
def DPeriod8 = 3;
def slowing8 = 5;
def KPeriod5 = 5;
def DPeriod5 = 3;
def slowing5 = 3;
def KPeriod22 = 2;
def DPeriod22 = 3;
def slowing22 = 2;
def KPeriod211 = 2;
def DPeriod211 = 1;
def slowing211 = 1;
#### Stoc48 ####
def c148 = priceC – Lowest(priceL, KPeriod48);
def c248 = Highest(priceH, KPeriod48) – Lowest(priceL, KPeriod48);
def FastK48 = c148/c248*100;
plot FullK48;
if smoothingType == 1
then {
FullK48 = Average(FastK48, slowing48);
} else {
FullK48 = ExpAverage(FastK48, slowing48);
}
FullK48.setDefaultColor(Color.CYAN);
FullK48.SetLineWeight(2);
#### Stoc17 ####
def c117 = priceC – Lowest(priceL, KPeriod17);
def c217 = Highest(priceH, KPeriod17) – Lowest(priceL, KPeriod17);
def FastK17 = c117/c217*100;
plot FullK17;
if smoothingType == 1
then {
FullK17 = Average(FastK17, slowing17);
} else {
FullK17 = ExpAverage(FastK17, slowing17);
}
FullK17.setDefaultColor(Color.RED);
FullK17.SetLineWeight(2);
#### Stoc8 ####
def c18 = priceC – Lowest(priceL, KPeriod8);
def c28 = Highest(priceH, KPeriod8) – Lowest(priceL, KPeriod8);
def FastK8 = c18/c28*100;
plot FullK8;
if smoothingType == 1
then {
FullK8 = Average(FastK8, slowing8);
} else {
FullK8 = ExpAverage(FastK8, slowing8);
}
FullK8.setDefaultColor(Color.GREEN);
FullK8.SetLineWeight(2);
#### Stoc5 ####
def c15 = priceC – Lowest(priceL, KPeriod5);
def c25 = Highest(priceH, KPeriod5) – Lowest(priceL, KPeriod5);
def FastK5 = c15/c25*100;
plot FullK5;
if smoothingType == 1
then {
FullK5 = Average(FastK5, slowing5);
} else {
FullK5 = ExpAverage(FastK5, slowing5);
}
FullK5.setDefaultColor(Color.YELLOW);
FullK5.SetLineWeight(2);
#### Stoc223 ####
def c122 = priceC – Lowest(priceL, KPeriod22);
def c222 = Highest(priceH, KPeriod22) – Lowest(priceL, KPeriod22);
def FastK22 = c122/c222*100;
plot FullK22;
if smoothingType == 1
then {
FullK22 = Average(FastK22, slowing22);
} else {
FullK22 = ExpAverage(FastK22, slowing22);
}
FullK22.setDefaultColor(Color.WHITE);
FullK22.SetLineWeight(2);
#### Stoc211 ####
def c1211 = priceC – Lowest(priceL, KPeriod211);
def c2211 = Highest(priceH, KPeriod211) – Lowest(priceL, KPeriod211);
def FastK211 = c1211/c2211*100;
plot FullK211;
if smoothingType == 1
then {
FullK211 = Average(FastK211, slowing211);
} else {
FullK211 = ExpAverage(FastK211, slowing211);
}
FullK211.setDefaultColor(Color.WHITE);
FullK211.SetStyle(Curve.SHORT_DASH);
FullK211.SetLineWeight(1);
def diff = if close > close[1] then close – close[1] else 0;
def diff2 = if close < close[1] then close[1] - close else 0;
rec avg = compoundValue(1, 2 / (length + 1) * diff + (length - 1) / (length + 1) * avg[1], diff * 2 / (length + 1));
rec avg2 = compoundValue(1, 2 / (length + 1) * diff2 + (length - 1) / (length + 1) * avg2[1], diff2 * 2 / (length + 1));
rec avgSMA = compoundValue(1, (avgSMA[1] + diff) / 2, diff);
rec avgSMA2 = compoundValue(1, (avgSMA2[1] + diff2) / 2, diff2);
def value = if avg2 != 0 then 100 - 100 / (1 + avg / avg2) else 0;
def valueSMA = if avg2 != 0 then 100 - 100 / (1 + avgSMA / avgSMA2) else 0;
plot RSI_EMA = ExpAverage(value, 2);
plot RSI_SMA = Average(valueSMA, 2);
RSI_EMA.SetDefaultColor(Color.DARK_ORANGE);
RSI_EMA.SetLineWeight(2);
RSI_SMA.SetDefaultColor(Color.MAGENTA);
RSI_SMA.SetLineWeight(2);
CCI STUDIES
declare lower;
input length05 = 5;
input length20 = 20;
input length50 = 50;
input over_sold = -100;
input over_bought = 100;
def price = (high + low + close);
def linDev05 = lindev(price, length05);
def linDev20 = lindev(price, length20);
def linDev50 = lindev(price, length50);
plot CCI05 = if linDev05 == 0 then 0 else (price – Average(price, length05)) / linDev05 / 0.015;
plot CCI20 = if linDev20 == 0 then 0 else (price – Average(price, length20)) / linDev20 / 0.015;
plot CCI50 = if linDev50 == 0 then 0 else (price – Average(price, length50)) / linDev50 / 0.015;
plot OverBought = over_bought;
plot ZeroLine = 0;
plot OverSold = over_sold;
CCI05.SetDefaultColor(Color.MAGENTA);
CCI20.SetDefaultColor(Color.YELLOW);
CCI50.SetDefaultColor(Color.CYAN);
Overbought.SetDefaultColor(GetColor(5));
ZeroLine.SetDefaultColor(GetColor(5));
Oversold.SetDefaultColor(GetColor(5));