Как рассчитывать StopOut, если у брокера он выражается в деньгах, а не в процентах?

 

Вопрос в заголовке. Лично я сам не встречался еще с такой ситуацией, но стало интересно, потому как MQL4 вроде как позволяет определить в чем именно считается стопаут в деньгах или в процентах. Но вот если насчет процентов все понятно и нужно следовать условию:

if(AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)==ACCOUNT_STOPOUT_MODE_PERCENT)

{
 AccountEquity()/AccountMargin()*100<=AccountStopoutLevel()
}


То вот какое сравнение нужно выполнять, если уровень задается в деньгах не очень понятно

 if(AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)==ACCOUNT_STOPOUT_MODE_MONEY)


Подскажите как правильно?

 
Наверное, наступает, когда эквити опускается ниже указанного уровня. Проверьте в тестере на том брокере.
 
@Andrey Khatimlianskii, в том и дело, что сам не знаю где проверить, но хотелось бы разобраться в этом моменте.

В справочнике в описании AccountStopoutMode() пишется, что если возвращается 1 - это значит сравнение уровня свободной маржи с абсолютным значением. Но как это трактовать, является ли AccountFreeMargin() уровнем свободной маржи для данного случая и что это за абсолютное значение пока остается для меня загадкой.
Andrey Khatimlianskii
Andrey Khatimlianskii
  • www.mql5.com
Выставил продукт Получайте уведомления о всех торговых операциях в Телеграм, в мобильное приложение MetaTrader, или на почту! Самая простая настройка отправки сообщений в Телеграм из МТ: Добавьте адрес https://api.telegram.org/ в разрешенные для вызова советникам (Сервис - Настройки, вкладка Советники), Запустите советника TraderNotifier на...
 
leon_17:
@Andrey Khatimlianskii, в том и дело, что сам не знаю где проверить, но хотелось бы разобраться в этом моменте.

В справочнике в описании AccountStopoutMode() пишется, что если возвращается 1 - это значит сравнение уровня свободной маржи с абсолютным значением. Но как это трактовать, является ли AccountFreeMargin() уровнем свободной маржи для данного случая и что это за абсолютное значение пока остается для меня загадкой.

Абсолютное значение величины средств. Stop out ведь считается на основании средств. Поэтому нужно использовать не AccountFreeMargin(), а AccountEquity().

 
leon_17:
@Andrey Khatimlianskii, в том и дело, что сам не знаю где проверить, но хотелось бы разобраться в этом моменте.

В справочнике в описании AccountStopoutMode() пишется, что если возвращается 1 - это значит сравнение уровня свободной маржи с абсолютным значением. Но как это трактовать, является ли AccountFreeMargin() уровнем свободной маржи для данного случая и что это за абсолютное значение пока остается для меня загадкой.

Проверить в тестере на том счете, где AccountStopoutMode() возвращает 1.

 
Ihor Herasko:

Абсолютное значение величины средств. Stop out ведь считается на основании средств. Поэтому нужно использовать не AccountFreeMargin(), а AccountEquity().

Да, но в той же строке есть упоминание и про уровень свободной маржи. И что тогда сравнивать AccountFreeMargin() с AccountEquity()?

Зачем нам тогда значение AccountStopoutLevel(), выраженное в валюте депозита?

Andrey Khatimlianskii:

Проверить в тестере на том счете, где AccountStopoutMode() возвращает 1.

Пока я не смог найти такого счета. Если бы нашел, наверняка сам бы вычислил правильную формулу.

На текущий момент, правильной мне кажется все-таки такая:

if(AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)==ACCOUNT_STOPOUT_MODE_MONEY)
     {
      // Stopout наступает, когда:

      AccountFreeMargin() <= AccountStopoutLevel();

     }

Но проверить просто негде, поэтому и решил обратиться на форум.

 
leon_17:

Пока я не смог найти такого счета.

А зачем тогда формула? Чтобы предусмотреть все? Это, к сожалению, невозможно.

Я тоже не встречал за 15 лет таких счетов, поэтому не вижу смысла проверять.

 

ps: вот, в МТ5 можно в тестере выставить вручную и проверить: