//-------------------------------------------------------------------- // charts.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //--------------------------------------------------------------- 1 -- int Win_Mom_old=0, // Старый номер подокна Moment. Win_RSI_old=0; // Старый номер подокна RSI color Color[5]; // Объявление массива цветов string Text[5]; // Объявление строков. массива //--------------------------------------------------------------- 2 -- int init() // Спец. функция init() { Win_RSI_old=0; // Технический момент Win_Mom_old=0; // Технический момент Text[0]= "RSI(14) ниже 30. Buy"; // Тексты для ситуаций RSI Text[1]= "RSI(14) выше 70. Sell"; // Тексты для ситуаций RSI Text[2]= "RSI(14) между 30 и 70"; // Тексты для ситуаций RSI Text[3]= "Моментум(14) повышается"; // Тексты для ситуаций Моментум Text[4]= "Моментум(14) снижается"; // Тексты для ситуаций Моментум Color[0]= DeepSkyBlue; // Цвет объектов для .. Color[1]= LightPink; // .. различных ситуаций .. Color[2]= Orange; // .. индикатора RSI Color[3]= Color[0]; // Те же цвета для Моментум Color[4]= Color[1]; // Те же цвета для Моментум Create_RSI(0); // Создание первого объекта Create_Mom(0); // Создание второго объекта Main(); // Вызов пользовательской ф-ии return; // Выход из init() } //--------------------------------------------------------------- 3 -- int start() // Спец. функция start { Main(); // Вызов пользовательской ф-ии return; // Выход из start() } //--------------------------------------------------------------- 4 -- int deinit() // Спец. функция deinit() { ObjectDelete("Obj_RSI"); // Удаление объекта ObjectDelete("Obj_Mom"); // Удаление объекта return; // Выход из deinit() } //--------------------------------------------------------------- 5 -- int Main() // Пользовательская функция { int // Целые переменные Win_RSI_new=0, // Новый номер подокна RSI Win_Mom_new=0, // Новый номер подокна Moment. Ind_RSI, Ind_Mom; // Индексы для ситуаций double // Действительные переменные RSI, // Значение RSI на 0 баре Mom_0, Mom_1; // Значение Mom на 0 и 1 барах //--------------------------------------------------------------- 6 -- RSI=iRSI(NULL,0,14,PRICE_CLOSE,0); // RSI(14) на нулевом баре Ind_RSI=2; // RSI между уровнями 30 и 70 if(RSI < 30)Ind_RSI=0; // RSI внизу. Нужно покупать if(RSI > 70)Ind_RSI=1; // RSI вверху. Нужно продавать //--------------------------------------------------------------- 7 -- Win_RSI_new=WindowFind("RSI(14)"); // Номер окна индикатора RSI if(Win_RSI_new==-1) Win_RSI_new=0; // Если нет индик, то осн. окно if(Win_RSI_new!=Win_RSI_old) // Удалено или установлено .. { // .. окно индикатора RSI ObjectDelete("Obj_RSI"); // Удаление объекта Create_RSI(Win_RSI_new); // Создаём объект в нужном окне Win_RSI_old=Win_RSI_new; // Запомним это окно } // Изменяем текстовое описание: ObjectSetText("Obj_RSI",Text[Ind_RSI],10,"Arial",Color[Ind_RSI]); //--------------------------------------------------------------- 8 -- Mom_0=iMomentum(NULL,0,14,PRICE_CLOSE,0);// Значен. на нулевом баре Mom_1=iMomentum(NULL,0,14,PRICE_CLOSE,1);// Знач. на предыдущ. баре if(Mom_0 >=Mom_1)Ind_Mom=3; // Индик. линия поднимается if(Mom_0 < Mom_1)Ind_Mom=4; // Индик. линия опускается //--------------------------------------------------------------- 9 -- Win_Mom_new=WindowFind("Momentum(14)");// Номер окна индик. Momen if(Win_Mom_new==-1) Win_Mom_new=0; // Если нет индик, то осн. окно if(Win_Mom_new!=Win_Mom_old) // Удалено или установлено .. { // .. окно индикатора Momentum ObjectDelete("Obj_Mom"); // Удаление объекта Create_Mom(Win_Mom_new); // Создаём объект в нужном окне Win_Mom_old=Win_Mom_new; // Запомним это окно } // Изменяем текстовое описание: ObjectSetText("Obj_Mom",Text[Ind_Mom],10,"Arial",Color[Ind_Mom]); //-------------------------------------------------------------- 10 -- WindowRedraw(); // Перерисовка изображения return; // Выход из пользоват. функции } //-------------------------------------------------------------- 11 -- int Create_RSI(int Win) // Пользовательс ф-ия { // ..создания объекта ObjectCreate("Obj_RSI",OBJ_LABEL, Win, 0,0); // Создание объекта ObjectSet("Obj_RSI", OBJPROP_CORNER, 0); // Привязка к углу ObjectSet("Obj_RSI", OBJPROP_XDISTANCE, 3); // Координата Х if (Win==0) ObjectSet("Obj_RSI",OBJPROP_YDISTANCE,20);// Координата Y else ObjectSet("Obj_RSI",OBJPROP_YDISTANCE,15);// Координата Y return; // Выход из польз.ф-ии } //-------------------------------------------------------------- 12 -- int Create_Mom(int Win) // Пользовательс ф-ия { // ..создания объекта ObjectCreate("Obj_Mom",OBJ_LABEL, Win, 0,0); // Создание объекта ObjectSet("Obj_Mom", OBJPROP_CORNER, 0); // Привязка к углу ObjectSet("Obj_Mom", OBJPROP_XDISTANCE, 3); // Координата Х if (Win==0) ObjectSet("Obj_Mom",OBJPROP_YDISTANCE, 5);// Координата Y else ObjectSet("Obj_Mom",OBJPROP_YDISTANCE,15);// Координата Y return; // Выход из польз.ф-ии } //-------------------------------------------------------------- 13 --