Bikin Aplikasi Web Untuk Monitor Harga Saham Dan Forex Dengan Python Dan Streamlit

Made Raditya Pujamurti - October 6, 2021

Disclaimer: not financial advice

Objektif kita kali ini adalah bikin aplikasi web dengan Python dan Streamlit dengan fitur:

  • User input untuk saham atau forex
  • Pilihan periode dan interval
  • Menampilkan tabel harga OHLCV
  • Menampilkan candle stick chart

not bad

ok not bad…

Setup Streamlit

Streamlit adalah sebuah library Python yang punya banyak komponen untuk membuat aplikasi web data science.

Tanpa Streamlit, kita akan perlu banyak persiapan untuk setup web server, bikin user input dll.

Install Streamlit dengan mengikuti dokumentasi ini.

Saatnya koding!

Kode lengkap bisa dilihat di sini dan sini.

Berikut adalah beberapa komponen penting di dalam kodingan aplikasi ini.

Import library yang diperlukan.

import streamlit as st
import plotly.graph_objs as go
import plotly.express as px
import yfinance as yf

Kita akan pakai plotly untuk bikin candle stick chart dan yfinance untuk akses harga aset.

Dokumentasi Plotly

Dokumentasi Yfinance

Menampilkan user input di sidebar

ticker_symbol = st.sidebar.text_input(
    "Please enter the stock symbol", 'MSFT'
    )

Contoh di atas adalah untuk mendapatkan user input untuk ticker symbol.

Di dalam text_input(), parameter pertama adalah text yang ingin ditampilkan di atas form input dan parameter kedua adalah default value.

Akses ticker data Yahoo Finance

1
2
3
4
5
6
7
def get_ticker_data(ticker_symbol, data_period, data_interval):
    ticker_data = yf.download(tickers=ticker_symbol, period=data_period, interval=data_interval)
    if len(ticker_data) == 0:
        st.write('Could not find the ticker data. Modify ticker symbol or reduce the Period value.')
    else:
        ticker_data.index = ticker_data.index.strftime("%d-%m-%Y %H:%M")
    return ticker_data

Library yfinance bisa kita pakai untuk mendapatkan harga aset tertentu. Di line 2, kita bisa tentukan ticker symbol, periode dan interval data sesuai input dari sidebar.

Satu hal yang penting adalah untuk menghilangkan gap karena market tutup saat weekend. Salah satu caranya dengan merubah format index dataframe di line 7.

Visualisasi data

Salah satu aspek penting dalam data science adalah visualisasi data. Di kasus ini, ada beberapa pilihan untuk visualisasi data seperti line chart atau candlestick chart. Candlestick chart akan dipakai di aplikasi ini karena lebih memudahkan untuk melihat gain (hijau) dan loss (merah) di suatu periode. Candlestick chart juga berguna untuk menentukan candlestick pattern seperti bullish engulfing.

def plot_candle_chart(ticker_data):
    candle_fig = go.Figure()
    candle_fig.add_trace(
        go.Candlestick(
        x=ticker_data.index,
        open=ticker_data['Open'],
        close=ticker_data['Close'],
        low=ticker_data['Low'],
        high=ticker_data['High'],
        name='Market Data'
        )
    )
    candle_fig.update_layout(
        height=800,
    )
    st.write(candle_fig)

Function di atas akan menampilkan candle stick chart dengan data yang didapat dari yfinance di parameter (ticker_data)

Setelah semua kodingan selesai, aplikasi Streamlit bisa dimulai dengan streamlit run <nama_file.py>. Hasilnya akan seperti berikut:

Hasil akhir aplikasi web dengan python dan streamlit

Selamat bereksperimen!