one_more_average_ribbon_nmc.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «one_more_average_ribbon_nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный файл является пользовательским индикатором для MetaTrader 5, который отображает на графике две сглаженные линии, построенные по ценам закрытия. Линии рассчитываются с использованием адаптивного сглаживания, параметры которого задаются пользователем. Индикатор рисует гистограмму в отдельном окне графика и может подавать уведомления при пересечении линий.
Индикатор поддерживает работу на текущем или заданном таймфрейме, а также имеет режимы возврата количества баров и расчёта значений без отображения. При работе на старшем таймфрейме возможно применение интерполяции для отрисовки линий на младшем таймфрейме.
Уведомления могут выводиться в виде всплывающего сообщения, звукового сигнала или письма на email при смене направления тренда, определяемого взаимным расположением двух линий. Все параметры настраиваются через входные переменные.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Может быть задан строкой (например, "M15", "H1") или специальными значениями "returnBars" и "calculateValue". |
| Oma1Period | Период первой линии — Период сглаживания для первой линии индикатора. |
| Oma1Speed | Скорость первой линии — Параметр скорости сглаживания для первой линии. |
| Oma1Price | Цена первой линии — Тип цены, используемый для расчёта первой линии (например, PRICE_CLOSE). |
| Oma1Adaptive | Адаптивность первой линии — Включает или отключает адаптивный режим сглаживания для первой линии. |
| Oma2Period | Период второй линии — Период сглаживания для второй линии индикатора. |
| Oma2Speed | Скорость второй линии — Параметр скорости сглаживания для второй линии. |
| Oma2Price | Цена второй линии — Тип цены, используемый для расчёта второй линии (например, PRICE_CLOSE). |
| Oma2Adaptive | Адаптивность второй линии — Включает или отключает адаптивный режим сглаживания для второй линии. |
| Interpolate | Интерполяция — Включает или отключает интерполяцию линий индикатора при работе на старшем таймфрейме. |
| alertsOn | Включить уведомления — Включает или отключает все уведомления о пересечении линий. |
| alertsOnCurrent | Уведомления на текущем баре — Определяет, проверять ли пересечение на текущем (незакрытом) баре или на предыдущем закрытом баре. |
| alertsMessage | Всплывающие сообщения — Включает или отключает всплывающие сообщения при пересечении линий. |
| alertsSound | Звуковой сигнал — Включает или отключает звуковой сигнал при пересечении линий. |
| alertsEmail | Уведомления по email — Включает или отключает отправку уведомлений по электронной почте при пересечении линий. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DodgerBlue
#property indicator_color2 HotPink
#property indicator_color3 Aqua
#property indicator_color4 Yellow
#property indicator_width1 20
#property indicator_width2 20
#property indicator_width3 1
#property indicator_width4 1
extern string TimeFrame = "current time frame";
extern double Oma1Period = 20.55;
extern double Oma1Speed = 2.0;
extern int Oma1Price = PRICE_CLOSE;
extern bool Oma1Adaptive = true;
extern double Oma2Period = 50.85;
extern double Oma2Speed = 0.0;
extern int Oma2Price = PRICE_CLOSE;
extern bool Oma2Adaptive = true;
extern bool Interpolate = true;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double buffer1[];
double buffer2[];
double buffer3[];
double buffer4[];
double trend[];
string indicatorFileName;
int timeFrame;
bool calculateValue;
bool returnBars;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int limit,i;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { buffer1[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
for(i=limit; i>=0; i--)
{
buffer1[i] = iSmooth(iMA(NULL,0,1,0,MODE_SMA,Oma1Price,i),Oma1Period,Oma1Speed,Oma1Adaptive,i,0);
buffer2[i] = iSmooth(iMA(NULL,0,1,0,MODE_SMA,Oma2Price,i),Oma2Period,Oma2Speed,Oma2Adaptive,i,7);
buffer3[i] = buffer1[i];
buffer4[i] = buffer2[i];
trend[i] = trend[i+1];
if (buffer1[i]>buffer2[i]) trend[i] = 1;
if (buffer1[i]<buffer2[i]) trend[i] = -1;
}
if (!calculateValue) manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Oma1Period,Oma1Speed,Oma1Price,Oma1Adaptive,Oma2Period,Oma2Speed,Oma2Price,Oma2Adaptive,0,y);
buffer2[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Oma1Period,Oma1Speed,Oma1Price,Oma1Adaptive,Oma2Period,Oma2Speed,Oma2Price,Oma2Adaptive,1,y);
buffer3[i] = buffer1[i];
buffer4[i] = buffer2[i];
trend[i] = trend[i+1];
if (buffer1[i]>buffer2[i]) trend[i] = 1;
if (buffer1[i]<buffer2[i]) trend[i] = -1;
if (timeFrame <= Period() || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;
if (!Interpolate) continue;
datetime time = iTime(NULL,timeFrame,y);
for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;
double factor = 1.0 / n;
for(int k = 1; k < n; k++)
{
buffer1[i+k] = k*factor*buffer1[i+n] + (1.0-k*factor)*buffer1[i];
Показано первые 50% кода (символов: 5907)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.