Закрытие сделок в %

 
Начальный баланс 5000.Профит 2%(100$).
Суть в том, что советник скальпер, т. е. Баланс всегда больше Эквити, но оба растут. Надо чтобы при Эквити 5100 все закрывалось. В это же время Баланс м.б. 5300, а открытые позиции -200$. Не пойму как формулу сделать?
 
Sprut112:
Баланс 5000.Профит 2%(100$).
Суть в том, что советник скальпер, т. е. Баланс всегда больше Эквити, но оба растут. Надо чтобы при Эквити 5100 все закрывалось. Не пойму как формулу сделать?

Например так: вводим переменную Step equity.

//+------------------------------------------------------------------+
//|                                                      Test EA.mq5 |
//+------------------------------------------------------------------+
#property version   "1.000"
//---
#include <Trade\AccountInfo.mqh>
CAccountInfo   m_account;                    // account info wrapper
//--- input parameters
double InpStepEquity=100;                    // Step equity
//---
double m_start_equity=0.0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CalculateAllPositions()==0)
      m_start_equity=m_account.Equity();

   if(m_account.Equity()>=m_start_equity+InpStepEquity)
     {
      CloseAllPositions();
      return;
     }
  }
//+------------------------------------------------------------------+

Если позиций нет (функция if(CalculateAllPositions()==0)) значит присваиваем переменной m_start_equity=m_account.Equity().

Как только набрали пороговое значение (if(m_account.Equity()>=m_start_equity+InpStepEquity)) - закрываем все позиции CloseAllPositions();.

Файлы:
Test_EA.mq5  3 kb
 
Vladimir Karputov:

Например так: вводим переменную Step equity.

Если позиций нет (функция if(CalculateAllPositions()==0)) значит присваиваем переменной m_start_equity=m_account.Equity().

Как только набрали пороговое значение (if(m_account.Equity()>=m_start_equity+InpStepEquity)) - закрываем все позиции CloseAllPositions();.

Все понятно, спасибо. А в mql4 есть аналог?
 
Sprut112:
Все понятно, спасибо. А в mql4 есть аналог?

Вы задали вопрос на форуме MQL5, вы задали вопрос в главном разделе - поэтому получили ответ по MQL5. Если вопрос по старому терминалу - пожалуйста сразу задавайте вопрос в специальном разделе - MQL4 и MetaTrader 4.


Добавлено: тему перенесу.

 
Vladimir Karputov:

Вы задали вопрос на форуме MQL5, вы задали вопрос в главном разделе - поэтому получили ответ по MQL5. Если вопрос по старому терминалу - пожалуйста сразу задавайте вопрос в специальном разделе - MQL4 и MetaTrader 4.


Добавлено: тему перенесу.

Искал весь день, но не нашел подобные функции на mql4