ZigZag_Fibo_v2beta

ZigZag_Fibo_v2beta
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
ZigZag_Fibo_v2beta
// 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); 
   }
//
  
   

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---