В данной задаче все сообщения являются взаимоисключающими, т.е. невозможна
ситуация, при которой возникает необходимость вывести на экран одновременно два или
более сообщений. Поэтому в данном случае можно использовать всего один графический
объект, постоянно присутствующий на экране, и по мере необходимости изменять
выводимый текст. Отобразим объект в правом верхнем углу окна финансового
инструмента, в котором будет работать эксперт. Поскольку положение объекта по ходу
торгов менять не предполагается, то удобно использовать объект типа OBJ_LABEL, т.к.
он позиционируется относительно окна финансового инструмента.
В качестве решения Задачи 32 рассмотрим эксперт grafobjects.mq4, использующий
графический объект OBJ_LABEL:
//--------------------------------------------------------------------
// grafobjects.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start() // Спец. функция start
{
//--------------------------------------------------------------- 1 --
int Sit;
double MACD_M_0,MACD_M_1, // Главная линия, 0 и 1 бар
MACD_S_0,MACD_S_1; // Сигнальная линия, 0 и 1 бар
string Text[4]; // Объявление строков. массива
color Color[4]; // Объявление массива цветов
Text[0]= "Открытие Buy"; // Текст для различных ситуаций
Text[1]= "Открытие Sell";
Text[2]= "Удерживаем Buy";
Text[3]= "Удерживаем Sell";
Color[0]= DeepSkyBlue; // Цвет объекта ..
Color[1]= LightPink; // .. для различных ситуаций
Color[2]= Yellow;
Color[3]= Yellow;
//--------------------------------------------------------------- 2 --
ObjectCreate("Label_Obj_MACD", OBJ_LABEL, 0, 0, 0);// Создание объ.
ObjectSet("Label_Obj_MACD", OBJPROP_CORNER, 1); // Привязка угол
ObjectSet("Label_Obj_MACD", OBJPROP_XDISTANCE, 10);// Координата Х
ObjectSet("Label_Obj_MACD", OBJPROP_YDISTANCE, 15);// Координата Y
//--------------------------------------------------------------- 3 --
MACD_M_0 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); // 0 бар
MACD_S_0 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);// 0 бар
MACD_M_1 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); // 1 бар
MACD_S_1 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);// 1 бар
773