• Tidak ada hasil yang ditemukan

BAB VI PENUTUP

6.2 Saran

Sistem yang telah diterapkan dalam Tugas Akhir ini dapat dikembangkan lagi dengan penerapan beberapa metode yang telah ada dalam kasus forex trading, misalnya dengan menggunakan metode MACD (Moving Average Convergence / Divergence) dan metode bohranger, Sehingga memaksimalkan nilai kevalidannya untuk periode berikutnya.

Untuk memudahkan para pelaku forex trading dalam menyusun strategi, sistem ini dapat dikembangkan lagi dengan menambahkan parameter periode

untuk menentukan berapa lama periode yang akan diambil oleh user, sehingga lama periode tidak hanya tergantung dari 14 periode. Serta pilihan periode juga dapat dikembangkan dengan menambahkan pilihan peride yang diinginkan, misalnya periode tiap menit, tiap jam atau bahkan setiap detik.

Untuk memaksimalkan sistem ini, sistem ini juga dapat dikembangkan dengan menambahkan parameter yang berfungsi untuk mengupdate kurs secara real time, jadi user tidak perlu memasukkan nilai kurs satu per satu.

82

Amelia, T. (2007). Pemrogaman Data Base Menggunakan ADO .NET. Surabaya: Graha Ilmu.

Dania, I Putu. 2006. Rancang Bangun Sistem Informasi Peramalan Pergerakan Harga Saham Menggunakan Metode Relative Strength Index. Disertai tidak diterbitkan. Surabaya: Program Strata Satu STIKOM Surabaya

J.ALam, M. A. (2005). Belajar Sendiri Pemrogaman Visual Basic dalam SQL Server 7.0 & 2005. Bandung: PT Elex Media Komputindo.

STIKOM, L. K. Modul Praktikum Pemrogaman Visual II. Surabaya: Sekolah Tinggi Manajemen Informatika & Teknik Komputer.

Syamsir, H. (2005). Solusi Investasi di Bursa Saham Indonesia. Jakarta: PT ELex Media Komputindo.

Yuswanto, Soetam Rizky, Tan Amelia. (2008). Pemrogaman Visual I. Surabaya: Sekolah Tinggi Manajemen Informatika dan Teknik Komputer.

Street Authority, L. (2009). StreetAuthority.Com. Retrieved Januari 15, 2012, from RSI: Calculation Underlies Meaningful Interpretation:

83

DECLARE @ID int, @IDKURS int, @TANGGAL datetime, @OPEN decimal(19,6), @CLOSE decimal(19,6), @UP decimal(19,6), @DOWN decimal(19,6)

SELECT @ID = ID, @IDKURS = IDKURS, @TANGGAL = TANGGAL, @OPEN = [OPEN], @CLOSE = [CLOSE], @UP = UP, @DOWN = DOWN FROM INSERTED

DECLARE @ID_TEMP int, @TANGGAL_TEMP datetime,

@OPEN_TEMP decimal(19,6), @OPENVALUE_TEMP decimal(19,6), @OPENUP_TEMP decimal(19,6), @OPENDOWN_TEMP decimal(19,6),

@CLOSE_TEMP decimal(19,6), @CLOSEVALUE_TEMP decimal(19,6), @CLOSEUP_TEMP decimal(19,6), @CLOSEDOWN_TEMP decimal(19,6),

@UP_TEMP decimal(19,6), @UPVALUE_TEMP decimal(19,6), @UPUP_TEMP decimal(19,6), @UPDOWN_TEMP decimal(19,6), @DOWN_TEMP decimal(19,6), @DOWNVALUE_TEMP decimal(19,6), @DOWNUP_TEMP decimal(19,6), @DOWNDOWN_TEMP decimal(19,6)

DECLARE @CLOSERSI decimal(19,2), @CLOSERSIVALUE decimal(19,2), @CLOSERSIUP decimal(19,2), @CLOSERSIDOWN decimal(19,2)

DECLARE @SUMUP decimal(19,2), @SUMDOWN decimal(19,2), @SUMUPAV decimal(19,2), @SUMDOWNAV decimal(19,2) DECLARE @RSSCLOSE decimal(19,2), @HCLOSE decimal(19,2), @ICLOSE decimal(19,2), @RSICLOSE decimal(19,2) /*OPEN*/

SELECT @TANGGAL_TEMP = @TANGGAL - 1

