// fukinagashi #include <stdlib.mqh> #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters extern int ExtDepth=5; extern int ExtDeviation=4; extern int ExtBackstep=6; extern color FibColor1= Yellow; extern bool Corner_of_Chart_RIGHT_TOP = false; extern int level1=0.25; extern int level2=0.50; extern int level3=0.75; extern int level4=1.00; extern int level5=0.00; //---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer2[]; double level_array[13]={0,0.25,0.50,0.75,1}; string leveldesc_array[13]={"0","25%","50%","75%","100%"}; double level_array2[13]={0.25}; string leveldesc_array2[13]={"25%"+ ")" + " - %$"} ; double level_array3[13]={0.5}; int level_count; string level_name; double text_y; int OldLastZigZag, OldPreviousZigZag; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //string level_array[13]={0,level1,level2,level3,level4,level5}; IndicatorBuffers(2); //---- drawing settings SetIndexStyle(0,DRAW_SECTION); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(0,0.0); ArraySetAsSeries(ExtMapBuffer,true); ArraySetAsSeries(ExtMapBuffer2,true); //---- indicator short name IndicatorShortName("Fibodrawer"); //---- initialization done return(0); } int deinit() { ObjectDelete("Fibo"); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { string SPREAD="",PIPS="",PRC,Pips="",PIPS2="",PIPS3=""; double OPEN = iOpen(NULL,1440,0); double CLOSE = iClose(NULL,1440,0); double SPRD = (Ask - Bid)/Point; //double SPRD = fibolevel*0.25 - fibolevel*0.50;///Point; PIPS = DoubleToStr((CLOSE-OPEN)/Point,0); SPREAD = (DoubleToStr(SPRD,Digits-4)); PIPS2= (OBJPROP_FIRSTLEVEL)*Ask;//+ level_array2[0] - level_array3[0])* 2; //PIPS2= (level_array2[0] - level_array3[0]+ 0.618)* 2;//(Ask+ level_array2[13])/Point;//1,0.382;//*;,ObjectGetFiboDescription //PIPS2 = (DoubleToStr(PIPS3,Digits-1)); datetime date = D'2009.07.10'; date -= 7*24*60*60; Print( TimeToStr(date) ); int shift, back,lasthighpos,lastlowpos; double val,res; double curlow,curhigh,lasthigh,lastlow; for(shift=Bars-ExtDepth; shift>=0; shift--) { val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer[shift+back]; if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; } } } ExtMapBuffer[shift]=val; //--- high val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer2[shift+back]; if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; } } } ExtMapBuffer2[shift]=val; } // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlow=ExtMapBuffer[shift]; curhigh=ExtMapBuffer2[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0; else ExtMapBuffer2[shift]=0; } //--- if(lasthigh<curhigh || lasthigh<0) { lasthigh=curhigh; lasthighpos=shift; } lastlow=-1; } //---- if(curlow!=0) { if(lastlow>0) { if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0; else ExtMapBuffer[shift]=0; } //--- if((curlow<lastlow)||(lastlow<0)) { lastlow=curlow; lastlowpos=shift; } lasthigh=-1; } } for(shift=Bars-1; shift>=0; shift--) { if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0; else { res=ExtMapBuffer2[shift]; if(res!=0.0) ExtMapBuffer[shift]=res; } } for(int i=0;i<32;i++) int LastZigZag, PreviousZigZag; int h=0; while ( ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) { h++; } LastZigZag=h; h++; while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) { h++; } PreviousZigZag=h; if (OldLastZigZag!=LastZigZag || OldPreviousZigZag!=PreviousZigZag) { OldLastZigZag=LastZigZag; OldPreviousZigZag=PreviousZigZag; ObjectDelete("Fibo"); //ObjectDelete("Line1"); //ObjectDelete("Line2"); ObjectDelete("Fibo1"); ObjectDelete("Fibo2"); ObjectDelete("Fibo3"); ObjectDelete("MMLEVELS9"); ObjectDelete("MMLEVELS10"); // START DRAWING FIBS ObjectCreate("Fibo", OBJ_FIBO,0, Time[5], ExtMapBuffer[LastZigZag], Time[0], ExtMapBuffer[PreviousZigZag]); ObjectSet("Fibo", OBJPROP_COLOR, Red); ObjectSet("Fibo", OBJPROP_STYLE, STYLE_DASHDOT); ObjectSet("Fibo", OBJPROP_FIBOLEVELS, level_count); ObjectSet("Fibo", OBJPROP_RAY, 0 ); for(int j=0; j<level_count; j++) {//Print(j," ",[j]); ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+j, level_array[j]); ObjectSetFiboDescription("Fibo",j,leveldesc_array[j] + ")" + " - %$"); ObjectSet( "Fibo", OBJPROP_LEVELCOLOR, FibColor1) ; ObjectSet("Fibo",OBJPROP_LEVELSTYLE,STYLE_DOT); ObjectSet("Fibo", OBJPROP_RAY, 0 ); //+------------------------------------------------------------------+ //| NOUVEAU | //+------------------------------------------------------------------+ //ObjectCreate("Line1", OBJ_TREND, 0, Time[20], Low[20], Time[0], Low[20]); //ObjectSet("Line1", OBJPROP_COLOR, Yellow ); //ObjectSet("Line1", OBJPROP_RAY, 0 ); //ObjectCreate("Line2", OBJ_TREND, 0, Time[20], High[20], Time[0], High[0]); //ObjectSet("Line2", OBJPROP_COLOR, White ); //ObjectSet("Line2", OBJPROP_RAY, 0 ); } // START DRAWING FIBS # ObjectCreate("Fibo1", OBJ_FIBO,0, Time[3], ExtMapBuffer[LastZigZag], Time[1], ExtMapBuffer[PreviousZigZag]); //ObjectSet("Fibo1",OBJPROP_FIRSTLEVEL+1,0.382); //ObjectSetFiboDescription("Fibo1",j,leveldesc_array2[j] + ")" + " - %$"); //ObjectSetText("Fibo1",""+level_array2[j]+"", 15, "Arial Bold", Yellow); //ObjectSet("Fibo1", OBJPROP_COLOR, White); //ObjectSet("Fibo1", OBJPROP_STYLE, STYLE_SOLID); ObjectSet("Fibo1", OBJPROP_FIBOLEVELS, level_count); ObjectSet("Fibo1",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("Fibo1", 1, "38.2" + ")" + " - %$"); ObjectSet( "Fibo1", OBJPROP_LEVELCOLOR, Pink) ; ObjectSet("Fibo1",OBJPROP_LEVELSTYLE,SYMBOL_LEFTPRICE); //#include <stdlib.mqh> // string text; // for(int i=0;i<32;i++) // { // { // text=ObjectGetFiboDescription("Fibo3",i); // //---- checking whether the objects has less than 32 levels //if(GetLastError()!=ERR_NO_ERROR) break; // Print("Fibo3","level: ",i," description: ",text); // } ObjectCreate("Fibo3", OBJ_TEXT, 0, 0, 0); ObjectSetText("Fibo3",0, 10, "Arial Bold", Lime); //ObjectGetFiboDescription, ObjectGetFiboDescription ObjectSet("Fibo3", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP); ObjectSet("Fibo3", OBJPROP_XDISTANCE, 40); ObjectSet("Fibo3", OBJPROP_YDISTANCE, 205); } //ObjectCreate("Fibo1", OBJ_LABEL, 0, 0, 0); //ObjectSet("Fibo1",OBJPROP_FIRSTLEVEL+j, level_array2[j]); //ObjectSet("Fibo1", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP); //ObjectSet("Fibo1", OBJPROP_XDISTANCE, 40); //ObjectSet("Fibo1", OBJPROP_YDISTANCE, 125); //ObjectSet("Fibo1",OBJPROP_FIRSTLEVEL+1,0.382); //ObjectSetFiboDescription("Fibo1", 1, "38.2 --> "+DoubleToStr(fiboPrice*0.382+fiboPrice1, cPoint) ); ObjectCreate("Fibo2", OBJ_LABEL, 0, 0, 0); ObjectSetText("Fibo2", "Upper Target= "+PIPS2+"", 10, "Arial Bold", Lime); ObjectSet("Fibo2", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP); ObjectSet("Fibo2", OBJPROP_XDISTANCE, 40); ObjectSet("Fibo2", OBJPROP_YDISTANCE, 165); ObjectCreate("MMLEVELS9", OBJ_LABEL, 0, 0, 0); ObjectSetText("MMLEVELS9","Pips to Open", 9, "Arial", White); ObjectSet("MMLEVELS9", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP); ObjectSet("MMLEVELS9", OBJPROP_XDISTANCE, 40); ObjectSet("MMLEVELS9", OBJPROP_YDISTANCE, 75); ObjectCreate("MMLEVELS10", OBJ_LABEL, 0, 0, 0); ObjectSetText("MMLEVELS10",""+PIPS+"", 9, "Arial Bold", Yellow); ObjectSet("MMLEVELS10", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP); ObjectSet("MMLEVELS10", OBJPROP_XDISTANCE, 10); ObjectSet("MMLEVELS10", OBJPROP_YDISTANCE, 75); //string ObjectGetFiboDescription( string name, int index); // new text object //if(!ObjectCreate("text_object", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045)) //{ //Print("error: can't create text_object! code #",GetLastError()); //return(0); //} // new label object //if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0)) //{ //Print("error: can't create label_object! code #",GetLastError()); //return(0); //} //ObjectSet("label_object", OBJPROP_XDISTANCE, 200); //ObjectSet("label_object", OBJPROP_YDISTANCE, 100); //Alert("New ZigZag and new Fibo drawn"); //PlaySound("alert.wav"); level_count=ArraySize(level_array); level_count=ArraySize(level_array2); //Alert(level_count); } //
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains close prices for each bar
Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_SECTION
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: