B-21
9. Gudang Garam, periode 25 hari
Gambar B-21 Grafik Failure Swing Gudang Garam (25 hari) Tabel B-21 Hasil Pengujian Failure Swing dengan Gudang Garam (25 hari) Sinyal Benar Salah Failure Swing Akurasi
1
2 1/3 = 33,33%
B-22
10. Telekomunikasi Indonesia, periode 9 hari
Gambar B-22 Grafik Failure Swing Telekomunikasi Indonesia (9 hari) Tabel B-22 Hasil Pengujian Failure Swing dengan Telekomunikasi Indonesia (9 hari) Sinyal Benar Salah Failure Swing Akurasi
4
4 4/8 = 50%
B-23
11. Telekomunikasi Indonesia, periode 14 hari
Gambar B-23 Grafik Failure Swing Telekomunikasi Indonesia (14 hari) Tabel B-23 Hasil Pengujian Failure Swing dengan Telekomunikasi Indonesia (14 hari) Sinyal Benar Salah Failure Swing Akurasi
3
0 3/3 = 100%
B-24
12. Telekomunikasi Indonesia, periode 25 hari
Gambar B-24 Grafik Failure Swing Telekomunikasi Indonesia (25 hari) Tabel B-24 Hasil Pengujian Failure Swing Telekomunikasi Indonesia (25 hari) Sinyal Benar Salah Failure Swing Akurasi
1
0 1/1 = 100%
LAMPIRAN C KODE HEADER KELAS Dalam lampiran C akan dituliskan header dari source code implementasi kelas-kelas perangkat lunak A.rsi.tek.
1. Kelas MainForm public partial class MainForm : Form { cStockManager mgrStock = new cStockManager(); cRSIManager mgrRSI = new cRSIManager(); cSignalManager mgrSignal = new cSignalManager(); csvFileLoader csvLoader = new csvFileLoader(); double cache = 0; /* Konstruktor MainForm, termasuk inisialisasi komponenkomponen. */ public MainForm(); /* Inisialisasi ukuran ZedGraphControl */ private void MainForm_Load(object sender, EventArgs e); /* Inisialisasi ZedGraphControl beserta isinya. */ public void initGraph(ZedGraphControl zgControl); /* Menyesuaikan ukuran ZedGraphControl dengan ukuran MainForm */ public void SetSize(); /* * * * *
Aksi yang dilakukan ketika menge-klik tombol "Browse..": - menampilkan openFileDialog1 - membaca file dengan ODBC - memasukkan data ke dalam datagridview - membaca nama2 file yang ada di directory yang sama dengan file yang dipilih * - menampilkan nama2 file tsb * - menggambar grafik harga saham * - menghitung dan menuliskan nilai RSI * - membaca sinyal * - menggambar grafik RSI * - menggambar sinyal sesuai pilihan tampilan * - mengubah antarmuka sesuai state yang sekarang */ private void btnBrowse_Click(object sender, EventArgs e); /* Aksi yang dilakukan ketika mengubah pilihan di listFiles: * mengubah nama file yang digunakan di fileLoader. */ private void listSheets_SelectedIndexChanged(object sender, EventArgs e); /* Aksi yang dilakukan ketika menge-klik tombol "Load": * - mengisi data harga saham ke datagridview * - mengubah antarmuka sesuai state yang sekarang
C-1
C-2
* - menggambarkan grafik harga saham * - menghitung dan menuliskan nilai RSI * - menampilkan grafik RSI * - membaca sinyal * - menampilkan sinyal sesuai pilihan tampilan */ private void btnLoad_Click(object sender, EventArgs e); /* Aksi yang dilakukan jika tab Grafik diklikganda: * mengubah lebar default kolom-kolom di dataGridView. */ private void tabControl_DoubleClick(object sender, EventArgs e); /* Menge-klik tombol "Reset" * action: * - menghapus list file * - menghapus datagridview * - mengatur antarmuka sesuai state * - menghapus grafik */ private void btnReset_Click(object sender, EventArgs e); /* Method agar dataGridView1 tidak dapat disortir */ private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e); /* Aksi yang dilakukan saat menge-klik tombol "Draw RSI": * - menghitung dan menuliskan nilai RSI * - menggambar grafik RSI * - mengatur antarmuka sesuai state */ private void btnDrawRSI_Click(object sender, EventArgs e); /* Menyalurkan klikganda pada listFiles sebagai klik tombol "Load" */ private void listSheets_DoubleClick(object sender, EventArgs e); /* Men-toggle apakah hanya menampilkan kolom harga Close saja * atau semua harga di dataGridView1 */ private void showAllPricesToolStripMenuItem_Click(object sender, EventArgs e); /* Menyalurkan perintah dari "Load" di menu item sebagai klik tombol "Browse.." */ private void loadToolStripMenuItem_Click(object sender, EventArgs e); /* Pemicu untuk menyesuaikan ukuran ZedGraphControl tiap kali MainForm berubah ukuran */ private void MainForm_Resize(object sender, EventArgs e); /* Saat mengeklik tombol "Draw": menggambarkan grafik harga saham */ private void buttonDraw_Click(object sender, EventArgs e); /* Menyalurkan perintah dari Draw -> Price Chart di menu item sebagai klik tombol "Draw" */ private void stockPriceChartToolStripMenuItem_Click(object sender, EventArgs e);
C-3
/* Memaksa tab untuk refresh tiap kali MainForm digambarkan ulang. */ private void MainForm_Paint(object sender, PaintEventArgs e); /* Mengubah periode yang digunakan */ private void radPeriode9_CheckedChanged(object sender, EventArgs e); private void radPeriode14_CheckedChanged(object sender, EventArgs e); private void radPeriode25_CheckedChanged(object sender, EventArgs e); /* Mengubah pilihan untuk menampilkan atau menghilangkan sinyal overbought/oversold pada grafik */ private void chkOver_CheckedChanged(object sender, EventArgs e); /* Mengubah pilihan untuk menampilkan atau menghilangkan sinyal failure swing */ private void chkFailureSwg_CheckedChanged(object sender, EventArgs e); /* Mengubah pilihan untuk menampilkan atau menghilangkan kolom sinyal di dataGridView1 */ private void showSignalsToolStripMenuItem_Click(object sender, EventArgs e); /* Menyalurkan perintah dari main menu * sebagai perintah dari antarmuka biasa */ private void overboughtOversoldToolStripMenuItem_Click(object sender, EventArgs e); private void failureSwingToolStripMenuItem_Click(object sender, EventArgs e); private void resetToolStripMenuItem_Click(object sender, EventArgs e); /* Menangani perubahan nilai harga saham */ private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e); private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e); private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e); /* Perintah dari Main Menu * File -> Export to XML: * - Menyimpan skema DataTable ke dalam file .xsd * - Menyimpan isi DataTable ke dalam file .xml */ private void saveToolStripMenuItem_Click(object sender, EventArgs e); /* Perintah dari Main Menu * File -> Import XML: * - Membaca skema tabel dari file .xsd * - Membaca data dari file .xml */ private void openToolStripMenuItem_Click(object sender, EventArgs e); /* Menampilkan about box */ private void aboutArsitekToolStripMenuItem_Click(object sender, EventArgs e);
C-4
/* Menyimpan data ke dalam file excel */ private void exportToExcelToolStripMenuItem_Click(object sender, EventArgs e); /* Menampilkan atau menyembunyikan pilihan periode bebas */ private void periodeBebasToolStripMenuItem_Click(object sender, EventArgs e); }
2. Kelas tDatabase public abstract class tDatabase { /* DataGridView yang digunakan; * bersifat statis agar semua tDatabase dan turunannya menggunakan DataGridView yang sama */ private static DataTable DB; /* Properties */ public static DataTable dtTable; public int duration; /* Memasukkan data pada row dan column yang ditentukan, ke DataGridView */ public void setData(int row, int col, object val); /* Mengambil data dari row dan column yang ditentukan, di DataGridView */ public object getData(int row, int col); /* Menyimpan data dalam data table ke dalam file excel */ public static void exportExcel(string filename);
3. Kelas cStockManager public class cStockManager : tDatabase { /* Atribut yang menentukan letak kolom harga penutupan * dalam index berbasis nol */ private int idx = 4; /* Property idx */ public int index; /* Membaca dan mengeset harga penutupan */ public int getPrice(int hariKe); public void setPrice(int hariKe, int harga); /* Menggambar grafik harga saham; * akan digambar ke zgc, panel nomer index i */ public void drawChart(ZedGraphControl zgc, int i); }
C-5
4. Kelas cRSIManager public class cRSIManager : tDatabase { private cStockManager stockMgr; private int per = 14; private int idx = 7; /* Properties */ public int periode; public int index; public cStockManager stockManager; /* Menghitung nilai Up pada suatu hari */ protected int getUp(int hariKe); /* Menghitung nilai Down pada suatu hari */ protected int getDown(int hariKe); /* Menghitung rerata Up dan Down pertama-tama * dengan menggunakan Simple Average */ protected double calcFirstUpAvg(); protected double calcFirstDownAvg(); /* Menghitung rerata selanjutnya * dengan menggunakan Exponential Moving Average */ protected double calcAvg(double prevAvg, int curVal); /* Menghitung nilai RSI */ protected double calcRSI(double avgUp, double avgDown); /* Membaca dan menulis RSI Value pada suatu hari */ public double readRSIValue(int hariKe); public void setRSIValue(int hariKe, double value); /* Menghitung nilai RSI untuk data harga saham yang sudah dimuat * dan menuliskan nilai RSI pada kolom RSI di DataGridView */ public void parseRSI(); /* Menggambarkan grafik RSI */ public void drawRSI(ZedGraphControl zgc, int rsiPaneIndex, int stockPaneIndex); }
5. Kelas cSignalManager public class cSignalManager : tDatabase { private cRSIManager rsiMgr; /* Properties */ public cRSIManager rsiManager; /* Membaca nilai RSI dalam DataGridView * lalu membaca sinyal overbought/oversold yang dihasilkan. */ public void parseForOver();
C-6
/* Menggambarkan sinyal overbought/oversold ke grafik RSI */ public void drawSignalOver(ZedGraphControl zgc, int rsiPaneIndex); /* Memunculkan sinyal overbought/oversold di grafik */ public void showSignalOver(ZedGraphControl zgc, int rsiPaneIndex); /* Menyembunyikan sinyal overbought/oversold di grafik */ public void hideSignalOver(ZedGraphControl zgc, int rsiPaneIndex); /* Membaca nilai RSI dalam DataGridView * lalu mencoba mencari peristiwa top failure swing * dan bottom failure swing secara matematis */ public void parseForFailure(); /* Menggambarkan sinyal failure swing ke grafik RSI */ public void drawSignalSwing(ZedGraphControl zgc, int rsiPaneIndex); /* Memunculkan sinyal failure swing di grafik */ public void showSignalSwing(ZedGraphControl zgc, int rsiPaneIndex); /* Menyembunyikan sinyal failure swing di grafik */ public void hideSignalSwing(ZedGraphControl zgc, int rsiPaneIndex); }
6. Kelas csvFileLoader public class csvFileLoader { private OdbcConnection odConnection = new OdbcConnection(); private OdbcDataAdapter odDataAdapter = new OdbcDataAdapter(); private DataSet dataSet = new DataSet(); private string fileLocation; /* Properties */ public OdbcConnection odbcConn; public OdbcDataAdapter odbcAdapter; public DataSet dtSet; public string fileName; public string filePath; public string fileLoc; /* Mengisi DataGridView dgv dengan file masukan */ public void populateGrid(DataGridView dgv); }