Leader of the MACD
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «leader of the macd - mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
«Leader of the MACD» — это пользовательский индикатор для MetaTrader 4, работающий в отдельном окне с семью буферами. Он строит гистограммы и линии на основе модифицированных расчётов MACD, используя экспоненциальные скользящие средние с настраиваемыми периодами быстрой, медленной и сигнальной EMA.
Индикатор поддерживает мультитаймфрейм (MTF) режим: через вызовы iCustom он запрашивает рассчитанные значения того же индикатора на другом таймфрейме и отображает их на текущем графике. При включённой интерполяции значения линейно заполняются между барами целевого таймфрейма для более плавной визуализации.
Цветовая индикация может основываться на направлении наклона MACD или на пересечении MACD со сигнальной линией, что выбирается параметром ColorOnSlope. Гистограммы отображают положительные и отрицательные значения лидерской линии отдельно.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | TimeFrame — Таймфрейм, на котором рассчитываются данные индикатора (например, M1, H1, D1 или current time frame). |
| FastEMA | FastEMA — Период быстрой экспоненциальной скользящей средней, используемой в расчёте MACD. |
| SlowEMA | SlowEMA — Период медленной экспоненциальной скользящей средней, используемой в расчёте MACD. |
| SignalEMA | SignalEMA — Период сигнальной экспоненциальной скользящей средней, применяемой для сглаживания MACD. |
| Price | Price — Тип цены, используемой при расчёте индикатора (например, PRICE_CLOSE). |
| ColorOnSlope | ColorOnSlope — Если true, цвет определяется по направлению наклона MACD; если false — по пересечению MACD и сигнальной линии. |
| Interpolate | Interpolate — Если true, значения интерполируются между барами целевого таймфрейма для сглаживания отображения на текущем графике. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 C'216,234,243'
#property indicator_color2 MistyRose
#property indicator_color3 DarkGray
#property indicator_color4 DeepSkyBlue
#property indicator_color5 PaleVioletRed
#property indicator_color6 PaleVioletRed
#property indicator_color7 DarkGray
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_style7 STYLE_DOT
extern string TimeFrame = "current time frame";
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalEMA = 9;
extern int Price = PRICE_CLOSE;
extern bool ColorOnSlope = false;
extern bool Interpolate = true;
double macd[];
double macdda[];
double macddb[];
double leader[];
double leaderhu[];
double leaderhd[];
double signal[];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
double work[][5];
#define _ema10 0
#define _ema11 1
#define _ema20 2
#define _ema21 3
#define _color 4
int start()
{
// код доступен только после оплаты
}
int i,r,counted_bars=IndicatorCounted();
if (counted_bars>0) counted_bars--;
int limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { leaderhu[0] = limit+1; return(0); }
if (ArrayRange(work,0) != Bars) ArrayResize(work,Bars);
if (calculateValue || timeFrame==Period())
{
if (work[Bars-limit-1][_color]==-1) CleanPoint(limit,macdda,macddb);
double fastAlpha = 2.0/(1.0+FastEMA);
double slowAlpha = 2.0/(1.0+SlowEMA);
double signalAlpha = 2.0/(1.0+SignalEMA);
for(i=limit, r=Bars-i-1; i>=0; i--,r++)
{
double price = iMA(NULL,0,1,0,MODE_SMA,Price,i);
work[r][_color] = work[r-1][_color];
work[r][_ema10] = work[r-1][_ema10]+fastAlpha*(price -work[r-1][_ema10]);
work[r][_ema11] = work[r-1][_ema11]+fastAlpha*(price-work[r][_ema10]-work[r-1][_ema11]);
work[r][_ema20] = work[r-1][_ema20]+slowAlpha*(price -work[r-1][_ema20]);
work[r][_ema21] = work[r-1][_ema21]+slowAlpha*(price-work[r][_ema20]-work[r-1][_ema21]);
macd[i] = work[r][_ema10]-work[r][_ema20];
leader[i] = work[r][_ema11]-work[r][_ema21]+macd[i];
signal[i] = signal[i+1]+signalAlpha*(macd[i]-signal[i+1]);
leaderhu[i] = EMPTY_VALUE;
leaderhd[i] = EMPTY_VALUE;
macdda[i] = EMPTY_VALUE;
macddb[i] = EMPTY_VALUE;
if (leader[i] > 0) leaderhu[i] = leader[i];
if (leader[i] < 0) leaderhd[i] = leader[i];
if (ColorOnSlope)
{
if (macd[i]>macd[i+1]) work[r][_color] = 1;
if (macd[i]<macd[i+1]) work[r][_color] = -1;
}
else
{
if (macd[i]>signal[i]) work[r][_color] = 1;
if (macd[i]<signal[i]) work[r][_color] = -1;
}
if (work[r][_color]==-1) PlotPoint(i,macdda,macddb,macd);
}
return(0);
}
limit = MathMax(limit,MathMin(Bars,iCustoПоказано первые 50% кода (символов: 5673)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.