A function to determine why an order cannot be opened
Here is an example of a function which will display the actual error for why you cannot open a trade in MetaTrader. This is more descriptive then what you get by default.
OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP,”",-1,3); //First you want to send an order if it fails error will = -1 so the code below will kick in
if (error==-1) //operation failed because it’s -1
{
ShowERROR(error,0,0); //This calls the function below
}
void ShowERROR(int Ticket,double SL,double TP) //you prefix this function with void since it does not return a value.
{
int err=GetLastError();
switch ( err )
{
case 1: return;
case 2: Alert(“Error Connection with trade server absent “,Ticket,” “,Symbol());return;
case 3: Alert(“Error Invalid trade parameters Ticket “, Ticket,” “,Symbol());return;
case 130: Alert(“Error Invalid stops Ticket “, Ticket,” “,Symbol());return;
case 134: Alert(“Error Not enough money “, Ticket,” “,Symbol());return;
case 146: Alert(“Error Trade context is busy. “, Ticket,” “,Symbol());return;
case 129: Alert(“Error Invalid price “, Ticket,” “,Symbol());return;
case 131: Alert(“Error Invalid volume “, Ticket,” “,Symbol());return;
case 4051:Alert(“Error Invalid function parameter value “, Ticket,” “,Symbol());return;
case 4105:Alert(“Error No order selected “, Ticket,” “,Symbol());return;
case 4063:Alert(“Error Integer parameter expected “, Ticket,” “,Symbol());return;
case 4200:Alert(“Error Îáúåêò óæå ñóùåñòâóåò “, Ticket,” “,Symbol());return;
default: Alert(“Error Object already exists ” ,err,” Ticket “, Ticket,” “,Symbol());return;
}
}
Facebook comments: