
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
- OpenPrice,
- FirstTrade,
- High,
- Low,
- Close,
- Volume,
- Value,
- Frequency,
- Offer
- OfferVolume
- Bid
- BidVolume
- ListedShares
- TradebleShares
- ForeignSell
- 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 |
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
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
- https://softscients.com/2022/08/28/analisis-teknikal-bollinger-band/
- 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
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
- cari RSI yang dengan nilai rentang 10 sampai dengan 20
- cari Sinyal MACD yang nilai nya negatif (trend akan naik) dengan rentang -1000 sampai dengan -1
Kesimpulan diatas yaitu
- Kita bisa menggunakan data stock https://idx.co.id yang telah di download di https://github.com/mulkan/data-stock/tree/main/dataset
- Download sendiri di https://investing.com seperti diatas
- 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