Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Color Day - индикатор для MetaTrader 5

Просмотров:
2969
Рейтинг:
(22)
Опубликован:
2016.09.21 17:13
Обновлен:
2016.11.22 07:32
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Индикатор Color Day обозначает цветом бычий или медвежий день.

Если цена закрытия дня больше цены открытия, закрашиваем синим цветом (задается в настройках).

input color UP = Blue;  // цвет бычьего дня 

Если цена закрытия дня меньше цены открытия, закрашиваем красным цветом (задается в настройках).

input color DN = Red;   // цвет медвежьего дня

Копируем цены открытия, закрытия и время открытия для указанного количества дней Days:

CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

в соответствующие массивы:

datetime tm[];
double op[];
double cl[];

Перед установкой индикатора на график укажем размерность массивов:

int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }

Присвоим переменным значения ячеек массива и определим время закрытия дня time1:

datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

С помощью функции PutRect():

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- создадим прямоугольник по заданным координатам
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- установим цвет прямоугольника
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- включим (true) или отключим (false) режим заливки прямоугольника 
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }

Закрасим день в зависимости от того, куда пошла цена:

if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

В цикле пройдем по всем дням, указанным в настройках Days:

for(int i=0;i<=Days;i++)
     {
      CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

      datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

      if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

При удалении индикатора с графика, с помощью функции DeleteObjects():

void DeleteObjects()
  {
   for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--)
     {
      string name=ObjectName(0,i,0,OBJ_RECTANGLE);
      if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name);
     }
  }


Удалим созданные объекты с графика:

void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }

Настройки:

input int   Days = 11;  // дней для расчета
input color UP = Blue;  // цвет бычьего дня 
input color DN = Red;   // цвет медвежьего дня

Рис 1. Индикатор на графике


Советы:

  • Индикатор Color Day — визуальный помощник в торговле.
si_q_asi_HTF si_q_asi_HTF

Индикатор si_q_asi с возможностью изменения таймфрейма индикатора во входных параметрах.

Bear_Bulls_Power_HTF Bear_Bulls_Power_HTF

Индикатор Bear_Bulls_Power с возможностью изменения таймфрейма индикатора во входных параметрах.

ColorJSatl_Digit_HTF ColorJSatl_Digit_HTF

Индикатор ColorJSatl_Digit с возможностью изменения таймфрейма индикатора во входных параметрах.

BalanceOfPower_Histogram_Alert BalanceOfPower_Histogram_Alert

Индикатор Balance of Power (BOP) в виде цветной гистограммы силы и направления действующего тренда с подачей алертов, с отправкой почтовых сообщений и push-сообщений на смартфон.