Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2016.09.21 17:13
Индикаторы

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

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
800
Рейтинг:
голосов: 14

Индикатор 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-сообщений на смартфон.