PLS HELP, SL AND TP ARE NOT WORKING.

 

Hi,

I tried to put them into my code but it seems is unable to open a position, anyone could help with this ?


{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask - 0.005,Ask + 0.005,"",MAGICMA,0,Blue); //this code is not working.

// res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Blue); // this code is working well.




If I use second one, everything is fine without SL and TP, but I have no idea with the first one, what happen for first one ?




Justin

 
  1. Use this and you would have likely found your answer.
  2. For 5 digit brokers you must modify TP, SL, AND SLIPPAGE.
  3. For ECN brokers you must open first and THEN set stops.
  4. Always test your return codes and print out WHY.
//++++ These are adjusted for 5 digit brokers.
int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.015      0.0150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)
int     init(){                                                 OptParameters();
     if (Digits % 2 == 1){      // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
                pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
    } else {    pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//---- These are adjusted for 5 digit brokers.
    /* On ECN brokers you must open first and THEN set stops
    int ticket = OrderSend(..., 0,0,...)
    if (ticket < 0)
       Alert("OrderSend failed: ", GetLastError());
    else if (!OrderSelect(ticket, SELECT_BY_TICKET))
       Alert("OrderSelect failed: ", GetLastError());
    else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0)
       Alert("OrderModify failed: ", GetLastError());
     */