Ну а полный декомпилированный исходник вот:
#property copyright "IndicatorForex.com"
#property link "
www.IndicatorForex.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Red
extern double RSI.Period = 14.0;
extern int RSI.Overbought = 75;
extern int RSI.Oversold = 25;
extern bool Sound.Alert = TRUE;
double G_ibuf_96[];
double G_ibuf_100[];
int init() {
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 221);
SetIndexBuffer(0, G_ibuf_96);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 222);
SetIndexBuffer(1, G_ibuf_100);
SetIndexEmptyValue(1, 0.0);
return (0);
}
int start() {
double Lda_0[2];
double iatr_4 = iATR(Symbol(), 0, 50, 1);
for (int index_12 = 0; index_12 < Bars; index_12++) {
G_ibuf_96[index_12] = 0.0;
G_ibuf_100[index_12] = 0.0;
for (int index_16 = 0; index_16 < 2; index_16++) Lda_0[index_16] = iRSI(Symbol(), 0, RSI.Period, PRICE_CLOSE, index_12 + index_16);
if (Lda_0[0] > RSI.Oversold && Lda_0[1] < RSI.Oversold) G_ibuf_96[index_12] = Low[index_12] - iatr_4 / 2.0;
if (Lda_0[0] < RSI.Overbought && Lda_0[1] > RSI.Overbought) G_ibuf_100[index_12] = High[index_12] + iatr_4 / 2.0;
}
if (G_ibuf_96[2] == 0.0 && G_ibuf_96[1] != 0.0 && Open[0] == Low[0] && Open[0] == High[0] && Open[0] == Close[0]) Alert("RSI Signal: Long Signal");
if (G_ibuf_100[2] == 0.0 && G_ibuf_100[1] != 0.0 && Open[0] == Low[0] && Open[0] == High[0] && Open[0] == Close[0]) Alert("RSI Signal: Short Signal");
return (0);
}