fulltilt:
how to check profit from multiple magicnumbers in one EA?
fex: magicnumber1 + magicnumber2 + magicnumber3 >0
i need this function to close all these open orders in profit ...
is there any better way to do this?
Can you explain what this does ? and why yo are doing it ?
OrderProfit() > 0 * point
RaptorUK:
Can you explain what this does ? and why yo are doing it ?
please ignore ;-)
here the complete part:
bool magic1=false; bool magic2=false; bool magic3=false; for(int cc01=OrdersTotal() - 1; cc01 >= 0; cc01--) { if(OrderSelect(cc01,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderProfit()>0 || OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderProfit()>0) { magic1 = true; } } for(int cc02=OrdersTotal() - 1; cc02 >= 0; cc02--) { if(OrderSelect(cc02,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber2 && OrderProfit()>0 || OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber2 && OrderProfit()>0) { magic2 = true; } } for(int cc03=OrdersTotal() - 1; cc03 >= 0; cc03--) { if(OrderSelect(cc03,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber3 && OrderProfit()>0 || OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber3 && OrderProfit()>0) { magic3 = true; } } if(magic1==true && magic2==true && magic3==true) { int totaltp = OrdersTotal(); for(int ip=totaltp-1;ip>=0;ip--) { OrderSelect(ip, SELECT_BY_POS); int type = OrderType(); bool result = false; switch(type) { //Close opened long positions case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; //Close opened short positions case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; //Close pending orders case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } } }
- Always simplify where possible
bool magic1=false, magic2=false, magic3=false; for(int cc01=OrdersTotal() - 1; cc01 >= 0; cc01--) if( OrderSelect(cc01,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderProfit() > 0 ){ if (OrderMagicNumber()==MagicNumber) magic1 = true; else if (OrderMagicNumber()==MagicNumber2) magic2 = true; else if (OrderMagicNumber()==MagicNumber3) magic3 = true; }
- No need to differentiate directions.
Yours case OP_BUY : OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); : case OP_SELL : ..
Direction
Independentcase OP_BUY : case OP_SELL : if (!OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 5, Red ) Alert(...
- You never would ever write if ( (2+2==4) == true) would you? Then never write if (bool==true) or if(bool==false). if (bool) and if(!bool) are sufficient. Especially if you use self documenting variable names
Yours if(magic1==true && magic2==true && magic3==true)
Easier, clearer if(isMN1InProfit && isMN2InProfit && isMN3InProfit)
- Always test your return codes What are Function return values ? How do I use them ? - MQL4 forum
- Adjust for 4/5 digit brokers (tp, sl, AND SLIPPAGE). Adjust for ECN brokers.
WHRoeder:
thanks, that looks much better !
I have to practice a lot ... construction of conditions, syntax ...
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
how to check profit from multiple magicnumbers in one EA?
fex: magicnumber1 + magicnumber2 + magicnumber3 >0
i need this function to close all these open orders in profit ...
is there any better way to do this?