- Плавающий спред. Как выставлять TP?
- Некорректный расчет прибыли на биржевых инструментах в тестере
- Комиссия брокера. Как считать и учитывать?
Определи размер комиссии в пунктах
int com_pip = MathCeil(OrderCommission() / (OrderLots()*MarketInfo(Symbol(),MODE_TICKVALUE)));
Вроде как-то так. потом или отнимаешь или добавляешь com_pip к цене открытия ордера. В зависимости от типа ордера
Спасибо, проверю
Не забудьте встроить в программный код строку, которая проверяет тип торгового инструмента - ну просто чтоб не париться, чтоб советник сам отличал валютные пары от индексов, акций и т.п. сделать это можно вот так:
int Zalog=MarketInfo(Symbol(),MODE_MARGINCALCMODE);//Способ расчета залоговых средств. Возвращаемые значения: 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD на индексы
Работает, но одно маленькое уточнение - т.к. размер комиссии величина отрицательная, то и возвращаемое значение будет отрицательным, т.ч. учтите это когда будете прибавлять или вычитать
Еще раз спасибо
Не забудьте встроить в программный код строку, которая проверяет тип торгового инструмента - ну просто чтоб не париться, чтоб советник сам отличал валютные пары от индексов, акций и т.п. сделать это можно вот так:
int Zalog=MarketInfo(Symbol(),MODE_MARGINCALCMODE);//Способ расчета залоговых средств. Возвращаемые значения: 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD на индексы
Комиссия бывает и на Forex парах - например NDD счета от Альпари
Вот ещё что вспомнил и хотел бы рассказать.
Некоторые не-форекс торговые инструменты ходят не по одному пункту за тик. Поэтому при переносе стопа в безубыток нужно это учитывать. Скажем так. Евробакс ходит по одному пункту за тик. Если мы намерены переместить стоп в безубыток по достижении 30 пунктов профита, то тут проблем нет. Но вот скажем, индекс Dax в том же Broco ходит как минимум по 5 пунктов за тик. Поэтому для Дакса наши 30 пунктов профита будут уже не 30, а 30*5. таким образом можно ввести понятие "шаг тика" или "размер тика". В коде я это прописывал в блоке инициализации советника следующим образом:
TickSize=MarketInfo(SMB,MODE_TICKSIZE);// размер тика (тип переменной - double) PoSkolkoPunktov=TickSize/Point;// по сколько пунктов за тик ходит инструмент (тип переменной - int) PoSkolkoPunktov=NormalizeDouble(PoSkolkoPunktov,0);
Далее в коде для определения уровня я уже использовал переменную PoSkolkoPunktov.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования