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

SIGNAL ARROW

signal arrow.mq5
Вы автор или правообладатель?

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

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

О программе

Индикатор SIGNAL ARROW отображает на графике стрелки сигналов BUY и SELL, основываясь на совпадении направления свечей на текущем таймфрейме и пяти старших таймфреймах. Если на всех анализируемых таймфреймах свечи бычьи (открытие ниже закрытия), рисуется синяя стрелка покупки; если медвежьи — красная стрелка продажи.

Индикатор также поддерживает уведомления: при появлении нового сигнала на нулевом баре вызывается функция оповещения с информацией о символе, таймфрейме и типе сигнала. На графике отображаются метки с информацией о порядке таймфреймов.

Логика расчёта использует вспомогательные функции для определения следующего старшего таймфрейма и форматирования его названия. При удалении индикатора с графика все созданные объекты-метки очищаются.

Получить полный код

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

#property version   "1.03"
#property description "The indicator gives a signal when candles match with several TF"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_color1  clrRed
#property  indicator_color2  clrLime

double     SignalBufferRed[];
double     SignalBufferBlue[];
datetime TimeAlert=0;
int tf0,tf1,tf2,tf3,tf4,tf5;
int S=0;

int OnInit()
  {
      // код доступен только после оплаты
   }

int OnCalculate(const int rates_total,
                const int prev_calculated,// обработано баров на предыдущем вызове 
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      // код доступен только после оплаты
   }
   int i,limit;

   limit=rates_total-prev_calculated-1;
   if (limit<0) limit=0;
   if(rates_total<1) return(0);
   double d=(high[1]-low[1]+high[2]-low[2])/2;
   for(i=limit; i>=0; i--)
     {
      if(S<1 && open[i]<close[i] && 
         iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))<iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)) && 
         iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))<iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)) && 
         iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))<iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)) && 
         iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))<iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)) && 
         iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))<iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)))
        {
         SignalBufferBlue[i]=low[i]-d;
         if(i==0 && TimeAlert!=time[i]) Alert(Symbol(), (" M"), Period(), "  SIGNAL ARROW  : BUY!");
         TimeAlert=time[i];
         S=1;
        }
      if(S>-1 && open[i]>close[i] && 
         iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))>iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)) && 
         iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))>iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)) && 
         iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))>iClose(NULL,tf3,iBarShift(NULL,tf3,

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

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

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

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

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

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

Стоимость полного кода
415,70₽ ≈ $5.08