К содержимому
Форекс
на автомате

Ошибка 10015 на индексе, хотя цену нормализую по Digits

timur_spbс 01.2026
Первый прогон
3сообщения
Автор темы#1
Советник ставит лимитные заявки с отступом от цены. На валютах всё нормально, а на индексе почти все заявки отклоняются с кодом 10015, неверная цена, проходят единицы. Цену считаю как Bid минус отступ, потом NormalizeDouble(price, _Digits). Digits у символа 2, цены вроде правильные, например 18452.37. В тестере на реальных тиках та же картина, так что дело не в исполнении. Что не так?
Алёна Лс 07.2022
Испытатель
11сообщений
#2
Посмотри SYMBOL_TRADE_TICK_SIZE в спецификации. У индексов шаг цены часто 0.25 или 0.5, а Digits говорит только, сколько знаков показывать. Цена заявки должна быть кратна шагу: 18452.37 сервер не примет, примет 18452.25 или 18452.50. Те единицы, что проходят, просто случайно попали на шаг. NormalizeDouble по знакам тут не спасает, округлять надо по шагу:
Код:
double NormalizeToTick(double price) { double tick = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); if(tick <= 0) return NormalizeDouble(price, _Digits); return NormalizeDouble(MathRound(price / tick) * tick, _Digits); }
Стоп и тейк прогоняй через ту же функцию. Для лимитки на покупку я бы округляла вниз, а не к ближайшему, чтобы заявка не оказалась ближе к рынку, чем ты задумал, для продажи вверх. И держи в голове стоп-левел: если стоп или тейк ближе SYMBOL_TRADE_STOPS_LEVEL, получишь уже 10016.
Продолжить обсуждение

Для ответа войдите в свой аккаунт.

Войти
← Предыдущая темаСледующая тема →