Download MetaTrader 5
To add comments, please log in or register
Do you need private account monitoring? The Signals will provide you one!
mike
32
mike 2015.01.10 10:35 

Hi,

i'm trying to edit a mml indicator, the only thing i would like to do is to reduce the length of the horizontal lines as of now they are running across the whole chart. Which i don't really like as it can be sometimes hard to read . So i would like some help on how to code them to be shorter..I'am not asking for someone to do it for me, i'd like to be explain how to do it so i can learn..thanks

Here is the coding of the indicator.

#property copyright "Vladislav Goshkov (VG) && Ben L."

#property link      "4vg@mail.ru && sbgtrading@yahoo.com"


#property indicator_chart_window


// ============================================================================================

// * Line 8/8 & 0/8 (Ultimate Support and Ultimate Resistance).

// * Those lines are the most strong concerning Support and esistance.

// ============================================================================================

//* Line 7/8  (Weak, Place to Stop and Reverse).

//* This line is weak. If suddenly the price was going too fast and too far and stops around this line 

//* it means the price will reverse down very soon. If the price did not stop near this line this price 

//* will continue the movement to the line 8/8.

// ============================================================================================

//* Line 1/8  (Weak, Place to Stop and Reverse).

//* This line is weak. If suddenly the price was going too fast and too far and stops around this line 

//* it means the price will reverse up very soon. If the price did not stop near this line this price

//* will continue the movement down to the line 0/8.

// ============================================================================================

//* Line 2/8 and 6/8 (Pivot, Reverse)

//* Those two lines yield the line 4/8 only to the strength to reverse the price movement.

// ============================================================================================

//* Line 5/8 (Top of Trading Range)

//* The price is spending the about 40% of the time on the movement between the lines 5/8 and 3/8. 

//* If the price is moving near line 5/8 and stopping near the line during the 10 - 12 days so it means 

//* that it is necessary to sell in this "bonus zone" (some people are doing like this) but if the price is keeping the tendency to stay above 

//* 5/8 line, so it means that the price will be above. But if the price is droping below 5/8 line it means that the price will continue 

//* falling to the next level of resistance.

// ============================================================================================

//* Line 3/8 (Bottom of Trading Range).

//* If the price is below this line and in uptrend it means that it will be very difficult for the price to break this level. 

//* If the price broke this line during the uptrend and staying above during the 10 12 days it means that the price will be above this line 

//* during the 40% of its time moving between this line and 5/8 line.

// ============================================================================================

//* Line 4/8 (Major Support/Resistance Line).

//* It is the major line concerning support and resistance. This leve is the better for the new sell or buy. 

//* It is the strong level of support of the price is above 4/8. It is the fine resistance line if the price is below this 4/8 line. 

// ============================================================================================

//***tw: dynamically se this variable below

//extern int P = 64;

extern int StepBack = 0;


extern color  mml_clr_m_2_8 = White;       // [-2]/8

extern color  mml_clr_m_1_8 = White;       // [-1]/8

extern color  mml_clr_0_8   = Aqua;        //  [0]/8

extern color  mml_clr_1_8   = Yellow;      //  [1]/8

extern color  mml_clr_2_8   = Red;         //  [2]/8

extern color  mml_clr_3_8   = MediumSeaGreen;       //  [3]/8

extern color  mml_clr_4_8   = Blue;        //  [4]/8

extern color  mml_clr_5_8   = MediumSeaGreen;       //  [5]/8

extern color  mml_clr_6_8   = Red;         //  [6]/8

extern color  mml_clr_7_8   = Yellow;      //  [7]/8

extern color  mml_clr_8_8   = Aqua;        //  [8]/8

extern color  mml_clr_p_1_8 = White;       // [+1]/8

extern color  mml_clr_p_2_8 = White;       // [+2]/8


extern int    mml_wdth_m_2_8 = 2;        // [-2]/8

extern int    mml_wdth_m_1_8 = 2;        // [-1]/8

extern int    mml_wdth_0_8   = 2;        //  [0]/8

extern int    mml_wdth_1_8   = 2;        //  [1]/8

extern int    mml_wdth_2_8   = 2;        //  [2]/8

extern int    mml_wdth_3_8   = 2;        //  [3]/8

extern int    mml_wdth_4_8   = 2;        //  [4]/8

extern int    mml_wdth_5_8   = 2;        //  [5]/8

extern int    mml_wdth_6_8   = 2;        //  [6]/8

extern int    mml_wdth_7_8   = 2;        //  [7]/8

extern int    mml_wdth_8_8   = 2;        //  [8]/8

extern int    mml_wdth_p_1_8 = 2;        // [+1]/8

extern int    mml_wdth_p_2_8 = 2;        // [+2]/8


extern color  MarkColor   = Blue;

extern int    MarkNumber  = 217;



double  dmml = 0,

        dvtl = 0,

        sum  = 0,

        PeriodLow = 0,

        PeriodHigh = 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     

        bnLow   = 0,

        bnHigh   = 0,

        OctLinesCnt = 13,

        mml_clr[13],

        mml_wdth[13],

        mml_shft = 40,

        nTime = 0,

        CurPeriod = 0,

        i = 0;

int P;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init() {


/**tw: 10/23/06 - change P variable depending on current period.****/

/******removed external variable, and will set here instead.********/

P = 64;

if (Period() <=30) P = 4;

//Print("P variable: " + P);

/******/


//---- indicators

   

   ln_txt[0]  = "[-2/8]BUY! (Extremly Oversold)";// "extremely overshoot [-2/8]";// [-2/8]

   ln_txt[1]  = "[-1/8]buy (Oversold)";// "overshoot [-1/8]";// [-1/8]

   ln_txt[2]  = "[0/8]Ultimate support";// "Ultimate Support - extremely oversold [0/8]";// [0/8]

   ln_txt[3]  = "[1/8]Weak sup (stop and Reverse)";// "Weak, Place to Stop and Reverse - [1/8]";// [1/8]

   ln_txt[4]  = "[2/8]Pivot buy (Reverse)";// "Pivot, Reverse - major [2/8]";// [2/8]

   ln_txt[5]  = "[3/8]RangeBot of trading Range";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]

   ln_txt[6]  = "[4/8]Center (Good Buy or Sell)";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]

   ln_txt[7]  = "[5/8]RangeTop ";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]

   ln_txt[8]  = "[6/8]Pivot sell (Major Reverse)";// "Pivot, Reverse - major [6/8]";// [6/8]

   ln_txt[9]  = "[7/8]Weak res (Stop and Reverse)";// "Weak, Place to Stop and Reverse - [7/8]";// [7/8]

   ln_txt[10] = "[8/8]Ultimate resistance";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]

   ln_txt[11] = "[+1/8]sell (Overbought)";// "overshoot [+1/8]";// [+1/8]

   ln_txt[12] = "[+2/8]SELL! (extremely overbought)";// "extremely overshoot [+2/8]";// [+2/8]



   mml_clr[0]  = mml_clr_m_2_8;   mml_wdth[0] = mml_wdth_m_2_8; // [-2]/8

   mml_clr[1]  = mml_clr_m_1_8;   mml_wdth[1] = mml_wdth_m_1_8; // [-1]/8

   mml_clr[2]  = mml_clr_0_8;     mml_wdth[2] = mml_wdth_0_8;   //  [0]/8

   mml_clr[3]  = mml_clr_1_8;     mml_wdth[3] = mml_wdth_1_8;   //  [1]/8

   mml_clr[4]  = mml_clr_2_8;     mml_wdth[4] = mml_wdth_2_8;   //  [2]/8

   mml_clr[5]  = mml_clr_3_8;     mml_wdth[5] = mml_wdth_3_8;   //  [3]/8

   mml_clr[6]  = mml_clr_4_8;     mml_wdth[6] = mml_wdth_4_8;   //  [4]/8

   mml_clr[7]  = mml_clr_5_8;     mml_wdth[7] = mml_wdth_5_8;   //  [5]/8

   mml_clr[8]  = mml_clr_6_8;     mml_wdth[8] = mml_wdth_6_8;   //  [6]/8

   mml_clr[9]  = mml_clr_7_8;     mml_wdth[9] = mml_wdth_7_8;   //  [7]/8

   mml_clr[10] = mml_clr_8_8;     mml_wdth[10]= mml_wdth_8_8;   //  [8]/8

   mml_clr[11] = mml_clr_p_1_8;   mml_wdth[11]= mml_wdth_p_1_8; // [+1]/8

   mml_clr[12] = mml_clr_p_2_8;   mml_wdth[12]= mml_wdth_p_2_8; // [+2]/8

   

   for( i=0; i<OctLinesCnt; i++) {

         mml[i] = 0;

      }

   

//----

   return(0);

  }


//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit() {

//---- 

Comment(" ");

