Tutorial Mql4

63
Tutorial mql4 Ibnu ujar ! ( page) 2008-04-06 03:35:31 MQL4? What, Why and Where? ( page ) 2008-06-11 09:43:12 Syntax ( page ) 2008-06-11 09:27:24 Data Type ( page ) 2008-06-18 07:18:08 Operations & Expressions ( Page ) 2008-06-18 09:18:10 Loops & Decisions (Part1) ( Page ) 2008-06-30 13:04:53 Loops & Decisions (Part2) ( Page ) 2008-07-01 04:47:16 Functions ( Page ) 2008-07-04 07:59:09 Variables dalam MQL4 ( Page ) 2008-07-05 20:01:26 Preprocessor ( Page ) 2008-07-16 18:50:01 Your First Indicator (Part 1) ( Page ) 2008-10-05 23:14:07

Transcript of Tutorial Mql4

Page 1: Tutorial Mql4

Tutorial mql4

Ibnu

ujar ! ( page)2008-04-06 03:35:31

MQL4? What, Why and Where? ( page )2008-06-11 09:43:12

Syntax ( page )2008-06-11 09:27:24

Data Type ( page )2008-06-18 07:18:08

Operations & Expressions ( Page )2008-06-18 09:18:10

Loops & Decisions (Part1) ( Page )2008-06-30 13:04:53

Loops & Decisions (Part2) ( Page )2008-07-01 04:47:16

Functions ( Page )2008-07-04 07:59:09

Variables dalam MQL4 ( Page )2008-07-05 20:01:26

Preprocessor ( Page )2008-07-16 18:50:01

Your First Indicator (Part 1) ( Page )2008-10-05 23:14:07

Page 2: Tutorial Mql4

ujar !

Selamat datang di Pusat Belajar MQL4 Indonesia !

Disini kita akan mencoba belajar dan membedah misteri dan hal-hal yang selama ini munkin dianggap sangat membingungkan dan susah untuk dimengeti dalam bahasa MQL4, dengan memberikan Anda contoh-contoh dan materi yang cukup lengkap. Dan disini juga, saya akan menunjukkan begaimana menggunakan MQL4 untuk membuat Expert Advisor (EA), custom Indicators dan Scripts.

Jika Anda sekarang adalah seorang programmer yang mengenal dan mengetahui bahasa C (atau C++) maka Anda tahu MQL4 lebih banyak bahkan sebelum pembelajaran ini Saya mulai, Saya akan membimbing Anda untuk memahami bagaimana konsep pemprograman dalam bahasa MQL4 secara umum.

Jadi mari kita mulai dari yang paling dasar!

Syntax

11 06 2008

Saya berharap Anda memahami dan menikmati pada Pelajaran sebelumnya dimana Saya mencoba menjawab pertanyaan yang sangat mendasar; apa MQL4 ?, mengapa MQL4 dan di mana untuk menulis bahasa program MQL4?

Selalu menjadi pertanyaan yang paling besar dan yang paling utama adalah pertanyaan tentang “bagaimana MQL4 ini bekerja?”, dan barangkali sepenuhnya pelajaran yang akan datang adalah jawabannya.

Sekarang, Saya ingin Anda untuk mengosongkan pikiran Anda dari apapun (kebingungan), dan Saya harap Anda membaca secara hati-hati mengenai konsep yang berikutnya.

Ok Kita mulai…

Kita hari ini membicarakan tentang perintah “SYNTAX” dari MQL4.

Dan Saya sudah mengatakan kepada Anda sebelumnya, jika bahasa pemprograman Anda sebelumnya adalah C (atau C++ superset), maka Anda sudah mengetahui banyak tentang bahasa MQL4 bahkan sebelum Saya memulai pelajaran saya. Sebab syntax MQL4 adalah sangat mirip dengan syntax C.

Makna untuk kata SYNTAX adalah bahasa program yang dapat digambarkan sebagai berkut :

“Satuan dari kata tersedia (reserved word) yang diijinkan (diperbolehkan) dan parameternya serta perintah (urutan) kata yang benar di dalam ungkapan (expression) ini disebut bahasa “syntax”.“Wikipedia”

Maka, ketika kita sedang belajar bahasa syntax, maka kita sedang belajar tatabahasanya dan aturan menulis yang terdiri dari:

Page 3: Tutorial Mql4

• Format

• Komentar (comments)

• Identifiers

• Kata Pesan (reserved words)

1- Format:

Apabila Anda menulis kode Anda, Anda dapat dengan bebas menggunakan beberapa spasi, label dan baris kosong yang Anda inginkan untuk memisahkan kode Anda dari baris kode, atau sekedar untuk membuatnya dapat dlhat lebih menarik.

Sebagai contoh semua bentuk ini adalah sah, yang dapat dituliskan di MQL4:

double MacdCurrent, MacdPrevious, SignalCurrent;

double MacdCurrent, MacdPrevious, SignalCurrent;

double MacdCurrent, MacdPrevious, SignalCurrent;

Tetapi, seperti anda lihat, baris yang pertama menjadi lebih menarik dan mudah untuk dipahami. Dan di dunia ini segalanya ada perkecualian terhadap suatu aturan, yaitu kenyataan bahwa:

(1) Anda tidak dapat menulis atau menggunakan baris baru di dalam “mengendalikan compilasi (controller compilation)”

Anda akan mengetahui lebih banyak tentang “mengendalikan kompilasi” pada dalam pelajaran berikutnya tetapi ingat ini adalah suatu perkecualian.

Sebagai contoh baris kode yang berikutnya adalah cacat dan MQL4 compiler akan mengeluh/complain jika Anda menuliskannya:

#property

copyright “Copyright © 2004, MetaQuotes Software Corp.”

Ini adalah yang sah dalam “pengendalian compilasi”:

#property copyright “Copyright © 2004, MetaQuotes Software Corp.”

(2) Anda tidak dapat menggunakan spasi atau baris baru pada pertengahan Nilai tetap (constant values), Identifiers atau Kata kunci (Keywords). Sebagai contoh baris ini adalah sah:

extern int MA_Period=13;

“extern” dan “int” di sini adalah Kata kunci, “MA_PERIOD” adalah suatu Identifier dan “13” adalah suatu Nilai tetap..

Anda akan mengetahui lebih banyak di dalam pelajaran yang berikutnya.Sebagai contoh bentuk yang berikutnya adalah cacat:

extern int MA_Period=1 3;

Page 4: Tutorial Mql4

extern int MA_Period=1 3;

Pesan antara label 1 dan 3.

ex tern int MA_Period=13;

2- Komentar:

Untuk membuat lebih mudah di dalam dunia bahasa program, apapun bahasa program mempunyai gaya tersendiri pada menulis komentar. Anda menggunakan Komentar untuk menulis kode Anda di dalam baris yang mana compiler akan mengabaikan, maka kemudian yang Anda lakukan adalah bersihkan kode Anda dan membuatnya dapat dimengerti.

Bayangkan Anda telah menulis suatu program di dalam musim panas dan di dalam musim dingin Anda ingin membacanya kembali. Tanpa komentar - bahkan Anda penciptakan code- Anda tidak dapat memahami semua sehingga baris ini kelihatan sangat membingungkan.

MQL4(& C/C++) menggunakan dua macam gaya komentar:

1- Baris komentar tunggal

Komentar baris tunggal mulai dengan “//” dan berakhir dengan baris yang baru. Sebagai contoh: // Ini adalah suatu komentar extern int MA_PERIOD=13;

extern int MA_Period=13; //Ini adalah komentar lain

2- Komentar Multi-Baris

Komentar Multi-baris mulai dengan “/*” dan berakhir dengan “*/”. Dan Anda dapat berkomentar lebih dari baris atau lebih dengan meletakkan “/*” di start baris yang pertama, dan “*/” pada ujung baris yang terakhir.

Sebagai contoh:

/* ini adalah berkomentar multi baris */

Anda dapat juga bersarang komentar baris tunggal di dalam multi komentar bentuk seperti itu:

/* ini adalah multi // komentar lain bersarang di sini. baris berkomentar */

Ini adalah suatu komentar sah juga:

extern int /* HELLO! Saya komentar */ MA_Period=13;

Tetapi ini adalah komentar cacat:

extern int //test MA_Period=13;

3-Identifiers:

Suatu identifier adalah “nama yang Anda pilih untuk variabel Anda”, dan fungsi tetap. Sebagai contoh MA_PERIOD di sini adalah suatu identifier:

extern int MA_Period=13;

Page 5: Tutorial Mql4

Ada sedikit aturan dan pembatasan untuk memilih nama itu:

1- Panjang Identifier harus tidak melebihi 31 karakter.

2- Identifier harus mulai dengan huruf (besar atau kecil) atau menggaris-bawahi lambang _.

Maka, itu tidak dapat dimulai dengan suatu nomor atau lambang lain kecuali menggaris-bawahi lambang.

3- Anda tidak dapat menggunakan kata-kata yang tersedia sebagai suatu Identifier apapun. Anda akan lihat daftar dari kata-kata tersedia juga segera.

4- Identifiers’ nama adalah kasus sensitip.

Maka, MA_PERIOD tidak sama halnya ma_period atau MA_PERIOD

Marilah mengambil beberapa contoh:

Name1 Valid

Valid _Name1 Valid

Valid 1Name Invalid (Jangan start dengan nomor)

~Name1 Invalid (Anda hanya dapat menggunakan menggaris bawahi lambang)

N~ame1 Invalid (Anda hanya dapat menggunakan menggaris bawahi lambang)

i_love_my_country_and_my_country_loves_all_the_world Invalid (Anda tidak dapat melebihi 31 karakter panjangnya)

Color Valid

color Invalid

4- Kata-Kata yang tersedia (reserved words):

Ada “kata tersedia” yang mana menggunakan bahasanya untuk tindakan spesifik. Maka, tersedianya kepada pemakaian bahasa dan Anda tidak menggunakan nya sebagai suatu nama identifier atau untuk tujuan lain. Ini adalah daftar kata-kata yang tersedia (dari pemanduan MQL4):

DataType MemoryClasses Operators Other

bool extern Break false

color Static case true

datetime continue

double defaul

int else

string for

Page 6: Tutorial Mql4

void if

return

switch

while

Sebagai contoh bentuk kode yang berikutnya adalah cacat:

extern int datetime =13;

int extern =20;

double continue = 0;

Saya berharap Anda memahami dan menikmati pelajaran ini. Pelajaran yang berikutnya akan membahas tentang “Type Data.” Maka, Bersiaplah, pekerjaan berat yang riil sedang menunggu!

MQL4? What, Why and Where?

11 06 2008

MQL4 kependekan dari MetaQuotes Language 4.

MetaQuotes adalah perusahaan yang membuat Metratrader Trading Platform (MT4).

Dan untuk membuat platform ini lebih baik dari pada yang lain, perusahaan memutuskan untuk membuat bahasa pemprograman yang dapat memungkinkan para pengguna (Anda sendiri) untuk menuliskan strateginya sendiri agar mudah digunakan dalam platform tersebut (MT4).

Bahasa tersebut dapat Anda gunakan untuk membuat antara lain:

1. Expert Advisor

Expert Advisor adalah sebuah program yang dapat membuat strategi trading Anda berjalan secara otomatis. Misalnya dapat membuat (membuka) order (buy / sell) secara otomatis pada pasar, mengehentikan order (stop) secara otomatis, membatalkan atau mengganti orders dan membuat profit bagi anda.

2. Custom Indicators

Custom Indicator adalah sebuah program yang dapat membuat Anda menggunakan fungi-fungsi dari Indicators tehnikal, dan program ini tidak dapat membuat order secara otomatis.

3. Scripts

Page 7: Tutorial Mql4

Scipt adalah sebuah program yang didesain untuk mengeksekusi satu fungsi saja. Tidak seperti Expert Advisor, scripts hanya mengeksekusi satu perintah saja. Dan sudah barang tentu tidak ada akses terhadap fungsi-fungsi yang terdapat pada indicators.

Keterangan diatas adalah mengenai “apa” itu MQL4 ? “mengapa” menggunakan MQL4?

Sekarang, “dimanakah” kita harus menuliskan bahasa MQL4?

Untuk menuliskan code MQL4 kamu dan seperti yang lain yang ada di dunia ini, kamu dapat memilih satu dari dua cara, yaitu cara susah dan cara yang gampang.

1. Cara yang susah

Cara ini adalah dengan menggunakan text editor favorit kamu (Notepad) dan command prompt untuk meng- compile program.

Notepad bukanlah pilihan yang buruk, tapi jangan lupakan 2 hal :

1. Untuk menyimpan file yang sudah kamu buat dalam format plain text.

2. Untuk menyimpan file seperti .mq4 (agar lebih mudah nanti dibuka lagi dengan Metaeditor), tapi kamu bias menyimpan file kamu dengan extension yang kamu sukai.

Setelah enyimpan program kamu, sekarang saatnya ke tahap ekstra agar code kamu dapat bekerja. Yaitu tahap “compiling”.

Compiling mempunyai arti yaitu merubah bahasa atau naskah (script/code) yang baru saja kamu tulis ke dalam bahasa mesin yang dapat di mengerti oleh komputer.

MetaTrade telah dilengkapi dengan sbuah compiler milik mereka sendiri (program yang dapat merubah kode script kamu kedalam bahasa mesin) yang biasa disebut MetaLang.exe

Metalang.exe adalah sebuah paket program yang mengambil 2 parameter dan output berupa extension .ex4 (file yang dapat dimengerti oleh Metatrader).

Parameter yang pertama adalah “option” dan option yang dapat digunakan hanya –q quit (keluar).

Parameter yang kedua adalah seluruh akses kedalam file .mql kamu.

Misalnya

1. Cari file metalang.exe, letaknya biasa dalam folder Metatrader (folder saya letaknya di D:Program FilesMetatrader 4)

2. Buat sebuah file batch dan beri nama dengan compile.bat ( atau nama lain yang kamu suka)

3. Tulis baris ini dalam file bat tadi lalu simpan

Cd D:Program FilesMetatrader 4

Metalang –q “D:Program FilesMetatrader 4my_first_mql4_script.mq4”

(jangan lupa untuk merubah folder kedalam folder Metatrader yang telah kamu install)

Page 8: Tutorial Mql4

4. Jalankan .bat file dan jika kamu orang yang beruntung seperti saya maka kamu akan mendapat bentuk screen seperti ini.

Seperti yang kamu lihat kamu akan mendapat file output yaitu file “my_first_mql4_script.ex4”.

2. Cara yang gampang

Metatrader telah dilengkapi dengan IDE (integrated development editor) yang disebut MetaEditor yang mempunyai beberapa kelebihan seperti :

1. Sebuah text editor yang mempunyai fitur yang membedakan warna dalam pembuatan bahasa MQL4 ketika kamu menulis atau membaca kode.

2. Mudah dalam meng-compile program kamu, hanya dengan meng-click F5 dan Meta Editor yang akan bekerja susah payah untuk membuat file “.ex4” untuk kamu.

3. Dilengkapi juga dengan kamus yang dapat kamu akses dengan menandai dengan warna / highlight keyword / code kata yang kamu mau, kemudian tekan tombol F1.

Data Type

Selamat kita sampai pada pada pelajaran yang ketiga mengenai Data Type. Saya berharap Anda memahami dan menikmati pada pelajaran sebelumnya tentang “SYNTAX” , di dalam syntax kita coba untuk mengerti dan mencari jawaban tentang:

• Format apa yang dapat Anda gunakan untuk menulis kode MQL4?

• Bagaimana cara memperbaiki “komentar” dengan kode Anda?

• Apa Identifiers, dan apa yang menjadi ketentuan-ketentuan pilihan nya?

• Apa saja kata-kata yang tersedia dalam MQL4?

Sekarang, Marilah kita dalami bersama-sama apa itu TYPES DATA.

Apakah arti Type Data ?

Apapun bahasa program mempunyai “nama satu set yang disajikan ke memori data”. Sebagai contoh jika memori angka antara - 2147483648 sampai 2147483647, kebanyakan dari bahasa program akan menyebut data ini sebagai Jenis Data “Bilangan bulat” atau biasa disebut “Integer” .

Variabel?

Variabel adalah “nama yang mengacu pada bagian memori di mana data dapat disimpan“. Untuk membantu, cobalah Anda berpikir sebagai sebuah gambar (picture). Bayangkan jika memori adalah suatu perbedaan rangkaian kotak ukuran. Kotak Ukuran adalah tempat menyimpan memori yang diperlukan dalam bytes.

• Dalam rangka menggunakan suatu kotak untuk menyimpan data, kotak harus diberi suatu nama; proses ini dikenal sebagai deklarasi (declaration).

Page 9: Tutorial Mql4

• Di dalam proses deklarasi, Anda menggunakan suatu kata kepada computer, Ex. “Seperti apakah kotak terebut” dan “berapa ukuran kotak yang ingin Anda gunakan,” kata ini dikenal sebagai kata kunci (keyword).

• Itu sangat membantu jika Anda memberi nama kotak dengan suatu nama yang penuh arti yang berhubungan dengan jenis informasi yang membuat datanya lebih mudah untuk temukan, nama ini adalah variabel tetap (variable constant).

• Data ditempatkan ke dalam suatu kotak dengan menugaskan (assigning) data kepada kotak.

• Ketika kita menetapkan nilai kotak yang sudah Anda ciptakan kedalam baris yang sama, kemudian Anda deklarasikan variabel; proses ini disebut juga sebagai initialisasi (initialization).

Ketika kita menciptakan suatu variabel kita sedang menceritakan komputer itu yang kita ingin dia untuk menugaskan suatu ketetapan panjangnya memori di (dalam bytes) kepada variabel kita, karena penyimpanan suatu nomor sederhana, suatu huruf atau angka besar tidaklah akan menduduki spasi yang sama di dalam memori, sehingga komputer akan minta kita apakah macam data dan berapa banyak panjang data? Itu adalah untuk Type Data . Sebagai contoh jika kita berkata di baris kode ini kepada komputer:

int MyVaraible=0;

Itu berarti kita sedang minta komputer untuk menetapkan suatu blok panjangnya 4 bytes kepada nama variabel kita “MyVaraible”. Di dalam contoh yang sebelumnya kita sudah menggunakan:

int ß Keyword

int ß Integer data type.

int ß Declaration

MyVaraible ß Variable’s constant.

=0 ß Initialization

Kita akan mengetahui lebih banyak tentang variabel di dalam pelajaran akan datang di dalam MQL4, inilah macam dari Jenis Data:

• Bilangan bulat (int)

• Boolean (bool)

• Karakter (char)

• String (string)

• Nomor Titik-Kambang (double)

• Warna (color)

• Tanggalwaktu (datetime)

1- Bilangan bulat (int)

Page 10: Tutorial Mql4

Suatu bilangan bulat, adalah suatu nomor yang dapat dimulai dengan tAnda + atau - dan dibuat dari digit. Dan nilai cakupan nya adalah antara - 2147483648 sampai 2147483647.

MQL4 menghadiahi bilangan bulat itu di dalam sistim format desimal atau hexadecimal . Sebagai contoh nomor berikut adalah Bilangan bulat:

12, 3, 2134, 0, -230

12, 3, 2134, 0, -230

0×0A, 0×12, 0X12, 0×2f, 0xA3, 0Xa3, 0X7C7

0×0A, 0×12, 0X12, 0×2f, 0xA3, 0Xa3, 0X7C7

Kita menggunakan kata kunci int untuk menciptakan suatu variabel bilangan bulat.

Sebagai contoh:

int intInteger = 0;

int intAnotherIntger = -100;

int intHexIntger=0×12;

Sistim Desimal Dan Hexadecimal (int):

Notasi desimal adalah penulisan angka di dalam dasar 10, dan menggunakan digit (0, 1, 2, 3, 4, 5, 6, 7, 8 dan 9) untuk menghadirkan angka. Digit ini sering digunakan di suatu desimal yang mana adanya indikasi start dari suatu bagian kecil, dan dengan salah satu dari lambang tanda + (plus) atau - (minus) untuk sebagai tanda.

Hexadecimal adalah suatu sistem angka dengan suatu dasar 16 yang ditulis menggunakan lambang 0–9 dan A–F Atau a–f.

Sebagai contoh, angka sistim desimal 79 dapat ditulis seperti 4F di dalam hexadecimal.

2-Boolean (bool)

Variabel Boolean adalah suatu jenis data yang dapat memegang/menjaga hanya dua nilai, true/false (atau penyajian klasifikasi angka mereka, 0 dan 1). Dan itu menduduki 1 bit pada memori .

Di dalam MQL4, false,FALSE,False,true,TRUE dan True Adalah sama.

Nama Boolean Seperti ini diberikan sebagai penghormatan ahli matematik besar yang menemukannya yaitu Boole George.

Kita menggunakan kata kunci bool untuk menciptakan variabel boolean. Sebagai contoh:

bool I = true;

bool bFlag = 1;

bool bBool=FALSE;

3- Karakter (Character)

Page 11: Tutorial Mql4

MQL4 menyebut Jenis Data ini “Literal”. Suatu karakter adalah salah satu penggambaran dari 256 yang menggambarkan secara alfabet, klasifikasi, dan unsur-unsur kunci khusus, yaitu menggambarkan ASCII yang di-set (Kode Standard Amerika untuk Pertukaran Informasi). Karakter mempunyai nilai bilangan bulat yang sesuai dengan penempatan di dalam ketetapan ASCII. Anda tulis karakter yang tetap dengan penggunaan tanda kutip tunggal (’) melingkupi karakter.

Sebagai contoh:

‘a’ , ‘$’ , ‘Z’

Kita menggunakan kata kunci int untuk menciptakan suatu karakter variabel.

Sebagai contoh:

int chrA = ‘A’;

int chrB = ‘$’;

Beberapa Karakter yang disebut Karakter Khusus (Special Characters) tidak dapat hadir secara langsung di dalam tanda kutip yang tunggal sebab mereka sudah mempunyai suatu arti pesan khusus di dalam bahasa MQL4.

Di sini kita menggunakan sesuatu Urutan panggilan Escape (Escape Sequence ) untuk menyajikan karakter khusus itu, awalan karakter tersebut dengan menggunakan karakter backslash (\).

Sebagai contoh:

int chrA = ‘\\’; //karakter slash

int chrB = ‘\n’; //baris baru

Ini adalah daftar Karakter Urutan Escape yang digunakan di MQL4.

carriage return \r

new line \n

horizontal tab \t

reverse slash \\

single quote \’

double quote \”

hexadecimal ASCII-code \xhh

Tabel ASCII

 

Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex

————————————————————————————-

Page 12: Tutorial Mql4

(nul) 0 0000 0×00 | (sp) 32 0040 0×20 | @ 64 0100 0×40 | ` 96 0140 0×60

(soh) 1 0001 0×01 | ! 33 0041 0×21 | A 65 0101 0×41 | a 97 0141 0×61

(stx) 2 0002 0×02 | ” 34 0042 0×22 | B 66 0102 0×42 | b 98 0142 0×62

(etx) 3 0003 0×03 | # 35 0043 0×23 | C 67 0103 0×43 | c 99 0143 0×63

(eot) 4 0004 0×04 | $ 36 0044 0×24 | D 68 0104 0×44 | d 100 0144 0×64

(enq) 5 0005 0×05 | % 37 0045 0×25 | E 69 0105 0×45 | e 101 0145 0×65

(ack) 6 0006 0×06 | & 38 0046 0×26 | F 70 0106 0×46 | f 102 0146 0×66

(bel) 7 0007 0×07 | ‘ 39 0047 0×27 | G 71 0107 0×47 | g 103 0147 0×67

(bs) 8 0010 0×08 | ( 40 0050 0×28 | H 72 0110 0×48 | h 104 0150 0×68

(ht) 9 0011 0×09 | ) 41 0051 0×29 | I 73 0111 0×49 | i 105 0151 0×69

(nl) 10 0012 0×0a | * 42 0052 0×2a | J 74 0112 0×4a | j 106 0152 0×6a

(vt) 11 0013 0×0b | + 43 0053 0×2b | K 75 0113 0×4b | k 107 0153 0×6b

(np) 12 0014 0×0c | , 44 0054 0×2c | L 76 0114 0×4c | l 108 0154 0×6c

(cr) 13 0015 0×0d | - 45 0055 0×2d | M 77 0115 0×4d | m 109 0155 0×6d

(so) 14 0016 0×0e | . 46 0056 0×2e | N 78 0116 0×4e | n 110 0156 0×6e

(si) 15 0017 0×0f | / 47 0057 0×2f | O 79 0117 0×4f | o 111 0157 0×6f

(dle) 16 0020 0×10 | 0 48 0060 0×30 | P 80 0120 0×50 | p 112 0160 0×70

(dc1) 17 0021 0×11 | 1 49 0061 0×31 | Q 81 0121 0×51 | q 113 0161 0×71

(dc2) 18 0022 0×12 | 2 50 0062 0×32 | R 82 0122 0×52 | r 114 0162 0×72

(dc3) 19 0023 0×13 | 3 51 0063 0×33 | S 83 0123 0×53 | s 115 0163 0×73

(dc4) 20 0024 0×14 | 4 52 0064 0×34 | T 84 0124 0×54 | t 116 0164 0×74

(nak) 21 0025 0×15 | 5 53 0065 0×35 | U 85 0125 0×55 | u 117 0165 0×75

(syn) 22 0026 0×16 | 6 54 0066 0×36 | V 86 0126 0×56 | v 118 0166 0×76

(etb) 23 0027 0×17 | 7 55 0067 0×37 | W 87 0127 0×57 | w 119 0167 0×77

(can) 24 0030 0×18 | 8 56 0070 0×38 | X 88 0130 0×58 | x 120 0170 0×78

(em) 25 0031 0×19 | 9 57 0071 0×39 | Y 89 0131 0×59 | y 121 0171 0×79

(sub) 26 0032 0×1a | : 58 0072 0×3a | Z 90 0132 0×5a | z 122 0172 0×7a

(esc) 27 0033 0×1b | ; 59 0073 0×3b | [ 91 0133 0x5b | { 123 0173 0x7b

Page 13: Tutorial Mql4

(fs) 28 0034 0x1c | < 60 0074 0x3c | \ 92 0134 0x5c | | 124 0174 0x7c

(gs) 29 0035 0x1d | = 61 0075 0x3d | ] 93 0135 0×5d | } 125 0175 0×7d

(rs) 30 0036 0×1e | > 62 0076 0×3e | ^ 94 0136 0×5e | ~ 126 0176 0×7e

(us) 31 0037 0×1f | ? 63 0077 0×3f | _ 95 0137 0×5f | (del) 127 0177 0×7f

 

4-String

Jenis Data string adalah suatu array pada karakter terlampir didalam tanda kutip dobel (”) (double quote).

Karakter Array adalah suatu array yang menjaga satu karakter setelah yang lain, mulai pada index 0. Setelah karakter data yang terakhir, suatu Karakter NULL ditempatkan pada tempat array yang berikutnya. Itu tidak berarti jika ada tempat array tak terpakai setelah nya.

Suatu Karakter NULL adalah suatu karakter khusus (yang diwakili oleh KODE ASCII 0) tanda yang digunakan untuk akhiran string jenis ini .

Lihat figur 1 untuk suatu penyajian yang sederhana string tetap “hello” di dalam karakter array.

Figure 1 – Karakter array

MQL4 membatasi ukuran variabel string kepada 255 karakter dan beberapa karakter di atas 255 karakter akan menghasilkan kesalahan ini: juga panjang string (255 karakter maksimum).

Anda dapat menggunakan beberapa karakter khusus - tersebut di atas- di dalam string Anda yang tetap dengan awalan nya dengan backslash (\).

Kita menggunakan string kata kunci (keyword) itu untuk menciptakan suatu variabel string. Sebagai contoh:

string str1 = “Hello world1, with you coders guru”;

string str2 = “Copyright © 2005, \”Forex-tsd forum\”.”; //Pesan penggunaan karakter(”).

string str3 = “1234567890″;

5- Floating-point number (double)

Page 14: Tutorial Mql4

Nomor Titik-Kambang (Floating-point number) adalah nomor yang riil (yaitu, suatu nomor yang dapat berisi suatu bagian kecil di samping bagian bilangan bulat dipisahkan dengan (.) dot). Ex: 3.0,-115.5, 15 dan 0.0001.

Dan nilai cakupan nya adalah antara 2.2e-308 sampai 1.8e308.

Kita menggunakan kata kunci double untuk menciptakan suatu variabel titik-kambang (Floating-point). Sebagai contoh:

double dblNumber1 = 1000000000000000;

double dblNumber3 = 1/4;

double dblNumber3 = 5.75;

6- Warna (color)

Jenis Data warna adalah suatu jenis data khusus MQL4, yang memegang suatu warna nampak pada atas tabel Metatrader ketika Anda menciptakan Expert Advisor atau Custom Indictor dan pemakai dapat merubahnya dari property tab Expert Advisor atau Custom Indictor.

Anda dapat menetapkan Variabel tetap Warna dengan tiga cara:

1- Dengan nama warna: untuk akan mengetahui warna (memanggil set warna web) Anda dapat menugaskan nama warna kepada variabel warna, lihat daftar Warna dari set marna Web.

2- Dengan Penyajian Karakter (yang ada pada MQL4): Di dalam metode ini Anda menggunakan kata kunci (C) yang diikuti oleh dua kutipan isyarat (’). Antara kedua kutipan isyarat Anda menetapkan nilai yang merah, biru dan hijau (mengetahui seperti RGB nilai warna). Nilai-Nilai ini harus antara: 0 sampai 255. Dan Anda dapat tulis nilai sistem ini dengan desimal atau hexadecimal format.

3- Dengan harga bilangan bulat: Tiap-Tiap warna di dalam Warna Web yang diset mempunyai nilai bilangan bulat. Anda dapat menuliskan di dalam sistem format desimal atau hexadecimal . Dan Anda dapat menugaskan Nilai Bilangan bulat warna tersebut kepada variabel warna. Hexadecimal Format Warna kelihatan seperti ini: 0xBBGGRR di mana BB adalah nilai biru, GG adalah nilai hijau dan RR adalah nilai merah.

Sebagai contoh:

// symbol constants

C’128,128,128′ // gray

C’0×00,0×00,0xFF’ // blue

// named color

Red

Yellow

Black

// integer-valued representation

Page 15: Tutorial Mql4

0xFFFFFF // white

16777215 // white

0×008000 // green

32768 // green

Kita menggunakan kata kunci warna untuk menciptakan suatu variabel warna.

For example:

color clr1= Red;

color clr1= C’128,128,128′ ;

color clr1=32768;

Web Colors Set

Page 16: Tutorial Mql4

Perbesar

7-Datetime

Jenis Data Datetime adalah suatu jenis MQL4 data khusus, yang mengharapkan suatu tanggal dan data waktu. Anda set Variabel Datetime dengan penggunaan kata kunci (D) yang diikuti oleh dua tanda kutip (’). Antara kedua tanda kutip yang Anda tulis suatu baris karakter terdiri dari 6 bagian untuk nilai tahun, bulan, tanggal, jam, menit, dan detik. Datetime dapat tetap bertukar-tukar dari Jan 1, 1970 ke Dec 31, 2037.

For example:

D’2004.01.01 00:00′ // New Year

D’1980.07.19 12:30:27′

D’19.07.1980 12:30:27′

D’19.07.1980 12′ // sama dengan D’1980.07.19 12:00:00′

D’01.01.2004′ // sama dengan D’01.01.2004 00:00:00′

Kita menggunakan kata kunci datetime untuk menciptakan suatu variabel datetime .

Sebagai contoh:

datetime dtMyBirthDay= D’1972.10.19 12:00:00′;

datetime dt1= D’2005.10.22 04:30:00′;

Saya berharap Anda memahami pelajaran ini. Pelajaran yang berikutnya adalah tentang “Operasi & Ungkapan”(expression and operation) .

Operations & Expressions

18 06 2008

Selamat datang dipelajaran yang keempat. Pelajaran yang sebelumnya “Data Type” yang memperkenalkan banyak konsep baru; Saya berharap Anda memahami dan menikmati pembahasan sebelumnya,.

Sekarang, Marilah kita bahas bersama-sama mengenai Operasi & Ungkapan.

Apakah arti dari Operasi & Ungkapan (Operations & Expressions)?

Anda mengetahui operasi itu baik sekali. Jika Saya menceritakan kepada Anda bahwa (+,-,*,/) adalah operator ilmu hitung dasar, Anda akan ingat sangat cepat apakah arti operator.

Saya dengar Anda berkata “OK, Anda mengetahui operasi itu; bisa Anda ceritakan apakah arti dari ungkapan Identifiers?” (apakah Anda mengingatnya? Jika tidak, tinjau ulang pelajaran Syntax), Identifiers ini bersama dengan Operasi menghasilkan Ungkapan.

Anda bingung? marilah menggambarkannya di dalam sebuah contoh:

Page 17: Tutorial Mql4

x = (y*z)/w;

x,y,z dan w, di sini adalah identifiers.

Dan

=,* / adalah operator.

Keseluruhan baris diatas adalah suatu ungkapan.

Ketika ungkapan dikombinasikan bersama-sama membuat suatu statemen. Dan ketika statemen dikombinasikan bersama-sama membuat suatu fungsi dan ketika fungsi dikombinasikan bersama-sama membuat suatu program. Di dalam pembahasan kita kali ini kita akan memperbicangkan tentang berbagai macam operator yang digunakan MQL4. Maka, marilah mulai dengan operator ilmu hitung dasar:

1- Operator ilmu hitung/Arithmetical:

Di dalam MQL4 ada 9 Operasi Arithmetical. Berikut adalah daftar dengan pemakaiannya :

Operasi Arithmetical:

Operator Name Example Description

+ Operator penambahan A = B + C;penambahan B ke C dan sebagai tanda hasil A

- Operator pengurangan A = B-C;pengurangan C dari B dan sebagai tanda hasil A

+-Tanda perubahan

operatorA = - A;

Tanda perubahan dari A positif ke negatif

* Operator perkalian A = B * C;perkalian B dan C sebagai tanda hasil A.

/ Operator pembagi A = B / C;membagi B dan C dan sebagai tanda hasil A

% Operator modul A =A % C;

A adalah peringatan bagian ayunan C(Contoh: 10%2 akan menghasilkan 0,10%3 akan menghasilkan 1).

++ Operator Kenaikan A++;kenaikan A dengan 1(Contoh: jika A=1 membuatnya 2)

– Operator Pengurangan A–;pengurangan 1 dari A (Contoh: if A=2 membuatnya 1)

Catatan: Anda tidak dapat mengkombinasikan operator pengurangan dan kenaikan dengan ungkapan lain. Sebagai contoh Anda tidak dapat katakan:

A=(B++)*5;

Tetapi Anda dapat menulisnya seperti:

A++; B=A*5;

catatan: Bagaimana contoh di atas bekerja? marilah mengasumsikan:

Page 18: Tutorial Mql4

int A=1; // yang di-set A kepada 1

int B; A++; // meningkatkan A dengan 1,sekarang

A=2 B=A*5; // Yang berarti B=2*5

2- Operator Tugas (Assignment operators):

Tujuan apapun ungkapan (expression) adalah memberikan sebuah hasil dan set Assignment operators yang menentukan operand kiri dengan hasil ini.

Sebagai contoh:

A = B * C;

Di sini kita mengalikan B dan C dan menugaskan hasil itu untuk A.

(=) di sini adalah operator tugas.

Di dalam MQL4 ada 11 operator tugas Ini adalah daftarnya dengan pemakaian nya:

11 Operator Tugas:

Operator Name Example Description

= Operator Tugas A= B; Menugaskan B untuk A.

+= Operator Tugas Aditip A+= B;

sepadan dengan: A= A+ B; Menambahkan B ke A dan menugaskan hasil untuk A.

-=Subtractive Operator

Tugas A-= B;

sepadan dengan: A= A- B;Mengurangi B dari A dan menugaskan hasil untuk A.

*=Multiplicative

Operator Tugas A*= B;

sepadan dengan: A= A*B; Mengalikan A dan B dan menugaskan hasil untuk A.

/=Operator Tugas

Berkenaan dengan divisi

A/= B;

sepadan dengan: A= A / B; Membagi A pada B dan menugaskan hasil untuk A

%=Mengatur Operator

Tugas A %= B;

sepadan dengan: A= A% B; DapatKan itu peringatan divisi A pada B dan menugaskan hasil untuk A.

>>=Operator Tugas Pergeseran kiri

A >>= B;Itu bergeser kiri bit A dengan menetapkan banyaknya bit B.

<<=Operator Tugas

Pergeseran kananA <<= B;

Itu bergeser kanan bit A dengan menetapkan banyaknya bit B.

&= AND tugas A &= B;

dari nilai A dan B dan mengerjakan operator bitwise operasi AND pada nya.

Page 19: Tutorial Mql4

|= OR tugas A |= B;

Lihat di penyajian biner operator dari nilai A dan B dan mengerjakan bitwise operasi OR pada nya.

^= XOR Assignment A ^= B;

Lihat di penyajian biner operator dari nilai A dan B dan mengerjakan bitwise operasi khusus OR(XOR) pada nya.

3- Relational operators:

Relational Operator membandingkan dua nilai (operands) dan pada akhirnya menghasilkan false atau true saja. itu seperti pertanyaan “Apakah Yohanes lebih tinggi dari Alfred? Ya / tidak ?” Hasil akan jadi hanya false jika ungkapan menghasilkan nol dan true jika menghasilkan beberapa angka yang berbeda dari nol; Sebagai contoh:

4 == 4; //true

4 < 4; //false

4 <= 4 //true;

Di dalam MQL4 ada 6 Operator Relational.

Berikut ini adalah daftar nya dengan pemakaian dari tiap-tiap operator relational:

6 Operator Relational (Relational operators):

Operator Name Example Description

== Operator sama A== B; True Jika A sama B selain itu False.

!= Operator tidak sama A!= B; True Jika A tidak sama B selain itu False.

< Operator kurang

dariA < B;

True Jika A kurang dari B selain itu False.

> Operator lebih dari A > B;True Jika A adalah lebih besar dari B selain itu False.

<=Operator kurang dari atau sama

A<= B; True Jika A kurang dari atau sama B selain itu False.

>=Operator lebih besar

dari atau samaA >= B;

True Jika A adalah lebih besar dari atau sama B selain itu False.

4-Operator logis (Logical operators):

Operator logis biasanya diperoleh dari Aljabar Boolean, yang mana ini adalah suatu cara mathematical menggerakkan nilai konsep True di dalam suatu cara abstrak tanpa peduli akan apakah benar konsep tersebut mempunyai arti. Nilai True suatu konsep di dalam Nilai Boolean dapat mempunyai hanya satu saja dari kemungkinan dua nilai : True/False.

Page 20: Tutorial Mql4

Nama Operator MQL4 yang logis dan sebagai Operator Boolean MQL4 menggunakan 3 operator logis paling utama.

Berikut Ini adalah daftarnya dengan pemakaian dari tiap Logical operators:

Operator logis:

Operator Name Example Description

&& AND operator A && B;

Jika nilai yang manapun 0 nilai dari ungkapan adalah nol, cara lain ungkapan 1. Jika nilai sebelah kiri adalah 0, kemudian nilai sebelah kanan tidaklah dipertimbangkan.

|| OR operator A || B;

Jika kedua-duanya nilai adalah 0 kemudian nilai ungkapan adalah 0 cara lain nilai ungkapan 1. Jika nilai sebelah kiri adalah tidak 0, kemudian nilai sebelah kanan tidaklah dipertimbangkan.

! NOT operator !A;

Operator NOT memberlSayakan yang bukan nilai 0 kemudian nilai adalah 0, jika diberlSayakan nilai 0, nilai adalah 1.

5- Bitwise operators:

Operator Bitwise adalah serupa operator logis, kecuali mereka (Bitwise operators) bekerja pada suatu skala lebih kecil– penyajian data biner.

Bitwise operators yang tersedia di dalam MQL4:

Bitwise operators

Operator Name Example Description

& AND operator A & B;

Bandingkan dua bit dan menghasilkan suatu hasil 1 jika bit keduanya adalah 1; cara lainnya, kembalikan 0.

| OR operator A | B;

Bandingkan dua bit dan menghasilkan suatu hasil 1 jika bit adalah komplementer; cara lainnya, kembalikan 0.

^EXCLUSIVE-

ORA ^ B;

Bandingkan dua bit dan operator menghasilkan suatu hasil 1 jika baik . atau bit keduanya adalah 1; cara lainnya, kembalikan 0.

~ COMPLEMENT ~A;Yang digunakan untuk membalikkan semua bit operator operand .

>> The SHIFT

RIGHTA >> B;

Gerakkan bit di sebelah kanan, operator membuang jauh kanan bit , dan menugaskan yang paling kiri bit suatu nilai 0. Masing-Masing gerak di sebelah kanan secara efektif membagi op 1 separuh.

Page 21: Tutorial Mql4

<< The SHIFT

LEFT A << B;

Gerakkan bit ke kiri, operator membuang jauh bit kiri, dan menugaskan paling kanan bit suatu nilai 0. Masing-Masing gerak ke kiri secara efektif mengalikan op1 dengan 2.

& AND operator A & B;

Bandingkan dua bit dan menghasilkan suatu hasil 1 jika bit keduanya adalah 1; cara lainnya, kembalikan 0.

| OR operator A | B;

Bandingkan dua bit dan menghasilkan suatu hasil 1 jika bit adalah komplementer; cara lainnya, kembalikan 0.

^EXCLUSIVE-

ORA ^ B;

Bandingkan dua bit dan operator menghasilkan suatu hasil 1 jika baik . maupun keduanya bit adalah 1; cara lainnya, kembalikan 0.

~ COMPLEMENT ~A; Yang digunakan untuk membalikkan semua bit operator operand.

>> The SHIFT

RIGHTA >> B;

Gerakkan bit di sebelah kanan, operator membuang jauh bit kanan, dan menugaskan paling kiri bit suatu nilai 0. Masing-Masing gerak di sebelah kanan secara efektif membagi op1 separuh.

<< The SHIFT

LEFT A << B;

Gerakkan bit ke kiri, operator membuang jauh bit kiri, dan menugaskan paling kanan bit suatu nilai 0. Masing-Masing gerak ke kiri secara efektif mengalikan op1 dengan 2.

Catatan: Kedua Operand berhubungan dengan operator bitwise harus bilangan bulat (integers).

6- Operator Lain (Other operators):

Ada beberapa operator menggunakan MQL4 dan tidak memliki nilai sama dengan salah satu dari kategori yang sebelumnya:

1- The array indexing operator ([]).

2- Fungsi panggil operator(());

3- Operator Mesin pemisah Argumentasi Fungsi - Tanda koma(,)

Kita akan mengetahui lebih banyak tentang pelajaran Arrays dan Fungsi yang berikutnya, maka hanya perlu diingat bahwa ke-3 operator ini sebagai “operator lain”.

Operators Precedence:

Jika Anda tidak dengan tegas (tidak jelas) menandai adanya pesanan suatu nilai operasi, di mana Anda ingin operasi di dalam suatu ungkapan (expression) campuran untuk eksekusi lebih dahulu, pesanan ditentukan oleh hak tugas yang lebih tinggi kepada

Page 22: Tutorial Mql4

operator yang digunakan di dalam ungkapan itu. Operator dengan suatu hak yang lebih tinggi lebih mendapatkan evaluasi dulu.

Sebagai contoh, operator pembagi(/) mempunyai suatu hak yang lebih tinggi mengerjaannya dibanding operator tambah(+). Seperti itu, keduanya mengikuti statemen padanan:

x + y / 100 x + (y / 100) //unambiguous, recommended

Ketika menulis ungkapan campuran, Anda harus tegas dan menandai dengan tanda kurung () operator harus mengevaluasi lebih dulu. Praktek ini akan membuat kode anda lebih mudah untuk dibaca dan untuk dipelihara.

Tabel yang berikut menunjukkan hak tugas operator yang lebih tinggi di dalam MQL4 . Operator di dalam daftar tabel berikut ini adalah hak memesan yang lebih tinggi (di eksekusi lebih dahulu).

Operator dengan hak yang lebih tinggi dievaluasi sebelum operator dengan suatu hak yang lebih rendah. Operator pada kelompok yang sama mempunyai hak yang sama lebih tinggi. Ketika operator sama tingginya nampak dalam ungkapan (expression) yang sama, aturan harus memerintah yang mana yang seharusnya dievaluasi (dieksekusi) terkebih dahulu.

Semua operator biner kecuali operator tugas dievaluasi dari kiri ke kanan. Operator Tugas (assignment operator) dievaluasi kanan ke kiri.

Tabel urutan tugas operator dari yang lebih tinggi !

No Operator Urutan tugas Operatoe

1 ()Fungsi Panggilan Dari kiri ke kanan [] Pemilihan Unsur Array

2 !Peniadaan Dari kiri ke kanan

3 ~Peniadaan menurut Bitwise- Tanda yang mengubah operasi

4 *Perkalian Dari kiri ke kanan

5 /Divisi% Divisi Modul

6 +Penambahan Dari kiri ke kanan

7 -Pengurangan

8 << Pergeseran meninggalkan dari kiri ke kanan

9 >> Pergeseran kanan

10 < Kurang dari Dari kiri ke kanan

11 <=Kurang dari atau sama

12 > Lebih besar dari

Page 23: Tutorial Mql4

13 >=Lebih besar dari atau sama

14 ==sama dari kiri ke kanan

15 !=Tidak sama

16 &Menurut Bitwise AND operasi Dari kiri ke kanan

17 ^Eksklusif menurut Bitwise OR Dari kiri ke kanan

18 &&Logis AND Dari kiri ke kanan

19 ||Logis OR Dari kiri ke kanan

20 =Tugas Dari kanan ke kiri

21 +=Penambahan Tugas

22 -=Pengurangan Tugas

23 *=Perkalian Tugas

24 /=Divisi Tugas

25 %=Modul Tugas

26 >>=Tugas pergeseran kanan

27 <<=Tugas pergeseran kiri

28 &=Tugas bitwise AND

29 |=Tugas bitwise OR

30 ^=Tugas eksklusif OR

31 ,Tanda koma Dari kiri ke kanan

Loops & Decisions (Part1)

1 07 2008

Selamat datang dipelajaran yang ke-lima. Ini adalah bagian dari alur normal dari program yang Anda tulis di MQL4 (dan bahasa-bahasa pemprograman yang lain) yaitu pelaksanakan dari atas sampai ke bawah, dari tiap-tiap statemen

Suatu statemen adalah baris kode yang memerintahkan kepada komputer untuk melakukan sesuatu (memberitahu kepada computer Anda mengenai tugas tertentu) .

Page 24: Tutorial Mql4

Sebagai contoh:

Print(”Hello World”);

return 0;

Sebuah titik koma (semicolon ) pada akhir statemen adalah suatu bagian yang sangat penting dari syntax tetapi banyak (orang) yang melupakan, dan itu adalah 90% sumber dari kesalahan.

Tetapi eksekusi pelaksanaan atas dan bawah bukanlah satu-satunya kasus dan itu mempunyai dua perkecualian, Mereka adalah pengulangan dan keputusan (the loops and the decisions).

Program yang Anda tulis seperti - manusia- memutuskan harus berbuat apa di dalam menanggapi suatu keadaan yang berubah. Di dalam kasus ini alur kendali melompat dari satu bagian program ke program lain.

Statemen yang menyebabkan lompatan seperti itu disebut Statemen Kendali (Control Statements).

Seperti kendali yang terdiri dari pengulangan dan Keputusan (the loops and the decisions).

LOOPS

Pengulangan (loop) yang menyebabkan suatu bagian dari program Anda untuk “diulangi’ dan jumlahnya tertentu banyaknya. Dan pengulangan ini (sedang) berlanjut ketika beberapa kondisi adalah True dan berakhir ketika menjadi false.

Ketika pengulangan berakhir, Pengulangan ini melalui sebuah kendali (the control) ke statemen berikutnya mengikuti tahapan pengulangan.

Di MQL4 ada dua macam loops:

Untuk Loop

Untuk pengulangan mempertimbangkan pengulangan yang paling mudah sebab semua elemen kendalinya dikumpulkan pada satu tempat.

Untuk melaksanakan pengulangan suatu bagian dari kode yang ditetapkan banyaknya.

Sebagai contoh:

int j;

for (j=0; j<15; j++)

Print(j);

Bagaimana cara bekerjanya ini?

Untuk statemen terdiri dari kata kunci (keyword), yang diikuti oleh tanda kurung yang berisi tiga ungkapan (expression) yang dipisahkan oleh titik koma (;):

for(j=0; j<15; j++)

Page 25: Tutorial Mql4

Tiga ungkapan ini adalah ungkapan initialisasi (the initialization expression), ungkapan test (the test expression) dan ungkapan kenaikan (the increment expression):

j=0 ungkapan initialisasi

j<15 ungkapan penguji (tes)

J++ ungkapan kenaikan

Badan pengulangan (The body of the loop) adalah kode untuk dieksekusi yang ditetapkan dalam jumlah tertentu jumlah pengulangannya:

Print(j);

Ini melaksanakan badan pengulangan (body of the loop) di dalam contoh kita untuk 15 kali.

Catatan: untuk statemen tidak diikuti oleh suatu titik koma. sebab untuk statemen dan badan pengulangan bersama-sama dianggap sebagai suatu statemen program.

Ungkapan Initialisasi (the initialization expression) :

Ungkapan Initialisasi dieksekusi hanya sekali, ketika pengulangan start pertama. Dan tujuan nya untuk memberi pengulangan variabel suatu nilai awal (0 di contoh yang saya berikan).

Anda dapat mengumumkan variabel pengulangan diluar (sebelumnya) seperti pengulangan pada contoh :

int j;

Atau Anda dapat membuat deklarasi di dalam tanda kurung pengulangan seperti ini:

for (int j=0; j<15;j++)

Yang sebelumnya dua bentuk kode adalah sama, kecuali lingkup dari tiap variabel (Anda akan mengetahui lebih banyak tentang deklarasi dan variabel di dalam lingkup Pelajaran Variabel).

Metode yang di luar deklarasi membuat tiap-tiap baris di dalam kode block untuk memahami tentang variabel, sedangkan di dalam deklarasi hanya membuat pengulangan untuk memahami tentang variabel.

Anda dapat menggunakan tambahan untuk satu ungkapan initialisasi dan diharuskan membuat pengulangan ini dengan pemisahan dengan tanda koma seperti ini (,) :

int i;

int j;

for (i=0 ,j=0;i<15;i++)

Print(i);

Ungkapan Test (The Test expression):

Page 26: Tutorial Mql4

Ungkapan Test adalah suatu ungkapan relational yang menggunakan operator relational (silahkan mengacu pada operator relational (relational operators) di dalam pelajaran yang sebelumnya).

Itu yang dievaluasi oleh pengulangan setiap kali mengulang yang dieksekusi untuk menentukan jika mengulang akan berlanjut atau akan stop. Itu akan berlanjut jika hasil ungkapan adalah True dan akan stop jika false.

Di dalam contoh saya badan pengulangan akan berlanjut pencetakan i (Print(i)) sedang case j<15 true. Sebagai contoh j= 0,1,2,3,4,5,6,7,8,9,10,11,12,13 dan 14. Dan ketika j menjangkau 15 pengulangan akan stop dan kendali lewat untuk statemen yang mengikuti pengulangan.

Ungkapan Kenaikan (The Increment expression):

Ungkapan Kenaikan merubah nilai variabel dari pengulangan (j di dalam contoh yang saya berikan) dengan meningkatkannya dengan nilai 1.

Eksekusi ini dilakukan pada tahapan terakhir dalam tahap pengulangan (loop steps). langkah pengulangan ini dieksekusi setelah melalui tahapan initializing variabel pengulangan, menguji ungkapan (test) dan melaksanakan badan pengulangan.

Figure 1 shows a flow chart of the for loop.

Seperti ungkapan initialisasi, di dalam ungkapan kenaikan yang Anda dapat gunakan ungkapan kenaikan lebih dari satu di dalam pengulangan dengan pemisahan dengan tanda koma seperti ini (,) :

int i;

int j;

for (i=0 ,j=0;i<15,i<;i++,j++)

Print(i);

Tetapi Anda hanya dapat menggunakan satu ungkapan test.

Catatan lain mengenai ungkapan kenaikan, ia tidak hanya dapat meningkatkan variabel pengulangan, tetapi dapat melaksanakan dan/atau melakukan operasi seperti contoh pengurangan variabel pengulangan seperti ini:

int i;

for(i=15;i>0,i<;i–)

Print(i);

Contoh diatas akan initialize i bagi 15 dan start pengulangan, setiap kali berkurang i dengan 1 dan memeriksa ungkapan test yaitu (i>0).

Program ini akan menghasilkan : 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1.

Multi Statemen di dalam badan pengulangan:

Page 27: Tutorial Mql4

Di dalam contoh Saya sebelumnya, kita menggunakan hanya satu statemen di dalam badan pengulangan, ini adalah tidak selalu menjadi kasus (case).

Anda dapat menggunakan multi statemen di dalam badan pengulangan yang delimited dengan mengait seperti ini:

for(int i=1;i<=15;i++)

{

Print(i);

PlaySound(”alert.wav”);

}

Kode di atas badan pengulangan berisi dua statemen, program akan melaksanakan statemen yang pertama kemudian yang kedua satu setiap kali pengulangan mengeksekusi.

Jangan melupakan untuk menaruh suatu titik koma pada ujung tiap-tiap statemen.

Statemen Break (The Break Statement):

Ketika memberi kata kunci (the keyword) untuk pengulangan (termasuk ketika pengulangan dan statemen tombol (switch statement)) pelaksanaan pengulangan akan berakhir dan kendali lewat statemen mengikuti bagian pengulangan.

Sebagai contoh:

for(int i=0;i<15;i++)

{

if((i==10)

break;

Print(i);

}

Contoh di atas akan melaksanakan pengulangan sampai i menjangkau 10, di dalam case kata kunci break akan berakhir pengulangan. Kode akan menghasilkan nilai ini: 0,1,2,3,4,5,6,7,8,9.

Statemen Berlanjut (The Continue Statement):

Mengambil statemen break Anda ke luar pengulangan, sedang statemen berlanjut akan mendapatkan Anda kembali ke puncak pengulangan (tanda kurung). Sebagai contoh:

for(int i=0;i<15; i++)

{

if(i==10) continue;

Print(i)

Page 28: Tutorial Mql4

}

Contoh di atas akan melaksanakan pengulangan itu sampai i menjangkau 10, di dalam case berlanjut kata kunci akan mendapatkan pengulangan itu kembali ke puncak pengulangan tanpa mencetak i yang kesepuluh kali. Kode akan menghasilkan nilai ini: 0,1,2,3,4,5,6,7,8,9,11,12,13,14.

Catatan terakhir:

Anda dapat meninggalkan ke luar beberapa atau semua ungkapan yang seharusnya melakukan pengulangan jika Anda ingin, sebagai contoh:

for(;;)

pengulangan ini seperti sedang pengulangan dengan suatu ungkapan test selalu mulai true. Kita akan memperkenalkan pengulangan (while loop) kepada Anda segera.

The while Loop

Untuk pengulangan pada umumnya yang digunakan adalah case yang Anda sendiri mengetahui berapa kali pengulangan akan jadi dieksekusi. Apa yang akan terjadi jika Anda tidak mengetahui berapa kali Anda ingin melaksanakan pengulangan itu? Inilah gunanya while loop.

While loop seperti pengulangan yang mempunyai suatu Ungkapan Test. Tetapi while loop ini tidak mempunyai initialisasi atau Ungkapan Kenaikan.

contoh:

int i=0;

while(i<15)

{

Print(i);

i++;

}

Di dalam contoh Anda memberi arti sebagai berikut:

• Variabel pengulangan yang telah diumumkan (declare) dan initialized sebelum pengulangan, Anda tidak bisa mengumumkan atau initialize itu di dalam tanda kurung dari while loop seperti untuk pengulangan (loop).

• i++ di sini statemen bukanlah ungkapan kenaikan yang seperti anda pikir, ini hanyalah badan pengulangan yang harus berisi beberapa statemen yang merubah variabel pengulangan itu, jika tidak pengulangan tidak pernah akan berakhir.

Bagaimana contoh di atas bekerja?

Statemen sementara (The While statement) berisi hanya Ungkapan Test, dan itu akan menguji tiap-tiap pengulangan, jika ia true pengulangan akan melanjut, jika ia false pengulangan akan berakhir dan kendali lewat statemen mengikuti bagian pengulangan.

Page 29: Tutorial Mql4

Figure 2 shows a flow chart of the while loop.

Di dalam contoh pengulangan ini akan melaksanakan hingga i menjangkau 16 dalam hal ini i<15=false dan pengulangan berakhir.

Saya sudah mengatakan kepada Anda sebelumnya bahwa while loop mirip seperti pengulangan (loop), keduanya mempunyai aspek yang sama, yaitu :

1.Anda dapat menggunakan statemen break dan berlanjut untuk mereka berdua.

2.Anda dapat tunggal atau multi statemen di dalam badan pengulangan untuk mereka berdua, di dalam menggunakan case multi statemen Anda harus membatasi nya dengan kait ({}).

3. Dan yang serupa salinan untuk (;;) adalah while(true)

Loops & Decisions (Part2)

1 07 2008

 

Selamat datang di pelajaran yang ke-enam tentang MQL4. Saya berharap Anda mengerti dan memahami pelajaran yang sebelumnya. Di dalam pelajaran yang sebelumnya, kita sudah membicarakan tentang Pengulangan (loop).

Dan kita sudah melihat bahwa Pengulangan adalah salah satu dari dua jalan yang kita gunakan untuk berubah arus normal pelaksanaan program - dari atas sampai ke bawah. Cara yang kedua dalah Keputusan (decision).

Keputusan di dalam suatu program menyebabkan suatu lompatan (dalam waktu tertentu) ke dalam suatu bagian lain, yang berbeda pada program, tergantung pada nilai dari suatu ungkapan (expression).

Berikut ini adalah bermacam-macam statemen keputusan yang tersedia di MQL4:

Statemen if (The if Statement)

Statemen if adalah statemen keputusan yang paling sederhana, contoh:

if ( x < 100 )

Print(”hi”);

Di sini if kata kunci telah diikuti dengan tanda kurung, di dalam tanda kurung Ungkapan Test (x< 100), ketika hasil ungkapan test adalah true badan if akan melaksanakan (Print (”Hi”);) , dan bila if itu adalah false, kendali lewat kepada statemen mengikuti blok if.

Figure 1 - Flow chart of the if statement

Multi Statemen di dalam Badan if (Multi Statements in the if Body):

Page 30: Tutorial Mql4

Seperti pengulangan (the loop), badan if dapat terdiri lebih dari statemen yang delimited oleh kait (braces).

Sebagai contoh:

if(current_price==stop_lose)

{

Print(”you have to close the order”);

PlaySound(”warning.wav”);

}

Pesan lambang == di dalam Ungkapan Test; adalah salah satu dari Operator Relational yang Anda sudah belajar pada pelajaran 4, operasi & ungkapan (operation and expression).

Ini adalah salah satu sumber dari banyak kesalahan ketika Anda melupakan dalam menggunakan operator tugas =.

Nesting (Sarang):

Pengulangan dan Struktur Keputusan dapat dipoles satu dengan yang lain; Anda dapat mensarangkan (menempatkan) if di dalam pengulangan, pengulangan di dalam if, if di dalam if, dan seterusnya.

Contoh:

for(int i=2 ; i<10 ; i++)

if(i%2==0)

{

Print(”It’s not a prime nomber”);

PlaySound(”warning.wav”);

}

Di dalam contoh yang sebelumnya struktur if bersarang di dalam pengulangan.

Catatan: Anda akan mencatat bahwa tidak ada kait (braces) di sekitar badan pengulangan, ini disebabkan statemen if dan statemen di dalam badan nya, dianggap sebagai statemen tunggal.

Statemen If…Else (The if…else Statement) :

Statemen if membiarkan perintah Anda untuk melakukan sesuatu jika kondisi true, dan kita ingin membiarkan perintah penulisan yang lainnya dalam kondisi false. Itulah gunanya statement if…else .

Ini terdiri dari statemen if di ikuti dengan statemen yang lain atau suatu blok statemen, kemudian selain itu kata kunci (the else keyword) yang diikuti oleh statemen lain atau suatu blok statemen.

Page 31: Tutorial Mql4

Seperti contoh ini:

if(current_price>stop_lose)

Print(”It’s too late to stop, please stop!”);

else

Print(”you playing well today!”);

ungkapan test if di dalam statemen if true, program satu pesan, if bukan true, itu akan mencetak lain.

Figure 2 shows the flow chart of the if…else statement:

Mensarangkan (menempatkan) Statemen If…Else (Nested if…else Statements) :

Anda dapat mensarangkan statemen if…else di dalam statemen if, Anda dapat mensarangkan statemen if…else di dalam statemen if…else , dan seterusnya. Seperti ini:

if(current_price>stop_lose)

Print(”It’s too late to stop, please stop!”);

if(current_price==stop_lose)

Print(”It’s time to stop!”);

else

Print(”you playing well today!”);

Terdapat potensi masalah di dalam mensarangkan statemen if…else (nested if…else statements), Anda dapat dengan tidak hati-hati menempatkan suatu else dengan if yang salah.

Untuk memecahkan kasus ini yang Andad apat melakukan salah satu dari dua hal yaitu:

1- Andadapat membatasi pasangan if…else dengan kait seperti ini:

if(current_price>stop_lose)

{

Print(”It’s too late to stop, please stop!”);

if(current_price==stop_lose)

Print(”It’s time to stop!”);

else

Print(”you playing well today!”);

}

Page 32: Tutorial Mql4

2- Jika Anda tidak dapat melakukan solusi yang pertama (di dalam banyak case statemen if…else atau Anda malas untuk melakukannya) untuk mengambilnya sebagai suatu aturan.

Tempatkanlah else dengan yang paling if dekat. (berikut ini baris if(current_price==stop_lose)).

Statemen switch (The switch Statement) :

Jika Anda mempunyai suatu alur perintah program yang besar, dan semua keputusan tergantung pada nilai variabel yang sama, Anda dapat menggunakan suatu statemen switch di sini.

Contoh:

switch(x)

{

case ‘A’:

Print(”CASE A”);

break;

case ‘B’:

case ‘C’:

Print(”CASE B or C”);

break;

default:

Print(”NOT A, B or C”);

break;

}

Di dalam contoh di atas kata kunci switch diikuti dengan tanda kurung, di dalam tanda kurung itu Andaakan temukan switch tetap (the switch constant), switch tetap ini dapat merupakan suatu bilangan bulat (integer), suatu karakter yang tetap (character constant) atau suatu ungkapan tetap (constant expression). Ungkapan yang tetap tidak harus meliputi variable, sebagai contoh:

case X+Y: is invalid switch constant.

Bagaimana contoh diatas bekerja?

Statemen switch bertemu dengan x yang tetap (the constant x) dengan salah satu dari cases yang tetap (y).

Di dalam cases x==’A’ program akan mencetak “cases A” dan statemen break akan mengambil Anda kendali ke luar dari blok switch.

Page 33: Tutorial Mql4

Di dalam cases x==’B’ atau x==’C’, program akan mencetak “cases B atau C”. itu disebabkan tidak ada statemen break setelah cases ‘B’:.

Di dalam cases yang x ! = cases yang manapun yang tetap, statemen switch akan melaksanakan kasus itu secara default dan mencetak “NOT A, B or C”.

Figure 3 shows the flow chart of the switch statement

Functions

4 07 2008

Selamat datang di dunia Fungsi (Functions) MQL4.

Fungsi dalam bahasa manapun memiliki dua tahapan, yaitu :

Mempelajarinya yang mana kadang-kadang menjadi suatu hal yang membosankan.

Menggunakannya yang mana dapat selalu membantu jika terjdi kesulitan.

Marilah start pelajaran yang ketujuh.Apakah arti dari fungsi?Fungsi ibarat seperti mesin sosis, Anda masukkan daging dan rempah-rempah kemudian keluar sosis. Daging dan rempah-rempah adalah parameter fungsi (function parameters); sosis adalah fungsi nilai kembali (function return). Mesin sendiri adalah badan fungsi (function body).

Hanya satu perbedaan antara fungsi dan mesin sosis Anda, sebagian dari fungsi akan dikembalikan secara percuma (fungsi yang percuma di dalam MQL4 disebut void).

Marilah mengambil beberapa contoh :

double // type of the sausage – return value

my_func (double a, double b, double c) // function name and parameters list (meat &

spices)

{

return (a*b + c); // sausage outs - returned value

}Seperti yang anda lihat di atas, fungsi mulai dengan jenis nilai yang dikembalikan “double” yang diikuti dengan nama fungsi yang diikuti dengan tanda kurung. Di dalam tanda kurung yang Anda menaruh rempah-rempah dan daging. Disitulah Anda meletakkan parameter dan nama fungsi tersebut.

Di sini kita sudah menaruh tiga parameter double a, double b, double c. Kemudian fungsi badan start dan berakhir dengan kait ({}). Di dalam contoh kami fungsi badan akan menghasilkan operasi (a*b+c). Kata kunci Kembali (The return keyword) bertanggung jawab terhadap pengembalian hasil akhirnya.Kata kunci kembali (The Return Keyword):Kata kunci kembali mengakhiri fungsi tersebut (seperti kata kunci break yang ada dalam

Page 34: Tutorial Mql4

pengulangan (the loop)), dan itu memberi kendali kepada panggilan fungsi (function caller) (kita akan membahas ini nanti). Kata kunci kembali dapat meliputi suatu ungkapan di dalam tanda kurung nya seperti di atas, contoh (kembali) return (a*b+ c); dan ini berarti untuk mengakhiri fungsi tersebut dan kembali pada hasil ungkapan (expressiom).Dan itu juga dapat dilakukan tanpa ungkapan, dan hanya dapat bekerja dalam hal ini adalah untuk berakhir fungsi terebut.Catatan : Tidak semua fungsi menggunakan kata kunci kembali tersebut, yang terutama jika ia tidak ada nilai kembali.Seperti contoh berikut ini:void // void mean there’s no sausage – returned value.

my_func (string s) // function name and parameters list (meat & spices)

{

Print(s);

}

Fungsi di atas nilai tidak akan kembali, tetapi itu akan mencetak parameter yang Anda sajikan. Ketika fungsi tidak punya nilai kembali maka Anda menggunakan “void” sebagai jenis fungsi kembali . Semacam ini berfungsi dalam beberapa bahasa program disebut “ Metoda” (Methods), tetapi MQL4 menyebutnya fungsi.Fungsi Panggilan (Function call):Sekarang Kita mengetahui definisi fungsi dengan baik (Saya berharap demikian)? Bagaimana cara menggunakan fungsi itu di dalam MQL4 Anda?Terdapat langkah-langkah ekstra setelah penulisan fungsi Anda untuk menggunakan fungsi itu di dalam program Anda. Langkah nya adalah memanggil-nya (calling it) (using it /menggunakannya).Asumsikan Anda mempunyai suatu fungsi mengumpulkan tambahan dua bilangan bulat.Berikut ini adalah fungsi:

int collect (int first_number, int second_number)

{

return(first_number+ second_number);

}

Anda mengetahui bagaimana fungsi yang sebelumnya bekerja, tetapi Anda ingin menggunakannya.Maka Anda akan menggunakan fungsi tersebut seperti ini:

int a = 10;

int b = 15;

int sum = collect(a,b);

Print (sum);Contoh di atas akan mencetak 25 (apakah itu suatu yang ajaib / magic).Tetapi bagaimana cara mengetahui hal ini?Baris magic adalah int sum= collect(a,b); di sini Anda mengumumkan (declared) sebuah variabel (sum / penjumlahan) untuk memegang nilai kembali fungsi itu dan memberi

Page 35: Tutorial Mql4

fungsi itu dua parameter ( a,b). Anda pada dasarnya memanggil fungsi itu (called the function).

MQL4 ketika melihat nama fungsi (function name) Anda, Maka ia akan mengambil parameter Anda dan pergi kepada fungsi dan itu akan kembali – segera- dengan hasil dan menempatkan nya di dalam baris yang sama.

Hal ini mirip seperti pengcopian semua baris fungsi sebagai ganti tempat yang Anda panggil fungsi itu ke dalam, mudah bukan ?

Fungsi nest di dalam fungsi (Nesting functions inside function):Anda dapat memfungsikan sebuah nest (atau lebih) di dalam badan dari fungsi yang lain. Ini disebabkan baris pemanggil dipelakukan seperti umumnya statemen normal (ia benar-benar sebuah statemen).

Sebagai contoh:

Kita akan menggunakan uraikan fungsi collect (collect function) di atas di dalam fungsi yang baru dan yang lain yang mana pekerjaannya adalah mencetak hasil koleksi:

void print_collection (int first_number, int second_number)

{

int sum = collect(first_number, second_number);

Print(sum);

Di sini kita memanggil itu fungsi collect di dalam print_collection fungsi dari badan dan mencetak hasil itu. void berarti ia tidak ada nilai yang kembali (apakah Anda masih ingat ?).

MQL4 Special functions init(), deinit() and start():

Di dalam MQL4, tiap-tiap program mulai dengan fungsi “ init()” (initialize) dan itu terjadi ketika Anda menggunakan program (Expert advisor atau Custom indicator) ke dalam chart Metatrader atau pada saat Anda ubah simbol keuangan atau periode chart MT4. Dan pekerjaannya initializing variabel yang utama dari program Anda (Anda akan memahami tentang variabel initialisasi ini dalam pelajaran yang berikutnya).

Ketika program Anda menyelesaikan pekerjaan atau Anda menutup chart window MT4 atau berubah simbol keuangan atau periode chart atau juga shutdown Metatrader terminal, fungsi itu ” deinit()” (de-initialize) akan terjadi.

Fungsi yang ketiga (yang mana adalah yang paling utama) “ start()” akan terjadi setiap kali kutipan baru diterima, Anda menuliskan/menghabiskan 90% program Anda di dalam fungsi ini.

Kita akan mengetahui banyak mengenai penggunaan fungsi ini dalam pembahasan yang sesungguhnya nanti ketika kita bersama-sama menuliskan Expert advisor Dan Custom Indictor.

Page 36: Tutorial Mql4

Variables dalam MQL4

6 07 2008

 

Saya berharap Anda menikmati pelajaran yang sebelumnya dan Saya berharap Anda sudah siap untuk tantangan variabel (variables): Saya merekomendasikan kepada Anda untuk membaca pelajaran “JENIS/TIPE DATA (DATA TYPES)” sebelum membaca pelajaran ini.

Sekarang, marilah kita mulai pembahasan tentang Variabel ini.

Apakah yang dimaksud dengan variabel?

Seperti telah Saya jelaskan kepada Anda sebelumnya, variabel adalah nama yang mengacu pada bagian dalam memori, dimana data dapat disimpan.

Untuk membantu Anda berpikir, bayangkan ini sebagai sebuah gambaran, bayangkan memori adalah satu rangkaian seri sebuah kotak yang berbeda-beda ukurannya. Ukuran kotak adalah area penyimpanan memori yang membutuhkan bytes.

Dalam rangka menggunakan suatu kotak untuk menyimpan data, kotak harus diberi suatu nama; proses ini dikenal sebagai deklarasi (declaration).

Dalam memproses deklarasi, Anda menggunakan suatu kata yang memberitahu kepada komputer apa macam dan ukuran kotak yang Anda ingin gunakan, kata ini disebut sebagai kata kunci (keyword).

Ini sangat membantu jika Anda memberi nama sebuah kotak dengan suatu nama penuh arti yang berhubungan dengan jenis informasi yang membuat nya lebih mudah untuk menemukan data, nama ini adalah variabel tetap (variable constant)..

Data ditempatkan ke dalam suatu kotak dengan menugaskan (assigning) data kepada kotak.

Ketika kita menetapkan nilai kotak, Anda sudah menciptakan pada baris yang sama Anda mengumumkan variabel; proses ini dikenal sebagai initialisasi (initialization).

Ketika kita menciptakan suatu variabel kita sedang memberitahu kepada komputer bahwa kita menginginkan dia untuk bekerja pada panjang memori yang ditetapkan (di dalam bytes) kepada variabel kita, sejak penyimpanan suatu nomor sederhana, satu nomor atau sejumlah nomor yang banyak/besar tidaklah akan menduduki ruang yang sama di dalam memori, sehingga komputer akan minta kita apa macam data dan berapa banyak panjang data? Ini adalah gunanya tipe Data (Data Type).

Sebagai contoh jika kita berkata baris kode ini kepada komputer:

int MyVaraible=0;

Itu berarti kita sedang minta komputer itu untuk menetapkan suatu blok 4 bytes panjangnya kepada variabel kita dengan nama “MyVaraiable””.

Di dalam contoh yang sebelumnya kita sudah menggunakan:

int ← Keyword

int ← Integer data type.

Page 37: Tutorial Mql4

int ← Declaration

MyVaraible ← Variable’s constant.

=0 ← Initialization

Kita akan mengetahui lebih banyak tentang variabel di dalam pelajaran yang akan datang .

Di dalam MQL4, ini adalah Jenis macam tipe Data (Data types):

• Integer (int)

• Boolean (bool)

• Character (char)

• String (string)

• Floating-point number (double)

• Color (color)

• Datetime (datetime)

Saya telah mengcopy sebelumnya sedikit baris dari pelajaran TIPE DATA untuk Anda. Untuk mengetahui apa variabel, sekarang bagaimana cara untuk mengumumkan variabel itu:

Declaration:

Mengumumkan suatu variabel berarti untuk memperkenalkan nya kepada dunia dan menetapkan jenis nya. Dengan penggunaan kata kunci (keywords) yang sudah Anda pelajari pada pelajaran TIPE DATA (int, double, char, bool, string, color and datetime) dengan nama Anda yang pilih kepada variabel tersebut..

Sebagai contoh:

int MyVaraible;

Di sini Anda mengumumkan suatu variabel dengan nama MyVaraible yang mana adalah suatu jenis bilangan bulat (integer type). Dan sebelum deklarasi (declaration) Anda tidak dapat menggunakan MyVariable dalam kode Anda. Jika Anda meggunakannya tanpa deklarasi, maka MQL4 compiler akan mengeluh dan akan memberitahu Anda kira-kira seperti ini: ‘MyVaraible’ - variable not defined. 1 error(s), 0 warning(s).

Initialization:Initializing sebuah variabel itu berarti untuk menugaskan suatu nilai kepada variable tersebut, sebagai contoh MyVaraible=0; Anda dapat initialize variabel di baris yang sama dari deklarasi, seperti contoh: int MyVaraible=0;

Dan Anda dapat mengumumkan (declare) variabel itu di dalam satu tempat dan initialize itu di dalam tempat lain seperti ini:

int MyVaraible;

Page 38: Tutorial Mql4

MyVaraible=5;

Tetapi tetapkanlah pikiran Anda mengenai fakta ini: deklarasi harus sebelum initialisasi (the declaration must be before the initialization).

Lingkup variable (Scopes of variables):

Ada dua lingkup variabel, Global dan Lokal.

Arti Lingkup adalah bagian yang mana kode akan memahami tentang variabel itu dan dapat menggunakan variabel tersebut.

Variabel Lokal mempunyai arti bahwa mereka tidaklah dapat dilihat dari dunia luar di mana mereka telah diumumkan (declared). Sebagai contoh variabel mengumumkan di dalam fungsi (inside function) adalah lokal kepada blok fungsi kode (function block of code), dan variabel mengumumkan di dalam pengulangan (inside the loop) atau blok keputusan kode (decisions block) adalah lokal kepada blok-blok tersebut dan dapat dilihat atau digunakan di luar mereka.

Sebagai contoh:

double my_func (double a, double b, double c)

{

int d ;

return (a*b + c);

}

Di dalam contoh di atas variabel itu a,b,c dan d adalah variabel lokal, yang dapat digunakan hanya di dalam blok fungsi kode (dapat digunakan dimana pun di dalam kait ({})) dan tidak dapat digunakan oleh kode di luar. Maka kita tidak dapat tulis satu baris setelah fungsi di atas perkataan sebagai contoh: d=10; sebab d tidaklah dilihat kepada baris fungsi yang berikutnya, oleh sebab itu ia berada di luar itu.

Lingkup yang kedua adalah Variabel yang global, dan mereka adalah variabel yang telah diumumkan di luar manapun dari blok kode dan dapat dilihat dari bagian manapun dari kode Anda.

Sebagai contoh:

int Global_Variable;

double my_func (double a, double b, double c)

{

return (a*b + c + Global_Variable);

}

Di sini variabel Global_Variable mengumumkan di luar fungsi itu (tingkat fungsi deklarasi) maka, ia dapat dilihat oleh semua fungsi di dalam program Anda.

Page 39: Tutorial Mql4

Variabel global akan secara otomatis set menjadi nol (zero), jika Anda tidak meng-initialize mereka.

Extern variables:

Kata kunci “extern” yang digunakan untuk mengumumkan semacam variabel khusus; variabel semacam ini digunakan untuk menggambarkan masukan tanggal program, yang mana Anda dapat menetapkannya membentuk properti dari Custom Indikator atau Expert advisor Anda.

Sebagai contoh:

extern color Indicator_color = C’0×00,0×00,0xFF’; // blue

int init()

{

}

Di sini variabel Indicator_color telah menggambarkan sebagai suatu extern variabel yang akan Anda lihat pertama kali, ketika Anda menyertakan/memasukkanindikator Anda (atau EA) kepada chart Metatrader dan Anda dapat merubah nya dari properties sheet windows. Perhatikan Figure 1.

Figure 1: Property sheet of MA indicator

Di sini variabel, Period, Shift, MA_method, Apply_to dan Style adalah variabel yang penggunaanya mengambarkan kata kunci “extern” sehingga mereka nampak di property sheet.

Variabel manapun yang Anda ingin pakai pada program Anda dapat Anda rubah dan tetapkan, buatlah menjadi extern variabel.

Preprocessor

17 07 2008

Selamat datang pada seri pelajaran teoritis yang terakhir di dalam rangkaian pembahasan MQL4 ini. Di dalam rangkaian pelajaran yang berikutnya kita akan mulai untuk membangun Customer Indicator yamg pertama kita,Maka saya merekomendasikan Anda untuk membaca semua dari rangkaian sembilan pelajaran secara hati-hati sebelum pekerjaan yang sebenarnya dimulai.

Sekarang, marilah kita mulai pembahasan mengenai Preprocessor:

Apakah yang dimaksud dengan Preprocessor?

Preprocessor adalah instruksi yang Anda berikan kepada compiler itu untuk menyelesaikan pekerjaannya sebelum memulai (pengolahan) kode program Anda.

Sebagai contoh jika Anda menggunakan perintah preprocessor #include <win32.h> ini berarti Anda memerintahkan compiler untuk memasukkan isi dari file “win32.h” di

Page 40: Tutorial Mql4

dalam tempat yang Anda tulis sebuah kata kunci untuk menyertakannya (the include keyword) sebelum pengolahan kode Anda.

Di dalam MQL4 ada sebanyak empat dari preprocessor direktif:

1. define directive (perintah yang menggambarkan nilai tertentu):

Preprocessor yang menggambarkan perintah digunakan untuk hasil tetap.

Hasil yang tetap sangat mirip dengan variable, tetapi satu perbedaan, Anda hanya sekali menetapkan nilainya dan Anda tidak dapat rubah nilai nya di dalam kode Anda seperti variable (yang Anda pelajari sebelumnya).

Sebagai contoh:

#define my_constant 100

Seperti yang Anda dapat lihat pada contoh kode di atas, dalam contoh tersebut tidak ada lambang tugas (=), tetapi hanya ruang antara nama yang tetap ( my_constant) dan nilai nya (100).

Dan Anda dapat catat juga, bahwa baris tidak dapat berakhir dengan titik koma tetapi mengakhiri dengan suatu karakter carriage-return (baris baru).

Nama tetap (constant) mematuhi aturan yang sama yang Anda telah pelajari sebelumnya tentang nama-nama identifier (pelajaran 2 SYNTAX), sebagai contoh Anda tidak dapat memulai dengan membuat nama yang tetap dengan suatu angka atau melebihi 31 karakter.

Isi dari Nilai dapat anda tulis dengan type manapun yang Anda inginkan.

Compiler akan menggantikan kejadian masing-masing dari nama tetap di dalam source program Anda dengan penyesuaian nilai. Maka Anda dapat menggunakan di atas kode tetap (constant) seperti :

sum = constant1 * 10;

2. property directive:

Ada juga disebut predefined constants (yang dikenal tetap) disebut “Controlling Compilation” tercakup di bahasa MQL4 , yang mana Anda dapat menuliskannya di dalam program Anda.

Mereka adalah properties dari program Anda yang Anda dapat menetapkannya menggunakan compiler direktif “property” dan compiler akan menuliskannya di dalam pengaturan dari program executable Anda (file ex4).

Sebagai contoh:

#property link “http://www.forex-tsd.com”

#property copyright “Anyone wants to use”

Ini adalah daftar MQL4 yang sudah predefined constants (dikenal tetap):

Constant Type Description

Page 41: Tutorial Mql4

link string suatu link kepada website perusahaan itu.copyright string nama perusahaan.stacksize int ukuran tumpukanindicator_chart_window void menampilkan indikator di dalam chart window

indicator_separate_window voidmenampilkan indikator di dalam suatu window terpisah

indicator_buffers int banyaknya penyangga untuk kalkulasi, maksimal 8indicator_minimum int border bawah untuk chartindicator_maximum int border puncak untuk chart

indicator_colorN colorwarna itu untuk mempertunjukkan baris N, di mana N berada antara 1 dan 8

indicator_levelN doubletingkatan sudah dikenal N untuk custom indicator window terpisah, di mana N berada antara 1 dan 8

show_confirm voidsebelum script berjalan pesan box dengan konfirmasi nampak

show_inputs voidsebelum script berjalan property sheet nya nampak; disables show_confirm properti

      3. include directive (perintah menyertakan):

Ketika Anda meminta compiler untuk menyertakan suatu nama file, perintahkan dengan “include” direktif, ini sangat mirip ketika Anda mengcopy keseluruhan isi file dan melekatkan nya sebagai pengganti baris, maka Anda akan tuliskan perintah include.

Sebagai contoh:

#include <win32.h>

Di dalam contoh di atas Anda memerintahkan compiler untuk membuka file “win32.h” dan membaca semua isi-nya dan mengcopy nya di dalam tempat yang sama meliputi statemen.

Catatan: di dalam contoh di atas Anda melampirkan nama file dengan Angle brackets (<>) dan itu berarti Anda memerintahkan compiler untuk menggunakan direktori default yang pada umumnya, (terminal_directory\experts\include) untuk mencari file win32.h..

Jika file yang Anda ingin lokasi include; terletak pada alur yang sama dari kode Anda, Anda harus menggunakan tanda kutip sebagai ganti angle brackets seperti ini:

#include “mylib.h”

Di dalam kasus kedua-duanya, jika file tersebut tidak dapat ditemukan Anda akan mendapatkan suatu pemberitahu kesalahan. Anda dapat menggunakan include di manapun tempat yang Anda inginkan, tetapi pada umumnya digunakan pada awal source program.

Tip: Suatu praktek pemprograman yang baik, tuliskanlah kode Anda yang sering Anda gunakan di dalam suatu file terpisah dan gunakan direktif include untuk menaruh nya di dalam kode Anda ketika Anda membutuhkannya (hanya nasihat).

4. import directive:

Perintah ini seperti include direktif, yaitu satu perintah pengarah untuk menggunakan file di luar program ke dalam program Anda. Tetapi ada perbedaan antara keduanya. Anda

Page 42: Tutorial Mql4

hanya menggunakan import dengan MQL4 file executables(. ex4) atau file perpustakaan (library) .dll untuk mengimport fungsi mereka ke program Anda.

Sebagai contoh:

#import “user32.dll”

int MessageBoxA(int hWnd,string lpText,string lpCaption,

int uType);

int MessageBoxExA(int hWnd,string lpText,string lpCaption,

int uType,int wLanguageId);

#import “melib.ex4″

#import “gdi32.dll”

int GetDC(int hWnd);

int ReleaseDC(int hWnd,int hDC);

#import

Ketika Anda mengimport fungsi dari “ex4″ file, Anda tidak perlu untuk mengumumkan fungsi mereka untuk siap dipakai. Tetapi ketika pengimport fungsi dari “.dll” file, Anda perlu untuk mengumumkan fungsi yang Anda ingin gunakan seperti ini:

int MessageBoxA(int hWnd,string lpText,string lpCaption,

int uType);

Dan hanya fungsi yang telah Anda umumkan Anda dapat menggunakan kode Anda. Anda harus mengakhiri perintah import tersebut dengan suatu baris import kosong #import (tanpa parameter).

Saya berharap Anda memahami pelajaran yang Saya paparkan. Dan Saya juga berharap Anda telah siap untuk Custom Indicator pertama Anda.

Page 43: Tutorial Mql4

Your First Indicator (Part 1)

6 10 2008

Selamat datang di indikator MQL4 Anda yang pertama (Bagian I).

Saya merekomendasikan Anda untuk membaca sembilan pelajaran yang sebelumnya secara hati-hati, sebelum berlanjut pada seri yang berikutnya dari pembahasan MQL4 ini, karena kita akan menggunakan banyak penjelasan sebelumnya dalam studi Custom Indikator dan Expert Advisor yang akan kita ciptakan ini.

Hari ini kita akan menciptakan suatu indicator sederhana yang tidak akan terlalu berarti bagi dunia forex kita, tetapi ini berarti banyak untuk pemahaman program MQL4 kita.

Program ini hanya akan mengumpulkan pengurangan dari harga high[] – harga low[] ; dan saya ingatkan kembali jangan  belajar dengan terburu-buru, Anda akan segera mengetahui segalanya.

Mari kita mulai!

MetaEditor:

Ini adalah program yang telah disertakan dalam MT4 ( Metatrader 4) yang memungkinkan Anda untuk menulis program Anda sendiri, membaca bantuan MQL4, meng-compile program Anda dan lebih banyak lagi fasilitasnya.

Saya  telah buat satu shortcut untuk Metaeditor pada desktop saya untuk dapat dengan mudah mengakses program. Jika Anda ingin menjalankan Metaeditor Anda punyai tiga pilihan, yaitu:

1. Jalankan MT4, kemudian klik F4, pilih Metaeditor dari Menu Tools atau klik simbol icon nya pada Standard Toolbar saperti pada figure 1.

2. Dari Start Menu à Program , temukan Metatrader 4  group kemudian klik Metaeditor.

3. Temukan MT4 di instalasi  folder (pada umumnya C:\Program Files\Metatrader 4), temukan Metaeditor.Exe  dan kemudian klik file tersebut (Saya merekomendasikan untuk membuat suatu shortcut pada desktop Anda).

Metode apapun yang anda punya dalam menjalankan Metaeditor  akan beruujung pada tampilan seperti gamabar yg dapat anda lihat dalam figure 2 Ada tiga jendela di dalam Metaeditor:

1. Editor  window yang dapat Anda tulis di program Anda di dalamnya.

2. Window Toolbox  berisi tiga tab:

1. Kesalahan tab (errors Tab), Anda dapat lihat kesalahan di sini  (di manapun) di dalam kode Anda.

Page 44: Tutorial Mql4

2. Temukan tab file (find in files Tab), Anda lihat di sini  file  berisi kata kunci yang Anda sedang cari-cari menggunakan perintah toolbar “Find in files (temukan file)” atau apapun yang anda punya dengan meng-klik CTRL + SHIFT+ F .

3. Bantuan tab (help Tab), Anda dapat meng-hightlight kata kunci yang Anda mungkin ingin ketahui lebih banyak informasinya dan kemudian klik F1, dan Anda akan lihat topik bantuan di  tab ini.

3. Navigator window berisi tiga tab:

1.1. file tab, untuk akses yang gampang untuk menyimpan file di folder MT4 .2. Dictionary Tab memungkinkan Anda untuk mengakses  sistem bantuan

MQL4.3. Search tab memungkinkan Anda untuk mencari informasi dalam MQL

Dictionary.

Saya merekomendasikan Anda untuk sering mebuka halaman Menu Metaeditor , Toolbar Dan window agar terbiasa menggunakan halaman tersebut.

Sekarang mari kita cipatakan custom indikator kita yang pertama.

custom Indikator adalah suatu  program yang memungkinkan Anda untuk menggunakan fungsi indikator  teknis sebagai alat bantu dalam bertransaksi, dan perlu diketahui bahwa fungsi ini tidak dapat mengotomatiskan transaksi anda.

 Ada Tiga langkah yaitu:Untuk sekarang Anda sudah menjalankan Metaeditor anda dan menuju di sekitar Menu, Toolbar dan window, mari GUNAKAN itu.

Untuk menciptakan suatu custom indikator Anda harus mulai dengan tiga langkah (Anda akan belajar nanti bagaimana cara melompati langkah yang membosankan ini (pendapat pribadi saya )).

Page 45: Tutorial Mql4

Step 1: Klik File menu –> New (atau Anda gunakan CTRL+N  atau klik icon  yang baru di Standard Toolbar). Anda akan mendapatkan suatu wizard (Figure 3) yang memandu Anda untuk langkah yang berikutnya . Pilih Program Custom Indicator Program , dan kemudian klik Next.

Step 2: Ketikan Anda meng-klik tombol Next, Anda akan mendapatkan wizard langkah yang kedua (Figure 4) yang akan memungkinkan Anda untuk mengedit properti dari program Anda. Di dalam langkah ini Anda dapat masuk ke properti ini:

Name : nama dari program anda, ini adalah nama file yang mana “dunia” akan memanggil program Anda dan akan jadi disimpan seperti berikut the_name_you_have_chosen.mq4

Author :  nama pencipta program.  Link : untuk menghubungkan ke lokasi web Anda.  Daftar Variabel External: Saya berhenti di sini untuk sementara untuk

mengingatkan Anda mengenai variabel External.

Variabel External adalah  variabel akan tersedia bagi pemakai  indikator anda untuk menggunakan dan menetapkan  tab properti  dari indikator anda di dalam Metatrader. Sebagai contoh: MA_PERIOD di dalam indicator EMA yang sangat populer.

Dan variabel ini akan jadi diumumkan dengan kata kunci “extern”  di  kode anda (Tolong tinjau ulang Pelajaran Variabel). Maka, bagian wizad ini memungkinkan Anda untuk menambahkan bermacam-macam variabel.Di dalam contoh indikator yang pertama, kita tidak akan memerlukan variabel eksternal manapun hanya saja kita tulis nilai itu Anda telah melihat figure 4 dan mari melangkah cepat step 3 dengan meng-klik Tombol Next.

Page 46: Tutorial Mql4

Step 3: Wizard yang ketiga  anda akan dapatkan ketika anda meng-klik tombol Next adalah Gambar yang menarik properti figure 5.

Kerjakan yang memungkinkan anda untuk menetapkan baris properti dalam indikator anda, sebagai contoh: berapa banyak bentuk, warna dan di mana untuk menggambar indikator anda (secara keseluruhan chart atau di dalam jendela terpisah).

Wizard figure 5 ini berisi 4 pilihan sebagai berikut:

Indicator in separate widow (Indikator di dalam pilihan window terpisah): dengan meng-klik pilihan ini, indikator anda akan  dibuat dalam jendela terpisah dan bukan pada chart window yang utama. Jika Anda tidak check pilihan itu, indikator anda akan digambar secara keseluruhan di chart window jika sudah jadi sempurna nantinya.

 Minimum option (Pilihan minimum): akan jadi tersedia (yang dimungkinkan) hanya jika Anda sudah check pilihan Indikator tersebut di dalam pilihan jendela terpisah, dan ini dilakukan  untuk menentukan batasan bawah chart dalam indikator terpisah terebut.

 Maximum option (Pilihan maksimum): akan jadi tersedia (yang dimungkinkan) hanya jika Anda sudah check pilihan Indikator tersebut di dalam pilihan jendela terpisah, dan ini dilakukan  untuk menentukan batasan atas chart dalam indikator terpisah terebut.

 Indexes list (Daftar Index): di sini Anda menambahkan baris indikator anda dan menetapkan warna defaultnya.

Saya ingin Anda untuk menunggu kepada pelajaran berikutnya  untuk mengetahui lebih banyak tentang pilihan ini dan jangan terburu-buru.

Page 47: Tutorial Mql4

Karena ini adalah contoh indikator pertama kita, maka pilih Indikator di dalam pilihan jendela terpisah dan klik Add tombol, ketika Anda klik Add tombol wizard akan menambahkan satu baris kepada daftar index seperti Anda melihat figure 5.

Ketika Anda klik tombol Finish magic akan start. Anda akan lihat wizard itu menghilang dan fokus kembali ke halaman Metaeditor dan… dan anda sudah menebak?Anda  telah mempunyai  kode draft untuk digunakan dalam menulis custom indikator anda yang pertama. Ini Ini adalah kode  yang akan Anda  dapatkan:

//+——————————————————————+

//| My_First_Indicator.mq4 |

//| Codersguru |

//|  http://www.forex-tsd.com |

//+——————————————————————+

#property copyright “Codersguru”

#property link “http://www.forex-tsd.com”

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

//—- buffers

double ExtMapBuffer1[];

Page 48: Tutorial Mql4

//+——————————————————————+

//| Custom indicator initialization function |

//+——————————————————————+

int init()

{

//—- indicators

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//—-

return(0);

}

//+——————————————————————+

//| Custor indicator deinitialization function |

//+——————————————————————+

int deinit()

{

//—-

//—-

return(0);

}

//+——————————————————————+

//| Custom indicator iteration function |

//+——————————————————————+

int start()

{

int counted_bars=IndicatorCounted();

//—-

//—-

Page 49: Tutorial Mql4

return(0);

}

//+——————————————————————+

Seperti yang anda lihat kode di atas, wizard telah menulis banyak kode untuk Anda, sekarang Saya harus berterima kasih kepada wizard tersebut dan untuk berterimakasih kepada anda juga, dan tak lupa kepada coder’s guru.

Di dalam pelajaran yang berikutnya kita akan menemukan tiap-tiap baris kode yang Anda sudah lihat di atas dan menambahkan kode kita untuk membuat indikator pertama kita.

Pada pelajaran ini  yang Saya berharapkan Anda menjadi siap untuk mengikuti tahap belajar selanjutnya!