top of page
  • Black Instagram Icon
  • Whatsapp
  • Black Facebook Icon

Mastering Candlestick Charts with Plotly: A Comprehensive Guide for Financial Analysis

Updated: May 29, 2024


In the world of finance, Candlestick charts are like the Swiss Army knives of analysis. They're your go-to for dissecting stock prices, currency fluctuations, and even the wild swings of commodities. But let's not just talk about them; let's dive into the nitty-gritty of crafting these beauties using Plotly, the Python powerhouse for whipping up interactive visualizations that'll knock your socks off.





Chapter 1: Understanding Candlestick Charts


Ah, Chapter 1: Understanding Candlestick Charts. So, you already know your dojis from your shooting stars, huh? Well, buckle up because we're about to dissect these candlesticks like never before.


First off, we'll give a little nod to the humble beginnings of Candlestick Charts. Then, we'll dive deep into what makes a candle tick – the open, high, low, and close. No, we're not talking about a candlelit dinner; we're talking about the anatomy of these little sticks that tell tales of market movements.


And just when you thought you were getting cozy with the basics, we'll throw some patterns your way – bullish, bearish, and the classic "I-don't-know-what-I'm-doing" indecisive ones. So, if you thought candlesticks were just for setting the mood, get ready to see them in a whole new light – with Python by our side.



Chapter 2: Getting Started with Plotly


Before diving into Candlestick charts, it's essential to familiarize yourself with Plotly, a powerful Python library for interactive data visualization. This chapter covers the basics of Plotly, including installation, syntax, and setting up the environment for data visualization.


  1. Step 1 : Installation

or

pip install plotly	

2. Step 2 : Your first Candle Stick


import plotly.graph_objects as go

# Example Candlestick data
dates = ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04']
opens = [100, 110, 105, 108]
highs = [120, 115, 112, 118]
lows = [95, 105, 100, 102]
closes = [115, 112, 108, 110]

# Creating a Candlestick chart
fig = go.Figure(data=[go.Candlestick(x=dates,
                                     open=opens,
                                     high=highs,
                                     low=lows,
                                     close=closes)])
fig.show()

Explaination :-

  • import plotly.graph_objects as go :- This line imports the Plotly graph objects module and assigns it the alias go, making it easier to reference in our code.

  • fig = go.Figure(go.Candlestick( :- Here, we're creating a new figure (fig) using Plotly's Figure class, and inside it, we're adding a candlestick trace. The go.Candlestick() function creates a candlestick trace object.


  • x=['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04'] :- This line defines the x-axis values for our candlestick chart. In this case, it's a list of dates corresponding to the trading days.


  • open=[100, 110, 105, 108] :- Here, we specify the opening prices for each date in our dataset. These are the prices at which the assets opened for trading on each respective day.


  • high=[120, 115, 112, 118] :- This line sets the highest prices reached during each trading day.

  • low=[95, 105, 100, 102] :- This line sets the lowest prices reached during each trading day.

  • close=[115, 112, 108, 110] :- Finally, we specify the closing prices for each date. These are the prices at which the assets closed trading on each respective day.

  • )) :- These closing parentheses close the go.Candlestick() function call and the go.Figure() constructor.

  • fig.show() :- This line displays the figure we've created using the show() method, allowing us to see the candlestick chart.


Now try same code with actual stock data, Here is sample file CVS file of Reliance Stock

# Hint
stock_data = pd.read_csv('RELIANCE.NS.csv')
def plot_candle_graph(stock_data):
    fig = go.Figure(data = [go.Candlestick(
    x=stock_data['Date'],
    open=stock_data['Open'],
    high=stock_data['High'],
    low=stock_data['Low'],
    close=stock_data['Close'])])
    
    return fig

Output (of Reliance Stock):-


Chapter 3: Styling Candlesticks for Visual Appeal


Once you've mastered the basics of creating Candlestick charts, it's time to make them visually appealing and informative. In this chapter, we'll explore various styling options available in Plotly to enhance the appearance and readability of your Candlestick charts.


Customizing Colors


One of the essential aspects of Candlestick charts is the ability to differentiate between bullish and bearish periods visually. Plotly allows you to customize the colors of increasing and decreasing price movements.


import plotly.graph_objects as go

# Candlestick chart with custom colors
fig = go.Figure(go.Candlestick(
    x=['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04'],
    open=[100, 110, 105, 108],
    high=[120, 115, 112, 118],
    low=[95, 105, 100, 102],
    close=[115, 112, 108, 110],
    increasing_line_color='green',   # Set increasing color
    decreasing_line_color='red'      # Set decreasing color
))
fig.show()

Output :-

increasing_line_color='green',   # Set increasing color 
decreasing_line_color='red'      # Set decreasing color

Here are some examples of color representations:


Named Color: "red", "blue", "green", "yellow", "orange", "purple", etc.

Hexadecimal Color Code: "#FF0000" (red), "#00FF00" (green), "#0000FF" (blue)

RGB Color: (255, 0, 0) (red), (0, 255, 0) (green), (0, 0, 255) (blue)

RGBA Color: (255, 0, 0, 0.5) (semi-transparent red)

HSL Color: (0, 100%, 50%) (pure red)

HSLA Color: (0, 100%, 50%, 0.5) (semi-transparent red)



Opacity, Text, Legends...

import plotly.graph_objects as go
# Customizing Candlestick appearance
fig = go.Figure(go.Candlestick(
    x=['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04'],
    open=[100, 110, 105, 108],
    high=[120, 115, 112, 118],
    low=[95, 105, 97, 102],
    close=[115, 112, 99, 110],
    increasing_line_color='green',  # Set increasing color
    decreasing_line_color='red',    # Set decreasing color
    opacity=0.7,                    # Set opacity
    text=['Day 1', 'Day 2', 'Day 3', 'Day 4'],  # Add text
    name='Stock Price',             # Set legend name
    showlegend=True                 # Show legend
))
fig.show()

Output :-

Ploty Candlestick


Chapter 5: Interactivity and Information


import plotly.graph_objects as go
# Candlestick chart with custom parameters
fig = go.Figure(go.Candlestick(
    x=['2016-12-01', '2016-12-02', '2016-12-05', '2016-12-06', '2016-12-07', '2016-12-08', '2016-12-09'],
    open=[110, 112, 112, 110, 110, 110, 115],
    high=[115, 115, 115, 115, 115, 115, 118],
    low=[105, 108, 110, 108, 105, 105, 102],
    close=[112, 110, 110, 110, 108, 115, 110],
    name='AAPL Stock'
))
# Updating layout properties
fig.update_layout(
    title='Sample Data',  # Title of the plot
    yaxis_title='Sample Stock Data',  # Title for the y-axis
    xaxis_title="Time Series",        # Title for the x-axis
    shapes=[             # Adding a shape to highlight a specific period
        dict(
            x0='2016-12-07',      # Start date of the shape
            x1='2016-12-09',      # End date of the shape
            y0=0,       # Starting y-coordinate of the shape (normalized)
            y1=1,       # Ending y-coordinate of the shape (normalized)
            xref='x',             # Reference to the x-axis
            yref='paper',         # Reference to the paper (entire plot)
            line_width=2          # Width of the line
        )
    ],
    annotations=[                  # Adding annotation to the plot
        dict(
            x='2016-12-07',      # x-coordinate of the annotation
            y=0.05,              # y-coordinate of the annotation
            xref='x',            # Reference to the x-axis
            yref='paper',        # Reference to the paper (entire plot)
            showarrow=False,     # Hide arrow for the annotation
            xanchor='left',      # Anchor point for the text
            text='Strong Bullish Candle'  # Text of the annotation
        )
    ]
)

fig.show()

Output :-


Ploty Candlestick Annotation

Chapter 5 :- What Next ...


In addition to Plotly, several other Python libraries can generate candlestick charts and detect candlestick patterns. Here are a few popular ones:


Plotly (via Plotly Express):

Plotly Express is a high-level interface for Plotly, making it easy to create interactive visualizations, including candlestick charts. While Plotly Express doesn't provide built-in functions for detecting candlestick patterns, you can visualize the candlestick data with Plotly's interactive features.





Matplotlib:

Matplotlib is a widely used plotting library in Python. It provides a simple interface for creating various types of plots, including candlestick charts. While Matplotlib itself doesn't offer built-in functions to detect candlestick patterns, you can implement custom logic to identify patterns based on the data.





Comments


bottom of page