Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Торгуй как успешные трейдеры - подпишись на их сигналы!
Adima
28
Adima 2011.12.01 16:33 
В торговле несколько открытых ордеров (sell & Buy) на MT4, как закрыть только те ордера, которые в профите?
Andrew
28
Andrew 2011.12.01 18:49  
adima:
В торговле несколько открытых ордеров (sell & Buy) на MT4, как закрыть только те ордера, которые в профите?


примерно так

//+------------------------------------------------------------------+
//|                                             Close_all_profit.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
bool result;
int order_array[200];
int i,j;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  { 
//----
  int total=OrdersTotal();
  Alert("ордеров всего  ",total);    
  i=0;
  for(int pos=0;pos<total;pos++)
  {  
    if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
      if (OrderProfit()>0)
      {
       order_array[j]=OrderTicket();
       j=j+1;
      }
  }    
  
  for ( pos=0;pos<j;pos++)
  {
    OrderSelect(order_array[pos],SELECT_BY_TICKET,MODE_TRADES);
    int order_type= OrderType();
    RefreshRates();
    double bid=MarketInfo (OrderSymbol(),MODE_BID);
    double ask=MarketInfo (OrderSymbol(),MODE_ASK);
    int order_tick=OrderTicket();
    double order_lots= OrderLots();  
    Alert(OrderSymbol(),"  ",order_tick,"   ",order_lots,"   ",bid,"/",ask);  
    if (order_type==OP_BUY)
      result=OrderClose(order_tick,order_lots,Bid,3,CLR_NONE);
    else 
      result=OrderClose(order_tick,order_lots,Ask,3,CLR_NONE);
       
    if (result==false)
      Alert("Ошибка при закрытии (",GetLastError(),")");
    else 
      Alert("Закрыли");       
  } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

код писался давно, так что нет автоматических попыток повтора закрытия при неудаче...

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий