Mengolah Data Transaksi Saham Harian untuk Mencari Cuan

By | September 1, 2022
1,654 Views

Terkadang bagi pengguna trader yang suka otak-atik data belum tentu puas dengan analisis default yang tersedia di broker. Tentu untuk menganalisis data transaksi saham harian butuh yang namanya data. Kalian bisa berkunjung ke https://idx.co.id, https://finance.yahoo.com/quote, atau ke https://investing.com

Biasanya data transaksi harian saham memuat informasi date, close, high, open, low, volume. Tujuan dari menganalisis data transaksi harian bagi trader untuk diolah lebih lanjut seperti menggunakan tools excel. Untuk urusan download data transaksi saham harian bisa secara manual dengan mengetikan kode ticker menghasilkan file berformat CSV.

Download data transaksi saham harian secara manual tentu sangat tidak efektif bila trader tersebut ingin membuat screening saham. Bagi yang ingin langsung Download data transaksi saham harian bisa kalian ke https://github.com/mulkan/data-stock/tree/main/dataset. Data tersebut sudah kami download dari https://idx.co.id namun ada sedikit kekurangan pada data tersebut terkadang tidak memberikan informasi harga Open nya. Hal menarik mengapa kami suka menggunakan data tersebut karena memuat informasi mengenai hal cukup lengkap seperti

  1. OpenPrice,
  2. FirstTrade,
  3. High,
  4. Low,
  5. Close,
  6. Volume,
  7. Value,
  8. Frequency,
  9. Offer
  10. OfferVolume
  11. Bid
  12. BidVolume
  13. ListedShares
  14. TradebleShares
  15. ForeignSell
  16. ForeignBuy

Nah salah satu tempat download yang tersedia API nya yaitu https://investing.com. Bagi pengguna Python bisa download library investpy  di https://github.com/alvarobartt/investpy. Beberapa perintah yang sangat menarik yaitu terdapat analisis teknikal nya

import investpy as inv
import pandas as pd
import time

aces = inv.search_quotes(text="aces", 
                         products=["stocks"],
                         countries=["indonesia"], 
                         n_results=1)
print(aces)

hasilnya

{"id_": 101279, "name": "Ace Hardware Indonesia Tbk", "symbol": "ACES", "country": "indonesia", "tag": "/equities/ace-hardware-i", "pair_type": "stocks", "exchange": "Jakarta"}

Untuk mendapatkan analisis teknikalnya

aces.retrieve_technical_indicators(interval="daily")

hasilnya

indicator signal value
0 RSI(14) neutral 45.3660
1 STOCH(9,6) sell 44.7920
2 STOCHRSI(14) oversold 1.2640
3 MACD(12,26) sell -1.6270
4 ADX(14) sell 27.3420
5 Williams %R sell -75.0000
6 CCI(14) sell -118.7377
7 ATR(14) less_volatility 23.9286
8 Highs/Lows(14) sell -5.0000
9 Ultimate Oscillator sell 43.5940
10 ROC neutral 0.0000
11 Bull/Bear Power(13) sell -29.5460
See also  Perhitungan Analisis Teknikal MACD

atau kalian bisa langsung ke https://www.investing.com/equities/ace-hardware-i-technical per 31 Agustus 2022

Download Data Transaksi Saham Harian di Investing.com

Dengan banyak sekali emiten yang ada di indonesia, tentu untuk mengumpulkan data tersebut cukup melelahkan kan, nah saya akan berikan contoh kode yang bisa kalian gunakan untuk mendapatkan semua data transaksi saham harian selain data dari https://github.com/mulkan/data-stock/tree/main/dataset

Pertama download 1 saja dulu data transaksi saham harian di link atas sebagai referensi untuk mendapatkan nama-nama emiten/ticker.

emiten = pd.read_csv("G:\\dataset\\20220830.csv")
emiten = emiten["StockCode"]

Langkah selanjutnya kita lakukan looping disertai timer agar server tersebut tidak menolak jika dilakukan download berkali2 tanpa jeda. Karena kalau tidak demikian akan terjadi error

https://stackoverflow.com/questions/66508469/investpy-error-while-running-for-loop-connectionerror-err0015-error-406-try

stock = pd.DataFrame()
for e in emiten:   
    try:
        display(e)
        time.sleep(1)
        df = inv.get_stock_historical_data(stock=e,
                                           country="indonesia",
                                           from_date="01/01/2021", #day/month/year
                                           to_date="31/08/2022")
        df["StockCode"] = e #berikan keterangan StockCode 
        df.reset_index(inplace=True)
        stock = stock.append(df)
        
    except :
        print("tidak ada??")
        pass

stock = pd.DataFrame(stock)
stock.to_csv("stock investing 2021-01-01 sd 2022-08-31.csv") #simpan datanya dalam bentuk CSV

Tunggu saja agak lama karena dikasih jeda 1 detik untuk tiap emiten, karena datanya sangat banyak sekali jangan kaget kalau ukuran file CSV nya juga sangat besar sekali yaitu 12 MB karena kita ambil daily dari 01 januari 2021 sampai dengan 31 agustus 2022.

Mengolah Data Transaksi Saham dengan Indikator

Setelah mendapatkan data transaksi saham harian, tentu kita harus mengolah. Kalian baca dulu https://softscients.com/2022/08/27/analisis-teknikal-menggunakan-ta-lib-technical-analysis-library/

Karena saya menggunakan library tersebut dan kebanyakan aplikasi juga menggunakan library tersebut. Beberapa indikator yang bisa kita gunakan seperti

  1. https://softscients.com/2022/08/28/analisis-teknikal-bollinger-band/
  2. https://softscients.com/2022/08/29/perhitungan-analisis-teknikal-macd/

Sekarang kita coba-coba buat indikator sendiri seperti investing.com yang sebenarnya investing.com menggunakan tools dari tradingview.com

 

Berikut kode yang kita gunakan untuk menghasilkan grafik RSI diatas

import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import talib

stock = pd.read_csv("stock investing 2021-01-01 sd 2022-08-31.csv")
emiten = "'ACES'"
stock_emiten = stock.query("StockCode=="+emiten) #pilih sesuai emiten
#stock_emiten3 = stock_emiten3.query("Date>='2022-01-01'") #ambil tanggal 01 januari 2022 keatas

n1 = 14
n2 = 12
n3 = 26
n4 = 9
stock_emiten["RSI"] = talib.RSI(stock_emiten["Close"],n1)    
stock_emiten["Macd"], stock_emiten["Macdsignal"], stock_emiten["Macdhist"] = talib.MACD(stock_emiten["Close"], 
                                                                 fastperiod=n2, 
                                                                 slowperiod=n3, 
                                                                 signalperiod=n4)


fig = make_subplots(rows = 4, cols = 1, 
                    shared_xaxes = True, 
                    subplot_titles = (emiten,"RSI","MACD"), 
                    vertical_spacing = 0.1)
fig.add_trace(go.Line(x=stock_emiten["Date"], y=stock_emiten["Close"],
                    mode='lines',
                    line=dict(color='black', width=1),
                    name='Close'),
                    row = 1, col = 1)
fig.add_trace(go.Line(x = stock_emiten['Date'], y = stock_emiten['RSI'], name="RSI",
                     showlegend=True),
                      row = 2, col = 1)
fig.add_trace(go.Line(x=stock_emiten["Date"], y=stock_emiten["Macd"],
                    mode='lines',
                    line=dict(color='green', width=1),
                    name='macd'),row = 3, col = 1)
fig.add_trace(go.Line(x=stock_emiten["Date"], y=stock_emiten["Macdsignal"],
                    mode='lines',
                    line=dict(color='red', width=1),
                    name='macdsignal'),row = 3, col = 1)
fig.add_trace(go.Bar(x = stock_emiten['Date'], y = stock_emiten['Macdhist'], name="macdhist",
                     showlegend=True),
                      row = 3, col = 1)
fig.update_layout(height=900, width=1000, title_text="Saham Emiten "+emiten)
fig.show()

Hasil ploting data tersebut yaitu

See also  Menguji indikator Bollinger band untuk sinyal Beli dan Jual

Membuat Screening Saham Sendiri

Pertanyaan menarik adalah mengapa kita butuh Download Data Transaksi Saham Harian? tentu kalau hanya untuk analisis plot diatas cukup dengan menggunakan tools broker seperti https://stockbit.com ataupun https://investing.com saja

Sebenarnya kita bisa membuat screening saham sendiri lho sesuai dengan keinginan kita. Perhatikan tabel berikut yang berisi emiten yang diambil dari periode 25 sd 30 juli 2022

StockCode Date Close RSI Macd Macdsignal Macdhist
452061 HERO 2022-07-26 1540.0 18.050590 -9.320833 -7.414156 -1.906677
454532 JTPE 2022-07-29 260.0 10.186200 -102.510866 -40.536482 -61.974385
451442 MLIA 2022-07-25 590.0 19.386463 -610.207692 -411.494694 -198.712998
454027 SOSS 2022-07-28 250.0 16.548877 -34.485296 -20.866480 -13.618816

Bila kita beli saham diatas pada tanggal dan harga tersebut ternyata akan dapat cuan lho pada bulan Agustus 2022. Cocok sekali bagi para pencarian cuan

StockCode Date_x Close_x Cuan Periode
42 HERO 2022-08-01 1760.0 14.29 6 days
78 JTPE 2022-08-23 286.0 10.00 25 days
13 MLIA 2022-08-19 660.0 11.86 25 days
36 SOSS 2022-08-23 470.0 88.00 26 days

Indikator yang digunakan yaitu

  1. cari RSI yang dengan nilai rentang 10 sampai dengan 20
  2. cari Sinyal MACD yang nilai nya negatif (trend akan naik) dengan rentang -1000 sampai dengan -1

Kesimpulan diatas yaitu

  1. Kita bisa menggunakan data stock https://idx.co.id yang telah di download di https://github.com/mulkan/data-stock/tree/main/dataset
  2. Download sendiri di https://investing.com seperti diatas
  3. Membuat screening saham sendiri (akan dibahas lebih lanjut)

Mengolah Data Transaksi Saham Harian untuk Mencari Cuan seperti Indikator Bollinger Band dan RSI untuk Deteksi Sinyal Beli