• Tidak ada hasil yang ditemukan

Implementasi Manajemen Proses

BAB IV. IMPLEMENTASI DAN PEMBAHASAN

IV.2. Implementasi Manajemen Proses

Perancangan sistem yang sudah dilakukan, selanjutnya diimplementasikan ke dalam program. Untuk mendapatkan perusahaan yang sesuai dengan kriteria digunakan metode MACD. Yang digunakan dalam perhitungan MACD yaitu harga penutupan saham. Sebelum melakukan proses perhitungan, akan dilakukan pengecekan data yang tersedia dan mengambil data-data yang diperlukan untuk perhitungan. Dibawah ini contoh potongan program untuk mengambil data dari database.

lanjutkan% = 1

If lanjutkan% Then

If (periode_t1& > 0) And (periode_t2& > 0) And (periode_t2& > periode_t1&) Then

' ## cek jumlah data yang tersedia

string_perintah$ = "SELECT COUNT(*) FROM saham " _

+ "WHERE (kode_jenis = " +

Format(kode_jenis&, "#0") + ") " _

+ " AND (kode_perusahaan = '" + kode_perusahaan$ + "') " _

+ " AND (tanggal <= CURRENT_TIMESTAMP)"

jumlah_data& = SQLNilaiAgregat(db,

string_perintah$)

If jumlah_data& <= periode_t2& Then ' ## jumlah data tidak cukup nilai_balik& = erfDataTidakCukup lanjutkan% = 0

End If Else

' ## t1 dan/atau t2 tidak valid nilai_balik& = erfPeriodeTidakValid lanjutkan% = 0

End If End If

If lanjutkan% Then

' ## ambil data dari database berdasarkan kode perusahaan dan tanggal

offset_limit& = jumlah_data& - jmlh_limit& If offset_limit& < 0 Then offset_limit& = 0

string_perintah$ = "SELECT tanggal, hrg_buka,

hrg_rendah, hrg_tinggi, hrg_tutup, volume " _

+ "FROM saham WHERE (kode_jenis = " + Format(kode_jenis&, "#0") + ") " _

+ " AND (kode_perusahaan = '" +

kode_perusahaan$ + "') " _

+ " AND (tanggal <= CURRENT_TIMESTAMP) " _ + "ORDER BY tanggal " _

+ "LIMIT " + Format(offset_limit&, "#0") + ", " + Format(jmlh_limit&, "#0")

BukaRecordset db, RSData, string_perintah$ jumlah_baris& = RSData.RecordCount

IV.2.1 Menghitung SMA12 dan SMA26

Dengan menjumlahkan harga penutupan harian periode12 dan periode 26 yang disimpan dalam variablesum_hrttutup#. Setelah hasil penjumlahan didapat, dibagi periode 12 dan periode 26. Hasil perhitungan Simple Moving Average disimpan dalam variable nilai_rata2#. Contoh perhitungan Simple Moving Averagedapat dilihat pada potongan program di bawah ini.

Private Function HargaRata2#(Jumlah&)

' ## hitung rata-rata harga penutupan selama <Jumlah&> hari

If Jumlah > 0 Then For h& = 1 To Jumlah

sum_hrgtutup# = sum_hrgtutup# + hit(h&).h_tutup Next h&

nilai_rata2# = sum_hrgtutup# / Jumlah End If

HargaRata2 = nilai_rata2# End Function

IV.2.2 Menghitung EMA12 dan EMA26

Variable yang digunakan dalam perhitungan EMA adalah harga penutupan harian, exponential percentage, dan simple moving average. Perhitungan EMA yaitu harga penutupan periode 12 dan 26 dikalikan denganexponential percentage (2/periode+1) dan ditambahkan dengan hasil perhitungansimple moving average.

Private Function EMA#(n&, pt#, ma_t#) ' ## rumus EMA

EMA = (pt - ma_t) * (2 / (n + 1)) + ma_t End Function

hit(periode_t1&).ema_t1 = EMA(periode_t1&,

hit(periode_t1&).h_tutup, HargaRata2(periode_t1&))

hit(periode_t2&).ema_t2 = EMA(periode_t2&,

hit(periode_t2&).h_tutup, HargaRata2(periode_t2&)) For h& = periode_t1& + 1 To jumlah_baris&

If h& > periode_t1& Then

