• Tidak ada hasil yang ditemukan

PENGENALAN STRUKTUR EA MQL4

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENGENALAN STRUKTUR EA MQL4"

Copied!
9
0
0

Teks penuh

(1)

1 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

PENGENALAN STRUKTUR EA MQL4

Di dalam program MQL4 ada 3 dasar alur yang sudah diberikan atau sebagai standard dalam pembuatan robot. Alur tersebut berisi sekumpulan script atau code yang akan dieksekusi oleh metatrader. Tiap kumpulan alur tersebut memiliki keistimewaan antara lain:

1. Int init() dieksekusi hanya 1 kali saat EA pertama kali di attach ke chart.

2. Int deinit() dieksekusi 1x saat EA di remove dari chart, atau chart ditutup

3. int start() dieksekusi tiap tick (tiap ada update harga baru). Pada laur inilah banyak diisikan atau disisipkan coding atau script untuk

menjalankan EA.

PENGENALAN VARIABEL

Untuk melakukan pemrograman maka kita perlu memberikan nama pada fungsi yang kita buat. Oleh karena itu diperlukanlah sebuah variabel yg berfungsi untuk memberikan nama sekaligus sebagai alat bantu untuk menyederhanakan coding kita.

Cara Penulisan: JenisVariabel NamaVariabel=NilaiVariabel;

Jenis-jenis variabel ada dibawah ini dan penggunaannya disesuaikan dengan kebutuhan. Nama variabel terserah Anda. Nilai variabel harus disesuaikan dengan jenis variabel yang digunakan, jika jenis variabel angka (int, double) maka tidak boleh diberikan nilai variabel berupa kata-kata (string).

Jenis-Jenis variabel antara lain:

1. Int  Integer merupakan bilangan tidak berkoma mulai dari minus 2.000.000.000 sampai plus 2.000.000.000. Int Bisa juga untuk menuliskan sebuah karakter. Contoh:

(2)

2 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

o int uangsaya=1000;

o int MataUang=’$’ ; //untuk menuliskan karakter dipakai tanda petik

2. Bool  Boolean merupakan variabel yang berisi benar atau salah. Nilainya adalah False dan True

a. bool buy=true; b. bool buy=false;

3. String  digunakan untuk mendefinisikan sebuah variabel yang akan berisi kata-kata atau kalimat. Contoh:

a. string semboyan=”Saya selalu Untung Trading”;

4. Double  digunakan untuk mendefinisikan sebuah variabel yang berisikan data berkoma atau data pecahan misalkan:

 double buystop = 1.4567;  double sellstop = 1.2039;

5. Color  Digunakan untuk mendefinisikan variabel yang nantinya akan berisikan informasi warna. Contoh:

a. Color WarnaKeberuntungan=Red;

b. Bisa dimasukin warna-warna seperti dibawah ini:

Black DarkGreen DarkSlateGray Olive Green Teal Navy Purple

Maroon Indigo MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen OliveDrab SeaGreen DarkGoldenrod DarkSlateBlue Sienna MediumBlue Brown DarkTurquoise DimGray

LightSeaGreen DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate Crimson SteelBlue

Goldenrod MediumSpringGreen LawnGreen CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed

DarkOrange Orange Gold Yellow Chartreuse Lime SpringGreen Aqua

DeepSkyBlue Blue Magenta Red Gray SlateGray Peru BlueViolet

LightSlateGray DeepPink MediumTurquoise DodgerBlue Turquoise RoyalBlue SlateBlue DarkKhaki

IndianRed MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato RosyBrown Orchid

MediumPurple PaleVioletRed Coral CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan

DarkSalmon BurlyWood HotPink Salmon Violet LightCoral SkyBlue LightSalmon

Plum Khaki LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue LightBlue

PaleGreen Thistle PowderBlue PaleGoldenrod PaleTurquoise LightGray Wheat NavajoWhite Moccasin LightPink Gainsboro PeachPuff Pink Bisque LightGoldenrod BlanchedAlmond LemonChiffon Beige AntiqueWhite PapayaWhip Cornsilk LightYellow LightCyan Linen

Lavender MistyRose OldLace WhiteSmoke Seashell Ivory Honeydew AliceBlue

LavenderBlush MintCream Snow White

(3)

3 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

6. DateTime  digunakan untuk mendefinisikan variabel yang nantinya akan berisi mengenai informasi data tanggal dalam format:

Tahun:bulan:hari jam:menit:detik.

Format penulisan yakni: D'dd.mm.yy HH:MM:SS' (ada huruf D didepan tanda petik).

Contoh:

datetime JamKerjaEA = D'31.12.2010 00:00:00'; datetime JamBreakOut= D'14:30:00';

OPERASI DAN EKSPRESI

1. Operasi Aritmetika  digunakan dalam hitungan matematika biasa

berupa penambahan, pengurangan, perkalian dan pembagian

