digital 30 mashek podval.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «digital 30 mashek podval.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает модифицированную скользящую среднюю на основе алгоритма Hull MA с дополнительным сглаживанием и анализом тренда. Поддерживает 30 методов расчёта скользящих средних, различные типы ценовых данных включая Heikin Ashi, а также работу с несколькими таймфреймами. Отображает три буфера: основную линию индикатора и две линии сегментов тренда, меняющие цвет при смене направления. Индикатор может отправлять уведомления (визуальные, звуковые и по электронной почте) при изменении тренда.
Расчёт основывается на многократном применении усредняющих функций к массиву цен с использованием коэффициента демпфирования для коррекции отклонений. При включённом режиме цветного отображения тренд определяется по соотношению значений текущей и предыдущей свечи, а сегменты тренда рисуются отдельными линиями. Параметр CountBars позволяет ограничить количество обрабатываемых баров для ускорения пересчёта.
Уведомления срабатывают при переходе тренда из одного состояния в другое (BUY/SELL сигналы). Звуковые оповещения воспроизводятся заданное количество раз с паузой между ними. Email-уведомления отправляются через встроенный функционал MetaTrader 5. Все настройки доступны в диалоге свойств индикатора и могут быть изменены пользователем без перекомпиляции.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, на котором рассчитывается индикатор. Если выбран текущий таймфрейм, индикатор работает на графике символа. |
| Price | Тип ценовых данных, используемый для расчёта индикатора: Close, Open, High, Low, Median, Typical и другие. |
| Length | Период расчёта основной скользящей средней, используемый в формуле индикатора. |
| DampingFactor(ex.0.7) (DampingFactor) | Коэффициент демпфирования, влияющий на сглаживание расчёта индикатора (например, 0.7). |
| Shift | Горизонтальный сдвиг индикатора в барах относительно текущего бара. |
| MA_Method | Метод расчёта скользящей средней: простой, экспоненциальный, линейно-взвешенный и другие из 30 доступных вариантов. |
| ShowInColor | Включает или отключает цветное отображение трендовых сегментов индикатора. |
| Number of bars counted: 0-all bars (CountBars) | Количество обрабатываемых баров: 0 — все бары, положительное значение — ограниченное количество. |
| Alerts | Текстовый разделитель для группы настроек уведомлений и email-оповещений. |
| AlertOn | Включает или отключает визуальные уведомления (алерты) при смене направления тренда. |
| Alert Shift:0-current bar,1-previous bar (AlertShift) | Сдвиг бара для проверки условия алерта: 0 — текущий бар, 1 — предыдущий бар. |
| Number of sounds after Signal (SoundsNumber) | Количество воспроизведений звукового сигнала при срабатывании алерта. |
| Pause in sec between sounds (SoundsPause) | Пауза в секундах между последовательными звуковыми сигналами. |
| UpSound | Путь к звуковому файлу, воспроизводимому при сигнале о восходящем тренде. |
| DnSound | Путь к звуковому файлу, воспроизводимому при сигнале о нисходящем тренде. |
| EmailOn | Включает или отключает отправку email-уведомлений при смене направления тренда. |
| EmailsNumber | Количество email-уведомлений, отправляемых при одном сигнале. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 clrTomato
#property indicator_width1 2
#property indicator_color2 clrDeepSkyBlue
#property indicator_width2 2
#property indicator_color3 clrDeepSkyBlue
#property indicator_width3 2
enum ENUM_MA_MODE
{
SMA, // Simple Moving Average
EMA, // Exponential Moving Average
Wilder, // Wilder Exponential Moving Average
LWMA, // Linear Weighted Moving Average
SineWMA, // Sine Weighted Moving Average
TriMA, // Triangular Moving Average
LSMA, // Least Square Moving Average (or EPMA, Linear Regression Line)
SMMA, // Smoothed Moving Average
HMA, // Hull Moving Average by Alan Hull
ZeroLagEMA, // Zero-Lag Exponential Moving Average
DEMA, // Double Exponential Moving Average by Patrick Mulloy
T3_basic, // T3 by T.Tillson (original version)
ITrend, // Instantaneous Trendline by J.Ehlers
Median, // Moving Median
GeoMean, // Geometric Mean
REMA, // Regularized EMA by Chris Satchwell
ILRS, // Integral of Linear Regression Slope
IE_2, // Combination of LSMA and ILRS
TriMAgen, // Triangular Moving Average generalized by J.Ehlers
VWMA, // Volume Weighted Moving Average
JSmooth, // Smoothing by Mark Jurik
SMA_eq, // Simplified SMA
ALMA, // Arnaud Legoux Moving Average
TEMA, // Triple Exponential Moving Average by Patrick Mulloy
T3, // T3 by T.Tillson (correct version)
Laguerre, // Laguerre filter by J.Ehlers
MD, // McGinley Dynamic
BF2P, // Two-pole modified Butterworth filter by J.Ehlers
BF3P, // Three-pole modified Butterworth filter by J.Ehlers
SuperSmu // SuperSmoother by J.Ehlers
};
enum ENUM_PRICE
{
close, // Close
open, // Open
high, // High
low, // Low
median, // Median
typical, // Typical
weightedClose, // Weighted Close
heikenAshiClose, // Heiken Ashi Close
heikenAshiOpen, // Heiken Ashi Open
heikenAshiHigh, // Heiken Ashi High
heikenAshiLow, // Heiken Ashi Low
heikenAshiMedian, // Heiken Ashi Median
heikenAshiTypical, // Heiken Ashi Typical
heikenAshiWeighted // Heiken Ashi Weighted Close
};
#define pi 3.14159265358979323846
input ENUM_TIMEFRAMES TimeFrame = 0;
input ENUM_PRICE Price = 0;
input int Length = 14;
input double DampingFactor = 1; // DampingFactor(ex.0.7)
input int Shift = 0;
input ENUM_MA_MODE MA_Method = LWMA;
input bool ShowInColor = true;
input int CountBars = 0; // Number of bars counted: 0-all bars
input string Alerts = "=== Alerts & Emails ===";
input bool AlertOn = false;
input int AlertShift = 1; // Alert Shift:0-current bar,1-previous bar
input int SoundsNumber = 5; // Number of sounds after Signal
input int SoundsPause = 5; // Pause in sec between sounds
input string UpSound = "alert.wav";
input string DnSound = "alert2.wav";
input bool EmailOn = false;
input int EmailsNumber = *;
double hMA[];
double upTrend1[];
double upTrend2[];
double iPrice[];
double htmp[];
double trend[];
double tmp[][3][2], ma[3][4];
int cBars, timeframe, draw_begin, masize, hmalen;
string IndicatorName, TF, short_name, maname;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int averageSize(int mode)
{
int arraysize;
switch(mode)
{
case 10: arraysize = 2; break;
case 11: arraysize = 6; break;
case 20: arraysize = 5; break;
case 23: arraysize = 4; break;
case 24: arraysize = 6; break;
case 25: arraysize = 4; break;
default: arraysize = 0; break;
}
return(arraysize);
}
datetime prevtime[3];
double allAveragesOnArray(int index,double& price[],int period,int mode,int arraysize,int cbars,int bar)
{
double MA[4];
if(mode == 1 || mode == 2 || mode == 7 || mode == 9 || mode == 10 || mode == 11 || mode == 12 || mode == 15 || mode == 20 || mode == 21 || (mode > 22 && mode < 30))
{
if(prevtime[index] != Time[bar])
{
ma[index][3] = ma[index][2];
ma[index][2] = ma[index][1];
ma[index][1] = ma[index][0];
if(arraysize > 0) for(int i=0;i<arraysize;i++) tmp[i][index][1] = tmp[i][index][0];
prevtime[index] = Time[bar];
}
if(mode == 12 || mode == 15 || mode == 21 || (mode > 26 && mode < 30)) for(i=0;i<4;i++) MA[i] = ma[index][i];
}
switch(mode)
{
case 1 : ma[index][0] = EMAOnArray(price[bar],ma[index][1],period,cbars,bar); break;
case 2 : ma[index][0] = WilderOnArray(price[bar],ma[index][1],period,cbars,bar); break;
case 3 : ma[index][0] = LWMAOnArray(price,period,bar); break;
case 4 : ma[index][0] = SineWMAOnArray(price,period,bar); break;
case 5 : ma[index][0] = TriMAOnArray(price,period,bar); break;
case 6 : ma[index][0] = LSMAOnArray(price,period,bar); break;
case 7 : ma[index][0] = SMMAOnArray(price,ma[index][1],period,cbars,bar); break;
case 8 : ma[index][0] = HMAOnArray(price,period,cbars,bar); break;
case 9 : ma[index][0] = ZeroLagEMAOnArray(price,ma[index][1],period,cbars,bar); break;
case 10: ma[index][0] = DEMAOnArray(index,0,price[bar],period,1,cbars,bar); break;
case 11: ma[index][0] = T3_basicOnArray(index,0,price[bar],period,0.7,cbars,bar); break;
case 12: ma[index][0] = ITrendOnArray(price,MA,period,cbars,bar); break;
case 13: ma[index][0] = MedianOnArray(price,period,bar); break;
case 14: ma[index][0] = GeoMeanOnArray(price,period,cbars,bar); break;
case 15: ma[index][0] = REMAOnArray(price[bar],MA,period,0.5,cbars,bar); break;
case 16: ma[index][0] = ILRSOnArray(price,period,bar); break;
case 17: ma[index][0] = IE2OnArray(price,period,bar); break;
case 18: ma[index][0] = TriMA_genOnArray(price,period,bar); break;
case 19: ma[index][0] = VWMAOnArray(price,period,bar); break;
case 20: ma[index][0] = JSmoothOnArray(index,0,price[bar],period,1,cbars,bar); break;
case 21: ma[index][0] = SMA_eqOnArray(price,MA,period,cbars,bar); break;
case 22: ma[index][0] = ALMAOnArray(price,period,0.85,8,bar); break;
case 23: ma[index][0] = TEMAOnArray(index,price[bar],period,1,cbars,bar); break;
case 24: ma[index][0] = T3OnArray(index,0,price[bar],period,0.7,cbars,bar); break;
case 25: ma[index][0] = LaguerreOnArray(index,price[bar],period,4,cbars,bar); break;
case 26: ma[index][0] = McGinleyOnArray(price[bar],ma[index][1],period,cbars,bar); break;
case 27: ma[index][0] = BF2POnArray(price,MA,period,cbars,bar); break;
case 28: ma[index][0] = BF3POnArray(price,MA,period,cbars,bar); break;
case 29: ma[index][0] = SuperSmuOnArray(price,MA,period,cbars,bar); break;
default: ma[index][0] = SMAOnArray(price,period,bar); break;
}
return(ma[index][0]);
}
double SMAOnArray(double& array[],int per,int bar)
{
double sum = 0;
for(int i=0;i<per;i++) sum += aПоказано первые 50% кода (символов: 19939)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.