NMR20_mtf





//+------------------------------------------------------------------+
//|                                                          nmr.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|mod.nmr_mtf                             http://www.metaquotes.net |
//+------------------------------------------------------------------+
//2008forextsd dustovshio  

#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property indicator_buffers 3
#property indicator_separate_window


#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_color3 Yellow

double extmapbuffer1[];
double extmapbuffer2[];
double extmapbuffer3[];

extern int MaxBarsToCount = 1200;

extern int TimeFrame=0;
extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN";

string  IndicatorFileName;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  SetIndexStyle (0,DRAW_LINE);
  SetIndexStyle (1,DRAW_LINE);
  SetIndexStyle (2,DRAW_LINE);


  SetIndexBuffer (0, extmapbuffer1);
  SetIndexBuffer (1, extmapbuffer2);
  SetIndexBuffer (2, extmapbuffer3);
 
        switch(TimeFrame)
   {
      case 1: string TimeFrameStr = "M1";  break;
      case 5     :   TimeFrameStr = "M5";  break;
      case 15    :   TimeFrameStr = "M15"; break;
      case 30    :   TimeFrameStr = "M30"; break;
      case 60    :   TimeFrameStr = "H1";  break;
      case 240   :   TimeFrameStr = "H4";  break;
      case 1440  :   TimeFrameStr = "D1";  break;
      case 10080 :   TimeFrameStr = "W1";  break;
      case 43200 :   TimeFrameStr = "MN1"; break;
      default :    TimeFrameStr   = "TF0";
   }

  string short_name = "NMR ["+TimeFrameStr+"]";
  IndicatorShortName (short_name);
  IndicatorFileName = WindowExpertName();

  SetIndexLabel(0,short_name);
  SetIndexLabel(1,short_name+"UpperBand");
  SetIndexLabel(2,short_name+"LowerBand");
   
     if (TimeFrame<Period()) TimeFrame=Period();

