Decision dan Looping

Pada bagian ini kita akan membahas decision dan looping. Decision dan looping adalah inti dari sebuah program komputer. Sesuai atau tidaknya program komputer berjalan tergantung dari kebenaran anda menulis/menyusun perintah2 decision dan looping

Begitu juga dengan EA, kalau salah dalam menyusun decision & looping, maka kinerjanya akan tidak sesuai yang kita kehendaki. Misalnya menurut kehendak kita, sekarang ini EA harusnya open buy, tapi ternyata dia malah diem aja... nah itu bisa jadi, walau tidak 100% pasti, kesalahannya terletak pada bagian ini.

1. Decision/Branching

1.1 IF - (ELSE)

Decision berarti membagi alur program menjadi 2.
Simplenya begini, u suruh temen u beliin nasi empal. U bilang, kalau harganya 5000 beliin 2 ya, kalau lebih mahal ya ga usah beli.
Itu termasuk branching, karena dari 1, akan dipecah menjadi 2 opsi :
opsi 1 : kalau harga 5000 beli 2
opsi 2 : kalau harga diatas 5000, ga usah beli

Sama juga seperti program. Program juga harus diperintah seperti itu, dikasih opsi berdasarkan kriteria2 tertentu.
Contohnya dalam forex :

Kalau candle ditutup bullish, maka buy
Kalau candle ditutup bearish, maka sell
Kalau candle close=open, maka tidak usah trade

(bullish berarti close lebih tinggi dari open, dan sebaliknya)

kalau dalam bahasa MQL4, maka penulisannya akan jadi seperti ini :

Code:
      //diatas sudah 
      if (iClose(Symbol(),0,1)>iOpen(Symbol(),0,1) )
      {
         //open buy
      }
      else if (iClose(Symbol(),0,1)<iOpen(Symbol(),0,1) )
      {
         //open sell
      }
      else 
      {
         //ga trade
      }

kurang lebih sama seperti kita nyuruh orang, cuman bahasa dan tata cara penulisannya saja yang beda.
jika misalnya perlu 2 kondisi, semisal kalau candle nya terlalu panjang (lebih dari 50 pips), tidak trade, maka kita bisa menggunakan Operator Logical (Bagian 5 - Operator dan Ekspresi)

contoh :

Code:
      //diatas sudah 
      if (iClose(Symbol(),0,1)>iOpen(Symbol(),0,1) && iClose(Symbol(),0,1)-iOpen(Symbol(),0,1) < 50*Point )
      {
         //open buy
      }
      else if (iClose(Symbol(),0,1)<iOpen(Symbol(),0,1) && iOpen(Symbol(),0,1)-iClose(Symbol(),0,1) < 50*Point )
      {
         //open sell
      }
      else 
      {
         //ga trade
      }
cukup jelas kan ya?
gw cuman coba jelasin syntax2 & penulisannya saja  kalau misalnya translasi dari bahasa manusia ke bahasa algoritma yang dimengerti komputer, bisa baca2 buku logika & algoritma... (di perpus kampus IT biasanya ada)

1.2 SWITCH

Switch fungsinya sama ama if, untuk branching juga. Bedanya switch digunakan untuk membandingkan hal2 yang sebanding, yang variabelnya sama.

Misal, jika 1 EA punya 3 pilihan filtrasi harga (untuk memfilter false signal), maka bisa menggunakan switch.
inputan 1 untuk filter menggunakan RSI, 2 untuk panjang candle, dst

syntaxnya seperti ini : 

Code:
  switch(x)
  {
   case 'A':
      Print("CASE A");
      break;
   case 'B':
      Print("CASE B");
   case 'C':
      Print("CASE B or C");
      break;
   default:
      Print("NOT A, B or C");
      break;
  }
perhatikan, bahwa setiap selesai operasi, harus diakhiri dengan break;
kalau tidak, maka perintah di case selanjutnya akan dieksekusi juga.

jadi misal pada code diatas, kalau x=B, maka yang keluar adalah CASE B, CASE B or C (yang dibawah case C juga dieksekusi, walau x bukan C)

Code:
      switch(x)
      {
       case '1':
          bolehTrade=cekRSI();
          break;
       case '2':
          bolehTrade=cekCandle();
          break;
   
       default:
          Print("Unknown Option");
          break;
      }

cekRSI(), cekCandle(), dan bolehTrade adalah boolean
x=integer

default adalah nilai jika x tidak memenuhi semua kriteria di case (kayak else nya statement If)