Проблема - невозможно отправить заявку с дробной ценой на FORTS


Проблема - невозможно отправить заявку с дробной ценой на FORTS
Atom Ответить
19.03.2012


Если отправить заявку с ценой 18300.5, то эта заявка не пройдет.
Более того, даже если отправить заявку с целой ценой она тоже может не пройти -
Код ошибки WrongSyntax Сообщение ACCOUNT=SPBFUT00398; TRANS_ID=57349688; CLASSCODE=SPBFUT; SECCODE=LKM2; QUANTITY=5; CLIENT_CODE=s07; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=18200,0000000;

Теги:


Спасибо:




9 Ответов
vfreeman

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


vader Перейти
Если отправить заявку с ценой 18300.5, то эта заявка не пройдет.
Более того, даже если отправить заявку с целой ценой она тоже может не пройти -
Код ошибки WrongSyntax Сообщение ACCOUNT=SPBFUT00398; TRANS_ID=57349688; CLASSCODE=SPBFUT; SECCODE=LKM2; QUANTITY=5; CLIENT_CODE=s07; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=18200,0000000;


а в чем состоит вопрос?

на всякий случай, может следует воспользоваться ShrinkPrice?
Спасибо:

Alexander

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


StackTrace
Спасибо:

vader

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


vfreeman
Вопрос состоит в том, что если отправить заявку с допустимой ценой, такой как 18300, то эта заявка может быть отклонена из-за неправильного синтаксиса.

StackTrace
в #=qF6uhJ6Ve3rBqBsj30jYv24K9B$1do6mxEeZg62oXHdfERxVqkIZq3QM7Q8DedTEZ.#=qryE2QlcrbbrMXnM4ybpxHg==(Int32 #=q8JpkEgOPJ62SmKICPVDW4A==, StringBuilder #=quNHxNiQ7RXYqR6sY_8Cdgg==)
в #=q6_bJnTxTmM4Bv8VAkuzX16N9kITey0Q0shlRx5OmuCI=.#=qT29nW$7XhRVru2DGAJ35k6fNpjLmr9Ele_hXAFXFvjA=(String #=qRoY7Nt6B5m0Fj1yxkFndyw==, OrderStatus& #=q9pK9DoyRhEdcFn9FGDfzGA==, UInt32& #=qFdreHgayDLlhmHGk5_FQ2Q==, Int64& #=qtIj2YBLeyNdUkTYRHvNo0Q==, String& #=qwCtdc2MI5H3AI4eD_yxcag==)
в StockSharp.Quik.QuikTrader.#=qtheK_M6o_aHg$Ehrs6dHnAbhJHfInIWz1$HsNBUMTkc=(Order #=qjShvemxQZnL_0t4qJbxsUQ==, TransactionBuilder #=qoS97U74WoFWYvGl4_AC_vQ==)
в StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order)
в StockSharp.Algo.BaseTrader.RegisterOrder(Order order)
в ConservativeRegimeByRules..ctor(Task task, InfoAboutBigVolume infoAboutBigVolume) в C:\vb\General\PartizanV2\source\v.2.0\ConservativeRegimeByRules.cs:строка 48
Автор топика
Спасибо:

Alexander

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


воспоспользуйтесь Ecng.Common.StringHelper.RemoveTrailingZeros или ShrinkPrice
Спасибо:

Mikhail Sukhov

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


Alexander Mukhanchikov Перейти
воспоспользуйтесь Ecng.Common.StringHelper.RemoveTrailingZeros или ShrinkPrice


В последнее версии второе включает первое.
Спасибо:

vader

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


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

vader

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


Неправильное окугление цены в ShrinkPrice

WriteDiagnostics("original pr " + price);
WriteDiagnostics("Shrink pr " + Security.ShrinkPrice(price, Direction == OrderDirections.Buy ? ShrinkRules.Less : ShrinkRules.More));

Результат

Sell
original pr 161500,0000000
Shrink pr 161505

Buy
original pr 161500,00
Shrink pr 161500

Sell
original pr 160500,00
Shrink pr 160505

Sell
original pr 160615,0000000
Shrink pr 160620

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

Alexander

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


vader Перейти
Неправильное окугление цены в ShrinkPrice

WriteDiagnostics("original pr " + price);
WriteDiagnostics("Shrink pr " + Security.ShrinkPrice(price, Direction == OrderDirections.Buy ? ShrinkRules.Less : ShrinkRules.More));

Результат

Sell
original pr 161500,0000000
Shrink pr 161505

Buy
original pr 161500,00
Shrink pr 161500

Sell
original pr 160500,00
Shrink pr 160505

Sell
original pr 160615,0000000
Shrink pr 160620



Вызывайте просто
Код
Security.ShrinkPrice(price)


Иначе он приводит к MidpointRounding.AwayFromZero если Less и к MidpointRounding.ToEven если More.
Спасибо:

Alexander

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


Пофиксил на codeplex
Спасибо:


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

loading
clippy