{"id":7015,"date":"2025-08-28T22:11:57","date_gmt":"2025-08-29T03:11:57","guid":{"rendered":"https:\/\/librarytestdev.wpenginepowered.com\/?post_type=doc&#038;p=7015"},"modified":"2026-06-29T11:14:49","modified_gmt":"2026-06-29T16:14:49","slug":"extracting-market-data-values","status":"publish","type":"doc","link":"https:\/\/library-staging.tradingtechnologies.com\/apis\/tt-core-sdk\/subscribing-for-market-data\/extracting-market-data-values\/","title":{"rendered":"Extracting Market Data Values"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">After the subscription starts, TT Core SDK invokes the event handler method you registered with the subscription for every price update passing an instance of a\u00a0<strong>PriceSnap<\/strong>\u00a0struct. The\u00a0<strong>PriceSnap<\/strong>\u00a0struct contains members for each element of market data, such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \ndouble open_price = NAN;                  \ndouble close_price = NAN;         \ndouble high_price = NAN;          \ndouble low_price = NAN;           \ndouble last_trade_price = NAN;    \ndouble last_trade_quantity = NAN; \ndouble volume = NAN;              \ndouble cum_last_trade_quantity = NAN; \ndouble settlement_price = NAN;    \ndouble open_interest = NAN;   <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It also contains an array of the\u00a0<strong>DepthLevel<\/strong>\u00a0struct for bid depth and an array of the\u00a0<strong>DepthLevel<\/strong>\u00a0struct for ask depth.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\nstruct DepthSnap\n{\n  \/\/ a single level of the total depth\n\n  struct DepthLevel\n  {\n    double price;            \/\/!&lt; Price\n    int32_t order_count;     \/\/!&lt; Number of orders that make up the total quantity\n    double quantity;         \/\/!&lt; Total quantity at this level\n    double implied_quantity; \/\/!&lt; Implied quantity contributing to the total quantity\n  } levels&#91;MAX_DEPTH_LEVEL];\n\n  size_t count; \/\/!&lt; Number of available price depth levels\n};\n\n\n    <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DepthSnap asks; DepthSnap bids; Note: All prices are delivered in Points. The following code snippet demonstrates how to process a price subscription update.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><br>\n\nstd::string to_string(const ttsdk::PriceSnap&amp; snap)\n{\n  std::ostringstream ss;\n\n  if (snap.event_type == ttsdk::PriceEventType::DIRECT)\n    ss &lt;&lt; \"PriceSnap:     &#91;direct event]\\n\";\n  else if (snap.event_type == ttsdk::PriceEventType::CALCULATED_IMPLIEDS)\n    ss &lt;&lt; \"PriceSnap:     &#91;calculated implieds event]\\n\";\n  else if (snap.event_type == ttsdk::PriceEventType::SIMULATED)\n    ss &lt;&lt; \"PriceSnap:     &#91;simulated event]\\n\";\n  else\n    ss &lt;&lt; \"PriceSnap:     &#91;unknown event]\\n\";\n\n  ss &lt;&lt; \"market_state=\" &lt;&lt; (int)snap.market_state\n     &lt;&lt; \" asks.count=\" &lt;&lt; snap.asks.count\n     &lt;&lt; \" bids.count=\" &lt;&lt; snap.bids.count\n     &lt;&lt; '\\n'\n     &lt;&lt; \"open=\" &lt;&lt; snap.open_price\n     &lt;&lt; \" close=\" &lt;&lt; snap.close_price\n     &lt;&lt; \" high=\" &lt;&lt; snap.high_price\n     &lt;&lt; \" low=\" &lt;&lt; snap.low_price\n     &lt;&lt; \" settle=\" &lt;&lt; snap.settlement_price\n     &lt;&lt; '\\n'\n     &lt;&lt; \"ltp=\" &lt;&lt; snap.last_trade_price\n     &lt;&lt; \" ltq=\" &lt;&lt; snap.last_trade_quantity\n     &lt;&lt; \" volume=\" &lt;&lt; snap.volume\n     &lt;&lt; '\\n';\n\n  if (snap.asks.count &gt; 0 || snap.bids.count &gt; 0)\n  {\n      ss &lt;&lt; \"  #order   imp Q       Q  |     price     |       Q   imp Q  #order\\n\";\n  }\n\n  for (int i = snap.asks.count - 1; i &gt;= 0; --i)\n  {\n    const auto&amp; level = snap.asks.levels&#91;i];\n    ss &lt;&lt; \"                          |\"\n       &lt;&lt; std::setw(15) &lt;&lt; std::setprecision(6) &lt;&lt; level.price\n       &lt;&lt; \"|\"\n       &lt;&lt; std::setw(8) &lt;&lt; level.quantity\n       &lt;&lt; std::setw(8) &lt;&lt; level.implied_quantity\n       &lt;&lt; std::setw(8) &lt;&lt; level.order_count &lt;&lt; '\\n';\n  }\n\n  for (int i = 0; i &lt; snap.bids.count; ++i)\n  {\n    const auto&amp; level = snap.bids.levels&#91;i];\n    ss &lt;&lt; std::setw(8) &lt;&lt; level.order_count\n       &lt;&lt; std::setw(8) &lt;&lt; level.implied_quantity\n       &lt;&lt; std::setw(8) &lt;&lt; level.quantity\n       &lt;&lt; \"  |\"\n       &lt;&lt; std::setw(15) &lt;&lt; std::setprecision(6) &lt;&lt; level.price &lt;&lt; \"|\\n\";\n  }\n\n  return ss.str();\n}\n\n                      <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p class=\"wp-block-paragraph\">After the subscription starts, TT Core SDK invokes the event handler method you registered with the subscription for every price update passing an instance of a\u00a0<strong>PriceSnap<\/strong>\u00a0struct. The\u00a0<strong>PriceSnap<\/strong>\u00a0struct contains members for each element of market data, such as:<\/p>\n<p class=\"wp-block-paragraph\">It also contains an array of the\u00a0<strong>DepthLevel<\/strong>\u00a0struct for bid depth and an array of the\u00a0<strong>DepthLevel<\/strong>\u00a0struct for ask depth.<\/p>\n<p class=\"wp-block-paragraph\">DepthSnap asks; DepthSnap bids; Note: All prices are delivered in Points. The following code snippet demonstrates how to process a price subscription update.<\/p>\n","protected":false},"author":2,"template":"wp-custom-template-single-doc-tt-core-sdk","meta":{"_acf_changed":false,"footnotes":""},"docs-category":[447],"class_list":["post-7015","doc","type-doc","status-publish","hentry","docs-category-subscribing-for-market-data"],"acf":[],"_links":{"self":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc\/7015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc"}],"about":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/types\/doc"}],"author":[{"embeddable":true,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":0,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/doc\/7015\/revisions"}],"wp:attachment":[{"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/media?parent=7015"}],"wp:term":[{"taxonomy":"docs-category","embeddable":true,"href":"https:\/\/library-staging.tradingtechnologies.com\/ja\/wp-json\/wp\/v2\/docs-category?post=7015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}