Обсуждение статьи "Функции для управления капиталом в экспертах"

 

Опубликована статья Функции для управления капиталом в экспертах:

Разработка торговой стратегии, в первую очередь, заключается в поиске закономерностей для входа в рынок, выхода из рынка и правил удержания позиций. Если найденные закономерности удается формализовать в правила для автоматической торговли, то перед трейдером возникают вопросы по расчету объемов позиций, вычислению размера маржи и поддержанию безопасного уровня залоговых средств для обеспечения открытых позиций в автоматическом режиме. В этой статье мы напишем на MQL5 простые примеры для выполнения этих расчетов.

Автор:  MetaQuotes

 

О, вот и САМОЕ вкусненькое в "Читальном зале" появилось, бум читкать что и как...

Тем более от такого автора. :)


 

Еще бы хотелось видеть в функцию вычисления свопа. их аж 5 видов, и для каждого свои ньюансы.

Методом научного тыка иногда не совсем правильно попадаешь куда надо.

Подбором я определил три варианта, но еще остался SYMBOL_SWAP_MODE_BY_INTEREST. Не могу проверить его, так как не нахожу брокера с данным методом вычисления.

Просьба - если есть возможность выложить в CodeBase функцию вычисления свопа для указанной валюты и лота - будем благодарны.

 
sergeev:

Еще бы хотелось видеть в функцию вычисления свопа. их аж 5 видов, и для каждого свои ньюансы.

Методом научного тыка иногда не совсем правильно попадаешь куда надо.

Подбором я определил три варианта, но еще остался SYMBOL_SWAP_MODE_BY_INTEREST. Не могу проверить его, так как не нахожу брокера с данным методом вычисления.

Просьба - если есть возможность выложить в CodeBase функцию вычисления свопа для указанной валюты и лота - будем благодарны.

+1. А еще лучше реализуйте весь этот расчет в стандартной библиотеке, а мы уж сами посмотрим как и что правильно творить...
 
вроде в документации написано... да и в мкл4 было только формулы поменялись.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

Что это за случаи такие, торговля разрешена, а эксперт не имеет право торговать?

Имеется ввиду запрет со стороны брокера, или настройки терминала? 

По аналогии с 4  :  - " ...если эксперту разрешено торговать и поток для выполнения торговых операций свободен..." 

т.е.     IsTradeAllowed  =    IsExpertEnabled   +  IsTradeContextBusy     ???

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

Интересная и нужная статья! Я попытался проверить формулы в этой статье и вот что получилось. Берём EURGBP в качестве примера. Валюта аккаунта в долларах. Ближайщая валютная пара EURUSD, т.е. mode=true. Пока правильно? Используем формулы из статьи для определения необходимой маржи:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- обратная котировка
      if(mode)
        {
         //--- считаем по цене покупки для обратной котировки
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- обратная котировка
      if(mode)
        {
         //--- считаем по цене продажи для обратной котировки
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

 То есть, при покупке, согласно статье, необходимая маржа должна быть:

BUY: margin = lot*lot_size*tick_ask/leverage

а при продаже:

SELL: margin = lot*lot_size*tick_bid/leverage

Кодируем эти формулы в простом советнике и пытаемся продать и купить EURUSD с заранее низкими средствами чтобы метатрайдер сказал нам какая нужна маржа. В тоже время выводим нашу вычисленную маржу. Получаем такие сообщения тестера:

2010.07.06 16:34:01 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - маржа вычисленная тестером
2010.07.06 16:34:01 Core 1 Error: not enough money. Free margin = 10, required margin = 122.899 - нами вычисленная маржа


2010.07.06 16:34:01 Core 1 no enough money [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - маржа вычисленная тестером
2010.07.06 16:34:01 Core 1 Error: not enough money. Free margin = 10, required margin = 122.737 - нами вычисленная маржа

Есть разница. Теперь меняем формулы расчёта необходимой маржи на

BUY: margin = lot*lot_size*tick_bid/leverage

SELL: margin = lot*lot_size*tick_ask/leverage

что противоречит статье. Получаем такие сообщения тестера: 

2010.07.06 16:39:49 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - маржа вычисленная тестером
2010.07.06 16:39:49 Core 1 Error: not enough money. Free margin = 10, required margin = 122.911 - нами вычисленная маржа

2010.07.06 16:39:49 Core 1 no enough money [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - маржа вычисленная тестером
2010.07.06 16:39:49 Core 1 Error: not enough money. Free margin = 10, required margin = 122.722 - нами вычисленная маржа
 

Тут вычисленная советником маржа по "неправильному" методу сходится с маржей вычисленной тестером в точь точь. Получается что либо в тестере либо в статье переставлены bid и ask при вычислении кроссов типа EURGBP. Кто прав: статья или тестер?

 

Статья хорошая и для меня полезная.

Как для понимания, так и всвязи с экономией времени. Спасибо 

Только вот немного не понял, что мы получаем этой функцией.

Если размер необходимых залоговых средств, то разве стоимость контракта не надо на  плечо делить?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

Статья хорошая и для меня полезная.

Как для понимания, так и всвязи с экономией времени. Спасибо 

Только вот немного не понял, что мы получаем этой функцией.

Если размер необходимых залоговых средств, то разве стоимость контракта не надо на  плечо делить?

Я тож сразу не врубился. Час убил, пока не обнаружил, почему результат в сто раз отличается от действительного.
 
SHOOTER777:

Если размер необходимых залоговых средств, то разве стоимость контракта не надо на  плечо делить?

Стоимость контракта не есть размер маржи. Далее в коде стоимость делится на плечо, чтобы получить размер маржи.
 
на паре EURUSD на вашем демо.. при доступних средствах 10 000 не удаеться откриться лотом 10... почему? и как вичислить максимально возможний лот исходя из средств. спасибо