Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
182654
MetaQuotes Software Corp.  

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

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

Автор:  MetaQuotes

Vladimir Batrudinov
4930
Vladimir Batrudinov  

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

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


o_o
Модератор
23860
o_o  

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

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

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

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

Vladimir Batrudinov
4930
Vladimir Batrudinov  
sergeev:

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

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

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

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

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

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

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

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

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

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

Интересная и нужная статья! Я попытался проверить формулы в этой статье и вот что получилось. Берём 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. Кто прав: статья или тестер?

Николай
2224
Николай  

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

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

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

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

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

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

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

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

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

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

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

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