LowPassFilter_v1
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «lowpassfilter_v1 mtf.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
LowPassFilter_v1 — пользовательский индикатор для MetaTrader 4, реализующий низкочастотный фильтр ценовых данных. Он вычисляет сглаженную линию фильтра с настраиваемым порядком (1-й, 2-й или 3-й), предварительным сглаживанием скользящей средней и динамической фильтрацией по стандартному отклонению. Индикатор отображает основной фильтр и линии трендов, определяя направление движения цены.
Поддерживается многотаймфреймный режим: индикатор получает данные с указанного таймфрейма через iCustom и при необходимости интерполирует результаты на текущий график. Доступны режимы цветовой индикации трендов, звуковые оповещения и предупреждения при смене направления тренда.
Индикатор работает на графике и в подокне, использует пять буферов для отрисовки. Встроенные функции PlaySound и Alert обеспечивают уведомления о сигналах смены тренда при выполнении заданных условий.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, с которого берутся данные для расчёта индикатора. По умолчанию — текущий график. |
| Price | Режим цены для расчётов: 0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted. |
| Order | Порядок фильтра: 1 — экспоненциальное скользящее среднее (EMA), 2 — фильтр второго порядка, 3 — фильтр третьего порядка. |
| FilterPeriod | Период фильтра — целочисленный параметр, определяющий длину окна сглаживания низкочастотного фильтра. |
| PreSmooth | Период предварительного сглаживания — количество баров для расчёта скользящей средней перед применением фильтра. |
| PreSmoothMode | Режим предварительного сглаживания: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA. |
| PctFilter | Динамический фильтр в виде множителя стандартного отклонения. При значении больше нуля активируется фильтрация по волатильности. |
| ColorMode | Переключатель цветового режима индикатора. При включении линии трендов отображаются разными цветами в зависимости от направления. |
| ColorBarBack | Определяет отображение фоновых баров при цветовом режиме (0 или 1). |
| AlertMode | Включает или отключает звуковое оповещение (0 — выключено, 1 — включено). При срабатывании условия отправляется звуковой сигнал. |
| WarningMode | Включает или отключает звуковое предупреждение (0 — выключено, 1 — включено). Срабатывает при смене направления тренда. |
| Interpolate | Переключатель интерполяции в многотаймфреймном режиме. При включении значения фильтра интерполируются между барами текущего таймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 clrYellow
#property indicator_color2 clrLightBlue
#property indicator_color3 clrLightBlue
#property indicator_color4 clrTomato
#property indicator_color5 clrTomato
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame
extern ENUM_APPLIED_PRICE Price = 0; //Price mode : 0-Close,1-Open,2-High,3-Low,4-Median,5-Typical,6-Weighted
extern int Order = 3; //Filter Order: 1-EMA,2-2nd Order,3-3rd Order
extern int FilterPeriod =14; //Filter Period
extern int PreSmooth = 1; //Pre-smoothing period
extern int PreSmoothMode = 0; //Pre-smoothing MA Mode: 0-SMA,1-EMA,2-SMMA,3-LWMA
extern double PctFilter = 0; //Dynamic filter in decimal(multiplier for StdDev)
extern bool ColorMode = 0; //Color mode true/false
extern int ColorBarBack = 1; //Should be 0 or 1
extern int AlertMode = 0; //Sound Alert switch (0-off,1-on)
extern int WarningMode = 0; //Sound Warning switch(0-off,1-on)
input bool Interpolate = true; // Interpolate in mtf mode
double Filter[];
double UpTrend[];
double DnTrend[];
double Smoother[];
double trend[];
double Del[];
double AvgDel[],valda[],valdb[],valua[],valub[],count[];
int draw_begin;
bool UpTrendAlert=false, DownTrendAlert=false;
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,Price,Order,FilterPeriod,PreSmooth,PreSmoothMode,PctFilter,ColorMode,ColorBarBack,AlertMode,WarningMode,_buff,_ind)
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = fmin(Bars-counted_bars,Bars-1); count[0] = limit;
if (TimeFrame != Period())
{
limit = (int)MathMax(limit,MathMin(Bars-1,_mtfCall(9,0)*TimeFrame/_Period));
if (ColorMode && trend[limit]==-1) CleanPoint(limit,Bars,valda,valdb);
if (ColorMode && trend[limit]== 1) CleanPoint(limit,Bars,valua,valub);
for(int i=limit; i>=0 && !_StopFlag; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
Filter[i] = _mtfCall(0,y);
trend[i] = _mtfCall(6,y);
valda[i] = valdb[i] = valua[i] = valub[i] = EMPTY_VALUE;
if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;
#define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
int n,k; datetime btime = iTime(NULL,TimeFrame,y);
for(n = 1; (i+n)<Bars && Time[i+n] >= btime; n++) continue;
for(k = 1; k<n && (i+n)<Bars && (i+k)<Bars; k++) _interpolate(Filter);
}
for (i=limit; i >= 0; i--)
{
if (ColorMode && trend[i]==-1) PlotPoint(i,Bars,valda,valdb,Filter);
if (ColoПоказано первые 50% кода (символов: 6292)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.