← К каталогу
Исходный код · ID 936

cci zones.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный продукт представляет собой индикатор для MetaTrader 5, который рассчитывает значение CCI (индекс канала товара) и отображает зоны изменения его направления на графике в виде цветных прямоугольников. При переходе CCI из отрицательной зоны в положительную или наоборот индикатор рисует объекты-прямоугольники с заданными цветами.

Индикатор поддерживает работу на различных таймфреймах: если текущий таймфрейм отличается от заданного, он запускает пользовательский сценарий расчёта через iCustom. Также доступны уведомления о смене тренда CCI — в виде pop-up сообщений, звуковых сигналов и email-рассылки.

Настройки включают период и тип цены для расчёта CCI, цвета зон, уникальный идентификатор объектов и параметры уведомлений. Удаление всех созданных объектов происходит при деинициализации индикатора.

Настройки программы

НастройкаОписание
TimeFrame Таймфрейм, на котором выполняется расчёт индикатора. Если отличается от текущего графика, расчёт выполняется через iCustom на указанном таймфрейме.
CCIPeriod Период расчёта индекса CCI, используемый во внутренней функции iCCI.
CCIPrice Тип цены, применяемый для расчёта CCI (например, типичная цена).
UniqueID Уникальный идентификатор, используемый для именования создаваемых графических объектов на графике.
ColorUp Цвет прямоугольников, отображающих зону, где CCI положительный.
ColorDown Цвет прямоугольников, отображающих зону, где CCI отрицательный.
alertsOn Главный переключатель, включающий или отключающий все уведомления индикатора.
alertsOnCurrent Определяет, на каком баре отслеживается смена тренда: на текущем (0) или на предыдущем (1).
alertsMessage Включает или отключает отправку pop-up сообщений при смене тренда CCI.
alertsSound Включает или отключает звуковое уведомление при смене тренда CCI.
alertsEmail Включает или отключает отправку email-уведомлений при смене тренда CCI.
Dummy Вспомогательный числовой параметр, используемый для управления временным условием отрисовки при совпадении таймфреймов.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

extern string TimeFrame        = "current time frame";
extern int    CCIPeriod        = 55;
extern int    CCIPrice         = PRICE_TYPICAL;
extern string UniqueID         = "CCI zones";
extern color  ColorUp          = PaleGreen;
extern color  ColorDown        = C'249,200,225';
extern bool   alertsOn         = false;
extern bool   alertsOnCurrent  = true;
extern bool   alertsMessage    = true;
extern bool   alertsSound      = false;
extern bool   alertsEmail      = false;
extern double Dummy            = -1;

double colors[];

int    timeFrame;
string indicatorFileName;

int init()
{
      // код доступен только после оплаты
   }
int deinit()
{
   string lookFor       = UniqueID+":";
   int    lookForLength = StringLen(lookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   int i,counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);

         datetime tDummy = Dummy;
         if (timeFrame!=Period()) 
         { 
            iCustom(NULL,timeFrame,indicatorFileName,"",CCIPeriod,CCIPrice,UniqueID,ColorUp,ColorDown,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,Time[0],0,0); 
            return(0); 
         }
         else if (Dummy<=Time[0]) tDummy = Time[0];
         static bool secondTime=false;
         if (secondTime)
         {
            int count=0;
            for (;limit<Bars; limit++) if (colors[limit]!=colors[limit+1]) { count++; if (count>1) break; }
         }
         else secondTime=true;

      double MaxValue = High[0]*10.0;   
      for(i = limit; i>=0 ; i--)
      {
         if (i>Bars-2) continue;

         double cci = iCCI(NULL,0,CCIPeriod,CCIPrice,i);
         colors[i]  = colors[i+1];

               if (cci>0) colors[i] =  1;
               if (cci<0) colors[i] = -1;
               for (int index=i; in

Показано первые 50% кода (символов: 3239)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
323,90₽ ≈ $3.96