rsi color m15 v1.01.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi color m15 v1.01.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает значение RSI (Relative Strength Index) с настраиваемым периодом и типом цены, отображая результат в отдельном окне. Основная линия отрисовывается в цвете MidnightBlue, а зоны перекупленности и перепроданности выделены цветными полосами.
Индикатор поддерживает визуальные стрелки при пересечении заданных уровней перекупленности и перепроданности. Стрелки размещаются на ценовых уровнях выше максимума или ниже минимума свечи с настраиваемым отступом.
Система уведомлений позволяет получать алерты при пересечении RSI заданных порогов. Доступны показ сообщений на экране, звуковые сигналы и отправка email-уведомлений. Уведомления срабатывают только при изменении состояния пересечения.
Дополнительно предусмотрен выбор таймфрейма для расчёта и функция перерисовки сигналов на основе порога изменения цены, что позволяет корректировать отображение предыдущих сигналов при выполнении заданных условий.
Настройки программы
| Настройка | Описание |
|---|---|
| RSIPeriod | Период усреднения для расчёта индикатора RSI. Значение по умолчанию — 14. |
| PriceType | Тип цены, используемый для расчёта RSI. Доступны варианты: Close, Open, High, Low, Median, Typical, Weighted. |
| timeFrame | Таймфрейм, на котором производится расчёт индикатора. Можно задать строковое обозначение или выбрать текущий таймфрейм. |
| showArrows | Включает или отключает отображение стрелок на графике при пересечении уровней перекупленности и перепроданности. |
| alertsOn | Главный переключатель системы уведомлений. При значении false все виды алертов отключаются. |
| alertsMessage | Включает или отключает отображение текстовых сообщений-уведомлений на экране при срабатывании событий. |
| alertsSound | Включает или отключает воспроизведение звукового сигнала при срабатывании уведомлений. |
| alertsEmail | Включает или отключает отправку email-уведомлений при пересечении RSI заданных уровней. |
| repaintSignalStep | Шаг в пунктах, который должен быть преодолён изменением цены для перерисовки предыдущего сигнала. |
| repaintSignalPrice | Параметр цены, используемый для определения момента перерисовки сигнала при расчёте скользящей средней. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_minimum 15
#property indicator_maximum 85
#property indicator_color1 MidnightBlue
#property indicator_color2 White
#property indicator_color3 White
#property indicator_width2 2
#property indicator_width3 2
#define SignalName "RSISignal"
extern int RSIPeriod = 14;
extern int PriceType = 5;
extern string timeFrame = "Current time frame";
extern double overBought = 90,
overSold = 10;
extern bool showArrows = False;
extern bool alertsOn = true;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsEmail = false;
extern int repaintSignalStep = 0;
extern int repaintSignalPrice = 0;
double RSIBuffer[];
double Upper[];
double Lower[];
double Prices[];
int TimeFrame;
datetime TimeArray[];
int maxArrows;
int SignalGap;
string prevSignal;
int prevBar;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int limit;
int i,y;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMax(Bars-counted_bars,TimeFrame/Period());
ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
for(i=0,y=0; i<limit; i++)
{
if(Time[i]<TimeArray[y]) y++;
RSIBuffer[i] = iRSI(NULL,TimeFrame,RSIPeriod,PriceType,y);
}
for(i=limit; i>=0; i--)
{
if (RSIBuffer[i] > overBought) { Upper[i] = RSIBuffer[i]; Upper[i+1] = RSIBuffer[i+1]; }
else { Upper[i] = EMPTY_VALUE;
if (Upper[i+2] == EMPTY_VALUE)
Upper[i+1] = EMPTY_VALUE; }
if (RSIBuffer[i] < overSold) { Lower[i] = RSIBuffer[i]; Lower[i+1] = RSIBuffer[i+1]; }
else { Lower[i] = EMPTY_VALUE;
if (Lower[i+2] == EMPTY_VALUE)
Lower[i+1] = EMPTY_VALUE; }
}
DeleteArrows();
if (showArrows)
{
SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
for (i=WindowBarsPerChart(); i>=0 ;i--)
{
if (RSIBuffer[i]>overBought && RSIBuffer[i+1]<overBought) DrawArrow(i,"up");
if (RSIBuffer[i]<overSold && RSIBuffer[i+1]>overSold) DrawArrow(i,"down");
if ((TimeFrame==Period()) && (repaintSignalStep>0))
if (prevBar==i+1)
{
double currPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i);
double prevPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i+1);
if (prevSignal == "down")
if (RSIBuffer[i]<overSold)
if ((prevPrice-currPrice)/Point >= repaintSignalStep)
{
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_TIME1,Time[i]);
ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_PRICE1,Low[i] -(SignalGap*Point));
}
if (prevSignal == "up")
if (RSIBuffer[i]>overBought)
if ((currPrice-prevПоказано первые 50% кода (символов: 5599)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.