эксперт пытаестся по сигналу войти по цене например 8080,3 а котировки идут кратно 5 и эксперт есттественно дает ошибку так как должен войти по цене кратной 5 тоесть 8080,5 или 8080,0
Ясно, сразу не понял. А откуда эксперт берет цену 8080,3 такой цены нет и небыло? Цена должна браться с рынка, и нормализация это обычно касается кол-ва знаков после запятой, в Вашем случае это будет скорее округляться по методу угадайки, попаду в рынок или нет...
Тож такая проблема иной раз встает. Эксперт торгует Даксом, Футси или Доу (тут вообще кратность -25)
и нужно сделать так, что если, например, в параметрах стоят стопы не кратные размеру тика, то нужно чтобы они (эти стопы и тралы) всё равно автоматом выставлялись с нужной кратностью.
Надеюсь, понятно сказал...
Т.к. иначе журнал генерирует ошибку и позиции не выставляются, ордера не открываются...
Как это сделать ? Мож кто уже решал проблему?
Тож такая проблема иной раз встает. Эксперт торгует Даксом, Футси или Доу (тут вообще кратность -25)
и нужно сделать так, что если, например, в параметрах стоят стопы не кратные размеру тика, то нужно чтобы они (эти стопы и тралы) всё равно автоматом выставлялись с нужной кратностью.
Надеюсь понятно сказал...
Т.к. иначе журнал генерирует ошибку и позиции не выставляются, ордера не открываются...
Как это сделать ? Мож кто уже решал проблему?
Математика, должна быть примерно такая, берем цену которую собираемся выставить в качестве стопа, пусть будет 83.58, TICKSIZE 0.25, берем 83.58/0.25=334.32, либо округляем до ближайшего целого, либо нормализуем до 0 знаков после запятой. Получилось 334, обратная операция 334*0.25=83.5 вот искомая цена. Через зад, но более умного сегодня в голову не лезет)
Да, и Ваша проблема не такая, одно дела вычисляемая цена для стопов, уровней отложек, другое пытаться открыться по несуществующей цене.
//--------------------------------------------------------------------- // Нормализация цены с учетом шага изменения котировок: //--------------------------------------------------------------------- double NormalisePrice( string _symbol, double _org_price ) { double norm_price = _org_price; double point = MarketInfo( _symbol, MODE_POINT ); int digits = MarketInfo( _symbol, MODE_DIGITS ); double min_price_step = NormalizeDouble( MarketInfo( _symbol, MODE_TICKSIZE ) / point, 0 ); // минимальный размер шага изменения котировок, пунктов norm_price = NormalizeDouble( NormalizeDouble(( NormalizeDouble( _org_price / point, 0 )) / min_price_step, 0 ) * min_price_step * point, digits ); return( norm_price ); }Попробуйте вот так. Проверено для валют, индексных и товарных фьючерсов.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования