← Zurück

Ошибка при выставлении стоп-заявок. Превышено допустимое число знаков после разделителя.

Добрый день.

При попытке выставить стоп-заявку происходит следующая ошибка: «Код ошибки Failed Сообщение Неправильно указана цена: "96.41000000000000" Сообщение об ошибке: Превышено допустимое число знаков после разделителя дробной части»

Строка транзакции для этой заявки: «ACCOUNT=L01-00000F00; TRANS_ID=58059973; CLASSCODE=EQBR; SECCODE=SBER; QUANTITY=1; CLIENT_CODE=6014; EXPIRY_DATE=GTC; OPERATION=B; ACTION=NEW_STOP_ORDER; STOPPRICE=96.41000000000000; PRICE=96.41000000000000;»

Заявка выставляется в Квик джуниор. Бумага SBER. Цена 96.41 Шаг цены для сбера уовлетворительный: 0.01

Подозреваю, что при формировании строки транзакции необходимо убрать лишние нули в цене. Так ли это?

War dieses Thema hilfreich?

Thema teilen

Kommentare (10)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

Покажите как цену формируете, как подаёте заявку. И выведите цену перед подачей заявки.

Maxim
Maxim Autor

ACCOUNT=SPBFUT00434; TRANS_ID=60827882; CLASSCODE=EQBR; SECCODE=SBER; QUANTITY=1; CLIENT_CODE=SPBFUT00434; EXPIRY_DATE=GTC; OPERATION=B; ACTION=NEW_STOP_ORDER; STOPPRICE=95.69000000000000; PRICE=95.69000000000000;

Код ошибки Failed Сообщение Неправильно указана цена: "95.69000000000000" Сообщение об ошибке: Превышено допустимое число знаков после разделителя дробной части

Принтскрин прикрепил. Цена — просто значение decimal.

Sergey Masyura
Sergey Masyura

Maxim: ACCOUNT=SPBFUT00434; TRANS_ID=60827882; CLASSCODE=EQBR; SECCODE=SBER; QUANTITY=1; CLIENT_CODE=SPBFUT00434; EXPIRY_DATE=GTC; OPERATION=B; ACTION=NEW_STOP_ORDER; STOPPRICE=95.69000000000000; PRICE=95.69000000000000;

Код ошибки Failed Сообщение Неправильно указана цена: "95.69000000000000" Сообщение об ошибке: Превышено допустимое число знаков после разделителя дробной части

Принтскрин прикрепил. Цена — просто значение decimal.

http://quik.ru/forum/qpile/66523/66525/

ссылка может помочь?

Maxim
Maxim Autor

Неа, не может.

С количеством знаков после запятой у меня все нормально. Два знака как и положено для Сбера.

Скорей всего ошибка происходит на этапе формирования строки транзакции. Наверно, там что-то вроде Price.ToString() присутствует. Вот этот тустринг и выдает лишние нули в строку транзакции, а Квик эти лишние нули не может переварить.

Mikhail Sukhov
Mikhail Sukhov

Ecng.Common.MathHelper.RemoveTrailingZeros

Maxim
Maxim Autor

Классно )) Конвертнуть в double, а потом обратно в decimal )

Спасибо за совет. Воспользуюсь.

Mikhail Sukhov
Mikhail Sukhov

Maxim: Классно )) Конвертнуть в double, а потом обратно в decimal )

Вы о чем?

Maxim
Maxim Autor

О том, что в методе Ecng.Common.MathHelper.RemoveTrailingZeros нули убираются следующим образом:

public static decimal RemoveTrailingZeros(this decimal value) { return (decimal) ((double) value); }

Mikhail Sukhov
Mikhail Sukhov
Mikhail Sukhov

Не знал.

Spiritschaser
Spiritschaser

Только что столкнулся с подобной проблемой. Есть ли какие-то правила по работе с decimal, чтобы в самый интересный момент Quik не отказывался принять заявку?