← Назад

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

Если отправить заявку с ценой 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
vfreeman

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
Alexander

StackTrace

vader
vader Автор

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
Alexander

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

Mikhail Sukhov
Mikhail Sukhov

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

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

vader
vader Автор

Спасибо.

vader
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

Alexander
Alexander

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
Alexander

Пофиксил на codeplex