parabolic_rsi_2.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «parabolic_rsi_2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, который объединяет анализ RSI с сигналами Parabolic SAR. Индикатор рассчитывает сглаженные значения RSI и применяет к ним алгоритм Parabolic SAR для определения точек разворота тренда. Результаты отображаются в отдельном окне: линия RSI и стрелки, отмечающие точки разворота SAR.
Индикатор использует пять буферов для отрисовки: значения RSI, а также четыре массива для стрелок верхнего и нижнего SAR. Поддерживаются настраиваемые уведомления, которые срабатывают при смене сигнала SAR на текущей или предыдущей свече. Уведомления могут выводиться в виде текстовых сообщений, звуковых сигналов или электронных писем.
Все основные параметры, включая период и сглаживание RSI, шаг и предел ускорения SAR, а также настройки уведомлений, задаются пользователем и доступны в окне свойств индикатора.
Настройки программы
| Настройка | Описание |
|---|---|
| RsiPeriod | Период RSI — Период расчёта индикатора RSI — количество баров, используемых для основного расчёта. |
| RsiSmooth | Период сглаживания RSI — Период сглаживания RSI — количество баров, используемых для дополнительного сглаживания значений RSI. |
| AccStep | Шаг ускорения SAR — Шаг ускорения Parabolic SAR — приращение ускорения при каждом новом экстремуме цены. |
| AccLimit | Предел ускорения SAR — Предел ускорения Parabolic SAR — максимальное значение ускорения, ограничивающее скорость изменения точки SAR. |
| alertsOn | Включить уведомления — Включает или отключает систему уведомлений индикатора. |
| alertsOnCurrent | Отслеживать на текущем баре — Определяет, на каком баре отслеживать смену сигнала: на текущем (0) или на предыдущем (1). |
| alertsMessage | Текстовые уведомления — Включает или отключает отображение текстовых уведомлений (Alert) при смене сигнала SAR. |
| alertsSound | Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при смене сигнала SAR. |
| alertsEmail | Уведомления по электронной почте — Включает или отключает отправку уведомлений по электронной почте при смене сигнала SAR. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 DarkGray
#property indicator_color2 LimeGreen
#property indicator_color3 PaleVioletRed
#property indicator_color4 LimeGreen
#property indicator_color5 PaleVioletRed
#property indicator_width4 2
#property indicator_width5 2
extern int RsiPeriod = 14;
extern int RsiSmooth = 3;
extern double AccStep = 0.01;
extern double AccLimit = 0.1;
extern bool alertsOn = false;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double rsi[];
double sarUp[];
double sarDn[];
double saraUp[];
double saraDn[];
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
double workTma[][2];
double iTma(double price, double period, int r, int instanceNo=0)
{
if (ArrayRange(workTma,0)!= Bars) ArrayResize(workTma,Bars); r=Bars-r-1;
if (period<=1) return(price);
workTma[r][instanceNo] = price;
double half = (period+1.0)/2.0;
double sum = price;
double sumw = 1;
for(int k=1; k<period && (r-k)>=0; k++)
{
double weight = k+1; if (weight > half) weight = period-k;
sumw += weight;
sum += weight*workTma[r-k][instanceNo];
}
return(sum/sumw);
}
double workRsi[][6];
#define _price 0
#define _change 1
#define _changa 2
double iRsi(double price, double period, int r, int forz=0)
{
if (ArrayRange(workRsi,0)!=Bars) ArrayResize(workRsi,Bars);
int z = forz*3;
int i = Bars-r-1;
double alpha = 1.0/period;
workRsi[i][_price+z] = price;
if (i<period)
{
int k; double sum = 0; for (k=0; k<period && (i-k-1)>=0; k++) sum += MathAbs(workRsi[i-k][_price+z]-workRsi[i-k-1][_price+z]);
workRsi[i][_change+z] = (workRsi[i][_price+z]-workRsi[0][_price+z])/MathMax(k,1);
workRsi[i][_changa+z] = sum/MathMax(k,1);
}
else
{
double change = workRsi[i][_price+z]-workRsi[i-1][_price+z];
workRsi[i][_change+z] = workRsi[i-1][_change+z] + alpha*( change - workRsi[i-1][_change+z]);
workRsi[i][_changa+z] = workRsi[i-1][_changa+z] + alpha*(MathAbs(change) - workRsi[i-1][_changa+z]);
}
if (workRsi[i][_changa+z] != 0)
return(50.0*(workRsi[i][_change+z]/workRsi[i][_changa+z]+1));
else return(0);
}
double work[][7];
#define _high 0
#define _low 1
#define _ohigh 2
#define _olow 3
#define _open 4
#defineПоказано первые 50% кода (символов: 5679)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.