//+------------------------------------------------------------------+
//|hurairah01 |
//|www.carigold.com |
//+------------------------------------------------------------------+
//------------------
#property copyright "hurairah01"
#property link "www.carigold.com"
//user input
extern double Lots = 0.10;
extern int Slippage = 3;
extern int TP = 10;
extern int SL = 31;
extern bool isIBFXmini=false;
// globals
string mySymbol;
string postfix;
// trade management
double ask, bid, point;
string TradeComment="hurairah01 BUY";
int MagicNumber=12345678;
// used for verbose error logging
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int init()
{
if(isIBFXmini) postfix="m";
mySymbol="Symbol()"+postfix; OpenPos("Buy");
}
int start() {}
//ENTRY LONG (buy, Ask)
void OpenPos(string Trade)
{
int gle=0;
int ticket=0;
int loopcount;
loopcount=0;
while(true)
{
bid=MarketInfo(Symbol(),MODE_BID);
ask=MarketInfo(Symbol(),MODE_ASK);
point=MarketInfo(Symbol(),MODE_POINT);
double TPBuy=0;
double SLBuy=0;
if(TP>0){TPBuy=ask+TP*point;}
if(SL>0){SLBuy=ask-SL*point;}
if (Trade=="Buy") ticket=OrderSend(Symbol(),OP_BUY,Lots,ask,Slippage ,SLBuy,TPBuy,TradeComment,MagicNumber ,White);
gle=GetLastError();
if(gle==0)
{
if (Trade=="Buy") Print("BUY PLACED Ticket="+ticket+" Ask="+ask+" 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));
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");
return(gle);
}
}
}
}