Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 3195
- Рейтинг:
- Опубликован:
- 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 с возможностью изменения таймфрейма индикатора во входных параметрах.

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

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

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