//+------------------------------------------------------------------+ //| Fractals.mq4 | //| Copyright © 2009, صëûٌٍîâ آëàنèىً | //| ٌmillion@narod.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, صëûٌٍîâ آëàنèىً" #property link "ٌmillion@narod.ru" #property indicator_chart_window //double Fr_Buffer[]; double Fr_UPPER,Fr_LOWER,High_Fr_LOWER,High_Fr_LOWER_2; double High_Win,Low_Win,shift_X,shift_Y; int per,T_Fr_LOWER,T_Fr_UPPER,Low_Fr_UPPER,Low_Fr_UPPER_2,Level_new; string ٍهêٌٍ,دإذبخؤ; extern color ضآإز_UP=Yellow; extern color ضآإز_DN=Magenta; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { del(); Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL); //حàُîنèى ىèيèىàëüيî نîïٌٍَèىûé TakeProft è StopLoss per =Period(); دإذبخؤ=string_ïهً(per); Comment("شذہتزہثغ "+دإذبخؤ+" "+âًهىے(CurTime())); return(0); } //+------------------------------------------------------------------+ //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ////////////////////////////////////////////////////////////////////// //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int start() { Fr_UPPER=0; Fr_LOWER=100000; High_Win = WindowPriceMax(); Low_Win = WindowPriceMin(); shift_X = WindowBarsPerChart()/80*per; shift_Y = (High_Win-Low_Win) / 50; int s=0; for(int n=WindowBarsPerChart(); n>=0; n--) Fractal(n); /* if (Fractal(n)!=0) { s++; ObjectDelete ("Name1 "+s); ObjectCreate ("Name1 "+s, OBJ_LABEL, 0, 0, 0);// رîçنàيèه îلْ. ObjectSetText("Name1 "+s, n+" "+DoubleToStr(Fr_UPPER,Digits)+" "+DoubleToStr(Fr_LOWER,Digits) ,8,"Arial"); ObjectSet ("Name1 "+s, OBJPROP_CORNER, 3); ObjectSet ("Name1 "+s, OBJPROP_XDISTANCE, 10); ObjectSet ("Name1 "+s, OBJPROP_YDISTANCE, 10+10*s); ObjectSet ("Name1 "+s, OBJPROP_COLOR, White); // ضâهٍ }*/ return; // آûُîن èç deinit() } //*////////////////////////////////////////////////////////////////*// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ////////////////////////////////////////////////////////////////////// int Fractal(int br) { double Fr_Up = iFractals(NULL, 0, MODE_UPPER, br+3); double Fr_Dn = iFractals(NULL, 0, MODE_LOWER, br+3); if (Fr_Dn==0 && Fr_Up==0) return(0); string sTime = âًهىے(Time[br+3])+" "+دإذبخؤ; int ٌèëà=0,ًû÷àم=0,i; //----------------------------------- يèويèé ôًàêٍàë --------------------------------------------------------------------------------------------------- if (Fr_Dn!=0 && Fr_LOWER > Fr_Dn) { Fr_LOWER = Fr_Dn; High_Fr_LOWER=High[br+3]; High_Fr_LOWER_2=High[br+2]; T_Fr_LOWER=Time[br+3]; if (Fr_UPPER>0 && (Fr_UPPER-Open[br])>(Open[br]-Fr_LOWER))//ôîًىèًîâàيèه ïهًهëîىà { ObjectCreate("Fr "+sTime+" LOWER ", OBJ_ARROW,0,Time[br+3],Fr_Dn-shift_Y*2,0,0,0,0); ObjectSet ("Fr "+sTime+" LOWER ", OBJPROP_ARROWCODE,218); ObjectSet ("Fr "+sTime+" LOWER ", OBJPROP_COLOR,ضآإز_DN ); ObjectCreate("Fr sl "+sTime+" start_LOWER", OBJ_TREND, 0 ,T_Fr_UPPER,Fr_UPPER, T_Fr_LOWER,Fr_LOWER); ObjectSet ("Fr sl "+sTime+" start_LOWER", OBJPROP_COLOR, ضآإز_DN); // ضâهٍ ObjectSet ("Fr sl "+sTime+" start_LOWER", OBJPROP_STYLE, STYLE_DOT);// رٍèëü ObjectSet ("Fr sl "+sTime+" start_LOWER", OBJPROP_BACK, true); ObjectSet ("Fr sl "+sTime+" start_LOWER", OBJPROP_RAY, false); // ثَ÷ ٌèëà=0; for (i=1; i<=5; i++) {color_bar(per,br+i,Fr_Dn-shift_Y); if (رâه÷a_ِâهٍ(per,br+i)==1||رâه÷a_ِâهٍ(per,br+i)==4) ٌèëà++;} ًû÷àم=(Fr_UPPER-Fr_LOWER)/Point/Level_new; ٍهêٌٍ = "Fr "+sTime+" LOWERٌèëà"+" ً "+DoubleToStr(ًû÷àم,0)+"-"+DoubleToStr((Open[br]-Fr_LOWER)/Point/Level_new,0)+" لàً "+DoubleToStr((T_Fr_LOWER-T_Fr_UPPER)/per/60,0)+" MACD "+DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN ,br+3),Digits)+ " ٌ "+DoubleToStr(ٌèëà,0)+" "+string_ïهً(per); ObjectDelete (ٍهêٌٍ); ObjectCreate (ٍهêٌٍ, OBJ_TEXT,0,Time[br+3],Fr_Dn-shift_Y*3.2,0,0,0,0); ObjectSetText(ٍهêٌٍ,DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN ,br+3),Digits)+" "+DoubleToStr(iMFI(NULL,per,15,br+3),0),8,"Arial"); ObjectSet (ٍهêٌٍ, OBJPROP_COLOR, ضآإز_DN); Fr_UPPER=0;T_Fr_UPPER=0;Low_Fr_UPPER=0;Low_Fr_UPPER_2=0; return(1); } } //----------------------------------- âهًُيèé ôًàêٍàë --------------------------------------------------------------------------------------------------- if (Fr_Up!=0 && Fr_UPPER < Fr_Up) { Fr_UPPER=Fr_Up; Low_Fr_UPPER=Low[br+3]; Low_Fr_UPPER_2=Low[br+2]; T_Fr_UPPER=Time[br+3]; if (Fr_LOWER<100000 && (Fr_UPPER-Open[br])<(Open[br]-Fr_LOWER))//ôîًىèًîâàيèه ïهًهëîىà { ObjectCreate("Fr "+sTime+" UPPER", OBJ_ARROW,0,Time[br+3],Fr_Up+shift_Y*2,0,0,0,0); ObjectSet ("Fr "+sTime+" UPPER", OBJPROP_ARROWCODE,217); ObjectSet ("Fr "+sTime+" UPPER", OBJPROP_COLOR,ضآإز_UP ); ObjectCreate("Fr su "+sTime+" start_UPPER", OBJ_TREND, 0, T_Fr_LOWER,Fr_LOWER ,T_Fr_UPPER,Fr_UPPER); ObjectSet ("Fr su "+sTime+" start_UPPER", OBJPROP_COLOR, ضآإز_UP); // ضâهٍ ObjectSet ("Fr su "+sTime+" start_UPPER", OBJPROP_STYLE, STYLE_SOLID);// رٍèëü ObjectSet ("Fr su "+sTime+" start_UPPER", OBJPROP_BACK, true); ObjectSet ("Fr su "+sTime+" start_UPPER", OBJPROP_RAY, false); // ثَ÷ ٌèëà=0; for (i=1; i<=5; i++) {color_bar(per,br+i,Fr_Up+shift_Y);if (رâه÷a_ِâهٍ(per,br+i)==1||رâه÷a_ِâهٍ(per,br+i)==4) ٌèëà++;} ًû÷àم=(Fr_UPPER-Fr_LOWER)/Point/Level_new; ٍهêٌٍ="Fr "+sTime+" UPPERٌèëà"+" ً "+DoubleToStr(ًû÷àم,0)+"-"+DoubleToStr((Fr_UPPER-Open[br])/Point/Level_new,0)+" لàً "+DoubleToStr((T_Fr_UPPER-T_Fr_LOWER)/per/60,0)+" MACD "+" ٌ "+DoubleToStr(ٌèëà,0)+" "+string_ïهً(per); ObjectDelete (ٍهêٌٍ); ObjectCreate (ٍهêٌٍ, OBJ_TEXT,0,Time[br+3],Fr_Up+shift_Y*3.0,0,0,0,0); ObjectSetText(ٍهêٌٍ, DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN ,br+3),Digits)+" "+DoubleToStr(iMFI(NULL,per,15,br+3),0) ,8,"Arial"); ObjectSet (ٍهêٌٍ, OBJPROP_COLOR, ضآإز_UP); Fr_LOWER=100000;T_Fr_LOWER=0;High_Fr_LOWER=0;High_Fr_LOWER_2=0; return(-1); } } //---------------------------- return(0); } ////////////////////////////////////////////////////////////////////// // Fractal ////////////////////////////////////////////////////////////////////// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //*////////////////////////////////////////////////////////////////*// int deinit() // رïهِ. ô-èے deinit() { del(); return; // آûُîن èç deinit() } //*////////////////////////////////////////////////////////////////*// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //*////////////////////////////////////////////////////////////////*// int del() // رïهِ. ô-èے deinit() { for(int n=ObjectsTotal()-1; n>=0; n--) { string Obj_Name=ObjectName(n); if (StringFind(Obj_Name,"Fr",0) != -1) { ObjectDelete(Obj_Name); } } return; // آûُîن èç deinit() } //*////////////////////////////////////////////////////////////////*// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو /////////////////////////////////////////////////////////////////// string âًهىے(int taim) { string sTaim; //int YY=TimeYear(taim); // Year int MN=TimeMonth(taim); // Month int DD=TimeDay(taim); // Day int HH=TimeHour(taim); // Hour int MM=TimeMinute(taim); // Minute if (DD<10) sTaim = "0"+DoubleToStr(DD,0); else sTaim = DoubleToStr(DD,0); sTaim = sTaim+"/"; if (MN<10) sTaim = sTaim+"0"+DoubleToStr(MN,0); else sTaim = sTaim+DoubleToStr(MN,0); sTaim = sTaim+" "; if (HH<10) sTaim = sTaim+"0"+DoubleToStr(HH,0); else sTaim = sTaim+DoubleToStr(HH,0); if (MM<10) sTaim = sTaim+":0"+DoubleToStr(MM,0); else sTaim = sTaim+":"+DoubleToStr(MM,0); return(sTaim); } //*////////////////////////////////////////////////////////////////*// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ////////////////////////////////////////////////////////////////////// // ًàٌêًàٌêà لàًà //------------------------------------------------------------------- int color_bar(int per, int br, double Y) { int X = iTime ( NULL, per, br); string sTime = âًهىے(Time[br]); color ضآإز; switch(رâه÷a_ِâهٍ(per,br))//ِâهٍ ٌâه÷è MFI { case 1 ://اهëهيûé ضآإز=Lime;break; case 2 ://سâےنà‏ùèé ضآإز=Sienna;break; case 3 ://شàëüّèâûé ضآإز=Blue;break; case 4 ://دًèٌهنà‏ùèé} ضآإز=DeepPink;break; default: ضآإز=White; } ObjectDelete("Fr color_bar "+sTime); ObjectCreate("Fr color_bar "+sTime, OBJ_ARROW,0,X,Y,0,0,0,0); ObjectSet ("Fr color_bar "+sTime, OBJPROP_ARROWCODE,117); ObjectSet ("Fr color_bar "+sTime, OBJPROP_COLOR,ضآإز ); ObjectSet ("Fr color_bar "+sTime, OBJPROP_WIDTH, 0); ObjectSet ("Fr color_bar "+sTime, OBJPROP_BACK, true); } ////////////////////////////////////////////////////////////////////// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ////////////////////////////////////////////////////////////////////// int رâه÷a_ِâهٍ(int per, int br) { if ( iVolume(NULL, per, br) > iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) > iBWMFI(NULL, per, br+1) ) return(1); //اهëهيûé if ( iVolume(NULL, per, br) < iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) < iBWMFI(NULL, per, br+1) ) return(2); //سâےنà‏ùèé if ( iVolume(NULL, per, br) < iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) > iBWMFI(NULL, per, br+1) ) return(3); //شàëüّèâûé if ( iVolume(NULL, per, br) > iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) < iBWMFI(NULL, per, br+1) ) return(4); //دًèٌهنà‏ùèé return(0);//îّèلêà } ////////////////////////////////////////////////////////////////////// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو //*////////////////////////////////////////////////////////////////*// string string_ïهً(int per) { switch(per) { case 1 : return("M_1"); //1 ىèيٍَà break; case 5 : return("M_5"); //5 ىèيٍَ break; case 15 : return("M15"); //15 ىèيٍَ break; case 30 : return("M30"); //30 ىèيٍَ break; case 60 : return("H 1"); //1 ÷àٌ break; case 240 : return("H_4"); //4 ÷àٌà break; case 1440 : return("D_1"); //1 نهيü break; case 10080: return("W_1"); //1 يهنهëے break; case 43200: return("MN1"); //1 ىهٌےِ break; } return("îّèلêà ïهًèîنà"); } //*////////////////////////////////////////////////////////////////*// //ووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو