Adding comment to a position, then try to call that specific position by its comment to count its profit or loss and close it
- Opening and Closing Positions - Trade - MetaTrader 5 for iPhone
- Opening and Closing Positions - Trade - MetaTrader 5 for Android
- Close By - Trade - MetaTrader 5 for Android
Hi everybody
on your problem :
loop through open positions using a for loop ( loop limit set by PositionsTotal() ) , and using PositionInfoString(), read their comment, and if the comment is the one you're looking for, (or more safely, if position comment string contains the string you're looking for ) then check its profit using PositionInfoDouble() function. and close it if conditions are met
I think it's not a unsafe procedure to group/categorize your positions based on comments, since you're dealing with open positions, and comments of open positions are SUPPOSED to be the same strings you set when sending orders. the unsafe part is of course looking into comments of closed positions.
on your problem :
loop through open positions using a for loop ( loop limit set by PositionsTotal() ) , and using PositionInfoString(), read their comment, and if the comment is the one you're looking for, (or more safely, if position comment string contains the string you're looking for ) then check its profit using PositionInfoDouble() function. and close it if conditions are met
what kind of code is that ?!!!
you definitely need to read the mql5 docs, and a few scripts/experts codes, which hundreds of them can be found easily.
int all = PositionsTotal(); if(all>0) { for(int i=0; i<all; i++) { if(PositionGetSymbol(i)!=_Symbol) continue; // optional filter if(PositionGetInteger(POSITION_MAGIC) != MyMagic) continue; // optional if(PositionGetString(POSITION_COMMENT) != "BLA BLA") continue; if(PositionGetDouble(POSITION_PROFIT)>1000000) // don't settle for less that $ 1 Million :) { // close position here : ulong TickeT = (ulong)PositionGetInteger(POSITION_TICKET); // use standard libraries , or whatever, and close position with the TickeT } } }
what kind of code is that ?!!!
you definitely need to read the mql5 docs, and a few scripts/experts codes, which hundreds of them can be found easily.
The first check is redundant since the for loop will never enter if all is <= 0. Also, selecting a position by symbol and magic number is already built into CPositionInfo. Finally, it is not necessary to use continue statements combined with not conditions. Since MT4 build 600 expressions stop being evaluated after it is evident that the if control statement will resolve to false, so you can just use one singe if statement.
Example:
CPositionInfo pi; CTrade trade; if(pi.SelectByMagic(_Symbol, MAGIC) && pi.Comment() == "BLA BLA" && pi.Profit() > max_profit ){ if(!trade.PositionClose(pi.Ticket())) Print(_LastError); }
what kind of code is that ?!!!
you definitely need to read the mql5 docs, and a few scripts/experts codes, which hundreds of them can be found easily.
The first check is redundant since the for loop will never enter if all is <= 0. Also, selecting a position by symbol and magic number is already built into CPositionInfo. Finally, it is not necessary to use continue statements combined with not conditions. Since MT4 build 600 expressions stop being evaluated after it is evident that the if control statement will resolve to false, so you can just use one singe if statement.
Example:
Thanks for your comment nicholi, but this code is for MT5
But that is what @nicholi shen gave you! He gave you OOP code for MQL5!
Hello family, I am new and would like to have more details on how it works. Thanks in advance
<Edited to translate to English>Bnjour la famille,je suis nouveau et aimerai avoir plus de details sur le mode de fonctionnement.Merci d'avance
Write in English please, I don't understand what you are saying
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use