low-pass-bands-sync-filters-mtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «low-pass-bands-sync-filters-mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает низкочастотные фильтрованные полосы на ценовых данных MetaTrader 5. Используются sinc-фильтры с оконными функциями (Хэмминга, Ханнинга, Блэкмена и другими) для формирования коэффициентов, а также различные методы скользящих средних для расчёта диапазона.
Отображаются верхняя и нижняя полосы отклонения от фильтрованной средней, определяются направления тренда по соотношению цены с полосами и свечным паттернам. При смене тренда на графике рисуются стрелки, смещённые на значение ATR(20).
Поддерживается работа на нескольких таймфреймах через вызов iCustom, интерполяция значений между барами, а также уведомления о смене тренда через всплывающие сообщения, звук или email.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Текстовый параметр выбора таймфрейма работы индикатора |
| gFilterPeriod | Период фильтра — Целочисленный параметр периода фильтра |
| FilterPrice | Цена фильтрации — Целочисленный параметр выбора цены для фильтрации |
| FilterType | Тип фильтра — Целочисленный параметр выбора типа оконной функции (0–13) |
| FrequencyCutoff | Частота среза — Числовой параметр частоты среза фильтра |
| Causal | Каузальный режим — Переключатель причинного (каузального) режима фильтрации |
| rangePeriod | Период диапазона — Целочисленный параметр периода для расчёта диапазона |
| MaMethod | Метод скользящей — Целочисленный параметр выбора метода скользящей средней (0–10) |
| UpDeviation | Отклонение вверх — Числовой коэффициент отклонения верхней полосы от фильтрованной средней |
| DnDeviation | Отклонение вниз — Числовой коэффициент отклонения нижней полосы от фильтрованной средней |
| Interpolate | Интерполяция — Переключатель интерполяции значений между барами другого таймфрейма |
| ShowArrows | Показывать стрелки — Переключатель отображения стрелок смены тренда |
| arrowsDistance | Расстояние стрелок — Числовой параметр расстояния стрелок от экстремума в единицах ATR(20) |
| alertsOn | Уведомления включены — Переключатель включения системы уведомлений |
| alertsOnCurrent | Текущий бар — Переключатель проверки уведомлений на текущем баре |
| alertsMessage | Сообщения — Переключатель всплывающих сообщений при смене тренда |
| alertsSound | Звуковой сигнал — Переключатель воспроизведения звукового сигнала при смене тренда |
| alertsEmail | Email-уведомления — Переключатель отправки email-уведомлений при смене тренда |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 clrNONE //PaleVioletRed
#property indicator_style1 STYLE_DASH
#property indicator_color2 Red
#property indicator_style2 STYLE_DOT
#property indicator_color3 Green
#property indicator_style3 STYLE_DOT
#property indicator_color4 Aqua
#property indicator_width4 2
#property indicator_color5 Magenta
#property indicator_width5 2
extern string TimeFrame = "current time frame";
extern int gFilterPeriod = 30;
extern int FilterPrice = PRICE_CLOSE;
extern int FilterType = 0;
extern double FrequencyCutoff = 0.01;
extern bool Causal = false;
extern int rangePeriod = 5;
extern int MaMethod = 8;
extern double UpDeviation = 2.0;
extern double DnDeviation = 2.0;
extern bool Interpolate = true;
extern bool ShowArrows = true;
extern double arrowsDistance = 1.0;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double ma[];
double buffer1[];
double buffer2[];
double arrowUp[];
double arrowDn[];
double trend[];
double pr[];
double coeffs[];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
#define Pi 3.141592653589793238462643383279502884197169399375105820974944592
void fillCoeffs(double& tcoeffs[], double frequencyCutoff, double filterPeriod, int filterType, double multiplier=1)
{
ArrayResize(tcoeffs,filterPeriod);
int N = filterPeriod-1; double sum = 0;
for (int n=0; n<filterPeriod; n++)
{
double div = (n-N/2.0);
if (div==0) tcoeffs[n] = 2.0*Pi*frequencyCutoff;
else tcoeffs[n] = MathSin(2.0*Pi*frequencyCutoff*div)/div;
switch(filterType)
{
case 0 : tcoeffs[n] *= (0.54-0.46*MathCos(2*Pi*n/N)); break; // Hamming
case 1 : tcoeffs[n] *= (0.50-0.50*MathCos(2*Pi*n/N)); break; // Hanning
case 2 : tcoeffs[n] *= (0.42-0.50*MathCos(2*Pi*n/N)+0.08*MathCos(4*Pi*n/N)); break; // Blackman
case 3 : tcoeffs[n] *= (0.35875-0.48829*MathCos(2*Pi*n/N)+0.14128*MathCos(4*Pi*n/N)+0.01168*MathCos(6*Pi*n/N)); break; // Blackman Harris
case 4 : tcoeffs[n] *= (0.3635819-0.4891775*MathCos(2*Pi*n/N)+0.1365995*MathCos(4*Pi*n/N)+0.0106411*MathCos(6*Pi*n/N)); break; // Blackman Nutall
case 5 : tcoeffs[n] *= (0.355768-0.487396*MathCos(2*Pi*n/N)+0.144232*MathCos(4*Pi*n/N)+0.012604*MathCos(6*Pi*n/N)); break; // Nutall
case 6 : tcoeffs[n] *= (2.0/N*(N/2.0-MathAbs(n-N/2))); break; // Bartlet zero end points
case 7 : tcoeffs[n] *= (0.62-0.48*MathAbs(n/N-0.5)*0.38*MathCos(2.0*Pi*n/N)); break; // Bartlet-Hann
case 8 : tcoeffs[n] *= (0.50*(1.0-MathCos(2.0*Pi*n/N))); break; // Hann
case 9 : tcoeffs[n] *= (MathSin(Pi*n/N)); break; // Sine
case 10:
double ttx = ((n/N)-1.0);
if (ttx==0)
tcoeffs[n] *= 0;
else tcoeffs[n] *= (MathSin(ttx)/(ttx)); break; // Lanczos
case 11: tcoeffs[n] *= (1-1.93*MathCos(2*Pi*n/N)+1.29*MathCos(4*Pi*n/N)+0.388*MathCos(6*Pi*n/N)+0.388*MathCos(8*Pi*n/N)); break; // Flat top
}
sum += tcoeffs[n];
}
for (int k=0; k<filterPeriod; k++) { tcoeffs[k] = tcoeffs[k]/sum; tcoeffs[k] = tcoeffs[k]*multiplier; }
}
void manageAlerts()
{
if (!calПоказано первые 50% кода (символов: 13183)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.