Здравствуйте. Самый простой способ - увеличить спред во время тестирования на количество пунктов, которое равно комиссии.
Вот я и хочу автоматическим способом узнать размер комиссии, а не вручную указывать его. Мне кажется это очень важный параметр, неучет которого может из прибыльной стратегии сделать убыточную. Странно, если в МТ5 (и МТ4) этот параметр нельзя определить.
Совсем неудобно.
И что самое интересное - это то, что терминал об этой комиссии знает (ведь при тестировании и реальной торговле комиссия в нужном размере вычитается из результатов операций)! Но не дает о ней узнать.
Совсем неудобно.
И что самое интересное - это то, что терминал об этой комиссии знает (ведь при тестировании и реальной торговле комиссия в нужном размере вычитается из результатов операций)! Но не дает о ней узнать.
У меня в планах это автоматизировать, пока стандартных функций MQ не нашёл, то после открытия буду брать сумму комиссии, потом пересчитывать в пункты с учетом лота, и эти пункты плюсовать (модификацией) к стопам, тейкам и безубытку.
Я сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0. Может это из за того, что на демо-счете смотрю?
Или вы планируете Открыться, закрыться, и посчитать
комиссия = (Баланс(после закрытия)- Баланс (до открытия)) - (Ask(закрытия) - Bid(открытия) ) ?
И сложно и совсем некрасиво, ради определения параметров делать тестовый заказ.
Я пожалуй попрошу в сервисдеке добавить эту информацию для доступности в терминале. Вот тут она была бы кстати https://www.mql5.com/ru/docs/account/accountinfodouble
Я сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0. Может это из за того, что на демо-счете смотрю?
Или вы планируете Открыться, закрыться, и посчитать
комиссия = (Баланс(после закрытия)- Баланс (до открытия)) - (Ask(закрытия) - Bid(открытия) ) ?
И сложно и совсем некрасиво, ради определения параметров делать тестовый заказ.
Я пожалуй попрошу в сервисдеке добавить эту информацию для доступности в терминале. Вот тут она была бы кстати https://www.mql5.com/ru/docs/account/accountinfodouble
Ну зачем закрыться. Если нам нужен параметр размера комиссии, значит он нужен не для того чтоб на него просто посмотреть и закрыть терминал, а для того чтоб высчитать с учетом комиссии какие-то уровни, например безубыток. Так вот после открытия сделки N-лотом мы будем знать взятый размер комиссии, потом переведем в пункты и модифицируем уровни стопов на пару пунктов в нужную сторону. А перед самым открытием сделки не так уж и важен размер, всё-равно её нужно открывать.
И как вы комиссию посчитаете? Формулу можно?
И как вы комиссию посчитаете? Формулу можно?
У меня нет готового, но вот давний набросок, и насколько помню - работал
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пп. Решил автоматизировать, но пока нет времени.
У меня нет готового, но вот давний набросок, и насколько помню - работал
OrderCommission()
Это что за функция? - в документации такой не нашел. Хотя упоминания о ней встречаются, может это библиотека какая-то? И по коду видно что это для МТ4.
Я сейчас решаю вопрос на МТ5, но в случае удачного робота буду переписывать на МТ4, так что поиск комиссии для МТ4 тоже нужен...
ACCOUNT_COMMISSION_BLOCKED из МТ5 - видимо что-то близкое к вашей функции, но на демо-счете она возвращает 0. А реального нету, для проверки.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,
пишу советник и прежде чем выставлять ордер, хотелось бы узнать размер коммиссии, которую я уплачу за нее.
Посмотреть на сайте брокера по своему счету и вставить как входной параметр - не очень интересно.
Есть ли автоматический способ?
Из справки нашел только вот это:
ACCOUNT_COMMISSION_BLOCKED - Текущая сумма заблокированных комиссий по счёту
Но это не совсем то, как я понял это комиссия за все имеющиеся ставки. Можно конечно сделать тестовую ставку, минимальным лотом, рассчитать процент комиссии и дальше пользоваться.
А хотелось бы узнать сразу, комиссию за лот.
Обновление:
Сделал эксперт, который выводит ACCOUNT_COMMISSION_BLOCKED, потом вручную открыл позицию. А значение ACCOUNT_COMMISSION_BLOCKED как было 0.0 так и осталось 0.0.
Может это из за того, что на демо-счете смотрю?
Да и все-таки хотелось бы узнать комиссию без пробной ставки... есть ли другие пути?