Закрытие всех ордеров.

 
Как в MQL5 (не MQL4) сделать так, чтоб советник закрывал все ордера когда общая прибыль достигла определённой суммы?Например открыто 3 отдера, EURUSD -180, USDCHF +240 и GBPUSD +190.Как в этом примере общая прибыль 250 и чтоб в этом случае закрывались все ордера.И чтоб это можно было настроить (input) .На примере этого советника.
 
Aleksandr55777:
Как в MQL5 (не MQL4) сделать так, чтоб советник закрывал все ордера когда общая прибыль достигла определённой суммы?Например открыто 3 отдера, EURUSD -180, USDCHF +240 и GBPUSD +190.Как в этом примере общая прибыль 250 и чтоб в этом случае закрывались все ордера.И чтоб это можно было настроить (input) .На примере этого советника.

Нет ничего проще. Все что нужно - это разность 

AccountInfoDouble(ACCOUNT_EQUITY)) - AccountInfoDouble(ACCOUNT_BALANCE))

Как только она достигла заданной величины, закрывай позиции.
 
Aleksandr55777:
Как в MQL5 (не MQL4) сделать так, чтоб советник закрывал все ордера когда общая прибыль достигла определённой суммы?Например открыто 3 отдера, EURUSD -180, USDCHF +240 и GBPUSD +190.Как в этом примере общая прибыль 250 и чтоб в этом случае закрывались все ордера.И чтоб это можно было настроить (input) .На примере этого советника.

В MQL5 (не MQL4) открытыми бывают позиции, а не ордера. Пример кода:

//+------------------------------------------------------------------+
//| Trade classes                                                    |
//+------------------------------------------------------------------+
#include <Trade/Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+
input uint   InpProfit=250;     //Прибыль
input ulong  Magic_Number=123;  //Магическое число
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_All_Positions()
  {
   if(AccountInfoDouble(ACCOUNT_EQUITY)-AccountInfoDouble(ACCOUNT_BALANCE)>=InpProfit)
     {
      for(int i=PositionsTotal()-1; i>=0; i--)
        {
         ulong position_ticket=PositionGetTicket(i);
         if(PositionGetInteger(POSITION_MAGIC)==Magic_Number)
           {
            trade.PositionClose(position_ticket);
           }
        }
     }
  }
//+------------------------------------------------------------------+
С уважением, Владимир.
 

В коде Владимира внизу можно добавить:

void OnTick() {
    Close_All_Positions();
}

Тогда после запуска советника он будет на каждом тике проверять, не надо ли закрыть позиции, и закрывать при необходимости. Если позиции были открыты вручную, то их Magic_Number = 0.

 
MrBrooklin #:

В MQL5 (не MQL4) открытыми бывают позиции, а не ордера. Пример кода:

С уважением, Владимир.

И крыть асинхронно, чтобы быстрее было (если критично).

Причина обращения: