← 戻る

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

Добрый день.

При попытке выставить стоп-заявку происходит следующая ошибка: «Код ошибки 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

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

このトピックは参考になりましたか?

トピックを共有

コメント (10)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Alexander
Alexander

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

Maxim
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.

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 著者

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

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

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

Mikhail Sukhov
Mikhail Sukhov

Ecng.Common.MathHelper.RemoveTrailingZeros

Maxim
Maxim 著者

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

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

Mikhail Sukhov
Mikhail Sukhov

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

Вы о чем?

Maxim
Maxim 著者

О том, что в методе 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 не отказывался принять заявку?