• Tidak ada hasil yang ditemukan

Implementasi program dan Pembuatan Database …

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`,`saham`.`kode_perusahaan` AS `kode`,`saham`.`Tanggal` AS `Tanggal` from `saham` 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((`sub`.`middle` - (2 * sqrt(avg(((`sh`.`Close` - `sub`.`middle`) * (`sh`.`Close` -

`sub`.`middle`)))))),0) AS `lower_bands` from (`temp` `sub` join `saham` `sh`) where (`sub`.`kode` = `sh`.`kode_perusahaan`) group by `sh`.`kode_perusahaan` order by `sh`.`kode_perusahaan`,`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 (`temp` `sub` join `saham` `sh`) where (`sub`.`kode` = `sh`.`kode_perusahaan`) group by `sh`.`kode_perusahaan` order by `sh`.`kode_perusahaan`,`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`.`kode_perusahaan` AS `kode_perusahaan`,`saham`.`Tanggal` AS `Tanggal`,`saham`.`Prev` AS `Prev`,`saham`.`High` AS `High`,`saham`.`Low` AS `Low`,`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((`saham`.`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'short') AS

`warna_badan` from `saham` where (`saham`.`kode_perusahaan` like _latin1'%%') group by `saham`.`kode_perusahaan` order by

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'yellow') 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'yellow') 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'green') 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(((`vdata`.`warna` = _utf8'red') and (`vdata`.`warna_badan` = _utf8'long') and

(`vdata`.`bobot_ekor` = _utf8'short')),10,if(((`vdata`.`warna` = _utf8'green') 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')),20,if(((((`vdata`.`warna` = _utf8'yellow') 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'yellow') 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` PROCEDURE `persenKeluar`(in KD varchar(10))

BEGIN

select distinct kode_perusahaan,nm_perusahaan, (case when

if (Prev > round(sub.middle-(2* SQRT(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* SQRT(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* SQRT(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* SQRT(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*

from

(select (SUM(Close)/COUNT(kode_perusahaan)) 'middle',kode_perusahaan 'kode' ,Tanggal

from saham

WHERE kode_perusahaan LIKE KD group by kode_perusahaan

order by kode_perusahaan desc, Tanggal 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` PROCEDURE `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-sub.middle)*(sh.close-sub.middle))))))/Close)*100)) 'bobot final (%)'

from

(select (SUM(Close)/COUNT(kode_perusahaan)) 'middle',kode_perusahaan 'kode' ,Tanggal

from saham

WHERE kode_perusahaan LIKE KDJUAL group by kode_perusahaan

order by kode_perusahaan desc, Tanggal desc)sub , saham sh

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_PER SATUAN',(select

0.2*(SUM(Volume/500)/COUNT(kode_perusahaan))'vol_perbandingan' from saham

where kode_perusahaan like " + temp.get(i) + "'

group by kode_perusahaan)'VOL_PERBANDINGAN',kode_perusahaan , 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

Dokumen terkait