я посмотрел) Ведь на этом форуме его уже выкладывали для Tos )))
#hint price: При ресчете EMA1, EMA2, RSI берутся указанные цены.
#hint length1: Период первой скользящей средней.
#hint length2: Период второй скользящей средней.
#hint lengthRSI: период RSI
#hint SizeCon: Диаппазон между скользящими средними меньше которого появляется сигнал
input price = close;
input length1 = 5;
input length2 = 10;
input lengthRSI = 14;
input SizeCon = 5;
plot Exp1 = ExpAverage(price, length1);
Exp1.SetDefaultColor(GetColor(5));
plot Exp2 = ExpAverage(price, length2);
Exp2.SetDefaultColor(GetColor(1));
def NetChgAvg = ExpAverage(price - price[1], lengthRSI);
def TotChgAvg = ExpAverage(AbsValue(price - price[1]), lengthRSI);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RSI_EMA = 50 * (ChgRatio + 1);
plot UP = Exp1<Exp2 AND Exp2-Exp1<=SizeCon*TickSize() AND RSI_EMA>RSI_EMA[1];
plot DN = Exp1>Exp2 AND Exp1-Exp2<=SizeCon*TickSize() AND RSI_EMA<RSI_EMA[1];
plot UPF = Exp1 crosses above Exp2;
plot DNF = Exp1 crosses below Exp2;
UP.SetDefaultColor(color.CYAN);
UP.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DN.SetDefaultColor(color.RED);
DN.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
UPF.SetDefaultColor(color.VIOLET);
UPF.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DNF.SetDefaultColor(color.VIOLET);
DNF.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
Alert(UP or DN, "Сближение EMA1 и EMA2");
AddLabel(UP or DN, "Сближение EMA1 и EMA2", if UP then Color.DARK_GREEN else Color.RED);
Alert(UPF or DNF, "Пересечение");
AddLabel(UPF or DNF, "Пересечение", if UP then Color.DARK_GREEN else Color.RED);