О, вот и САМОЕ вкусненькое в "Читальном зале" появилось, бум читкать что и как...
Тем более от такого автора. :)
Еще бы хотелось видеть в функцию вычисления свопа. их аж 5 видов, и для каждого свои ньюансы.
Методом научного тыка иногда не совсем правильно попадаешь куда надо.
Подбором я определил три варианта, но еще остался SYMBOL_SWAP_MODE_BY_INTEREST. Не могу проверить его, так как не нахожу брокера с данным методом вычисления.
Просьба - если есть возможность выложить в CodeBase функцию вычисления свопа для указанной валюты и лота - будем благодарны.
Еще бы хотелось видеть в функцию вычисления свопа. их аж 5 видов, и для каждого свои ньюансы.
Методом научного тыка иногда не совсем правильно попадаешь куда надо.
Подбором я определил три варианта, но еще остался SYMBOL_SWAP_MODE_BY_INTEREST. Не могу проверить его, так как не нахожу брокера с данным методом вычисления.
Просьба - если есть возможность выложить в CodeBase функцию вычисления свопа для указанной валюты и лота - будем благодарны.
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:
Что это за случаи такие, торговля разрешена, а эксперт не имеет право торговать?
Имеется ввиду запрет со стороны брокера, или настройки терминала?
По аналогии с 4 : - " ...если эксперту разрешено торговать и поток для выполнения торговых операций свободен..."
т.е. IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ???
Интересная и нужная статья! Я попытался проверить формулы в этой статье и вот что получилось. Берём 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. Кто прав: статья или тестер?
Статья хорошая и для меня полезная.
Как для понимания, так и всвязи с экономией времени. Спасибо
Только вот немного не понял, что мы получаем этой функцией.
Если размер необходимых залоговых средств, то разве стоимость контракта не надо на плечо делить?
- www.mql5.com
Статья хорошая и для меня полезная.
Как для понимания, так и всвязи с экономией времени. Спасибо
Только вот немного не понял, что мы получаем этой функцией.
Если размер необходимых залоговых средств, то разве стоимость контракта не надо на плечо делить?
Если размер необходимых залоговых средств, то разве стоимость контракта не надо на плечо делить?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Функции для управления капиталом в экспертах:
Разработка торговой стратегии, в первую очередь, заключается в поиске закономерностей для входа в рынок, выхода из рынка и правил удержания позиций. Если найденные закономерности удается формализовать в правила для автоматической торговли, то перед трейдером возникают вопросы по расчету объемов позиций, вычислению размера маржи и поддержанию безопасного уровня залоговых средств для обеспечения открытых позиций в автоматическом режиме. В этой статье мы напишем на MQL5 простые примеры для выполнения этих расчетов.
Автор: MetaQuotes