Author: Dmitry Zhebrak aka Necron,� 2010
Orders Execution
Checks for the total of open ordersChecks for the total of closed ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
DZ_expCoin
//+------------------------------------------------------------------+
//|                                                   DZ_expCoin.mq4 |
//|                                        Dmitry Zhebrak aka Necron |
//|                                      http://fxgeneral.com/forum/ |
//+------------------------------------------------------------------+
#property copyright "Dmitry Zhebrak aka Necron,© 2010"
#property link      "http://fxgeneral.com"

extern double Profit=21;
extern double Loss=21;
extern double TrailingStop=0;
extern double Lot=0.1;
extern int    Slippage=3;
int    Magic=20100327;
extern bool   show_number=false;
int    corner=3;
int    font_size=14;
int    label_size=2;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   tossing_up_a_coin();
   CheckForClose();
//----
   
//----
   return(0);
  }
bool CheckExists()                                  
 {
  bool Result = True;
  for(int i = 0; i < OrdersTotal(); i++)
   if(OrderSelect(i, SELECT_BY_POS))
    if(OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
     if(OrderOpenTime() >= Time[0])
      Result = False;
  for(i = 0; i < OrdersHistoryTotal(); i++)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
     if(OrderOpenTime() >= Time[0]
        && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
      Result = False;
    }

  return(Result);
  }
   
void tossing_up_a_coin()
 {
 int  limit=32766;
 int  coin;
 bool orel,reshka;
 int  ticket;
 
 
 MathSrand(TimeLocal());
  for(int i=0;i<limit;i++ )
   coin=MathRand();
 if(coin %2==0) orel=true;//;)
 else reshka=true;//:) 
 	  if(show_number)
 	   { 
 	    ObjectCreate("Coin",OBJ_LABEL,0,0,0,0,0); 
   	 ObjectSet("Coin",OBJPROP_CORNER,3);
   	 ObjectSet("Coin",OBJPROP_XDISTANCE,30);
		 ObjectSet("Coin",OBJPROP_YDISTANCE,400);
		 ObjectSetText("Coin",""+coin+"",font_size,"Times New Roman",Lime);
		 ObjectSet("Coin",OBJPROP_WIDTH,label_size); 
      }
 if (reshka && CheckExists() && OrdersTotal()==0)
  {
    ticket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,0,0,"expCoin",Magic,0,Lime);
       if(ticket>0)
         {
          if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
         }
       else Print("Error opening BUY order : ",GetLastError()); 
       return(0); 
   }
 if(orel && CheckExists() && OrdersTotal()==0) 
  {
    ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Ask,Digits),Slippage,0,0,"expCoin",Magic,0,Red);
       if(ticket>0)
         {
          if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
         }
       else Print("Error opening SELL order : ",GetLastError()); 
       return(0); 
  }
   return(0); 
 }

void CheckForClose()
 {
  int cnt,total;
  total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderProfit()>=Profit||OrderProfit()<=-Loss)
                {
                 OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage,Violet); // close position
                 return(0);
                }
           }
         else 
           {
            if(OrderProfit()>=Profit||OrderProfit()<=-Loss)
              {
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage,Violet); // close position
               return(0); 
              }
           }
        }
     }
   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 ---