Support Board
Date/Time: Fri, 21 Mar 2025 08:19:55 +0000
MBO Data and Teton Symbol Settings Issue
View Count: 856
[2022-11-09 18:55:37] |
User900285 - Posts: 98 |
Hello I have been working with the sc.GetBidMarketLimitOrdersForPrice function in ACSIL and in my testing I have run into an issue with certain symbols. To be clear, the MBO data is appearing on the chart but it is the message log I am referring to. Which is what I am using to check these values one by one. The trading service is the Teton CME Order Routing. The original problem is that the function was not populating the number of market orders, but only on symbols like ES and CL. It was working fine with the symbols ZN and ZF which have different price display formats. After some time, I switched the trading service to SC Data - All Services. This solved the problem immediately and I was now getting the correct number of market orders per level for these symbols. ES and CL. I tried to replicate the exact symbol settings from SC Data - All Services into the Teton service. My log tells me it is now getting the market orders. These are the symbol settings that I noticed were different by default between the two trading services. Historical Price Multiplier, Real-Time Price Multiplier, SC Data Multiplier. When I change those on the Teton Service, my message log is now printing the number of market orders, but it renders the chart useless. Date Time Of Last Edit: 2022-11-09 19:00:21
|
[2022-11-10 09:25:34] |
Sierra_Chart Engineering - Posts: 18875 |
We think we know what the problem is. We will resolve this in the next release. Do not change the Symbol Settings. Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
[2022-11-14 23:40:43] |
User900285 - Posts: 98 |
Hi this is just an update to say that in version 2453 the issue still persists with the same symbols on the Teton service. I did try to reset the symbol settings to their defaults by having them auto set from the data feed. US Treasuries symbols are still fine. |
[2022-11-16 02:15:41] |
Sierra_Chart Engineering - Posts: 18875 |
Provide us the actual ACSIL code you are using and we will test
Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
[2022-11-16 03:07:56] |
User900285 - Posts: 98 |
I just tried something and got the same result, this should be easier for you to test. I copied the exact code from the provided example function in Studies2.cpp starting at line 6419. Added a msg object to print out the int ActualLevels variable to the log. In the example this variable should return the number of orders in the market order data feed. It does when the symbol is set to ZF or ZN. Date Time Of Last Edit: 2022-11-16 04:15:02
|
[2022-11-16 11:36:11] |
binaryduke - Posts: 378 |
@Sierra_Chart Engineering - please could you update this post with the (pre-)release number once this has been resolved. Thank you.
|
[2022-11-16 13:37:12] |
User907968 - Posts: 838 |
Did you already try using the AdjustedPrice member of s_MarketDepthEntry? In the example code, PriceInTicks is calculated correctly when using AdjustedPrice, whereas it is not when using Price (and the Real-Time Price Multiplier is not equal to 1). So from the example code: int ActualLevels = sc.GetBidMarketLimitOrdersForPrice(sc.Round(MarketDepthEntry.Price / sc.TickSize), NumberOfMarketOrderDataElements, MarketOrderData);
becomesint ActualLevels = sc.GetBidMarketLimitOrdersForPrice(sc.Round(MarketDepthEntry.AdjustedPrice / sc.TickSize), NumberOfMarketOrderDataElements, MarketOrderData);
|
[2022-11-17 16:22:57] |
Sierra_Chart Engineering - Posts: 18875 |
The answer at post # 7 is correct and that is the only solution. However, the change we made recently created a new problem. We are releasing version 2454 in about 20 minutes to revert what we did previously. So you will need version 2454. And here is the new code example: SCSFExport scsf_MarketLimitOrdersForPriceExample(SCStudyInterfaceRef sc)
{ if (sc.SetDefaults) { // Set the configuration and defaults sc.GraphName = "MarketLimitOrdersForPrice Example"; sc.AutoLoop = 0; return; } // Do data processing int BidNumLevels = sc.GetBidMarketDepthNumberOfLevels(); int AskNumLevels = sc.GetAskMarketDepthNumberOfLevels(); const int NumberOfMarketOrderDataElements = 20; n_ACSIL::s_MarketOrderData MarketOrderData[NumberOfMarketOrderDataElements]; for (int LevelIndex = 0; LevelIndex < BidNumLevels; LevelIndex++) { s_MarketDepthEntry MarketDepthEntry; sc.GetBidMarketDepthEntryAtLevel(MarketDepthEntry, LevelIndex); int ActualLevels = sc.GetBidMarketLimitOrdersForPrice(sc.Round(MarketDepthEntry.AdjustedPrice / sc.TickSize), NumberOfMarketOrderDataElements, MarketOrderData); for (int OrderDataIndex = 0; OrderDataIndex < ActualLevels; OrderDataIndex++) { uint64_t OrderID = MarketOrderData[OrderDataIndex].OrderID; t_MarketDataQuantity MarketDataQuantity = MarketOrderData[OrderDataIndex].OrderQuantity; } } for (int LevelIndex = 0; LevelIndex < AskNumLevels; LevelIndex++) { s_MarketDepthEntry MarketDepthEntry; sc.GetAskMarketDepthEntryAtLevel(MarketDepthEntry, LevelIndex); int ActualLevels = sc.GetAskMarketLimitOrdersForPrice(sc.Round(MarketDepthEntry.AdjustedPrice / sc.TickSize), NumberOfMarketOrderDataElements, MarketOrderData); for (int OrderDataIndex = 0; OrderDataIndex < ActualLevels; OrderDataIndex++) { uint64_t OrderID = MarketOrderData[OrderDataIndex].OrderID; t_MarketDataQuantity MarketDataQuantity = MarketOrderData[OrderDataIndex].OrderQuantity; } } } Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
To post a message in this thread, you need to log in with your Sierra Chart account: