PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIrepository.usd.ac.id/32525/2/065314064_Full.pdf · dibeli...
Transcript of PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIrepository.usd.ac.id/32525/2/065314064_Full.pdf · dibeli...
i
PROGRAM BANTU PEMILIHAN SAHAM
BERDASARKAN INDIKATOR BOLLINGER BANDS
Skripsi
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh:
IRENE LENY PRADISTA ANGGADEWI
065314064
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2011
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
ASSISTANT PROGRAM OF CHOOSING STOCK
ACCORDING TO BOLLINGER BANDS INDICATOR
A Thesis
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Komputer Degree
In Study Program of Informatics Engineering
Created by :
IRENE LENY PRADISTA ANGGADEWI
NIM : 065314064
STUDY PROGRAM OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY
YOGYAKARTA 2011
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN MOTTO
Kelemahan kita yang terbesar terletak dalam menyerah. Cara yang pasti untuk
meraih sukses adalah selalu mencoba sekali lagi
Jangan ingatkan ketakutanmu, tetapi ingatlah harapan dan impianmu. Jangan
pikirkan frustasimu, tapi pikirkan potensi yang belum kamu penuhi. Jangan
khawatirkan dirimu sendiri dengan apa yang telah kamu coba tapi gagal, tapi
dengan apa yang masih mungkin kamu lakukan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
Kupersembahkan untuk :
1. Allah Bapa, Tuhan Yesus Kristus, Bunda Maria..(RencanaMu Indah
bagiku.... )
2. Ayah dan ibuku tercinta (terimakasih karena telah memberikan kasih
sayang yang melimpah kepada penulis)
3. Adikku (Satrio Agung Laksono)
4. –Kamu- (Petrus Dwi Rustanto) terimakasih buat nasihat, support , dan
kesabaran yang diberikan untuk penulis
5. Kakek dan Nenekku tercinta.....
6. Papa dan Budhe Ris ku tercinta
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
ABSTRAK
Penanaman modal dalam bentuk saham saat ini banyak diminati para investor
ataupun instansi. Kunci keberhasilan dalam mengolah keuangan adalah dengan mengerti
secara menyeluruh konsekuensi dan seluk beluk dalam mengolah keuangan. Penanaman
saham akan memperoleh keuntungan yang besar jika pembelian dan penjualan saham
dilakukan pada waktu yang tepat.
Dalam tugas akhir ini akan dibuat Program Bantu Pemilihan Saham Berdasarkan
Indikator Bollinger Bands. Masukan sistem berupa harga pembukaan, harga tertinggi,
harga terendah, harga penutupan dan volume saham selama 20 hari. Data diunduh dari
http://202.155.2.90/market_summary/daily/List_of_Scriptless(Regular)_Quotation/SL(yy
-mm-dd).TXT dan
http://202.155.2.90/market_summary/daily/List_of_LQ45_Securities_Quotation/LQ(yy-
mm-dd).TXT.Keluaran sistem berupa saham rekomendasi yang akan dijual ataupun
dibeli pada saat ini. Rekomendasi didasarkan atas % candlestick yang keluar dari bibir
pita Bollinger Bands, warna badan dan % panjang ekor candlestick, serta volume.
Hasil percobaan terhadap empat saham selama bulan April sampai Desember
2009 menunjukan bahwa pembelian dan penjualan berdasarkan Indikator Bollinger
Bands rata-rata memperoleh keuntungan sebesar 15.9 %. Perubahan harga setelah dua
hari setelah sinyal beli menurut Indikator Bollinger Bands adalah 2.05%. Sedangkan
harga saham sehari setelah sinyal jual akan mengalami kenaikan sebesar 0.55%. Hal ini
dikarenakan data yang didapat tidak 100% valid, sehingga pada program nilai open yang
lebih besar dengan high disamakan dengan high dan nilai open yang lebih kecil daripada
low disamakan nilainya seperti low. Lama hari waktu beli dan jual dengan keuntungan
korelasinya 0.12. Hal ini berarti tidak ada hubungan antara lama hari dengan keuntungan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
The unstable of the condition of world economics which tends to experience
decreasing because there are people or institution which are not right in managing
finance.The key successfull in managing finance is understanding wholly of the
concequence and complexity of investation business that will be invested.
One of choosing the investation finance is by invested in the form of asset. The
asset investation will get big profit if buying and selling are done on time. In the final test
will be made by “Assistant Program of Choosing Stock according to Bollinger Bands
Indicator”. The system input are opening price, highest price, lowest price, choosing price
and volume.The system input get from
http://202.155.2.90/market_summary/daily/List_of_Scriptless(Regular)_Quotation/SL(yy
-mm-dd).TXT dan
http://202.155.2.90/market_summary/daily/List_of_LQ45_Securities_Quotation/LQ(yy-
mm-dd).TXT. System output is recomendation asset which is sold or bought nowdays.
The result of the attemp shows that selling or buying asset according to the
recomendation of Bollinger Bands Indicator will get profit. Recomendation based on %
Candlestick released by the tip of Bollinger Bands, the color and % length of candlestick
tail and transaction volume.
The result of experiment of stock for April to Desember 2009 periode indicate
that buying and selling based on Bollinger Bands got 15.9 % profit in average. The
change of the price after two days after buying signal based on Bollinger Bands Indicator
is 2.05%, while stock price a day after selling sign will increase up to 0.55%. This is
caused open value data got from the source is not 100% valid, so on the programme, open
value that is greater than high supposed as high and smaller open value than low
supposed as low. The carelation between buying and selling to profit is 0.12. This means
that there is no corelation between days spent and profit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
KATA PENGANTAR
Puji dan syukur saya panjatkan kepada Tuhan Yang Maha Esa karena atas berkat
dan rahmat-Nya yang melimpah saya dapat menyelesaikan tugas akhir ini.
Selesainya tugas akhir ini juga tidak luput dari peran serta berbagai pihak yang
dengan caranya tersendiri tak henti-hentinya memberikan dukungan dan bantuan untuk
penulis. Oleh karena itu saya ingin mengucapkan terima kasih diantaranya kepada :
1. Bapak Drs. Jong Jek Siang, M.Sc. selaku Dosen Pembimbing yang telah banyak
meluangkan waktu dan perhatiannya untuk membimbing penulis menyelesaikan
Tugas Akhir ini.
2. Bapak Eko Hari Parmadi, S.Si.,M.Kom dan Bapak Albertus Agung Hadhiatma,
S.T.,M.T. selaku panitia penguji yang telah banyak memberikan masukan dan
saran agar sempurnanya tugas akhir ini.
3. Bapak Emanuel Bele Bau yang turut mendukung dalam persiapan ujian
pendadaran.
4. Seluruh staff dosen Teknik Informatika Universitas Sanata Dharma yang telah
memberikan bekal ilmu, arahan dan pengalaman selama penulis menempuh studi.
5. Seluruh staff Sekretariat Teknik yang banyak membantu penulis dalam urusan
administrasi akademik terutama menjelang ujian tugas akhir dan yudisium
6. Bapak Drs.Yosafat Jaiman, Ibu Sulistyawati, Satrio Agung Laksono yang telah
memberikan banyak nasehat hidup, doa, semangat, perhatian sehingga penulis
dapat menyelesaikan tugas akhir ini.
7. Petrus Dwi Rustanto, yang selalu menyemangati, membimbing serta selalu
memberi dukungan penuh untuk penulis dalam menyelesaikan tugas akhir ini.
8. Bapak Sarji, I Kadek Dendy, dan Robin Steven yang telah membantu dan
memberikan masukan kepada penulis dalam menyelesaikan Tugas Akhir ini.
9. Teman – teman yang telah memberikan nasihat dalam penulis menyelesaikan
tugas akhir : Sri Purwanti, Fransiskus Anggit Dwi Suhendro, Tulus Wardoyo,
Andreas Andre Marwadi, Irman Nurcahyo, Hertatik Clarasita Devi, Yosia Dwi
Susetyo, Henky Adlin Shan, Sasongko Hadi, Novi Hartati, Ambar Widi Sayekti,
Silvia Kusuma.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
Dengan rendah hati saya menyadari bahwa tugas akhir ini masih jauh dari sempurna, oleh
karena itu berbagai kritik dan saran untuk perbaikan tugas akhir ini sangat saya harapkan.
Akhir kata semoga tugas akhir ini bermanfaat bagi semua pihak. Terima kasih
Yogyakarta, Januari 2011
Penulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
DAFTAR ISI
HALAMAN JUDUL ………………………………………………………………… HALAMAN PERSETUJUAN ………………………………………………………. HALAMAN PENGESAHAN ……………………………………………………….. HALAMAN MOTTO .................................................................................................. HALAMAN PERSEMBAHAN.................................................................................... PERNYATAAN KEASLIAN KARYA ....................................................................... ABSTRAK ................................................................................................................... ABSTRACT ................................................................................................................. LEMBAR PERNYATAAN PERSETUJUAN ............................................................. KATA PENGANTAR .................................................................................................. DAFTAR ISI ................................................................................................................ DAFTAR GAMBAR ................................................................................................... DAFTAR TABEL ........................................................................................................ BAB I PENDAHULUAN …………………………………………………………...
1.1 Latar Belakang Masalah …………………………………………………. 1.2 Rumusan Masalah ……………………………………………………….. 1.3 Tujuan ……………………………………………………………………. 1.4 Batasan Masalah …………………………………………………………. 1.5 Metodologi Penelitian …………………………………………………… 1.6 Sistematika Penelitian ……………………………………………………
BAB II LANDASAN TEORI ……………………………………………………….. 2.1 Pengertian Saham ………………………………………………………...
2.1.1 Analisa Fundamental…………………………………………. 2.1.2 Analisa Teknikal.......................................................................
2.2 Indikator-indikator dalam Analisa Teknikal............................................... 2.3 Candlestick………………………………………………………………..
2.3.1 Cara Membaca……………………………………………….. 2.3.2 Badan Candlectick…………………………………………… 2.3.3 Bayangan Candlestick………………………………………..
2.4 Indikator Bollinger Bands ………………………………………………. 2.4.1 Cara Pembacaan Grafik Bollinger Bands……………………. 2.4.2 Sinyal jual dan sinyal beli……………………………………. 2.4.3 Rumus Perhitungan…………………………………………..
BAB III PERANCANGAN SISTEM ……………………………………………….. 3.1 Analisis Sistem …….……………………………………………………..
3.1.1 Fase Definisi Ruang Lingkup………………………………… 3.1.2 Fase Analisis Masalah………………………………………...
3.1.2.1 Sistem yang ada saat ini……………………………… 3.1.2.2 Sebab dan akibat (Causes and Effect)……………….. 3.1.2.3 Gambaran sistem baru………………………………...
3.2 Orang yang terlibat dalam sistem……………………................................ 3.2.1 Fase Analisis Kebutuhan (Requirement Analysis)……………..
3.2.1.1 Use case Diagram…………………………………….. 3.2.1.2 Definisi Use Case…………………………………….. 3.2.1.3 Narasi Use Case………………………………………
i iii iv v vi vii viii ix x xi xiii xvi xviii 1 1 2 2 2 2 3 4 4 4 4 5 5 6 7 7 8 8 9 10 11 11 11 12 12 12 13 14 14 14 15 15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
3.2.2 Fase Desain Logikal (Logical Design Phase)…………………. 3.2.2.1 Diagram aktivitas (Activity Diagram)………………...
3.2.3 Analisis Keputusan dan Design ……………………………….. 3.2.3.1 Mengidentifikasi dan Mengklarifikasi kelas usecase....
3.2.4 Sequence Diagram....................................................................... 3.2.5 Class Diagram.............................................................................
3.3 Perancangan Sistem ……………………………………………………… 3.3.1 Design Interface………………………………………………..
3.4 Perancangan Proses………………………………………………………. 3.4.1 Flowchart Rekomendasi Beli Saham…………………………..
3.4.1.1 Menghitung Lower Bands……………………………. 3.4.1.2 Menghitung % keluar Candlestick Rekomendasi Beli.. 3.4.1.3 Menghitung panjang ekor dan warna badan ................ 3.4.1.4 Menghitung Volume…………………………………. 3.4.1.5 Contoh Tahapan penentuan rekomendasi beli………..
3.4.2 Flowchart Rekomendasi Jual Saham………………………….. 3.4.2.1 Menghitung Upper Bands……………………………. 3.4.2.2 Menghitung % keluar Candlestick Rekomendasi Jual.. 3.4.2.3 Menghitung panjang ekor dan warna badan ................ 3.4.2.4 Menghitung Volume..................................................... 3.4.2.5 Contoh Tahapan penentuan rekomendasi jual..............
BAB IV IMPLEMENTASI DAN HASIL …………………………………............... 4.1 Implementasi program dan Pembuatan Database …...…………………...
4.1.1 Tabel saham…………………………………………………... 4.1.2 View temp……………………………………………………. 4.1.3 View cleaningbeli…………………………………………….. 4.1.4 View cleaningjual……………………………………………. 4.1.5 View vdata……………………………………………………. 4.1.6 View ekorwarnabeli………………………………………….. 4.1.7 View ekorwarnajual………………………………………….. 4.1.8 Stored Procedured persenKeluar…………………………….. 4.1.9 Stored Procedured persenKeluarJual………………………… 4.1.10 Volume……………………………………………………….
4.2 Hasil Implementasi dan Pembahasan ……………………………............ 4.3 Pengujian dan Analisis …………………………………………………..
4.3.1 Pengujian Perangkat Lunak…………………………………... 4.3.2 Analisis………………………………………………………..
4.3.2.1 Rata-rata Keuntungan Beli dan Jual ............................. 4.3.2.2 Perubahan Harga 1-2 Hari Setelah Sinyal Beli............. 4.3.2.3 Perubahan Harga Setelah Satu Hari Sinyal Jual............ 4.3.2.4 Korelasi Antara Keuntungan dan Lama Hari................
4.4 Kelebihan Sistem........................................................................................ 4.5 Kekurangan sistem......................................................................................
BAB V PENUTUP …………………………………………………………………... 5.1 Kesimpulan ………………...…………………………………………….. 5.2 Saran ……………………………………………………………………..
17 17 18 18 18 19 21 21 23 23 23 24 25 26 27 30 31 31 32 34 35 38 38 38 38 38 39 39 40 40 41 42 43 44 50 50 51 51 59 60 62 63 63 64 64 64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR PUSTAKA ……………………………………………………………….. LAMPIRAN ………………………………………………………………………….
1. Listing Program Ambil Data ...……………….………………………….. 2. Listing Class kontrolDB………………………………………………….. 3. Listing Class visualChart…………………………………………………
65 66 66 68 75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR Gambar 2.1 Candlestick ………….……………………......................………………. Gambar 2.2 Badan Candlestick ………………………...........……………………….. Gambar 2.3 Bayangan Candlestick ……………………….......................................… Gambar 2.4 Grafik Bollinger Bands ……....................................................…………. Gambar 3.1 Diagram konteks sistem baru .................................................................... Gambar 3.2 Use Case Diagram .…................................................................................ Gambar 3.3 Diagram aktifitas Prediksi Saham ...................................................…...... Gambar 3.4 Diagram Sequence Prediksi saham (Rekomendasi Beli) …...................... Gambar 3.5 Diagram Sequence Prediksi saham (Rekomendasi Jual) .......................... Gambar 3.6 Class Diagram ….......……….................................................................... Gambar 3.7 Halaman utama ……............….................................................................. Gambar 3.8 Form Hasil Rekomendasi ………....……................................................. Gambar 3.9 Desain Grafik ….………………………………………………………... Gambar 3.10 Flowchart rekomendasi beli saham ….……………………………….... Gambar 3.11 Flowchart rekomendasi jual saham ….……………………………….... Gambar 4.1 Form Halaman Utama ............................................................................... Gambar 4.2 Pilih indeks saham dalam program ........................................................... Gambar 4.3 Output program sesuai dengan jenis indeks saham yang dipilih .............. Gambar 4.4 Pilih saham didalam virtual trading .......................................................... Gambar 4.5 Pemilihan bobot kriteria pada program ............... ..................................... Gambar 4.6 Form About ............................................................................................... Gambar 4.7 Form Bantuan ............................................................................................ Gambar 4.8 Message Dialog Pilih Rekomendasi .......................................................... Gambar 4.9 Message Dialog Proses Selesai ................................................................. Gambar 4.10 Form Hasil Rekomendasi ........................................................................ Gambar 4.11 Form Grafik Bollinger Bands .................................................................. Gambar 4.12 Grafik Bollinger Bands sinyal beli dari virrtual trading ......................... Gambar 4.13 Grafik Bollinger Bands sinyal beli dari program .................................... Gambar 4.14 Rekomendasi beli ADRO ........................................................................ Gambar 4.15 Grafik sinyal beli ADRO ........................................................................ Gambar 4.16 Rekomendasi jual ADRO ........................................................................ Gambar 4.17 Grafik sinyal jual ADRO ........................................................................ Gambar 4.18 Grafik sinyal beli ADRO ........................................................................ Gambar 4.19 Rekomendasi beli PGAS ......................................................................... Gambar 4.20 Grafik sinyal beli PGAS........................................................................... Gambar 4.21 Rekomendasi jual PGAS.......................................................................... Gambar 4.22 Grafik sinyal jual PGAS........................................................................... Gambar 4.23 Rekomendasi beli INDY.......................................................................... Gambar 4.24 Grafik sinyal beli INDY........................................................................... Gambar 4.25 Rekomendasi jual INDY.......................................................................... Gambar 4.26 Grafik sinyal jual INDY........................................................................... Gambar 4.27 Rekomendasi beli LPKR.......................................................................... Gambar 4.28 Grafik sinyal beli LPKR........................................................................... Gambar 4.29 Rekomendasi jual LPKR..........................................................................
6 7 7 8 14 14 17 18 19 20 21 22 22 23 30 45 45 46 46 47 47 48 48 48 49 50 50 51 52 52 52 52 53 54 54 54 55 55 55 56 56 56 57 57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 4.30 Grafik sinyal jual LPKR........................................................................... Gambar 4.31 Grafik sinyal beli LPKR........................................................................... Gambar 4.32 Grafik Korelasi Lama Hari dan Keuntungan...........................................
57 57 63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
DAFTAR TABEL Tabel 3.1 Cause dan effect ............................................................................................ Tabel 3.2 Definisi Use Case .......................................................................................... Tabel 3.3 Narasi Use case Prediksi saham .................................................................... Tabel 3.4 Klasifikasi use case Prediksi saham (Rekomendasi Beli).............................. Tabel 3.5 Klasifikasi use case Prediksi saham (Rekomendasi Jual) ............................. Tabel 3.6 Pembobotan ekor dan warna rekomendasi beli ............................................. Tabel 3.7 Urutan rekomendasi beli ............................................. Tabel 3.8 Pembobotan ekor dan warna rekomendasi beli ............................................. Tabel 3.9 Pembobotan ekor dan warna rekomendasi jual ............................................. Tabel 3.10 Hasil rekomendasi jual ................................................................................ Tabel 3.11 Pembobotan ekor dan warna rekomendasi jual ........................................... Tabel 4.1 Rata-rata Beli – Jual ADRO ......................................................................... Tabel 4.2 Rata-rata Beli – Jual PGAS ........................................................................... Tabel 4.3 Rata-rata Beli – Jual INDY ........................................................................... Tabel 4.4 Rata-rata Beli – Jual LPKR ........................................................................... Tabel 4.5 Frekuensi Beli – Jual dan Keuntungan ......................................................... Tabel 4.6 Rata-rata Beli ADRO .................................................................................... Tabel 4.7 Rata-rata Beli PGAS ..................................................................................... Tabel 4.8 Rata-rata Beli INDY ..................................................................................... Tabel 4.9 Rata-rata Beli LPKR...................................................................................... Tabel 4.10 Perubahan Harga 1-2 Hari setelah Sinyal Beli............................................. Tabel 4.11 Rata-rata jual ADRO.................................................................................... Tabel 4.12 Rata-rata Jual PGAS.................................................................................... Tabel 4.13 Rata-rata Jual INDY.................................................................................... Tabel 4.14 Rata-rata jual LPKR .................................................................................... Tabel 4.15 Perubahan harga setelah 1 hari sinyal jual .................................................. Tabel 4.16 Korelasi Lama Hari dan Keuntungan ..........................................................
12 15 15 18 18 26 27 29 33 35 36 53 55 56 58 58 59 59 59 60 60 61 61 61 61 62 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Keterpurukan ekonomi menjadikan banyak orang jera dalam membangun suatu
usaha. Padahal bidang usaha yang menarik untuk dikembangkan sangat banyak, tetapi
terkadang banyak orang takut mengalami kerugian dan cenderung tidak mau mengambil
resiko.Salah satu bidang usaha yang menarik untuk dikembangkan adalah investasi
saham dipasar modal.Investasi saham banyak diminati para investor karena mudahnya
untuk memperoleh keuntungan dan hasil keuntungannya dapat berjumlah besar. Investasi
saham selain memberikan banyak keuntungan juga mempunyai resiko kerugian yang
besar. Resiko kerugian yang besar dari investasi saham itu menjadikan banyak investor
jera dan ragu-ragu untuk menanamkan modalnya. Perlu adanya analisa dari investor
sebelum menjual ataupun membeli saham agar investor tidak mengalami kerugian.
Sistem yang banyak digunakan para investor saat ini adalah sistem pendukung
pengambilan keputusan pemilihan saham dengan hasil rekomendasi saham yang hanya
terdiri dari satu macam rekomendasi saham. Hal tersebut menjadikan investor harus
melihat satu per satu hasil rekomendasi saham jika ingin membandingkan saham mana
yang mempunyai rekomendasi jual atau beli yang paling tepat
Berdasarkan uraian diatas penulis tertarik untuk membuat program bantu
pemilihan saham berdasarkan Indikator Bollinger Bands. Sistem yang akan dibuat adalah
penyempurnaan dari sistem yang telah ada. Jika pada sistem yang lama investor harus
melihat satu persatu saham hasil rekomendasi maka pada sistem yang baru akan
diranking keseluruhan saham rekomendasi. Investor dapat melihat data dari semua saham
dan akan keluar urutan rekomendasi saham dari yang tertinggi sampai terendah. Program
bantu yang akan dibuat menggunakan metode Bollinger Bands, hal tersebut dikarenakan
Indikator Bollinger Bands telah menjadi salah satu analisa teknikal yang banyak
digunakan oleh para trader dan analis pasar. Bollinger Bands adalah sebuah metode untuk
membantu membandingkan volatilitas (kestabilan pergerakan harga) dan harga relative
dalam satu periode analisis.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
1.2. Rumusan Masalah
1. Bagaimana menerapkan metode Bollinger Bands dalam program bantu
pengambilan keputusan pemilihan saham bagi investor
1.3. Tujuan
Tujuan yang hendak dicapai adalah membuat program bantu untuk menentukan
saham rekomendasi yang akan dijual ataupun dibeli pada saat ini dengan indikator
Bollinger Bands
1.4. Batasan Masalah
a. Data yang digunakan diambil dari Indonesia Stock Exchange (www.idx.co.id)
� http://202.155.2.90/market_summary/daily/List_of_Scriptless(Regular)_Q
uotation/SL(yy-mm-dd).TXT
� http://202.155.2.90/market_summary/daily/List_of_LQ45_Securities_Quo
tation/LQ(yy-mm-dd).TXT
b. Menggunakan Indikator Bollinger Bands
c. Data yang diolah berasal dari harga penutupan saham harian selama 20 dan 22
hari
d. Data perusahaan yang ditampilkan hanya berasal dari Indeks Regular atau LQ45
e. Aplikasi dibuat dengan bahasa pemrograman Java dengan database MySQL
1.5. Metodologi Penelitian
1. Studi Literatur
a. Pengenalan saham
b. Analisa metode Bollinger Bands dan Candlestick
c. Pencarian Kriteria – kriteria dalam pembelian maupun penjualan saham.
d. Pemrograman dengan bahasa pemrograman Java dan Database MySQL
2. Pengumpulan data
Data penelitian diperoleh dari hasil pencarian di situs internet
3. Analisis Sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
Melakukan berbagai analisis untuk mengidentifikasi masalah pada sistem yang
akan dibuat dan melakukan pengamatan terhadap pergerakan harga saham untuk
menentukan rekomendasi beli atau jual.
4. Perancangan software
Merancang sistem program bantu dengan Indikator Bollinger Bands dilengkapi
dengan kriteria pemilihan saham.
5. Implementasi
Mengimplementasikan analisis dan desain ke dalam program aplikasi
6. Analisa hasil peramalan
Melakukan pengujian hasil rekomendasi program yaitu dengan cara
membandingkan hasil rekomendasi dengan pergerakan harga saham selanjutnya
1.6. Sistematika Penulisan
BAB 1 Pendahuluan
Pada bab pendahuluan berisi tentang latar belakang, rumusan masalah, tujuan, batasan
masalah, metodologi penelitian dan sistematika penulisan
BAB 2 Dasar Teori
Bab ini berisi dasar-dasar teori dan prinsip yang digunakan dalam pembahasan tugas
akhir. Dasar teori yang digunakan yaitu Metode Bollinger Bands dan menggunakan Java
BAB 3 Analisa dan Perancangan Sistem
Bab ini menjelaskan konsep pembuatan program bantu untuk menganalisa pergerakan
harga saham menggunakan metode Bollinger Bands.
BAB 4 Implementasi
Pada bab implementasi ini adalah proses implementasi dari rancangan sistem yang dibuat
serta mengimplementasikan desain ke dalam pemrograman sesungguhnya, serta berisi
tentang analisis kerja program yang telah dibangun
BAB 5 Penutup
Bab ini berisi kesimpulan dari analisa hasil dan saran
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
BAB II
LANDASAN TEORI
2.1. Pengertian Saham
Pengertian saham secara umum adalah “surat berharga yang dapat dibeli atau
dijual oleh perorangan atau lembaga di pasar tempat surat tersebut
diperjualbelikan”.Saham (stock) merupakan salah satu instrumen pasar keuangan yang
paling popular. Menerbitkan saham merupakan salah satu pilihan perusahaan ketika
memutuskan untuk pendanaan perusahaan. Pada sisi yang lain, saham merupakan
instrument investasi yang banyak dipilih para investor karena saham mampu memberikan
tingkat keuntungan yang menarik. Ada dua pendekatan yang digunakan dalam
menganalisis saham suatu perusahaan yaitu sebagai berikut:
2.1.1 Analisa Fundamental
Analisis fundamental ini menyatakan bahwa setiap saham memiliki nilai intrinsik.
Analisis ini mencoba untuk menghitung nilai intrinsik dari suatu saham dengan
menggunakan data fundamental yaitu Laporan Keuangan Perusahaan, seperti laba,
dividen, penjualan, struktur modal, resiko dan sebagainya. Analisis ini akan
membandingkan nilai intrinsik dengan harga pasarnya untuk menentukan apakah harga
saham pasar sudah mencerminkan nilai intrinsiknya atau belum.
2.1.2 Analisa Teknikal
Analisis teknikal merupakan upaya memperkirakan harga saham dengan
mengamati perubahan harga saham di periode yang lalu, dan upaya untuk menentukan
kapan investor harus membeli, menjual atau mempertahankan saham dengan
menggunakan indikator-indikator teknis atau menggunakan analisis grafik. Indikator
teknis yang digunakan adalah moving average, volume perdagangan, dan short-interest
ratio.
Sedangkan analisis grafik diharapkan dapat mengidentifikasi berbagai pola seperti
key reserval, head and shoulders, dan sebagainya.Analisis ini menggunakan data pasar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
dari saham, harga dan volume transaksi penjualan saham untuk menentukan nilai saham.
2.2. Indikator-Indikator Dalam Analisa Teknikal
Indikator dalam analisa teknikal pada umumnya dibagi menjadi dua bagian yaitu
indikator lagging (menyusul) dan indikator leading (mendahului).
Indikator lagging adalah indikator yang tampil setelah trend muncul dan berguna
ketika harga bergerak dalam trend yang cukup panjang. Indikator ini tidak
memperingatkan tentang perubahan yang bakal terjadi, tetapi hanya memberitahukan apa
yang sedang terjadi pada harga tersebut (yaitu, naik atau turun) sehingga dapat membuat
keputusan investasi sesuai dengan fakta tersebut.
Indikator leading adalah indikator yang di tampilkan sebelum trend muncul.
Indikator Leading dapat digunakan untuk acuan pengambilan keputusan untuk
kedepannya. Indikator ini membantu menarik keuntungan dengan memprediksi
perubahan yang bakal terjadi. Salah satu indikator yang termasuk indikator Leading
adalah Indikator Bollnger Bands.Indikator Bollinger Bands adalah indikator yang dapat
membantu penggunaanya untuk membandingkan volatility dan harga relatif dalam satu
periode analisa
2.3. CandleStick
Candlestick adalah metode yang dikembangkan oleh Homma Munahesa pada
abad ke 16 di Jepang.Sedangkan orang yang mempopulerkan grafik candlestick didunia
barat yaitu Steven Nison.Grafik candlestick menampilkan harga pembukaan, harga
tertinggi, harga terendah, dan harga penutupan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
2.3.1 Cara Membaca
Gambar 2.1 Candlestick Penjelasan dari gambar :
1. Candlestick dibentuk oleh empat data harga yaitu : open, high, low dan close
2. Jika harga penutupan (close) lebih tinggi dari harga pembukaan (open), maka
candlestick akan digambarkan sebagai kotak kosong
3. Jika harga penutupan (close) lebih rendah dari harga pembukaan (open), maka
candlestick akan digambarkansebagai kotak berwarna
4. Kotak candlestick disebut juga sebagai ‘real body’ atau badan
5. Garis yang ada diatas dan dibawah ‘real body’ disebut dengan ‘shadows’ atau
bayangan
6. Ujung bagian atas dari ‘shadow’ disebut dengan ‘high’ dan menunjukan harga
tertinggi
7. Ujung bagian bawah dari ’shadow’ disebut dengan ’low’ dan menunjukan harga
terendah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2.3.2 Badan Candlestick
Gambar 2.2. Badan Candlestick
Badan yang terbentuk panjang menunjukan trend penjualan atau pembelian yang
kuat.Semakin kuat trend maka semakin panjang bentuk badan candlestick.Sebaliknya,
badan yang terbentuk pendek menunjukan kecilnya aktivitas pembelian atau penjualan
2.3.3 Bayangan Candlestick
Gambar 2.3. Bayangan Candlestick
Candlestick dengan bayangan yang panjang menunjukan aktivitas perdagangan
terjadi jauh diatas atau dibawah harga pembukaan atau penutupan.Candlestick dengan
bayangan yang pendek menunjukan bahwa aktivitas perdagangan terjadi di sekitar harga
pembukaan atau penutupan.
Apabila candlestick memiliki bayangan atas yang panjang dan bayangan bawah
yang pendek,menunjukan bahwa pembeli berupaya masuk sehingga sempat membuat
harga naik akan tetapi kemudian diimbangi datangnya penjual yang membuat harga
kembali mendekati level pembukaan.Jika candlestick memiliki bayangan bawah yang
panjang dan bayangan atas yang pendek.Hal tersebut berarti penjual berupaya masuk ke
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
pasar dan membuat harga sempat menurun namun kemudian diimbangi oleh aktivitas
pembeli sehingga harga kembali naik ke level pembukaan.
2.4 Indikator Bollinger Bands
Indikator Bollinger Bands dikembangkan oleh John Bollinger pada awal
1980.Indikator Bollinger Bands telah menjadi salah satu analisa teknikal yang banyak
digunakan oleh para trader dan analis pasar. Bollinger Bands adalah sebuah indikator
untuk membantu membandingkan volatilitas (kestabilan pergerakan harga) dan harga
relative dalam satu periode analisis.
2.4.1 Cara Pembacaan Grafik Bollinger Bands
Gambar 2.4 Grafik Bollinger Bands
Bollinger Bands terdiri atas tiga bands(garis) yaitu upper band (garis atas),middle
band(garis tengah) dan lower band(garis bawah). Ketika harga cenderung less volatile
(diam) bands akan merapat dan ketika harga aktif bands akan melebar.Bollinger Bands
berfungsi sebagai Support(dukungan) dan Resistance(perlawanan) dimana harga
cenderung bergerak bolak-balik antara batas atas dan batas bawah. Ketika bands merapat,
umumnya akan terjadi breakout(menembus band atas atau band bawah). Bila harga mulai
menembus band atas,diperkirakan pergerakan akan berlanjut naik, sedangkan jika harga
mulai menembus band bawah diperkirakan pergerakan akan berlanjut turun.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.4.2 Sinyal Jual dan Sinyal Beli
Indikator Bollinger Bands mempunyai sinyal jual dan sinyal beli yang dapat
dilihat melalui band.
• Middle band berada dibawah harga, maka mengindikasikan Bullish trend
(perlihan trend menuju sinyal beli)
• Middle band berada diatas harga, indikasi Bearish trend (Peralihan trend menuju
sinyal jual)
• Perpotongan antara middle band dan harga,indikasi peralihan trend
Jenis – jenis Harga
Jenis harga yang digunakan dalam analisis teknikal adalah sebagai berikut :
1) Harga pembukaan (open price)
Open price adalah harga saham tersebut pada awal periode tersebut. Open
price pada suatu hari adalah harga saham tersebut pada saat pasar modal
dibuka pada hari itu
2) Harga Tertinggi (High price)
High price suatu saham adalah harga tertinggi yang pernah dicapai saham
tersebut pada suatu periode
3) Harga terendah (Low price)
Low price suatu saham adalah harga terendah yang pernah dicapai saham
tersebut pada suatu periode
4) Harga penutupan (Close price)
Close price suatu saham adalah harga saham tersebut pada akhir periode
tersebut. Close price pada suatu hari adalah harga saham tersebut pada
saat pasar modal ditutup pada hari itu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
2.4.3 Rumus Perhitungan
Proses pertama Indikator Bollinger Bands dihitung dengan mencari nilai dari
middle band menggunakan rumus:
Middle Band = n
j Closen
1J∑
= ………...........................................…..( 1 )
Keterangan:
Close j = Harga penutupan pada period ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan sebagai
default,tetapi angka ini bisa saja disesuaikan dengan keinginan dan tujuan)
Kemudian nilai Middle band tersebut digunakan untuk mencari nilai upper band dan nilai
lower band.
Upper band = Middle Band + ( Faktor Pengali x Standar Deviasi )
Lower band = Middle Band – ( Faktor Pengali x Standar Deviasi )
Faktor Pengali di default dengan nilai 2 yaitu upper band dan lower band.
Standar Deviasi merupakan perhitungan statistik biasa yang digunakan untuk mengukur
besarnya penyimpangan pada tiap-tiap data
Standar Deviasi = ( )
n
∑=
n
1J
2Band Middle-j Close....................................................( 2 )
Keterangan :
Close j = Harga penutupan pada periode ke-j
N = Periode
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
BAB III
PERANCANGAN SISTEM
3.1. Analisis Sistem
3.1.1 Fase Definisi Ruang Lingkup Sistem pemilihan saham rekomendasi yang digunakan para investor saat ini
adalah dengan sistem yang hanya menyajikan satu per satu rekomendasi saham. Berikut
merupakan persoalan-persoalan yang timbul dan diuraikan dalam PIECES framework.
Performance : Sistem yang lama baru bisa menampilkan satu per satu data saham
rekomendasi
Information : Informasi yang didapat dari sistem yang ada sekarang kurang lengkap, hal
tersebut dikarenakan investor harus membuka satu per satu saham rekomendasi.Terlalu
lama jika investor harus membuka satu per satu saham rekomendasi, kebanyakan investor
hanya melihat saham yang aktif saja, hal tersebut menjadikan investor kekurangan
informasi.
Economic : Membuka satu per satu saham rekomendasi membutuhkan waktu yang lama,
hal itu menyebabkan investor mengalami kerugian karena bagi investor waktu sangat
berharga
Control : Dalam sistem lama harus membuka saham rekomendasi satu per satu, padahal
data saham sangat banyak. Jika investor tidak membuka semua data saham rekomendasi
maka dimungkinkan akan terjadi salah prediksi. Investor memilih satu saham yang
dianggapnya paling tepat dibeli dari beberapa saham rekomendasi yang dilihatnya,
padahal masih terdapat rekomendasi saham yang lebih baik dari pilihan investor yang
belum dibuka datanya.
Efficiency : membuka satu per satu saham rekomendasi kurang efisien waktu, padahal
dalam perhitungan saham dibutuhkan waktu yang cepat karena harga saham sewaktu-
waktu dapat berubah
Service : Output rekomendasi dari sistem yang lama berupa grafik rekomedasi saham
dari beberapa periode. Investor harus mengidentifikasikan sendiri maksud dari grafik
rekomendasi kemudian membandingkan satu per satu dengan grafik rekomendasi yang
lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
3.1.2 Fase Analisis Masalah (Problem Analysis)
3.1.2.1 Sistem Yang ada Saat ini
Program bantu yang ada saat ini hanya bisa menampilkan satu macam
rekomendasi saham. Investor harus melihat satu per satu hasil rekomendasi saham untuk
mengetahui hasil rekomendasi yang terbaik. Penyajian output sistem saat ini berupa
grafik, investor harus mengidentifikasi sendiri arti dari grafik candlestick yang
disajikan.Grafik yang ditampilkan biasanya terdiri dari beberapa periode waktu
sebelumnya sampai dengan hari penutupan saham terakhir.
3.1.2.2 Sebab dan Akibat (Causes and Effect)
Tabel 3.1. Cause dan effect
Project : Program bantu Pemilihan
Saham Berdasarkan Indikator Bollinger
Bands
Project Manager : Irene Leny Pradista
Anggadewi
Created by : Irene Leny Pradista
Anggadewi
Last Update by :
Date Created :19 November 2008 Date Last Update : 02 Agustus 2010
CAUSE AND EFFECT ANALYSIS SYSTEM IMPROVEMENT OBJECT IVES
Problem /
Opportunity
Causes and effect System objectives System constraint
1. Akurasi hasil
prediksi
pemilihan
saham
1. Banyaknya
saham yang
tidak
mungkin
dilihat satu
per satu oleh
investor
1. Membantu
investor dalam
menentukan
keakuratan
prediksi
pemilihan saham
dengan
meranking
semua saham
rekomendasi
1. Membutuhkan
perangkat lunak
dan perangkat
keras untuk
mendukung
berjalannya
sistem baru
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
2. Melihat satu
per satu
saham
rekomendasi
membutuhka
n waktu yang
lama
2. Waktu lama
bisa
menyebabkan
kerugian bagi
investor
karena bagi
investor
waktu adalah
uang
2. Lebih
mengenfisienkan
waktu bagi investor
dengan adanya sistem
yang dapat meranking
semua perusahaan
2. Membutuhkan
perangkat lunak
dan perangkat
keras untuk
mendukung
berjalannya
sistem baru
3.1.2.3 Gambaran Sistem Baru
Sistem yang ada saat ini mempunyai beberapa kelemahan seperti yang telah
dijelaskan dalam cause dan effect diatas. Dari hal tersebut maka dibuatlah sistem baru
yaitu “Program Bantu Pemilihan Saham Berdasarkan Indikator Bollinger Bands”.Sistem
baru akan mengambil data saham dari Indonesia Stock Exchange site (www.idx.co.id),
http://202.155.2.90/market_summary/daily/List_of_Scriptless(Regular)_Quotation/SL(yy
-mm-dd).TXT dan
http://202.155.2.90/market_summary/daily/List_of_LQ45_Securities_Quotation/LQ(yy-
mm-dd).TXT
Data yang diambil berasal dari data penutupan saham harian. Data berupa kode
perusahaan, tanggal, harga pembukaan, harga penutupan, harga tertinggi dan harga
terendah. Setelah data didapat dari situs tersebut, selanjutnya sistem akan melakukan
perhitungan prediksi saham menggunakan data tersebut. Dalam perhitungan prediksi
saham terdapat beberapa pilihan yang harus dipilih pengguna sistem terkait dengan
prediksi saham yaitu memilih tanggal, periode, indeks saham, dan rekomendasi jual atau
beli dan bobot nilai dari krieria(persen keluar, ekor warna, volume) yang dipilih user.
Kemudian akan diperoleh hasil saham rekomendasi pada saat ini beserta dengan kriteria
pengurutan rekomendasi saham dan grafiknya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Gambar 3.1. Diagram Konteks sistem baru
3.2 Orang Yang Terlibat Dalam Sistem
Pengguna yang berinteraksi dengan sistem adalah investor saham atau orang
yang ingin untuk memprediksi pembelian ataupun penjualan saham pada saat ini.
3.2.1 Fase Analisis Kebutuhan (Requirement Analysis)
3.2.1.1 Use case Diagram
Berikut ini merupakan usecase diagram pengguna dari Program Bantu Pemilihan
Saham Berdasarkan Indikator Bollinger Bands.Aktor dalam use case ini adalah
pengguna, pengguna yang dimaksud adalah investor. Pada sistem ini pengguna dapat
melakukan prediksi saham. Prediksi saham meliputi pemilihan tanggal, periode,
pemilihan indeks saham, pemilihan rekomendasi, dan pemilihan bobot kriteria.
Gambar 3.2. Use Case Diagram
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
3.2.1.2 Definisi Use Case
Use Case merupakan penjelasan mengenai kegiatan-kegiatan dalam sistem yang
dilakukan oleh masing-masing pengguna (aktor).Definisi usecase Sistem Pendukung
Pengambilan keputusan pemilihan saham terdapat pada tabel dibawah ini.
Table 3.2. Definisi Use Case
Nama Use Case Deskripsi Use Case Pelaku yang berpartisipasi
Prediksi saham
Use case ini
menggambarkan proses
prediksi saham.
Pengguna
3.2.1.3 Narasi Use Case (Use case Narative)
Bagian ini menjelaskan mengenai langkah-langkah kegiatan dalam setiap use case
Tabel 3.3. Narasi Use case Prediksi saham
Pengarang : Irene Leny Pradista Tanggal : 19 November 2009 Versi : Nama Use Case Prediksi saham Jenis Use Case :
Business Requirements Use Case ID PSB-002 Prioritas Tinggi Sumber - Aktor Bisnis Primer
Pengguna
Aktor pendukung lainnya
-
Stakeholder lain yang berhubungan
-
Deskripsi Use case ini mendeskripsikan suatu kejadian yang dilakukan oleh pengguna. Pengguna memilih beberapa pilihan prediksi saham untuk mengetahui hasil rekomendasi saham
Prakondisi Pengguna telah berada dihalaman utama Pemicu Use case ini digunakan untuk mengetahui saham
rekomendasi dan bobot kriteria Bagian Umum pada Kejadian
Kegiatan Pelaku Respons Sistem
Langkah 1: Pengguna membuka halaman prediksi
Langkah 2:Sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Langkah 3: Pengguna memilih tanggal Langkah 4: Pengguna memilih periode sesuai dengan yang diinginkan pengguna Langkah 5: Pengguna memilih indeks saham sesuai dengan yang diinginkan pengguna Langkah 6 : Pengguna memilih rekomendasi sesuai dengan yang diinginkan pengguna Lagkah 7 : Pengguna memilih bobot kriteria saham Langkah 8 : Pengguna menekan tombol ”proses”
merespon dengan menampilkan halaman prediksi Langkah 4:Sistem menampilkan hasil rekomendasi
Bidang alternatif - Kesimpulan Sistem menampilkan data hasil prediksi
rekomendasi saham pada saat itu Pascakondisi Pengguna berhasil melihat data hasil prediksi
rekomendasi saham berdasarkan kriteria yang dimasukan pengguna
Aturan bisnis - Batasan dan spesifikasi Implementasi
-
Asumsi - Masalah terbuka -
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
3.2.2 Fase Desain Logikal (Logical Design Phase)
3.2.2.1 Diagram Aktifitas (Activity Diagram)
Berikut adalah activity diagram dari method-method yang ada dalam program ini.
Diagram Aktivitas Prediksi Saham
Berikut ini adalah activity diagram Prediksi Saham, yaitu proses dilakukan pada
halaman prediksi dengan memilih tanggal, periode, memilih indeks saham, memilih
rekomendasi dan memilih bobot kriteria. Setelah pengguna mengisi semua pilihan
kemudian proses selanjutnya sistem akan menampilkan halaman rekomendasi. Jika
pengguna tidak ingin melanjutkan proses maka dapat diklik tombol “Keluar”.
Gambar 3.3. Diagram aktifitas Prediksi Saham
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
3.2.3 Analisis Keputusan dan Design (Decision Analysis)
3.2.3.1 Mengidentifikasi dan Mengklasifikasi Kelas dalam Use Case Desain
Tabel 3.4. Klasifikasi Use Case Prediksi Saham(Rekomendasi Beli)
Kelas Interface, Control, dan Entity Use Case Prediksi Saham Kelas Interface Kelas Controller Kelas Entity H-001 – VisualAmbilData H-002 – visualHasil
ControlerAmbilData kontrolDB
ModelAmbilData
Tabel 3.5. Klasifikasi Use Case Prediksi Saham(Rekomendasi Jual)
Kelas Interface, Control, dan Entity Use Case Prediksi Saham Kelas Interface Kelas Controller Kelas Entity H001 – VisualAmbilData H002 – visualHasilJual
ControlerAmbilData kontrolDB
ModelAmbilData
3.2.4 Sequence Diagram
Berikut ini merupakan Sequence Diagram yang menggambarkan proses yang terjadi
dalam program bantu pemilihan saham.
Diagram Sequence Prediksi saham(Rekomendasi Beli)
Gambar 3.4. Diagram Sequence Prediksi saham(Rekomendasi Beli)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
Diagram Sequence Prediksi saham(Rekomendasi Jual)
Gambar 3.5. Diagram Sequence Prediksi saham(Rekomendasi Jual)
3.2.5 Class Diagram
Class diagram menggambarkan struktur dan deskripsi class, package dan objek
beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.
Class dapat merupakan implementasi dari sebuah interface, yaitu class abstrak yang
hanya memiliki metoda. Interface tidak dapat langsung diinstansiasikan, tetapi harus
diimplementasikan dahulu menjadi sebuah class.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Gambar 3.6. Class Diagram
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
3.3 Perancangan Sistem
3.3.1 Design Interface
Desain Interface Halaman Utama
Gambar 3.7. Halaman utama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Desain Hasil Rekomendasi
Hasil rekomendasi
Kode
Perusahaan
Nama
Perusahaan
Nilai %
keluar
Panjang Ekor dan
Warna Candlestick
Nilai
Volume
Hasil
Rekomendasi
Gambar 3.8. Form Hasil Rekomendasi
Desain Grafik
0
500
1000
1500
2000
2500
3000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Series1
Series2
Series3
Series4
Gambar 3.9. Desain Grafik
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
3.4. Perancangan Proses
3.4.1 Flowchart Rekomendasi Beli Saham
Gambar 3.10. Flowchart Rekomendasi Beli Saham
Hal pertama yang dilakukan sistem adalah pengambilan data yang dilakukan
secara online. Setelah data diambil kemudian menghitung nilai lower bands.Setelah nilai
lower bands diketahui kemudian dipilih bobot kriteria yang terdiri dari % keluar
Candlestick, Panjang ekor dan warna badan Candlestick, dan Volume. Nilai ketiga bobot
kriteria kemudian dikalikan dengan nilai perhitungan ketiga kriteria.Lalu setelah
perhitungan selesai akan diketahui hasil rekomendasi beli pada saat ini.
3.4.1.1 Menghitung Lower Bands
Proses awal dalam perhitungan lower bands adalah dengan mencari nilai middle
bands terlebih dahulu, yaitu :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
Middle Band = n
j Closen
1J∑
=
Keterangan:
Close j = Harga penutupan pada period ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan sebagai
default,tetapi angka ini bisa saja disesuaikan dengan keinginan dan tujuan)
Kemudian nilai Middle band tersebut digunakan untuk mencari nilai lower band.
Lower band = Middle Band – ( Faktor Pengali x Standar Deviasi )
Faktor Pengali di default dengan nilai 2 yaitu upper band dan lower band.
Standar Deviasi merupakan perhitungan statistik biasa yang digunakan untuk mengukur
besarnya penyimpangan pada tiap-tiap data
Standar Deviasi = ( )
n
∑=
n
1J
2Band Middle-j Close
Keterangan :
Close j = Harga penutupan pada periode ke-j
N = Periode
3.4.1.2 Menghitung % keluar Candlestick Rekomendasi Beli
Setelah nilai lower bands diketahui, kemudian mencari Nilai % Keluar yaitu dengan
membandingkan nilai open,close,high,low, pada tanggal itu dengan nilai lower bands
.Jika nilai open,high, low, close lebih besar daripada nilai lower bands, maka nilai 0,
tapi jika lebih kecil dari lower bands maka akan dihitung :
Open = ((l
Otl − ) ∗ 100% )
High = ((l
Htl − ) ∗ 100% )
Low = ((l
Ltl − ) ∗ 100% )
Close = ((l
Ctl − ) ∗ 100% )
Nilai % Keluar : Open + High + Low + Close
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Hasil total dari nilai open,high, low, close lalu di klasifikasikan dalam pembobotan
nilai yaitu :
� > 6 % =20
� 3 - 6 % = 15
� 1 – 3 % = 10
� 0 – 1 % = 5
Keterangan :
Ot : Harga pembukaan (open price) pada hari data terakhir
Ht : Harga tertinggi (high price) pada hari data terakhir
Lt : Harga terendah (low price) pada hari data terakhir
Ct : Harga penutupan (close price) pada hari data terakhir
l : Nilai lower bands pada hari data terakhir
3.4.1.3 Menghitung Panjang Ekor dan Warna Badan Candlestick
Hitung Warna Badan
Mencari warna badan = jika open > close, maka ((Ot
CtOt − ) ∗ 100% )
Mencari warna badan = jika close > open, maka ((Ct
OtCt − ) ∗ 100% )
Mencari warna badan = jika close = open, maka warna candlestick yellow
Keterangan :
Ct : Harga penutupan (close price) pada hari data terakhir
Ot : Harga pembukaan (open price) pada hari data terakhir
Hitung Panjang ekor candlestick
Panjang ekor candlestick = jika close > open, maka ((Ot
LtOt − ) ∗ 100% )
Panjang ekor candlestick = jika open > close, maka ((Ct
LtCt − ) ∗ 100% )
Keterangan :
Ot : Harga pembukaan (open price) pada hari data terakhir
Lt : Harga terendah (low price) pada hari data terakhir
Ct : Harga penutupan (close price) pada hari data terakhir
Pembobotan =
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Nilai panjang ekor candlestick < 3 % (dari nilai panjang ekor bawah candlestick) = short
Nilai panjang ekor candlestick > 3 % (dari nilai panjang ekor bawah candlestick) = long
Nilai Warna badan < 2 % (Nilai Warna badan Candlestick) = short
Nilai Warna badan > 2 % (Nilai Warna badan Candlestick) = long
Matrik Ekor Bawah dan Warna Candlestick
Rekomendasi beli menggunakan ekor bawah, semakin panjang ekor bawah yang
keluar dari garis lower bands menunjukan rekomendasi beli yang kuat. Hal tersebut
dikarenakan ekor bawah yang panjang berarti penjual berupaya masuk ke pasar dan
membuat harga sempat menurun jauh, semakin turun dari garis Lower Bands,
menunjukan rekomendasi beli yang kuat, namun kemudian diimbangi oleh aktivitas
pembeli sehingga harga kembali naik ke level pembukaan.
Ekor Bawah Long short
Red long
Red short
Yellow warna badan
green long
green short
Tabel 3.6. Pembobotan ekor dan warna rekomendasi beli
3.4.1.4 Menghitung Volume
Volume Rata-rata (Volume perbandingan) :
Volume Rata-rata = n
j Volumen
1J∑
=
Keterangan:
Volume j = Nilai Volume pada period ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan
sebagai default,tetapi angka ini bisa saja disesuaikan dengan keinginan
dan tujuan)
Setelah diketahui nilai Volume perbandingan kemudian dicari jumlah volume yang
kosong dan volume yang liquid yaitu :
0 0
14 4
14 6
15 10
20 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Volume kosong < 20% * Volume rata-rata(Volume perbandingan)
Setelah diketahui volume yang liquid dan volume koson kemudian tahap akhir adalah
perhitungan volume liquid dengan rumus :
Nilai volume = n
j Liquid1J∑
=
Keterangan:
Liquid j = nilai volume liquid pada periode ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan
sebagai default,tetapi angka ini bisa saja disesuaikan dengan keinginan
dan tujuan)
Pembobotan Nilai Volume :
90% - 100 % =25
70% – 89%=20
50% - 69% = 15
30% – 49% = 10
20% - 39% = 5
0% – 19% = 0
3.4.1.5 Contoh Tahapan dalam penentuan urutan rekomendasi Beli
Tabel 3.7 Urutan rekomendasi Beli
Kode
Perusahaan
Nilai % Keluar Nilai panjang
Ekor dan warna
Badan
Nilai Volume Hasil
Keseluruhan
BSDE 2,0 0,0 6,0 8,0
BTEL 2,0 7,0 6,0 15,0
INTP 3,0 0,0 7,5 10,5
TLKM 1,0 2,0 7,5 10,5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Contoh perhitungan untuk BTEL :
1. Mencari nilai lower band dari BTEL = 237
2. Setelah nilai lower bands diketahui, kemudian mencari Nilai % Keluar yaitu dengan
membandingkan nilai open,close,high,low, pada tanggal itu dengan nilai lower
bands .Jika nilai open,high, low, close lebih besar daripada nilai lower bands, maka
nilai 0, tapi jika lebih kecil dari lower bands maka akan dihitung :
Perhitungan mencari nilai % keluar pada BTEL
Open = 240 , maka nilai = 0 %
High = 240 , maka nilai = 0 %
Low = 230(((237-230)/237)*100%)= 2,95 %
Close = 240 ,maka nilai = 0 %
Total = 0 % + 0 % + 2,95 %+ 0% = 2,95 %
Hasil total dari nilai open,high, low, close lalu di klasifikasikan dalam pembobotan
nilai yaitu :
� > 6 % =20
� 3 - 6 % = 15
� 1 – 3 % = 10
� 0 – 1 % = 5
Nilai total 2,95 % jadi bobotnya = 10.
Nilai persentase final untuk % keluar dipilih 20 %
Hasil akhir = Nilai total * Nilai persentase final = 10 * 20 % = 2
3. Langkah selanjutnya adalah mencari nilai panjang ekor dan warna badan yaitu
Perhitungan Nilai warna badan Candlestick pada BTEL
Open = 240, high = 240, low = 230, close = 240
Hitung nilai Warna badan = yellow (karena nilai close = open)
Hitung Panjang ekor candlestick
Nilai panjang ekor candlestick BTEL = (((240-230)/240)*100%) = 4,17
Nilai warna dan nilai panjang ekor candlestick kemudian digabung
Nilai warna = yellow
Nilai panjang ekor candlestick = 4,17 (long)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Pembobotan =
Nilai panjang ekor candlestick < 3 % (dari nilai panjang ekor bawah candlestick) = short
Nilai panjang ekor candlestick > 3 % (dari nilai panjang ekor bawah candlestick) = long
Nilai Warna badan < 2 % (Nilai Warna badan Candlestick) = short
Nilai Warna badan > 2 % (Nilai Warna badan Candlestick) = long
Matrik Ekor Bawah dan Warna Candlestick
Ekor Bawah Long short
Red long
Red short
Yellow warna badan
green long
green short
Tabel 3.8. Pembobotan ekor dan warna rekomendasi beli
Nilai warna yellow dan nilai panjang ekor candlestick long, maka dari tabel dapat dilihat
bahwa bobotnya adalah 14.
Nilai bobot * nilai persentase final ekor dan warna
Nilai persentase final ekor dan warna = 50 %
Bobot akhir = 14 * 50 % = 7
4. Nilai volume
Nilai volume dari data tanggal 10 desember = 64690 (volume per satuan)
Kemudian dari periode 20 hari tersebut akan didapat 20 nilai volume, yang kemudian
setelah dirata-rata hasilnya = 67662,3
Volume kosong < 20% * Volume rata-rata(volume perbandingan)
Nilai semua volume dalam 20 hari dibandingkan dengan nilai perbandingan(13532,46)
Dari 20 data ada 19 volume yang lebih dari volume perbadingan,artinya ada 19 saham
liquid.
Nilai volume = ((jumlah saham liquid/periode)*100%) = ((19/20) * 100%) = 86,36%
Bobot nilai volume = 90-100 % =25 , 70 – 89%=20, 50-69% = 15 , 30 – 49% = 10, 20 -
39% = 5 , 0 – 19% = 0.
Nilai persentase volume = 30 %
Nilai volume akhir = 20 * 30% = 6
0 0
14 4
14 6
15 10
20 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
5. Nilai akhir % keluar = 2
Nilai akhir panjang ekor candlestick dan warna badan = 7
Nilai akhir Volume = 6
Hasil keseluruhan dari ketiga kriteria adalah 2+7+6 = 15,00
3.4.2 Flowchart Rekomendasi Jual Saham
Gambar 3.11. Flowchart Rekomendasi Jual Saham
Hal pertama yang dilakukan sistem adalah pengambilan data yang dilakukan
secara online. Setelah data diambil kemudian menghitung nilai upper bands. Setelah nilai
upper bands diketahui kemudian dipilih bobot kriteria yang terdiri dari % keluar
Candlestick, Panjang ekor dan warna badan Candlestick, dan Volume. Nilai ketiga bobot
kriteria kemudian dikalikan dengan nilai perhitungan ketiga kriteria. Lalu setelah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
perhitungan selesai akan diketahui hasil rekomendasi jual pada saat ini.
3.4.2.1 Menghitung Upper Bands
Proses awal dalam perhitungan upper bands adalah dengan mencari nilai middle
bands terlebih dahulu, yaitu :
Middle Band = n
j Closen
1J∑
= ………...........................................…..( 1 )
Keterangan:
Close j = Harga penutupan pada period ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan sebagai
default,tetapi angka ini bisa saja disesuaikan dengan keinginan dan tujuan)
Kemudian nilai Middle band tersebut digunakan untuk mencari nilai upper band.
Upper band = Middle Band + ( Faktor Pengali x Standar Deviasi )
Faktor Pengali di default dengan nilai 2 yaitu upper band dan lower band.
Standar Deviasi merupakan perhitungan statistik biasa yang digunakan untuk mengukur
besarnya penyimpangan pada tiap-tiap data
Standar Deviasi = ( )
n
∑=
n
1J
2Band Middle-j Close....................................................( 2 )
Keterangan :
Close j = Harga penutupan pada periode ke-j
N = Periode
3.4.2.2 Menghitung % keluar Candlestick Rekomendasi Jual
Setelah nilai upper bands diketahui, kemudian mencari Nilai % Keluar yaitu dengan
membandingkan nilai open,close,high,low, pada tanggal itu dengan nilai upper bands
.Jika nilai open,high, low, close lebih kecil daripada nilai upper bands, maka nilai 0, tapi
jika lebih besar dari lower bands maka akan dihitung :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Open = ((Ot
uOt − ) ∗ 100% )
High = ((Ht
uHt − ) ∗ 100% )
Low = ((Lt
uLt − ) ∗ 100% )
Close = ((Ct
uCt − ) ∗ 100% )
Nilai % Keluar : Open + High + Low + Close
Hasil total dari nilai open,high, low, close lalu di klasifikasikan dalam pembobotan nilai
yaitu :
� > 6 % =20
� 3 - 6 % = 15
� 1 – 3 % = 10
� 0 – 1 % = 5
Keterangan :
Ot : Harga pembukaan (open price) pada hari data terakhir
Ht : Harga tertinggi (high price) pada hari data terakhir
Lt : Harga terendah (low price) pada hari data terakhir
Ct : Harga penutupan (close price) pada hari data terakhir
u : Nilai upper bands pada hari data terakhir
3.4.2.3 Menghitung Panjang Ekor dan Warna Badan Candlestick
Hitung Warna Badan
Mencari warna badan = jika open > close, maka ((Ot
CtOt − ) ∗ 100% )
Mencari warna badan = jika close > open, maka ((Ct
OtCt − ) ∗ 100% )
Mencari warna badan = jika close = open, maka warna candlestick yellow
Keterangan :
Ct : Harga penutupan (close price) pada hari data terakhir
Ot : Harga pembukaan (open price) pada hari data terakhir
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Hitung Panjang ekor candlestick
Panjang ekor candlestick = jika close > open, maka ((Ht
CtHt − ) ∗ 100% )
Panjang ekor candlestick = jika open > close, maka ((Ht
OtHt − ) ∗ 100% )
Keterangan :
Ot : Harga pembukaan (open price) pada hari data terakhir
Ht : Harga tertinggi (high price) pada hari data terakhir
Ct : Harga penutupan (close price) pada hari data terakhir
Pembobotan =
Nilai panjang ekor candlestick < 3 % (dari nilai panjang ekor atas candlestick) = short
Nilai panjang ekor candlestick > 3 % (dari nilai panjang ekor atas candlestick) = long
Nilai Warna badan < 2 % (Nilai Warna badan Candlestick) = short
Nilai Warna badan > 2 % (Nilai Warna badan Candlestick) = long
Matrik Ekor Atas dan Warna Candlestick
Rekomendasi jual menggunakan ekor atas, semakin panjang ekor atas yang keluar
dari garis upper bands menunjukan rekomendasi jual yang kuat. Hal tersebut dikarenakan
ekor atas yang panjang berarti pembeli berupaya masuk ke pasar dan membuat harga
sempat naik jauh, semakin naik harga dan ekor atas naik jauh dari garis Upper Bands,
menunjukan rekomendasi jual yang kuat, namun kemudian diimbangi oleh aktivitas
penjual sehingga harga kembali ke level pembukaan.
Ekor Atas
Long short
Red long
Red short
Yellow warna badan
green long
green short
Tabel 3.9. Pembobotan ekor dan warna rekomendasi jual
15 10
20 8
14 6
0 0
14 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
3.4.2.4 Menghitung Volume
Volume Rata-rata (Volume perbandingan) :
Volume Rata-rata = n
j Volumen
1J∑
=
Keterangan:
Volume j = Nilai Volume pada period ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan
sebagai default,tetapi angka ini bisa saja disesuaikan dengan keinginan
dan tujuan)
Setelah diketahui nilai Volume perbandingan kemudian dicari jumlah volume yang
kosong dan volume yang liquid yaitu :
Volume kosong < 20% * Volume rata-rata(Volume perbandingan)
Setelah diketahui volume yang liquid dan volume koson kemudian tahap akhir adalah
perhitungan volume liquid dengan rumus :
Nilai volume = n
j Liquid1J∑
=
Keterangan:
Liquid j = nilai volume liquid pada periode ke-j
n = Jumlah jangka waktu yaitu 20 hari (biasanya 20 periode akan digunakan
sebagai default,tetapi angka ini bisa saja disesuaikan dengan keinginan
dan tujuan)
Pembobotan Nilai Volume :
90% - 100 % =25
70% – 89%=20
50% - 69% = 15
30% – 49% = 10
20% - 39% = 5
0% – 19% = 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
3.4.2.5 Contoh Tahapan dalam penentuan urutan rekomendasi Jual
Rekomendasi Jual pada tanggal 11 desember 2010
Tabel 3.10 Hasil Rekomendasi jual tanggal 11 desember 2010
Kode
Perusahaan
Nilai % Keluar Nilai panjang
Ekor dan warna
Badan
Nilai Volume Hasil
Keseluruhan
ADRO 1,0 4,0 7,5 12,5
BIPI 3,0 4,0 7,5 14,5
BMTR 4,0 7,0 6,0 17,0
ELSA 4,0 5,0 7,5 16,5
TRUB 3,0 0,0 7,5 10,5
Contoh perhitungan untuk BMTR :
1. Mencari nilai upper band dari BMTR = 571
2. Setelah nilai upper bands diketahui, kemudian mencari Nilai % Keluar yaitu
dengan membandingkan nilai open, close, high, low, pada tanggal itu dengan
nilai upper bands .Jika nilai open,high, low, close lebih kecil daripada nilai
upper,maka nilai 0, tapi jika lebih besar maka akan dihitung :
Perhitungan mencari nilai % keluar pada BMTR
Open = 600 (((600-571)/600)* 100%) = 4,83%
High = 650 (((650-571)/650)*100%)= 12,15%
Low = 580(((580-571)/580)*100%)= 1,55%
Close = 600(((600-571)/600)*100%=4,83%
Total = 4,83% + 12,15% + 1,55 %+ 4,83% = 23,36 %
Hasil total dari nilai open,high, low, close lalu di klasifikasikan dalam
pembobotan nilai yaitu :
� > 6 % =20
� 3 - 6 % = 15
� 1 – 3 % = 10
� 0 – 1 % = 5
Nilai total 23,36 % > 6 %, jadi bobotnya = 20.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Nilai persentase final untuk % keluar dipilih 20 %
Hasil akhir = Nilai total * Nilai persentase final = 20 * 20 % = 4
3. Langkah selanjutnya adalah mencari nilai panjang ekor dan warna badan yaitu
Perhitungan Nilai warna badan Candlestick pada BMTR
Open = 600, high = 650, low = 580, close = 600
Hitung nilai Warna = yellow (karena nilai close = open)
Hitung Panjang ekor candlestick pada BMTR
Nilai panjang ekor candlestick = (((600-580)/600)*100%) = 3,34
Nilai warna dan nilai panjang ekor candlestick kemudian digabung
Nilai warna = yellow
Nilai panjang ekor candlestick = 3,34 (long)
Pembobotan =
Nilai panjang ekor candlestick < 3 % (dari nilai panjang ekor atas candlestick) = short
Nilai panjang ekor candlestick > 3 % (dari nilai panjang ekor atas candlestick) = long
Nilai Warna badan < 2 % (Nilai Warna badan Candlestick) = short
Nilai Warna badan > 2 % (Nilai Warna badan Candlestick) = long
Matrik Ekor Atas dan Warna Candlestick
Ekor Atas
Long short
Red long
Red short
Yellow warna badan
green long
green short
Tabel 3.11. Pembobotan ekor dan warna rekomendasi jual
Nilai warna yellow dan nilai panjang ekor candlestick long, maka dari tabel dapat dilihat
bahwa bobotnya adalah 14.
Nilai bobot * nilai persentase final ekor dan warna
Nilai persentase final ekor dan warna = 50 %
15 10
20 8
14 6
0 0
14 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
Bobot akhir = 14 * 50 % = 7
4. Nilai volume
Nilai volume dari data tanggal 10 desember = 301609 (volume per satuan)
Kemudian dari periode 20 hari tersebut akan didapat 20 nilai volume, yang kemudian
setelah dirata-rata hasilnya = 39338,65
Volume kosong < 20% * Volume rata-rata(volume perbandingan)
Nilai semua volume dalam 20 hari dibandingkan dengan nilai perbandingan(7867,73)
Dari 20 data ada 16 volume yang lebih dari volume perbadingan,artinya ada 16 saham
liquid.
Nilai volume = ((jumlah saham liquid/periode)*100%) = ((16/20) * 100%) = 80%
Bobot nilai volume = 90-100 % =25 , 70 – 89%=20, 50-69% = 15 , 30 – 49% = 10, 20 -
39% = 5 , 0 – 19% = 0.
Nilai persentase volume = 30 %
Nilai volume akhir = 20 * 30% = 6
5. Nilai akhir % keluar = 4
Nilai akhir panjang ekor candlestick dan warna badan = 7
Nilai akhir Volume = 6
Hasil keseluruhan dari ketiga criteria adalah 4+7+6 = 17,00
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
BAB IV
IMPLEMENTASI DAN HASIL
4.1 Implementasi program dan Pembuatan Database
Pada proses ini dilakukan pembuatan database pada MySQL menggunakan SQL
yog. Database yang dibuat bernama sahambollinger. Database ini akan berisi tabel-tabel
yang akan diperlukan oleh program bantu pemilihan saham dengan Indikator Bollinger
Bands. Berikut sintaks pembuatan database sahambollinger dan tabel-tabel, stored
procedure, dan view pada database sahambollinger :
4.1.1 Tabel saham
CREATE TABLE `saham` ( `No_saham` int(11) NOT NULL auto_increment, `kode_perusahaan` varchar(50) default NULL, `nm_perusahaan` varchar(100) NOT NULL, `Prev` double default NULL, `High` double default NULL, `Low` double default NULL, `Close` double default NULL, `Volume` double default NULL, `Tanggal` date default NULL, PRIMARY KEY (`No_saham`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
4.1.2 View temp
View temp berisi query untuk menghitung nilai garis middle bands
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `temp` AS (select (sum(`saham `.`Close`) / count(`saham`.`kode_perusahaan`)) AS `middle`,`saha m`.`kode_perusahaan` AS `kode`,`saham`.`Tanggal` AS `Tanggal` from `saha m` where (`saham`.`kode_perusahaan` like _latin1'%%') group by `saham`.`kode_perusahaan` order by `saham`.`kode_perusahaan`,`saham`.`Tanggal`) */;
4.1.3 View cleaningbeli
View cleaningbeli berisi query untuk menghitung nilai garis lower bands, dimana nilai
lower bands merupakan hasil perhitungan yang menggunakan middle bands yang diambil
dari view temp.
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `cleaningbeli` AS (select `sh `.`kode_perusahaan` AS `kode_perusahaan`,`sh`.`Low` AS `Low`,round((`su b`.`middle` - (2 * sqrt(avg(((`sh`.`Close` - `sub`.`middle`) * (`sh`.`Close` -
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
`sub`.`middle`)))))),0) AS `lower_bands` from (`tem p` `sub` join `saham` `sh`) where (`sub`.`kode` = `sh`.`kode_peru sahaan`) group by `sh`.`kode_perusahaan` order by `sh`.`kode_perusaha an`,`sh`.`Tanggal`) */;
4.1.4 View cleaningjual
View cleaningbeli berisi query untuk menghitung nilai garis upper bands, dimana nilai
upper bands merupakan hasil perhitungan yang menggunakan middle bands yang diambil
dari view temp.
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `cleaningjual` AS (select `sh `.`kode_perusahaan` AS `kode_perusahaan`,`sh`.`High` AS `High`,round((` sub`.`middle` + (2 * sqrt(avg(((`sh`.`Close` - `sub`.`middle`) * (`sh`.` Close` - `sub`.`middle`)))))),0) AS `upper_bands` from (`tem p` `sub` join `saham` `sh`) where (`sub`.`kode` = `sh`.`kode_peru sahaan`) group by `sh`.`kode_perusahaan` order by `sh`.`kode_perusaha an`,`sh`.`Tanggal`) */;
4.1.5 View vdata
View vdata berisi query untuk menghitung ‘sinyalwarna’,
`sinyalekor`,`bobot_ekor`, `warna`, `warna_badan`.
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `vdata` AS (select `saham`.`k ode_perusahaan` AS `kode_perusahaan`,`saham`.`Tanggal` AS `Tanggal`,`s aham`.`Prev` AS `Prev`,`saham`.`High` AS `High`,`saham`.`Low` AS `L ow`,`saham`.`Close` AS `Close`,if((`saham`.`Close` > `saham`.`Prev`),round((((`saham`.`Close` - `saham`. `Prev`) / `saham`.`Close`) * 100),0),round((((`saham`.`Prev` - `saham`.`Close`) / `saham`.`Prev`) * 100),0)) AS `sinyalwarna`,if((`sa ham`.`Close` > `saham`.`Prev`),round((((`saham`.`Prev` - `saham`.` Low`) / `saham`.`Prev`) * 100),0),round((((`saham`.`Close` - `saham`.`Low`) / `saham`.`Close`) * 100),0)) AS `sinyalekor`,if((if( (`saham`.`Close` > `saham`.`Prev`),round((((`saham`.`Prev` - `saham`.` Low`) / `saham`.`Prev`) * 100),0),round((((`saham`.`Close` - `saham`.`Low`) / `saham`.`Close`) * 100),0)) > 3),_utf8'long',_utf8' short') AS `bobot_ekor`,(case when (`saham`.`Close` > `saham`. `Prev`) then _utf8'green' when (`saham`.`Prev` > `saham`.`Close` ) then _utf8'red' else _utf8'yellow' end) AS `warna`,if((if((`saham`. `Close` > `saham`.`Prev`),round((((`saham`.`Close` - `saham`. `Prev`) / `saham`.`Close`) * 100),0),round((((`saham`.`Prev` - `saham`.`Close`) / `saham`.`Prev`) * 100),0)) > 2),_utf8'long',_utf8's hort') AS `warna_badan` from `saham` where (`saham`.`kode_per usahaan` like _latin1'%%') group by `saham`.`kode_perusahaan` ord er by `saham`.`kode_perusahaan`,`saham`.`Tanggal`) */;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
4.1.6 View ekorwarnabeli
View ekorwarnabeli merupakan query untuk memberikan bobot terhadap gabungan
antara hasil kolom warna, bobot ekor dan warna badan yang diambil dari view vdata.
Pemberian bobot ini adalah peberian bobot untuk sinyal beli berdasarkan panjang ekor
dan warna candlestick
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `ekorwarnabeli` AS (select `vdata`.`kode_perusahaan` AS `kode_perusahaan`,(if( ((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'long ') and ((`vdata`.`bobot_ekor` = _utf8'short') or (`vdata`. `bobot_ekor` = _utf8'long'))),0,if(((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'long')),14,if(((((`vdata`.`warna` = _utf8'yel low') and (`vdata`.`warna_badan` = _utf8'short')) or (`vdata` .`warna_badan` = _utf8'long')) and (`vdata`.`bobot_ekor` = _utf8'long')),14,if(((`vdata`.`warna` = _utf8'green ') and (`vdata`.`warna_badan` = _utf8'long') and (`vdata`. `bobot_ekor` = _utf8'long')),15,if(((`vdata`.`warna` = _utf8'green ') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'long')),20,if(((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'short')),4,if(((((`vdata`.`warna` = _utf8'yel low') and (`vdata`.`warna_badan` = _utf8'short')) or (`vdata` .`warna_badan` = _utf8'long')) and (`vdata`.`bobot_ekor` = _utf8'short')),6,if(((`vdata`.`warna` = _utf8'green ') and (`vdata`.`warna_badan` = _utf8'long') and (`vdata`. `bobot_ekor` = _utf8'short')),10,if(((`vdata`.`warna` = _utf8'gree n') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'short')),8,1))))))))) * 0.01) AS `hasil_akhir ` from `vdata`) */;
4.1.7 View ekorwarnajual
View ekorwarnajual merupakan query untuk memberikan bobot terhadap gabungan
antara hasil kolom warna, bobot ekor dan warna badan yang diambil dari view vdata.
Pemberian bobot ini adalah peberian bobot untuk sinyal jual berdasarkan panjang ekor
dan warna candlestick
/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ `localhost` SQL SECURITY DEFINER VIEW `ekorwarnajual` AS (select `vdata`.`kode_perusahaan` AS `kode_perusahaan`,(if( ((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'long ') and (`vdata`.`bobot_ekor` = _utf8'long')),15,if(((`vdat a`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'long ') and (`vdata`.`bobot_ekor` = _utf8'short')),10,if(((`vda ta`.`warna` = _utf8'green') and (`vdata`.`warna_badan` = _utf8'lo ng') and ((`vdata`.`bobot_ekor` = _utf8'short') or (`vdata`. `bobot_ekor` = _utf8'long'))),0,if(((`vdata`.`warna` = _utf8'red') and
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
(`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'long')),20,if(((((`vdata`.`warna` = _utf8'yel low') and (`vdata`.`warna_badan` = _utf8'short')) or (`vdata` .`warna_badan` = _utf8'long')) and (`vdata`.`bobot_ekor` = _utf8'long')),14,if(((`vdata`.`warna` = _utf8'green ') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'long')),14,if(((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'short')),8,if(((((`vdata`.`warna` = _utf8'yel low') and (`vdata`.`warna_badan` = _utf8'short')) or (`vdata` .`warna_badan` = _utf8'long')) and (`vdata`.`bobot_ekor` = _utf8'short')),6,if(((`vdata`.`warna` = _utf8'green ') and (`vdata`.`warna_badan` = _utf8'short') and (`vdata` .`bobot_ekor` = _utf8'short')),4,1))))))))) * 0.01) AS `hasil_akhir (%)` from `vdata`) */;
4.1.8 Stored Procedured persenKeluar
Potongan stored procedured dibawah adalah query untuk menghitung besar nilai yang
keluar dari garis lower bands.baik itu nilai prev,close, high ataupun low.Keempat nilai
tersebut ditotal maka akan terlihat besar nilai yang keluar dari garis lower bands.
DELIMITER $$ /*!50003 CREATE DEFINER=`root`@`localhost` PROCEDUR E `persenKeluar`(in KD varchar(10)) BEGIN select distinct kode_perusahaan,nm_perusahaan, (case when if (Prev > round(sub.middle-(2* SQ RT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((round(sub.middle-(2* SQRT(avg(( sh.close-sub.middle)*(sh.close-sub.middle)))))-Prev)/ round(sub.middle-(2* SQRT(avg((sh. close-sub.middle)*(sh.close-sub.middle))))))*100)) + if (High > round(sub.middle-(2* SQ RT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((round(sub.middle-(2* SQRT(avg(( sh.close-sub.middle)*(sh.close-sub.middle)))))-High)/ round(sub.middle-(2* SQRT(avg((sh. close-sub.middle)*(sh.close-sub.middle))))))*100)) + if (Low > round(sub.middle-(2* SQR T(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((round(sub.middle-(2* SQRT(avg(( sh.close-sub.middle)*(sh.close-sub.middle)))))-Low)/ round(sub.middle-(2* SQRT(avg((sh. close-sub.middle)*(sh.close-sub.middle))))))*100)) + if (Close > round(sub.middle-(2* S QRT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((round(sub.middle-(2* SQRT(avg(( sh.close-sub.middle)*(sh.close-sub.middle)))))-Close)/ + round(sub.middle-(2* SQRT(avg((sh. close-
sub.middle)*(sh.close-sub.middle))))))*100)) 'perse n_keluar (%)'
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
from (select (SUM(Close)/COUNT(kode_per usahaan)) 'middle',kode_perusahaan 'kode' ,Tanggal from saham WHERE kode_perusahaan LIKE KD group by kode_perusahaan order by kode_perusahaan desc, Tan ggal desc)sub , saham sh where sub.kode = sh.kode_perusahaan group by sh.kode_perusahaan order by sh.kode_perusahaan desc, sh.Tanggal desc,'persen_keluar (%)' desc; END */$$ DELIMITER ;
4.1.9 Stored Procedured persenKeluarJual
Potongan stored procedured dibawah adalah query untuk menghitung besar nilai yang
keluar dari garis upper bands. baik itu nilai prev,close, high ataupun low.Keempat nilai
tersebut ditotal maka akan terlihat besar nilai yang keluar dari garis lower bands.
DELIMITER $$ /*!50003 CREATE DEFINER=`root`@`localhost` PROCEDUR E `persenKeluarJual`(in KDJUAL varchar(10)) BEGIN select kode_perusahaan,nm_perusahaan, (case when if (Prev < round(sub.middle+(2* SQRT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((Prev-round(sub.middle+(2* SQRT(avg((sh.close-sub .middle)*(sh.close-sub.middle))))))/Prev)*100)) + if (High < round(sub.middle+(2* SQRT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((High-round(sub.middle+(2* SQRT(avg((sh.close-sub .middle)*(sh.close-sub.middle))))))/High)*100)) + if (Low < round(sub.middle+(2* SQRT(avg((sh.close-sub.middle)*(sh.close-sub.middle))))),0, (((Low-round(sub.middle+(2* SQRT(avg((sh.close-sub. middle)*(sh.close-sub.middle))))))/Low)*100)) + if (Close < round(sub.middle+(2* SQRT(avg((sh.close -sub.middle)*(sh.close-sub.middle))))),0, (((Close-round(sub.middle+(2* SQRT(avg((sh.close-su b.middle)*(sh.close-sub.middle))))))/Close)*100)) 'bobot final (%)' from (select (SUM(Close)/COUNT(kode_per usahaan)) 'middle',kode_perusahaan 'kode' ,Tanggal from saham WHERE kode_perusahaan LIKE KDJUAL group by kode_perusahaan order by kode_perusahaan desc, Tan ggal desc)sub , saham sh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
where sub.kode = sh.kode_perusahaan group by sh.kode_perusahaan order by sh.kode_perusahaan desc, sh.Tanggal desc; END */$$ DELIMITER ;
4.1.10 Volume
Potongan program bibawah adalah query untuk menghitung bobot volume.
Select (SUM(Volume/500)/COUNT(kode_perusahaan))'rata_vol', (Volume/500)'VOL_PERSATUAN',(select 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan))'vol_pe rbandingan' from saham where kode_perusahaan like " + temp.get(i) + "' group by kode_perusahaan)'VOL_PERBANDINGAN',kode_pe rusahaan , sum(IF ((Volume/500)>(select 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) from saham where kode_perusahaan like " + temp.get(i) + "' group by kode_perusahaan),1,0))'Jumlah_liquid', (sum(IF ((Volume/500)>(select 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) from saham where kode_perusahaan like " + temp.get(i) + "' group by kode_perusahaan),1,0))/20*100)'hasil' from saham WHERE kode_perusahaan LIKE " + temp.get(i) + "' GROUP BY kode_perusahaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
4.2 Hasil Implementasi dan Pembahasan
� Halaman Utama
Form halaman utama pada program, pengguna memilih tanggal, periode, indeks saham,
rekomendasi jual atau beli, dan pemilihan bobot kriteria.
o Tanggal : pemilihan tanggal sebaiknya dipilih sesuai dengan tanggal hari ini,
pemilihan tanggal pada saat ini berguna untuk memprediksi rekomendasi saham
beli atau jual pada hari ini.
o Periode : pemilihan periode di jComboBox terdapat dua pilihan yaitu 20 dan 22.
Pemilihan periode berarti data saham yang digunakan yaitu data saham pada saat
pemilihan tanggal saat ini sampai 20 hari kebelakang ataupun 22 hari kebelakang.
o Indeks saham : pemilihan indeks saham di jComboBox terdapat dua pilihan yaitu
LQ45 dan Regular.LQ45 ataupun Regular merupakan pengelompokan jenis
saham.
o Pemilihan rekomendasi : pemilihan rekomendasi di jRadioButton memungkinkan
pengguna untuk memilih rekomendasi yang diinginkan.Apakah pengguna ingin
rekomendasi untuk membeli saham ataupun untuk menjual saham.
o Pemilihan Bobot : Pemilihan bobot kriteria dapat dipilih sesuai dengan keinginan
pengguna. Maksimal jumlah pilihan ketiga kriteria adalah 100. Ketiga kriteria
tersebut untuk menghitung hasil rekomendasi.
Setelah pengguna memilih pilihan dalam program rekomendasi kemudian menekan
tombol proses maka program akan melakukan perhitungan terhadap data yang dipilih
pengguna, kemudian akan mengeluarkan output hasil rekomendasi jual ataupun beli.
Selain memilih pilihan rekomendasi, pada halaman utama program juga terdapat form
“bantuan” dan “about”
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 4.1 Form Halaman Utama
Program dapat memudahkan pengguna dalam memilih saham menurut kategori indeks.
Jika dalam virtual trading tidak ada pengelompokan saham berdasarkan jenis, dalam
program ini pemilihan saham rekomendasi jual maupun beli dikelompokkan menjadi 2
yaitu Regular dan LQ45
Gambar 4.2. Pilih indeks saham dalam program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Hasil output program seperti terlampir dibawah ini, jenis saham yang ditampilkan
merupakan jenis indeks saham yang dipilih pengguna.
Gambar 4.3. Output program sesuai dengan jenis indeks saham yang dipilih
Gambar 4.4. Pilih saham didalam virtual trading
Program memberikan fasilitas kepada pengguna untuk bebas menentukan bobot kriteria
dalam penentuan hasil rekomendasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Gambar 4.5. Pemilihan bobot kriteria pada program
� Form About
Gambar 4.6. Form About
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
� Form Bantuan
Form bantuan berisi tentang petunjuk untuk pengguna tentang program bantu tersebut
Gambar 4.7. Form Bantuan
� Message Dialog jika belum memilih Rekomendasi Jual atau Beli
Message Dialog pilih rekomendasi ini akan keluar jika pengguna belum memilih
rekomendasi jual atau beli tetapi sudah menekan tombol proses
Gambar 4.8. Message Dialog Pilih Rekomendasi
� Message Dialog jika proses prediksi selesai
Message Dialog ini akan keluar jika pengguna sudah menekan tombol proses kemudian
sistem akan menghitung pilihan yang dimasukan pengguna, jika proses selesai, sebelum
keluar hasilnya akan muncul message dialog proses selesai terlebih dahulu
Gambar 4.9. Message Dialog Proses Selesai
� Form Hasil Rekomendasi
Hasil rekomendasi yang muncul terdapat dua jenis.Jika pengguna memilih rekomendasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
jual maka akan keluar output rekomendasi jual, tetapi jika pengguna memilih
rekomendasi beli maka akan muncul rekomendasi beli. Ada tujuh kolom yang
dimunculkan dalam output program yaitu kolom kode perusahaan, nama perusahaan,
nilai prev, nilai % keluar, nilai panjang ekor candlestick, nilai volume, dan hasil
rekomendasi.Besar kecilnya hasil dari tiga kriteria (nilai % keluar, nilai panjang ekor
candlestick, nilai volume) tergantung dari pilihan pengguna. Kolom hasil rekomendasi
merupakan jumlah dari ketiga kriteria, kolom hasil rekomendasi juga telah diurutkan dari
bobot yang terbesar ke kecil.Bobot nilai yang besar merupakan saham yang
direkomendasikan.
Gambar 4.10. Form Hasil Rekomendasi
� Form Grafik Bollinger Bands
Form Grafik Bollinger Bands akan muncul jika kolom dalam output diklik.Sebagai
contoh apabila diklik pada baris pertama dengan kode perusahaan PGAS, maka akan
muncul grafik Bollinger Bands untuk PGAS.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
Gambar 4.11. Form Grafik Bollinger Bands
4.3 Pengujian dan Analisis
4.3.1 Pengujian Perangkat Lunak
Hasil pengujian perangkat lunak dalam menghasilkan sinyal jual maupun sinyal beli.
• Program dapat menampilkan garis upper bands,middle bands, serta lower bands
yang digunakan dalam perhitungan Indikator Bollinger Bands.Garis upper
bands, middle bands, dan lower bands pada program sama dengan garis yang
terdapat dalam virtual trading.Grafik Bollinger Bands yang ditampilkan adalah
tanggal sinyal beli dan jual tanggal 5 mei 2010.Dalam grafik tersebut terdapat
candlestick didalam program yang tidak sesuai dengan di virtual.Hal tersebut
dikarenakan, nilai open yang di program tidak selalu sama dengan nilai open
pada virtual trading. Sehingga pada program, nilai open yang lebih besar dari
high disamakan nilainya seperti high, dan nilai open yang lebih kecil daripada
low disamakan nilainya seperti low.
� BBCA (Bank Central Asia Tbk)
Gambar 4.12. Grafik Bollinger Bands sinyal beli dari virtual trading
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Gambar 4.13. Grafik Bollinger Bands sinyal beli dari program
4.3.2 Analisis
4.3.2.1 Rata-rata Keuntungan Beli dan Jual Menggunakan Indikator Bollinger
Bands
Analisis ini bertujuan untuk mengetahui keuntungan dan kerugian yang didapat
apabila melakukan pembelian pada saat muncul sinyal beli, dan melakukan penjualan
pada saat muncul sinyal jual berdasarkan Indikator Bollinger Bands.
Parameter yang digunakan untuk perhitungan didalam sistem menggunakan tiga
parameter atau kriteria yaitu perhitungan nilai % keluar,perhitungan nilai panjang ekor
dan warna candlestick dan perhitungan nilai volume.Perhitungan nilai % keluar adalah
menghitung berapa % candlestick yang keluar dari gari Bollinger Bands, Perhitungan
nilai panjang ekor dan warna candlestick adalah menggabungkan perhitungan antara
berapa % panjang ekor dan warna badan, sedangkan perhitungan volume adalah
penghitungan rata-rata volume selama 20 hari kebelakang.
Dalam analisis ini digunakan empat perusahaan yang termasuk dalam LQ45,yaitu
: Adaro Energy Tbk (ADRO), Perusahaan Gas Negara (PGAS), Indika Energy (INDY),
dan Lippo Karawaci (LPKR). Data saham yang digunakan adalah data saham harian
antara bulan April sampai Desember.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Berikut ini sinyal-sinyal Bollinger Bands yang menunjukan rekomendasi beli dan jual.
� ADRO (Adaro Energy Tbk)
Rekomendasi beli pada tanggal 06/05/2010
Gambar 4.14. Rekomendasi beli ADRO
Gambar 4.15. Grafik sinyal beli ADRO
Rekomendasi Jual pada tanggal 23/06/2010
Gambar 4.16. Rekomendasi jual ADRO
Gambar 4.17. Grafik sinyal jual ADRO
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Gambar 4.18. Grafik sinyal beli ADRO
Rekomendasi Beli perusahaan Adro pada tanggal 6 mei 2010, lalu dijual pada
tanggal 23 juni 2010. Tapi pada tanggal 24 ,23, dan 22 mei Indikator Bollinger Bands
merekomendasikan Beli. Indikator Bollinger Bands merekomendasikan untuk membeli
beberapa kali sebelum akhirnya dijual. Rekomendasi Bollinger Bands tidak terlalu
menguntungkan jika rekomendasi beli harus berpasangan dengan rekomendasi jual.
Dibawah ini merupakan keterangan dari setiap kolom dalam tabel.
� Kolom A = Tanggal yang menunjukan sinyal beli
� Kolom B = Harga tertinggi pada tanggal sinyal beli
� Kolom C = Harga terendah pada tanggal sinyal beli
� Kolom D = Harga tengah sinyal beli ( rata-rata dari kolom B dan kolom C)
� Kolom E = Tanggal yang menunjukkan sinyal jual
� Kolom F = Harga tertinggi pada tanggal sinyal jual
� Kolom G = Harga terendah pada tanggal sinyal jual
� Kolom H = Harga tengah sinyal jual (rata-rata dari kolom F dan kolom G)
� Kolom I = Selisih kolom H dan kolom D
ADRO (Adaro Energy Tbk)
Tgl Beli (A)
Harga Tertinggi (B)
Harga Terendah (C)
Harga Tengah (D)
Tgl Jual (E)
Harga Tertinggi (F)
Harga Terendah (G)
Harga Tengah (H)
Gain (%) (I)
06/05/2010 2025 1930 1977.5 23/06/2010 2025 1990 2007.5 30 (1.5)
02/09/2010 1880 1760 1820 09/12/2010 2650 2575 2612.5 792.5 (43.5)
Rata-rata 411.3 (22.5)
Tabel 4.1. Rata-rata Beli – Jual ADRO
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
� PGAS (Perusahaan Gas Negara Tbk)
Rekomendasi Beli pada tanggal 06/09/2010
Gambar 4.19. Rekomendasi beli PGAS
Gambar 4.20 Grafik sinyal beli PGAS
Rekomendasi jual pada tanggal 04/11/2010
Gambar 4.21 Rekomendasi jual PGAS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Gambar 4.22 Grafik sinyal jual PGAS
PGAS (Perusahaan Gas Negara Tbk)
Tgl Beli (A)
Harga Tertinggi (B)
Harga Terendah (C)
Harga Tengah (D)
Tgl Jual (E)
Harga Tertinggi (F)
Harga Terendah (G)
Harga Tengah (H)
Gain(%) (I)
12/04/2010 4025 3925 3975 08/07/2010 4125 4050 4087.5 112.5 (2.8)
06/09/2010 3900 3750 3837.5 04/11/2010 4350 4200 4275 437.5 (11.4)
Rata-rata 275 (7.1)
Tabel 4.2 Rata-rata Beli – Jual PGAS
� INDY (Indika Energy Tbk)
Rekomendasi Beli pada tanggal 06/05/2010
Gambar 4.23 Rekomendasi beli INDY
Gambar 4.24 Grafik sinyal beli INDY
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Rekomendasi Jual pada tanggal 27/07/2010
Gambar 4.25 Rekomendasi jual INDY
Gambar 4.26 Grafik sinyal jual INDY
INDY (Indika Energy Tbk)
Tgl Beli (A)
Harga Tertinggi (B)
Harga Terendah (C)
Harga Tengah (D)
Tgl Jual (E)
Harga Tertinggi (F)
Harga Terendah (G)
Harga Tengah (H)
Gain(%) (I)
06/05/2010 2825 2650 2737.5 27/07/2010 3325 3200 3262.5 525 (19.2)
27/09/2010 3275 3175 3225 04/11/2010 3750 3675 3712.5 487.5 (15.1)
Rata-rata 506.3 (17.2)
Tabel 4.3 Rata-rata Beli – Jual INDY
� LPKR (Lippo Karawaci Tbk)
Rekomendasi Beli pada tanggal 03/05/2010
Gambar 4.27 Rekomendasi beli LPKR
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Gambar 4.28 Grafik sinyal beli LPKR
Rekomendasi Jual pada tanggal 21/06/2010
Gambar 4.29 Rekomendasi jual LPKR
Gambar 4.30 Grafik sinyal jual LPKR
Gambar 4.31 Grafik sinyal beli LPKR
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Rekomendasi beli LPKR pada tanggal 3 mei 2010, rekomendasi jual pada
tanggal 21 juni 2010. Pada tanggal 4 mei sampai tanggal 1 juni ada beberapa kali
rekomendasi beli. Sebelum melakukan penjualan, Indikator Bollinger Bands
merekomendasikan untuk melakukan pembelian beberapa kali, hal trsebut
menunjukkan kalau Indikator Bollinger tidak terlalu untung jika rekomendasi beli dan
jual selalu berpasangan.
LPKR (Lippo Karawaci Tbk)
Tgl Beli (A)
Harga Tertinggi (B)
Harga Terendah (C)
Harga Tengah (D)
Tgl Jual (E)
Harga Tertinggi (F)
Harga Terendah (G)
Harga Tengah (H)
Gain (%) (I)
03/05/2010 580 560 570 21/06/2010 560 520 540 -30 (-5.3)
03/09/2010 500 485 492.5 08/10/2010 700 670 685 192.5(39.1)
Rata-rata 81.25 (16.9)
Tabel 4.4 Rata-rata Beli – Jual LPKR
SAHAM FREKUENSI BELI/JUAL
LAMA HARI KEUNTUNGAN RATA-RATA
ADRO 2 32 63
22.5%
PGAS 2 61 38
7.1%
INDY 2 56 29
17.2%
LPKR 2 33 20
16.9%
Rata-rata 15.9% Tabel 4.5 Frekuensi Beli – Jual dan Keuntungan
Indikator Bollinger Bands sebagian besar akan memberikan keuntungan jika
pembelian dan penjualan dilakukan sesuai dengan rekomendasi Indikator Bollinger
Bands, namun rentang waktu yang digunakan antara rekomendasi beli dan jual cukup
lama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
4.3.2.2 Perubahan Harga 1-2 Hari Setelah Sinyal Beli
Untuk mengetahui berapa persen perubahan harga 1-2 hari setelah munculnya
sinyal beli. Dibawah ini terdapat keterangan kolom pada tabel.
� Kolom S = Harga tengah (rata-rata harga terendah dan tertinggi pada t +1)
� Kolom X = Harga tengah (rata-rata harga terendah dan tertinggi pada t +2)
• ADRO t = Tgl Beli
(A) Harga Tengah t
(D) Harga Tengah t +1(Gain / %)
(S)
Harga Tengah t +2(Gain / %)
(X) 06/05/2010 1977.5 1935(-42.5 / -2.1%) 1987.5 (+10 / 0.5%)
02/09/2010 1820 1830(+10 / 0.5%) 1900 (+80 / 4.4%)
Rata-rata (-16.25 / -0.8%) (+45 / 2.5%)
Tabel 4.6 Rata-rata Beli ADRO
• PGAS
t = Tgl Beli (A)
Harga Tengah t (D)
Harga Tengah t +1(Gain / %)
(S)
Harga Tengah t +2(Gain / %)
(X) 12/04/2010 3975 4012.5(+37.9/0.9%) 4112.5 (+137.5 / 3.5%)
02/09/2010 3837.5 3837.5(+0.0 / 0.0%) 4000 (+162.5 / 4.2%)
Rata-rata (+18.75 / 0.45%) (+150 / 3.9%)
Tabel 4.7 Rata-rata Beli PGAS
• INDY
t = Tgl Beli (A)
Harga Tengah t (D)
Harga Tengah t +1(Gain / %)
(S)
Harga Tengah t +2(Gain / %)
(X) 07/05/2010 2637.5 2700(+62.5 / 2.4%) 2737.5 (+100 / 3.8%)
27/09/2010 3225 3175(-50 / -1.6%) 3200(-25 / -0.8%)
Rata-rata (+6.3 / 0.4%) (+37.3 / 1.5%)
Tabel 4.8 Rata-rata Beli INDY
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
• LPKR
t = Tgl Beli (A)
Harga Tengah t (D)
Harga Tengah t +1(Gain / %)
(S)
Harga Tengah t +2(Gain / %)
(X) 11/05/2010 540 540(+0.0 / 0.0%) 540 (+0.0 / 0.0%)
03/09/2010 492.5 495(+2.5 / 0.5%) 495(+2.5 / 0.5%)
Rata-rata (+1.3 / 0.3%) (+1.3 / 0.3%)
Tabel 4.9 Rata-rata Beli LPKR
Saham Perubahan Harga Setelah 1
hari Sinyal Beli (%) Perubahan Harga Setelah 2 hari
Sinyal Beli (%)
ADRO -0.8 2.5
PGAS 0.45 3.9
INDY 0.4 1.5
LPKR 0.3 0.3
Rata-rata 0.1 2.05
Tabel 4.10 Perubahan Harga 1-2 hari Setelah Sinyal Beli
Perubahan harga yang terjadi setelah 1-2 hari sinyal beli menurut Bollinger Bands
yaitu bahwa rata-rata harga mengalami kenaikan sehingga akan memberikan keuntungan
yang meningkat. Perubahan harga semakin besar semakin memberikan keuntungan, dan
perubahan harga yang negatif berarti harga mengalami penurunan dan akan memberikan
kerugian.
4.3.2.3 Perubahan Harga Setelah Satu Hari Sinyal Jual
Analisis ini adalah untuk mengetahui perubahan harga setelah satu hari
munculnya sinyal jual. Analisis dengan Indikator Bollinger Bands ini menggunakan data
dari Indeks saham LQ45, yaitu Adaro Energy Tbk (ADRO), Perusahaan Gas Negara Tbk
(PGAS), Indika Energy Tbk (INDY), Lippo Karawaci Tbk (LPKR). Data saham yang
digunakan adalah data saham harian bulan April sampai Agustus 2010.
Dibawah ini merupakan keterangan dari setiap kolom dalam tabel.
� Kolom N = harga tengah (rata-rata dari harga tertinggi dan terendah
pada hari t + 1 )
� Kolom O = hasil selisih kolom N dan kolom H
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
• ADRO
t = Tgl Sinyal Jual (E)
Harga Tengah t (H)
Harga Tengah t +1 (N)
Gain(%) (O)
23/06/2010 2007.5 2020 12.5 (0.6)
09/12/2010 2612.5 2600 -12.5(-0.5)
Rata-rata 0.0(0.1)
Tabel 4.11 Rata-rata Jual ADRO
• PGAS
t = Tgl Sinyal Jual (E)
Harga Tengah t (H)
Harga Tengah t +1 (N)
Gain(%) (O)
08/07/2010 4087.5 3950 -137.5(-3.4) 04/11/2010 4275 4337.5 62.5(1.5)
Rata-rata -37.5 (-1.0)
Tabel 4.12 Rata-rata Jual PGAS
• INDY
t = Tgl Sinyal Jual (E)
Harga Tengah t (H)
Harga Tengah t +1 (N)
Gain(%) (O)
27/07/2010 3262.5 3287.5 25(0.8) 04/11/2010 3712.5 3787.5 75(2.0)
Rata-rata 50(1.4)
Tabel 4.13 Rata-rata Jual INDY
• LPKR
t = Tgl Sinyal Jual (E)
Harga Tengah t (H)
Harga Tengah t +1 (N)
Gain(%) (O)
21/06/2010 540 550 10(1.9) 08/10/2010 685 695 10(1.5)
Rata-rata 10(1.7)
Tabel 4.14 Rata-rata Jual LPKR
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
SAHAM PERUBAHAN HARGA RATA-RATA 1 HARI SETELAH SINYAL JUAL
ADRO 0.1%
PGAS -1.0%
INDY 1.4%
LPKR 1.7%
Rata-rata 0.55% Tabel 4.15 Perubahan harga setelah 1 hari sinyal jual
Perubahan harga rata-rata 1 hari setelah sinyal jual mengalami kenaikan sebesar
0.55%. Hal tersebut dimungkinkan karena data harga open yang dipakai dalam
penghitungan rekomendasi jual dengan Indikator Bollinger Bands tidak 100% valid.
4.3.2.4 Korelasi Antara Keuntungan dan Lama Hari
Perhitungan tersebut berguna untuk mengetahui korelasi antara lama hari waktu
beli dan waktu jual terhadap pendapatan keuntungan. Perhitungan korelasi menggunakan
Microsoft Office Excel 2003. Rumus yang digunakan
( =CORREL(Lama Hari;Gain)).
SAHAM LAMA HARI (hari)
GAIN (%)
ADRO 32 1.5
63 43.5
PGAS 61 2.8
38 11.4
INDY 56 19.2
29 15.1
LPKR 33 -5.3
20 39.1
Korelasi 0.12
Tabel 4.16 Korelasi Lama Hari dan Keuntungan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Korelasi Lama Hari dan Keuntungan
32; 1,5
63; 43,5
61; 2,8
38; 11,4
56; 19,229; 15,1
33; -5,3
20; 39,1
-10
0
10
20
30
40
50
0 10 20 30 40 50 60 70
Lama Hari
Gai
n (
%)
Gain
Gambar 4.32 Grafik Korelasi Lama Hari dan Keuntungan
Nilai korelasi antara lama hari waktu beli dan jual dengan keuntungan adalah
0.12, hal tersebut menunjukan bahwa lama hari dan keuntungan tidak berkorelasi.
4.4 Kelebihan Sistem
1. Program dapat menampilkan rekomendasi jual ataupun beli semua saham di
Indeks Regular ataupun LQ45 menurut Indikator Bollinger Bands
2. Hasil rekomendasi penghitungan dengan metode Bollinger Bands ditampilkan
dalam bentuk list, dan tidak semua ditampilkan.Hanya candlestick yang keluar
dari garis Bollinger Bands yang ditampilkan dalam list rekomendasi.Hasil
rekomendasi yang berupa list tersebut diurutkan dari nilai bobot yang besar ke
kecil.
3. Program dapat menampilkan candlestick beserta dengan garis Bollinger Bands
4.5 Kekurangan Sistem
1. Periode pada program hanya mempunyai dua pilihan, yaitu 20 dan 22 hari,
sehingga pengguna tidak bisa melakukan peramalan menggunakan periode lain
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
BAB V
PENUTUP
5.1 Kesimpulan
Kesimpulan yang dapat diperoleh dari penerapan program bantu pemilihan saham
dengan Indikator Bollinger Bands yaitu :
1. Pembelian dan penjualan saham berdasarkan Indikator Bollinger Bands,
terhadap 4 saham sampel selama bulan April sampai Desember akan
mendapatkan rata-rata keuntungan sebesar 15.9%
2. Perubahan harga yang terjadi setelah 1 hari sinyal beli menurut Indikator
Bollinger Bands adalah 0.1 %. Sedangkan perubahan harga 2 hari setelah
sinyal beli adalah 2.05%. Perubahan harga yang terjadi setelah 1-2 hari sinyal
beli menurut Bollinger Bands yaitu rata-rata harga mengalami kenaikan
sehingga akan memberikan keuntungan yang meningkat.
3. Harga saham sehari setelah sinyal jual akan mengalami kenaikan sebesar
0.55%. Hal ini kemungkinan disebabkan karena data yang didapat tidak 100%
valid.
4. Korelasi antara lama hari waktu beli dan jual dengan keuntungan adalah 0.12.
Hal ini berarti tidak ada hubungan antara lama hari dengan keuntungan..
5.2 Saran
Saran untuk pengembangan aplikasi yang akan datang yaitu :
1. Program tidak hanya dapat mengambil data saham harian tetapi dapat
mengambil data harga pada saat itu juga
2. Jenis Indeks saham tidak terbatas hanya indeks regular dan LQ45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
DAFTAR PUSTAKA
Fakhruddin, M., & Hadianto, Sopian. (2001). Perangkat dan model analisis investasi
dipasar saham. Jakarta:PT.Elex Media Komputindo.
Hendarto, Kusumarsono. (2005), Belajar Trading, Andi Yogyakarta, 87-103.
Salim, Lani. (2003). Analisis teknikal dalam perdagangan saham. Jakarta: PT.Elex
Media Komputindo.
Turban, Efraim. (1995). Decision Support System and Expert System. Pretice Hall,Inc.
Wangsamulya, Fabianto. (2006). Cara membaca candlestick.
http://articles.indobisnis3456.com/wp-content/uploads/2009/01/cara-membaca-
candlestick.pdf. Tanggal akses (12 februari 2009)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Lampiran
1. Listing Program Ambil Data
public void OpenURL(String URL) { try { System.out.println(URL); URL u = new URL(URL); URLConnection uc = null; uc = u.openConnection(); inputURL = new InputStreamReader(uc.get InputStream()); br = new BufferedReader(inputURL); setStatus(0); } catch (IOException ex) { System.out.println("error"); setStatus(1); } /** Method utk menutup file */ private void CloseURL() { try { inputURL.close(); } catch (IOException ex) { Logger.getLogger(Scanner.class.getName( )).log(Level.SEVERE, null, ex); } } /** Method utk ambil menguraikan string teks ut k dapatkan himpunan kata atau token dengan Scanner. Scanner bisa membedakan tipe primitif dan memil ah nilainya.. Return Vector data*/ public Vector Scanner(String URL, kontrolDB kDB , String nameFile, Calendar ca,int length) { OpenURL(URL); java.util.Vector Nilai = new java.util.Vect or(); if (getStatus() == 0) { System.out.println("------------------- --------------------Scanner-------------------------------------------"); String strLine = " "; //deklarasi variabel no perusahaan, nam a perushaan, nilai prev, nilai high, nilai low, nilai close String namaPer = " "; String nmPer1="",nmPer2="",nmPer3=""; double NoPerush = 0; BigDecimal Prev = null, High = null, Lo w = null, Close = null, Change = null, Volume = null; try { int i = 0; int AkhirDok = 0; while (((strLine = br.readLine()) ! = null)) { //karakter pemisah adalah spasi i++; Scanner scan = new Scanner(strL ine); //scan tiap kata pada file apak ah terdapat token int CountLong = 0;//counter utu k ambil 5 nilai yang akan digunakan u tuk perhitungan int CountKata = 0;//counter amb il kata utk nama //counter utk nilai no perush, prev, high, low, close int CountNo = 0; int countNmPer=0; int CountPrev = 0; int CountHigh = 0; int CountLow = 0; int CountClose = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
int CountChange = 0; int Countvolume = 0; //cek apakah kursor berada pada akhir dokumen if (scan.hasNext("Total")) { System.out.println("Total n eh"); AkhirDok = 1; } while (scan.hasNext() && i > 7 && AkhirDok == 0) { //membaca baris // untuk menscan dan mereplace k oma String Scanned = scan.next( ).replaceAll(",", ""); // untuk men-scan lagi dari ha sil scaned Scanner scaning = new Scann er(Scanned); // untuk membedakan tipe data nu mber if (scaning.hasNextBigDecim al() && CountLong < 7) { // System.out.println("scann ed :" + Scanned); if (CountNo == 0) { NoPerush = Double.p arseDouble(Scanned);//mengubah tipe data scanned jadi double CountNo = 1; } else if (CountPrev == 0) { Prev = BigDecimal.v alueOf(Long.parseLong(Scanned)); CountPrev = 1; } else if (CountHigh == 0) { High = BigDecimal.v alueOf(Long.parseLong(Scanned)); CountHigh = 1; } else if (CountLow == 0) { Low = BigDecimal.va lueOf(Long.parseLong(Scanned)); CountLow = 1; } else if (CountClose = = 0) { Close = BigDecimal. valueOf(Long.parseLong(Scanned)); CountClose = 1; } else if (CountChange == 0) { Change = BigDecimal .valueOf(Long.parseLong(Scanned)); CountChange = 1; } else if (Countvolume == 0) { Volume = BigDecimal .valueOf(Long.parseLong(Scanned)); Countvolume = 1; } CountLong++; } else if (scan.hasNext() & & CountKata <1) {// // mengambil 3 kata(dalam na ma perusahaan) namaPer = Scanned; //nmPer=Scanned; // System.out.println("scann ed :" + Scanned+"Count kata: "+CountKata); // volume = volume+" "+scan. next(); //Nilai.addElement(nama Per); //System.out.println("K ata : "+nmPer); CountKata++; } else if(scan.hasNext() && countNmPer <1) {//scan nama perusahaan kata ke 1 nmPer1 = Scanned; countNmPer++; } else if(scan.hasNext() && countNmPer <2) {//scan nama perusahaan kata ke 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
nmPer2 = Scanned; countNmPer++; }else if(scan.hasNext() && countNmPer <3) {//scan nama perusahaan kata ke 3 nmPer3 = Scanned; countNmPer++; } /*Scanned.findInLine("(\\d +) fish (\\d+) fish (\\w+) fish (\\w+)"); MatchResult result = s.mat ch(); for (int i=1; i<=result.gr oupCount(); i++) System.out.println(res ult.group(i); s.close(); */ } SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); int year = Integer.parseInt(sdf Year.format(ca.getTime())); Date dat = new Date(year, ca.ge tTime().getMonth(), ca.getTime().getDate()); if (CountNo != 0 && CountHigh ! = 0 && CountPrev != 0 && CountLow != 0 && CountClose != 0 && CountChange != 0 && Countvolu me != 0) { //System.out.println(NoPeru sh + " " + namaPer + " " + High + " " + Prev + " " + Low + " " + Close + " " + Change + " " + Volume); String per=nmPer1+" "+nmPer 2+" "+nmPer3; Object[] r = {NoPerush, nam aPer,per, Prev, High, Low, Close, Change, Volume, dat}; Nilai.addElement(r); //System.out.println("no pe r:"+NoPerush+" nama per:"+namaPer+" Length: "+length); //System.out.println("Panja ng "+length); // System.out.println("nmPe r : "+per); if (length==20 || length==2 2){//menyimpan 20/22 data pertama kDB.SimpanSaham(namaPer ,per, dat, Prev, High, Low, Close, Volume); kDB.SimpanGrafik(namaPe r,per, dat, Prev, High, Low, Close, Volume); }else {//menyimpan data ke 21/23-40/44 kDB.SimpanGrafik(namaPe r, per,dat, Prev, High, Low, Close, Volume); } //reset variabel namaPer = " "; per=""; CountNo = 0; CountPrev = 0; CountHigh = 0; CountLow = 0; CountClose = 0; CountChange = 0; Countvolume = 0; } } } catch (IOException ex) { Logger.getLogger(Scanner.class.getN ame()).log(Level.SEVERE, null, ex); } CloseURL(); } //CloseFile(); //System.out.println(Nilai.elementAt(1)); return Nilai; }
2. Listing Class kontrolDB package controler; import com.mysql.jdbc.CallableStatement;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
import java.math.BigDecimal; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; //import javax.swing.JOptionPane; public class kontrolDB { private koneksi konek; private String query; CallableStatement callst; private Object ex; private Object temp; private int batas = 0; public kontrolDB() { konek = new koneksi(); } public int SimpanSaham(String kode,String nmPer , Date tanggal, BigDecimal prev, BigDecimal high, BigDecimal low, BigDecimal close, BigDecimal vol) { int hasil = 0; query = "insert into saham(kode_perusahaan,nm_perusahaan,Tanggal,Prev,Hi gh,Low,Close,Volume) " + "values('" + kode + "','" + nmPer + "','" + tanggal + "'," + pre v + "," + high + "," + low + "," + close + "," + vol + ");"; // System.out.println(query); try { hasil = konek.getStmt().executeUpdate(q uery); } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.getNam e()).log(Level.SEVERE, null, ex); } return hasil; } public int SimpanHasil(String kode,String nmPer ,Double prev, double persenkeluar, double ekorwarna, double volume, double hasil) { int hasilnya = 0; query = "insert into hasil(kode_perusahaan ,nm_perusahaan,Prev,persen_keluar, " +"ekorwarna,volume,hasil) " + "valu es('" + kode + "','" + nmPer + "'," + prev + "," +"'" + persenkeluar + "'," + ekorwa rna + "," + volume + ","+ hasil + ");"; try { hasilnya = konek.getStmt().executeUpdat e(query); } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.getNam e()).log(Level.SEVERE, null, ex); } return hasilnya; } public int SimpanGrafik(String kode,String nmPe r, Date tanggal, BigDecimal prev, BigDecimal high, BigDecimal low, BigDecimal close, BigDecimal vol) { int hasil = 0; query = "insert into datagrafik(kode_perusahaan,nm_perusahaan,Tanggal,Pr ev,High,Low,Close,Volume) " + "values('" + kode + "','" + nmPer + "','" + tanggal + "'," + prev + "," + high + "," + low + "," + close + "," + vol + ");"; // System.out.println(query); try { hasil = konek.getStmt().executeUpdate(q uery); } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.getNam e()).log(Level.SEVERE, null, ex); } return hasil; } public ResultSet CleaningBeli() throws SQLExcep tion {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
String sql = "select * from cleaningbeli wh ere lower_bands > Low order by low desc";//nampilin kode_per,low,lower_bands ResultSet rs = konek.getStmt().executeQuery (sql); return rs; } public ResultSet CleaningJual() throws SQLExcep tion { String sql = "select * from cleaningjual wh ere upper_bands <High order by high desc"; ResultSet rs = konek.getStmt().executeQuery (sql); return rs; } public List getMidle() throws SQLException { List hasil = new ArrayList(); List temp = this.Volume(); int i = 0; while (temp.size() > i) { String sql = "{CALL persenKeluar('" + t emp.get(i) + "')}"; callst = (CallableStatement) konek.getK on().prepareCall(sql); ResultSet rs = null; rs = callst.executeQuery(); while (rs.next()) { List t = new ArrayList(); t.add(rs.getString(1));//kode perus ahaan t.add(rs.getString(2));//nama perus ahaan t.add(rs.getString(3));//prev t.add(rs.getString(4));//persen kel uar hasil.add(t); } i++; } return hasil; } public List getMidleJual() throws SQLException { List hasil = new ArrayList(); List temp = this.VolumeJual(); int i = 0; while (temp.size() > i) { String sql = "{CALL persenKeluarJual('" + temp.get(i) + "')}"; callst = (CallableStatement) konek.getK on().prepareCall(sql); ResultSet rs = null; rs = callst.executeQuery(); while (rs.next()) { List t = new ArrayList(); t.add(rs.getString(1));//kode t.add(rs.getString(2));//nama perus ahaan t.add(rs.getString(3));//persen kel uar t.add(rs.getString(4)); hasil.add(t); } i++; } return hasil; } public List EkorWarnaBeli() throws SQLException { List hasil = new ArrayList(); List temp = this.Volume();//isi kode per yg udah dcleaning int i = 0; while (temp.size() > i) { String sql = "select * from ekorwarnabe li where kode_perusahaan like '" + temp.get(i) + "' order by kode_perusahaan"; ResultSet rs1 = konek.getStmt().execute Query(sql); while (rs1.next()) { hasil.add(rs1.getString(2));//nilai ekor yg tampil sesuai dengan kode perusahaan yg uda dcleaning // System.out.println("ekor: "+ rs1. getString(2));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
} i++; } return hasil; } public List EkorWarnaJual() throws SQLException { List hasil = new ArrayList(); List temp = this.VolumeJual(); int i = 0; while (temp.size() > i) { String sql = "select * from ekorwarnaju al where kode_perusahaan like '" + temp.get(i) + "' order by kode_perusahaan"; ResultSet rs1 = konek.getStmt().execute Query(sql); while (rs1.next()) { hasil.add(rs1.getString(2)); } i++; } return hasil; } double hasil = 0; public void EmptyTable() { try { query = "truncate saham;"; konek.getStmt().execute(query); query = "truncate datagrafik;"; konek.getStmt().execute(query); } catch (SQLException ex) { ex.printStackTrace(); } } public void createTable(Integer x) { try { query = "drop table if exists batas;"; konek.getStmt().execute(query); query = "create table batas(batas int(2 ));"; konek.getStmt().execute(query); query = "insert into batas values("+x+" );"; konek.getStmt().executeUpdate(query); } catch (SQLException ex) { ex.printStackTrace(); } } public void createTableHasil() { try { query = "drop table if exists hasil;"; konek.getStmt().execute(query); query = "create table hasil(" + "kode_perusahaan varchar(50) DEFAULT NULL," + "nm_perusahaan varchar(100) N OT NULL," + "Prev double DEFAULT NULL," +"persen_keluar double DEFAULT NULL," +"ekorwarna double DEFAULT NULL ," +"volume double DEFAULT NULL," +"hasil double DEFAULT NULL);"; konek.getStmt().execute(query); } catch (SQLException ex) { ex.printStackTrace(); } } public List getHasil() throws SQLException { List hasil = new ArrayList(); String sql = "select * from hasil order by hasil desc"; ResultSet rs = konek.getStmt().executeQuery (sql); while (rs.next()) { List t = new ArrayList();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
t.add(rs.getString(1));//kode perusahaa n t.add(rs.getString(2));//nama perusahaa n t.add(rs.getString(3)); t.add(rs.getString(4));//persen keluar t.add(rs.getString(5));//ekorwarna t.add(rs.getString(6));//volume t.add(rs.getString(7));//hasil rekomend asi hasil.add(t); } return hasil; } public void dropHasil() { try { query = "drop table if exists hasil;"; konek.getStmt().execute(query); } catch (SQLException ex) { ex.printStackTrace(); } } public void dropTable() { try { query = "drop table if exists batas;"; konek.getStmt().execute(query); } catch (SQLException ex) { ex.printStackTrace(); } } public void setBatas(){ try { String sql = "select * from batas"; ResultSet rs = konek.getStmt().executeQ uery(sql); if (this.batas == 0) { while(rs.next()){ this.batas = rs.getInt(1); } } } catch (SQLException e) { e.getMessage(); } } public int getBatas(){ return this.batas; } public void PrevHigh() { try { query = "UPDATE saham " + "SET Prev = High , Prev = Prev " + "WHERE Prev>High;"; konek.getStmt().execute(query); } catch (Exception e) { // ex.printStackTrace(); } } public void PrevLow() { try { query = "UPDATE saham " + "SET Prev = low , Prev = Prev " + "WHERE Prev<Low;"; konek.getStmt().execute(query); } catch (Exception e) { // ex.printStackTrace(); } } public List HVolume() { int i = 0; List hasil = new ArrayList(); List temp = this.Volume();//manggil method bwhnya,yg ad kode per ud dcleaning. // System.out.println("isi vol: "+ this.Volu me());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
//'"+temp.get(i)+"' while (temp.size() > i) { try { query = "select case when" + " 90< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<100 then '25' " + "when 70< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<89 then '20' " + "when 50< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<69 then '15' " + "when 30< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<49 then '10' " + "when 20< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<39 then '5' " + "else '0' end * 0.01 'bobot _nilai_akhir' " + "from saham " + "WHERE kode_perusahaan LIKE '" + temp.get(i) + "' " + "GROUP BY kode_perusahaan"; ResultSet rs = konek.getStmt().exec uteQuery(query); while (rs.next()) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
hasil.add(rs.getString(1));//ni lai volume yg kode pernya ud dcleaning // System.out.println("volume: " + rs.getString(1)); } i++; } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.ge tName()).log(Level.SEVERE, null, ex); } } return hasil; } public List Volume() { ResultSet rs1 = null; List temp = new ArrayList(); try { rs1 = CleaningBeli(); while (rs1.next()) { temp.add(rs1.getString(1));//kode_p er yg dbwh lower nilainya } } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.getNam e()).log(Level.SEVERE, null, ex); } return temp; } public List HVolumeJual() { int i = 0; List hasil = new ArrayList(); List temp = this.VolumeJual(); while (temp.size() > i) { try { query = "select case when" + " 90< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<100 then '25' " + "when 70< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<89 then '20' " + "when 50< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " +
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
"where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<69 then '15' " + "when 30< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<49 then '10' " + "when 20< " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*100) " + "and " + "(sum(IF ((Volume/500)>(sel ect 0.2*(SUM(Volume/500)/COUNT(kode_perusahaan)) " + "from saham " + "where kode_perusahaan like '" + temp.get(i) + "' " + "group by kode_perusahaan), 1,0))/22*1)<39 then '5' " + "else '0' end * 0.01 'bobot _nilai_akhir' " + "from saham " + "WHERE kode_perusahaan LIKE '" + temp.get(i) + "' " + "GROUP BY kode_perusahaan o rder by volume desc"; ResultSet rs = konek.getStmt().exec uteQuery(query); while (rs.next()) { hasil.add(rs.getString(1)); } i++; } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.ge tName()).log(Level.SEVERE, null, ex); } } return hasil; } public List VolumeJual() { ResultSet rs1 = null; List temp = new ArrayList(); try { rs1 = CleaningJual(); while (rs1.next()) { temp.add(rs1.getString(1)); } } catch (SQLException ex) { Logger.getLogger(kontrolDB.class.getNam e()).log(Level.SEVERE, null, ex); } return temp; } public static void main(String[] args) { kontrolDB kdb = new kontrolDB(); } } 3. Listing class VisualChart package visual; //import controler.ControlerAmbilData; import controler.koneksi;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
//import controler.kontrolDB; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.SegmentedTimeline; import org.jfree.chart.labels.HighLowItemLabelGener ator; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.CandlestickRende rer; import org.jfree.chart.renderer.xy.XYLineAndShapeRe nderer; import org.jfree.data.general.DatasetChangeEvent; import org.jfree.data.general.DatasetChangeListener ; import org.jfree.data.xy.*; import java.awt.*; //import java.sql.SQLException; import java.sql.ResultSet; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; //import java.util.List; public class VisualChart{ //private static String kode="ENRG"; //private static int batas=20; public VisualChart(String title,String kode,Int eger batas){ //this.kode=kode; ChartFrame chartFrame = new ChartFrame(title , buildChart(kode,batas)); chartFrame.setSize(700,460); chartFrame.setVisible(true); } /*public static void main(String[] args) { ChartFrame chartFrame = new ChartFrame("Can dlestick & Bollinger Bands "+kode+"", buildChart(kode,batas)); chartFrame.setSize(700,460); chartFrame.setVisible(true); }*/ public static JFreeChart buildChart(String symb ol,int batas) { DateAxis domainAxis = new DateAxis ("Tanggal"); NumberAxis rangeAxis = new NumberAx is("Harga"); CandlestickRenderer priceRenderer = new Can dlestickRenderer(); XYDataset priceDataset = getData Set(symbol); //XYDataset priceDataset2 = getD ataSet2(symbol); XYLineAndShapeRenderer bbRenderer = new XYL ineAndShapeRenderer(true, false); XYDataset bbDataset = new BollingerBandsDataset((OHLCDataset)priceDataset,bat as ); XYPlot mainPlot = new XYPlot(priceDataset, domainAxis, rangeAxis, priceRenderer); //This is the code that adds the line data to the candlestick chart mainPlot.setRenderer(2, bbRenderer); mainPlot.setDataset (2, bbDataset); //Do some setting up, see the API Doc rangeAxis.setAutoRangeIncludesZero(false); domainAxis.setTimeline( SegmentedTimeline.n ewMondayThroughFridayTimeline() ); priceRenderer.setSeriesPaint(0, Color.BLACK ); priceRenderer.setSeriesToolTipGenerator(0, new HighLowItemLabelGenerator()); priceRenderer.setDrawVolume(false); bbRenderer.setSeriesPaint(0, Color.GREEN); bbRenderer.setSeriesPaint(1, Color.BLUE); bbRenderer.setSeriesPaint(2, Color.RED); // bbRenderer.setSeriesVisible(1, false); // Uncomment this line to remove the moving average (center line)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
return new JFreeChart(symbol, null, mainPlo t, false); } //protected static AbstractXYDataset getDataSet (String symbol) { protected static AbstractXYDataset getDataSet(S tring symbol) { java.util.List<OHLCDataItem> dataItems = ne w ArrayList<OHLCDataItem>(); //java.util.List<OHLCDataItem> dataItems2 = new ArrayList<OHLCDataItem>(); try { koneksi k=new koneksi(); String sql = "select * from datagrafik where kode_perusahaan='"+symbol+"'"; System.out.println(sql); ResultSet rs = k.getStmt().executeQuery (sql); DateFormat df = new SimpleDateFormat("y -M-d"); while (rs.next()) { Date date = df.parse(rs.getSt ring(9)); double open = Double.parseDoubl e(rs.getString(4)); double high = Double.parseDoubl e(rs.getString(5)); double low = Double.parseDoubl e(rs.getString(6)); double close = Double.parseDoubl e(rs.getString(7)); double volume = Double.parseDoubl e(rs.getString(8)); //System.out.println(date+" "+open) ; System.out.println( "Tgl: "+date+" Open: "+open+" Hight: "+high+" Low: "+low+" Close: "+close); OHLCDataItem item = new OHLCDataIte m(date, open, high, low, close, volume); // System.out.println("item "+ item ); dataItems.add(item); } } catch (Exception e) { e.printStackTrace(); } Collections.reverse(dataItems); OHLCDataItem[] data = dataItems.toArray(new OHLCDataItem[dataItems.size()]); // System.out.println("Data: "+data[0]); return new DefaultOHLCDataset(symbol, data) ; } private static class BollingerBandsDataset exte nds AbstractXYDataset implements DatasetChangeListener { protected OHLCDataset ohlcDataset; protected int maxLength;//batas protected int upperBandwidth; protected int lowerBandwidth; Double[] upperValues; Double[] lowerValues; Double[] averageValues; public BollingerBandsDataset(OHLCDataset oh lcDataset,int batas) { this(ohlcDataset, batas, 2, 2);// } public BollingerBandsDataset(OHLCDataset oh lcDataset, int maxLength, int upperBandwidth, int lowerbandwidth) { this.maxLength = maxLength;//batas this.upperBandwidth = upperBandwidth; this.lowerBandwidth = lowerbandwidth; System.out.println("maxlength grafik: " + this.maxLength); System.out.println("upper grafik: "+ th is.upperBandwidth); System.out.println("lower grafik: "+ th is.lowerBandwidth); this.setOhlcDataset(ohlcDataset);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
} public OHLCDataset getOhlcDataset() { return ohlcDataset; } public void setOhlcDataset(OHLCDataset ohlc Dataset) { if (this.ohlcDataset != null) this.ohlcDataset.removeChangeListen er(this); this.ohlcDataset = ohlcDataset; this.ohlcDataset.addChangeListener(this ); calculateBollingerBands(); fireDatasetChanged(); } protected void calculateBollingerBands() { int size = ohlcDataset.getItemCount(0); upperValues = new Double[size]; averageValues = new Double[size];//midd le lowerValues = new Double[size]; for(int i=maxLength, n = ohlcDataset.ge tItemCount(0) ; i<n ; i++){//maju per hari double sma = this.calculateSMA( i ) ;//middle double stdDev = this.calculateStdDe v( i, sma); averageValues[i] = sma;//middle upperValues [i] = sma+(stdDev * up perBandwidth);//middle+s lowerValues [i] = sma-(stdDev * lo werBandwidth); System.out.println("middle1: "+ ave rageValues[i]); System.out.println("i : "+ i);//i=2 0,i=21,dll... System.out.println("n : "+ n); } } protected double calculateSMA(int end) { double total = 0.0; for (int i = end-maxLength; i<end; i++ ) {//maxlength 20 terus, end yg tambah 20,hbl loping dr atas bru 21 total += getSourceValue(i);//nilai close selama i(20 ato 22) System.out.println("middle2 : "+ ge tSourceValue(i));//nilai close System.out.println("end : "+ end); } return total / maxLength; } protected double calculateStdDev(int end, double sma) { double stdDev = 0.0; double total = 0.0; for (int i = end-maxLength; i<end; i++ ) { double dev = getSourceValue(i) - sm a; total += (dev * dev); } total = (total / maxLength); stdDev = Math.sqrt(total); return stdDev; } protected double getSourceValue(int item){ return ohlcDataset.getCloseValue(0, ite m); } public int getSeriesCount() { return 3; } public Comparable getSeriesKey(int series) { switch (series) { case 0: return "Bollinger Bands Low er"; case 1: return "Bollinger Bands Ave rage";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
case 2: return "Bollinger Bands Upp er"; default : return null; } } public int getItemCount(int series) { return ohlcDataset.getItemCount(0); } public Number getX(int series, int item) { return ohlcDataset.getX(0, item); } public Number getY(int series, int item) { switch (series) { case 0: return lowerValues[item]; case 1: return averageValues[item]; case 2: return upperValues[item]; default : return null; } } public void datasetChanged(DatasetChangeEve nt event) { calculateBollingerBands(); fireDatasetChanged(); } } }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI