//+------------------------------------------------------------------+
//|                                                       mIBFX_buy  |
//|                                 Copyright © 2008, Steve Hopwood  |
//|                                     www.hopwood3.freeserve.co.uk |
//+------------------------------------------------------------------+

#property show_inputs
#include <WinUser32.mqh>
#include <stdlib.mqh>
#define  NL    "\n"

extern double  Lot = 0.01;
extern int     MagicNumber=71946723;
extern string  TradeComment="";
extern string  ins1="Set MaxTotalSpread to 0 to disable the function";
extern int     MaxTotalSpread=0;

bool           TradingAllowed=true;

int init()
   {

      if (MaxTotalSpread > 0)
      {   
         int TotalSpread=0;
      
         TotalSpread=TotalSpread + MarketInfo("GBPUSDm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("EURGBPm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("GBPJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("USDCHFm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("NZDUSDm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("AUDJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("EURJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("EURUSDm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("USDJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("AUDUSDm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("NZDJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("GBPCHFm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("CHFJPYm",MODE_SPREAD);
         TotalSpread=TotalSpread + MarketInfo("EURCHFm",MODE_SPREAD);

         if (TotalSpread > MaxTotalSpread)
         {
            string ScreenMessage;
            ScreenMessage = StringConcatenate("Total spread = ", TotalSpread, NL);
            ScreenMessage = StringConcatenate(ScreenMessage, "Maximum spread allowed = ",MaxTotalSpread,NL);
            ScreenMessage = StringConcatenate(ScreenMessage, "The total spread is greater than you will allow, so the script will not run");
            MessageBox(ScreenMessage,"Information");
            TradingAllowed=false;
         }//if (TotalSpread > MaxTotalSpread)   
      }//if (MaxTotalSpread=0 > 0)      
      
   }//End int init()

bool CheckIfTradeAlreadyExists(string symbol)
   {
      if (OrdersTotal()==0) return(false);
      for (int cc=0; cc<OrdersTotal();cc++)
      {
         OrderSelect(cc, SELECT_BY_POS);
         if (OrderSymbol()==symbol && OrderMagicNumber()==MagicNumber) return(true);
      }
      return(false);
   
   }// end bool CheckTrendExists()

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   
   if (!TradingAllowed) return;
   
   int TradesSent=0;
   
   bool TradeExists = CheckIfTradeAlreadyExists("GBPUSDm");
   if (!TradeExists) int ticket = OrderSend("GBPUSDm",OP_BUY, Lot, MarketInfo("GBPUSDm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("EURGBPm");
   if (!TradeExists) ticket = OrderSend("EURGBPm",OP_BUY, Lot, MarketInfo("EURGBPm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("GBPJPYm");
   if (!TradeExists) ticket = OrderSend("GBPJPYm",OP_BUY, Lot, MarketInfo("GBPJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("USDCHFm");
   if (!TradeExists) ticket = OrderSend("USDCHFm",OP_BUY, Lot, MarketInfo("USDCHFm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("NZDUSDm");
   if (!TradeExists) ticket = OrderSend("NZDUSDm",OP_BUY, Lot, MarketInfo("NZDUSDm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("AUDJPYm");
   if (!TradeExists) ticket = OrderSend("AUDJPYm",OP_BUY, Lot, MarketInfo("AUDJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("EURJPYm");
   if (!TradeExists) ticket = OrderSend("EURJPYm",OP_BUY, Lot, MarketInfo("EURJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   
   
   TradeExists = CheckIfTradeAlreadyExists("EURUSDm");
   if (!TradeExists) ticket = OrderSend("EURUSDm",OP_BUY, Lot, MarketInfo("EURUSDm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("USDJPYm");
   if (!TradeExists) ticket = OrderSend("USDJPYm",OP_BUY, Lot, MarketInfo("USDJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("AUDUSDm");
   if (!TradeExists) ticket = OrderSend("AUDUSDm",OP_BUY, Lot, MarketInfo("AUDUSDm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("NZDJPYm");
   if (!TradeExists) ticket = OrderSend("NZDJPYm",OP_BUY, Lot, MarketInfo("NZDJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("GBPCHFm");
   if (!TradeExists) ticket = OrderSend("GBPCHFm",OP_BUY, Lot, MarketInfo("GBPCHFm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("CHFJPYm");
   if (!TradeExists) ticket = OrderSend("CHFJPYm",OP_BUY, Lot, MarketInfo("CHFJPYm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   TradeExists = CheckIfTradeAlreadyExists("EURCHFm");
   if (!TradeExists) ticket = OrderSend("EURCHFm",OP_BUY, Lot, MarketInfo("EURCHFm",MODE_ASK), 2, NULL, NULL, TradeComment, MagicNumber, 0, CLR_NONE);
   if (ticket > -1) TradesSent++;
   
   MessageBox("This script opened " + TradesSent + " trades.","Information");
   
   return(0);
  }
//+------------------------------------------------------------------+