//+------------------------------------------------------------------+ //| Murrey_Math_Modified.mq4 | //| rewritten by CrazyChart | //| | //+------------------------------------------------------------------+ #property copyright "Murrey_Math_Modified. MetaTrader4 conversion created by PaVeL (CrazyChart)" #property link "mailto:newcomer2003@yandex.ru" #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Yellow #property indicator_color2 Red #property indicator_color3 DarkGreen #property indicator_color4 Blue #property indicator_color5 DarkGreen #property indicator_color6 Red #property indicator_color7 Yellow #property indicator_color8 Aqua //---- input parameters extern int CountBars = 500; extern int ExtParam2; extern int ExtParam3; extern double myVar; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; //---- input parameters extern int beginer=0; extern int periodtotake=64; extern int SomeVar=0; int shift=0,i2=0,WorkTime=0,Periods=0; double sum=0,v1=0,v2=0,fractal=0; double v45=0,mml00=0,mml0=0,mml1=0,mml2=0,mml3=0,mml4=0,mml5=0,mml6=0,mml7=0,mml8=0,mml9=0,mml98=0,mml99=0; double range=0,octave=0,mn=0,mx=0,price=0; double finalH=0,finalL=0; double x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,y1=0,y2=0,y3=0,y4=0,y5=0,y6; //string textArray[mm11_txt,mm12_txt,mm1_txt,mm2_txt,mm3_txt,mm4_txt,mm5_txt,mm6_txt,mm7_txt,mm8_txt,mm9_txt,mm-1_txt,mm-2_txt]; string textArray[13]={"mm11_txt","mm12_txt","mm1_txt","mm2_txt","mm3_txt","mm4_txt","mm5_txt","mm6_txt","mm7_txt","mm8_txt","mm9_txt","mm-1_txt","mm-2_txt"}; //string lineArray[13]={"mm11","mm12","mm1","mm2","mm3","mm4","mm5","mm6","mm7","mm8","mm9","mm-1","mm-2"}; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; IndicatorBuffers(8); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexDrawBegin(0,0); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); SetIndexDrawBegin(1,0); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); SetIndexEmptyValue(2,0.0); SetIndexDrawBegin(2,0); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,ExtMapBuffer4); SetIndexEmptyValue(3,0.0); SetIndexDrawBegin(3,0); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,ExtMapBuffer5); SetIndexEmptyValue(4,0.0); SetIndexDrawBegin(4,0); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,ExtMapBuffer6); SetIndexEmptyValue(5,0.0); SetIndexDrawBegin(5,0); SetIndexStyle(6,DRAW_LINE); SetIndexBuffer(6,ExtMapBuffer7); SetIndexEmptyValue(6,0.0); SetIndexDrawBegin(6,0); SetIndexStyle(7,DRAW_LINE); SetIndexBuffer(7,ExtMapBuffer8); SetIndexEmptyValue(7,0.0); SetIndexDrawBegin(7,0); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here ObjectsDeleteAll(0, OBJ_HLINE); int count=ArraySize(textArray); for(int ch=0;ch=Bars) CountBars=Bars; SetIndexDrawBegin(0,Bars-CountBars); SetIndexDrawBegin(1,Bars-CountBars); SetIndexDrawBegin(2,Bars-CountBars); SetIndexDrawBegin(3,Bars-CountBars); SetIndexDrawBegin(4,Bars-CountBars); SetIndexDrawBegin(5,Bars-CountBars); SetIndexDrawBegin(6,Bars-CountBars); SetIndexDrawBegin(7,Bars-CountBars); //int counted_bars=IndicatorCounted(),CountBars; //if (CountBars>=Bars) CountBars=Bars; //SetIndexDrawBegin(0,Bars-CountBars); //SetIndexDrawBegin(1,Bars-CountBars); //for (shift=1;shift<=0;shift--) { if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=1;i<=0;i++) { ExtMapBuffer1[Bars-i]=0.0; ExtMapBuffer2[Bars-i]=0.0; ExtMapBuffer3[Bars-i]=0.0; ExtMapBuffer4[Bars-i]=0.0; ExtMapBuffer5[Bars-i]=0.0; ExtMapBuffer6[Bars-i]=0.0; ExtMapBuffer7[Bars-i]=0.0; ExtMapBuffer8[Bars-i]=0.0; } if( (WorkTime != Time[0]) || (Periods != Period()) ) { for (i=limit;i>0;i--) { //price ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=0; ExtMapBuffer3[i]=0; ExtMapBuffer4[i]=0; ExtMapBuffer5[i]=0; ExtMapBuffer6[i]=0; ExtMapBuffer7[i]=0; ExtMapBuffer8[i]=0; v1=(Low[Lowest(NULL,0,MODE_LOW,periodtotake+SomeVar,i+beginer)]); v2=(High[Highest(NULL,0,MODE_HIGH,periodtotake+SomeVar,i+beginer)]); //We would like to figure out these fractals //triangle set OK 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; //debugging(((( //v2=1.5625; //v2=0.391625; range=(v2-v1); sum=MathFloor(MathLog(fractal/range)/MathLog(2)); octave=fractal*(MathPow(0.5,sum)); //Alert("Пьяный индюк говорит, ик... октав = "+ octave); 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 when we have no sbj, du {} 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; v45=(finalH-finalL)/8; mml00=(finalL-v45*2); //-2/8 mml0=(finalL-v45); //-1/8 mml1=(finalL);// 0/8 mml2=(finalL+v45);// 1/8 mml3=(finalL+2*v45); // 2/8 mml4=(finalL+3*v45); // 3/8 mml5=(finalL+4*v45); // 4/8 mml6=(finalL+5*v45); // 5/8 mml7=(finalL+6*v45); // 6/8 mml8=(finalL+7*v45);// 7/8 mml9=(finalL+8*v45);// 8/8 mml99=(finalL+9*v45);// +1/8 mml98=(finalL+10*v45);// +2/8 ExtMapBuffer1[i]=mml2; ExtMapBuffer2[i]=mml3; ExtMapBuffer3[i]=mml4; ExtMapBuffer4[i]=mml5; ExtMapBuffer5[i]=mml6; ExtMapBuffer6[i]=mml7; ExtMapBuffer7[i]=mml8; ExtMapBuffer8[i]=mml9; //ExtMapBuffer1[shift]=0.0; //ExtMapBuffer2[shift]=0.0; if(GetLastError()!=0) Alert("Some error message"); } //дальше пишем текст //******************* /* ObjectCreate("mm11_txt",OBJ_TEXT,0,Time[30],mml00,Time[30],mml00); //тайм 30-2/8 блин ObjectSetText("mm11_txt","-2/8",10,"Arial",Magenta); //mm11_txt,mm12_txt,mm1_txt,mm2_txt,mm3_txt,mm4_txt,mm5_txt,mm6_txt,mm7_txt,mm8_txt,mm9_txt,mm-1_txt,mm-2_txt,,, ObjectCreate("mm12_txt",OBJ_TEXT,0,Time[30],mml0,Time[30],mml0); ObjectSetText("mm12_txt","-1/8 ",10,"Arial",Pink); //+"ч"+v45+"mx"+mx ObjectCreate("mm1_txt",OBJ_TEXT,0,Time[30],mml1,Time[30],mml1); ObjectSetText("mm1_txt","0/8 ",10,"Arial",Yellow); ObjectCreate("mm2_txt",OBJ_TEXT,0,Time[30],mml2,Time[30],mml2); ObjectSetText("mm2_txt","1/8 ",10,"Arial",Orange); ObjectCreate("mm3_txt",OBJ_TEXT,0,Time[30],mml3,Time[30],mml3); ObjectSetText("mm3_txt","2/8 ",10,"Arial",Red); ObjectCreate("mm4_txt",OBJ_TEXT,0,Time[30],mml4,Time[30],mml4); ObjectSetText("mm4_txt","3/8 ",10,"Arial",Green); ObjectCreate("mm5_txt",OBJ_TEXT,0,Time[30],mml5,Time[30],mml5); ObjectSetText("mm5_txt","4/8 ",10,"Arial",Blue); ObjectCreate("mm6_txt",OBJ_TEXT,0,Time[30],mml6,Time[30],mml6); ObjectSetText("mm6_txt","5/8 ",10,"Arial",Green); ObjectCreate("mm7_txt",OBJ_TEXT,0,Time[30],mml7,Time[30],mml7); ObjectSetText("mm7_txt","6/8 ",10,"Arial",Red); ObjectCreate("mm8_txt",OBJ_TEXT,0,Time[30],mml8,Time[30],mml8); ObjectSetText("mm8_txt","7/8 ",10,"Arial",Orange); ObjectCreate("mm9_txt",OBJ_TEXT,0,Time[30],mml9,Time[30],mml9); ObjectSetText("mm9_txt","8/8 ",10,"Arial",Blue); ObjectCreate("mm-1_txt",OBJ_TEXT,0,Time[30],mml99,Time[30],mml99); ObjectSetText("mm-1_txt","+1/8 ",10,"Arial",Pink); ObjectCreate("mm-2_txt",OBJ_TEXT,0,Time[30],mml98,Time[30],mml98); ObjectSetText("mm-2_txt","+2/8 ",10,"Arial",Magenta); */ WorkTime = Time[0]; Periods= Period(); } //---- return(0); }