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


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


Добрый день.

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

Фотография
Дата: 16.02.2012
Ответить


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

Maxim

Фотография
Дата: 16.02.2012
Ответить


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.
1.gif 32,8KB (0)
Автор топика
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 16.02.2012
Ответить


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

Фотография
Дата: 16.02.2012
Ответить


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

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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.02.2012
Ответить


Ecng.Common.MathHelper.RemoveTrailingZeros
Спасибо:

Maxim

Фотография
Дата: 16.02.2012
Ответить


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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.02.2012
Ответить


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


Вы о чем?
Спасибо:

Maxim

Фотография
Дата: 17.02.2012
Ответить


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


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

Автор топика
Спасибо: Mikhail Sukhov

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.02.2012
Ответить


Не знал.
Спасибо:

Spiritschaser

Фотография
Дата: 11.04.2012
Ответить


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy