MurreyMath1[1].0





//+------------------------------------------------------------------+
//|                                                MurreyMath1.0.mq4 |
//|                                                      version 1.0 |
//|                            modified by banzai to add in an alert |
//|                           and you can change the color lines now |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                              MM# LabelLevels.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      " Modified by cja " 
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//|                                            Murrey_Math_MT_VG.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Vladislav Goshkov (VG)."
#property link      "4vg@mail.ru"

#property indicator_chart_window

// ============================================================================================
// 8/8 c 0/8 
// ============================================================================================
// 7/8    Weak, Stall and Reverse

// ============================================================================================
// 1/8  Weak, Stall and Reverse

// ============================================================================================
// 6/8 c 2/8  Pivot, Reverse

// ============================================================================================
// 5/8  Top of Trading Range 40% of trading range between 5/8 & 3/8 
                                
// ============================================================================================
// 3/8  Bottom of Trading Range

// ============================================================================================
// 4/8  Major Support/Resistance

// ============================================================================================
extern string note1 ="P = 240 = H4 chart";
extern int P = 240;
extern int StepBack = 0;
extern string note2 = "display comment=true; turn off = false";
extern bool Comments = false;
extern string note3 = "turn on Alert = true; turn off = false";
extern bool AlertOn = true;
extern color levelminus2 = SteelBlue;
extern color levelminus1 = MediumVioletRed;
extern color level0 = Teal;
extern color level1 = Goldenrod;
extern color level2 = Crimson;
extern color level3 = Green;
extern color level4 = Blue;
extern color level5 = Green;
extern color level6 = Crimson;
extern color level7 = Goldenrod;
extern color level8 = Teal;
extern color levelplus1 = MediumVioletRed;
extern color levelplus2 = SteelBlue;

double  dmml = 0,
        dvtl = 0,
        sum  = 0,
        v1 = 0,
        v2 = 0,
        mn = 0,
        mx = 0,
        x1 = 0,
        x2 = 0,
        x3 = 0,
        x4 = 0,
        x5 = 0,
        x6 = 0,
        y1 = 0,
        y2 = 0,
        y3 = 0,
        y4 = 0,
        y5 = 0,
        y6 = 0,
        octave = 0,
        fractal = 0,
        range   = 0,
        finalH  = 0,
        finalL  = 0,
        mml[13];

string  ln_txt[13],        
        buff_str = "";
        
int     
        bn_v1   = 0,
        bn_v2   = 0,
        OctLinesCnt = 13,
        mml_thk = 8,
        mml_clr[13],
        mml_shft = 3,
        nTime = 0,
        CurPeriod = 0,
        nDigits = 0,
        i = 0;
// Show regular timeframe string (HCY)
string AlertPrefix;
string GetTimeFrameStr() {
   switch(Period())
   {
      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="CUR";
   } 
   return (TimeFrameStr);
   }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
//---- indicators
   ln_txt[0]  = "             [-2/8] BUY: TP1 @ 0/8th, TP2 @ 2/8th";// "extremely overshoot [-2/8]";// [-2/8]
   ln_txt[1]  = "             [-1/8] BUY: TP1 @ 0/8th, TP2 @ 2/8th";// "overshoot [-1/8]";// [-1/8]
   ln_txt[2]  = "             [0/8] If uptrend, BUY & Exit @ 2/8th";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
   ln_txt[3]  = "             [1/8] If uptrend, BUY & Exit @ 4/8th";// "Weak, Stall and Reverse - [1/8]";// [1/8]
   ln_txt[4]  = "             [2/8] Pivot";// "Pivot, Reverse - major [2/8]";// [2/8]
   ln_txt[5]  = "             [3/8]";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
   ln_txt[6]  = "             [4/8] Major Support/Resistance";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
   ln_txt[7]  = "             [5/8]";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
   ln_txt[8]  = "             [6/8] Pivot";// "Pivot, Reverse - major [6/8]";// [6/8]
   ln_txt[9]  = "             [7/8] If downtrend, SELL & Exit @ 4/8th";// "Weak, Stall and Reverse - [7/8]";// [7/8]
   ln_txt[10] = "             [8/8] If downtrend, SELL & Exit @ 6/8th";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
   ln_txt[11] = "             [+1/8] SELL: TP1 @ 8/8th, TP2 @ 7/8th";// "overshoot [+1/8]";// [+1/8]
   ln_txt[12] = "             [+2/8] SELL: TP1 @ 8/8th, TP2 @ 7/8th";// "extremely overshoot [+2/8]";// [+2/8]

   mml_shft = 35;//original was 3
   mml_thk  = 3;

   // Ír÷rëüír? ónnríîâer öâlnîâ ódîâílé îenrâ 
   mml_clr[0]  = levelminus2;  // [-2]/8
   mml_clr[1]  = levelminus1;  // [-1]/8
   mml_clr[2]  = level0;       //  [0]/8
   mml_clr[3]  = level1;       //  [1]/8
   mml_clr[4]  = level2;       //  [2]/8
   mml_clr[5]  = level3;       //  [3]/8
   mml_clr[6]  = level4;       //  [4]/8
   mml_clr[7]  = level5;       //  [5]/8
   mml_clr[8]  = level6;       //  [6]/8
   mml_clr[9]  = level7;       //  [7]/8
   mml_clr[10] = level8;       //  [8]/8
   mml_clr[11] = levelplus1;   // [+1]/8
   mml_clr[12] = levelplus2;   // [+2]/8
   // Show regular timeframe string (HCY)
   AlertPrefix=Symbol()+" ("+GetTimeFrameStr()+"):  ";
   return(0);
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
//if (Comments) {Comment(" ");}
for(i=0;i<OctLinesCnt;i++) {
    buff_str = "mml"+i;
    ObjectDelete(buff_str);
    buff_str = "mml_txt"+i;
    ObjectDelete(buff_str);
    }
