Было-не было?
declare upper;
input study = {default MACD, RSI, CCI, Momentum, Moneyflow, OnBalanceVolume, RateOfChange, StochasticMomentumIndex, UltimateOscillator, VolumeFlowIndicator, VolumeOsc, VolumeRateOfChange, VolumeWeightedMACD, WilliamsPercentR, WoodiesCCI};
def mydivergence;
switch (study) {
case MACD: mydivergence = reference MACD.value;
case RSI: mydivergence = reference RSI;
case CCI: mydivergence = reference CCI;
case Momentum: mydivergence = reference Momentum;
case Moneyflow: mydivergence = reference Moneyflow;
case OnBalanceVolume: mydivergence = reference OnBalanceVolume;
case RateOfChange: mydivergence = reference RateOfChange;
case StochasticMomentumIndex: mydivergence = reference StochasticMomentumIndex;
case UltimateOscillator: mydivergence = reference UltimateOscillator.Ultosc;
case VolumeFlowIndicator: mydivergence = reference VolumeFlowIndicator;
case VolumeOsc: mydivergence = reference VolumeOsc;
case VolumeRateOfChange: mydivergence = reference VolumeRateOfChange;
case VolumeWeightedMACD: mydivergence = reference VolumeWeightedMACD;
case WilliamsPercentR: mydivergence = reference WilliamsPercentR;
case WoodiesCCI: mydivergence = reference WoodiesCCI;
}
input long_length = 50;
input short_length = 10;
def na = Double.NaN;
def mydivs = reference LinearRegressionSlope(mydivergence,short_length);
def bullPricedivs = reference LinearRegressionSlope(low,short_length);
def bearPricedivs = reference LinearRegressionSlope(high,short_length);
plot BullDivs=if (bullPricedivs<0 and mydivs>0) then 1 else na;
plot BearDivs=if (bearPricedivs>0 and mydivs<0) then 1 else na;
bulldivs.setpaintingStrategy(paintingStrategy.BOOLEAN_ARROW_UP);
bulldivs.setdefaultColor(color.light_green);
bulldivs.setlineWeight(1);
beardivs.setpaintingStrategy(paintingStrategy.BOOLEAN_ARROW_DOWN);
beardivs.setdefaultColor(color.light_red);
beardivs.setlineWeight(1);
def mydivl = reference LinearRegressionSlope(mydivergence,long_length);
def bullPricedivl = reference LinearRegressionSlope(low,long_length);
def bearPricedivl = reference LinearRegressionSlope(high,long_length);
plot BullDivl=if (bullPricedivl<0 and mydivl>0) then 1 else na;
plot BearDivl=if (bearPricedivl>0 and mydivl<0) then 1 else na;
bulldivl.setpaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
bulldivl.setdefaultColor(color.dark_GREEN);
bulldivl.setlineWeight(5);
beardivl.setpaintingStrategy(paintingStrategy.BOOLEAN_ARROW_DOWN);
beardivl.setdefaultColor(color.dark_RED);
beardivl.setlineWeight(5);
#
# Alerts:
#
def alerttrigger = if !isnan(bulldivs) or !isnan(beardivs) or !isnan(bulldivl) or !isnan(beardivl) then 1 else 0;
input alerttext = “Divergence Detected!”;
input UseAlerts = {false, default true};
input AlertType = {default “BAR”, “ONCE”, “TICK”};
def at=AlertType;
input AlertSound = {“Bell”, “Chimes”, default “Ding”, “NoSound”, “Ring”};
alert(alerttrigger AND UseAlerts, alerttext, if at==1 then Alert.ONCE else if at==2 then Alert.TICK else Alert.BAR, AlertSound);