CONTOH:

A=B+C; //a = b ditambah c A=B-C; //a = b dikurangi c A=B*C; //a = b dikali c A=B/C; //a = b dibagi c

A=B%C; //a = sisa bagi (b dibagi c) misal b=8 c=3 maka a=2 // ======Contoh lain =========

int A=1; //A sama dengan 1 A++; // A ditambah satu // ======Contoh lain ========= int B=1; // B sama dengan 1 B--; // B dikurangi 1

Jadi Operasi aritmetika adalah operasi yang menggunakan tanda matematik seperti ditambah, dikurangi, dikali, dibagi, dan sebagainya.

(4)

4 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

2. Operasi Assignment  merupakan operasi matematik yang

menggunakan +=, -= , %= dan =.

CONTOH:

int a=6; int b=6; int c=12;

a+=5; //a sama dengan a+5 = 6+5 = 11 b-=5; //a sama dengan b-5 = 6-1 = 5 c%=5 // c dibagi 5 sisanya ada = 2

3. Relational operator (operator pembanding), operator ini sering

digunakan dalam merancang sebuah EA. Biasa digunakan dengan fungsi if.

a. == : sama

b. != : tidak sama

c. < : lebih kecil dari

d. > : lebih besar dari

e. <= : lebih kecil dari atau sama dengan

f. >= : lebih besar dari atau sama dengan

CONTOH:

int a=5; int b=10;

if (a==b) {Print ("A sama dengan B lho"); } else {Print ("A tidak sama B");} if (a!=b) {Print (“A tidak sama dengan B”);}

(5)

5 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A 4. Operator Logical a. && : dan b. || : atau c. ! : not CONTOH: int a=5; int b=10;

if (a!=b && a>b) {Print ("ABC");} else {Print ("CDE");}

Jika perintah diatas dieksekusi pasti akan muncul pesan “CDE” Berbeda dengan contoh dibawah ini:

if (a!=b || a>b) {Print ("ABC");} else {Print ("CDE");}

Jika a tidak sama dengan b ATAU a lebih besar daripada b maka pernyataan dalam tanda kurung if adalah benar. Untuk script diatas memang a tidak sama dengan B maka akan muncul pesan “ABC”

Mengapa bisa demikian ? pada perintah if (kondisi) {benar} else {salah}, jika kondisi terpenuhi maka script yang akan deksekusi adalah pada kolom benar dan jika kondisi salah atau tidak terpenuhi maka yang akan

dieksekusi adalah kolom salah. Kedua script diatas hampir mirip yang

membedakan adalah satu pakai operator && dan satunya pakai operator ||. If (kondisi1 && kondisi2) {Benar} else {Salah} maka supaya script pada kolom benar tereksekusi maka kondisi1 dan kondisi2 harus terpenuhi. Berbeda dengan If (kondisi1 || kondisi2) {Benar} else {Salah} bila salah satu kondisi saja terpenuhi maka script pada kolom benar akan tereksekusi.

(6)

6 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

Decision dan Looping

Decision dan looping adalah inti dari sebuah program komputer. Sesuai

atau tidaknya program komputer berjalan tergantung dari kebenaran anda menulis/menyusun perintah-perintah 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 sell, ya akibatnya kita akan loss karena kecerobohan EA.

1. Decision atau bracing artinya mengambil atau memilih keputusan

dari 2 atau lebih kondisi. Ibaratnya kita di perempatan jalan, maka kita harus milih mau lurus, belok kiri atau belok kanan? Tergantung kondisi bukan jika lurus adalah jurang maka kita tidak akan lurus. Jika market dalam trend turun maka harus sell, dan jika market dalam trend naik maka harus buy. Ada 2 macam perintah yaitu if else dan switch.

a. IF – ELSE merupakan perintah membuat decision yang membagi

alur program menjadi 2 atau lebih. Contoh: Kalau candle ditutup bullish, maka buy tapi Kalau candle ditutup bearish, maka sell dan Kalau candle close=open, maka tidak usah trade. Format

penulisan atau syntax:

if (kondisi 1) {langkah A jika kondisi 1 terpenuhi} else {langkah B jika kondisi 1 terpenuhi}

atau jika ingin IF else lebih dari 1, maka

if (kondisi 1) {langkah A jika kondisi 1 terpenuhi} else if (kondisi 2) {langkah B jika kondisi 2 terpenuhi} else {Langkah C jika kondisi 2 tidak terpenuhi}

(7)

7 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

Contoh:

if (Close[1] > Open[1]) {Print (“BUY”);} else

if (Close[1] < Open[1] ) {Print (“SELL”);} else {Print (“NO trade”);} Penjelasan singkat skrip diatas:

Jika harga penutupan (close) lebih tinggi daripada pembukaan (open) maka akan muncul pesan BUY, jika harga penutupan (close) lebih rendah dari harga pembukaan (open) maka muncul pesan SELL, jika harga closing tidak lebih tinggi maupun tidak lebih rendah daripada open maka akan muncul pesan NO trade.

b. SWITCH, pada prinsipnya perintah ini sama dengan perintah IF

ELSE namun penggunaan SWITCH dimaksudkan untk

menyederhanakan perintah IF ELSE yang terlalu panjang.

CONTOH:

int a = 0; switch (a) {

case 0 : Print (“MINGGU”); case 1 : Print (“SENIN”); case 2 : Print (“SELASA”); case 3 : Print (“RABU”); case 4 : Print (“KAMIS”); case 5 : Print (“JUMAT”); case 6 : Print (“SABTU”); }

Dari perintah diatas bila a bernilai sama dengan 0 maka akan muncul pesan “MINGGU”.

Fungsi diatas bisa digantikan dengan fungsi IF else yang lebih panjang, Contoh:

(8)

8 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

If (a=0) {Print (“MINGGU”);} else If (a=1) {Print (“SENIN”);} else If (a=2) {Print (“SELASA”);} else If (a=3) {Print (“RABU”);} else If (a=4) {Print (“KAMIS”);} else If (a=5) {Print (“JUMAT”);} else If (a=6) {Print (“SABTU”);}

Contoh dengan menggunakan IF ELSE diatas sama dengan menggunakan switch hanya saja pada penggunaan switch dirasa lebih mudah dan lebih singkat terutama jika menggunakan script yang panjang.

2. Looping adalah pengulangan, artinya kita akan memberikan kondisi

supaya robot EA yang kita bangun mengulangi suatu perintah tertentu secara terus menerus. Ada 2 macam perintah yaitu For dan While

a. FOR

contoh syntax:

for (inisialisasi index; kondisi; increment index) { perintah} Contoh Skrip:

int a;

for(a=0; a<5; a++) {Print(a);}

Jika perintah diatas di jalankan, maka akan keluar angka 0,1,2,3,4 Penjelasannya: index pertamaatau index inisialisasi adalah variabel a yang bernilai nol. Pada kondisi, dibatasi bahwa variabel A hanya kurang dari 5 dan pada increment index tertulis a++ berarti nilai A ditambah 1 terus secara bertingkat, baru perintah print (a); itu dijalankan.

(9)

9 | P a g eh t t p : / / e C a n d l e s t i c k . c o m J a s a B u a t E A

Bagaimana penggunaan for ini ? saya ambil contoh saya ingin membuat EA yang akan memberikan sinyal peringatan berupa bunyi sebanyak 4x maka script yang diperlukan adalah seperti dibawah ini

int a;

for (a=0;a<4;a++) {Alert (“ALARM EA”);} Penjelasan:

 int a  membuat variabel a adalah integer (angka bulat tanpa pecahan)

 for (a=0;a<4;a++)  nilai a awal adalah 0 kemudian

ditambah 1 menjadi 2 ditambah 1 lagi menjadi 3 sudah!! Tidak ditambah 1 lagi menjadi 4 karena syaratnya a<4. Jadi a bisa 0,1,2 atau 3.

 Alert (“ALARM EA”);  perintah untuk mengeluarkan alert

dengan pesan “ALARM EA”. Perintah alert ini akan dieksekusi sebanyak 4x yakni ketika a bernilai 0, kemudian muncul alert lagi ketika a bernilai 1, muncul lagi ketika a bernilai 2 dan muncul lagi ketika a bernilai 3.

b. WHILE

Sama persis dengan perintah FOR hanya saja jika dalam perintah FOR kita tahu berapa kali pengulangannya. Perintah WHILE digunakan jika kita tidak tahu berapa kali pengulangannya.

Referensi

Dokumen terkait

bernilai benar, maka ia akan menjalankan perintah-perintah yang ada dalam blok.

Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua

kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama. yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah

Jika bentuk percabangan IF...ELSE hanya memiliki dua pilihan, maka percabangan IF...ELSE..IF memiliki lebih dari dua kemungkinan pilihan. if kondisi

Pemilihan kondisi dengan if jika root sama dengan null Variabel root sama dengan nilai dari variable dtSisip Pemilihan kondisi jika syarat sebelumnya tidak terpenuhi Variabel

(1) Jika kondisi dipenuhi maka dilakukan proses yang hanya satu baris perintah If kondisi Then &lt;Proses Kondisi Benar&gt;.. (2) Jika kondisi dipenuhi maka dilakukan proses yang

Percabangan bersyarat adalah suatu kondisi apabila syarat dari kondisi itu terpenuhi maka akan menjalankan suatu perintah dan apabila tidak terpenuhi maka akan

Misalnya untuk kolom yang pertama, semua kondisi terpenuhi, yaitu unit yang dipesan melebihi unit minimum potongan, pemesannya adalah dealer dan unit persediaan mencukupi,