Order select for MQL5

To add comments, please log in or register
Peter Kaiza
1014
Peter Kaiza  

I'm trying to convert this code from mql4 to Mql5 but id does return the desired result;

 MT4 code-  if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue

MT5 code Im using:

      if((ticket=OrderGetTicket(i))!=0)    continue;

What is the mistake?

David Muriithi
376
David Muriithi  
Peter Kaiza:

I'm trying to convert this code from mql4 to Mql5 but id does return the desired result;

What is the mistake?

Hey Peter, am having the same problem, did you get the solution ?

nicholi shen
2463
nicholi shen  
David Muriithi:

Hey Peter, am having the same problem, did you get the solution ?

There is a difference between deals, orders, and positions in MQL5. You need to use the position functions to work with open positions. Even better, use the CPositionInfo class. 


#include <trade/trade.mqh>

int OnInit() {
   return INIT_SUCCEEDED;
}

void OnTick() {
    CPositionInfo pos_info;
    string comment = "";
    for (int i=PositionsTotal()-1; i>=0 && pos_info.SelectByIndex(i); --i) {
        comment += StringFormat(
            "\nIndex=%d, Symbol=%s, Ticket=%d, Type=%s, Profit=%.2f",
            i,
            pos_info.Symbol(),
            pos_info.Ticket(),
            EnumToString(pos_info.PositionType()),
            pos_info.Profit()
        );
    }
    Comment(comment);
}
To add comments, please log in or register