88_filter.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «88_filter.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор рассчитывает два буферных значения (UP и DN), основанных на соотношении цен закрытия к экстремумам цены за заданное количество баров. Линии отображаются в отдельном окне графика с настраиваемыми уровнями.
Индикатор поддерживает работу с двумя таймфреймами одновременно, что позволяет анализировать данные с разных временных периодов. Доступен режим записи рассчитанных значений в файл.
При пересечении рассчитанных уровней заданного порога индикатор может отправлять уведомления: звуковые сигналы, всплывающие предупреждения или электронную почту. Также доступна запись разницы между буферами в глобальную переменную терминала.
Настройки программы
| Настройка | Описание |
|---|---|
| Len | Длина периода — Длина периода для расчёта индикатора. |
| HistoryBars | Количество баров истории — Количество исторических баров для расчёта. |
| UrovenSignal | Уровень сигнала — Пороговое значение для срабатывания уведомлений. |
| TF1 | Таймфрейм 1 — Первый таймфрейм для анализа. |
| TF2 | Таймфрейм 2 — Второй таймфрейм для анализа. Если не задан, используется текущий таймфрейм. |
| ModeHL | Режим High/Low — Определяет, использовать ли реальные максимумы и минимумы (High/Low) или экстремумы на основе цен открытия и закрытия. |
| ModeOnline | Онлайн-режим — Включает онлайн-расчёт индикатора в реальном времени. |
| ModeinFile | Режим файла — Включает запись рассчитанных значений в файл. |
| ModeHistory | Режим истории — Режим загрузки ранее сохранённых данных из файла (неактивен в текущей версии). |
| alert | Уведомления — Включает отправку всплывающих предупреждений при срабатывании сигнала. |
| sound | Звуковой сигнал — Включает воспроизведение звукового сигнала при срабатывании. |
| Email-уведомления — Включает отправку электронной почты при срабатывании сигнала. | |
| GV | Глобальная переменная — Включает запись разницы между буферами UP и DN в глобальную переменную терминала. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_levelcolor DimGray
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_level1 25.0
#property indicator_level2 6.0
#property indicator_width1 2
#property indicator_width2 2
extern int Len = 15;
extern int HistoryBars = 500;
extern double UrovenSignal = 6.0;
extern int TF1 = 0;
extern int TF2 = 0;
extern bool ModeHL = TRUE;
extern bool ModeOnline = TRUE;
extern bool ModeinFile = FALSE;
extern bool ModeHistory = FALSE;
extern bool alert = FALSE;
extern bool sound = FALSE;
extern bool email = FALSE;
extern bool GV = FALSE;
double UP[];
double DN[];
double Clos;
double Hig;
double Loww;
int i;
int j;
int Gi_172;
int G_shift_176;
int G_count_180;
double Highest;
double Lowest;
double Gd_200;
double Gd_208;
double Gd_216;
double Gd_224;
double ArrayClose[][240];
double ArrayHi[][240];
double ArrayLo[][240];
int G_timeframe_244;
int LatBarTime;
int Gi_252;
bool Gi_256;
int G_file_260;
bool Gi_264;
double SignUp[];
double SignDn[];
int init()
{
// код доступен только после оплаты
}
void Signals()
{
RefreshRates();
ChartRedraw();
}
int start()
{
// код доступен только после оплаты
}
int cnt;
int Li_4;
int Li_8;
if (ModeOnline || ModeinFile)
{
if (iTime(NULL, TF2, 0) == LatBarTime) return (0);
LatBarTime = iTime(NULL, TF2, 0);
for (i = HistoryBars + Len; i > 0; i--)
{
G_shift_176 = iBarShift(NULL, TF1, iTime(NULL, TF2, i));
cnt = 0;
for (j = G_shift_176; j > G_shift_176 - TF2; j--)
{
ArrayClose[i][cnt] = iClose(NULL, TF1, j);
if (ModeHL)
ArrayHi[i][cnt] = iHigh(NULL, TF1, j);
else
ArrayHi[i][cnt] = MathMax(iOpen(NULL, TF1, j), iClose(NULL, TF1, j));
if (ModeHL)
ArrayLo[i][cnt] = iLow(NULL, TF1, j);
else
ArrayLo[i][cnt] = MathMin(iOpen(NULL, TF1, j), iClose(NULL, TF1, j));
cnt++;
}
}
Li_4 = NormalizeDouble((Bars - IndicatorCounted()) / (TF2 / Period()), 0);
if (ModeOnline && (!IsTesting())) Li_4 = HistoryBars;
for (i = Li_4; i > 0; i--)
{
G_count_180 = 0;
Gd_200 = 0;
Gd_208 = 0;
Highest = 0;
Lowest = 1000000;
while (G_count_180 < Len)
{
Gi_172 = i + G_count_180;
Gd_216Показано первые 50% кода (символов: 4268)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.