TrackTrend_MACD





//+------------------------------------------------------------------+
//|                                                   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 MACD_Fast = 12;
int MACD_Slow = 26;
int Signal_Period = 9;
int MACD_Price = 0;              // PRICE_CLOSE
int MACD_Shift = 0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   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 MACDComment[];
   int limit;
   int counted_bars = IndicatorCounted();
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
   if(counted_bars < 0) return(-1);
//---- ïîñëåäíèé ïîñ÷èòàííûé áàð áóäåò ïåðåñ÷èòàí
   if(counted_bars > 0) counted_bars--;
   limit = Bars - counted_bars;
//---- îñíîâíîé öèêë
   for(int i=0; i<limit; i++)
     {
//==============================================================================================     
   string com1, com2, com3, com4;
   com1 = " Up";
   com2 = " Down";
   com3 = " Up->Down";
   com4 = " Down->Up";
//======== M1 ======================================================================================     
     if(MACD(TimeFrame(1))==1) {MACD_comment1 = StrTimeFrame(1)+com1;}
     if(MACD(TimeFrame(1))==2) {MACD_comment1 = StrTimeFrame(1)+com2;}
     if(MACD(TimeFrame(1))==3) {MACD_comment1 = StrTimeFrame(1)+com3;}
     if(MACD(TimeFrame(1))==4) {MACD_comment1 = StrTimeFrame(1)+com4;}
//======== M5 ======================================================================================
     if(MACD(TimeFrame(2))==1) {MACD_comment2 = StrTimeFrame(2)+com1;}
     if(MACD(TimeFrame(2))==2) {MACD_comment2 = StrTimeFrame(2)+com2;}
     if(MACD(TimeFrame(2))==3) {MACD_comment2 = StrTimeFrame(2)+com3;}
     if(MACD(TimeFrame(2))==4) {MACD_comment2 = StrTimeFrame(2)+com4;}
//======== M15 =====================================================================================
     if(MACD(TimeFrame(3))==1) {MACD_comment3 = StrTimeFrame(3)+com1;}
     if(MACD(TimeFrame(3))==2) {MACD_comment3 = StrTimeFrame(3)+com2;}
     if(MACD(TimeFrame(3))==3) {MACD_comment3 = StrTimeFrame(3)+com3;}
     if(MACD(TimeFrame(3))==4) {MACD_comment3 = StrTimeFrame(3)+com4;}
//======== M30 =====================================================================================
     if(MACD(TimeFrame(4))==1) {MACD_comment4 = StrTimeFrame(4)+com1;}
     if(MACD(TimeFrame(4))==2) {MACD_comment4 = StrTimeFrame(4)+com2;}
     if(MACD(TimeFrame(4))==3) {MACD_comment4 = StrTimeFrame(4)+com3;}
     if(MACD(TimeFrame(4))==4) {MACD_comment4 = StrTimeFrame(4)+com4;}
//======== H1 ======================================================================================
     if(MACD(TimeFrame(5))==1) {MACD_comment5 = StrTimeFrame(5)+com1;}
     if(MACD(TimeFrame(5))==2) {MACD_comment5 = StrTimeFrame(5)+com2;}
     if(MACD(TimeFrame(5))==3) {MACD_comment5 = StrTimeFrame(5)+com3;}
     if(MACD(TimeFrame(5))==4) {MACD_comment5 = StrTimeFrame(5)+com4;}
//======== H4 ======================================================================================
     if(MACD(TimeFrame(6))==1) {MACD_comment6 = StrTimeFrame(6)+com1;}
     if(MACD(TimeFrame(6))==2) {MACD_comment6 = StrTimeFrame(6)+com2;}
     if(MACD(TimeFrame(6))==3) {MACD_comment6 = StrTimeFrame(6)+com3;}
     if(MACD(TimeFrame(6))==4) {MACD_comment6 = StrTimeFrame(6)+com4;}
//======== D1 ======================================================================================
     if(MACD(TimeFrame(7))==1) {MACD_comment7 = StrTimeFrame(7)+com1;}
     if(MACD(TimeFrame(7))==2) {MACD_comment7 = StrTimeFrame(7)+com2;}
     if(MACD(TimeFrame(7))==3) {MACD_comment7 = StrTimeFrame(7)+com3;}
     if(MACD(TimeFrame(7))==4) {MACD_comment7 = StrTimeFrame(7)+com4;}
//======== W1 ======================================================================================
     if(MACD(TimeFrame(8))==1) {MACD_comment8 = StrTimeFrame(8)+com1;}
     if(MACD(TimeFrame(8))==2) {MACD_comment8 = StrTimeFrame(8)+com2;}
     if(MACD(TimeFrame(8))==3) {MACD_comment8 = StrTimeFrame(8)+com3;}
     if(MACD(TimeFrame(8))==4) {MACD_comment8 = StrTimeFrame(8)+com4;}
//======== MN1 =====================================================================================
     if(MACD(TimeFrame(9))==1) {MACD_comment9 = StrTimeFrame(9)+com1;}
     if(MACD(TimeFrame(9))==2) {MACD_comment9 = StrTimeFrame(9)+com2;}
     if(MACD(TimeFrame(9))==3) {MACD_comment9 = StrTimeFrame(9)+com3;}
     if(MACD(TimeFrame(9))==4) {MACD_comment9 = StrTimeFrame(9)+com4;}
//==============================================================================================
     }
   Comment("MACD (",MACD_Fast,",",MACD_Slow,",",Signal_Period,")\n",MACD_comment9,"\n",MACD_comment8,"\n",MACD_comment7,"\n",MACD_comment6,"\n",MACD_comment5,"\n",MACD_comment4,"\n",MACD_comment3,"\n",MACD_comment2,"\n",MACD_comment1);  
//----
   return(0);
  }
//==================================================================================================
int MACD(int MACDTimeFrame)
   {
   int MACD_Trend;
   
   double MACD_Main_0;
   double MACD_Main_1;
   double MACD_Signal_0;
   double MACD_Signal_1;

   MACD_Main_0 = iMACD(Symbol(),MACDTimeFrame,MACD_Fast,MACD_Slow,Signal_Period,MACD_Price,MODE_MAIN,0);
   MACD_Main_1 = iMACD(Symbol(),MACDTimeFrame,MACD_Fast,MACD_Slow,Signal_Period,MACD_Price,MODE_MAIN,1);
   MACD_Signal_0 = iMACD(Symbol(),MACDTimeFrame,MACD_Fast,MACD_Slow,Signal_Period,MACD_Price,MODE_SIGNAL,0);
   MACD_Signal_1 = iMACD(Symbol(),MACDTimeFrame,MACD_Fast,MACD_Slow,Signal_Period,MACD_Price,MODE_SIGNAL,1);
   
   if(MACD_Main_0>MACD_Main_1 && MACD_Signal_0>MACD_Signal_1 && MACD_Main_0>MACD_Signal_0) {MACD_Trend = 1;}    // Òðåíä ââåðõ
   if(MACD_Main_0<MACD_Main_1 && MACD_Signal_0<MACD_Signal_1 && MACD_Main_0<MACD_Signal_0) {MACD_Trend = 2;}    // Òðåíä âíèç
   if(MACD_Main_0<MACD_Main_1 && MACD_Signal_0>MACD_Signal_1 && MACD_Main_0>MACD_Signal_0) {MACD_Trend = 3;}    // Òðåíä ââåðõ, ñ ïåðåõîäîì âíèç
   if(MACD_Main_0>MACD_Main_1 && MACD_Signal_0<MACD_Signal_1 && MACD_Main_0<MACD_Signal_0) {MACD_Trend = 4;}    // Òðåíä âíèç, ñ ïåðåõîäîì ââåðõ
   return(MACD_Trend);
   }
//==================================================================================================
int TimeFrame(int Time_Period)   // ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ïåðèîäà ãðàôèêà
  {
   switch(Time_Period) 
     {
      case 0: return(0);           // ïåðèîä òåêóùåãî ãðàôèêà
      case 1: return(1);           // M1
      case 2: return(5);           // M5
      case 3: return(15);          // M15
      case 4: return(30);          // M30
      case 5: return(60);          // H1
      case 6: return(240);         // H4
      case 7: return(1440);        // D1
      case 8: return(10080);       // W1
      case 9: return(43200);       // MN1
     }
  }
//==================================================================================================
string StrTimeFrame(int T_Frame)   // ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ïåðèîäà ãðàôèêà
  {
   switch(T_Frame) 
     {
      case 0: return("Cur:");       // ïåðèîä òåêóùåãî ãðàôèêà
      case 1: return("M1:");        // M1
      case 2: return("M5:");        // M5
      case 3: return("M15:");       // M15
      case 4: return("M30:");       // M30
      case 5: return("H1:");        // H1
      case 6: return("H4:");        // H4
      case 7: return("D1:");        // D1
      case 8: return("W1:");        // W1
      case 9: return("MN1:");       // MN1
     }
  }
//==================================================================================================





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:

MACD Histogram


Custom Indicators Used:

Order Management characteristics:

Other Features: