{"id":6068,"date":"2024-11-22T12:11:16","date_gmt":"2024-11-22T12:11:16","guid":{"rendered":"https:\/\/eodhd.com\/financial-academy\/?p=6068"},"modified":"2025-02-05T14:37:47","modified_gmt":"2025-02-05T14:37:47","slug":"anychart-integration-for-the-financial-trading-dashboard-with-python-django","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","title":{"rendered":"AnyChart integration for the Financial Trading Dashboard with Python Django"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"992\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-1024x992.png\" alt=\"\" class=\"wp-image-6069\" srcset=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-1024x992.png 1024w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-300x290.png 300w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-768x744.png 768w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-1536x1487.png 1536w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-2048x1983.png 2048w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-60x58.png 60w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-150x145.png 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"bordered_paragraph\" style=\"font-size:16px\">Please note, API data availability depends on your subscription plan. Some data isn&#8217;t included in the free plan. Visit our <a href=\"https:\/\/eodhd.com\/pricing\" target=\"_blank\" rel=\"noreferrer noopener\">pricing page<\/a> to find the package that fits your needs.<\/p>\n\n\n\n<p>This article builds upon the previous two in the series, \u201c<em><a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/build-a-financial-trading-dashboard-with-python-django\" target=\"_blank\" rel=\"noreferrer noopener\">Build a Financial Trading Dashboard with Python Django<\/a>\u201d and \u201c<a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/enhancing-the-financial-trading-dashboard-with-python-django\" target=\"_blank\" rel=\"noreferrer noopener\">Enhancing the Financial Trading Dashboard with Python Django<\/a>\u201d<\/em>.<\/p>\n\n\n\n<p>Initially, I created the treemap on the landing page using the D3.js library. While it worked well, I wanted to explore other charting options, so I evaluated both Chart.js and AnyChart. Ultimately, I decided to migrate the treemap from D3.js to AnyChart. Although the visual appearance of the charts is quite similar, I found AnyChart&#8217;s code significantly more intuitive and easier to understand. Additionally, I personally feel that the <a href=\"https:\/\/www.anychart.com\" target=\"_blank\" rel=\"noreferrer noopener\">AnyChart<\/a> treemap offers slightly more functionality and appears more polished. That said, I also liked the aesthetic of Chart.js, which remains a viable option.<\/p>\n\n\n\n<p>In the previous article, I created a page displaying the historical data of a market, presented neatly using a Bootstrap data table. For this article, I wanted to include an appealing stock chart above the table. Once again, I considered the three charting libraries, but I was particularly impressed with the way AnyChart presented the data and the functionality it offered. This article will explain how this was achieved.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"851\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-1024x851.png\" alt=\"\" class=\"wp-image-6070\" srcset=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-1024x851.png 1024w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-300x249.png 300w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-768x638.png 768w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-1536x1276.png 1536w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-2048x1702.png 2048w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-60x50.png 60w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-150x125.png 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Finally, I discovered another useful feature available in Bootstrap. In the previous article, I demonstrated how to add an \u201cExport to Excel\u201d button. Similarly, with just one line of code, you can also add a \u201cPrint\u201d button. This feature takes the data from the Bootstrap table and presents it in a print-friendly format.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"653\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-1024x653.png\" alt=\"\" class=\"wp-image-6071\" srcset=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-1024x653.png 1024w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-300x191.png 300w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-768x490.png 768w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-1536x979.png 1536w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-2048x1305.png 2048w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-60x38.png 60w, https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-150x96.png 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"maxbutton-1 maxbutton maxbutton-subscribe-to-api external-css btn\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Register &amp; Get Data<\/span><\/a><\/p>\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-updating-the-view\">Updating the View<\/h2>\n\n\n\n<p>I only had to make one change to a view to get the historical data stock chart working.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-0e41e70ce94e9d8d24d1d67f608f79a2\"><code lang=\"python\" class=\"language-python\">def fetch_historical_data(request, market, interval):\n    now = datetime.now()\n\n    if interval in [\"m\", \"w\", \"d\"]:\n        end_date = now.date().isoformat()\n        start_date = (now - timedelta(days=300)).date().isoformat()\n    else:\n        end_date = now.strftime(\"%Y-%m-%dT%H:%M\")\n        start_date = (now - timedelta(hours=300)).strftime(\"%Y-%m-%dT%H:%M\")\n\n    start_date = request.GET.get(\"from\", start_date)\n    end_date = request.GET.get(\"to\", end_date)\n\n    def parse_datetime(dt_str):\n        try:\n            return datetime.strptime(dt_str, \"%Y-%m-%dT%H:%M:%S\")\n        except ValueError:\n            try:\n                return datetime.strptime(dt_str, \"%Y-%m-%dT%H:%M\")\n            except ValueError:\n                return datetime.strptime(dt_str, \"%Y-%m-%d\")\n\n    start_date_parsed = parse_datetime(start_date)\n    end_date_parsed = parse_datetime(end_date)\n\n    if interval in [\"m\", \"w\", \"d\"]:\n        start_date = start_date_parsed.strftime(\"%Y-%m-%d\")\n        end_date = end_date_parsed.strftime(\"%Y-%m-%d\")\n    else:\n        start_date_unix = int(start_date_parsed.timestamp())\n        end_date_unix = int(end_date_parsed.timestamp())\n\n    endpoint = \"eod\" if interval in [\"m\", \"w\", \"d\"] else \"intraday\"\n    interval_type = \"period\" if interval in [\"m\", \"w\", \"d\"] else \"interval\"\n\n    if interval not in [\"m\", \"w\", \"d\"]:\n        url = f\"https:\/\/eodhd.com\/api\/{endpoint}\/{market}?{interval_type}={interval}&amp;from={start_date_unix}&amp;to={end_date_unix}&amp;api_token={settings.EODHD_API_TOKEN}&amp;fmt=json\"\n    else:\n        url = f\"https:\/\/eodhd.com\/api\/{endpoint}\/{market}?{interval_type}={interval}&amp;from={start_date}&amp;to={end_date}&amp;api_token={settings.EODHD_API_TOKEN}&amp;fmt=json\"\n\n    print(url)\n    response = requests.get(url)\n    data = response.json()\n\n    def format_unix_timestamp(unix_ts):\n        return datetime.utcfromtimestamp(unix_ts).strftime(\"%Y-%m-%d %H:%M:%S\")\n\n    for entry in data:\n        if \"date\" in entry:\n            entry[\"timestamp\"] = entry.pop(\"date\")\n        elif \"datetime\" in entry:\n            datetime_value = entry.pop(\"datetime\")\n            try:\n                entry[\"timestamp\"] = format_unix_timestamp(int(datetime_value))\n            except ValueError:\n                entry[\"timestamp\"] = datetime_value\n\n    if not data or \"error\" in data:\n        data = []\n\n    raw_data = data\n    historical_data_json = json.dumps(data)\n\n    return render(\n        request,\n        \"historical\/historical_data.html\",\n        {\n            \"market\": market,\n            \"interval\": interval,\n            \"historical_data\": raw_data,  # Raw Python data for the table\n            \"historical_data_json\": historical_data_json,  # JSON for the script\n            \"start_date\": (\n                start_date\n                if interval in [\"m\", \"w\", \"d\"]\n                else start_date_parsed.strftime(\"%Y-%m-%dT%H:%M\")\n            ),\n            \"end_date\": (\n                end_date\n                if interval in [\"m\", \"w\", \"d\"]\n                else end_date_parsed.strftime(\"%Y-%m-%dT%H:%M\")\n            ),\n        },\n    )<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>If you pay close attention to the function&#8217;s output, you&#8217;ll notice that I have separated the data into two parts. The first, \u201chistorical_data\u201d, contains the raw data returned by the API, which is used for the Bootstrap data table. The second, \u201chistorical_data_json\u201d, is a sanitised version of the data in JSON format, required for the AnyChart stock chart. Getting this to work was actually quite challenging. I wanted to provide two ways of visualising the historical data, but each required the data in a different format. This approach proved to be an effective solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-updating-the-template-index-html\">Updating the Template &#8211; index.html<\/h2>\n\n\n\n<p>As I mentioned above, my initial treemap used the D3.js library. I evaluated both the Chart.js and AnyChart libraries. I found the AnyChart library to be initiative and look a lot nicer and more polished. I&#8217;ve included the converted code below.<\/p>\n\n\n\n<p><strong>GOTCHA<\/strong><\/p>\n\n\n\n<p>I encountered one of the strangest bug that had me puzzled for several days. When I initially converted the treemap code from D3.js to AnyChart, it worked flawlessly. I then shifted my focus to the Historical Data stock chart, but when I returned to the AnyChart treemap, it wasn\u2019t rendering properly. Although the API was receiving data for 110 market indices, only 11 were displaying.<\/p>\n\n\n\n<p>To debug this, I had to strip the code down to its simplest components. The \u201cproblem,\u201d as it turned out, was related to my inclusion of <em>daily_return<\/em> as the value for the treemap. I chose to use daily_return instead of the number of constituents because it created a more visually appealing colour gradient between high and low values. However, I discovered that treemaps require positive numbers as values to render correctly\u2014that&#8217;s simply how they work.<\/p>\n\n\n\n<p>When I initially got it working, market conditions must have been exceptionally good, as all the daily returns were positive. By the time I revisited the code a few days later, some daily returns were negative, which caused only 11 entries to display.<\/p>\n\n\n\n<p>To address this, I devised a simple yet effective solution. I ensured that the value passed to the treemap was always absolute (a positive number) and removed this value from the cell display. Instead, I added it to a tooltip that appears on mouse hover. This allowed the treemap to render correctly with a pleasing colour gradient, while still enabling the actual value to be displayed when needed.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a1853a85f17f2ea9f6e6ef00630311be\"><code lang=\"python\" class=\"language-python\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Market Indices Treemap&lt;\/title&gt;\n\n    <a href=\"https:\/\/cdn.anychart.com\/releases\/8.11.0\/js\/anychart-bundle.min.js\">https:\/\/cdn.anychart.com\/releases\/8.11.0\/js\/anychart-bundle.min.js<\/a>\n    &lt;link href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css\" rel=\"stylesheet\"&gt;\n    \n    &lt;style&gt;\n        body {\n            background-color: #343a40;\n            color: #ffffff;\n        }\n        #treemap {\n            width: 100%;\n            height: 80vh;\n            margin: 0 auto;\n        }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n    &lt;div class=\"container mt-5\"&gt;\n        &lt;form action=\"{% url 'search_market_data' %}\" method=\"get\" class=\"d-flex justify-content-center my-4\"&gt;\n            &lt;input type=\"text\" name=\"query\" class=\"form-control w-50\" placeholder=\"Search market data...\" required&gt;\n            &lt;button type=\"submit\" class=\"btn btn-primary ml-2\"&gt;Search&lt;\/button&gt;\n        &lt;\/form&gt;\n\n        &lt;div id=\"treemap\"&gt;&lt;\/div&gt;\n    &lt;\/div&gt;\n\n    &lt;script&gt;\n        const data = [\n            { \n                name: \"Market Indices\", \n                children: [\n                    {% for index in indices %}\n                    {\n                        name: \"{{ index.code }} [{{ index.constituents }}]\",\n                        value: Math.abs(parseFloat(\"{{ index.daily_return|default:0 }}\")) || 0,\n                        originalValue: parseFloat(\"{{ index.daily_return|default:0 }}\"),\n                        id: {{ forloop.counter }},\n                        link: \"\/constituents\/{{ index.index_id }}\/\",\n                        description: \"Constituents: {{ index.constituents }}\"\n                    },\n                    {% endfor %}\n                ]\n            }\n        ];\n\n        anychart.onDocumentReady(function() {\n            const chart = anychart.treeMap(data, \"as-tree\");\n\n            chart.background().fill(\"#343a40\");\n\n            const colorScale = anychart.scales.linearColor();\n            colorScale.colors([\"#d73027\", \"#fee08b\", \"#1a9850\"]);\n            chart.colorScale(colorScale);\n\n            chart.labels()\n                .fontColor(\"#ffffff\")\n                .fontSize(function() {\n                    return this.getData(\"value\") &gt; 100 ? 16 : 12;\n                })\n                .hAlign(\"center\")\n                .vAlign(\"middle\")\n                .format(\"{%name}\");\n\n            chart.tooltip()\n                .useHtml(true)\n                .format(function() {\n                    return `&lt;strong&gt;${this.getData('name')}&lt;\/strong&gt;&lt;br&gt;\n                            Value: ${this.getData('originalValue')}&lt;br&gt;\n                            Link: &lt;a href=\"${this.getData('link')}\" target=\"_blank\"&gt;${this.getData('link')}&lt;\/a&gt;`;\n                });\n\n            chart.hovered()\n                .fill(anychart.color.lighten(\"#007bff\", 0.4))\n                .stroke(\"#d3d3d3\");\n\n            chart.listen(\"pointClick\", function(e) {\n                const link = e.point.get(\"link\");\n                if (link) {\n                    window.location.href = link;\n                }\n            });\n\n            chart.maxDepth(null);\n\n            chart.padding(10, 10, 10, 10);\n            chart.stroke(\"#ffffff\");\n            chart.minHeight(5);\n            chart.minWidth(5);\n\n            chart.labels().fontSize(11);\n\n            chart.data(data);\n            chart.container(\"treemap\");\n            chart.draw();\n        });\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-updating-the-template-historical-data-html\">Updating the Template &#8211; historical_data.html<\/h2>\n\n\n\n<p>The next part was to add the AnyChart stock chart above the historical data Bootstrap table. As I mentioned above, I also added the \u201cPrint\u201d button which could be handy.<\/p>\n\n\n\n<p>I found both Chart.js and AnyChart had really pleasant feature rich graphs. I decided to use AnyChart because I didn&#8217;t want to mix the libraries in the app, but I also quite liked the way the graph looked.<\/p>\n\n\n\n<p>What I really nice is that the graph is interactive. You can pan, zoom, and mouse over the data points for additional information. As a stock start you also can see the candlesticks visually represented like most trading applications. A green bar if the close is higher than the open, and a red car if the close is lower than the open.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b797f1835b2aa51e84dbc320e8c397c3\"><code lang=\"python\" class=\"language-python\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n\n&lt;head&gt;\n    &lt;title&gt;Historical Data for {{ market }} ({{ interval }})&lt;\/title&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"&gt;\n\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css\"&gt;\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/1.10.21\/css\/dataTables.bootstrap4.min.css\"&gt;\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/css\/buttons.bootstrap4.min.css\"&gt;\n\n    &lt;style&gt;\n        body {\n            background-color: #343a40;\n            color: #ffffff;\n        }\n\n        .table {\n            background-color: #212529;\n        }\n\n        .table th, .table td {\n            color: #ffffff;\n        }\n\n        .chart-container {\n            margin-bottom: 20px;\n        }\n\n        .dt-buttons .btn {\n            margin-right: 10px;\n        }\n\n        .page-item.active .page-link {\n            z-index: 3;\n            color: #ffffff !important;\n            background-color: #495057 !important;\n            border-color: #495057 !important;\n        }\n\n        .page-link {\n            color: #ffffff !important;\n            background-color: #6c757d !important;\n            border-color: #343a40 !important;\n        }\n\n        .page-link:hover {\n            color: #adb5bd !important;\n            background-color: #5a6268 !important;\n            border-color: #343a40 !important;\n        }\n\n        .dataTables_wrapper .dataTables_paginate .paginate_button {\n            color: #ffffff !important;\n            background-color: #6c757d !important;\n            border: 1px solid #343a40 !important;\n        }\n\n        .dataTables_wrapper .dataTables_paginate .paginate_button:hover {\n            background-color: #5a6268 !important;\n            border: 1px solid #343a40 !important;\n        }\n\n        .dataTables_wrapper .dataTables_paginate .paginate_button.current {\n            color: #ffffff !important;\n            background-color: #495057 !important;\n            border: 1px solid #343a40 !important;\n        }\n\n        .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,\n        .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {\n            background-color: #6c757d !important;\n            color: #ffffff !important;\n        }\n\n        .btn-dark {\n            background-color: #6c757d !important;\n            border-color: #6c757d !important;\n            color: #ffffff !important;\n        }\n\n        .btn-dark:hover {\n            background-color: #5a6268 !important;\n            border-color: #5a6268 !important;\n        }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n    &lt;div class=\"container mt-5\"&gt;\n        &lt;h2 class=\"mb-4\"&gt;Historical Data for {{ market }} ({{ interval }})&lt;\/h2&gt;\n\n        &lt;div class=\"row\"&gt;\n            &lt;div class=\"col-12 chart-container\"&gt;\n                &lt;div id=\"candlestickChart\" style=\"height: 500px; width: 100%;\"&gt;&lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n\n        &lt;div class=\"row\"&gt;\n            &lt;div class=\"col-12\"&gt;\n                &lt;table id=\"historicalTable\" class=\"table table-dark table-striped table-bordered\"&gt;\n                    &lt;thead class=\"thead-dark\"&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;Timestamp&lt;\/th&gt;\n                            &lt;th&gt;Open&lt;\/th&gt;\n                            &lt;th&gt;High&lt;\/th&gt;\n                            &lt;th&gt;Low&lt;\/th&gt;\n                            &lt;th&gt;Close&lt;\/th&gt;\n                            &lt;th&gt;Volume&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                        {% for entry in historical_data %}\n                        &lt;tr&gt;\n                            &lt;td&gt;{{ entry.timestamp }}&lt;\/td&gt;\n                            &lt;td&gt;{{ entry.open }}&lt;\/td&gt;\n                            &lt;td&gt;{{ entry.high }}&lt;\/td&gt;\n                            &lt;td&gt;{{ entry.low }}&lt;\/td&gt;\n                            &lt;td&gt;{{ entry.close }}&lt;\/td&gt;\n                            &lt;td&gt;{{ entry.volume }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        {% endfor %}\n                    &lt;\/tbody&gt;\n                &lt;\/table&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n\n        &lt;a href=\"javascript:history.back()\" class=\"btn btn-dark mt-4\"&gt;Back&lt;\/a&gt;\n    &lt;\/div&gt;\n\n    &lt;script id=\"historicalData\" type=\"application\/json\"&gt;\n        {{ historical_data_json|safe }}\n    &lt;\/script&gt;\n\n    <a href=\"https:\/\/code.jquery.com\/jquery-3.5.1.min.js\">https:\/\/code.jquery.com\/jquery-3.5.1.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/1.10.21\/js\/jquery.dataTables.min.js\">https:\/\/cdn.datatables.net\/1.10.21\/js\/jquery.dataTables.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/1.10.21\/js\/dataTables.bootstrap4.min.js\">https:\/\/cdn.datatables.net\/1.10.21\/js\/dataTables.bootstrap4.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/dataTables.buttons.min.js\">https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/dataTables.buttons.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.bootstrap4.min.js\">https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.bootstrap4.min.js<\/a>\n    <a href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.1.3\/jszip.min.js\">https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.1.3\/jszip.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.html5.min.js\">https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.html5.min.js<\/a>\n    <a href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.print.min.js\">https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.print.min.js<\/a>\n    <a href=\"https:\/\/cdn.anychart.com\/releases\/8.10.0\/js\/anychart-bundle.min.js\">https:\/\/cdn.anychart.com\/releases\/8.10.0\/js\/anychart-bundle.min.js<\/a>\n\n    &lt;script&gt;\n        $(document).ready(function() {\n            $('#historicalTable').DataTable({\n                paging: true,\n                searching: true,\n                ordering: true,\n                info: true,\n                lengthMenu: [10, 25, 50, 100],\n                order: [[4, \"desc\"]],\n                dom: 'Bfrtip',\n                buttons: [\n                    {\n                        extend: 'excel',\n                        text: 'Export to Excel'\n                    },\n                    {\n                        extend: 'print',\n                        text: 'Print'\n                    }\n                ]\n            });\n        });\n\n        document.addEventListener(\"DOMContentLoaded\", function () {\n            const rawData = document.getElementById(\"historicalData\").textContent;\n            const historicalData = JSON.parse(rawData);\n\n            const chartData = historicalData.map(entry =&gt; [\n                entry.timestamp,\n                entry.open,\n                entry.high,\n                entry.low,\n                entry.close\n            ]);\n\n            anychart.onDocumentReady(function () {\n                const chart = anychart.stock();\n\n                const table = anychart.data.table();\n                table.addData(chartData);\n\n                const mapping = table.mapAs({\n                    open: 1,\n                    high: 2,\n                    low: 3,\n                    close: 4\n                });\n\n                const plot = chart.plot(0);\n                plot.candlestick(mapping).name('Price');\n\n                chart.container(\"candlestickChart\");\n                chart.draw();\n            });\n        });\n    &lt;\/script&gt;\n&lt;\/body&gt;\n\n&lt;\/html&gt;<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-summary\">Summary<\/h2>\n\n\n\n<p>I find <a href=\"https:\/\/www.anychart.com\" target=\"_blank\" rel=\"noreferrer noopener\">AnyChart<\/a>&#8216;s code straightforward to read and understand. However, the graphs display a \u201ctrial version\u201d watermark. The purchasing of a licence removes this watermark and offers additional support. Despite this, the trial version has functioned well for me. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-next-steps\">Next Steps<\/h2>\n\n\n\n<p>The next article in the series will explore incorporating fundamental data and market capitalisation into the application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Please note, API data availability depends on your subscription plan. Some data isn&#8217;t included in the free plan. Visit our pricing page to find the package that fits your needs. This article builds upon the previous two in the series, \u201cBuild a Financial Trading Dashboard with Python Django\u201d and \u201cEnhancing the Financial Trading Dashboard with [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":6111,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[64],"tags":[],"coding-language":[30],"ready-to-go-solution":[],"qualification":[32],"financial-apis-category":[36],"financial-apis-manuals":[39,38],"class_list":["post-6068","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-building-stocks-apps-examples","coding-language-python","qualification-guru","financial-apis-category-stock-market-prices","financial-apis-manuals-end-of-day","financial-apis-manuals-intraday","has_thumb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.9 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AnyChart integration for the Financial Trading Dashboard with Python Django | EODHD APIs Academy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AnyChart integration for the Financial Trading Dashboard with Python Django\" \/>\n<meta property=\"og:description\" content=\"Please note, API data availability depends on your subscription plan. Some data isn&#8217;t included in the free plan. Visit our pricing page to find the package that fits your needs. This article builds upon the previous two in the series, \u201cBuild a Financial Trading Dashboard with Python Django\u201d and \u201cEnhancing the Financial Trading Dashboard with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\" \/>\n<meta property=\"og:site_name\" content=\"Financial Academy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eodhistoricaldata\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-22T12:11:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T14:37:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2065\" \/>\n\t<meta property=\"og:image:height\" content=\"871\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Michael Whittle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:site\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Whittle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\"},\"author\":{\"name\":\"Michael Whittle\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/50784c270b6267df5969514d80d510ad\"},\"headline\":\"AnyChart integration for the Financial Trading Dashboard with Python Django\",\"datePublished\":\"2024-11-22T12:11:16+00:00\",\"dateModified\":\"2025-02-05T14:37:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\"},\"wordCount\":918,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png\",\"articleSection\":[\"Building Stocks Apps Examples\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\",\"name\":\"AnyChart integration for the Financial Trading Dashboard with Python Django | EODHD APIs Academy\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png\",\"datePublished\":\"2024-11-22T12:11:16+00:00\",\"dateModified\":\"2025-02-05T14:37:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png\",\"width\":2065,\"height\":871},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-academy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AnyChart integration for the Financial Trading Dashboard with Python Django\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"name\":\"Financial APIs Academy | EODHD\",\"description\":\"Financial Stock Market Academy\",\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\",\"name\":\"EODHD (EOD Historical Data)\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"width\":159,\"height\":82,\"caption\":\"EODHD (EOD Historical Data)\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eodhistoricaldata\",\"https:\/\/x.com\/EOD_data\",\"https:\/\/www.reddit.com\/r\/EODHistoricalData\/\",\"https:\/\/eod-historical-data.medium.com\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/50784c270b6267df5969514d80d510ad\",\"name\":\"Michael Whittle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5076af85c7ee0445454257247cad4970ae8cf5d7d4940d2b32c521f51c0a0f5a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5076af85c7ee0445454257247cad4970ae8cf5d7d4940d2b32c521f51c0a0f5a?s=96&d=mm&r=g\",\"caption\":\"Michael Whittle\"},\"description\":\"Solution architect, developer, and analyst with over 20+ years experience (TOP author on Medium).\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/author\/michaelwhittle\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AnyChart integration for the Financial Trading Dashboard with Python Django | EODHD APIs Academy","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:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","og_locale":"en_US","og_type":"article","og_title":"AnyChart integration for the Financial Trading Dashboard with Python Django","og_description":"Please note, API data availability depends on your subscription plan. Some data isn&#8217;t included in the free plan. Visit our pricing page to find the package that fits your needs. This article builds upon the previous two in the series, \u201cBuild a Financial Trading Dashboard with Python Django\u201d and \u201cEnhancing the Financial Trading Dashboard with [&hellip;]","og_url":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","og_site_name":"Financial Academy","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2024-11-22T12:11:16+00:00","article_modified_time":"2025-02-05T14:37:47+00:00","og_image":[{"width":2065,"height":871,"url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","type":"image\/png"}],"author":"Michael Whittle","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"Michael Whittle","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django"},"author":{"name":"Michael Whittle","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/50784c270b6267df5969514d80d510ad"},"headline":"AnyChart integration for the Financial Trading Dashboard with Python Django","datePublished":"2024-11-22T12:11:16+00:00","dateModified":"2025-02-05T14:37:47+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django"},"wordCount":918,"publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","articleSection":["Building Stocks Apps Examples"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","url":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","name":"AnyChart integration for the Financial Trading Dashboard with Python Django | EODHD APIs Academy","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","datePublished":"2024-11-22T12:11:16+00:00","dateModified":"2025-02-05T14:37:47+00:00","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","width":2065,"height":871},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-academy\/"},{"@type":"ListItem","position":2,"name":"AnyChart integration for the Financial Trading Dashboard with Python Django"}]},{"@type":"WebSite","@id":"https:\/\/eodhd.com\/financial-academy\/#website","url":"https:\/\/eodhd.com\/financial-academy\/","name":"Financial APIs Academy | EODHD","description":"Financial Stock Market Academy","publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/eodhd.com\/financial-academy\/#organization","name":"EODHD (EOD Historical Data)","url":"https:\/\/eodhd.com\/financial-academy\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","width":159,"height":82,"caption":"EODHD (EOD Historical Data)"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eodhistoricaldata","https:\/\/x.com\/EOD_data","https:\/\/www.reddit.com\/r\/EODHistoricalData\/","https:\/\/eod-historical-data.medium.com\/"]},{"@type":"Person","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/50784c270b6267df5969514d80d510ad","name":"Michael Whittle","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5076af85c7ee0445454257247cad4970ae8cf5d7d4940d2b32c521f51c0a0f5a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5076af85c7ee0445454257247cad4970ae8cf5d7d4940d2b32c521f51c0a0f5a?s=96&d=mm&r=g","caption":"Michael Whittle"},"description":"Solution architect, developer, and analyst with over 20+ years experience (TOP author on Medium).","url":"https:\/\/eodhd.com\/financial-academy\/author\/michaelwhittle"}]}},"jetpack_featured_media_url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/anychart-article.png","jetpack_shortlink":"https:\/\/wp.me\/pdOdVT-1zS","jetpack_sharing_enabled":true,"acf":[],"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/comments?post=6068"}],"version-history":[{"count":14,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6068\/revisions"}],"predecessor-version":[{"id":6325,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/6068\/revisions\/6325"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media\/6111"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media?parent=6068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/categories?post=6068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/tags?post=6068"},{"taxonomy":"coding-language","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/coding-language?post=6068"},{"taxonomy":"ready-to-go-solution","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/ready-to-go-solution?post=6068"},{"taxonomy":"qualification","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/qualification?post=6068"},{"taxonomy":"financial-apis-category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-category?post=6068"},{"taxonomy":"financial-apis-manuals","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-manuals?post=6068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}