68
LAMPIRAN A: RANCANGAN PROSEDURAL
Prosedur 2. proses Interval { Input
: awal, akhir,trend. }
{ Proses
: Menentukan interval harga. }
{ Output
: interval. }
Kamus Data awal, akhir
: datetime
trend
: integer
interval
: real
High[awal], High[akhir]
: real
Low[awal], Low[awal]
: real
Algoritma begin interval
0;
if (trend = 1) then interval
High[awal] – Low[akhir];
else if (trend = 2) then interval output
High[akhir] – Low[awal] ; interval
end.
Prosedur 3. proses Fuzifikasi { Input
: ordType, price. }
{ Proses
: Fuzifikasi fibonacci. }
{ Output
: mfb. }
Kamus Data ordType
: integer
price, mfb, nilai
: real
i, a, b, c, d
: integer
level
: array [0..9] of real
Algoritma begin
Universitas Sumatera Utara
69
level[0]
23.6;
level[1]
38.2;
level[2]
50;
level[3]
61.8;
level[4]
78.2;
level[5]
100;
level[6]
127;
level[7]
161.8;
level[8]
200;
level[9]
261.8;
mfb
0;
{mencari posisi open} if (ordType = 0) then a
4;
b
2;
c
2;
d
4;
i traversal [0..4] if (price <= level[i] - a) then mfb
0;
else if (level[i]-a < price) And (price <= level[i]-b) then nilai
(price-(level[i]-a))/((level[i]-b)-(level[i]-a));
if (nilai > mfb) then mfb
nilai;
else if (((level[i]-b) < price) And (price < (level[i]+c))) then nilai
1;
if (nilai > mfb) then mfb
nilai;
else if (((level[i]+c) <= price) And (price < (level[i]+d))) then nilai
((level[i]+d)-price)/((level[i]+d)-(level[i]+c))
if (nilai > mfb) then mfb
nilai;
else if (price >= (level[i]+d)) then
Universitas Sumatera Utara
70
mfb
0;
{akhir mencari posisi open} {mencari posisi close} else if (ordType = 1) then a
8;
b
4;
c
4;
d
8;
i traversal [5..9] if (price <= (level[i]-a)) then mfb
0;
else if (((level[i]-a) < price) And (price <= (level[i]-b))) then nilai
(price-(level[i]-a))/((level[i]-b)-(level[i]-a));
if (nilai > mfb) then mfb
nilai;
else if (((level[i]-b) < price) And (price < (level[i]+c))) then nilai
1;
if (nilai > mfb) then mfb
nilai;
else if (((level[i]+c) <= price) And (price < (level[i]+d))) then nilai
((level[i]+d)-price)/((level[i]+d)-(level[i]+c));
if (nilai > mfb) then mfb
nilai;
else if (price >= (level[i]+d)) then mfb
0;
{akhir mencari posisi close} output
mfb
end.
Universitas Sumatera Utara
71
Prosedur 4. proses Body Medium { Input
: Lebar real body candle sekarang, bd_1, dan lebar real body candle sebelumnya, bd_0. }
{ Proses
: Fuzifikasi cd0.body is medium cd1.body. }
{ Output
: mBM. }
Kamus Data mBM, range, bd_0, bd_1
: real;
Algoritma begin mBM
0;
range
bd_0/bd_1;
if (range <= 0.10) then mBM
0;
else if ((0.10 < range) And (range <= 0.25)) then; mBM
((range-0.10)/(0.25-0.10));
else if ((0.25 < range) And (range < 0.75)) then mBM
1;
else if ((0.75 <= range) And (range < 0.90)) then mBM
((0.90-range)/(0.90-0.75));
else if (range >= 0.90) then mBM output
0;
mBM
end.
Prosedur 5. proses Body Long { Input
: Lebar real body candle sekarang, bd_1, dan lebar real body candle sebelumnya, bd_0. }
{ Proses
: Fuzifikasi cd0.body is long cd1.body. }
{ Output
: mBL. }
Kamus Data mBL, range, bd_0, bd_1
: real;
Algoritma begin mBL
0;
range
bd_0/bd_1;
if (range <= 1) then mBL
0;
Universitas Sumatera Utara
72
else if ((1.00 < range) And (range <= 1.25)) then; mBL
((range-1.00)/(1.25-1.00));
else if ((1.25 < range) And (range < 7.75)) then mBL
1;
else if ((7.75 <= range) And (range < 8.75)) then mBL
((8.50-range)/(8.50-7.75));
else if (range >= 8.75) then mBL output
0;
mBL
end.
Prosedur 6. proses OLC { Input
: Harga pembukaan candle sekarang, open1, harga penutupan candle sebelumnya, close0, lebar body candle sebelumnya. }
{ Proses
: Fuzifikasi cd1.open is low cd0.close. }
{ Output
: mOLC. }
Kamus Data mOLC, open1, close0, bd_0
: real;
Algoritma begin mOLC
0;
if(open1 > close0+0.1*bd_0) then mOLC
0;
else if((close0-0.25*bd_0 <= open1) And (open1 < close0+0.1*bd_0)) then mOLC
((close0+0.1*bd_0)-open1)/(0.25*bd_0);
else if(open1 <= close0-0.25*bd_0) then mOLC output
1
mOLC
end.
Prosedur 7. proses CHO { Input
: Harga penutupan candle sekarang, close1, harga pembukaan candle sebelumnya, open0, lebar body candle sebelumnya, bd_0. }
{ Proses
: Fuzifikasi cd1.close is high cd0.open. }
{ Output
: mCHO. }
Universitas Sumatera Utara
73
Kamus Data mCHO, close1, open0, bd_0
: real;
Algoritma begin mCHO
0;
if(close1 < open0-(0.1*bd_0)) then mCHO
0;
else if(((open0-0.1*bd_0) <= close1) And (close1 <= (open0+0.25*bd_0))) then mCHO
(close1-open0)/(0.25*bd_0);
else if(close1 > (open0+(0.25*bd_0))) then mCHO output
1;
mCHO
end.
Prosedur 8. proses OLL { Input
: Harga pembukaan candle sekarang, open1, harga penutupan candle sebelumnya, close0, harga terendah candle sebelumnya, lw0. }
{ Proses
: Fuzifikasi cd1.open is low cd0.low. }
{ Output
: mOLL. }
Kamus Data mOLL, open1, close0, lw0
: real;
Algoritma begin mOLL
0;
if((lw0 = close0) And (open1 <= close0)) then mOLL
1;
else if(open1 <= lw0) then mOLL
1;
else if((lw0 < open1) And (open1 < lw0+0.25*(close0-lw0))) then mOLL
((lw0+0.25*(close0-lw0))-open1)/(0.25*(close0-
lw0)); else if(open1 >= lw0+0.25*(close0-lw)) then mOLL
0;
Universitas Sumatera Utara
74
output
mOLL
end.
Prosedur 9. proses CHC { Input
: Harga penutupan candle sekarang, close1, harga penutupan candle sebelumnya, close0, lebar body candle sebelumnya bd_0. }
{ Proses
: Fuzifikasi cd1.close is high cd0.close. }
{ Output
: mCHC. }
Kamus Data mCHC, close1, close0, bd_0
: real;
Algoritma begin mCHC
0;
if(close1 <= close0) then mCHC
0;
else if((close0 < close1) And (close1 < close0+0.5*bd_0)) then mCHC
(Cl_1-Cl_0)/(0.5*bd_0);
else if(close1 >= close0+0.5*bd_0) then mCHC output
1;
mCHC
end.
Prosedur 10. proses OEC { Input
: Harga pembukaan candle sekarang, open1, harga pembukaan candle sebelumnya, open0, harga penutupan candle sebelumnya, close0. }
{ Proses
: Menentukan cd1.open is equal cd0.close . }
{ Output
: mOEC. }
Kamus Data mOEC, open1, open0, close0
: real;
Algoritma begin mOEC
0;
if(close0 <= open1) And (open1<=open0) then mOEC
1;
Universitas Sumatera Utara
75
output
mOEC
end.
Prosedur 11. proses CEO { Input
: Harga penutupan candle sekarang, close1, harga pembukaan candle sebelumnya, open0, harga penutupan candle sebelumnya, close0. }
{ Proses
: Menentukan cd1.close is equal cd0.open . }
{ Output
: mOEC. }
Kamus Data mCEO, close1, open0, close0
: real;
Algoritma begin mCEO
0;
if(close0 <= close1) And (close1<=open0) then mOEC output
1;
mOEC
end.
Prosedur 12. proses OHC { Input
: Harga pembukaan candle sekarang, open1, harga penutupan candle sebelumnya, close0, lebar body candle sebelumnya, bd_0. }
{ Proses
: Fuzifikasi cd1.open is high cd0.close. }
{ Output
: mOHC. }
Kamus Data mOHC, open1, close0, bd_0
: real;
Algoritma begin mOHC
0;
if(open1 <= (close0-(0.1*bd_0))) then mOHC
0;
else if((close0-0.1*bd_0) < open1) And (open1 < close0+0.25*bd_0)) then mOHC
(open1-(close0-(0.1*bd_0)))/(0.25*bd_0);
Universitas Sumatera Utara
76
else if(open1 >= ((0.25*bd_0)+close0)) then mOHC output
1;
mOHC
end.
Prosedur 13. proses CLO { Input
: Harga penutupan candle sekarang, close1, harga pembukaan candle sebelumnya, open0, lebar body candle sebelumnya. }
{ Proses
: Fuzifikasi cd1.close is low cd0.open. }
{ Output
: mCLO. }
Kamus Data mCLO, close1, open0, bd_0
: real;
Algoritma begin mCLO
0;
if(close1 <= (open0-0.25*bd_0)) then mCLO
1;
else if(((open0-0.25*bd_0) < close1) And (close1 <= open0+0.1*bd_0)) then mCLO
((open0+0.1*bd_0)-close1)/(0.25*bd_0);
else if(close1 > open0+(0.1*bd_0)) then mCLO output
0;
mCLO
end.
Prosedur 14. proses OHH { Input
: Harga pembukaan candle sekarang, open1, harga penutupan candle sebelumnya, close0, harga tertinggi candle sebelumnya, hg0. }
{ Proses
: Fuzifikasi cd1.open is high cd0.high. }
{ Output
: mOHH. }
Kamus Data mOHH, open1, close0, hg0
: real;
Algoritma begin mOHH
0;
Universitas Sumatera Utara
77
if((hg0 = close0) And (open1 >= close0)) then mOHH
1;
else if(open1 <= hg0-(0.25*(hg0-close0))) then mOHH
0;
else if((hg0-0.25*(hg0-close0) < open1) And (open1 < hg0)) then mOHH
(open1-(hg0-0.25*(hg0-close0)))/(0.25*(hg0-
close0)); else if(open1 >= hg0) then mOHH output
1
mOHH
end.
Prosedur 15. proses CLC { Input
: Harga penutupan candle sekarang, close1, harga penutupan candle sebelumnya, close0, lebar body candle sebelumnya bd_0. }
{ Proses
: Fuzifikasi cd1.close is low cd0.close. }
{ Output
: mCLC. }
Kamus Data mCHC, close1, close0, bd_0
: real;
Algoritma begin mCLC
0;
if(close1 <= (close0-(0.5*bd_0))) then mCLC
1;
else if(((close0-(0.5*bd_0)) < close1) And (close1 < close0)) then mCLC
(close0-close1)/(0.5*bd_0);
else if(close1 >= close0) then mCLC 1; output
mCLC
end.
Universitas Sumatera Utara
78
Prosedur 16. proses Inferensi { Input
: Tiga buah bilangan bertipe real bil1, bil2, bil3, bil4. }
{ Proses
: Inferensi dengan fungsi MIN. }
{ Output
: alfa. }
Kamus Data bil1, bil2, bil3, bil4, alfa
: real
Algoritma begin alfa
1;
if (bil1 <= alfa) then alfa
bil1
if (bil2 <= alfa) then alfa
bil2
if (bil3 <= alfa) then alfa
bil3
if (bil4 <= alfa) then alfa output
bil4 alfa
end.
Prosedur 17. proses Inferensi { Input
: Tiga buah bilangan bertipe real bil1, bil2, bil3. }
{ Proses
: Penarikan kesimpulan dengan fungsi MAX. }
{ Output
: Hasil. }
Kamus Data bil1, bil2, bil3, Hasil
: real
Algoritma begin Hasil
0;
if (bil1 >= Hasil) then Hasil
bil1
if (bil2 >= Hasil) then Hasil
bil2
Universitas Sumatera Utara
79
if (bil3 >= Hasil) then Hasil output
bil3 Hasil
end.
Prosedur 18. proses Order Open Buy { Input
: OPB, Slippage, StopLoss, TakeProfit, MagicNumber, trend=2. }
{ Proses
: Order untuk open buy. }
{ Output
: tiket. }
Kamus Data OPB
: real
trend
: integer
Slippage, StopLoss, TakeProfit
: integer
MagicNumber
: integer
tiket
: integer
Algoritma begin tiket OrderSend(Symbol(),OP_BUY,Lot(OPB,Ask),Ask,Slippage,AskStopLoss*Point,Ask+TakeProfit*Point,"OpenBuy",MagicNumber,Dark Violet); if (tiket > 0) then output
tiket
else output
error
end.
Prosedur 19. proses Order Open Sell { Input
: OPS, Slippage, StopLoss, TakeProfit, MagicNumber, trend=1. }
{ Proses
: Order untuk open buy. }
{ Output
: tiket. }
Kamus Data OPS
: real
Universitas Sumatera Utara
80
trend
: integer
Slippage, StopLoss, TakeProfit
: integer
MagicNumber
: integer
tiket
: integer
Algoritma begin tiket
OrderSend(Symbol(),OP_SELL,Lot(OPS,
Bid),Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Open Sell",MagicNumber,DarkViolet); if (tiket > 0) then output
tiket
else output
error
end.
Prosedur 20. proses Order Close Sell { Input
: CLS, Slippage, OrderTotal, trend=2. }
{ Proses
: Order untuk close sell. }
{ Output
: pesan error jika proses tidak berhasil. }
Kamus Data CLS
: real
OrderTotal, slippage, trend, i
: integer
Algoritma begin i travelsal [0..OrderTotal] OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES); if not (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow)) output
”Error close SELL order”;
end.
Universitas Sumatera Utara
81
Prosedur 21. proses Order Close Buy { Input
: CLB, Slippage, OrderTotal, trend=1. }
{ Proses
: Order untuk close buy. }
{ Output
: pesan error jika proses tidak berhasil. }
Kamus Data CLB
: real
OrderTotal, slippage, trend, i
: integer
Algoritma begin i travelsal [0..OrderTotal] OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES); if not (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow)) output
”Error close BUY order”;
end.
Universitas Sumatera Utara