Как узнать комиссию взимаемую брокером?

 

Здравствуйте,

пишу советник и прежде чем выставлять ордер, хотелось бы узнать размер коммиссии, которую я уплачу за нее.

Посмотреть на сайте брокера по своему счету и вставить как входной параметр - не очень интересно.

Есть ли автоматический способ?

Из справки нашел только вот это:

ACCOUNT_COMMISSION_BLOCKED - Текущая сумма заблокированных комиссий по счёту

Но это не совсем то, как я понял это комиссия за все имеющиеся ставки. Можно конечно сделать тестовую ставку, минимальным лотом, рассчитать процент комиссии и дальше пользоваться.

А хотелось бы узнать сразу, комиссию за лот.

Обновление:

Сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение  ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0.

Может это из за того, что на демо-счете смотрю?

Да и все-таки хотелось бы узнать комиссию без пробной ставки... есть ли другие пути?


 
Здравствуйте. Самый простой способ - увеличить спред во время тестирования на количество пунктов, которое равно комиссии.
 
Ramiz Mavludov:
Здравствуйте. Самый простой способ - увеличить спред во время тестирования на количество пунктов, которое равно комиссии.
Вот я и хочу автоматическим способом узнать размер комиссии, а не вручную указывать его. Мне кажется это очень важный параметр, неучет которого может из прибыльной стратегии сделать убыточную. Странно, если в МТ5 (и МТ4) этот параметр нельзя определить.
 
elibrarius:
Вот я и хочу автоматическим способом узнать размер комиссии, а не вручную указывать его. Мне кажется это очень важный параметр, неучет которого может из прибыльной стратегии сделать убыточную. Странно, если в МТ5 (и МТ4) этот параметр нельзя определить.
У меня когда стояла такая задача, то решение нашёл только одно - вынес во входной параметр размер комиссии. Не совсем удобно, но работает, другого пути не нашел.
 

Совсем неудобно.

И что самое интересное - это то, что терминал об этой комиссии знает (ведь при тестировании и реальной торговле комиссия в нужном размере вычитается из результатов операций)! Но не дает о ней узнать.

 
elibrarius:

Совсем неудобно.

И что самое интересное - это то, что терминал об этой комиссии знает (ведь при тестировании и реальной торговле комиссия в нужном размере вычитается из результатов операций)! Но не дает о ней узнать.

У меня в планах это автоматизировать, пока стандартных функций MQ не нашёл, то после открытия буду брать сумму комиссии, потом пересчитывать в пункты с учетом лота, и эти пункты плюсовать (модификацией) к стопам, тейкам и безубытку.
 
Vitaly Muzichenko:
У меня в планах это автоматизировать, пока стандартных функций MQ не нашёл, то после открытия буду брать сумму комиссии, потом пересчитывать в пункты с учетом лота, и эти пункты плюсовать (модификацией) к стопам, тейкам и безубытку.

Я сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение  ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0. Может это из за того, что на демо-счете смотрю?

Или вы планируете Открыться, закрыться,  и посчитать

комиссия = (Баланс(после закрытия)- Баланс (до открытия)) - (Ask(закрытия) - Bid(открытия) ) ? 

И сложно и совсем некрасиво, ради определения параметров делать тестовый заказ.


Я пожалуй попрошу в сервисдеке добавить эту информацию для доступности в терминале. Вот тут она была бы кстати https://www.mql5.com/ru/docs/account/accountinfodouble

 
elibrarius:

Я сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение  ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0. Может это из за того, что на демо-счете смотрю?

Или вы планируете Открыться, закрыться,  и посчитать

комиссия = (Баланс(после закрытия)- Баланс (до открытия)) - (Ask(закрытия) - Bid(открытия) ) ? 

И сложно и совсем некрасиво, ради определения параметров делать тестовый заказ.


Я пожалуй попрошу в сервисдеке добавить эту информацию для доступности в терминале. Вот тут она была бы кстати https://www.mql5.com/ru/docs/account/accountinfodouble

Ну зачем закрыться. Если нам нужен параметр размера комиссии, значит он нужен не для того чтоб на него просто посмотреть и закрыть терминал, а для того чтоб высчитать с учетом комиссии какие-то уровни, например безубыток. Так вот после открытия сделки N-лотом мы будем знать взятый размер комиссии, потом переведем в пункты и  модифицируем уровни стопов на пару пунктов в нужную сторону. А перед самым открытием сделки не так уж и важен размер, всё-равно её нужно открывать, и комиссия не на столько велика, чтоб её принимать во внимание перед открытием.
 
Vitaly Muzichenko:
Ну зачем закрыться. Если нам нужен параметр размера комиссии, значит он нужен не для того чтоб на него просто посмотреть и закрыть терминал, а для того чтоб высчитать с учетом комиссии какие-то уровни, например безубыток. Так вот после открытия сделки N-лотом мы будем знать взятый размер комиссии, потом переведем в пункты и  модифицируем уровни стопов на пару пунктов в нужную сторону. А перед самым открытием сделки не так уж и важен размер, всё-равно её нужно открывать.

И как вы комиссию посчитаете? Формулу можно?

 
elibrarius:

И как вы комиссию посчитаете? Формулу можно?

У меня нет готового, но вот давний набросок, и насколько помню - работал

 for(int i=OrdersTotal()-1; i>=0; i--)
  {
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   if((OrderMagicNumber()==Magic||Magic==-1) && OrderSymbol()==Symbol())
    {
     tiс=OrderTicket();
     typ=OrderType();
     op=OrderOpenPrice();
     ol=OrderLots();
     swap=OrderSwap();
     commission=OrderCommission();
     costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE)*ol))*Point),Digits);
  ............

 Вот тут выходила разница в пунктах с учетом комиссии и свопов, то есть, если там есть значение, значит получаем разницу в пунктах. Это полезно при планировании прибылии  убытков, например мы планируем 10пп, но нам начислили своп и взяли комиссию, значит нас уже не устроит такое: Тейк=Открытие+Профит ( profit(1.1010) = 1.1000+0.0010)

Нам уже нужно к нашим 10 пипсам добавить разницу чтоб перекрыть комиссионные, вот в переменной "costs" и находится то количество пунктов, которое нужно добавить к нашим 10, и модифицировать уровни на новые значения OrderModify()

P.S. У меня так-же стала задача после того, как при переносе в уровень безубытка +1пп, и срабатывании безубытка, получал убыток, потому как во внимание не принимались комиссии и своп. И немного не правильно добавлять сразу к безубытку, тралу и стопам 2 или 3пп. Решил автоматизировать, но пока нет времени.

 
Vitaly Muzichenko:

У меня нет готового, но вот давний набросок, и насколько помню - работал

OrderCommission()

Это что за функция? - в документации такой не нашел.  Хотя упоминания о ней встречаются, может это библиотека какая-то? И по коду видно что это для МТ4.

Я сейчас решаю вопрос на МТ5, но в случае удачного робота буду переписывать на МТ4, так что поиск комиссии для МТ4 тоже нужен...

ACCOUNT_COMMISSION_BLOCKED из МТ5 - видимо что-то близкое к вашей функции, но на демо-счете она возвращает 0. А реального нету, для проверки.

Причина обращения: