{"id":175871,"date":"2020-09-25T15:46:00","date_gmt":"2020-09-25T19:46:00","guid":{"rendered":"https:\/\/ibkrcampus.com\/trading-lessons\/market-data-functions\/"},"modified":"2023-04-25T20:59:27","modified_gmt":"2023-04-26T00:59:27","slug":"market-data-functions","status":"publish","type":"trading-lessons","link":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/","title":{"rendered":"Market Data Functions"},"content":{"rendered":"<p>In the previous lesson, we learned about the IBrokers package and some of the basic API methods like establishing connection with TWS, getting account details, and creating contracts for use in API calls. In this lesson, we will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data from the Trader Workstation.<\/p>\n<h4>In this lesson, you would:<\/h4>\n<ul>\n<li>Different types of market data and market data lines<\/li>\n<li>Learn to fetch streaming and historical market data<\/li>\n<\/ul>\n<h3>Types of Market Data<\/h3>\n<p>It is possible to fetch different kinds of market data from the TWS. A live market data subscription is required to have market data for the requested instruments in TWS.<\/p>\n<p>Types of market data include:<\/p>\n<ul>\n<li>Top Market Data (Level 1)<\/li>\n<li>Market Depth (Level II)<\/li>\n<li>Real Time Bars<\/li>\n<\/ul>\n<h3>Market Data Lines<\/h3>\n<p>Market data lines represent the active market data requests which a user has made. By default, every user has a maximum ticker Limit of 100 market data lines. Thus, the user can get real time market data of up to 100 instruments simultaneously. An error message is thrown if it has reached the maximum number of simultaneous requests.<\/p>\n<h3>Streaming Market Data Functions &#8211; The reqMktData function<\/h3>\n<p>Streaming level 1 market data can be obtained from the TWS via the reqMktData function.<\/p>\n<p>The function takes arguments like:<\/p>\n<p>conn &#8211; a valid twsConnection or twsPlayback connection<\/p>\n<p>Contract &#8211; twsContract object(s) requested data for<\/p>\n<p>tickGenerics &#8211; comma delimited string of generic tick types<\/p>\n<p>snapshot &#8211; should snapshot data be returned<\/p>\n<p>tickerId &#8211; ticker id to associate with the returned data<\/p>\n<p>timeStamp &#8211; include R time stamps<\/p>\n<p>file &#8211; passed to internal cat calls<\/p>\n<p>eventWrapper &#8211; eWrapper object<\/p>\n<p>CALLBACK &#8211; main receiver callback<\/p>\n<p><strong>Example: <\/strong><\/p>\n<p>The image below illustrates how the streaming data function works. We first define the contract for which we want to pull the streaming data on line 8.<\/p>\n<p>On line 11, we use the function with the TWS connection, and the security objects as the arguments. Upon execution a continuous stream of market data is returned by the TWS.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-3364 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/01\/Screen-Shot-2020-09-25-at-3.19.34-PM.png\" alt=\"\" width=\"884\" height=\"540\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 884px; aspect-ratio: 884\/540;\"><\/p>\n<p>By default, there are certain \u2018default tick types\u2019 that are returned. Additional data types are available that can be requested by specifying certain \u2018generic tick types\u2019 in the market data request.<\/p>\n<p>Callbacks, via CALLBACK and eventWrapper are designed to allow for R level processing of the real-time data stream and provide for more control over the incoming results. We will see how to do this in the next lesson.<\/p>\n<h3>Streaming Market Data Functions \u2013 The reqMktDepth function<\/h3>\n<p>This function allows for streaming market depth i.e. order book data to be handled in R.<\/p>\n<p>The function takes the following arguments:<\/p>\n<p>conn &#8211; a valid twsConnection or twsPlayback connection<\/p>\n<p>Contract &#8211; twsContract object(s) requested data for<\/p>\n<p>tickerId &#8211; ticker id to associate with the returned data<\/p>\n<p>timeStamp &#8211; include R time stamps<\/p>\n<p>playback \u2013 playback speed adjustment<\/p>\n<p>file &#8211; passed to internal cat calls<\/p>\n<p>eventWrapper &#8211; eWrapper object<\/p>\n<p>CALLBACK &#8211; main receiver callback<\/p>\n<p><strong>Example: <\/strong><\/p>\n<p>The image below illustrates how the streaming market depth function works. We first define the contract for which we want to pull the data on line 8. On line 11, we use the function with the TWS connection, and the security objects as the arguments.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-3365 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/01\/Screen-Shot-2020-09-25-at-3.22.32-PM.png\" alt=\"\" width=\"894\" height=\"540\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 894px; aspect-ratio: 894\/540;\"><\/p>\n<p>The output can be seen in the console. We can see the market depth data up to 5 best bid and ask prices.<\/p>\n<h3>Streaming Market Data Functions \u2013 reqRealTimeBars Function<\/h3>\n<p>This function allows for streaming real-time bars to be handled in R.<\/p>\n<p>The function takes the following arguments:<\/p>\n<p>conn &#8211; a valid twsConnection or twsPlayback connection<\/p>\n<p>Contract &#8211; twsContract object(s) requested data for<\/p>\n<p>tickerId &#8211; ticker id to associate with the returned data<\/p>\n<p>whatToShow &#8211; type of data to be extracted<\/p>\n<p>bar size &#8211; bar size to retrieve<\/p>\n<p>file &#8211; passed to internal cat calls<\/p>\n<p>eventWrapper &#8211; eWrapper object<\/p>\n<p>CALLBACK &#8211; main receiver callback<\/p>\n<p><strong>Example: <\/strong><\/p>\n<p>Let us now see how the real time bars function works. We first define the contract on line 8. We construct the function on line 11 with tws connection, security object, and the whatToShow as the arguments. Upon execution, a continuous stream of real time bars data is returned by the TWS.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-3366 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/01\/Screen-Shot-2020-09-25-at-3.25.50-PM.png\" alt=\"\" width=\"960\" height=\"540\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 960px; aspect-ratio: 960\/540;\"><\/p>\n<h3>Historical Market Data Function &#8211; reqHistoricalData Function<\/h3>\n<p>Historical market data is obtained from the TWS via the reqHistoricalData function. The data is delivered in the form of candlesticks.<\/p>\n<p>The function takes the following arguments:<\/p>\n<p>tickerId &#8211; a unique identifier which will serve to identify the incoming data<\/p>\n<p>Contract &#8211; a twsContract you are interested in<\/p>\n<p>endDateTime &#8211; request\u2019s end date and time<\/p>\n<p>duration &#8211; time span that the request will cover<\/p>\n<p>barSize &#8211; bar size to retrieve<\/p>\n<p>whatToShow &#8211; type of data to be extracted<\/p>\n<p>Timeformat &#8211; format in which the incoming bar\u2019s data should be presented<\/p>\n<p>eventHistoricalData &#8211; callback function to process data<\/p>\n<p>file &#8211; file to write data to<\/p>\n<p><strong>Valid Duration String Units<\/strong> &#8211; The duration string must be of the form \u2018n unit\u2019 where the unit string can be any of strings shown in the table below.<\/p>\n<p><img decoding=\"async\" class=\"half aligncenter wp-image-3369 size-full lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2022\/11\/Screen-Shot-2020-09-25-at-3.33.15-PM.png\" alt=\"\" width=\"332\" height=\"330\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 332px; aspect-ratio: 332\/330;\"><\/p>\n<p><strong>Valid Bar Sizes<\/strong> &#8211; The valid bar sizes must be specified exactly as shown in the below table. However, there is no guarantee from the API that all will work for all securities or durations.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-3372 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2022\/11\/Screen-Shot-2020-09-25-at-3.35.53-PM.png\" alt=\"\" width=\"888\" height=\"352\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 888px; aspect-ratio: 888\/352;\"><\/p>\n<p><strong>Valid whatToShow values<\/strong> &#8211; The whatToShow values can be any one of the following type: Trades, Midpoint, Bid, Ask, and Bid_Ask<\/p>\n<p><img decoding=\"async\" class=\"half wp-image-3373 size-full aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2022\/11\/Screen-Shot-2020-09-25-at-3.37.03-PM.png\" alt=\"\" width=\"384\" height=\"276\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 384px; aspect-ratio: 384\/276;\"><\/p>\n<p><strong>Example: <\/strong><\/p>\n<p>Let us now see how the historical data function works. We first define the contract for which we want to pull the historical data on line 8. On line 11, we use the function with the TWS connection, and the security objects as the arguments. Upon execution the output can be seen in the console.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-3375 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/01\/Screen-Shot-2020-09-25-at-3.38.48-PM.png\" alt=\"\" width=\"831\" height=\"540\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 831px; aspect-ratio: 831\/540;\"><\/p>\n<p>In the next example, we pull the 1 minute data for the duration of 1 week by specifying the respective arguments. Upon execution the 1 minute data can be seen in the console.<\/p>\n<p><img decoding=\"async\" class=\"size-medium wp-image-3376 aligncenter lazyload\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/01\/Screen-Shot-2020-09-25-at-3.39.50-PM.png\" alt=\"\" width=\"907\" height=\"540\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 907px; aspect-ratio: 907\/540;\"><\/p>\n<h3>Summary<\/h3>\n<p>In this lesson, we covered the types of market data, learnt about market data lines and saw the working of the various streaming and historical market data functions. In the next lesson, we will learn how to customize these market data functions.<\/p>\n<p>Note \u2013 The IBrokers package provides native R access to Interactive Brokers Trader Workstation API<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this lesson, we will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data from the Trader Workstation.<\/p>\n","protected":false},"author":851,"featured_media":221441,"parent":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"contributors-categories":[13654],"traders-academy":[13126,13128,13132],"class_list":{"0":"post-175871","1":"trading-lessons","2":"type-trading-lessons","3":"status-publish","4":"has-post-thumbnail","6":"contributors-categories-quantinsti","7":"traders-academy-intermediate-trading","8":"traders-academy-level","9":"traders-academy-trading-lesson"},"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Archives | Traders&#039; Academy | IBKR Campus<\/title>\n<meta name=\"description\" content=\"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/175871\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Market Data Functions\" \/>\n<meta property=\"og:description\" content=\"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/\" \/>\n<meta property=\"og:site_name\" content=\"IBKR Campus US\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-26T00:59:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Market Data Functions\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/\",\n\t            \"name\": \"Market Data Functions\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/09\\\/mqdefault-8.jpg\",\n\t            \"datePublished\": \"2020-09-25T19:46:00+00:00\",\n\t            \"dateModified\": \"2023-04-26T00:59:27+00:00\",\n\t            \"description\": \"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.\",\n\t            \"breadcrumb\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/#breadcrumb\"\n\t            },\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/09\\\/mqdefault-8.jpg\",\n\t            \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/09\\\/mqdefault-8.jpg\",\n\t            \"width\": 320,\n\t            \"height\": 180,\n\t            \"caption\": \"Market Data Functions\"\n\t        },\n\t        {\n\t            \"@type\": \"BreadcrumbList\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/trading-lessons\\\/market-data-functions\\\/#breadcrumb\",\n\t            \"itemListElement\": [\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 1,\n\t                    \"name\": \"Academy Lessons\",\n\t                    \"item\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 2,\n\t                    \"name\": \"Market Data Functions\"\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"name\": \"IBKR Campus US\",\n\t            \"description\": \"Financial Education from Interactive Brokers\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\",\n\t            \"name\": \"Interactive Brokers\",\n\t            \"alternateName\": \"IBKR\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"width\": 669,\n\t                \"height\": 669,\n\t                \"caption\": \"Interactive Brokers\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            },\n\t            \"publishingPrinciples\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/about-ibkr-campus\\\/\",\n\t            \"ethicsPolicy\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/cyber-security-notice\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Archives | Traders' Academy | IBKR Campus","description":"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/175871\/","og_locale":"en_US","og_type":"article","og_title":"Market Data Functions","og_description":"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.","og_url":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/","og_site_name":"IBKR Campus US","article_modified_time":"2023-04-26T00:59:27+00:00","twitter_card":"summary_large_image","twitter_title":"Market Data Functions","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/","url":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/","name":"Market Data Functions","isPartOf":{"@id":"https:\/\/ibkrcampus.com\/campus\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/#primaryimage"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/09\/mqdefault-8.jpg","datePublished":"2020-09-25T19:46:00+00:00","dateModified":"2023-04-26T00:59:27+00:00","description":"We will cover the different types of Market Data, learn about Market data lines and show how to fetch streaming and historical market data.","breadcrumb":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/#primaryimage","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/09\/mqdefault-8.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/09\/mqdefault-8.jpg","width":320,"height":180,"caption":"Market Data Functions"},{"@type":"BreadcrumbList","@id":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-data-functions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Academy Lessons","item":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/"},{"@type":"ListItem","position":2,"name":"Market Data Functions"}]},{"@type":"WebSite","@id":"https:\/\/ibkrcampus.com\/campus\/#website","url":"https:\/\/ibkrcampus.com\/campus\/","name":"IBKR Campus US","description":"Financial Education from Interactive Brokers","publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ibkrcampus.com\/campus\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ibkrcampus.com\/campus\/#organization","name":"Interactive Brokers","alternateName":"IBKR","url":"https:\/\/ibkrcampus.com\/campus\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","width":669,"height":669,"caption":"Interactive Brokers"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/www.interactivebrokers.com\/campus\/about-ibkr-campus\/","ethicsPolicy":"https:\/\/www.interactivebrokers.com\/campus\/cyber-security-notice\/"}]}},"_links":{"self":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/175871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons"}],"about":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/types\/trading-lessons"}],"author":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/users\/851"}],"replies":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/comments?post=175871"}],"version-history":[{"count":0,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/175871\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media\/221441"}],"wp:attachment":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media?parent=175871"}],"wp:term":[{"taxonomy":"contributors-categories","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/contributors-categories?post=175871"},{"taxonomy":"traders-academy","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/traders-academy?post=175871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}