Download MetaTrader 5

How To Close All Open Orders at the touch of the MA Not after the candle close?

To add comments, please log in or register
AhmedMorra
51
AhmedMorra  

Hello Fellow Traders,

It's have been a week since i started learning how to program MQL4 

And i Have A problem , The EA I am working on opens a lot of orders and i want all these orders to be closed at the touch of the ma

let's say i have opened 7 buy orders above 21 MA and i want to close them if the price "touched " the MA not after the Candle close under the MA, if that makes sense.


that is the code i am using to close all orders after the touch but it closes all the orders after the candle closes below the MA

double currentSma = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);
if(MarketInfo(Symbol(),MODE_BID) <= currentSma){
   
   for (int i=cnt-1; i>=0; i--) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
 
    //if (OrderSymbol() != Symbol()) continue;
    //if (OrderMagicNumber() != Magic) continue;
 
    if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage);
    
  }
   
  }

thanks traders

whroeder1
16102
whroeder1  
AhmedMorra: i want to close them if the price "touched " the MA not after the Candle close under the MA,
  1. if(MarketInfo(Symbol(),MODE_BID) <= sma)
    Why use a function call instead of just Bid?
  2. That tests if the market is below sma. Nothing to do with touched.

  3. bool hasTouched = High[0] > sma && sma > Low[0];
  4. You don't have to use MI in the close. You can use OrderClosePrice if you RefreshRates after each close.
  5. Check your return codes What are Function return values ? How do I use them ? - MQL4 forum and Common Errors in MQL4 Programs and How to Avoid Them - MQL4 Articles
To add comments, please log in or register