← 返回

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