//+------------------------------------------------------------------+
//|                                                  multi order.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, 1000 pips club."
#property link      "www.oasiswealthbuilders.com"
// allow script to accept inputs from user
#property show_inputs

//user input
extern double Lots      =0.10;
 int    SL        =0;
 int    TP        =0;
extern int    maxSpread =30;
extern string info1     ="0=no trade, 1=buy, 2=sell";
extern int    GBPJPY    =0;
extern int    EURJPY    =0;
extern int    AUDJPY    =0;
extern int    GBPUSD    =0;
extern int    NZDUSD    =0;


 int    Slippage  = 8;
// globals 
string mySymbol, postfix;
double ask, bid, point, SLBuy, SLSell, TPBuy, TPSell;
extern int MagicNumber=12345678;
// used for verbose error logging
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int init()
{
 postfix=StringSubstr(Symbol(),6,1);

 if (GBPJPY==1) OpenPos("GBPJPY", "Buy");
 if (GBPJPY==2) OpenPos("GBPJPY", "Sell");
 
 if (EURJPY==1) OpenPos("EURJPY", "Buy");
 if (EURJPY==2) OpenPos("EURJPY", "Sell"); 
 
 if (AUDJPY==1) OpenPos("AUDJPY", "Buy");
 if (AUDJPY==2) OpenPos("AUDJPY", "Sell"); 
 
 if (GBPUSD==1) OpenPos("GBPUSD", "Buy");
 if (GBPUSD==2) OpenPos("GBPUSD", "Sell"); 
 
 if (NZDUSD==1) OpenPos("NZDUSD", "Buy");
 if (NZDUSD==2) OpenPos("NZDUSD", "Sell");  
 
 
 
}

int start() {}

//ENTRY LONG (buy, Ask) 
void OpenPos(string sym, string Trade)
{
 mySymbol=sym+postfix;
 int gle=0;
 int ticket=0;
 int loopcount;
 
 bid=MarketInfo(mySymbol,MODE_BID);
 ask=MarketInfo(mySymbol,MODE_ASK);
 point=MarketInfo(mySymbol,MODE_POINT);
 
 loopcount=0;

 if (MarketInfo(mySymbol, MODE_SPREAD)<maxSpread)
 {
  while(true) 
  {
   if (SL>0) { SLBuy=bid-(SL*point); SLSell=ask+(SL*point); }
   if (TP>0) { TPBuy=bid+(TP*point); TPSell=ask-(TP*point); }
 
   if (Trade=="Buy") ticket=OrderSend(mySymbol,OP_BUY,Lots,ask,Slippage,0,0,"",MagicNumber,White);
   if (Trade=="Sell") ticket=OrderSend(mySymbol,OP_SELL,Lots,bid,Slippage,0,0,"",MagicNumber,Red); 
   
   gle=GetLastError();
   if(gle==0)
   {
    if (Trade=="Buy") Print("BUY PLACED Ticket="+ticket+" Ask="+ask+" Lots="+Lots); 
    if (Trade=="Sell") Print("SELL PLACED Ticket="+ticket+" Bid="+bid+" Lots="+Lots); 
    break;
   }
   else 
   { 
    if (Trade=="Buy") Print("-----ERROR----- Placing BUY order: Lots="+Lots+" SL="+SL+" TP="+TP+" Bid="+bid+" Ask="+ask+" ticket="+ticket+" Err="+gle+" "+ErrorDescription(gle)); 
    if (Trade=="Sell") Print("-----ERROR----- placing SELL order: Lots="+Lots+" SL="+SL+" TP="+TP+" Bid="+bid+" Ask="+ask+" ticket="+ticket+" Err="+gle+" "+ErrorDescription(gle)); 
    RefreshRates();
    Sleep(500);

// give up after 10 tries (~5 seconds)
    loopcount++;
    if(loopcount>10)
    {
     if (Trade=="Buy") Print("-----ERROR----- Giving up on placing BUY order"); 
     if (Trade=="Sell") Print("-----ERROR----- Giving up on placing SELL order"); 
     return(gle);
    }
   }
  }
 }
}