IF EXISTS(SELECT [OPEN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @OPEN_TEMP = [OPEN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP) SELECT @OPENVALUE_TEMP = @OPEN - @OPEN_TEMP

IF @OPENVALUE_TEMP > 0 BEGIN

SELECT @OPENUP_TEMP = @OPENVALUE_TEMP END IF @OPENVALUE_TEMP <= 0 BEGIN SELECT @OPENUP_TEMP = 0 END IF @OPENVALUE_TEMP < 0 BEGIN

SELECT @OPENDOWN_TEMP = @OPENVALUE_TEMP * -1 END IF @OPENVALUE_TEMP >= 0 BEGIN SELECT @OPENDOWN_TEMP = 0 END

UPDATE TFKURS SET [OPENVALUE] = @OPENVALUE_TEMP, OPENUP = @OPENUP_TEMP, OPENDOWN = @OPENDOWN_TEMP WHERE ID = @ID

END

SELECT @TANGGAL_TEMP = @TANGGAL + 1

IF EXISTS(SELECT [OPEN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @ID_TEMP = ID, @OPEN_TEMP = [OPEN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)

SELECT @OPENVALUE_TEMP = @OPEN_TEMP - @OPEN IF @OPENVALUE_TEMP > 0

BEGIN

SELECT @OPENUP_TEMP = @OPENVALUE_TEMP END IF @OPENVALUE_TEMP <= 0 BEGIN SELECT @OPENUP_TEMP = 0 END IF @OPENVALUE_TEMP < 0 BEGIN

SELECT @OPENDOWN_TEMP = @OPENVALUE_TEMP * -1 END

IF @OPENVALUE_TEMP >= 0 BEGIN

END

UPDATE TFKURS SET [OPENVALUE] = @OPENVALUE_TEMP, OPENUP = @OPENUP_TEMP, OPENDOWN = @OPENDOWN_TEMP WHERE ID = @ID_TEMP

END

/*CLOSE*/

SELECT @TANGGAL_TEMP = @TANGGAL - 1

IF EXISTS(SELECT [CLOSE] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @CLOSE_TEMP = [CLOSE] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP) SELECT @CLOSEVALUE_TEMP = @CLOSE - @CLOSE_TEMP

IF @CLOSEVALUE_TEMP > 0 BEGIN

SELECT @CLOSEUP_TEMP = @CLOSEVALUE_TEMP END IF @CLOSEVALUE_TEMP <= 0 BEGIN SELECT @CLOSEUP_TEMP = 0 END IF @CLOSEVALUE_TEMP < 0 BEGIN

SELECT @CLOSEDOWN_TEMP = @CLOSEVALUE_TEMP * -1 END IF @CLOSEVALUE_TEMP >= 0 BEGIN SELECT @CLOSEDOWN_TEMP = 0 END

UPDATE TFKURS SET [CLOSEVALUE] = @CLOSEVALUE_TEMP, CLOSEUP = @CLOSEUP_TEMP, CLOSEDOWN = @CLOSEDOWN_TEMP WHERE ID = @ID

END

SELECT @TANGGAL_TEMP = @TANGGAL + 1

IF EXISTS(SELECT [CLOSE] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @ID_TEMP = ID, @CLOSE_TEMP = [CLOSE] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)

SELECT @CLOSEVALUE_TEMP = @CLOSE_TEMP - @CLOSE IF @CLOSEVALUE_TEMP > 0

BEGIN

SELECT @CLOSEUP_TEMP = @CLOSEVALUE_TEMP END IF @CLOSEVALUE_TEMP <= 0 BEGIN SELECT @CLOSEUP_TEMP = 0 END IF @CLOSEVALUE_TEMP < 0 BEGIN

SELECT @CLOSEDOWN_TEMP = @CLOSEVALUE_TEMP * -1 END IF @CLOSEVALUE_TEMP >= 0 BEGIN SELECT @CLOSEDOWN_TEMP = 0 END

UPDATE TFKURS SET [CLOSEVALUE] = @CLOSEVALUE_TEMP, CLOSEUP = @CLOSEUP_TEMP, CLOSEDOWN = @CLOSEDOWN_TEMP WHERE ID = @ID_TEMP

END

/*UP*/

SELECT @TANGGAL_TEMP = @TANGGAL - 1

IF EXISTS(SELECT [UP] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @UP_TEMP = [UP] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP) SELECT @UPVALUE_TEMP = @UP - @UP_TEMP

SELECT @UPUP_TEMP = @UPVALUE_TEMP END IF @UPVALUE_TEMP <= 0 BEGIN SELECT @UPUP_TEMP = 0 END IF @UPVALUE_TEMP < 0 BEGIN

SELECT @UPDOWN_TEMP = @UPVALUE_TEMP * -1 END IF @UPVALUE_TEMP >= 0 BEGIN SELECT @UPDOWN_TEMP = 0 END

UPDATE TFKURS SET [UPVALUE] = @UPVALUE_TEMP, UPUP = @UPUP_TEMP, UPDOWN = @UPDOWN_TEMP WHERE ID = @ID

END

SELECT @TANGGAL_TEMP = @TANGGAL + 1

IF EXISTS(SELECT [UP] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @ID_TEMP = ID, @UP_TEMP = [UP] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)

SELECT @UPVALUE_TEMP = @UP_TEMP - @UP IF @UPVALUE_TEMP > 0

BEGIN

SELECT @UPUP_TEMP = @UPVALUE_TEMP END IF @UPVALUE_TEMP <= 0 BEGIN SELECT @UPUP_TEMP = 0 END IF @UPVALUE_TEMP < 0 BEGIN

SELECT @UPDOWN_TEMP = @UPVALUE_TEMP * -1 END IF @UPVALUE_TEMP >= 0 BEGIN SELECT @UPDOWN_TEMP = 0 END

UPDATE TFKURS SET [UPVALUE] = @UPVALUE_TEMP, UPUP = @UPUP_TEMP, UPDOWN = @UPDOWN_TEMP WHERE ID = @ID_TEMP

END

/*DOWN*/

SELECT @TANGGAL_TEMP = @TANGGAL - 1

IF EXISTS(SELECT [DOWN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @DOWN_TEMP = [DOWN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP) SELECT @DOWNVALUE_TEMP = @DOWN - @DOWN_TEMP

IF @DOWNVALUE_TEMP > 0 BEGIN

SELECT @DOWNUP_TEMP = @DOWNVALUE_TEMP END IF @DOWNVALUE_TEMP <= 0 BEGIN SELECT @DOWNUP_TEMP = 0 END IF @DOWNVALUE_TEMP < 0 BEGIN

SELECT @DOWNDOWN_TEMP = @DOWNVALUE_TEMP * -1 END

IF @DOWNVALUE_TEMP >= 0 BEGIN

SELECT @DOWNDOWN_TEMP = 0 END

UPDATE TFKURS SET [DOWNVALUE] = @DOWNVALUE_TEMP, DOWNUP = @DOWNUP_TEMP, DOWNDOWN = @DOWNDOWN_TEMP WHERE ID = @ID

END

SELECT @TANGGAL_TEMP = @TANGGAL + 1

IF EXISTS(SELECT [DOWN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

SELECT @ID_TEMP = ID, @DOWN_TEMP = [DOWN] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)

SELECT @DOWNVALUE_TEMP = @DOWN_TEMP - @DOWN IF @DOWNVALUE_TEMP > 0

BEGIN

SELECT @DOWNUP_TEMP = @DOWNVALUE_TEMP END IF @DOWNVALUE_TEMP <= 0 BEGIN SELECT @DOWNUP_TEMP = 0 END IF @DOWNVALUE_TEMP < 0 BEGIN

SELECT @DOWNDOWN_TEMP = @DOWNVALUE_TEMP * -1 END IF @DOWNVALUE_TEMP >= 0 BEGIN SELECT @DOWNDOWN_TEMP = 0 END

UPDATE TFKURS SET [DOWNVALUE] = @DOWNVALUE_TEMP, DOWNUP = @DOWNUP_TEMP, DOWNDOWN = @DOWNDOWN_TEMP WHERE ID = @ID_TEMP

END

/*RSI CLOSE*/

SELECT @TANGGAL_TEMP = @TANGGAL - 13 SELECT @SUMUP = 0, @SUMDOWN = 0

IF EXISTS(SELECT [ID] FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL = @TANGGAL_TEMP)) BEGIN

DECLARE CURFETCH41 CURSOR FOR

SELECT SUM([CLOSE]) AS [CLOSE], SUM(CLOSEVALUE) AS CLOSEVALUE, SUM(CLOSEUP) AS CLOSEUP, SUM(CLOSEDOWN) AS CLOSEDOWN FROM TFKURS WHERE (IDKURS = @IDKURS) AND (TANGGAL BETWEEN @TANGGAL_TEMP AND

@TANGGAL) OPEN CURFETCH41

FETCH NEXT FROM CURFETCH41 INTO @CLOSERSI, @CLOSERSIVALUE, @CLOSERSIUP, @CLOSERSIDOWN WHILE @@FETCH_STATUS = 0

BEGIN

FETCH NEXT FROM CURFETCH41 INTO @CLOSERSI, @CLOSERSIVALUE, @CLOSERSIUP, @CLOSERSIDOWN END

CLOSE CURFETCH41 DEALLOCATE CURFETCH41

SELECT @SUMUPAV = @CLOSERSIUP/14 SELECT @SUMDOWNAV = @CLOSERSIDOWN/14 SELECT @RSSCLOSE = @SUMUPAV / @SUMDOWNAV SELECT @HCLOSE = 1 + @RSSCLOSE

SELECT @ICLOSE = 100 / @HCLOSE SELECT @RSICLOSE = 100 - @ICLOSE

UPDATE TFKURS SET RSSCLOSE = @RSSCLOSE, HCLOSE = @HCLOSE, ICLOSE = @ICLOSE, RSICLOSE = @RSICLOSE WHERE ID = @ID

END

Code Visual Basic SPK RSI

Case"RSI"

If rdbtnClose.Checked = TrueThen

Try

Me.SqlConnRSI = myConnection.conn objDataTable.Clear()

StrSQL = "SELECT TFKURS.ID, TFKURS.IDKURS, MKURS.PAIRS, TFKURS.TANGGAL, TFKURS.RSICLOSE AS RSI

"', 102) AND CONVERT(DATETIME, " & _

"'" & dfAkhir & "', 102)) AND (TFKURS.IDKURS = " & Val(cmbPairs.SelectedValue.ToString) & ") ORDER BY TFKURS.TANGGAL"

objCommandRSI = New SqlCommand

objCommandRSI.Connection = myConnection.conn objCommandRSI.CommandType = CommandType.Text objCommandRSI.CommandText = StrSQL

objDataAdapterRSI = New SqlDataAdapter(objCommandRSI)

objDataAdapterRSI.Fill(objDataSetRSI, "MDT_RSI") objDataTableRSI = objDataSetRSI.Tables("MDT_RSI") dRSI = 0

dKursUp = 0 dKursDown = 0

objCommandRSI = myConnection.open.CreateCommand

objCommandRSI.CommandText = ("SELECT TFKURS.ID, TFKURS.IDKURS, MKURS.PAIRS, TFKURS.TANGGAL,

TFKURS.CLOSEUP, TFKURS.CLOSEDOWN, TFKURS.RSICLOSE AS RSI FROM TFKURS LEFT OUTER JOIN MKURS ON " & _

"TFKURS.IDKURS = MKURS.ID WHERE (TFKURS.TANGGAL BETWEEN CONVERT(DATETIME, '" &

dfAwal & "', 102) AND CONVERT(DATETIME, " & _

"'" & dfAkhir & "', 102)) AND (TFKURS.IDKURS = " & Val(cmbPairs.SelectedValue.ToString) & ") ORDER BY TFKURS.TANGGAL")

objDataReaderRSI = objCommandRSI.ExecuteReader

Dim sValueRSI AsString, sValueKursUp AsString, sValueKursDown AsString

While objDataReaderRSI.Read()

sValueRSI = objDataReaderRSI.Item("RSI").ToString

sValueKursUp = objDataReaderRSI.Item("CLOSEUP").ToString sValueKursDown = objDataReaderRSI.Item("CLOSEDOWN").ToString 'A Fix

If IIf(sValueRSI = "", 0, Val(sValueRSI)) >= 70 Then

txtA.Text = "Overbought"

ElseIf IIf(sValueRSI = "", 0, Val(sValueRSI)) <= 30 Then

txtA.Text = "Oversold"

ElseIf (IIf(sValueRSI = "", 0, Val(sValueRSI)) > 30) And IIf(sValueRSI = "", 0, Val(sValueRSI)) < 70 Then

txtA.Text = "Wait and See" & vbCrLf & "RSI Value = " & Format(Val(sValueRSI), "###.##") EndIf

'B Not Fix

If IIf(sValueRSI = "", 0, Val(sValueRSI)) > dRSI And IIf(sValueKursDown = "", 0, Val(sValueKursDown)) > 0 Then

txtB.Text = "Divergency Positif"

ElseIf IIf(sValueRSI = "", 0, Val(sValueRSI)) < dRSI And IIf(sValueKursUp = "", 0, Val(sValueKursUp)) > 0 Then

txtB.Text = "Divergency Negatif"

Else

txtB.Text = ""

EndIf

'C Fix

If IIf(sValueRSI = "", 0, Val(sValueRSI)) >= 50 Then

txtC.Text = "Centerline Cross Over"

Else

txtC.Text = "Not Centerline Cross Over"

EndIf

dRSI = objDataReaderRSI.Item("RSI").ToString

dKursUp = objDataReaderRSI.Item("CLOSEUP").ToString dKursDown = objDataReaderRSI.Item("CLOSEDOWN").ToString EndWhile

objDataReaderRSI.Close()

Me.SqlConnRSI = myConnection.conn

Dim sqlGrafik AsString = "SELECT CONVERT(varchar, dbo.TFKURS.TANGGAL, 103) AS TANGGAL,

TFKURS.RSICLOSE AS RSI FROM TFKURS LEFT OUTER JOIN MKURS ON TFKURS.IDKURS = MKURS.ID WHERE " & _ "(TFKURS.TANGGAL BETWEEN CONVERT(DATETIME, '" & dfAwal & "', 102) AND CONVERT(DATETIME, '" & dfAkhir & "', 102)) AND " & _

"(TFKURS.IDKURS = " & Val(cmbPairs.SelectedValue.ToString) & ") ORDER BY TFKURS.TANGGAL"

Dim da AsNew SqlDataAdapter(sqlGrafik, SqlConnRSI) Dim ds AsNew DataSet()

da.Fill(ds, "TFKURS")

Dim ChartArea1 As ChartArea = New ChartArea() Dim Legend1 As Legend = New Legend() Dim Series1 As Series = New Series() Dim Chart1 = New Chart() Me.Controls.Add(Chart1)

ChartArea1.Name = "ChartArea1"

Chart1.ChartAreas.Add(ChartArea1) Legend1.Name = "Legend1"

Chart1.Legends.Add(Legend1)

Chart1.Location = New System.Drawing.Point(13, 13) Chart1.Name = "Chart1"

Series1.ChartArea = "ChartArea1"

Series1.Legend = "Legend1"

Series1.Name = "Series1"

Chart1.Series.Add(Series1)

MChart.Size = New System.Drawing.Size(800, 400) MChart.TabIndex = 0

MChart.Text = "Chart1"

MChart.Series("Series1").XValueMember = "TANGGAL"

MChart.Series("Series1").Font = New Font(Me.Font.Name, 6, FontStyle.Regular) MChart.Series("Series1").YValueMembers = "RSI"

MChart.DataSource = ds.Tables("TFKURS") MChart.Show()

myConnection.close() Catch ex As Exception

MsgBox("Cannot Load Data RSI Close Value" & vbCrLf & Err.Description, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Error Load Data RSI Close")

EndTry

EndIf

EndSelect

myConnection.close() EndSub

02-Nop $22,61 0,17 0,17 0 03-Nop $22,67 0,06 0,06 0 04-Nop $22,88 0,21 0,21 0 05-Nop $23,36 0,48 0,48 0 08-Nop $23,23 -0,13 0 0,13 09-Nop $23,08 -0,15 0 0,15 10-Okt $22,86 -0,22 0 0,22 11-Nop $23,17 0,31 0,31 0 12-Nop $23,69 0,52 0,52 0 15-Nop $23,77 0,08 0,08 0 16-Nop $23,84 0,07 0,07 0 17-Nop $24,32 0,48 0,48 0 18-Nop $24,80 0,48 0,48 0 t ot al 14 hari 2,86 0,5 0,204 0,036 5,72 19-Nop $24,16 -0,64 0 0,64 0,190 0,079 2,40 22-Nop $24,10 -0,06 0 0,06 0,176 0,078 2,27 23-Nop $23,37 -0,73 0 0,73 0,164 0,124 1,32 24-Nop $23,61 0,24 0,24 0 0,169 0,115 1,47 26-Nop 0 0 0 0,000 0,000 0,00 29-Nop 0 0 0 0,000 0,000 0,00 30-Nop 0 0 0 0,000 0,000 0,00

6,72 14,88 85,12 3,40 29,37 70,63 3,27 30,56 69,44 2,32 43,15 56,85 2,47 40,55 59,45 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Dokumen terkait