input KPeriod = 14;
input stochasticMode = {default StochasticFast, StochasticSlow};
input crossingType = {default Overbought, Oversold};
def stochastic;
switch (stochasticMode) {
case StochasticFast:
stochastic = StochasticFull(KPeriod = KPeriod, slowing_period = 1).FullK;
case StochasticSlow:
stochastic = StochasticFull(KPeriod = KPeriod, slowing_period = 3).FullK;
}
plot signal;
switch (crossingType) {
case Overbought:
signal = crosses(stochastic, 80, CrossingDirection.Above);
case Oversold:
signal = crosses(stochastic, 20, CrossingDirection.Below);
}
AddLabel(signal == 1, "АЛЕРТ", GetColor(5));
Alert(Signal == 1, Sound.Ring);
signal.DefineColor("OverBought", GetColor(1));
signal.DefineColor("OverSold", GetColor(9));
signal.AssignValueColor(if crossingType == CrossingType.oversold then signal.color("oversold") else signal.color("overbought"));
signal.SetPaintingStrategy(if crossingType == CrossingType.Oversold
then PaintingStrategy.BOOLEAN_ARROW_UP
else PaintingStrategy.BOOLEAN_ARROW_DOWN);