BAB IV IMPLEMENTASI
Bab ini menjelaskan tentang implementasi perangkat lunak berdasarkan hasil analisis dan perancangan yang telah dibuat pada bab sebelumnya. Penjelasan mengenai implementasi perangkat lunak meliputi lingkungan implementasi, perangkat keras perangkat lunak yang digunakan, implementasi kelas, serta antarmuka perangkat lunak.
4.1 Lingkungan Implementasi PRStock dikembangkan pada lingkungan berbasis windows dengan menggunakan sistem operasi Microsoft Windows XP Professional Edition Service Pack 2. Selain itu lingkungan ini juga telah dilengkapi dengan .NET Framework 3.5.
4.2 Perangkat Keras Perangkat keras yang digunakan adalah seperangkat komputer dengan spesifikasi sebagai berikut: 1. Monitor
:
15”
2. CPU
:
Intel Pentium IV 2.4 GHz
3. Harddisk
:
120 GB
4. Kartu Grafis
:
GeForce2 MX 400 64 MB
5. Memori
:
512 MB DDR SDRAM
6. Perangkat Masukan
:
Tetikus, Papan Kunci
4.3 Perangkat Lunak PRStock dikembangkan menggunakan bahasa pemrograman Visual C# dengan kakas bantuan bantuan IDE Sharp Develop 2.2.1.2648. Pemilihan IDE ini dikarenakan kakas ini sifatnya Open Source dan memiliki fungsionalitas dan stabilitas yang tidak kalah dengan kakas lain yang sifatnya komersial. Selain itu kakas ini lebih ringan
IV-1
IV-2 dalam penggunaan prosesor dan memori dibandingkan dengan versi komersial sehingga saat pengembangan tidak ada hambatan dalam hal kecepatan proses, baik saat perancangan maupun saat kompilasi. Untuk memudahkan pembangunan grafik digunakan library pihak ketiga yaitu ZedGraph v514 untuk C# yang kompatibel dengan .NET 2.0. Library ini juga sifatnya Open Source dan dapat menampilkan grafik yang cukup lengkap walaupun tampilannya tidak semenarik versi komersial.
4.4 Batasan Implementasi Beberapa batasan dalam implementasi perangkat lunak PRStock adalah sebagai berikut : 1. Tidak semua data saham yang disediakan oleh situs Yahoo! Finance ditampilkan pada daftar pilihan pengunduhan saham saat pertama kali aplikasi dijalankan. Hal ini dikarenakan kesulitan dalam pengisian nama perusahaan karena tidak dicantumkan pada data saham yang di-download sehingga harus diisikan secara manual. Akan tetapi pengguna dapat menambahkan data saham yang baru pada bagian manajemen pengunduhan data dari perangkat lunak. Penambahan tersebut hanya dapat dilakukan jika file yang terkait data baru tersebut disediakan oleh situs Yahoo! Finance. 2. Grafik pergerakan harga saham hanya dapat ditampilkan dalam bentuk candlestick chart. 3. Laporan yang ditampilkan hanya meliputi kondisi overbought dan atau oversold serta tanggal terjadinya kondisi.
4.5 Implementasi Kelas Implementasi kelas-kelas didasarkan pada perancangan modul-modul perangkat lunak pada bab sebelumnya.
4.5.1 Kelas FormMain Kelas ini merupakan kelas antarmuka utama pada perangkat lunak PRStock. Pada kelas
ini
diimplementasikan
fungsi-fungsi
untuk
menggambar
grafik
dan
IV-3 menampilkan hasil analisis yang telah dilakukan. Selain itu, terdapat fungsi-fungsi lain yang menangani aksi pengguna, seperti meng-click tombol-tombol menu dan menempatkan pointer mouse di atas grafik data historis saham dan grafik hasil analisis saham. Tabel IV-1 Implementasi Kelas FormMain namespace PRStock { public partial class FormMain : Form { public static GraphController graphData; public static ConnectionController connection; public static List
overboughtIndex; public static List oversoldIndex; /* Konstruktor Kelas FormMain */ public FormMain() /* Fungsi yang menangani kejadian pada saat tombol "Draw Graph" diclick oleh pengguna */ private void btDraw_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Download Data" di-click oleh pengguna */ private void btDownload_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Connection Settings" di-click oleh pengguna */ private void btConnection_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat FormMain sorotan utama */ private void FormMain_Activated(object sender, EventArgs e)
mendapat
/* Fungsi untuk mengisi dan menampilkan report dari hasil analisis pada FormMain */ private void showSignalListBox() /* Fungsi untuk menampilkan data saham atau hasil analisis pada saat pengguna meletakkan pointer mouse di atas grafik data saham atau grafik hasil analisis saham */ private string MyPointValueHandler(ZedGraphControl control, GraphPane pane, CurveItem curve, int i) /* Fungsi untuk melakukan penggambaran data historis saham atau data hasil analisis ke dalam grafik */ private void drawGraph(ZedGraphControl zgControl, int type, string title) } }
4.5.2 Kelas FormDraw Kelas ini merupakan kelas antarmuka untuk pemilihan data saham yang akan dianalisis oleh pengguna. Kelas ini digunakan untuk menentukan data yang akan
IV-4 dimasukkan ke dalam GraphController yang terdapat pada kelas FormMain untuk kemudian dianalisis dan digambarkan ke dalam grafik. Tabel IV-2 Implementasi Kelas FormDraw namespace PRStock { public partial class FormDraw : Form { private List fileDesc = new List(); private string appDataPath = Application.StartupPath + "\\Data"; /* Konstruktor Kelas FormDraw */ public FormDraw() /* Fungsi yang menangani kejadian pada saat tombol "Confirm" diclick */ private void btConfirm_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Cancel" di-click */ private void btCancel_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat pengguna pilihan data saham */ private void cbFilePath_SelectedIndexChanged(object EventArgs e) /* Fungsi untuk melakukan penamaan dapat dipilih */ private void generateFileDescValue()
pada
masing-masing
mengganti sender, file
yang
/* Fungsi untuk menampilkan pilihan file yang dapat dipilih */ private void loadFilePathOption() } }
4.5.3 Kelas FormConnection Kelas ini merupakan kelas antarmuka untuk pengaturan koneksi perangkat lunak ke internet. Pada kelas ini diimplementasikan fungsi untuk menyimpan konfigurasi internet ke dalam ConnectionController yang terdapat pada kelas FormMain sesuai dengan pengubahan yang dilakukan pengguna.
IV-5 Tabel IV-3 Implementasi Kelas FormConnection namespace PRStock { public partial class FormConnection : Form { /* Konstruktor Kelas FormConnection */ public FormConnection() /* Fungsi yang menangani kejadian pada saat tombol "Confirm" diclick oleh pengguna */ private void btConfirm_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Cancel" di-click oleh pengguna */ private void btCancel_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat pengguna mengganti jenis koneksi ke internet */ private void rbProxy_CheckedChanged(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat pengguna mengganti jenis authentifikasi */ private void cbAunthentification_CheckedChanged(object sender, EventArgs e) /* Fungsi melakukan loading pengaturan ConnectionController */ private void loadSavedConfiguration()
yang
tersimpan
pada
} }
4.5.4 Kelas FormDownload Kelas ini merupakan kelas antarmuka untuk pengunduhan data historis perusahaan dari internet.
IV-6 Tabel IV-4 Implementasi Kelas FormDownload namespace PRStock { public partial class FormDownload : Form { public static string companyDataFilePath = Application.StartupPath + "/Data/companydata.txt"; public static List companyDesc = new List(); /* Konstruktor Kelas FormDownload */ public FormDownload() /* Fungsi yang menangani kejadian pada saat tombol "Download" diclick oleh pengguna */ private void btDownload_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Cancel" di-click oleh pengguna */ private void btCancel_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Add" di-click oleh pengguna */ private void btAdd_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Delete" di-click oleh pengguna */ private void btDelete_Click(object sender, EventArgs e) /* Fungsi untuk menampilkan pilihan perusahaan*/ private void loadCompanyNameOption() /* Fungsi untuk melakukan penamaan pada masing-masing perusahaan yang datanya dapat diunduh */ private void generateCompanyDescValue() /* Fungsi untuk melakukan pemerikasaan terhadap input dari pengguna */ private bool checkInputData(string name, Control day, Control month, Control year) } }
4.5.5 Kelas FormCompanyData Kelas ini merupakan kelas antarmuka untuk penambahan nama dan kode perusahaan agar dapat diakses oleh kelas FormDownload.
IV-7 Tabel IV-5 Implementasi Kelas FormCompanyData namespace PRStock { public partial class FormCompanyData : Form { private bool isNextLineNeeded = true; /* Konstuktor Kelas FormCompanyData */ public FormCompanyData() /* Fungsi yang menangani kejadian pada saat tombol "Confirm" diclick oleh pengguna */ private void btConfirm_Click(object sender, EventArgs e) /* Fungsi yang menangani kejadian pada saat tombol "Cancel" di-click oleh pengguna */ private void btCancel_Click(object sender, EventArgs e) /* Fungsi untuk menyimpan data yang telah dimasukkan pengguna ke dalam file */ private bool saveConfiguration() /* Fungsi untuk memeriksa apakah file penyimpan kosong atau tidak */ private void checkFile() } }
4.5.6 Kelas FormDownloadProgress Kelas ini merupakan kelas antarmuka untuk menampilkan proses pengunduhan data. Tabel IV-6 Implementasi Kelas FormDownloadProgress namespace PRStock { public partial class FormDownloadProgress : Form { private WebClient webConnectionClient; private WebProxy proxyConfiguration; private string filePath = Application.StartupPath + "/Data/StockData/"; private string fileName; private string address; private bool isDownloading = true; /* Konstruktor Kelas FormDownloadProgress */ public FormDownloadProgress(string f, string s) /* Fungsi untuk melakukan loading konfigurasi internet yang digunakan utuk pengunduhan */ private void loadProxyConfiguration() /* Fungsi untuk melakukan pengunduhan data historis saham */ private void downloadFile(string url, string name, string path) } }
IV-8
4.5.7 Kelas GraphController Kelas ini merupakan kelas controller dari kelas MyStock. Kelas ini menampung nama perusahaan, data-data harian saham perusahaan tersebut, periode perhitungan dengan metode WPR, dan tanggal pada saat keadaan overbought atau oversold terjadi. Pada kelas ini diimplementasikan fungsi untuk mengisi nilai %R ke dalam data saham. Tabel IV-7 Implementasi Kelas GraphController namespace PRStock { public class GraphController { private string companyName; private List<MyStock> stockList; private int period = 14; private bool isKosong = true; private PointPairList obDate; private PointPairList osDate; /* Konstruktor Kelas GraphController */ public GraphController() /* Konstruktor Kelas GraphController denga masukan */ public GraphController(string cn, List<MyStock> sl, int p) /* Fungsi untuk mengisi nilai %R pada masing-masing periode */ public void genPRValue() /* Fungsi yang mengembalikan nilai %R dari perhitungan terhadap nilai masukan */ private double calculatePR(double close, double highest, double lowest) /* Fungsi yang mengembalikan harga tertinggi dan harga terendah */ private double[] borderValue(int i) } }
4.5.8 Kelas ConnectionController Kelas ini merupakan kelas controller yang menampung konfigurasi koneksi perangkat lunak ke internet. Pada kelas ini diimplementasikan fungsi-fungsi untuk membaca konfigurasi yang tersimpan di dalam file dan menyimpan konfigurasi ke dalam file.
IV-9 Tabel IV-8 Implementasi Kelas ConnectionController namespace PRStock { public class ConnectionController { private string filePath; private bool isUsingProxy = false; private string serverName = ""; private int portNumber = 0; private bool isUsingAuthentification = false; private string userName = ""; private string password = ""; /* Konstruktor Kelas ConnectionController */ public ConnectionController(string fpath) /* Fungsi untuk membaca konfigurasi koneksi ke internet yang tersimpan di dalam file */ public void loadConfiguration() /* Fungsi untuk menyimpan konfigurasi koneksi ke internet ke dalam file */ public void saveConfiguration() } }
4.5.9 Kelas MyStock Kelas ini merupakan kelas struktur data utama dalam perangkat lunak PRStock. Kelas ini menampung tanggal, harga pembuka (open), harga penutup (close), harga tertinggi (high), harga terendah (close), volume perdagangan, serta nilai %R dari suatu periode perdagangan saham. Tabel IV-9 Implementasi Kelas MyStock namespace PRStock { public class MyStock { private DateTime date; private double open; private double close; private double high; private double low; private double volume; private double prValue; /* Konstruktor Kelas MyStock */ public MyStock() /* Konstruktor Kelas MyStock dengan masukan */ public MyStock(string s) } }
IV-10
4.6 Implementasi Antarmuka Berikut
adalah
antarmuka
dari
perangkat
lunak
PRStock
yang
telah
diimplementasikan.
4.6.1 Antarmuka Utama
Gambar IV-1 Antarmuka Utama
Seperti yang ditunjukkan pada Gambar IV-1, antarmuka utama terdiri atas 3 bagian utama, yaitu bagian penggambaran grafik, bagian menu, serta bagian reports yang berisi tanggal terjadinya keadaan overbought dan atau oversold. Pada bagian penggambaran grafik, grafik bagian atas menggambarkan pergerakan harga saham perusahaan di pasar saham. Sedangkan grafik bagian bawah menggambarkan hasil perhitungan metode WPR terhadap pergerakan harga saham di pasar saham. Pada Grafik bagian atas terdapat juga menu untuk menampilkan data pergerakan harga saham dalam bentuk tabel.
IV-11 Pada bagian menu, terdapat tiga tombol yang dapat di-click, yaitu tombol Draw Graph, Download Data, dan Connection Settings. Tombol Draw Graph apabila diclick akan menampilkan antarmuka penggambaran data saham. Tombol Download Data akan menampilkan antarmuka pengunduhan data saham dari internet apabila diclick. Sedangkan tombol Connection Settings apabila di-click akan menampilkan antarmuka pengaturan koneksi perangkat lunak PRStock ke internet. Bagian Reports terdiri atas dua kotak yang masing-masing berisi tanggal terjadinya keadaan overbought atau oversold, serta sebuah tombol untuk menampilkan antarmuka laporan sinyal beli dan jual yang direkomendasikan oleh perangkat lunak. Apabila pada hasil analisis tidak terdapat keadaan-keadaan tersebut, maka kotak tersebut akan kosong. Sama halnya dengan keadaan pada saat perangkat lunak pertama kali dieksekusi, bagian penggambaran dan bagian reports akan kosong karena belum ada data yang dianalisis. Antarmuka laporan laporan sinyal beli dan jual yang direkomendasikan oleh perangkat lunak ditunjukkan pada gambar IV-2.
Gambar IV-2 Antarmuka laporan sinyal jual dan beli
IV-12
4.6.2 Antarmuka Penggambaran Data Saham
Gambar IV-3 Antarmuka Penggambaran Data Saham
Gambar IV-3 menunjukkan antarmuka penggambaran data saham. Antarmuka ini ditampilkan pada saat pengguna meng-click tombol Draw Graph pada antarmuka utama. Pada antarmuka ini terdapat sebuah drop-down list yang dapat digunakan untuk memilih data saham yang ingin ditampilkan pada antarmuka utama serta textbox untuk memasukkan jumlah periode perhitungan yang akan digunakan untuk menganalisis data saham dengan metode WPR. Selain itu, terdapat juga textbox untuk memasukkan tingkat overbought dan oversold yang mempengaruhi sinyal yang dihasilkan pada hasil analisis.
IV-13
4.6.3 Antarmuka Pengunduhan Data Saham
Gambar IV-4 Antarmuka Pengunduhan Data Saham
Gambar IV-4 menunjukkan antarmuka pengunduhan data saham. Antarmuka ini ditampilkan pada saat pengguna meng-click tombol Download Data pada antarmuka utama. Pada antarmuka ini terdapat sebuah drop-down list yang dapat digunakan untuk memilih perusahaan yang data sahamnya yang ingin diunduh serta sejumlah textbox untuk memasukkan tanggal awal dan tanggal akhir dari data saham tersebut. Selain itu, pada antarmuka ini terdapat juga tombol Add untuk menambah informasi perusahaan serta tombol Delete untuk menghapus data perusahaan yang dipilih. Antarmuka penambahan informasi perusahaan ditunjukkan pada Gambar IV-5.
Gambar IV-5 Antarmuka Penambahan Informasi Perusahaan
Pada antarmuka ini terdapat dua textbox, yaitu Yahoo! Finance Code dan Company Name. Textbox Yahoo! Finance Code adalah textbox untuk menampung kode perusahaan yang data historis sahamnya disediakan oleh situs Yahoo! Finance. Sedangkan textbox Company Name adalah textbox untuk menampung nama perusahaan sesuai dengan kode yang dimasukkan.
IV-14
4.6.4 Antarmuka Pengaturan Koneksi Internet
Gambar IV-6 Antarmuka Pengaturan Koneksi Internet
Gambar IV-6 menunjukkan antarmuka pengunduhan data saham. Antarmuka ini ditampilkan pada saat pengguna meng-click tombol Connection Settings pada antarmuka utama.