← К каталогу
Исходный код · ID 2234

RSIPaint

rsipaint-v2.mq4

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

RSIPaint — пользовательский индикатор для MetaTrader 4, основанный на расчёте RSI (Relative Strength Index). Отображает значение RSI в отдельном окне и автоматически выявляет на графике паттерны разворота цены и дивергенции. Для обнаруженных сигналов рисует трендовые линии в окне индикатора и на ценовом графике с настраиваемыми цветами и стилями.

Настройки программы

НастройкаОписание
S000 Заголовок YLF RSI Paint — Заголовок раздела параметров
S001 Заголовок общих параметров — Заголовок раздела общих параметров
RSI_Period Период RSI — Период расчёта индикатора RSI
Show_Reversals Показать развороты — Включает или отключает отображение разворотов
Show_Divergences Показать дивергенции — Включает или отключает отображение дивергенций
Hide_Price_Lines Скрыть ценовые линии — Скрывает трендовые линии на ценовом графике
Hide_RSI_Line Скрыть линию RSI — Скрывает линию RSI в отдельном окне индикатора
Hide_Comments Скрыть комментарии — Скрывает текстовые комментарии на графике
RenderBars Количество баров отрисовки — Количество баров для отрисовки индикатора
IndicatorWindow Окно индикатора — Номер окна для отображения индикатора
S002 Заголовок фильтров — Заголовок раздела фильтров
ABBC_Bold_Value Значение жирного ABBC — Пороговое значение для отображения трендовых линий жирным шрифтом
Max_RPV_Bars Максимальные бары разворота — Максимальное количество баров для поиска разворота
Min_RPV_Bars Минимальные бары разворота — Минимальное количество баров для поиска разворота
Min_RPV_Size Минимальный размер разворота — Минимальный размер изменения RSI для обнаружения разворота
Max_RSI_PR Максимум RSI для PR — Верхний предел RSI для обнаружения позитивного разворота
Min_RSI_PR Минимум RSI для PR — Нижний предел RSI для обнаружения позитивного разворота
Max_RSI_NR Максимум RSI для NR — Верхний предел RSI для обнаружения негативного разворота
Min_RSI_NR Минимум RSI для NR — Нижний предел RSI для обнаружения негативного разворота
Max_RSI_Slope Максимальный наклон RSI — Максимальный допустимый наклон RSI
Min_RSI_Slope Минимальный наклон RSI — Минимальный допустимый наклон RSI
Min_ABBC_Ratio Минимальное соотношение ABBC — Минимальное соотношение ABBC для подтверждения паттерна
S003 Заголовок предпочтений — Заголовок раздела предпочтений
Reversal_Alerts_Enabled Включить уведомления разворота — Включает или отключает звуковые уведомления о разворотах
Reversal_Alert_Sound Звук уведомления разворота — Звуковой файл для уведомления при развороте
Reversal_Alerts_HowManyTimes Количество повторений уведомления разворота — Количество повторений звукового уведомления о развороте
Reversal_Email_Send Отправка email разворота — Включает или отключает отправку email при развороте
Divergence_Alerts_Enabled Включить уведомления дивергенции — Включает или отключает звуковые уведомления о дивергенциях
Divergence_Alert_Sound Звук уведомления дивергенции — Звуковой файл для уведомления при обнаружении дивергенции
Divergence_Alerts_HowManyTimes Количество повторений уведомления дивергенции — Количество повторений звукового уведомления о дивергенции
Divergence_Email_Send Отправка email дивергенции — Включает или отключает отправку email при обнаружении дивергенции
PR_Color Цвет PR — Цвет линии позитивного разворота
PR_Width Толщина PR — Толщина линии позитивного разворота
PR_Style Стиль PR — Стиль линии позитивного разворота
PR_Bold_Color Цвет жирного PR — Цвет жирной линии позитивного разворота
PR_Bold_Width Толщина жирного PR — Толщина жирной линии позитивного разворота
PR_Bold_Style Стиль жирного PR — Стиль жирной линии позитивного разворота
NR_Color Цвет NR — Цвет линии негативного разворота
NR_Width Толщина NR — Толщина линии негативного разворота
NR_Style Стиль NR — Стиль линии негативного разворота
NR_Bold_Color Цвет жирного NR — Цвет жирной линии негативного разворота
NR_Bold_Width Толщина жирного NR — Толщина жирной линии негативного разворота
NR_Bold_Style Стиль жирного NR — Стиль жирной линии негативного разворота
PD_Color Цвет PD — Цвет линии позитивной дивергенции
PD_Width Толщина PD — Толщина линии позитивной дивергенции
PD_Style Стиль PD — Стиль линии позитивной дивергенции
ND_Color Цвет ND — Цвет линии негативной дивергенции
ND_Width Толщина ND — Толщина линии негативной дивергенции
ND_Style Стиль ND — Стиль линии негативной дивергенции
S005 Заголовок внутренних параметров — Заголовок раздела внутренних параметров
IPA1 Внутренний параметр IPA1 — Внутренний параметр идентификации
Получить полный код

Поиск по коду файла

#property indicator_separate_window
#property indicator_minimum 10.0
#property indicator_maximum 90.0
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_width1 1
#property indicator_level1 20.0
#property indicator_level2 30.0
#property indicator_level3 40.0
#property indicator_level4 50.0
#property indicator_level5 60.0
#property indicator_level6 70.0
#property indicator_level7 80.0

#include <stdlib.mqh>

extern string S000 = "--- YLF RSI Paint ---";
extern string S001 = "--- General Parameters ---";
extern int RSI_Period = 14;
extern bool Show_Reversals = TRUE;
extern bool Show_Divergences = TRUE;
extern bool Hide_Price_Lines = FALSE;
extern bool Hide_RSI_Line = FALSE;
extern bool Hide_Comments = FALSE;
extern int RenderBars = 1000;
extern int IndicatorWindow = 1;
extern string S002 = "--- Filters ---";
extern double ABBC_Bold_Value = 2.0;
extern int Max_RPV_Bars = 360;
extern int Min_RPV_Bars = 2;
extern double Min_RPV_Size = 0.0;
extern double Max_RSI_PR = 100.0;
extern double Min_RSI_PR = 0.0;
extern double Max_RSI_NR = 100.0;
extern double Min_RSI_NR = 0.0;
extern double Max_RSI_Slope = 10.0;
extern double Min_RSI_Slope = 0.0;
double gd_204 = 0.0;
extern double Min_ABBC_Ratio = 0.0;
extern string S003 = "--- Preferences ---";
extern bool Reversal_Alerts_Enabled = TRUE;
extern string Reversal_Alert_Sound = "alert.wav";
extern int Reversal_Alerts_HowManyTimes = 1;
extern bool Reversal_Email_Send = TRUE;
extern bool Divergence_Alerts_Enabled = TRUE;
extern string Divergence_Alert_Sound = "alert.wav";
extern int Divergence_Alerts_HowManyTimes = 1;
extern bool Divergence_Email_Send = TRUE;
extern color PR_Color = ForestGreen;
extern int PR_Width = 1;
extern int PR_Style = 0;
extern color PR_Bold_Color = Lime;
extern int PR_Bold_Width = 2;
extern int PR_Bold_Style = 0;
extern color NR_Color = Maroon;
extern int NR_Width = 1;
extern int NR_Style = 0;
extern color NR_Bold_Color = Red;
extern int NR_Bold_Width = 2;
extern int NR_Bold_Style = 0;
extern color PD_Color = Yellow;
extern int PD_Width = 1;
extern int PD_Style = 1;
extern color ND_Color = Fuchsia;
extern int ND_Width = 1;
extern int ND_Style = 1;
extern string S005 = "--- Internal Parameters ---";
extern string IPA1 = "CS14877325";
double g_ibuf_356[];
bool gi_unused_360 = FALSE;
int g_digits_364 = 0;
double gd_368 = 0.0;
int g_time_376 = 0;
double gd_380 = 0.0;
double gd_388 = 0.0;
double g_close_396 = 0.0;
double gd_404 = 0.0;
double gd_412 = 0.0;
double gd_420 = 0.0;
double gd_428 = 0.0;
double gd_436 = D'09.09.2001 02:46:39';
bool gi_444 = FALSE;
bool gi_448 = FALSE;
double g_close_452 = 0.0;
double g_close_460 = 0.0;
double gd_unused_468 = 0.0;
double gd_476 = 0.0;
double g_irsi_484 = 0.0;
double g_irsi_492 = 0.0;
double g_irsi_500 = 0.0;
double g_irsi_508 = 0.0;
double g_irsi_516 = 0.0;
double g_irsi_524 = 0.0;
double g_irsi_532 = 0.0;
double g_irsi_540 = 0.0;
double g_irsi_548 = 0.0;
double g_irsi_556 = 0.0;
double g_irsi_564 = 0.0;
int gi_572 = 0;
double gd_unused_576 = 1.0;
bool gi_584 = FALSE;
double gd_588 = 0.0;
int gi_596 = 0;
double gd_unused_600;
bool gi_608 = TRUE;
bool gi_612 = TRUE;
bool gi_616 = FALSE;
bool gi_620 = FALSE;
int g_count_624 = 0;
string gs_unused_628 = "\n?2009-2011, YouLearnForex.com, RSIPaint";
string gs_636 = "0123456789abcdef";
string gs_644 = "XX";

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   string l_name_8;
   string l_name_16;
   if ((Year() == 2011 && DayOfYear() > 204) || Year() != 2011 || IsTesting()) return (-1);
   int li_0 = 2 * RenderBars;
   if (g_count_624 + 1 > li_0) li_0 = g_count_624 + 1;
   if (gi_612) {
      Comment("");
      for (int li_4 = 1; li_4 <= li_0; li_4++) {
         l_name_8 = "rsi_line_" + li_4;
         l_name_16 = "price_line_" + li_4;
         ObjectDelete(l_name_8);
         ObjectDelete(l_name_16);
      }
      g_count_624 = 0;
   }
   ObjectsRedraw();
   return (0);
}

int start() {
      // код доступен только после оплаты
   }

bool PRDetected(int ai_0) {
   string ls_unused_8;
   double l_close_16 = 0;
   double ld_24 = 0;
   double l_close_32 = 0;
   double l_close_40 = 0;
   gd_380 = 0.0;
   gd_388 = 0.0;
   g_close_396 = 0.0;
   gd_404 = 0.0;
   gd_420 = 0.0;
   gd_428 = 0.0;
   gi_444 = FALSE;
   gd_412 = 0.0;
   gd_unused_600 = 0.0;
   int li_48 = ai_0 + 2;
   if (g_irsi_492 == g_irsi_500) li_48++;
   int li_52 = li_48 + Min_RPV_Bars;
   g_irsi_524 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 - 1);
   g_irsi_532 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52);
   g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 + 1);
   for (li_52 = li_48 + Min_RPV_Bars; li_52 <= Max_RPV_Bars + ai_0; li_52++) {
      g_irsi_516 = g_irsi_524;
      g_irsi_524 = g_irsi_532;
      g_irsi_532 = g_irsi_540;
      g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 + 2);
      gd_476 = Close[li_52];
      if ((g_irsi_532 < g_irsi_524 - Min_RPV_Size && g_irsi_516 < g_irsi_524 - Min_RPV_Size) || (g_irsi_532 == g_irsi_524 && g_irsi_540 < g_irsi_524 - Min_RPV_Size && g_irsi_516 < g_irsi_524 - Min_RPV_Size) &&
         gd_476 > gd_428) gd_428 = gd_476;
      if ((g_irsi_532 > g_irsi_524 + Min_RPV_Size && g_irsi_516 > g_irsi_524 + Min_RPV_Size) || (g_irsi_532 == g_irsi_524 && g_irsi_540 > g_irsi_524 + Min_RPV_Size && g_irsi_516 > g_irsi_524 +
         Min_RPV_Size) && g_irsi_524 > g_irsi_492 + Min_RSI_Slope * (li_52 - li_48) && g_irsi_524 < g_irsi_492 + Max_RSI_Slope * (li_52 - li_48) && g_irsi_492 <= Max_RSI_PR &&
         g_irsi_492 >= Min_RSI_PR && gd_476 < g_close_452) {
         if (!RSI_Pierced(li_48, li_52, 0)) {
            if ((gi_620 && gd_412 == 0.0) || !gi_620) {
               l_close_16 = Close[iHighest(NULL, 0, MODE_CLOSE, li_52 - li_48, li_48)];
               ld_24 = gd_476;
               l_close_32 = l_close_16;
               l_close_40 = g_close_460;
               if (!CompareDoubles(l_close_32, l_close_40)) gd_420 = MathAbs(ld_24 - l_close_32) / MathAbs(l_close_32 - l_close_40);
               else gd_420 = 0;
               if (gd_420 >= Min_ABBC_Ratio && gd_420 > gd_412) {
                  gd_412 = gd_420;
                  gd_380 = ld_24;
                  gd_388 = l_close_32;
                  g_close_396 = l_close_40;
                  gd_404 = g_close_396 + gd_388 - gd_380;
                  gi_444 = TRUE;
                  gi_572 = li_52;
                  gd_unused_600 = gd_588;
               }
            }
         }
      }
   }
   return (gi_444);
}

bool NRDetected(int ai_0) {
   string ls_unused_8;
   double l_iclose_16 = 0;
   double ld_24 = 0;
   double l_iclose_32 = 0;
   double l_close_40 = 0;
   gd_380 = 0;
   gd_388 = 0;
   g_close_396 = 0;
   gd_404 = 0;
   gd_420 = 0;
   gd_436 = D'09.09.2001 02:46:39';
   gi_448 = FALSE;
   gd_412 = 0;
   gd_unused_600 = 0;
   int li_48 = ai_0 + 2;
   if (g_irsi_492 == g_irsi_500) li_48++;
   int li_52 = li_48 + Min_RPV_Bars;
   g_irsi_524 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 - 1);
   g_irsi_532 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52);
   g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 + 1);
   for (li_52 = li_48 + Min_RPV_Bars; li_52 <= Max_RPV_Bars + ai_0; li_52++) {
      g_irsi_516 = g_irsi_524;
      g_irsi_524 = g_irsi_532;
      g_irsi_532 = g_irsi_540;
      g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_52 + 2);
      gd_476 = Close[li_52];
      if ((g_irsi_532 > g_irsi_524 + Min_RPV_Size && g_irsi_516 > g_irsi_524 + Min_RPV_Size) || (g_irsi_532 == g_irsi_524 && g_irsi_540 > g_irsi_524 + Min_RPV_Size && g_irsi_516 > g_irsi_524 +
         Min_RPV_Size) && gd_476 < gd_436) gd_436 = gd_476;
      if ((g_irsi_532 < g_irsi_524 - Min_RPV_Size && g_irsi_516 < g_irsi_524 - Min_RPV_Size) || (g_irsi_532 == g_irsi_524 && g_irsi_540 < g_irsi_524 - Min_RPV_Size && g_irsi_516 < g_irsi_524 - Min_RPV_Size) &&
         g_irsi_524 < g_irsi_492 - Min_RSI_Slope * (li_52 - li_48) && g_irsi_524 > g_irsi_492 - Max_RSI_Slope * (li_52 - li_48) && g_irsi_492 >= Min_RSI_NR && g_irsi_492 <= Max_RSI_NR && gd_476 > g_close_452) {
         if (!RSI_Pierced(li_48, li_52, 0)) {
            if ((gi_620 && gd_412 == 0.0) || !gi_620) {
               l_iclose_16 = iClose(NULL, 0, iLowest(NULL, 0, MODE_CLOSE, li_52 - li_48, li_48));
               ld_24 = gd_476;
               l_iclose_32 = l_iclose_16;
               l_close_40 = g_close_460;
               if (!CompareDoubles(l_iclose_32, l_close_40)) gd_420 = MathAbs(ld_24 - l_iclose_32) / MathAbs(l_iclose_32 - l_close_40);
               else gd_420 = 0;
               if (gd_420 >= Min_ABBC_Ratio && gd_420 > gd_412) {
                  gd_412 = gd_420;
                  gd_380 = ld_24;
                  gd_388 = l_iclose_32;
                  g_close_396 = l_close_40;
                  gd_404 = g_close_396 + gd_388 - gd_380;
                  gi_448 = TRUE;
                  gi_572 = li_52;
                  gd_unused_600 = gd_588;
               }
            }
         }
      }
   }
   return (gi_448);
}

bool PDDetected(int ai_0) {
   bool li_ret_4 = FALSE;
   int li_8 = ai_0 + 2;
   if (g_irsi_492 == g_irsi_500) li_8++;
   int li_12 = li_8 + Min_RPV_Bars;
   g_irsi_524 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 - 1);
   g_irsi_532 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12);
   g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 + 1);
   for (li_12 = li_8 + Min_RPV_Bars; li_12 <= Max_RPV_Bars + ai_0; li_12++) {
      g_irsi_516 = g_irsi_524;
      g_irsi_524 = g_irsi_532;
      g_irsi_532 = g_irsi_540;
      g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 + 2);
      gd_476 = Close[li_12];
      if ((g_irsi_532 > g_irsi_524 && g_irsi_516 > g_irsi_524) || (g_irsi_532 == g_irsi_524 && g_irsi_540 > g_irsi_524 && g_irsi_516 > g_irsi_524) && g_irsi_524 < g_irsi_492 &&
         gd_476 > g_close_452) {
         if (!RSI_Pierced(li_8, li_12, 1)) {
            li_ret_4 = TRUE;
            gi_572 = li_12;
         }
      }
   }
   return (li_ret_4);
}

bool NDDetected(int ai_0) {
   bool li_ret_4 = FALSE;
   int li_8 = ai_0 + 2;
   if (g_irsi_492 == g_irsi_500) li_8++;
   int li_12 = li_8 + Min_RPV_Bars;
   g_irsi_524 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 - 1);
   g_irsi_532 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12);
   g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 + 1);
   for (li_12 = li_8 + Min_RPV_Bars; li_12 <= Max_RPV_Bars + ai_0; li_12++) {
      g_irsi_516 = g_irsi_524;
      g_irsi_524 = g_irsi_532;
      g_irsi_532 = g_irsi_540;
      g_irsi_540 = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, li_12 + 2);
      gd_476 = Close[li_12];
      if ((g_irsi_532 < g_irsi_524 && g_irsi_516 < g_irsi_524) || (g_irsi_532 == g_irsi_524 && g_irsi_540 < g_irsi_524 && g_irsi_516 < g_irsi_524) && g_irsi_524 > g_irsi_492 &&
         gd_476 < g_close_452) {
         if (!RSI_Pierced(li_8, li_12, 1)) {
            li_ret_4 = TRUE;
            gi_572 = li_12;
         }
      }
   }
   return (li_ret_4);
}

bool RSI_Pierced(int ai_0, int ai_4, bool ai_8) {
   gi_584 = FALSE;
   gd_588 = 0;
   if (gi_616) return (FAL

Показано первые 50% кода (символов: 24297)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 429,70₽ ≈ $29.70