//+------------------------------------------------------------------+ //| TrackTrend.mq4 | //| Duke3DAtomic | //| duke3datomic@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window // Периоды таймфреймов: // 0 - период текущего графика // 1 - M1 // 2 - M5 // 3 - M15 // 4 - M30 // 5 - H1 // 6 - H4 // 7 - D1 // 8 - W1 // 9 - MN1 int LabelCorner = 0; extern int MACD_Fast = 12; extern int MACD_Slow = 26; extern int Signal_Period = 9; int MACD_Price = 0; // PRICE_CLOSE int MACD_Shift = 0; extern color color_Up; // Цвет указателя направления тренда вверх extern color color_Dn; // Цвет указателя направления тренда вниз extern color color_UpDn; // Цвет указателя направления тренда вверх, с последующим разворотом вниз extern color color_DnUp; // Цвет указателя направления тренда вниз, с последующим разворотом вверх extern color color_TimeFrame; // Цвет надписи таймфрейма double RSI_0; double RSI_1; int RSI_TimeFrame = 3; int RSI_Period = 14; int RSI_Price = 0; int RSI_Shift = 0; double ADX_Main; double ADX_Plus; double ADX_Minus; int ADX_TimeFrame = 3; int ADX_Period = 14; int ADX_Price = 0; int ADX_Shift = 0; extern int FontSize = 14; // Размер шрифта string Font = "Times New Roman"; //string MACD_Comm1[]; //string MACD_Comm2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators /*int i; for(i=1;i<=9;i++) { MACD_Comm1[i] = "Label1_"+i; GreatObjectLabel(MACD_Comm1[i], 10, i*FontSize+6); MACD_Comm2[i] = "Label2_"+i; GreatObjectLabel(MACD_Comm2[i], 50, i*FontSize+6); }*/ int interval = 10; GreatObjectLabel("Label1_1", 10, 1*FontSize+interval); GreatObjectLabel("Label1_2", 10, 2*FontSize+interval); GreatObjectLabel("Label1_3", 10, 3*FontSize+interval); GreatObjectLabel("Label1_4", 10, 4*FontSize+interval); GreatObjectLabel("Label1_5", 10, 5*FontSize+interval); GreatObjectLabel("Label1_6", 10, 6*FontSize+interval); GreatObjectLabel("Label1_7", 10, 7*FontSize+interval); GreatObjectLabel("Label1_8", 10, 8*FontSize+interval); GreatObjectLabel("Label1_9", 10, 9*FontSize+interval); GreatObjectLabel("Label2_1", 60, 1*FontSize+interval); GreatObjectLabel("Label2_2", 60, 2*FontSize+interval); GreatObjectLabel("Label2_3", 60, 3*FontSize+interval); GreatObjectLabel("Label2_4", 60, 4*FontSize+interval); GreatObjectLabel("Label2_5", 60, 5*FontSize+interval); GreatObjectLabel("Label2_6", 60, 6*FontSize+interval); GreatObjectLabel("Label2_7", 60, 7*FontSize+interval); GreatObjectLabel("Label2_8", 60, 8*FontSize+interval); GreatObjectLabel("Label2_9", 60, 9*FontSize+interval); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- /*int i; for(i=1;i<=9;i++) { ObjectDelete(MACD_Comm1[i]); ObjectDelete(MACD_Comm2[i]); }*/ ObjectDelete("Label1_1"); ObjectDelete("Label1_2"); ObjectDelete("Label1_3"); ObjectDelete("Label1_4"); ObjectDelete("Label1_5"); ObjectDelete("Label1_6"); ObjectDelete("Label1_7"); ObjectDelete("Label1_8"); ObjectDelete("Label1_9"); ObjectDelete("Label2_1"); ObjectDelete("Label2_2"); ObjectDelete("Label2_3"); ObjectDelete("Label2_4"); ObjectDelete("Label2_5"); ObjectDelete("Label2_6"); ObjectDelete("Label2_7"); ObjectDelete("Label2_8"); ObjectDelete("Label2_9"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { string MACD_comment1, MACD_comment2, MACD_comment3, MACD_comment4, MACD_comment5, MACD_comment6, MACD_comment7, MACD_comment8, MACD_comment9; string com1, com2, com3, com4; com1 = "Up"; com2 = "Down"; com3 = "Up->Down"; com4 = "Down->Up"; color_TimeFrame = White; color_Up = Lime; color_Dn = DeepPink; color_UpDn = DodgerBlue; color_DnUp = DodgerBlue; int limit, i; int counted_bars = IndicatorCounted(); //---- проверка на возможные ошибки if(counted_bars < 0) return(-1); //---- последний посчитанный бар будет пересчитан if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; //---- основной цикл for(i=0; iMACD_Main_1 && MACD_Signal_0>MACD_Signal_1 && MACD_Main_0>MACD_Signal_0) {MACD_Trend = 1;} // Тренд вверх if(MACD_Main_0MACD_Signal_1 && MACD_Main_0>MACD_Signal_0) {MACD_Trend = 3;} // Тренд вверх, с переходом вниз if(MACD_Main_0>MACD_Main_1 && MACD_Signal_0RSI_1) {RSI_Trend = 1;} if(RSI_0