//----
   return(0);
  }
bool NewBar()
{
   static datetime lastbar;
   datetime curbar = Time[0];
   //Print("NewBar(). lastbar="+TimeToStr(lastbar,TIME_DATE|TIME_MINUTES)+"  curbar="+TimeToStr(curbar,TIME_DATE|TIME_MINUTES));
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}   
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {

if( (nTime != Time[0]) || (CurPeriod != Period()) ) {
   
  //price
   bn_v1 = Lowest(NULL,0,MODE_LOW,P+StepBack,0);
   bn_v2 = Highest(NULL,0,MODE_HIGH,P+StepBack,0); // changes when price exceeds hi/low

   v1 = Low[bn_v1];
   v2 = High[bn_v2];
   
   if (Comments) {Comment("\n","MURREYMATH ","\n","HighClose = ",v2,"\n","LowClose = ",v1,"\n");}


   
   //v1=(Close[Lowest(NULL,0,MODE_CLOSE,P+StepBack,0)]);
   //v2=(Close[Highest(NULL,0,MODE_CLOSE,P+StepBack,0)]);// Possibly a better hi/low code than above code changes on CLOSE
                                                         // Still does not update 
                         
//determine fractal.....
   if( v2<=250000 && v2>25000 )
   fractal=100000;
   else
     if( v2<=25000 && v2>2500 )
     fractal=10000;
     else
       if( v2<=2500 && v2>250 )
       fractal=1000;
       else
         if( v2<=250 && v2>25 )
         fractal=100;
         else
           if( v2<=25 && v2>12.5 )
           fractal=12.5;
           else
             if( v2<=12.5 && v2>6.25)
             fractal=12.5;
             else
               if( v2<=6.25 && v2>3.125 )
               fractal=6.25;
               else
                 if( v2<=3.125 && v2>1.5625 )
                 fractal=3.125;
                 else
                   if( v2<=1.5625 && v2>0.390625 )
                   fractal=1.5625;
                   else
                     if( v2<=0.390625 && v2>0)
                     fractal=0.1953125;
      
   range=(v2-v1);
   sum=MathFloor(MathLog(fractal/range)/MathLog(2));
   octave=fractal*(MathPow(0.5,sum));
   mn=MathFloor(v1/octave)*octave;
   if( (mn+octave)>v2 )
   mx=mn+octave; 
   else
     mx=mn+(2*octave);


// calculating xx
//x2
    if( (v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
    x2=mn+(mx-mn)/2; 
    else x2=0;
//x1
    if( (v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
    x1=mn+(mx-mn)/2; 
    else x1=0;

//x4
    if( (v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
    x4=mn+3*(mx-mn)/4; 
    else x4=0;

//x5
    if( (v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
    x5=mx; 
    else  x5=0;

//x3
    if( (v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
    x3=mn+3*(mx-mn)/4; 
    else x3=0;

//x6
    if( (x1+x2+x3+x4+x5) ==0 )
    x6=mx; 
    else x6=0;

     finalH = x1+x2+x3+x4+x5+x6;
// calculating yy
//y1
    if( x1>0 )
    y1=mn; 
    else y1=0;

//y2
    if( x2>0 )
    y2=mn+(mx-mn)/4; 
    else y2=0;

//y3
    if( x3>0 )
    y3=mn+(mx-mn)/4; 
    else y3=0;

//y4
    if( x4>0 )
    y4=mn+(mx-mn)/2; 
    else y4=0;

//y5
    if( x5>0 )
    y5=mn+(mx-mn)/2; 
    else y5=0;

//y6
    if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) )
    y6=mn; 
    else y6=0;

    finalL = y1+y2+y3+y4+y5+y6;

    for( i=0; i<OctLinesCnt; i++) {
         mml[i] = 0;
         }
         
   dmml = (finalH-finalL)/8;

   mml[0] =(finalL-dmml*2); //-2/8
   for( i=1; i<OctLinesCnt; i++) {
        mml[i] = mml[i-1] + dmml;
        }
   for( i=0; i<OctLinesCnt; i++ ){
        buff_str = "mml"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i]);
           ObjectSet(buff_str, OBJPROP_STYLE, STYLE_DOT);
           ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
             
        buff_str = "mml_txt"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
           ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        } // for( i=1; i<=OctLinesCnt; i++ ){

   nTime    = Time[0];
   CurPeriod= Period();
   }
   // ======= Alert =========
//Alert("high0="+High[0]+"mml12="+mml[12]);
   if(AlertOn && NewBar()){
      if((High[0] >= mml[12]) || (Low[0] >= mml[12]))
         Alert(AlertPrefix+"MM[+2/8] SELL: TP1 @ 8/8, TP2 @ 7/8");
      else
      if((High[0] >= mml[11]) && (High[0] < mml[12]) || (Low[0] >= mml[11]) && (Low[0] < mml[12]))
         Alert(AlertPrefix+"MM[+1/8] SELL: TP1 @ 8/8th, TP2 @ 7/8");
      else
      if((High[0] >= mml[10]) && (High[0] < mml[11]) || (Low[0] >= mml[10]) && (Low[0] < mml[11]))
         Alert(AlertPrefix+"MM[8/8] If downtrend, SELL & Exit @ 6/8th");
      else
      if((High[0] >= mml[9]) && (High[0] < mml[10]) || (Low[0] >= mml[9]) && (Low[0] < mml[10]))
         Alert(AlertPrefix+"MM[7/8] If downtrend, SELL & Exit @ 4/8th");
      else
      if((High[0] <= mml[0]) || (Low[0] <= mml[0]))
         Alert(AlertPrefix+"MM[-2/8] BUY: TP1 @ 0/8, TP2 @ 2/8");
      else
      if((High[0] <= mml[1]) && (High[0] > mml[0]) || (Low[0] <= mml[1]) && (Low[0] > mml[0]))
         Alert(AlertPrefix+"MM[-1/8] BUY: TP1 @ 0/8th, TP2 @ 2/8");
      else
      if((High[0] <= mml[2]) && (High[0] > mml[1]) || (Low[0] <= mml[2]) && (Low[0] > mml[1]))
         Alert(AlertPrefix+"MM[0/8] If uptrend, BUY & Exit @ 2/8th");
      else
      if((High[0] <= mml[3]) && (High[0] > mml[2]) || (Low[0] <= mml[3]) && (Low[0] > mml[2]))
         Alert(AlertPrefix+"MM[1/8] If uptrend, BUY & Exit @ 4/8th");
      }
   // ======= Alert Ends =========
//   ln_txt[0]  = "             [-2/8] BUY: TP1 @ 0/8th, TP2 @ 2/8th";// "extremely overshoot [-2/8]";// [-2/8]
//   ln_txt[1]  = "             [-1/8] BUY: TP1 @ 0/8th, TP2 @ 2/8th";// "overshoot [-1/8]";// [-1/8]
//   ln_txt[2]  = "             [0/8] If uptrend, BUY & Exit @ 2/8th";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
//   ln_txt[3]  = "             [1/8] If uptrend, BUY & Exit @ 4/8th";// "Weak, Stall and Reverse - [1/8]";// [1/8]
//   ln_txt[4]  = "             [2/8] Pivot";// "Pivot, Reverse - major [2/8]";// [2/8]
//   ln_txt[5]  = "             [3/8]";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
//   ln_txt[6]  = "             [4/8] Major Support/Resistance";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
//   ln_txt[7]  = "             [5/8]";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
//   ln_txt[8]  = "             [6/8] Pivot";// "Pivot, Reverse - major [6/8]";// [6/8]
//   ln_txt[9]  = "             [7/8] If downtrend, SELL & Exit @ 4/8th";// "Weak, Stall and Reverse - [7/8]";// [7/8]
//   ln_txt[10] = "             [8/8] If downtrend, SELL & Exit @ 6/8th";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
//   ln_txt[11] = "             [+1/8] SELL: TP1 @ 8/8th, TP2 @ 7/8th";// "overshoot [+1/8]";// [+1/8]
//   ln_txt[12] = "             [+2/8] SELL: TP1 @ 8/8th, TP2 @ 7/8th";// "extremely overshoot [+2/8]";// [+2/8]
//---- End Of Program
  return(0);
  }





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen