← Voltar

Проблема - невозможно отправить заявку с дробной ценой на 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;

Este tópico foi útil?

Compartilhar tópico

Comentários (9)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

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 Autor

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 Autor

Спасибо.

vader
vader Autor

Неправильное окугление цены в 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