Leader MACD
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «leadermacd.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Leader MACD — пользовательский индикатор для MetaTrader 5, реализующий модифицированную версию индикатора MACD с дополнительной «лидерной» линией. Индикатор рассчитывает разницу между быстрой и медленной экспоненциальными скользящими средними и дополняет её сглаженным компонентом, формируя четыре буфера отображения: MACD, Leader, Signal и OSMA (гистограмма).
Индикатор поддерживает работу на различных таймфреймах, включая интерполяцию данных старших таймфреймов на текущий график. Доступны два специальных режима работы — returnBars и CalculateValue — которые используются для корректного отрисовывания на мультитаймфреймных графиках.
В основе расчёта лежат экспоненциальные скользящие средние с настраиваемыми периодами, а также механизм сглаживания сигнальной линии. Линия Leader добавляет опережающий компонент к стандартному MACD, что позволяет анализировать ускорение изменения цены. Индикатор отображается в отдельном окне.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, на котором рассчитывается индикатор. Поддерживается выбор стандартных таймфреймов или специальные режимы returnBars и CalculateValue. По умолчанию: текущий таймфрейм. |
| FastEMA | Период экспоненциальной скользящей средней быстрого уровня. Определяет чувствительность быстрой компоненты индикатора. По умолчанию: 12. |
| SlowEMA | Период экспоненциальной скользящей средней медленного уровня. Определяет медленную компоненту индикатора. По умолчанию: 26. |
| SignalEMA | Период экспоненциальной скользящей средней для сглаживания сигнальной линии. По умолчанию: 9. |
| Price | Тип цены, используемой в расчётах индикатора. По умолчанию: PRICE_CLOSE (цена закрытия). |
| SignalOnLeader | Определяет способ расчёта сигнальной линии. Если включено — сигнал рассчитывается на основе линии Leader, если отключено — на основе стандартной линии MACD. По умолчанию: отключено. |
| ShowMACD | Отображает или скрывает линию MACD на графике. При отключении линия Leader принудительно включается. По умолчанию: включено. |
| ShowSignal | Отображает или скрывает сигнальную линию и гистограмму OSMA. По умолчанию: включено. |
| Interpolate | Включает или отключает интерполяцию значений индикатора при отображении на графике с таймфреймом, отличным от исходного. По умолчанию: включено. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 DeepSkyBlue
#property indicator_color2 OrangeRed
#property indicator_color3 Goldenrod
#property indicator_color4 Gray
#property indicator_width1 2
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 SignalOnLeader = false;
extern bool ShowMACD = true;
extern bool ShowSignal = true;
extern bool Interpolate = true;
double macd[];
double leader[];
double signal[];
double osma[];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
double tBuffer[][5];
#define iFastEma 0
#define iSlowEma 1
#define iFastEmx 2
#define iSlowEmx 3
#define iSmoothl 4
int start()
{
// код доступен только после оплаты
}
int i,r,limit;
int counted_bars=IndicatorCounted();
if (counted_bars>0) counted_bars--;
limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { macd[0] = limit+1; return(0); }
if (calculateValue || timeFrame == Period())
{
if (ArrayRange(tBuffer,0) != Bars) ArrayResize(tBuffer,Bars);
double alphaFast = 2.0 / (1.0+FastEMA);
double alphaSlow = 2.0 / (1.0+SlowEMA);
double alphaSign = 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);
tBuffer[r][iFastEma] = iMA(NULL,0,FastEMA,0,MODE_EMA,Price,i);
tBuffer[r][iSlowEma] = iMA(NULL,0,SlowEMA,0,MODE_EMA,Price,i);
tBuffer[r][iFastEmx] = tBuffer[r-1][iFastEmx] + alphaFast*(price-tBuffer[r][iFastEma]-tBuffer[r-1][iFastEmx]);
tBuffer[r][iSlowEmx] = tBuffer[r-1][iSlowEmx] + alphaSlow*(price-tBuffer[r][iSlowEma]-tBuffer[r-1][iSlowEmx]);
leader[i] = tBuffer[r][iFastEma] + tBuffer[r][iFastEmx] - tBuffer[r][iSlowEma] - tBuffer[r][iSlowEmx];
tBuffer[r][iSmoothl] = tBuffer[r-1][iSmoothl] + alphaSign*(leader[i] - tBuffer[r-1][iSmoothl]);
macd[i] = tBuffer[r][iFastEma]-tBuffer[r][iSlowEma];
if (ShowSignal) Показано первые 50% кода (символов: 4335)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.