for(i=0;i<OctLinesCnt;i++) {

    buff_str = "mml"+i;

    ObjectDelete(buff_str);

    buff_str = "mml_txt"+i;

    ObjectDelete(buff_str);

    }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start() {


//---- 


if((nTime != Time[0]) || (CurPeriod != Period())) {

   

  //price

   bnLow = Lowest(NULL,PERIOD_D1,MODE_LOW,P,StepBack);

   bnHigh = Highest(NULL,PERIOD_D1,MODE_HIGH,P,StepBack);


   PeriodLow = iLow(NULL,PERIOD_D1,bnLow);

   PeriodHigh = iHigh(NULL,PERIOD_D1,bnHigh);

   Comment("Murrey Math ",DoubleToStr(P,0), " day frame");


//determine fractal.....

   if( PeriodHigh<=250000 && PeriodHigh>25000 )

   fractal=100000;

   else

     if( PeriodHigh<=25000 && PeriodHigh>2500 )

     fractal=10000;

     else

       if( PeriodHigh<=2500 && PeriodHigh>250 )

       fractal=1000;

       else

         if( PeriodHigh<=250 && PeriodHigh>25 )

         fractal=100;

         else

           if( PeriodHigh<=25 && PeriodHigh>12.5 )

           fractal=12.5;

           else

             if( PeriodHigh<=12.5 && PeriodHigh>6.25)

             fractal=12.5;

             else

               if( PeriodHigh<=6.25 && PeriodHigh>3.125 )

               fractal=6.25;

               else

                 if( PeriodHigh<=3.125 && PeriodHigh>1.5625 )

                 fractal=3.125;

                 else

                   if( PeriodHigh<=1.5625 && PeriodHigh>0.390625 )

                   fractal=1.5625;

                   else

                     if( PeriodHigh<=0.390625 && PeriodHigh>0)

                     fractal=0.1953125;

   

   range=(PeriodHigh-PeriodLow);

   sum=MathFloor(MathLog(fractal/range)/MathLog(2));

   octave=fractal*(MathPow(0.5,sum));

   mn=MathFloor(PeriodLow/octave)*octave;

   if( (mn+octave)>PeriodHigh )

      mx=mn+octave; 

   else

      mx=mn+(2*octave);


// calculating xx

//x2

    if( (PeriodLow>=(3*(mx-mn)/16+mn)) && (PeriodHigh<=(9*(mx-mn)/16+mn)) )

         x2=mn+(mx-mn)/2; 

    else x2=0;

//x1

    if( (PeriodLow>=(mn-(mx-mn)/8))&& (PeriodHigh<=(5*(mx-mn)/8+mn)) && (x2==0) )

         x1=mn+(mx-mn)/2; 

    else x1=0;


//x4

    if( (PeriodLow>=(mn+7*(mx-mn)/16))&& (PeriodHigh<=(13*(mx-mn)/16+mn)) )

         x4=mn+3*(mx-mn)/4; 

    else x4=0;


//x5

    if( (PeriodLow>=(mn+3*(mx-mn)/8))&& (PeriodHigh<=(9*(mx-mn)/8+mn))&& (x4==0) )

         x5=mx; 

    else x5=0;


//x3

    if( (PeriodLow>=(mn+(mx-mn)/8))&& (PeriodHigh<=(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;


   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_SOLID);

           ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);

           ObjectSet(buff_str, OBJPROP_WIDTH, mml_wdth[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], 10, "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();

   

   }

 

//---- End Of Program

  return(0);

  } 

whroeder1
13624
whroeder1 2015.01.10 12:46  
jokergbck: i would like to do is to reduce the length of the horizontal lines ... explain how to do it
Here is the coding of the indicator.

ObjectCreate(buff_str, OBJ_HLINE, 0,Time[0], mml[i]);
  1. Don't paste code
    Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. Use trend lines (OBJ_TREND) instead of horizontal lines so you can control the start and end dates.
mike
32
mike 2015.01.10 13:22  
OK, thank you.. i'll try that
mike
32
mike 2015.01.10 14:06  

Hi,

i did make the change but now it's displaying trendline which is not really what i was looking for. i'm posting a chart so you can see what it look like.

I just would like the horizontal line to be shorter

thanks guys  

without modificationwith OBJ_TREND 

WHRoeder:

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. Use trend lines (OBJ_TLINE) instead of horizontal lines so you can control the start and end dates.
mike
32
mike 2015.01.11 10:11  
anyone? please
Alain Verleyen
Moderator
28624
Alain Verleyen 2015.01.11 13:17  
jokergbck:
anyone? please

The answer from WHRoeder is the good one, but you have to apply it correctly. A trend line needs 2 points (time, price). For an horizontal line the price should be the same, and you have to set time1 and time2 at the start and end point.

You also have to set the OBJPROP_RAY to false.

ffoorr
985
ffoorr 2015.01.11 16:09  
Please edit your post.
mike
32
mike 2015.01.11 19:45  
angevoyageur:

The answer from WHRoeder is the good one, but you have to apply it correctly. A trend line needs 2 points (time, price). For an horizontal line the price should be the same, and you have to set time1 and time2 at the start and end point.

You also have to set the OBJPROP_RAY to false.

Thank you
mike
32
mike 2015.01.24 15:22  
ffoorr:
Please edit your post.
Sorry, i tried but there is no option edit near the post.Only reply :(
ffoorr
985
ffoorr 2015.01.24 15:54  

ho well !

jokergbck:
Sorry, i tried but there is no option edit near the post.Only reply :(

use these extern to control the lines

extern int thickness_write = 9;
extern int shift_write = 200;
extern int line_first = 400;
extern int line_last = 100;
extern bool line_rayon = false;

 here it is, good trades :

Files:
whroeder1
13624
whroeder1 2015.01.24 17:08  
jokergbck: 2015.01.10 11:35 i'm trying
jokergbck: 2015.01.11 20:45 Thank you
jokergbck: 2015.01.24 16:22 Sorry, i tried but there is no option edit near the post.Only reply :(
You could have, when we first asked. Not a week later.
/ /12
To add comments, please log in or register