RSIPaint
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsipaint-v2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.