hit(h&).ema_t1 = EMA(periode_t1&, hit(h&).h_tutup, hit(h& -1).ema_t1)

End If

If h& >= periode_t2& Then If h& > periode_t2& Then

hit(h&).ema_t2 = EMA(periode_t2&, hit(h&).h_tutup, hit(h& -1).ema_t2)

End If

IV.2.3 Menghitung MACD

hit(h&).MACD = hit(h&).ema_t1 - hit(h&).ema_t2

IV.2.4 Menghitung SMA9

Cara perhitungannya sama dengan periode 12 dan periode 26, tapi tidak menggunakan harga penutupan harian melainkan menggunakan hasil perhitungan MACD. Hasil penjumlahan MACD periode 9 disimpan dalam variable jml_macd9hr#. Selanjutnya hasil penjumlahan MACD dibagi dengan periode 9. Hasil pembagiaannya disimpan dalam variable sma_9#.

jml_macd9hr# = jml_macd9hr# + hit(h&).MACD If h& = periode_t2& + 8 Then

sma_9# = jml_macd9hr# / 9

IV.2.5 Menghitung EMA9

Caranya dengan mengurangkan MACD dengan SMA periode 9 dikalikan dengan EP(2/(periode9+1) dan ditambahkan dengan SMA periode 9. Hasil perhitungan EMA periode 9 disimpan dalamarray hit(h&).ema_09.

If h& > periode_t2& + 8 Then

hit(h&).ema_09 = EMA(9, hit(h&).MACD, hit(h& - 1).ema_09) End If

IV.2.6 Menghitung Selisih dan Menentukan Rekomendasi Beli / Jual

Menghitung selisih dengan mengurangkan MACD dengan EMA periode 9. Hasil perhitungan selisih disimpan dalamarray hit(h&).selisih. Jika selisihnya positif mengindikasikan sinyal beli, dan jika selisihnya negatif mengindikasikan sinyal jual.

If h& >= periode_t2& + 8 Then

hit(h&).selisih = hit(h&).MACD

-hit(h&).ema_09

recomm$ = IIf(hit(h&).selisih < 0, "jual", "beli")

End If

IV.2.7 Menghitung Rata-rata Volume

Menghitung rata-rata volume dari setiap perusahaan. Hasil perhitungan rata-rata disimpan dalam variablemVolumeRata2.

jmlh_vol# = 0

For h& = 1 To jumlah_baris&

jmlh_vol# = jmlh_vol# + hit(h&).Volume Next h&

mVolumeRata2 = jmlh_vol# / jumlah_baris&

IV.2.8 Memberi Bobot Volume dan Gradien

Pemberian bobot gradien dengan mengalikan nilai gradien dengan (-10). Pemberian bobot volume dengan membandingkan volume dengan rata-rata volume. Untuk rekomendasi beli, pemberian bobotnya sebagai berikut :

-50 = volume > rata-rata + 50%

-25 = rata-rata + 10% < volume < rata-rata +50% 0 = rata-rata–10% < volume < rata-rata +10% 25 = rata-rata -50% < volume < rata-rata–10% 50 = volume < rata-rata - 50%

Untuk rekomendasi jual pemberian bobotnya sebagai berikut : 50 = volume > rata-rata + 50%

25 = rata-rata + 10% < volume < rata-rata +50% 0 = rata-rata–10% < volume < rata-rata +10% -25 = rata-rata -50% < volume < rata-rata–10% -50 = volume < rata-rata - 50%

Dibawah ini merupakan contoh potongan program pemberian bobot gradien dan volume.

skor_grad# = Gradien * -10

arah_volume% = IIf((UCase(Rekomendasi) = "BELI"), 1, -1) If Volume >= (1.5 * rata2vol#) Then

' ## volume >= (rata2vol + 50%) skor_volume# = -50 * arah_volume%

ElseIf ((1.1 * rata2vol#) <= Volume) And (Volume < (1.5 * rata2vol#)) Then

' ## (rata2vol + 10%) <= volume < (rata2vol + 50%) skor_volume# = -25 * arah_volume%

ElseIf ((0.9 * rata2vol#) <= Volume) And (Volume < (1.1 * rata2vol#)) Then

' ## (rata2vol - 10%) <= volume < (rata2vol + 10%) skor_volume# = 0

ElseIf ((0.5 * rata2vol#) <= Volume) And (Volume < (0.9 * rata2vol#)) Then

' ## (rata2vol - 50%) <= volume < (rata2vol - 10%) skor_volume# = 25 * arah_volume%

Else

' ## volume < (rata2vol - 50%) skor_volume# = 50 * arah_volume% End If

IV.2.9 Memberi Bobot Hasil Perhitungan MACD, Gradien, Volume

Untuk rekomendasi beli bobot MACD (0,5), gradient (0,2) dan volume (0,3). Untuk rekomendasi jual bobot MACD(0,5), gradient(0,3) dan volume (0,2). Selanjutnya masing-masing bobot tersebut dikalikan dengan nilai MACD, gradien dan volume. Kemudian semua hasil perkalian tersebut dijumlahkan. Hasil penjumlahan disimpan dalam variableskor_hasil#.

If Rekomendasi = "BELI" Then

Skor_hasil# = (0.5 * skor_macd#) + (0.2 * skor_grad#) + (0.3 * skor_volume#)

Else

Skor_hasil# = (0.5 * skor_macd#) + (0.3 * skor_grad#) + (0.2 * skor_volume#)

End If

IV.2.10 Mengurutkan Hasil Rekomendasi

Untuk rekomendasi beli, nilai skornya semakin negatif semakin direkomendasikan untuk dibeli. Untuk rekomendasi jual, nilai skornya semakin positif, semakin direkomendasikan untuk dijual.

If jml_hasil% > 0 Then

Select Case filter_rekom$ Case "BELI"

' ## urutkan hasil mulai dari skor terendah For i% = 1 To jml_hasil%

For j% = i% + 1 To jml_hasil%

If h_bobot(j%) < h_bobot(i%) Then n_bobot# = h_bobot(i%) h_bobot(i%) = h_bobot(j%) h_bobot(j%) = n_bobot# k_jenis& = kd_ktgr(i%) k_prshn$ = kd_prsh(i%) n_prshn$ = nm_prsh(i%) h_macd# = hsl_macd(i%) hsl_gradien# = h_gradien(i%) hsl_volume# = h_volume(i%) hsl_rata2# = h_rata2(i%) kd_ktgr(i%) = kd_ktgr(j%) kd_prsh(i%) = kd_prsh(j%) nm_prsh(i%) = nm_prsh(j%) hsl_macd(i%) = hsl_macd(j%) h_gradien(i%) = h_gradien(j%) h_volume(i%) = h_volume(j%) h_rata2(i%) = h_rata2(j%) kd_ktgr(j%) = k_jenis& kd_prsh(j%) = k_prshn$ nm_prsh(j%) = n_prshn$ hsl_macd(j%) = h_macd#

h_gradien(j%) = hsl_gradien# h_volume(j%) = hsl_volume# h_rata2(j%) = hsl_rata2# End If Next j% Next i% Case "JUAL"

' ## urutkan hasil mulai dari skor tertinggi For i% = 1 To jml_hasil%

For j% = i% + 1 To jml_hasil%

If h_bobot(j%) > h_bobot(i%) Then n_bobot# = h_bobot(i%) h_bobot(i%) = h_bobot(j%) h_bobot(j%) = n_bobot# k_jenis& = kd_ktgr(i%) k_prshn$ = kd_prsh(i%) n_prshn$ = nm_prsh(i%) h_macd# = hsl_macd(i%) hsl_gradien# = h_gradien(i%) hsl_volume# = h_volume(i%) hsl_rata2# = h_rata2(i%) kd_ktgr(i%) = kd_ktgr(j%) kd_prsh(i%) = kd_prsh(j%) nm_prsh(i%) = nm_prsh(j%) hsl_macd(i%) = hsl_macd(j%) h_gradien(i%) = h_gradien(j%) h_volume(i%) = h_volume(j%) h_rata2(i%) = h_rata2(j%) kd_ktgr(j%) = k_jenis& kd_prsh(j%) = k_prshn$ nm_prsh(j%) = n_prshn$ hsl_macd(j%) = h_macd# h_gradien(j%) = hsl_gradien# h_volume(j%) = hsl_volume# h_rata2(j%) = hsl_rata2# End If

IV.3 Implementasi Manajemen Dialog

Dokumen terkait