Plot a candlestick chart for stocks, forex, or crypto in Python

As an Amazon Associate I earn from qualifying purchases.

3 Min Read

Are you using Python for finance? Let’s see how you can plot a candlestick chart in Python using financial data. For this tutorial, I will be getting my financial data from MT5. If you are unsure of how to do this, I recommend checking out this article on Getting Data from MT5 to Python. For this tutorial, you will be using Plotly. Plotly is a browser-based graphing Python library used for the visualization of data. You can read more about Plotly here.

Getting Started – Installing required libraries

To get Plotly running on Python, you will need to get the library which can be downloaded using pip install with the following command:

pip install plotly

You will also need to install the Pandas library which is a fast, powerful, flexible, and easy to use open-source data analysis and manipulation tool, built on top of the Python programming language. (If you are following the Algotrader series, you won’t need to do this step)

pip install pandas

Once you have installed Plotly and pandas, import both libraries into Python:

import plotly.graph_objects as go
import pandas as pd

Now, you should be able to access the Plotly and Pandas library within Python!

Getting the chart data

For this tutorial, I have pulled data for USDCAD between 1-1-2021 and 2-12-2021. This data is available to download with the link below:

Place USDCAD.csv in the same directory as your Python script.

Once this has been downloaded, let’s create a method named print_chart_data with no method arguments:

def print_chart_data():

And inside this method, let’s start by importing the csv file using pandas:

    data = pd.read_csv("USDCAD.csv")

If you print out this data frame it will look like the following:

                     time     open     high      low    close  tick_volume  spread  real_volume
0     2020-12-31 22:30:00  1.36696  1.36729  1.36645  1.36652          365      12            0
1     2020-12-31 22:45:00  1.36653  1.36745  1.36615  1.36745          655      13            0
2     2020-12-31 23:00:00  1.36745  1.36745  1.36745  1.36745            1      19            0
3     2021-01-04 00:00:00  1.36452  1.36518  1.36443  1.36507          119      60            0
4     2021-01-04 00:15:00  1.36492  1.36632  1.36484  1.36546          146      31            0
...                   ...      ...      ...      ...      ...          ...     ...          ...
2878  2021-02-12 22:45:00  1.38499  1.38523  1.38490  1.38513          622       0            0
2879  2021-02-12 23:00:00  1.38514  1.38552  1.38496  1.38551          261       0            0
2880  2021-02-12 23:15:00  1.38551  1.38559  1.38510  1.38516          404       0            0
2881  2021-02-12 23:30:00  1.38516  1.38546  1.38505  1.38531          334       0            0
2882  2021-02-12 23:45:00  1.38534  1.38546  1.38507  1.38533          455       0            0


Plotting the chart

To plot the candlestick chart you will need the time, open, high, low and close columns. Create a go.Candlestick object, assign these fields and then, assign it to a variable named chart_data:

def print_data_chart():
    data = pd.read_csv("USDCAD.csv")
    chart_data = go.Candlestick(x=data['time'], open=data['open'], high=data['high'], low=data['low'], close=data['coose'])

Now, you need to create a go.Figure to display the data. Create this object passing in chart_data and assigning it to a variable named fig:

def print_data_chart():
    data = pd.read_csv("USDCAD.csv")
    chart_data = go.Candlestick(x=data['time'], open=data['open'], high=data['high'], low=data['low'], close=data['close'])
    fig = go.Figure(data=[chart_data])

Finally, to print your graph to the browser, add fig.show()

You should now see the following graph on your browser. If you are wondering why there are gaps in the data, it is because USDCAD does not get traded over the weekend.

That’s all for how to Plot a candlestick chart for stocks, forex, or crypto in Python! Check back on Friday to see how you can create an equity curve graph with Python! As always, if you have any questions or comments please feel free to post them below. Additionally, if you run into any issues please let me know.

Subscribe to my newsletter to keep up to date with my latest posts

Holler Box