DoubleZigzag

Author: Maksimus
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
DoubleZigzag
//+------------------------------------------------------------------+
//|                                                  DoubleZigzag.mq4 |
//|                                                         Maksimus |
//|                                                                  |
//+------------------------------------------------------------------+
//Ðàáîòàåò EURUSD M5


#property copyright "Maksimus"
#property link      ""
datetime LastOpenTime=D'01.01.2004';
double Ppoint=1888.0;
double Spoint=1888.0;
double Bpoint=888.0;
extern double k=2.1;
extern double k2=2.1;
extern int h=21;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
double a=0.0;
int tik=0;

int i;
double a0=0.0,b0=0.0;
double au=0.0,bu=0.0;
double ad=0.0,bd=0.0;
int z=0, p=0,up=0,dw=0;
double vu[3]={0.0,0.0,0.0};
double vd[3]={0.0,0.0,0.0};

if( (LastOpenTime!=iTime(Symbol(),PERIOD_H1,0))  &&  ((TimeHour(iTime(Symbol(),PERIOD_H1,0))==h))  )
{

for(i=1;i<8888;i++)
{

a0=iCustom(NULL,0,"ZigZag",13,5,3,0,i);
b0=iCustom(NULL,0,"ZigZag",13*8,5*8,3*8,0,i); 

au=iCustom(NULL,0,"ZigZag",13,5,3,1,i);
bu=iCustom(NULL,0,"ZigZag",13*8,5*8,3*8,1,i); 

ad=iCustom(NULL,0,"ZigZag",13,5,3,2,i);
bd=iCustom(NULL,0,"ZigZag",13*8,5*8,3*8,2,i); 

if((a0==b0)&&(au==bu)&&(a0!=0)&&(a0==au))
   {
   vu[z]=a0;
   p=1;
   z++;
   }
if((a0==b0)&&(ad==bd)&&(a0!=0)&&(a0==ad))
   {
   vd[z]=a0;
   p=-1;
   z++;
   }
if(z>2)
    break;
   
if({a0!=0}&&(p==1)&&((a0==au)||((a0==ad))))
   up++;
if({a0!=0}&&(p==-1)&&((a0==au)||((a0==ad))))
   dw++;   
}
if(z<2)
   {
   Print("Ìàëî âåðøèí");
   return(0);
   }

if((up>dw*k)&&(vu[0]>vd[1])&&(vu[2]>vd[1])&&(vd[1]>0)&&((vu[2]-vd[1])*k2<(vu[0]-vd[1])))
   {
   ordercl(-1);
   if(OrdersTotal()==0)
   tik=OrderSend(Symbol(),OP_BUY,0.01,Ask,8,0,0,"",898);     
   }

if((up*k<dw)&&(vd[0]<vu[1])&&(vd[2]<vu[1])&&(vu[1]>0)&&((vu[1]-vd[2])*k2<(vu[1]-vd[0])))
   {
   ordercl(1);   
   if(OrdersTotal()==0)
   tik=OrderSend(Symbol(),OP_SELL,0.01,Bid,8,0,0,"",898);  
   }

}
LastOpenTime=iTime(Symbol(),PERIOD_H1,0);
//----
   return(0);
  }
//+------------------------------------------------------------------+



void ordercl(int p)
{
int i;


   
   
   
int total=OrdersTotal();

   for(i=0; i<total; i++)
     {     
     if(OrderSelect(i,SELECT_BY_POS)==true)
      {
     // if((TimeCurrent()-OrderOpenTime())<24*60*60) return(1);
      
      if((OrderType()==OP_SELL)&&(p==-1))
               {
      
               OrderClose(OrderTicket(),OrderLots(),Ask,5,Blue);
               }
      
      if((OrderType()==OP_BUY)&&(p==1))  
               {
               
               OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
               }
     
     if((OrderType()==OP_SELLLIMIT)&&(p==-1))
               {
               OrderDelete(OrderTicket());
               }
      
     if((OrderType()==OP_BUYLIMIT)&&(p==1))  
               {
               OrderDelete(OrderTicket());
               }
      
     if((OrderType()==OP_SELLSTOP)&&(p==-1))
               {
               OrderDelete(OrderTicket());
               }
      
     if((OrderType()==OP_BUYSTOP)&&(p==1))  
               {
               OrderDelete(OrderTicket());
               }
      
      
      
      }
 
      
   }
if((p==1)&&(ch(1)==1))
   ordercl(1);
if((p==-1)&&(ch(-1)==1))
   ordercl(-1);

}








double ch(int p)
   {



int i;
int total=OrdersTotal();

   for(i=0; i<total; i++)
     {     
     if(OrderSelect(i,SELECT_BY_POS)==true)
      {
     // if((TimeCurrent()-OrderOpenTime())<24*60*60) return(1);
      
      if((OrderType()==OP_SELL)&&(p==-1))
               {
      
               return (1);
               }
      
      if((OrderType()==OP_BUY)&&(p==1))  
               {
               
               return (1);
               }
     if((OrderType()==OP_SELLLIMIT)&&(p==-1))
               {
      
               return (1);
               }
      
      if((OrderType()==OP_BUYLIMIT)&&(p==1))  
               {
               
               return (1);
               }
     
      }

   }
return(0);

   
   }



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