//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
      int      limit,i;
   if(counted_bars < 0) return(-1);
   limit = Bars-counted_bars;
   if (TimeFrame != Period())
      {
         limit = MathMax(limit,TimeFrame/Period());
         limit = MathMin(limit,MaxBarsToCount);

        datetime TimeArray[];
        ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
            for(i=0,int y=0; i<limit; i++)
           {
              if(Time[i]<TimeArray[y]) y++;
    extmapbuffer1[i] = iCustom(NULL,TimeFrame,IndicatorFileName,MaxBarsToCount,0,y);
    extmapbuffer2[i] = iCustom(NULL,TimeFrame,IndicatorFileName,MaxBarsToCount,1,y);
    extmapbuffer3[i] = iCustom(NULL,TimeFrame,IndicatorFileName,MaxBarsToCount,2,y);
            }
         return(0);         
      }
   double a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40;
   double s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40;
   double  ave, badif0,badif1,badif2,badif3,badif4,badif5,badif6,badif7,badif8,badif9,badif10,badif11,badif12,badif13,badif14,badif15,badif16,badif17,badif18,badif19,badif20,badif21,badif22,badif23,badif24,badif25,badif26,badif27,badif28,badif29,badif30,badif31,badif32,badif33,badif34,badif35,badif36,badif37,badif38,badif39,badif40;
   double sum,sum2, ratio, dif0,dif1,dif2,dif3,dif4,dif5,dif6,dif7,dif8,dif9,dif10,dif11,dif12,dif13,dif14,dif15,dif16,dif17,dif18,dif19,dif20,dif21,dif22,dif23,dif24,dif25,dif26,dif27,dif28,dif29,dif30,dif31,dif32,dif33,dif34,dif35,dif36,dif37,dif38,dif39,dif40;
   double  adif0,adif1,adif2,adif3,adif4,adif5,adif6,adif7,adif8,adif9,adif10,adif11,adif12,adif13,adif14,adif15,adif16,adif17,adif18,adif19,adif20,adif21,adif22,adif23,adif24,adif25,adif26,adif27,adif28,adif29,adif30,adif31,adif32,adif33,adif34,adif35,adif36,adif37,adif38,adif39,adif40;
   int pos = Bars - counted_bars;
   while (pos>=0)
   {
   if (counted_bars<0) return (-1);
   if (counted_bars>0) counted_bars--;
   dif0 = MathAbs((MathLog(Close[pos])*100000) - (MathLog(Close [pos+1])*100000));
   dif1 = MathAbs((MathLog(Close[pos+1])*100000) - (MathLog(Close [pos+2])*100000));
   dif2 = MathAbs((MathLog(Close[pos+2])*100000) - (MathLog(Close [pos+3])*100000)) ;
   dif3 = MathAbs((MathLog(Close[pos+3])*100000) - (MathLog(Close [pos+4])*100000)) ;
   dif4 = MathAbs((MathLog(Close[pos+4])*100000) - (MathLog(Close [pos+5])*100000)) ;
   dif5 = MathAbs((MathLog(Close[pos+5])*100000) - (MathLog(Close [pos+6])*100000)) ;
   dif6 = MathAbs((MathLog(Close[pos+6])*100000) -  (MathLog(Close [pos+7])*100000)) ;
   dif7 = MathAbs((MathLog(Close[pos+7])*100000) -  (MathLog(Close [pos+8])*100000)) ;
   dif8 = MathAbs((MathLog(Close[pos+8])*100000) -  (MathLog(Close [pos+9])*100000)) ;
   dif9 = MathAbs((MathLog(Close[pos+9])*100000) -  (MathLog(Close [pos+10])*100000)) ;
   dif10 =MathAbs((MathLog(Close[pos+10])*100000) - (MathLog(Close [pos+11])*100000)); 
   dif11 =MathAbs((MathLog(Close[pos+11])*100000) - (MathLog(Close [pos+12])*100000)) ;
   dif12 =MathAbs((MathLog(Close[pos+12])*100000) - (MathLog(Close [pos+13])*100000)) ;
   dif14 =MathAbs((MathLog(Close[pos+13])*100000) - (MathLog(Close [pos+14])*100000)) ;
   dif15 =MathAbs((MathLog(Close[pos+14])*100000) - (MathLog(Close [pos+15])*100000)) ;
   dif16 =MathAbs((MathLog(Close[pos+15])*100000) - (MathLog(Close [pos+16])*100000));
   dif17 =MathAbs((MathLog(Close[pos+16])*100000) - (MathLog(Close [pos+17])*100000)) ;
   dif18 =MathAbs((MathLog(Close[pos+17])*100000) - (MathLog(Close [pos+18])*100000)) ;
   dif19 =MathAbs((MathLog(Close[pos+18])*100000) - (MathLog(Close [pos+19])*100000));
   dif20 =MathAbs((MathLog(Close[pos+19])*100000) - (MathLog(Close [pos+20])*100000));

   adif0 = MathAbs(MathLog(Close[pos])*100000 - MathLog(Close [pos+1])*100000);
   adif1 = MathAbs(MathLog(Close[pos+1])*100000 - MathLog(Close [pos+2])*100000) * (MathSqrt(2)-MathSqrt(1));
   adif2 = MathAbs(MathLog(Close[pos+2])*100000 - MathLog(Close [pos+3])*100000) * (MathSqrt(3)-MathSqrt(2));
   adif3 = MathAbs(MathLog(Close[pos+3])*100000 - MathLog(Close [pos+4])*100000) * (MathSqrt(4)-MathSqrt(3));
   adif4 = MathAbs(MathLog(Close[pos+4])*100000 - MathLog(Close [pos+5])*100000) * (MathSqrt(5)-MathSqrt(4));
   adif5 = MathAbs(MathLog(Close[pos+5])*100000 - MathLog(Close [pos+6])*100000)* (MathSqrt(6)-MathSqrt(5));
   adif6 = MathAbs(MathLog(Close[pos+6])*100000 - MathLog(Close [pos+7])*100000) * (MathSqrt(7)-MathSqrt(6));
   adif7 = MathAbs(MathLog(Close[pos+7])*100000 - MathLog(Close [pos+8])*100000) * (MathSqrt(8)-MathSqrt(7));
   adif8 = MathAbs(MathLog(Close[pos+8])*100000 - MathLog(Close [pos+9])*100000) * (MathSqrt(9)-MathSqrt(8));
   adif9 = MathAbs(MathLog(Close[pos+9])*100000 - MathLog(Close [pos+10])*100000) * (MathSqrt(10)-MathSqrt(9));
   adif10 =MathAbs (MathLog(Close[pos+10])*100000 - MathLog(Close [pos+11])*100000) * (MathSqrt(11)-MathSqrt(10));
   adif11 =MathAbs (MathLog(Close[pos+11])*100000 - MathLog(Close [pos+12])*100000) * (MathSqrt(12)-MathSqrt(11));
   adif12 =MathAbs (MathLog(Close[pos+12])*100000 - MathLog(Close [pos+13])*100000) * (MathSqrt(13)-MathSqrt(12));
   adif14 =MathAbs (MathLog(Close[pos+13])*100000 - MathLog(Close [pos+14])*100000) * (MathSqrt(14)-MathSqrt(13));
   adif15 =MathAbs (MathLog(Close[pos+14])*100000 - MathLog(Close [pos+15])*100000) * (MathSqrt(15)-MathSqrt(14));
   adif16 =MathAbs (MathLog(Close[pos+15])*100000 - MathLog(Close [pos+16])*100000) * (MathSqrt(16)-MathSqrt(15));
   adif17 =MathAbs (MathLog(Close[pos+16])*100000 - MathLog(Close [pos+17])*100000) * (MathSqrt(17)-MathSqrt(16));
   adif18 =MathAbs (MathLog(Close[pos+17])*100000 - MathLog(Close [pos+18])*100000) * (MathSqrt(18)-MathSqrt(17));
   adif19 =MathAbs (MathLog(Close[pos+18])*100000 - MathLog(Close [pos+19])*100000) * (MathSqrt(19)-MathSqrt(18));
   adif20 =MathAbs (MathLog(Close[pos+19])*100000 - MathLog(Close [pos+20])*100000) * (MathSqrt(20)-MathSqrt(19));
   s1 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+1])*100000); 
   s2 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+2])*100000);
   s3 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+3])*100000);
   s4 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+4])*100000);
   s5 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+5])*100000);
   s6 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+6])*100000);
   s7 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+7])*100000);
   s8 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+8])*100000);
   s9 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+9])*100000);
   s10 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+10])*100000);
   s11 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+11])*100000);
   s12 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+12])*100000);
   s13 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+13])*100000);
   s14 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+14])*100000);
   s15 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+15])*100000);
   s16 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+16])*100000);
   s17 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+17])*100000);
   s18 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+18])*100000);
   s19 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+19])*100000);
   s20 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+20])*100000);
   s21 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+21])*100000);
   s22 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+22])*100000);
   s23 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+23])*100000);
   s24 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+24])*100000);
   s25 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+25])*100000);
   s26 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+26])*100000);
   s27 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+27])*100000);
   s28 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+28])*100000);
   s29 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+29])*100000);
   s30 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+30])*100000);
   s31 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+31])*100000);
   s32 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+32])*100000); 
   s33 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+33])*100000); 
   s34 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+34])*100000); 
   s35 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+35])*100000); 
   s36 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+36])*100000); 
   s37 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+37])*100000); 
   s38 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+38])*100000); 
   s39 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+39])*100000); 
   s40 =    (MathLog(Close[pos])*100000) - (MathLog(Close [pos+40])*100000); 
  
   badif1 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+1])*100000) / MathSqrt(1);
   badif2 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+2])*100000) / MathSqrt(2);
   badif3 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+3])*100000) / MathSqrt(3);
   badif4 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+4])*100000) / MathSqrt(4);
   badif5 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+5])*100000) / MathSqrt(5);
   badif6 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+6])*100000) / MathSqrt(6);
   badif7 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+7])*100000) / MathSqrt(7);
   badif8 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+8])*100000) / MathSqrt(8);
   badif9 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+9])*100000) / MathSqrt(9);
   badif10 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+10])*100000) / MathSqrt(10);
   badif11= (MathLog(Close[pos])*100000 - MathLog(Close [pos+11])*100000) / MathSqrt(11);
   badif12 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+12])*100000) / MathSqrt(12);
   badif13 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+13])*100000) / MathSqrt(13);
   badif14= (MathLog(Close[pos])*100000 - MathLog(Close [pos+14])*100000) / MathSqrt(14);
   badif15 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+15])*100000) / MathSqrt(15);
   badif16 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+16])*100000) / MathSqrt(16);
   badif17 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+17])*100000) / MathSqrt(17);
   badif18= (MathLog(Close[pos])*100000 - MathLog(Close [pos+18])*100000) / MathSqrt(18);
   badif19 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+19])*100000) / MathSqrt(19);
   badif20 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+20])*100000) / MathSqrt(20);
   badif21 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+21])*100000) / MathSqrt(21);
   badif22 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+22])*100000) / MathSqrt(22);
   badif23 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+23])*100000) / MathSqrt(23);
   badif24 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+24])*100000) / MathSqrt(24);
   badif26 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+25])*100000) / MathSqrt(25);
   badif26 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+26])*100000) / MathSqrt(26);
   badif27 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+27])*100000) / MathSqrt(27);
   badif28 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+28])*100000) / MathSqrt(28);
   badif29 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+29])*100000) / MathSqrt(29);
   badif30 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+30])*100000) / MathSqrt(30);
   badif31 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+31])*100000) / MathSqrt(31);
   badif32 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+32])*100000) / MathSqrt(32);
   badif33 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+33])*100000) / MathSqrt(33);
   badif34 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+34])*100000) / MathSqrt(34);
   badif35 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+35])*100000) / MathSqrt(35);
   badif36 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+36])*100000) / MathSqrt(36);
   badif37 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+37])*100000) / MathSqrt(37);
   badif38 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+38])*100000) / MathSqrt(38);
   badif39 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+39])*100000) / MathSqrt(39);
   badif40 = (MathLog(Close[pos])*100000 - MathLog(Close [pos+40])*100000) / MathSqrt(40);
   double x1;
   Print(s1);
  
   ave = (badif1+badif2+badif3+badif4+badif5+badif6+badif7+badif8+badif9+badif10+badif11+badif12+badif13+badif14+badif15+badif16+badif17+badif18+badif19+badif20+badif21+badif22+badif23+badif24+badif25+badif26+badif27+badif28+badif29+badif30+badif31+badif32+badif33+badif34+badif35+badif36+badif37+badif38+badif39+badif40) ;
   sum = MathRound(dif1+dif2+dif3+dif4+dif5+dif6+dif7+dif8+dif9+dif10+dif11+dif12+dif13+dif14+dif15+dif16+dif17+dif18+dif19+dif20+dif21+dif22+dif23+dif24+dif25+dif26+dif27+dif28+dif29+dif30+dif31+dif32+dif33+dif34+dif35+dif36+dif37+dif38+dif39+dif40);
   sum2 = MathRound(adif1+adif2+adif3+adif4+adif5+adif6+adif7+adif8+adif9+adif10+adif11+adif12+adif13+adif14+adif15+adif16+adif17+adif18+adif19+adif20+adif21+adif22+adif23+adif24+adif25+adif26+adif27+adif28+adif29+adif30+adif31+adif32+adif33+adif34+adif35+adif36+adif37+adif38+adif39+adif40);
   ratio = sum2 / sum;
   double thisbar, ema=0, ema2=0,ema3=0,ema4=0 , ematext, next,t,x,s,r;
   thisbar=Close[pos];
   
   r= (adif0+adif1+adif2+adif3+adif4+adif5+adif6+adif7+adif8+adif9+adif10+adif11+adif12+adif13+adif14+adif15+adif16+adif17+adif18+adif19+adif20) ;
   t = (badif40+badif39+badif38+badif37+badif36+badif35+badif34+badif33+badif32+badif31+badif30+badif21+badif22+badif23+badif24+badif25+badif26+badif27+badif28+badif29+badif30) / 20;
   x = (badif1+badif2+badif3+badif4+badif5+badif6+badif7+badif8+badif9+badif10+badif11+badif12+badif13+badif14+badif15+badif16+badif17+badif18+badif19+badif20) / 20;
   s = (badif10+badif11+badif12+badif13+badif14+badif15+badif16+badif17+badif18+badif19+badif20+badif21+badif22+badif23+badif24+badif25+badif26+badif27+badif28+badif29+badif30 ) /20;
   
   ema = ema + (ratio * (x - ema));
   ema2 = ema2 +(ratio * (r*ratio - ema2));
  
  
   extmapbuffer1[pos] = ema;
   extmapbuffer3[pos] = -ema2;
   extmapbuffer2[pos] = ema2;
  
   pos--;
   ematext = ema;
   Comment (ematext);
   }
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:




Custom Indicators Used:
IndicatorFileName

Order Management characteristics:

Other Features: