pengenalan mql4 - 1.dasar mql4

107
Dasar MQL4 Bagian ini merupakan persyaratan dasar bahasa pemrograman yang mendasari MQL4: Beberapa Konsep Dasar Istilah-istilah seperti 'tick' (perubahan harga), 'control' dalam algoritma, 'komentar' dalam program- program yang dijelaskan. Acara utama ketika perdagangan di pasar keuangan adalah perubahan harga. Inilah sebabnya tick adalah peristiwa penting yang membuat mekanisme dasar dari program MQL4 ini berjalan. Apa yang harus dilakukan ketika pendapatan tick baru? Mengambil tindakan apa? Ini adalah kontrol yang bergerak ke permukaan. Tapi jangan lupa untuk komentar pada kode Anda. Konstanta dan Variabel Syarat konstanta dan variabel diperkenalkan, perbedaan antara istilah-istilah ini dijelaskan. Sebagai istilah menyarankan, yang terus-menerus adalah sesuatu yang terus-menerus, di set sekali untuk semua. Berbeda dengan konstan, variabel adalah kode pemrograman obyek yang dapat mengubah isinya. Tidak mungkin untuk menulis sebuah program tanpa menggunakan benda-benda yang tidak berubah (konstan) dan / atau objek yang dapat diubah selama eksekusi program (variabel). Jenis data Beberapa jenis data yang digunakan dalam bahasa pemrograman apapun. Jenis variabel dipilih sesuai dengan tujuan. Bagaimana kita dapat mendeklarasikan variabel, bagaimana kita bisa menginisialisasi itu (telah diatur nilai awalnya)? Sebuah pilihan yang salah dari tipe untuk suatu variabel dapat memperlambat program atau bahkan berakibat pada tindakan yang salah.

Upload: sijinkwi

Post on 16-Apr-2017

506 views

Category:

Documents


87 download

TRANSCRIPT

Page 1: Pengenalan MQL4 - 1.Dasar MQL4

Dasar MQL4

Bagian ini merupakan persyaratan dasar bahasa pemrograman yang mendasari MQL4:

Beberapa Konsep Dasar

Istilah-istilah seperti 'tick' (perubahan harga), 'control' dalam algoritma, 'komentar' dalam program-program yang dijelaskan. Acara utama ketika perdagangan di pasar keuangan adalah perubahan harga. Inilah sebabnya tick adalah peristiwa penting yang membuat mekanisme dasar dari program MQL4 ini berjalan. Apa yang harus dilakukan ketika pendapatan tick baru? Mengambil tindakan apa? Ini adalah kontrol yang bergerak ke permukaan. Tapi jangan lupa untuk komentar pada kode Anda.

Konstanta dan Variabel

Syarat konstanta dan variabel diperkenalkan, perbedaan antara istilah-istilah ini dijelaskan. Sebagai istilah menyarankan, yang terus-menerus adalah sesuatu yang terus-menerus, di set sekali untuk semua. Berbeda dengan konstan, variabel adalah kode pemrograman obyek yang dapat mengubah isinya. Tidak mungkin untuk menulis sebuah program tanpa menggunakan benda-benda yang tidak berubah (konstan) dan / atau objek yang dapat diubah selama eksekusi program (variabel).

Jenis data

Beberapa jenis data yang digunakan dalam bahasa pemrograman apapun. Jenis variabel dipilih sesuai dengan tujuan. Bagaimana kita dapat mendeklarasikan variabel, bagaimana kita bisa menginisialisasi itu (telah diatur nilai awalnya)? Sebuah pilihan yang salah dari tipe untuk suatu variabel dapat memperlambat program atau bahkan berakibat pada tindakan yang salah.

Operasi dan Ekspresi

Operasi beroperasi pada Operand. Jenis operasi apa yang ada? What is typecasting used for? Typecasting digunakan untuk apa? Apa ciri-ciri khusus operasi pada bilangan bulat? Mengapa penting untuk diingat mengenai precedences data dari berbagai jenis? Tanpa mengetahui tentang fitur dari beberapa operasi, Anda dapat membuat kesalahan halus.

Operator

Sederhana dan operator majemuk. Sebuah tindakan yang diperlukan sebaiknya tidak selalu akan dijalankan oleh operator sederhana. Jika diperlukan bahwa sekelompok operator dijalankan sebagai salah satu operator besar, kelompok ini harus dimasukkan ke dalam satu kompleks operator. Persyaratan dan contoh-contoh spesifik menggunakan operator diberikan.

Page 2: Pengenalan MQL4 - 1.Dasar MQL4

Fungsi

Perlunya mendapatkan kode sederhana membawa kita ke Fungsi masa. Agar dapat menggunakan fungsi dari lokasi yang berbeda dalam program, perlu untuk menyediakan dengan Fungsi Parameter. Kita akan membahas proses penciptaan fungsi kustom. Contoh-contoh penggunaan fungsi-fungsi standar yang diberikan.

Jenis Program

Script, indikator dan Expert Advisors adalah jenis program MQL4 yang memungkinkan Anda untuk menutupi hampir seluruh kelas masalah fincancial mengenai perdagangan di pasar. Hal ini diperlukan untuk memahami tujuan dari setiap jenis program agar dapat menggunakan MetaTrader 4 Client Terminal dalam cara terbaik.

Beberapa Konsep Dasar

Dengan demikian, subjek kepentingan kita adalah sebuah program yang ditulis dalam MQL4. Sebelum kita memulai presentasi rinci aturan-aturan penulisan program, perlu untuk menjelaskan konsep-konsep dasar yang menjadi ciri program dan keterkaitan dengan informasi lingkungan. MetaTrader 4 Client Terminal dikenal untuk bekerja secara online. Ticks menyediakan terminal klien dengan informasi tentang perubahan harga di pasar.

Pemikiran tentang Tick

Tick adalah kejadian yang ditandai dengan harga baru pada beberapa simbol instan.

Ticks dikirim ke setiap klien terminal dengan server dipasang di sebuah pusat. Yang sesuai dengan situasi pasar saat ini, Ticks dapat menerima lebih atau kurang sering, tetapi masing-masing dari mereka membawa penawaran baru - harga satu mata uang dinyatakan dalam mata uang lain.

Operasi aplikasi dengan terminal klien dapat bekerja dalam jangka waktu yang panjang, misalnya, beberapa hari atau minggu. Setiap aplikasi dijalankan sesuai dengan peraturan yang telah ditetapkan untuk program jenis tertentu. Sebagai contoh, sebuah Expert Advisor (EA) tidak bekerja terus menerus sepanjang waktu. Sebuah Expert Advisor biasanya diluncurkan pada saat Ticks baru datang. Untuk alasan ini, kami tidak menggolongkan tik hanya sebagai kutipan baru, tetapi sebagai suatu peristiwa yang akan diproses oleh klien terminal.

Page 3: Pengenalan MQL4 - 1.Dasar MQL4

Lama operasi Expert Advisor tergantung pada kode program yang disertakan di dalamnya. EA normal menyelesaikan satu siklus pengolahan informasi selama beberapa persepuluh atau seratus detik. Dalam waktu ini, EA bisa diproses beberapa parameter, membuat keputusan perdagangan, pedagang menyediakan beberapa informasi yang berguna, dll Setelah selesai ini bagian dari pekerjaan, EA masuk ke modus menunggu sampai Ticks baru datang. Ticks baru ini meluncurkan Expert Advisor lagi, program membuat operasi yang sesuai lagi dan kembali ke modus menunggu. Deskripsi rinci tentang bagaimana munculnya pengaruh Ticks baru program operasi berikut di bawah ini.

Pemikiran tentang Pengendalian

Berbicara tentang aliran eksekusi kode dalam program, dan juga interaksi dengan klien terminal, kita akan menggunakan istilah dari 'control'.

Kontrol adalah proses melaksanakan tindakan telah ditetapkan oleh program algoritma dan fitur terminal klien. Kontrol dapat ditransfer dalam program dari satu baris kode yang lain, dan juga dari program ke terminal klien.

Kontrol ditransfer dengan cara yang sama dengan memberi seseorang lantai untuk berbicara di sebuah pertemuan. Seperti alamat pembicara rapat dan kemudian memberikan lantai kepada orang lain, klien program terminal dan transfer kontrol satu sama lain. Pada saat itu, terminal klien mendominasi. Statusnya adalah lebih tinggi dari program, seperti otoritas ketua rapat lebih besar dibandingkan dengan speaker biasa.

Sebelum program ini diluncurkan, kontrol berada di bawah pengawasan terminal klien. Ketika Ticks baru diterima, klien transfer terminal kontrol kepada program. Kode program mulai dijalankan saat ini.

Klien terminal, setelah itu telah ditransfer kontrol untuk program, tidak menghentikan operasi. Terus bekerja dengan performa maksimal selama seluruh periode waktu tersebut akan dijalankan pada PC. Program ini hanya dapat mulai beroperasi pada saat klien telah ditransfer terminal control untuk itu (seperti ketua rapat rapat kontrol sepanjang waktu itu sedang terjadi, sedangkan saat ini mengambil kata pembicara hanya untuk jangka waktu terbatas ).

Setelah menyelesaikan operasi, program kontrol kembali ke terminal klien dan tidak dapat diluncurkan oleh sendiri. Namun, ketika kendali telah dialihkan ke program, kontrol kembali ke terminal klien dengan sendirinya. Dengan kata lain, terminal klien tidak dapat mengembalikan kontrol dari program dengan sendirinya. Tindakan dinamis pengguna (misalnya, memaksa penghentian program) adalah pengecualian.

Ketika membahas masalah-masalah kinerja dan struktur internal program, kita sebagian besar tertarik pada bagian kontrol yang ditransfer dalam sebuah program. Mari kita lihat

Page 4: Pengenalan MQL4 - 1.Dasar MQL4

Gambar. yang menunjukkan sifat umum dari kontrol mentransfer ke, dari dan dalam sebuah program. Lingkaran yang ditunjukkan pada gambar karakter beberapa kecil, secara logis menyelesaikan fragmen-fragmen program, sedangkan tanda panah antara lingkaran menunjukkan bagaimana kontrol ditransfer dari satu fragmen yang lain.

Gambar. 2. Mentransfer kontrol dalam sebuah program

Program yang telah menerima kontrol dari terminal klien (program pelaksana) mulai membuat beberapa tindakan sesuai dengan algoritma yang inheren. Program Program berisi garis; ketertiban umum pelaksanaan program terdiri dari pemindahan kontrol berurutan dari satu baris ke yang lain dalam arah atas ke bawah. Apa dan menurut aturan-aturan apa yang dapat ditulis dalam baris-baris ini akan dipertimbangkan di bawah ini dalam semua detail.

Di sini, hanya penting untuk menekankan bahwa setiap logis fragmen selesai dieksekusi - sebagai contoh, beberapa perhitungan matematika dibuat, sebuah pesan akan ditampilkan pada layar, sebuah tatanan perdagangan terbentuk, dll. Sampai saat ini fragmen program dieksekusi, itu tetap memiliki kontrol. Setelah itu telah sepenuhnya selesai, kontrol ditransfer ke fragment yang lain. Jadi, kontrol dalam program yang ditransfer dari satu secara logis menyelesaikan fragmen yang lain seperti yang dieksekusi. Segera setelah fragmen terakhir dijalankan, program akan mentransfer (kembali) ke klien terminal.

Pemikiran tentang Komentar

Page 5: Pengenalan MQL4 - 1.Dasar MQL4

Suatu program terdiri dalam dua jenis catatan: mereka yang membuat program itu sendiri dan orang-orang yang penjelasan teks ke kode program.

Komentar adalah opsional dan nonexecutable bagian dari sebuah program.

Jadi, komentar adalah opsional bagian dari sebuah program. Ini berarti bahwa program siap akan bekerja sesuai dengan kode terlepas dari apakah ada komentar di dalamnya atau tidak. Namun, komentar memfasilitasi pemahaman kode program sangat banyak. Ada satu baris dan multi-baris komentar. Sebuah satu baris komentar adalah setiap deretan karakter berikut slash ganda (//).Tanda satu baris komentar lainnya yang diakhiri dengan garis feed. multi-baris komentar dimulai dengan karakter / * dan diakhiri dengan * / (lihat Gambar. 3).

Komentar digunakan untuk menjelaskan kode program. Sebuah program yang bagus selalu berisi komentar.

Gambar. 3. Contoh komentar dalam sebuah program.

Komentar yang banyak digunakan dalam pengkodean. Mereka biasanya ditampilkan dalam kode abu-abu. Kita akan menggunakan komentar, juga, dalam rangka untuk menjelaskan kode-kode kita dan membuat lebih dimengerti.

Konstanta dan Variabel

Syarat-syarat 'konstan' dan 'variabel' yang dianggap dalam satu bagian karena istilah ini sangat dekat pada diri mereka sendiri.

Pemikiran tentang Konstan

Page 6: Pengenalan MQL4 - 1.Dasar MQL4

Konstan adalah bagian dari program; sebuah benda yang memiliki nilai.

Istilah konstan dalam program serupa dengan istilah yang sama digunakan dalam persamaan matematika. Ini adalah nilai berubah-ubah. Untuk menggambarkan sifat konstan yang digunakan dalam bahasa algoritmik sebagai banyak detail mungkin, marilah kita lihat terkenal konstanta fisik dan matematika.

Manusia telah menemukan konstanta, nilai-nilai yang tidak bergantung pada kita dengan cara apapun. Mereka adalah, misalnya, dalam fisika: percepatan jatuh bebas yang selalu sama dengan 9,8 m / s / s; dalam matematika: Pi = 3.14. Konstanta dari jenis yang tidak dapat dianggap sama dengan konstanta dalam bahasa algoritmik.

Istilah konstan juga digunakan dalam persamaan matematika. Sebagai contoh, dalam persamaan Y = 3 * x + 7, angka 3 dan 7 adalah konstanta. Nilai-nilai konstanta tersebut sepenuhnya tergantung pada kehendak orang yang telah membuat persamaan. Ini adalah analogi terdekat konstanta yang digunakan dalam program MQL4.

Sebuah konstan (sebagai nilai) ditempatkan oleh seorang programmer dalam kode pada tahap-tahap penciptaan. Konstan hanya ditandai oleh nilai, sehingga istilah 'konstan' dan 'nilai konstan' adalah sinonim penuh.

Teladan Konstanta: 37 , 3.14 , true , " Kazan "

Gambar. 4. Constant dalam memori dari sebuah PC.

Properties Konstanta

Property konstan adalah kekuatan untuk mempertahankan selama masa operasi program nilai yang diatur oleh programmer dan set nilai ini ke program ketika program meminta (Gambar 5). Untuk setiap konstan dalam program, komputer mengalokasikan bagian dari memori ukuran yang diperlukan. Nilai konstanta tidak dapat diubah selama eksekusi program tidak oleh programmer maupun oleh komputer (Gambar 6).

Nilai konstanta selalu tetap sama.

Page 7: Pengenalan MQL4 - 1.Dasar MQL4

Gambar. 5. Keadaan sel memori yang konstan saat menetapkan nilai untuk program.

Nilai konstanta tidak dapat diubah selama program operasi.

Gambar. 6. Tidak mungkin untuk mengubah nilai konstan selama program operasi.

Pemikiran tentang Variabel

Variabel adalah sebuah program bagian yang memiliki nilai dan nama.

Istilah variabel dalam MQL4 ini mirip dengan yang diterima dalam matematika. Perbedaan antara mereka terdiri hanya dalam bahwa nilai variabel dalam matematika selalu tersirat, sedangkan nilai variabel dalam sebuah program mengeksekusi disimpan dalam memori khusus sel dalam komputer.

Istilah dari 'variabel pengenal' adalah sinonim penuh dari 'nama variabel'. Variabel dimasukkan ke dalam kode teks oleh penulis pada tahap pengkodean sebagai nama variabel. Nama (pengidentifikasi) dari suatu variabel dapat terdiri dari huruf, angka, garis bawah. Namun, hal itu harus dimulai dengan sebuah surat. MQL4 adalah case-sensitive, yaitu, S dan s tidak sama.

Teladan nama variabel: Alpha, alFa, beta, NuMbEr, Num, A_37, A37, qwerty_123 Pengidentifikasi berikut variabel mewakili nama-nama variabel berbeda: a_22 dan А_22; Massa dan MASSA. Nilai teladan variabel : 37, 3.14, true, "Kazan".

Propertie Variabel

Page 8: Pengenalan MQL4 - 1.Dasar MQL4

Properti sebuah variabel adalah kemampuan untuk mendapatkan nilai tertentu dari program, mempertahankan itu selama periode pelaksanaan program dan set nilai ini ke program ketika diminta oleh program. Untuk setiap variabel dalam program, komputer mengalokasikan bagian dari memori ukuran yang diperlukan. Mari kita lihat Gbr. 7 dan studi pembangunan sebuah variabel.

Gambar. 7. . Sebuah variabel dalam memori komputer.

Ada nilai variabel dalam sel memori komputer. Nilai ini dapat diminta untuk memproses dan diubah oleh program. Nama variabel tidak pernah berubah. Saat menulis kode, programmer dapat mengatur nama untuk variabel. Namun, segera setelah program ini siap diluncurkan, baik programmer maupun komputer, maupun program kelayakan teknis apapun untuk mengubah nama dari variabel.

Jika suatu program ketika sedang dieksekusi memenuhi nama variabel, program mengacu pada variabel ini untuk mendapatkan nilai untuk diproses. Jika sebuah program telah dirujuk ke variabel, yang kedua satu set nilai ke program. Pada saat itu, nilai dari variabel tetap sama, sedangkan program mendapatkan salinan dari nilai yang terkandung dalam sel memori yang dialokasikan untuk variabel ini (Gambar 8).

Ketika nilai variabel ditetapkan untuk sebuah program, nilai ini tetap tidak berubah. Nama variabel tidak akan pernah berubah.

Gambar. 8. Keadaan sel memori dari suatu variabel saat menetapkan nilai untuk program.

Sebuah variabel tidak terkait dengan pelaksana program untuk jangka waktu tertentu. Selama periode ini, program dapat merujuk pada variabel lain atau membuat perhitungan yang diperlukan. Antara "sesi" komunikasi dengan program, variabel mempertahankan nilai, yaitu membuat hal itu berubah.

Menurut algoritma program, hal itu bisa menjadi perlu untuk mengubah nilai dari variabel. Dalam kasus ini, program untuk set variabel dengan nilai baru, sedangkan

Page 9: Pengenalan MQL4 - 1.Dasar MQL4

variabel mendapat nilai ini dari program ini. Semua diperlukan modifikasi yang dibuat dalam sel memori. Hal ini mengakibatkan bahwa nilai sebelumnya dari variabel yang dihapus, sedangkan nilai baru dari variabel yang ditetapkan oleh program mengambil tempat (Gambar 9).

Nilai variabel dapat diubah oleh program. Nama variabel selalu berubah.

Gambar. 9. Keadaan sel memori dari sebuah variabel ketika mendapatkan nilai dari program.

Konstanta dan Variabel teladan dalam Program

Dalam program, konstanta dan variabel dapat ditemukan pada operator. alam kode di bawah ini, A dan B adalah variabel, 7 dan 3 adalah konstanta:

A = 7 ; // Line 1 B = A + 3 ; // Line 2

Mari kita mempelajari bagaimana sebuah program bekerja dengan konstanta dan variabel. Executing Pelaksana garis-garis ini, program akan membuat langkah-langkah berikut:

Baris 1:

1. Konstan 7 set nilainya ke program. 2. Variabel A mendapatkan nilai 7 dari program.

Baris 2:

1. Program ini telah menemukan suatu ekspresi ke kanan dari tanda persamaan dan sedang mencoba untuk menghitungnya.

2. Konstan 3 set nilainya ke program. 3. Program mengacu pada variabel A dengan nama itu. 4. Variabel Sebuah set nilai (7) untuk program. 5. Program membuat perhitungan (7 + 3). 6. Variabel В mendapat nilai 10 dari program.

Page 10: Pengenalan MQL4 - 1.Dasar MQL4

Nilai variabel dapat diubah selama program operasi. Sebagai contoh, bisa terdapat sebuah baris dalam program yang berisi berikut:

В = 33 ; // Line 3

Dalam kasus ini, berikut akan dilakukan pada pelaksanaan program:

1. Konstan 33 set nilainya ke program. 2. Variabel B mendapatkan (baru) nilai 33 dari program ini.

Mudah untuk melihat bahwa variabel B mendapatkan nilai 10 di tahap tertentu pelaksanaan program, dan kemudian mendapat nilai 33. Nama variabel B tetap tidak berubah selama semua peristiwa ini, sedangkan nilai variabel akan berubah.

Gambar. 10 menunjukkan konstanta dan variabel dalam kode program:

Gambar. 10. Sebuah konstan dan variabel dalam sebuah program.

Jenis data

Ini adalah pengetahuan umum bahwa hanya nilai-nilai equitype dapat ditambahkan atau dikurangi. Sebagai contoh, apel dapat ditambahkan ke apel, tapi apel tidak dapat ditambahkan ke meter persegi atau suhu. Keterbatasan serupa dapat ditemukan dalam sebagian besar bahasa algoritmik modern.

Seperti benda hidup normal memiliki ciri-ciri jenis tertentu warna (merah, biru, kuning, hijau), mereka rasa (pahit, asam, manis), jumlah (satu setengah, dua, tujuh), MQL4 menggunakan data dari berbagai jenis. Berbicara tentang jenis data, kita akan berarti jenis nilai konstan, dari variabel dan nilai yang dikembalikan oleh fungsi (fungsi pengertian dipertimbangkan dalam bagian Functions).

Dalam MQL4, jenis berikut dibedakan (untuk nilai-nilai konstanta, variabel, dan nilai-nilai yang dikembalikan oleh fungsi):

int - integers; int - bilangan bulat; double - real numbers; ganda - bilangan real; bool - Boolean (logical) values; bool - Boolean (logis) nilai; string - values of string type; string - nilai tipe string; color - values of color type; warna - warna nilai-nilai tipe;

Page 11: Pengenalan MQL4 - 1.Dasar MQL4

datetime - values of date and time. datetime - tanggal dan nilai waktu.

Type int

Nilai-nilai dari tipe int bilangan bulat. Jenis ini termasuk nilai-nilai yang integer oleh alam. Nilai berikut adalah bilangan bulat, misalnya: jumlah bar dalam jendela simbol (16.000 bars), jumlah pesanan terbuka dan tertunda (3 orders), jarak poin antara simbol saat ini harga dan urutan Buka Harga (15 poin). Mewakili jumlah objek sebagai kejadian-kejadian seperti juga dapat hanya bilangan bulat. Sebagai contoh, jumlah usaha untuk membuka perintah tidak dapat sama dengan satu setengah, tetapi hanya untuk satu, dua, tiga, dll

Ada 2 jenis nilai-nilai integer:

Nilai desimal dapat terdiri dari angka dari 0 sampai 9 dan menjadi positif atau negatif: 10, 11, 12, 1, 5, -379, 25, -12.345, -1, 2.

Nilai hexadecimal dapat terdiri dari huruf-huruf Latin dari A ke F atau dari a ke f, angka dari 0 sampai 9. Mereka harus dimulai dengan 0x atau 0x dan mengambil nilai positif atau negatif: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0x1.

Tipe int nilai harus berada dalam jangkauan dari -2 147 483 648-2 147 483 647. Jika nilai dari sebuah konstanta atau variabel yang berada di luar rentang di atas, hasil dari operasi program tidak akan berlaku. Nilai-nilai konstanta dan variabel dari tipe int mengambil 4 byte dari memori komputer.

Contoh penggunaan variabel int dalam program ketik:

int Art = 10 ; // Contoh variabel integer int B_27 = - 1 ; // Contoh variabel integer int Num = 21 ; // Example Contoh variabel integer int Max = 2147483647 ; // Contoh variabel integer int Min = - 2147483648 ; // Contoh variabel integer

Jenis ganda

Nilai tipe ganda adalah bilangan real yang mengandung bagian pecahan.

Contoh nilai dari tipe ini dapat berupa nilai-nilai yang memiliki bagian fraksional: kecenderungan dari garis pendukung, simbol harga, berarti jumlah pesanan dibuka dalam sehari.

Kadang-kadang anda dapat menghadapi masalah menunjuk variabel saat menulis kode Anda, misalnya, tidak selalu jelas bagi seorang programmer tipe apa (int atau double) milik variabel. Mari kita mempertimbangkan contoh kecil:

Page 12: Pengenalan MQL4 - 1.Dasar MQL4

Suatu program telah membuka 12 perintah dalam waktu seminggu. Apa jenis variabel A yang mempertimbangkan jumlah pesanan berarti setiap hari dibuka oleh program ini? Jawabannya jelas: A = 12 perintah / 5 hari. Hal ini berarti bahwa variabel A = 2,4 harus dipertimbangkan dalam program sebagai ganda, karena nilai ini memiliki bagian pecahan. Apa jenis harus sama variabel A jika jumlah total pesanan dibuka dalam seminggu adalah 10? Anda dapat berpikir bahwa jika 2 (10 perintah / 5 hari = 2) tidak memiliki bagian pecahan, variabel A dapat dianggap sebagai int. Nilai saat ini dari sebuah variabel dapat memiliki sepersekian bagian hanya terdiri dari nol. Adalah penting bahwa nilai dari variabel ini adalah nyata oleh alam. Dalam kasus ini, variabel A juga untuk tipe ganda. Titik yang memisahkan juga harus ditunjukkan dalam catatan konstan dalam program: А = 2,0

Nilai-nilai konstanta riil dan variabel terdiri dari bagian integer, titik desimal, dan bagian pecahan. Nilai-nilai bisa positif atau negatif. Bagian bilangan bulat dan bagian pecahan terbuat dari angka dari 0 sampai 9. Jumlah angka signifikan setelah titik desimal dapat mencapai nilai 15.

Contoh:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Nilai tipe ganda dapat berkisar dari -1,7 * e-308-1,7 * e308. Dalam memori komputer, nilai-nilai konstanta dan variabel tipe ganda mengambil 8 bytes.

Contoh penggunaan variabel tipe ganda dalam sebuah program:

double Art = 10.123 ; // Contoh variabel nyata double B_27 = - 1.0 ; // Contoh variabel nyata double Num = 0.5 ; // Contoh variabel nyata double MMM = - 12.07 ; // Contoh variabel nyata double Price_1 = 1.2756 ; // Contoh variabel nyata

Jenis bool

Nilai tipe bool nilai Boolean (logis) jenis yang mengandung kepalsuan atau kebenaran.

Untuk mempelajari gagasan tentang tipe Boolean, mari kita perhatikan sebuah contoh kecil dari kehidupan sehari-hari kita. Katakanlah, seorang guru perlu mempertimbangkan kehadiran buku-buku teks murid. Dalam hal ini, guru akan mencantumkan semua murid pada selembar kertas dan kemudian akan centang di baris kanan apakah murid memiliki buku atau tidak. Sebagai contoh, guru dapat menggunakan tanda centang dan garis dalam tabel:

Daftar Siswa Buku teks Fisika

Buku teks Biologi

Buku teks Kimia

Page 13: Pengenalan MQL4 - 1.Dasar MQL4

1 Smith V - -

2 Jones V - V

3 Brown - -- V V

... ... .... ... ...

25 Thompson V V V

Nilai-nilai dalam kolom yang tepat dapat hanya 2 jenis: benar atau salah. Nilai-nilai ini tidak dapat dikaitkan dengan salah satu dari jenis di atas, karena mereka dianggap tidak angka sama sekali. Mereka bukan nilai-nilai warna, rasa, jumlah, dan sebagainya, baik. Namun, mereka menanggung rasa penting. Dalam MQL4, nilai-nilai tersebut bernama Boolean, atau logis, nilai-nilai. Konstanta dan variabel dari tipe bool dicirikan melalui bahwa mereka hanya dapat mengambil 2 kemungkinan nilai: benar (True, TRUE, 1) atau salah (False, FALSE, 0). Nilai-nilai konstanta dan variabel dari tipe bool mengambil 4 byte dalam memori komputer.

Contoh penggunaan variabel dari tipe bool dalam program:

bool aa = True ; // variabel Boolean аа memiliki nilai yang benar bool B17 = TRUE ; // variabel Boolean B17 memiliki nilai yang benar bool Hamma = 1 ; // variabel Boolean Hamma memiliki nilai yang benar

bool Asd = False ; variabel Boolean Asd memiliki nilai salah bool Nol = FALSE ; // variabel Boolean Nol memiliki nilai salah bool Prim = 0 ; // variabel Boolean Prim memiliki nilai salah

Tipe string

Nilai tipe string adalah nilai direpresentasikan sebagai satu set karakter ASCII.

Dalam kehidupan kita sehari-hari, yang sama milik konten, misalnya, nama toko, mobil membuat, dsb tipe string nilai ini dicatat sebagai satu set karakter ditempatkan dalam tanda kutip ganda (jangan dicampur dengan tanda kutip tunggal dua kali lipat!). Tanda kutip digunakan hanya untuk menandai awal dan akhir sebuah string konstan. Nilai itu sendiri adalah totalitas karakter dibingkai oleh tanda kutip.

Jika ada kebutuhan untuk memperkenalkan kutip ganda ( "), anda perlu menambahkan garis miring terbalik (\) sebelum itu. Setiap konstanta karakter khusus mengikuti garis miring terbalik (\) dapat diperkenalkan dalam sebuah string. Panjang string konstan berkisar dari 0 sampai 255 karakter. Jika panjang string melebihi maksimum yang konstan, karakter yang berlebihan di sisi kanan akan terpotong dan compiler akan memberikan peringatan yang sesuai. Sebuah kombinasi dari dua karakter, yang pertama adalah garis miring terbalik (\), umumnya diterima dan dipahami oleh sebagian besar

Page 14: Pengenalan MQL4 - 1.Dasar MQL4

program sebagai sebuah instruksi untuk menjalankan format teks tertentu. Kombinasi ini tidak ditampilkan dalam teks. Sebagai contoh, kombinasi dari \ n menunjukkan perlunya suatu garis feed; \ t tuntutan tabulasi, dll

Nilai tipe string dicatat sebagai satu set karakter dibingkai oleh tanda kutip ganda: "MetaTrader 4", "Stop Loss", "Ssssstop_Loss", "stoploss", "10 pips". Nilai string seperti itu adalah himpunan karakter. Tanda kutip digunakan hanya untuk menandai batas-batas nilai. Representasi internal adalah struktur dari 8 byte.

Contoh penggunaan variabel dari tipe string dalam sebuah program:

string Prefix = " MetaTrader 4 "; // Contoh variabel string string Postfix = " _of_my_progr . OK "; / / Contoh variabel string string Name_Mass = " History "; // Contoh variabel string string text = "Upper Line\ n Lower Line"; / / baris teks berisi karakter feed

Jenis warna

Nilai jenis warna adalah nilai kromatik.

Yang dimaksud dengan 'warna' (biru, merah, putih, kuning, hijau, dll) adalah pengetahuan umum. Mudah untuk membayangkan apa yang variabel atau sebuah konstanta jenis warna bisa berarti. Ini adalah sebuah konstanta atau variabel, nilai yang merupakan warna. Ini mungkin tampak agak biasa, tapi sangat sederhana, pada umumnya. Seperti nilai konstanta integer adalah angka, nilai konstan suatu warna adalah warna.

Nilai-nilai konstanta warna dan variabel dapat dinyatakan sebagai salah satu dari tiga jenis:

Literal

Nilai jenis warna direpresentasikan sebagai harfiah terdiri dari tiga bagian yang mewakili nilai-nilai numerik intensitas tiga warna dasar: merah, hijau dan biru (RGB). Nilai semacam ini dimulai dengan 'C' dan dikutip oleh tanda kutip tunggal.

Nilai angka kisaran intensitas RGB 0-255 dan dapat direkam baik desimal dan hexadecimally.

Contoh: C'128, 128.128 '(abu-abu), C'0x00, 0x00, 0xFF' (biru), C'0xFF, 0x33, 0x00 '(merah).

Representasi integer

Page 15: Pengenalan MQL4 - 1.Dasar MQL4

Representasi integer dicatat sebagai heksadesimal atau angka desimal. Sebuah angka heksadesimal ditampilkan sebagai 0xRRGGBB mana RR adalah nilai intensitas merah, GG - hijau, dan BB - biru. Desimal konstanta tidak langsung tercermin dalam RGB. Mereka mewakili nilai desimal integer heksadesimal perwakilan.

Representasi dari nilai-nilai dengan tipe warna sebagai heksadesimal bilangan bulat dan literal sangat user-friendly. Mayoritas modern editor teks dan grafis memberikan informasi tentang intensitas warna merah, hijau dan biru komponen dalam nilai yang dipilih warna. Anda baru saja untuk memilih warna di editor dan menyalin nilai yang ditemukan dalam deskripsi yang sesuai nilai warna representasi dalam kode Anda.

Contoh: 0xFFFFFF (putih), 0x008000 (hijau), 16.777.215 (putih), 32.768 (hijau).

Page 16: Pengenalan MQL4 - 1.Dasar MQL4

Gambar. 11. Warna parameter untuk integer literal dan perwakilan dari nilai warna konstan dapat diambil di editor modern.

Nama Warna

Cara termudah untuk mengatur warna adalah untuk menentukan nama tabel sesuai dengan warna web. Dalam kasus ini, nilai warna direpresentasikan sebagai sebuah kata yang sesuai dengan warna, misalnya, Red - warna merah.

Black Hitam

DarkGreen DarkGreen

DarkSlateGray

DarkSlateGray

Olive Olive Green Hijau Teal Teal Navy Laut Purple Ungu

Maroon Marun Indigo Indigo

MidnightBlue

MidnightBlue

DarkBlue Darkblue

DarkOliveGreen

DarkOliveGreen

SaddleBrown

SaddleBrown

ForestGreen

ForestGreen

OliveDrab OliveDrab

SeaGreen SeaGreen

DarkGoldenrod

DarkGoldenrod

DarkSlateBlue

DarkSlateBlue

Sienna Sienna

MediumBlue MediumBlue

Brown Cokelat

DarkTurquoise

DarkTurquoise

DimGray DimGray

LightSeaGreen

LightSeaGreen

DarkViolet DarkViolet

FireBrick Batu bata tahan api

MediumVioletRed

MediumVioletRed

MediumSeaGreen

MediumSeaGreen

Chocolate

Chocolate

Crimson Crimson

SteelBlue SteelBlue

Goldenrod Goldenrod

MediumSpringGreen

MediumSpringGreen

LawnGreen LawnGreen

CadetBlue CadetBlue

DarkOrchid DarkOrchid

YellowGreen

YellowGreen

LimeGreen LimeGreen

OrangeRed OrangeRed

DarkOrange

DarkOran

Orange Oranye

Gold Emas Yellow Kuning Chartreuse Chartreuse

Lime Kapur

SpringGreen

SpringGree

Aqua Aqua

Page 17: Pengenalan MQL4 - 1.Dasar MQL4

ge n DeepSkyB

lue DeepSkyB

lue Blue Biru Magenta

Magenta Red Merah Gray Gray SlateGra

y SlateGra

y Peru Peru BlueViolet

BlueViolet

LightSlateGray

LightSlateGray

DeepPink DeepPink

MediumTurquoise

MediumTurquoise

DodgerBlue DodgerBlue

Turquoise Pirus

RoyalBlue

RoyalBlue

SlateBlue SlateBlue

DarkKhaki DarkKhaki

IndianRed IndianRed

MediumOrchid

MediumOrchid

GreenYellow GreenYellow

MediumAquamarine

MediumAquamarine

DarkSeaGreen

DarkSeaGreen

Tomato Tomat

RosyBrown RosyBrown

Orchid Anggrek

MediumPurple

MediumPurple

PaleVioletRed PaleVioletRed Coral Coral

CornflowerBlue

CornflowerBlue

DarkGray DarkGray

SandyBrown

SandyBrown

MediumSlateBlue

MediumSlateBlue

Tan Tan

DarkSalmon

DarkSalmon

BurlyWood BurlyWood

HotPink HotPink

Salmon Salmon Violet Violet

LightCoral

LightCoral

SkyBlue SkyBlue

LightSalmon

LightSalmon

Plum Plum Khaki Khaki LightGreen

Lightgreen Aquamarine Aquamarine Silver Perak

LightSkyBlue

LightSkyBlue

LightSteelBlue

LightSteelBlue

LightBlue LightBlue

PaleGreen PaleGreen Thistle Thistle PowderBlue

PowderBlue

PaleGoldenrod

PaleGoldenrod

PaleTurquoise

PaleTurquoise

LightGray

LightGray

Wheat Gandum

NavajoWhite

NavajoWhite

Moccasin Moccasin

LightPink LightPink

Gainsboro Gainsboro

PeachPuff PeachPuff

Pink Merah muda

Bisque Bisque

LightGoldenrod

LightGoldenrod

BlanchedAlmond

BlanchedAlmond

LemonChiffon

LemonChiffon

Beige Beige AntiqueWhit

e AntiqueWhit

e

PapayaWhip PapayaWhip

Cornsilk Cornsilk

LightYellow

LightYellow

LightCyan LightCyan Linen Linen

Lavender Lavender

MistyRose MistyRose

OldLace OldLace

WhiteSmoke WhiteSmoke

Seashell Kerang

Ivory Gading

Honeydew Honeydew

AliceBlue AliceBlue

LavenderBlush

LavenderBlush

MintCream MintCream Snow Salju White Putih

Konstanta dan variabel dari jenis warna mengambil 4 byte dalam memori komputer. Contoh penggunaan variabel tersebut dalam sebuah program:

color Paint_1 = C ' 128 , 128 , 128 '; // nilai abu-abu ditugaskan untuk variabel color Colo = C ' 0 x00 , 0 x00 , 0 xFF '; // Nilai biru ditugaskan ke variabel color BMP_4 = C ' 0 xFF , 0 x33 , 0 x00 ' // Nilai merah ditugaskan ke variabel

color K_12 = 0 xFF3300 ; // Nilai merah ditugaskan ke variabel color N_3 = 0 x008000 ; // Nilai dari hijau ditugaskan ke variabel color Color = 16777215 ; // Nilai putih ditugaskan ke variabel color Alfa = 32768 ; // Nilai hijau ditugaskan ke variabel

Page 18: Pengenalan MQL4 - 1.Dasar MQL4

color A = Red ; // Nilai merah ditugaskan ke variabel color B = Yellow ; // Nilai kuning ditugaskan ke variabel color Colorit = Black ; // Nilai hitam ditugaskan ke variabel color B_21 = White ; // Nilai putih ditugaskan ke variabel

Type datetime

Nilai datetime jenis nilai tanggal dan waktu.

Nilai-nilai dari jenis ini dapat digunakan dalam program-program untuk menganalisis saat awal atau akhir dari beberapa kegiatan, termasuk rilis berita penting, hari kerja start / finish, dll konstanta tanggal dan waktu dapat dinyatakan sebagai garis literal terdiri dari 6 bagian yang mewakili nilai angka tahun, bulan, hari (atau hari, bulan, tahun), jam, menit, dan detik.

Konstan adalah dibingkai dalam tanda kutip tunggal dan dimulai dengan 'D'. Diperbolehkan untuk menggunakan nilai-nilai terpotong: baik tanpa tanggal atau tanpa waktu, atau hanya sebuah nilai kosong. Kisaran nilai: dari tanggal 1 Januari 1970, untuk 31 Desember 2037. Nilai-nilai konstanta dan variabel dari tipe datetime mengambil 4 byte dalam memori komputer. Nilai mewakili jumlah detik berlalu dari 00:00 dari 1 Januari 1970.

Contoh penggunaan variabel dari tipe datetime dalam program:

datetime Alfa = D ' 2004.01.01 00 : 00 '; // Tahun Baru datetime Tim = D ' 01.01.2004 '; // Tahun Baru datetime Tims = D ' 2005.05.12 16 : 30 : 45 '; // 12 Mei 2005 4:30:45 datetime N_3 = D ' 12.05.2005 16 : 30 : 45 '; // 12 Mei 2005 4:30:45 datetime Compile = D ''; // setara dengan D '[kompilasi date] // 00:00:00' / / 00:00:00 '

Deklarasi dan Inisialisasi Variabel

Untuk menghindari kemungkinan pertanyaan 'oleh program tentang jenis data apa ini atau itu milik variabel, itu diterima dalam MQL4 untuk menentukan tipe variabel di awal dari sebuah program secara eksplisit. Sebelum suatu variabel mulai berpartisipasi dalam perhitungan, itu harus dinyatakan.

Deklarasi Variabel pertama adalah menyebutkan dari suatu variabel dalam sebuah program. Pada deklarasi variabel, jenisnya harus dinyatakan.

Page 19: Pengenalan MQL4 - 1.Dasar MQL4

Inisialisasi Variabel berarti tugas untuk itu nilai yang sesuai dengan jenisnya pada bagian deklarasi. Setiap variabel dapat diinisialisasi. Jika tidak ada nilai awal diatur secara eksplisit, variabel numerik akan diinisialisasi dengan nol (0) dan variabel string akan diinisialisasi dengan sebuah baris kosong.

Dalam MQL4, itu diterima untuk menentukan jenis variabel secara eksplisit pada deklarasi mereka. Jenis variabel dinyatakan pada pertama menyebutkan nama variabel ini. Ketika disebutkan untuk kedua kali dan semua berikutnya, jenisnya tidak ditentukan lagi. Dalam perjalanan pelaksanaan program, nilai dari variabel dapat berubah, namun jenis dan namanya tetap tidak berubah. Jenis variabel dapat dinyatakan dalam satu garis atau operator.

Sebuah variabel dapat dinyatakan dalam satu baris:

int Var_1 ; // deklarasi variabel dalam satu baris

Catatan ini berarti bahwa akan ada Var_1 variabel (deklarasi variabel seperti itu) dan jenis variabel ini akan int dalam program yang diberikan.

Dalam satu baris, beberapa variabel dari jenis yang sama dapat dideklarasikan:

int Var_1 , Box , Comm ; // Deklarasi dari beberapa variabel dalam satu baris

Catatan ini berarti bahwa akan ada variabel Var_1, Box dan Comm, semua tipe int, digunakan dalam program. Ini berarti bahwa variabel tercantum di atas akan dipertimbangkan oleh program sebagai variabel tipe integer.

Variabel juga dapat diinisialisasi dalam operator: double Var_5 = 3.7 ; // Variabel inisialisasi dalam sebuah tugas operator

Catatan ini berarti bahwa akan ada variabel ganda Var_5 tipe yang digunakan di dalam program, nilai awal dari variabel yang 3.7.

Jenis variabel ini tidak ditentukan di mana saja di baris berikutnya dari program. Namun, setiap kali program panggilan variabel itu akan "mengingat" bahwa variabel ini adalah jenis yang telah ditentukan pada bagian deklarasi. Seperti perhitungan kemajuan dalam program, nilai-nilai variabel dapat berubah, tetapi jenis mereka tetap tidak berubah.

Nama variabel tidak ada kaitannya dengan jenisnya, yaitu, Anda tidak bisa menilai tentang jenis variabel dengan namanya. Sebuah nama yang diberikan ke variabel juga dapat digunakan untuk variabel jenis apapun dalam program yang berbeda. Namun, jenis dari setiap variabel dapat dideklarasikan satu kali dalam satu program. Jenis variabel menyatakan tidak akan berubah selama pelaksanaan program.

Page 20: Pengenalan MQL4 - 1.Dasar MQL4

Contoh Deklarasi dan Inisialisasi Variabel

Variabel dapat dinyatakan dalam beberapa baris atau dalam satu baris.

Hal ini memungkinkan untuk mendeklarasikan beberapa variabel dari satu tipe secara bersamaan. Dalam kasus ini, variabel yang terdaftar dipisahkan dengan koma, titik koma yang diletakkan di akhir baris.

Gambar. 12. Contoh deklarasi variabel dalam satu baris.

Jenis variabel dinyatakan hanya sekali, pada pertama menyebutkan dari variabel. Tipe tidak akan ditentukan lagi untuk kedua kali dan selanjutnya ketika variabel disebutkan.

Gambar. 13. Contoh deklarasi variabel dalam satu baris.

Hal ini memungkinkan untuk menyatakan dan menginisialisasi variabel dalam operator.

Gambar. 14. Contoh inisialisasi variabel.

Page 21: Pengenalan MQL4 - 1.Dasar MQL4

Gambar. 15. Inisialisasi variabel dalam header dari suatu senyawa operator.

Operasi dan Ekspresi

Untuk memahami apa yang penting operasi dan ekspresi ada di MQL4, tidak ada analogi khusus diperlukan. Praktis, itu adalah sama operasi dan ekspresi aritmatika sederhana. Semua orang memahami bahwa dalam catatan dari f = n + m, anggota f, n dan m adalah variabel, tanda-tanda = dan + adalah tanda-tanda operasional, sedangkan n + m adalah sebuah ekspresi.

Dalam bagian sebelumnya dari buku ini, kami belajar tentang perlunya untuk menyajikan data dari berbagai jenis. Di sini kita akan masuk ke kemungkinan hubungan antara data (meter persegi masih tidak dapat ditambahkan ke apel). Dalam MQL4, ada beberapa keterbatasan alam dan aturan-aturan operasi dalam menggunakan ekspresi.

Notions dari 'Operand', 'Operasi', 'Operasi Simbol' dan 'Ekspresi'

Operand adalah konstanta, variabel, array nilai komponen atau dikembalikan oleh sebuah fungsi (istilah fungsi dipertimbangkan dalam bagian Fungsi, yaitu array - di bagian Array; pada tahap sekarang ini belajar, itu adalah cukup untuk memahami Operand sebagai konstanta dan variabel yang telah kita pelajari sebelumnya).

Operasi adalah tindakan yang dibuat atas Operand.

Operasi simbol adalah karakter yang telah ditetapkan atau sekelompok karakter yang untuk melaksanakan operasi.

Ekspresi adalah suatu urutan operasi Operand dan simbol-simbol; ini adalah program catatan, nilai yang dihitung yang dicirikan oleh tipe data.

Page 22: Pengenalan MQL4 - 1.Dasar MQL4

Types of Operations Jenis Operasi

Ada jenis berikut operasi di MQL4:

arithmetical operations; operasi aritmatika; assignment operations; tugas operasi; relational operations; operasi relasional; Boolean (logical) operations; Boolean (logis) operasi; bitwise operations; bitwise operasi; comma operation; koma operasi; function call. fungsi panggil.

digunakan dalam operator (lihat Operator). Hanya dalam operator-operator penggunaan masuk akal dan diwujudkan dalam sebuah program. Kemungkinan untuk menggunakan sebuah operasi ditentukan oleh sifat-sifat operator (jika properti operator memungkinkan Anda untuk memanfaatkan operasi khusus ini, Anda dapat menggunakannya, jika tidak, Anda Seharusnya ' t memanfaatkan operasi ini). Hal ini dilarang untuk menggunakan operator operasi luar.

Operasi Aritmetika

Simbol berikut milik operasi aritmatika simbol:

Symbol Operasi Contoh Analog

+ Penambahan nilai x + 2

- Pengurangan nilai atau mengubah tanda x - 3, y = - y

* Perkalian nilai 3 * x

/ Pembagian hasil bagi x / 5

% Sisa pembagian menit = time% 60

++ Penambahan nilai 1 ke variabel y++ y = y + 1

-- Pengurangan dari 1 dari nilai dari variabel y-- y = y - 1

Tugas Operasi

Simbol berikut tugas operasi milik simbol:

Symbol Operasi Contoh Analog

Page 23: Pengenalan MQL4 - 1.Dasar MQL4

= Tugas dari nilai variabel x ke y у = x

+= Peningkatan variabel y dengan x у += x y = y + x

-= Pengurangan variabel y dengan x y -= x y = y - x

*= Perkalian dari variabel y dengan x y *= x y = y * x

/= Divisi variabel y dengan x y /= x y = y / x

%= Sisa pembagian variabel y dengan x y %= y = y % x

Operasi relasional

Simbol berikut milik simbol operasi relasional:

Symbol Operasi Contoh

== Benar, jika x sama dengan y x == y

!= Benar, jika x tidak sama dengan y x != y

< Benar, jika x kurang dari y x < y

> Benar, jika x lebih dari y x > y

<= Benar, jika x adalah sama dengan atau kurang dari y x <= y

>= Benar, jika x adalah sama dengan atau lebih dari y x >= y

Operasi Boolean (Logical)

Simbol berikut milik operasi Boolean simbol:

Symbol Operasi Contoh Penjelasan

! NOT (negasi logis) ! ! х х

TRUE (1), jika nilai operand SALAH (0); FALSE (0), jika nilai operand tidak SALAH (0).

||| ATAU (logis pemisahan) x < 5 || x > 7

TRUE(1), if any value of the values is true TRUE (1), jika ada nilai nilai-nilai yang benar

&& DAN (logis konjungsi)

x == 3 && y < 5 x == 3 & & y <5

TRUE(1), if all values are true TRUE (1), jika semua nilai yang benar

Page 24: Pengenalan MQL4 - 1.Dasar MQL4

Operasi bitwise

Operasi bitwise hanya dapat dilakukan dengan bilangan bulat. Operasi berikut milik operasi bitwise:

Satu komplemen dari nilai dari variabel. Nilai dari ekspresi berisi 1 di semua tempat, di mana nilai-nilai dari variabel mengandung 0, dan berisi 0 di semua tempat, di mana nilai-nilai dari variabel mengandung 1.

b = ~n;

Representasi biner dari x adalah tempat y digeser ke kanan. Pergeseran hak ini adalah logis, ini berarti bahwa semua tempat kosong di sebelah kiri akan diisi dengan nol.

x = x >> y;

Representasi biner dari x adalah tempat y digeser ke kiri; di tempat-tempat kosong di sebelah kiri akan diisi dengan nol.

x = x << y;

Operasi bitwise AND dari representasi biner dari x dan y. Nilai dari ekspresi berisi 1 (TRUE) di semua tempat, di mana kedua mengandung x dan y bukan nol, dan nilai ekspresi berisi 0 (FALSE) di semua tempat-tempat lain.

b = ((x & y) != 0);

Operasi bitwise OR dari representasi biner dari x dan y. Nilai dari ekspresi berisi 1 di semua tempat, di mana x atau y tidak berisi 0. Ini berisi 0 di semua tempat-tempat lain.

b = x | y;

Operasi bitwise EKSKLUSIF OR dari representasi biner dari x dan y. Nilai dari ekspresi berisi 1 di tempat-tempat, di mana x dan y mempunyai nilai biner yang berbeda. Ini berisi 0 di semua tempat-tempat lain.

b = x ^ y;

Koma Operasi

Page 25: Pengenalan MQL4 - 1.Dasar MQL4

Ekspresi dipisahkan dengan koma dihitung kiri ke kanan. Semua efek samping dari perhitungan dalam ekspresi kiri hanya dapat terjadi sebelum ekspresi yang benar dihitung. Jenis dan nilai dari hasil bertepatan dengan jenis dan nilai ekspresi yang tepat.

for(i=0,j=99; i<100; i++,j--) Print(array[i][j]); // Loop statement for (i = 0, j = 99; i <100; i + +, j -) Cetak (array [i] [j]); / / Loop pernyataan

Daftar parameter yang ditransfer (lihat di bawah) dapat dianggap sebagai contoh.

My_function (Alf, Bet, Gam, Del) // Calling for a function with arguments My_function (Alf, Bet, Gam, Del) / / Memanggil untuk fungsi dengan argumen

Operator dan fungsi dipertimbangkan dalam bagian Operator, Fungsi dan dalam bab bernama Operator)

Fungsi panggilan

Fungsi panggilan yang dijelaskan dalam semua rinciannya di bagian Fungsi Call.

Similar operasinya pada Operand

Jika seorang murid sekolah dasar diberitahu bahwa, ketika memecahkan masalah tentang jumlah pensil, ia harus mendasarkan nya presentasi tentang istilah-istilah seperti Operand, operator dan ekspresi, anak sekolah miskin pasti akan menemukannya mustahil. Melihat simbol operasi, seseorang mungkin berpikir bahwa coding adalah misterius dan proses yang sangat rumit, yang dapat diakses hanya untuk untuk semacam elit. Namun, coding tidak benar-benar sulit sekali, Anda hanya perlu membuat kepala atau ekor dari beberapa intensions. Untuk memastikan bahwa ini benar-benar begitu, mari kita pertimbangkan beberapa contoh.

Soal 1. John memiliki 2 pensil, Pete memiliki 3 pensil. Berapa banyak melakukan hal-pensil anak laki-laki?:)

Solution. Mari kita menyatakan jumlah pensil Yohanes sebagai variabel A dan jumlah pensil Pete sebagai variabel B, sedangkan hasilnya akan dilambangkan sebagai C.

Jawabannya akan menjadi: С = А + В

Pada bagian bernama Data Jenis, kami menganggap metode deklarasi variabel. Pensil adalah hal-hal, yaitu, itu adalah sesuatu yang pada dasarnya bisa eksis sebagai bagian (misalnya, ada dapat menjadi setengah dari pensil). Jadi, kami akan mempertimbangkan pensil sebagai variabel riil, yaitu variabel jenis ganda.

Page 26: Pengenalan MQL4 - 1.Dasar MQL4

Jadi kita dapat kode solusinya, misalnya, sebagai berikut:

double A = 2.0 ; // Jumlah John's pensil double B = 3.0 ; // Jumlah Pete's pensil double C = A + B ; // total jumlah

Dalam kasus ini, operasi "+" diterapkan untuk menambahkan nilai-nilai bersama yang satu-tipe variabel cukup ilustratif.

Jenis nilai ekspresi:

A + B

akan menjadi tipe variabel yang ada komponen ekspresi. Dalam kasus kami, ini akan menjadi tipe ganda.

Kita akan mendapatkan jawaban yang sama untuk perbedaan antara nilai-nilai (Berapa banyak lagi pensil tidak Pete memiliki daripada Yohanes?):

double A = 2.0 ; // The Jumlah John's pensil double B = 3.0 ; // Jumlah Pete's pensil double C = B - A ; // Perbedaan antara dua bilangan real

Operasi aritmatika lain digunakan dalam cara yang sama:

double C = B * A ; // Perkalian dua bilangan real double C = B / A ; // Divisi dari dua bilangan real

Serupa dapat dilakukan perhitungan dengan bilangan bulat juga.

Soal 2. Murid pergi ke papan tulis dan menjawab di kelas. Yohanes pergi 2 kali, Pete pergi 3 kali. Berapa kali anak laki-laki pergi ke papan tulis total?

Solution. Mari kita menunjukkan ayat-ayat Yohanes sebagai variabel X, Pete bagian-bagian sebagai variabel Y, hasilnya - sebagai Z.

Dalam contoh ini, kita harus menggunakan tipe int variabel, karena kita menganggap peristiwa yang integer oleh alam (Anda tidak bisa pergi ke papan tulis 0,5 kali atau 1,5 kali jawaban di papan tulis bisa baik atau buruk, tapi kami 'kembali hanya tertarik pada jumlah jawaban tersebut atau bagian).

Pemecahan masalah ini dapat ditulis sebagai:

int X = 2 ; // Jumlah ayat-ayat Yohanes int Y = 3 ; // Jumlah Pete's kutipan int Z = X + Y ; // total jumlah

Page 27: Pengenalan MQL4 - 1.Dasar MQL4

Dalam kasus perhitungan perbedaan antara, produk atau hasil bagi bilangan bulat, operasi "-" digunakan dalam cara sederhana serupa:

int X = 2 ; // Integer int Y = 3 ; // Integer int Z = Y - X ; // Perbedaan antara dua bilangan bulat int Z = Y * X ; // Product dari dua bilangan bulat int Z = Y / X ; // Quotient dari dua bilangan bulat

Situasi ini sedikit berbeda dengan variabel tipe string:

Soal 3. Di salah satu sudut rumah, terdapat sebuah toko kelontong bernama "Arctic". Di sudut lain rumah yang sama, ada sebuah pendirian bernama "Hairdressing sedan". Apa yang tertulis di rumah?

Solution. Dalam MQL4, Anda diperbolehkan untuk menambahkan nilai-nilai bersama string konstanta dan variabel. Jika kita tambahkan variabel bersama tipe string, string tersebut hanya ditambahkan satu per satu, dalam urutan mereka disebutkan dalam pernyataan.

Mudah untuk kode program yang akan memberi kita jawaban yang diperlukan:

string W1 = "Arctic"; String 1 string W2 = "Hairdressing Saloon"; // String 2 string Ans = W1 + W2 ; // Sum of string

Nilai variabel Jawaban akan menjadi string yang muncul sebagai berikut:

ArcticHairdressing Saloon

Kami memperoleh tidak-jauh-ke-lihat-di, tapi benar-benar benar terbentuk nilai tipe string. Tentu saja, kita harus mempertimbangkan kesenjangan dan tanda baca lain dalam pengkodean praktis kita masalah seperti itu.

perasi aritmatika lain dengan variabel tipe string dilarang:

string Ans= W1 - W2; // Not allowed string Jawaban = W1 - W2; / / Tidak boleh string Ans= W1 * W2; // Not allowed string Jawaban = W1 * W2; / / Tidak boleh string Ans= W1 / W2; // Not allowed string Jawaban = W1 / W2; / / Tidak boleh

Typecasting

Page 28: Pengenalan MQL4 - 1.Dasar MQL4

Typecasting adalah memodifikasi (pemetaan) dari jenis nilai-nilai dari sebuah operand atau ekspresi. Sebelum pelaksanaan operasi (semua tapi tugas operasi), mereka adalah dimodifikasi untuk jenis prioritas tertinggi, sedangkan sebelum pelaksanaan operasi tugas mereka dimodifikasi untuk jenis target.

Mari kita pertimbangkan beberapa masalah yang berhubungan dengan typecasting.

Soal 4. John memiliki 2 pensil, sedangkan Pete pergi 3 kali ke papan tulis. Berapa banyak total?

Sejauh menyangkut logika formal, yang sakit-posedness dari masalah ini adalah jelas. Masuk akal peristiwa yang tidak dapat ditambahkan bersama-sama dengan hal, itu salah.

Soal 5. Di salah satu sudut rumah, terdapat sebuah toko kelontong bernama "Arctic", sedangkan John memiliki 2 pensil.:)

Dengan tingkat yang sama keputusasaan (sejauh menyangkut penalaran yang normal), kita dapat meminta salah satu dari:

1. Berapa banyak total?, Atau

2. Apa yang tertulis di rumah?

Jika Anda ingin untuk memecahkan kedua masalah di atas dengan benar dalam MQL4, Anda harus mengacu kepada aturan typecasting. Pertama, kita harus berbicara tentang bagaimana variabel-variabel dari berbagai jenis terwakili di dalam memori komputer.

Jenis data, seperti int, bool, color, datetime dan double, termasuk dalam tipe data numerik. Representasi internal konstanta dan variabel int, double, bool, color and datetime adalah jenis nomor. Variabel int, bool, warna dan tipe datetime terwakili di dalam memori komputer sebagai bilangan bulat, sedangkan variabel jenis, yang diwakili ganda sebagai nomor presisi ganda dengan floating point, yaitu bilangan real. Nilai konstanta dan variabel dari tipe string adalah kumpulan karakter (Gambar 16).

Nilai-nilai int, bool, color dan tipe datetime terwakili di dalam memori Nilai tipe double terwakili di dalam memori komputer sebagai bilangan real. Nilai tipe string terwakili di dalam memori komputer sebagai urutan karakter Nilai-nilai int, bool, color, datetime and double adalah tipe nilai-nilai numerik. Nilai-nilai tipe string adalah nilai-nilai character type.

Page 29: Pengenalan MQL4 - 1.Dasar MQL4

Gambar. 16. Perwakilan dari berbagai tipe data dalam memori komputer.

Kami yang disebutkan di atas bahwa nilai-nilai dari variabel-variabel int, bool, warna dan tipe datetime terwakili di dalam memori komputer sebagai bilangan bulat, sedangkan tipe ganda - sebagai bilangan real. Jadi, jika kita ingin mencari tahu tentang jenis ekspresi yang terdiri dari variabel-variabel dari berbagai jenis, kita hanya bisa memilih antara tiga tipe data: int, double dan string. Nilai-nilai bool, warna dan tipe datetime akan membuktikan diri dalam suatu ekspresi dengan cara yang sama sebagai nilai-nilai tipe int.

Jadi, apa yang akan menjadi tipe nilai ekspresi Operand terdiri dari berbagai jenis? Dalam MQL4, aturan tersirat typecasting diterima:

jika ekspresi Operand berisi berbagai jenis, tipe ekspresi akan ditransformasi menjadi tipe yang memiliki prioritas tertinggi; tipe int, bool, warna dan datetime memiliki prioritas yang sama, sedangkan jenis ganda memiliki prioritas lebih tinggi, dan jenis senar telah prioritas tertinggi;

jika jenis ekspresi di sebelah kanan tanda penugasan operasi tidak cocok dengan tipe variabel di sebelah kiri tanda operasi penugasan, nilai ungkapan ini berperan sebagai jenis variabel ke sebelah kiri operasi penugasan tanda; ini disebut 'target-type cast';

dilarang untuk melemparkan nilai-nilai tipe string target lain jenis.

Yah, mari kita kembali ke Soal 4. Tidak dapat dua solusi untuk itu.

Solusi 4.1. Perhitungan hasil dari int type:

double A = 2.0 ; // The number of John's pencils double A = 2.0; / / Jumlah John's pensil int Y = 3 ; // The number of Pete's passages int Y = 3; / / Jumlah Pete's kutipan int F = A + Y ; // Total number int F = A + Y; / / total jumlah

Page 30: Pengenalan MQL4 - 1.Dasar MQL4

Pertama-tama, kita perlu tahu nilai ekspresi Operand disediakan dengan tipe berbeda-beda. In the expression: Dalam ekspresi:

A + Y, A + Y, Operand dari dua tipe data yang digunakan: А - tipe ganda, Y - int type.

Sesuai dengan aturan yang tersirat typecasting, nilai ekspresi ini akan menjadi sejumlah jenis ganda. Please note: Harap dicatat: Kami hanya berbicara tentang jenis ekspresi A + Y, tetapi tidak tentang jenis variabel F yang ada di sebelah kiri dari tanda operasi penugasan. Nilai dari ekspresi ini adalah bilangan real 5.0. Untuk cast jenis ekspresi A + Y, kita menerapkan bagian pertama typecasting aturan yang tersirat.

Setelah perhitungan ekspresi A + Y, penugasan operasi dijalankan. Dalam kasus ini, jenis ketidakcocokan juga: jenis ekspresi A + Y adalah dua kali lipat, sedangkan jenis variabel F adalah int. Selama pelaksanaan operasi penugasan: Pertama, jenis ekspresi A + Y adalah dicor sebagai int (sesuai dengan aturan perhitungan integer) dan integer menjadi 5; maka hasil ini menjadi nilai variabel integer F. perhitungan telah dilaksanakan sesuai dengan bagian kedua dari aturan yang tersirat typecasting - 'target-type cast'. Hasil akhir dari perhitungan dan manipulasi adalah sebagai berikut: Nilai integer variabel F adalah bilangan bulat 5.

Solusi 4.2. Situasi serupa terjadi, jika kita mencoba untuk memiliki hasil sebagai nilai tipe ganda:

double A = 2.0 ; // The number of John's pencils double A = 2.0; / / Jumlah John's pensil int Y = 3 ; // The number of Pete's passages int Y = 3; / / Jumlah Pete's kutipan double F = A + Y ; // Total number double F = A + Y; / / total jumlah

Situasi ini berbeda dari sebelumnya satu demi bahwa target jenis variabel F (pada bagian kiri tanda operasi penugasan), dalam kasus kami, itu adalah tipe ganda, bertepatan dengan tipe (double) dari ekspresi A + Y, begitu kita tidak punya target-tipe cast di sini. Hasil perhitungan (nilai ganda variabel tipe F) adalah bilangan real 5.0.

Sekarang mari kita mencari solusi untuk Soal 5. Tidak ada pertanyaan datang di inisialisasi variabel:

string W1 = "Arctic"; // String 1 string W1 = "Arktik"; / / String 1 double A = 2 ; // The number of John's pencils double A = 2; / / Jumlah John's pensil

Solusi 5.1. Sebuah solusi untuk masalah ini:

string W1 = "Arctic"; // String 1 string W1 = "Arktik"; / / String 1 double A = 2 ; // Number of John's pencils double A = 2; / / Jumlah John's pensil string Sum = W1 + A ; // Implied transformation to the right string Sum = W1 + A; / / Tersirat transformasi ke kanan

Page 31: Pengenalan MQL4 - 1.Dasar MQL4

Di sini, di bagian kanan, kita menambahkan nilai-nilai bersama dua variabel: satu jenis tali, dan yang lain - dari jenis ganda. Menurut aturan tersirat typecasting, nilai variabel A akan pertama-tama akan dilemparkan ke tipe string (karena jenis ini adalah prioritas yang lebih tinggi), dan kemudian nilai-nilai satu tipe akan ditambahkan bersama (Rangkaian). Jenis nilai yang dihasilkan di sebelah kanan tanda penugasan akan operasi string. Pada tahap berikutnya, nilai ini akan ditetapkan ke variabel string Sum. Sebagai hasilnya, nilai variabel akan Sum string berikut:

Arctic2.00000000 Arctic2.00000000

Solusi 5.2. Solusi ini salah:

string W1 = "Arctic"; // String 1 string W1 = "Arktik"; / / String 1 double A = 2; // Number of John's pencils double A = 2; / / Jumlah John's pensil double Sum = W1 + A; // This is inadmissible double Sum = W1 + A; / / ini tidak dapat diterima

Dalam kasus ini, kita melanggar larangan target-tipe cast untuk nilai-nilai tipe string. Jenis nilai ekspresi W1 + A, seperti dalam solusi sebelumnya, adalah string. Ketika tugas operasi dijalankan, target-tipe cast harus dilakukan. Namun, menurut aturan, tipe string dilemparkan sasaran jenis prioritas yang lebih rendah adalah dilarang. Ini adalah kesalahan yang akan terdeteksi oleh MetaEditor pada program penciptaan (di kompilasi).

Secara umum, aturan-aturan yang diberikan dalam bagian ini jelas dan sederhana: Jika anda menghitung nilai-nilai apapun, Anda harus mengeluarkan semua jenis berbeda untuk tipe dengan prioritas tertinggi. Typecasting dengan prioritas rendah diperbolehkan hanya untuk nilai numerik, sedangkan string tidak dapat diubah menjadi angka.

Fitur Integer Perhitungan

Bilangan bulat yang dikenal sebagai angka-angka tanpa pecahan bagian. Jika Anda menambahkan mereka bersama-sama atau mengurangi mereka, Anda akan mendapatkan hasil yang intuitif. Sebagai contoh, jika:

int X = 2 ; // First int variable int x = 2; / / Pertama variabel int int Y = 3 ; // Second int variable int Y = 3; / / Kedua variabel int

dan:

int Z = X + Y ; // Addition operation, int Z = X + Y; / / Penambahan operasi,

tidak ada masalah untuk menghitung nilai variabel Z: 2 + 3 = 5

Page 32: Pengenalan MQL4 - 1.Dasar MQL4

Demikian pula, jika Anda mengeksekusi operasi perkalian:

int Z = X * Y ; // Multiplication operation, int Z = X * Y; / / Perkalian operasi,

hasilnya sangat ditebak: 2 * 3 = 6

Tapi apa hasil yang kita dapatkan, jika program kami untuk melaksanakan operasi pembagian?

int Z = X / Y ; // Division operation int Z = X / Y; / / Divisi operasi

Sangat mudah untuk menulis 2 / 3. Namun, itu bukan bilangan bulat. Jadi, apa yang akan menjadi nilai ekspresi X / Y dan variabel Z?

Aturan perhitungan integer terdiri di bagian fraksional selalu dibuang.

Dalam contoh di atas, ekspresi di sebelah kanan tanda persamaan hanya berisi bilangan bulat, misalnya, tidak ada typecasting terjadi, dalam kasus ini. Dan ini berarti bahwa jenis ekspresi X / Y adalah int. Jadi hasil dari nilai integer menemukan ekspresi X / Y (= 2 / 3) adalah 0 (nol). Nilai ini (nol) akan ditugaskan untuk variabel Z di akhir.

Sejalan dengan itu, nilai-nilai lain dari variabel X dan Y akan menghasilkan hasil yang lain. For example, if: Sebagai contoh, jika:

int X = 7 ; // The value of an int variable int X = 7; / / Nilai dari suatu variabel int int Y = 3 ; // The value of an int variable int Y = 3; / / Nilai dari suatu variabel int int Z = X / Y ; // Division operation, int Z = X / Y; / / Divisi operasi,

maka nilai 7 / 3 untuk ekspresi X / Y dan Z adalah variabel sama dengan 2 (dua).

Order of Operations

Perhitungan aturan terdiri sebagai berikut:

Nilai ekspresi dihitung sesuai dengan prioritas operasi aritmatika dan kiri ke kanan, masing-masing hasil antara yang dihitung menurut aturan typecasting.

Mari kita pertimbangkan agar perhitungan ekspresi dalam contoh berikut:

Page 33: Pengenalan MQL4 - 1.Dasar MQL4

Y = 2.0 * ( 3 * X / Z - N ) + D ; // Exemplary expression Y = 2.0 * (3 * X / Z - N) + D; / / Teladan ekspresi The expression to the right of the equality sign consists of two summands: 2.0*( 3*X/Z - N) and D. The summand 2.0*( 3*X/Z - N) consists of two factors, namely: 2 and (3*X/Z - N). Ekspresi di sebelah kanan tanda persamaan terdiri dari dua summands: 2.0 * (3 * X / Z - N) dan D. summand 2.0 * (3 * X / Z - N) terdiri dari dua faktor, yaitu: 2 dan (3 * X / Z - N). The expression in parentheses, 3*X/Z - N, in its turn, consists of two summands, the summand 3*X/Z consisting of three factors, namely: 3, X and Z. Ekspresi dalam tanda kurung, 3 * X / Z - N, pada gilirannya, terdiri dari dua summands, yang summand 3 * X / Z yang terdiri dari tiga faktor, yaitu: 3, X dan Z.

In order to calculate the expression to the right from the equality sign, we will, first, calculate the value of expression 3*X/Z. Dalam rangka untuk menghitung ekspresi ke kanan dari tanda persamaan, kita akan, pertama, menghitung nilai ekspresi 3 * X / Z. This expression contains two operations (multiplication and division) of the same rank, so we will calculate this expression left to right. Ungkapan ini mengandung dua operasi (perkalian dan pembagian) dari nilai yang sama, jadi kita akan menghitung ungkapan ini kiri ke kanan. First, we will calculate the value of expression 3*X, the type of this expression being the same as the type of the variable X. Then we will calculate the value of expression 3*X/Z, its type being calculated according to the typecasting rule. Pertama, kami akan menghitung nilai ekspresi 3 * X, jenis ekspresi ini menjadi sama dengan jenis variabel X. Kemudian kita akan menghitung nilai ekspresi 3 * X / Z, jenisnya yang dihitung menurut typecasting aturan. After that, the program will calculate the value and the type of the expression 3*X/Z - N, then - of the expression 2.0*( 3*X/Z - N), and the last - of the entire expression 2.0*( 3*X/Z - N) + D. Setelah itu, program ini akan menghitung nilai dan jenis ekspresi 3 * X / Z - N, lalu - ungkapan 2.0 * (3 * X / Z - N), dan yang terakhir - dari seluruh ekspresi 2.0 * (3 * X / Z - N) + D.

As is easy to see, the order of operations in a program is similar to that in mathematics. Seperti yang mudah untuk melihat, urutan operasi dalam program serupa dengan yang dalam matematika. However, the former one differs in calculating of the types of values in intermediate outcomes, which exercises a significant influence on the final result of calculations. Namun, mantan satu berbeda dalam menghitung dari jenis nilai-nilai di antara hasil, yang latihan pengaruh yang signifikan pada hasil akhir perhitungan. Particularly (unlike the rules accepted in mathematics), the order of operands in an expression is very important. Terutama (tidak seperti aturan-aturan yang diterima dalam matematika), urutan Operand dalam ekspresi sangat penting. To demonstrate this, let's consider a small example. Untuk menunjukkan hal ini, marilah kita perhatikan sebuah contoh kecil.

Problem 6.Calculate the values of expressions А/В*С and А*С/В for integers А, В, and С. Soal 6.Calculate nilai-nilai ekspresi А / В * А * С dan С / В untuk bilangan bulat А, В, dan С.

The result of calculation is intuitively expected to be the same, in both cases. Hasil perhitungan secara intuitif diperkirakan akan sama, dalam kedua kasus. However, this statement is true only for real numbers. Namun, pernyataan ini hanya berlaku untuk bilangan real. If we calculate the values of expressions composed of the operands of int

Page 34: Pengenalan MQL4 - 1.Dasar MQL4

type, we should always consider the intermediate outcome. Jika kita menghitung nilai ekspresi terdiri dari tipe int Operand, kita harus selalu mempertimbangkan antara hasil. In such a case, the sequence of operands is of fundamental importance: Dalam kasus seperti ini, urutan Operand adalah pentingnya:

int A = 3 ; // Value of int type int A = 3; / / Nilai dari tipe int int B = 5 ; // Value of int type int B = 5; / / Nilai dari tipe int int C = 6 ; // Value of int type int C = 6; / / Nilai dari tipe int int Res_1 = A int Res_1 = A /B * C ; // Result 0 (zero) / B * C; / / Result 0 (nol) int Res_2 = A * C/ int Res_2 = A * C / B ; // Result 3 (three) B; / / Result 3 (tiga)

Let's follow the process of calculating the expression A/B*C: Mari kita ikuti proses menghitung ekspresi A / B * C:

1. 1. First (from left to right) the value of the expression A/B will be calculated. Pertama (dari kiri ke kanan) nilai ekspresi A / B akan dihitung. According to the above rules, the value of the expression (3/5) is integer 0 (zero). Menurut peraturan di atas, nilai dari ekspresi (3 / 5) adalah integer 0 (nol).

2. 2. Calculation of the expression 0*С (zero multiplied by С). Perhitungan ekspresi 0 * С (nol dikalikan dengan С). The result is integer 0 (zero). Hasilnya adalah integer 0 (nol).

3. 3. General result (the value of the variable Res_1) is integer 0 (zero) . Hasil Umum (nilai dari variabel Res_1) adalah integer 0 (nol).

Let's now follow the developments of calculating the expression A*C/B. Sekarang mari kita ikuti perkembangan menghitung ekspresi A * C / B.

1. 1. Calculation of A*C. Perhitungan A * C. The value of this expression is integer 18 (3*6=18). Nilai dari ekspresi ini adalah integer 18 (3 * 6 = 18).

2. 2. Calculation of the expression 18/B. Perhitungan ekspresi 18 / B. The answer is obvious: after the fractional part has been discarded, (18/5) is integer 3 (three). Jawabannya jelas: setelah bagian fraksional telah dibuang, (18 / 5) adalah integer 3 (tiga).

3. 3. General result (the value of variable Res_2) is integer 3 (three) . Hasil umum (nilai variabel Res_2) adalah integer 3 (tiga).

In the above example, we consider just a small code fragment, in which the values of the variables of int type are calculated. Dalam contoh di atas, kami mempertimbangkan hanya kode fragmen kecil, di mana nilai-nilai dari variabel-variabel dari tipe int dihitung. If we replace these variables with constants with the same values, the final result will be the same. Jika kita mengganti variabel tersebut dengan konstanta dengan nilai yang sama, hasil akhirnya akan sama. When calculating expressions containing integers, you must pay greater attention to the contents of your program lines. Ketika menghitung ekspresi berisi bilangan bulat, Anda harus membayar perhatian yang lebih besar isi baris program

Page 35: Pengenalan MQL4 - 1.Dasar MQL4

Anda. Otherwise, an error may occur in your code, which would be very difficult to find and fix later (especially in large programs). Jika tidak, mungkin terjadi kesalahan dalam kode Anda, yang akan sangat sulit untuk menemukan dan memperbaiki kemudian (terutama di program yang besar). Such troubles do not occur in calculations using real numbers. However, if you use operands of different types in one complex expression, the final result may fully depend on a randomly formed fragment containing division of integers. Masalah seperti itu tidak terjadi dalam perhitungan dengan menggunakan bilangan real. Namun, jika Anda menggunakan jenis Operand yang berbeda dalam satu ekspresi kompleks, hasil akhir dapat sepenuhnya bergantung pada sebuah fragmen yang terbentuk secara acak yang berisi pembagian bilangan bulat.

In the section of Operators , the term and general properties of operators are considered, whereas Pada bagian Operator, istilah dan sifat-sifat umum operator akan dipertimbangkan, sedangkan the special properties of each operator are described in the chapter named Operators . sifat khusus masing-masing operator akan dijelaskan dalam bab bernama Operator.

Operator

The Term of Operator The Term of Operator

One of the key notions of any programming language is the term of 'operator'. Salah satu kunci pengertian tentang bahasa pemrograman apapun adalah istilah dari 'operator'. Coding seems to be impossible for the person that has not completely learned this term. Coding tampaknya mustahil bagi orang yang belum sepenuhnya belajar istilah ini. The sooner and more properly a programmer learns what operators are and how they are applied in a program, the sooner this programmer starts writing his or her own programs. Semakin cepat dan lebih tepat seorang programmer operator belajar apa dan bagaimana mereka diterapkan dalam sebuah program, semakin cepat pemrogram ini mulai menulis program sendiri.

Operator is a part of a program; it is a phrase in an algorithmic language that prescribes a certain method of data conversion. Operator adalah bagian dari sebuah program, melainkan sebuah ungkapan dalam bahasa algoritmik yang menentukan metode tertentu data konversi.

Any program contains operators. Berisi program apapun operator. The closest analogy to 'operator' is a sentence. Analogi yang paling dekat 'operator' adalah sebuah kalimat. Just as normal sentences compose the text of a story or of a novel, so operators compose a program. Sama seperti kalimat biasa menulis teks dari sebuah cerita atau novel, jadi operator menyusun program.

Page 36: Pengenalan MQL4 - 1.Dasar MQL4

Properties of Operators Sifat Operator

There are two kinds of properties of operators - a common property and specific properties of different operators. Ada dua jenis operator properti - properti yang umum dan sifat-sifat khusus yang berbeda operator.

Common Property of Operators Common Property of Operator

All operators have one common property - they all are executed. Semua operator memiliki satu properti umum - mereka semua dihukum mati.

We can say that operator is an instruction containing the guide to operations (the description of an order). Kita dapat mengatakan bahwa operator adalah instruksi yang berisi panduan untuk operasi (deskripsi perintah). For a computer, executing a program running on it means (consecutively passing from one operator to another) complying the orders (prescriptions, instructions) contained in the operators. Untuk komputer, mengeksekusi sebuah program berjalan di atasnya berarti (berturut-turut lewat dari satu operator lain) mematuhi perintah (resep, instruksi) yang terdapat dalam operator.

Operator as such is just a record, a certain sequence of characters. Operator seperti itu hanyalah sebuah catatan, urutan tertentu karakter. Operator does not have any levers, wires or memory cells. Operator tidak memiliki pengungkit, kabel atau sel memori. This is why, when a computer is executing a program, nothing happens in operators as such, they continue staying in the program as composed by the programmer. Inilah sebabnya, ketika sebuah komputer yang sedang mengeksekusi sebuah program, tidak ada yang terjadi dalam operator-operator seperti itu, mereka tetap tinggal di program yang dibuat oleh pemrogram. However, the computer that has all those memory cells and links between them experiences all the transformations inside. Namun, komputer yang memiliki memori semua sel dan link di antara mereka pengalaman semua transformasi dalam. If your PC has executed some transformations of data according to the instruction contained in an operator, you say: the operator has been executed. Jika PC Anda telah melaksanakan beberapa transformasi data sesuai dengan instruksi yang terdapat dalam operator, Anda berkata: operator telah dilaksanakan.

Specific Properties of Operators Spesifik Properties of Operator

There are several kinds of operators. Ada beberapa jenis operator. Operators of each type have their specific properties. Operator tiap jenis memiliki sifat-sifat khusus. For example, the property of an assignment operator is its ability to assign a certain value to the given variable; the property of a loop operator is its multiple executions, etc. Specific

Page 37: Pengenalan MQL4 - 1.Dasar MQL4

properties of operators are considered in all details in the corresponding sections of chapter Operators in this book. Sebagai contoh, properti dari suatu operator penugasan adalah kemampuannya untuk menetapkan nilai tertentu yang diberikan variabel; milik operator satu lingkaran adalah beberapa eksekusi, dan lain-lain sifat-sifat khusus operator akan dipertimbangkan dalam semua rinciannya di bagian yang sesuai bab operator dalam buku ini. We will only say here that all types of operators have their own properties that are typical only for their type and are not repeated in any other types. Kami hanya akan mengatakan di sini bahwa semua jenis operator memiliki sifat-sifat mereka sendiri yang khas hanya untuk jenis mereka dan tidak diulang-ulang dalam jenis lain.

Types of Operators Jenis Operator

There are two types of operators: simple operators and compounds . Ada dua jenis operator: operator dan senyawa sederhana.

Simple Operators Sederhana Operator

Simple operators in MQL4 end with the character ";" (semicolon). Sederhana operator di MQL4 diakhiri dengan karakter ";" (titik koma). Using this separator, the PC can detect where one operator ends and another one starts. Menggunakan pemisah ini, PC bisa mendeteksi di mana satu operator berakhir dan satu lagi dimulai. Character ";" (semicolon) is as necessary in a program as character "." Karakter ";" (titik koma) adalah sebagai diperlukan dalam program sebagai karakter "." (full stop) is necessary in a normal text to separate sentences. (full stop) diperlukan dalam teks normal untuk memisahkan kalimat. One operator may take several lines. Satu operator dapat mengambil beberapa baris. Several operators may be placed in one line. Beberapa operator mungkin ditempatkan dalam satu baris.

Every simple operator ends with character ";" (semicolon). Setiap operator sederhana diakhiri dengan karakter ";" (titik koma).

Examples of simple operators: Contoh sederhana operator:

Day_Next = TimeDayOfWeek ( Mas_Big [ n ][ 0 ] + 60 ) ; // Simple operator Day_Next = TimeDayOfWeek (Mas_Big [n] [0] + 60); / / Sederhana operator

Go_My_Function_ind () ; // Simple operator Go_My_Function_ind (); / / Sederhana operator

a = 3 ; b = a * x + n ; i ++; // Several operators in a line a = 3 b = a * x + n; i + +; / / Beberapa operator di garis

Print ( " Day= " , TimeDay ( Mas_Big [ s ][ 0 ]) , // One operator..

Page 38: Pengenalan MQL4 - 1.Dasar MQL4

Print ( "Hari =", TimeDay (Mas_Big [s] [0]), / / Satu operator .. " Hour= " , TimeHour ( Mas_Big [ s ][ 0 ]) , // is located.. "Jam =", TimeHour (Mas_Big [s] [0]), / / ini terletak .. " Minute= " , TimeMinute ( Mas_Big [ s ][ 0 ]) , // in several .. "Menit =", TimeMinute (Mas_Big [s] [0]), / / di beberapa .. " Mas_Big[s][0]= " , Mas_Big [ s ][ 0 ] , // lines "Mas_Big [s] [0] =", Mas_Big [s] [0], / / baris " Mas_Big[s][1]= " , Mas_Big [ s ][ 1 ]) ; "Mas_Big [s] [1] =", Mas_Big [s] [1]);

Compound Operators (Compounds) Operator Compound (Senyawa)

A compound operator consists of several simple ones separated by character ";" and is enclosed in braces. Sebuah operator senyawa sederhana yang terdiri dari beberapa yang dipisahkan oleh karakter ";" dan ditutupi dengan kawat gigi. In order to be able to use several operators where only one is expected to be located, programmers use a compound operator (they also call it "block" or "block of code"). The list of operators in a compound is separated by braces. Untuk dapat menggunakan beberapa operator di mana hanya satu yang diharapkan akan berada, programer menggunakan senyawa operator (juga mereka sebut "blok" atau "blok kode"). Daftar operator dalam suatu senyawa yang dipisahkan dengan kawat gigi . The presence of a closing brace marks the end of a compound operator. Kehadiran penjepit penutup menandai akhir dari suatu senyawa operator.

An exemplary use of a compound in a conditional operator. Teladan penggunaan senyawa dalam operator bersyarat. It starts with the conditional operator if(expression) followed by a compound. The compound operator contains a list of executable operators. Dimulai dengan operator kondisional if (ekspresi) yang diikuti oleh suatu senyawa. Senyawa operator berisi daftar dijalankan operator.

Fig. Gambar. 17. 17. Compound operator. Compound operator.

The body of a compound operator is enclosed in braces. Tubuh seorang operator senyawa terlampir di kawat gigi. Every compound operator ends

Page 39: Pengenalan MQL4 - 1.Dasar MQL4

with a closing brace. Setiap senyawa operator diakhiri dengan penjepit penutup.

Examples of compound operators: Contoh senyawa operator:

// Example of operator switch / / Contoh operator beralih switch ( ii ) // Operator switch(expression) switch (ii) / / Operator switch (ekspresi) { // Opening brace (/ / Membuka penjepit case 1 : Buf_1 [ Pok - f + i ] = Prognoz ; break ; // Nested operators (operator body) Kasus 1: Buf_1 [Pok - f + i] = Prognoz; break; / / Bersarang operator (operator tubuh) case 2 : Buf_2 [ Pok - f + i ] = Prognoz ; break ; // Nested operators (operator body) Kasus 2: Buf_2 [Pok - f + i] = Prognoz; break; / / Bersarang operator (operator tubuh) case 3 : Buf_3 [ Pok - f + i ] = Prognoz ; break ; // Nested operators (operator body) Kasus 3: Buf_3 [Pok - f + i] = Prognoz; break; / / Bersarang operator (operator tubuh) } // Closing brace,.. ) / / Menutup penjepit, .. // .. / / .. shows where the compound operator ends menunjukkan di mana operator senyawa berakhir //----------------------------------------------------------------------------------------- //------------------------------------------------ ----------------------------------------- // Exemplary use of loop / Teladan penggunaan loop for ( tt = 1 ; tt <= Kol_Point [ 7 ] ; tt ++ ) // Operator for(expressions) for (tt = 1; tt <= Kol_Point [7]; tt + +) / / Operator (ekspresi) { // Opening brace (/ / Membuka penjepit Numb = Numb + Y_raz [ tt ] * X_raz [ ii ][ tt ] ; // Nested operator (operator body) Numb = Numb + Y_raz [tt] * X_raz [ii] [tt]; / / Bersarang operator (operator tubuh) } // Closing brace.. ) / / Menutup penjepit .. // .. / / .. shows where the compound operator ends menunjukkan di mana operator senyawa berakhir //----------------------------------------------------------------------------------------- //------------------------------------------------ ----------------------------------------- // Example of conditional operator if / / Contoh operator bersyarat jika if ( TimeDay ( Mas_Big [ f ][ 0 ]) != 6 if (TimeDay (Mas_Big [f] [0])! = 6 ) // if (expression) ) / / If (ekspresi) { // Opening brace (/ / Membuka penjepit Sred = ( Nabor_Koef [ ii ][ vv ][ 2 ] + NBh ) * Point ; // Nested operators (operator body) Sred = (Nabor_Koef [ii] [ayat] [2] + NBh) * Point; / / Bersarang operator (operator tubuh) Ind = Nabor_Koef [ ii ][ vv ][ 0 ] + f ; // Nested operators (operator body) Ind = Nabor_Koef [ii] [ayat] [0] + f; / / Bersarang operator (operator tubuh) Print ( " Ind= " , Ind ) ; // Nested operators (operator body) Print ( "Ind =", Ind); / / Bersarang operator (operator tubuh) } // Closing brace .. ) / / Menutup penjepit .. // .. shows where the compound operator ends / / .. Menunjukkan tempat operator senyawa berakhir

Page 40: Pengenalan MQL4 - 1.Dasar MQL4

The body of a compound is always enclosed in braces and can consist of zero, one, or several operators. Tubuh suatu senyawa selalu ditutupi dalam kurung dan dapat terdiri dari nol, satu, atau beberapa operator.

Examples of simple operators: Contoh sederhana operator:

//---------------------------------------------------------------------------------- //------------------------------------------------ ---------------------------------- // Example of operator for / / Contoh operator untuk for ( n = 1 ; n <= Numb ; n ++ ) // for(expressions) for (n = 1; n <= Numb; n + +) / / for (ekspresi) Mas [ n ] = Const_1 + n * Pi ; // Nested operator (operator body) Mas [n] = Const_1 + n * Pi; / / Bersarang operator (operator tubuh) //---------------------------------------------------------------------------------- //------------------------------------------------ ---------------------------------- // Example of conditional operator if / / Contoh operator bersyarat jika if ( Table > Chair ) // if (expression) if (Tabel> Ketua) / / if (ekspresi) Norma = true ; // first operator (suboperator 1) Norma = true; / / operator pertama (suboperator 1) else // Else-condition lain / / Else-kondisi Norma = false ; // second operator (suboperator 2) Norma = false; / / detik operator (suboperator 2) //---------------------------------------------------------------------------------- //------------------------------------------------ ----------------------------------

Several simple operators may be combined in a compound operator without any strict necessity. Beberapa operator sederhana dapat digabungkan dalam satu kompleks operator ketat tanpa keharusan.

This is a rare, but absolutely admissible construction. Ini adalah jarang, tapi benar-benar diterima konstruksi. In this case, the operators enclosed in braces are called "a block of operators". Dalam kasus ini, para operator yang ditutupi dalam kurung disebut "blok operator". This use is fully acceptable. Penggunaan ini sepenuhnya dapat diterima. This is the programmer who decides whether to enclose operators in braces or not, just for the sake of convenient code representation. An exemplary block of operators: Ini adalah programmer yang memutuskan apakah akan menyertakan operator di kawat gigi atau tidak, hanya demi representasi kode nyaman. Sebuah blok teladan operator:

{ // Opening brace (/ / Membuka penjepit Day_Next = TimeDayOfWeek ( Mas_Big [ n ][ 0 ] + 60 ) ; // Simple operator Day_Next = TimeDayOfWeek (Mas_Big [n] [0] + 60); / / Sederhana operator b = a * x + n ; // Simple operator b = a * x + n; / / Sederhana operator } // Closing brace.. ) / / Menutup penjepit ..

Page 41: Pengenalan MQL4 - 1.Dasar MQL4

Requirements for Operators Persyaratan Operator

Operators must be written in the text of a program according to the format rules (how they must be represented in a code). Operator harus ditulis dalam teks program sesuai dengan aturan format (bagaimana mereka harus diwakili dalam kode). No operator may be composed beyond these rules. Tidak ada operator dapat terdiri di luar aturan-aturan ini. If the program contains an operator composed against the format rules, MetaEditor will produce an error message at compilation. This means that the program containing the wrong operator cannot be used. Jika program berisi sebuah operator terdiri terhadap format rules, MetaEditor akan menghasilkan pesan kesalahan pada kompilasi. Hal ini berarti bahwa program yang berisi operator yang salah tidak dapat digunakan.

You should understand the phrase "operator format" as a set of format rules typical for the given type of operator. Anda harus memahami ungkapan "operator format" sebagai seperangkat aturan format yang khas untuk jenis yang diberikan operator. Each type of operator has its own format. Setiap jenis operator mempunyai format sendiri. Operator formats are in all details considered in the corresponding sections in chapter Operators of this book. Operator format di semua rincian dipertimbangkan dalam bagian yang sesuai dalam bab Operator buku ini.

Order of Operators Execution Order of Operator Eksekusi

A very important characteristic of any program is the order of operators execution in it. Karakteristik yang sangat penting dari setiap program adalah urutan operator pelaksanaan di dalamnya. Operators cannot be executed for no reason or by exception. Operator tidak dapat dilaksanakan tanpa alasan atau pengecualian. In MQL4, the following order of operators execution is accepted: Dalam MQL4, dengan urutan sebagai berikut operator pelaksanaan diterima:

Operators are executed in the order, in which they occur in the program. The direction of operators execution is accepted as left to right and downwards. Operator akan dieksekusi dalam urutan, di mana mereka terjadi dalam program. Arah operator pelaksanaan diterima sebagai kiri ke kanan dan ke bawah.

This means that both simple and compound operators are executed just one by one (like the lines in poems: first we read the top line, then the next lower, then the next, and so on). Ini berarti bahwa kedua senyawa sederhana dan operator akan dijalankan hanya satu per satu (seperti garis-garis di puisi: pertama kita membaca baris paling atas, kemudian yang lebih rendah berikutnya, lalu berikutnya, dan seterusnya). If there are several operators in one line, they should be executed consecutively, one by one, left to right, then operators are executed in the nearest lower line in the same order. Jika ada beberapa

Page 42: Pengenalan MQL4 - 1.Dasar MQL4

operator dalam satu baris, mereka harus dilaksanakan secara berurutan, satu per satu, kiri ke kanan, kemudian operator akan dieksekusi dalam terdekat garis bawah dalam urutan yang sama.

Operators composing a compound operator are executed in the same way: any operator in the block of code starts being executed only after the previous one has been executed. Operator menyusun sebuah operator senyawa dijalankan dengan cara yang sama: setiap operator di blok kode mulai dieksekusi hanya setelah sebelumnya telah dilaksanakan.

Writing and Execution of Operators: Examples Menulis dan Pelaksanaan Operator: Contoh-contoh

The text of a program containing operators is not dissimilar in aspect to a normal text or a mathematical notation. Teks yang mengandung sebuah program operator tidak berbeda dalam aspek teks normal atau notasi matematika. However, this similarity is only formal. Namun, kesamaan ini hanya formal. A normal text allows the notes to be placed in any sequence, whereas you must keep a well-defined order in a program. Teks normal memungkinkan catatan untuk ditempatkan dalam urutan apapun, sedangkan Anda harus menyimpan perintah yang terdefinisi dengan baik dalam sebuah program.

As an example, let's see how an assignment operator works. We'll solve a simple linear equation system and compare the representation of some mathematical calculations in a normal text and in a program code, in operators. Sebagai contoh, mari kita lihat bagaimana sebuah tugas operator bekerja. Kami akan memecahkan sistem persamaan linear sederhana dan membandingkan representasi dari beberapa perhitungan matematika dalam teks normal dan dalam kode program, dalam operator-operator.

Problem 7. Soal 7. We have an equation system: Kami memiliki sistem persamaan: Y = 5 Y = 5 Y - X = 2 Y - X = 2 The numeric value of variable X is to be found. Nilai numerik dari variabel X adalah untuk dapat ditemukan.

Solution 1. A normal text on a sheet of paper: Solusi 1. Sebuah teks normal pada selembar kertas:

1. 1. 5 - Х = 2 5 - Х = 2

2. 2. Х = 5 - 2 Х = 5-2

3. 3. Х = 3 Х = 3

Solution 2 . Solusi 2. A text in a program: Sebuah teks dalam sebuah program:

Page 43: Pengenalan MQL4 - 1.Dasar MQL4

Y = 5 ; // Line 1 Y = 5; / / Jalur 1 X = Y - 2 ; // Line 2 X = Y - 2; / / Jalur 2

Both in the first and in the second solutions, the notes (lines) have a completed content. Baik di pertama dan di solusi kedua, catatan (baris) memiliki konten selesai. Nevertheless, the lines in Solution 1 cannot be used in a program as they are, because their appearance does not comply with the assignment operator format. Namun demikian, garis-garis di Solusi 1 tidak dapat digunakan dalam program mereka, karena penampilan mereka tidak sesuai dengan format operator penugasan.

The notes given in Solution 1 represent some dependences in paper form. Catatan diberikan dalam Solusi 1 mewakili beberapa dependences dalam bentuk kertas. They can only be used to inform the programmer about the relations between the variables. Mereka hanya dapat digunakan untuk memberi informasi kepada programmer tentang hubungan antara variabel-variabel. Operators in a program are assigned for other purposes - they inform the machine what operations and in what order it must execute. Operator dalam sebuah program yang ditetapkan untuk keperluan lain - mereka menginformasikan mesin operasi apa dan dalam rangka apa yang harus dilaksanakan. All operators without any exceptions represent precise instructions that allow no ambiguities. Semua operator tanpa ada pengecualian merupakan petunjuk yang tepat tidak memungkinkan ambiguitas.

Both operators in Solution 2 are the assignment operators. Kedua operator di Solusi 2 adalah operator penugasan. Any assignment operator gives the machine the following order, literally: Setiap tugas operator mesin memberikan urutan sebagai berikut, secara harfiah:

Calculate the value of the expression to the right of the equality sign and assign the obtained value to the variable to the left of the equality sign. Menghitung nilai ekspresi di sebelah kanan tanda persamaan dan menetapkan nilai yang diperoleh variabel di sebelah kiri tanda persamaan.

For this reason, nothing else but variable can be located to the left of the equality sign in an assignment operator. Untuk alasan ini, tidak lain variabel dapat terletak di sebelah kiri tanda persamaan dalam tugas operator. For example, a record of 5 - Х = 2 used in the first solution contains an error, because the set of characters 5 - Х is not a variable. Sebagai contoh, catatan dari 5 - Х = 2 digunakan dalam solusi pertama mengandung kesalahan, karena set karakter 5 - Х bukan variabel. This is why there is no memory cell for placing the numeric value of the expression calculated to the right of the equality sign. Inilah sebabnya mengapa tidak ada sel memori untuk menempatkan nilai numerik dihitung ekspresi di sebelah kanan tanda persamaan.

Let's follow the computer during execution of operators of the second solution. Mari kita ikuti komputer selama pelaksanaan operator solusi kedua.

1. 1. Passing on the operator (line 1). Melewati pada operator (baris 1).

Y = 5 ; // Line 1 Y = 5; / / Jalur 1

Page 44: Pengenalan MQL4 - 1.Dasar MQL4

2. 2. Referencing to the right part of the operator (the right part is located between the equality sign and the semicolon). Referensi ke bagian kanan dari operator (bagian kanan terletak antara tanda dan kesetaraan titik koma).

3. 3. The computer has detected that the right part of the operator contains a numeric value. Komputer telah mendeteksi bahwa bagian kanan dari operator berisi nilai numerik.

4. 4. Recording the numeric value (5) in the memory cell of variable Y. Pencatatan nilai numerik (5) dalam sel memori variabel Y.

5. 5. Passing on the next operator (line 2). Menyampaikan operator berikutnya (baris 2).

X = Y - 2 ; // Line 2 X = Y - 2; / / Jalur 2

6. 6. Referencing to the right part of the operator. Referensi ke bagian kanan operator.

7. 7. The computer has detected that the right part of the operator contains an expression. Komputer telah mendeteksi bahwa bagian kanan operator berisi ekspresi.

8. 8. Calculating the numeric value of the right part of the operator (5 - 2). Menghitung nilai numerik bagian kanan operator (5 - 2).

9. 9. Recording the numeric value (3) in the memory cell of variable Х. Pencatatan nilai numerik (3) dalam sel memori variabel Х.

Performing steps 1-4 by the computer is execution of the first operator (line 1). Pertunjukan langkah 1-4 oleh komputer adalah pelaksanaan dari operator pertama (baris 1). Performing steps 5-9 by the computer is execution of the second operator (line 2). Melakukan langkah-langkah 5-9 oleh komputer adalah pelaksanaan dari operator kedua (baris 2).

In order to code a workable program, the programmer must well realize what and in what order will be executed in this program. Particularly, not all mathematical calculations will be put in a program, it is sometimes necessary to pre-prepare operators. Untuk kode program yang bisa diterapkan, para programmer harus menyadari apa yang baik dan dalam rangka apa yang akan dilaksanakan dalam program ini. Khususnya, tidak semua perhitungan matematika akan diletakkan dalam sebuah program, kadang-kadang diperlukan untuk mempersiapkan pra-operator.

For example, many intermediate calculations are made when solving mathematical problems. Sebagai contoh, banyak antara perhitungan yang dibuat ketika menyelesaikan masalah matematika. They can help a mathematician to find a proper solution, but turn out to be useless from the viewpoint of programming. Mereka dapat membantu seorang matematikawan untuk mencari solusi yang tepat, tapi ternyata tidak berguna dari sudut

Page 45: Pengenalan MQL4 - 1.Dasar MQL4

pandang pemrograman. Only meaningful solutions can be included into a program, for example: original values of variables or formulas to calculate the values of other variables. Hanya solusi bermakna dapat dimasukkan ke dalam sebuah program, misalnya: nilai awal variabel atau rumus untuk menghitung nilai-nilai variabel lain. In the preceding example, the first operator bears information about the numeric value of variable Y, and the second operator provides the formula to calculate the value of the variable X we are interested in. Dalam contoh, beruang operator pertama informasi tentang nilai numerik dari variabel Y, dan yang kedua operator memberikan rumus untuk menghitung nilai variabel X kita tertarik

Any workable program contains expressions of a familiar sight, but you can also find such expressions that you will be able to understand only if you rate them as possible operators in your program. Setiap program yang bisa diterapkan berisi ekspresi dari sebuah pemandangan yang biasa, namun Anda juga dapat menemukan ungkapan seperti bahwa Anda akan dapat mengerti hanya jika Anda menilai mereka sebagai operator mungkin dalam program Anda. For example, the record below Sebagai contoh, catatan di bawah ini

X = X + 1 ; // Example of a counter X = X + 1; / / Contoh counter

seems to be wrong from the standpoint of mathematical logic and common sense. tampaknya salah dari sudut pandang logika matematika dan akal sehat. However, it is quite acceptable if you consider it as an operator (by the way, it is this operator that is widely used in coding). Namun, cukup dapat diterima jika Anda menganggapnya sebagai operator (by the way, operator inilah yang banyak digunakan dalam pengkodean).

In this operator, we calculate a new value of variable X: when executing the assignment operator (ie, calculating the value of the right part of the operator), the computer refers to the memory cell containing the numeric value of variable X (for example, it turns out to be equal to 3 at the moment of referring to it), calculates the expression in the right part of the assignment operator (3 + 1), and writes the obtained value (4) in the memory cell provided for variable X. Execution of this assignment operator results in that the variable X gets the new value (4). Dalam operator ini, kami menghitung nilai variabel baru X: ketika menjalankan tugas operator (misalnya, menghitung nilai dari bagian kanan operator), komputer merujuk kepada sel memori yang berisi nilai numerik dari variabel X (misalnya , ternyata menjadi sama dengan 3 pada saat mengacu pada itu), menghitung ekspresi di bagian kanan operator penugasan (3 + 1), dan menulis nilai yang diperoleh (4) dalam sel memori yang disediakan untuk variabel X. Pelaksanaan tugas ini hasil operator bahwa variabel X mendapat nilai baru (4). The machine will store this value of variable X until the variable X occurs in the left part of the equality sign in another assignment operator. Mesin ini akan menyimpan nilai variabel X sampai variabel X terjadi di bagian kiri dari tanda kesetaraan tugas lain operator. In this case, the new value of this variable will be calculated and stored up to the next possible change. Dalam kasus ini, nilai baru dari variabel ini akan dihitung dan disimpan ke kemungkinan perubahan berikutnya.

Fungsi

Page 46: Pengenalan MQL4 - 1.Dasar MQL4

The Term of Function Jangka Fungsi

The most important technological breakthrough in computer engineering is the possibility of creation and storage of separate code fragments that describe the rules of data processing for solving a problem or a small task. Yang paling penting terobosan teknologi dalam teknik komputer adalah kemungkinan penciptaan dan penyimpanan kode terpisah fragmen yang menggambarkan aturan pengolahan data untuk menyelesaikan masalah atau tugas kecil. Such a possibility exists in MQL4, too. Kemungkinan itu ada di MQL4 juga.

Function is a named, specific part of a program that describes the method of data conversion. Fungsi adalah nama, bagian tertentu dari sebuah program yang menggambarkan metode konversi data.

Speaking about functions, we will consider two aspects: function description and function call. Berbicara tentang fungsi, kami akan mempertimbangkan dua aspek: fungsi deskripsi dan fungsi panggil.

Function description is a specific named part of a program intended for execution. Fungsi deskripsi adalah bernama tertentu bagian dari program yang dimaksudkan untuk eksekusi.

Function call (function reference) is a record, execution of which results in execution of a function. Fungsi panggilan (fungsi referensi) adalah catatan, pelaksanaan yang hasil dalam pelaksanaan fungsi.

In our everyday life, we can find many analogues of the function. Take, for example, the braking system of a car. Dalam kehidupan sehari-hari kita, kita dapat menemukan banyak fungsi analog. Ambil, misalnya, sistem pengereman mobil. The actuating mechanism that properly performs braking, as well as the idea implemented by the engineer, is the analogue of a function, whereas brake pedal is the analogue of function call. The actuating mekanisme yang benar melakukan pengereman, serta ide dilaksanakan oleh insinyur, adalah analog dari suatu fungsi, sedangkan pedal rem adalah fungsi telepon analog. The driver presses the pedal down, and the actuating mechanisms perform some actions and - stop the car. Pengemudi menekan pedal ke bawah, dan mekanisme actuating melakukan beberapa tindakan dan - menghentikan mobil.

Similarly, if a function call occurs in a program, then the function of the same name will be called and executed, ie, a certain sequence of calculations or other actions will be performed (for example, displaying a message or opening an order, etc.). Demikian pula, jika terjadi pemanggilan fungsi dalam sebuah program, maka fungsi dengan nama yang sama akan dipanggil dan dieksekusi, yaitu urutan tertentu perhitungan atau tindakan lain yang akan dilakukan (misalnya, menampilkan pesan atau membuka pesanan, dll .). The

Page 47: Pengenalan MQL4 - 1.Dasar MQL4

general sense of a function is in taking a logically completed part of the code outside the basic text of the program, whereas only the call for this part of the code remains inside the basic text of the program. Pengertian umum dari suatu fungsi adalah mengambil secara logis menyelesaikan bagian dari kode teks dasar di luar program, sedangkan hanya panggilan untuk bagian ini dari kode tetap di dalam teks dasar program. Such program construction has some incontestable advantages: Program seperti disangkal konstruksi memiliki beberapa keuntungan:

first, the program text composed in such a manner is read much easier; pertama, teks program disusun sedemikian rupa jauh lebih mudah dibaca;

second, one can easily see and, if necessary, modify the text of a function without making any changes in the basic code of the program; kedua, orang dapat dengan mudah melihat dan, jika perlu, mengubah teks dari suatu fungsi tanpa melakukan perubahan apapun pada kode dasar dari program;

third, a function can be composed as a single file and use it in other programs, which will release the programmer from the necessity to insert the same fragments of the code in each newly created program. ketiga, suatu fungsi dapat disusun sebagai sebuah file tunggal dan menggunakannya dalam program lain, yang akan merilis programmer dari keharusan untuk menyisipkan fragmen-fragmen yang sama di setiap kode program yang baru dibuat.

We can say that the most part of the code in programs composed using MQL4 is written in form of functions. Kita dapat mengatakan bahwa sebagian besar dari kode dalam program-program yang terdiri menggunakan MQL4 ini ditulis dalam bentuk fungsi. This approach became widespread and is a standard now. Pendekatan ini menjadi meluas dan sekarang merupakan standar.

Composition of a Function Komposisi Fungsi

Thus, a function can be described and called. Jadi, suatu fungsi dapat digambarkan dan menelepon. Let's consider an example. Mari kita pertimbangkan sebuah contoh. Suppose we have a small program (Fig. 18) that finds the length of hypotenuse using two other sides of the right triangle and Pythagorean theorem. Misalkan kita memiliki sebuah program kecil (Gambar 18) yang menemukan panjang sisi miring menggunakan dua sisi segitiga siku-siku dan teorema Pythagoras.

In this program, all calculations are located together, the operators are executed one by one in the order, in which they occur in the program (from the top down). Dalam program ini, semua perhitungan terletak bersama-sama, para operator dijalankan satu demi satu dalam urutan, di mana mereka terjadi dalam program (dari atas ke bawah).

Page 48: Pengenalan MQL4 - 1.Dasar MQL4

Fig. Gambar. 18. 18. The code of single program pifagor.mq4 . Kode program tunggal pifagor.mq4.

Problem 8. Soal 8. Compose a part of the given program code as a function. Tulis bagian dari kode program yang diberikan sebagai fungsi.

It would be reasonable to make a function using the two lines that find the search value. Akan masuk akal untuk membuat suatu fungsi dengan menggunakan dua baris yang menemukan nilai pencarian. The same program using a function is shown in Fig. Program yang sama dengan menggunakan fungsi ditunjukkan pada Gambar. 19. 19.

In this program, a part of calculations is composed as a function. Dalam program ini, bagian dari perhitungan ini terdiri sebagai fungsi. The basic code contains a user-defined function call. Berisi kode dasar yang ditetapkan pengguna fungsi panggil. The description of the user-defined function is located outside (after) the basic code. Deskripsi dari fungsi yang ditetapkan pengguna berada di luar (setelah) kode dasar.

Page 49: Pengenalan MQL4 - 1.Dasar MQL4

Fig. Gambar. 19. 19. The code of a program that contains the description of and the call for user-defined function gipo.mq4 . Kode program yang berisi deskripsi dan panggilan

untuk fungsi yang ditetapkan pengguna gipo.mq4.

Both versions of the program will give the same result. However, the code is composed as a single module in the first version (Fig. 18), whereas in the second version (Fig. 19) a part of calculations is executed in a function called from the basic text. Kedua versi dari program ini akan memberikan hasil yang sama. Akan tetapi, kode ini disusun sebagai satu modul dalam versi pertama (Gambar 18), sedangkan pada versi kedua (Gambar 19) merupakan bagian dari perhitungan dilaksanakan dalam suatu fungsi memanggil dari teks dasar. Upon completion of the calculations separated into the function, the calculations in the main code will be continued. Setelah menyelesaikan perhitungan dipisahkan ke dalam fungsi, perhitungan dalam kode utama akan dilanjutkan.

To have the function executed, we have to call it (refer to it). Untuk memiliki fungsi dieksekusi, kita harus menyebutnya (mengacu pada itu). This is why the function is practically represented in two parts: the code itself composing the function (function description) and the function call used to launch the function (referring to the function). Inilah sebabnya fungsi praktis direpresentasikan dalam dua bagian: bagian kode itu sendiri yang menyusun fungsi (fungsi deskripsi) dan fungsi panggilan yang digunakan untuk meluncurkan fungsi (mengacu pada fungsi). If you don't call the function, it will not be executed. Jika Anda tidak memanggil fungsi, itu tidak akan dapat dijalankan. At the same time, if you call a nonexistent function, this will result in nothing (MetaEditior

Page 50: Pengenalan MQL4 - 1.Dasar MQL4

will give an error message if you try to compile such a program in MQL4). Pada saat yang sama, jika Anda memanggil fungsi yang tidak ada, ini akan menghasilkan apa-apa (MetaEditior akan memberikan pesan kesalahan jika Anda mencoba untuk mengkompilasi program seperti di MQL4).

Function Description Fungsi Keterangan

The description of a function consists of two basic parts - function header and function body. Deskripsi dari suatu fungsi terdiri dari dua bagian dasar - header dan fungsi fungsi tubuh.

The header of a function consists of the type of the return value, function name and the list of formal parameters. Header dari suatu fungsi terdiri dari jenis nilai kembali, nama fungsi dan daftar parameter formal. The list of formal parameters are enclosed in parentheses and placed after the function name. Daftar parameter formal diapit oleh tanda kurung dan ditempatkan setelah nama fungsi. The type of the return value can be one of the types we already know: int, double, bool, color, datetime , or string . Jenis nilai pengembalian dapat menjadi salah satu jenis yang sudah kita ketahui: int, double, bool, warna, datetime, atau string. If the function does not return any value, its type can be denoted as void ("without contents, empty") or as any other type. Jika fungsi tidak mengembalikan nilai apapun, jenisnya dapat dinyatakan sebagai void ( "tanpa isi, kosong") atau sebagai jenis lainnya.

The body of a function is enclosed in braces. Tubuh fungsi ditutupi dalam kurung. The function body may contain simple and/or compound operators, as well as calls for other functions. Tubuh fungsi dapat berisi sederhana dan / atau senyawa operator, serta panggilan untuk fungsi lain. The value returned by the function is given in the parentheses of operator return(). Nilai yang dikembalikan oleh fungsi diberikan dalam kurung dari operator kembali (). The type of the value returned using operator return(), must match with the function type specified in the function header. The description of the function is ended with a closing brace. Jenis nilai kembali menggunakan kembali operator (), harus sesuai dengan jenis fungsi fungsi yang ditetapkan dalam header. Deskripsi tentang fungsi ini diakhiri dengan penutup penjepit.

Page 51: Pengenalan MQL4 - 1.Dasar MQL4

Fig. Gambar. 20. 20. Function description. Fungsi deskripsi.

The function description must be located separately in the program, outside any other functions (ie, not inside of a function, but outside it). Deskripsi fungsi harus ditempatkan secara terpisah dalam program, di luar fungsi-fungsi lainnya (yaitu, bukan dalam fungsi, tetapi di luar itu).

Function Call Fungsi panggilan

Function call represents the function name and the list of transferred parameters. Fungsi panggilan mewakili nama fungsi dan daftar parameter yang ditransfer. The list of transferred parameters is enclosed in parentheses. Daftar parameter yang ditransfer tertutup dalam tanda kurung. The function call can be represented as a separate operator or as a part of an operator. Fungsi panggilan dapat digambarkan sebagai operator yang terpisah atau sebagai bagian dari operator.

Fig. Gambar. 21. 21. Function call (reference to a function). Fungsi panggil (referensi ke fungsi).

Any function call is always specified within another function (ie, not outside all other functions, but inside one of them). Setiap fungsi panggil selalu ditentukan di dalam fungsi lainnya (yaitu, bukan di luar semua fungsi lain, tapi di dalam salah satu dari mereka).

Function Types Fungsi Jenis

Page 52: Pengenalan MQL4 - 1.Dasar MQL4

There are three types of functions - special functions, standard (built-in, predefined) functions, and user-defined functions. Ada tiga jenis fungsi - fungsi khusus, standar (built-in, standar) fungsi, dan fungsi yang ditetapkan pengguna.

Special Functions Fungsi Khusus

In MQL4, there are 3 special functions in total. Dalam MQL4, terdapat 3 fungsi-fungsi khusus total. They have predefined names: init(), start(), and deinit() that may not be used in the names of any other functions. Mereka memiliki nama-nama standar: init (), start (), dan deinit () yang tidak boleh digunakan dalam nama-nama fungsi-fungsi lainnya. The detailed consideration of special functions is given in chapter Special Functions . Pertimbangan yang rinci fungsi khusus diberikan dalam bab Fungsi Khusus. We only say here that the basic code of a program is located inside these functions (Fig. 18, 19). Kami hanya mengatakan di sini bahwa kode dasar dari sebuah program adalah terletak di dalam fungsi-fungsi ini (Gambar 18, 19).

The special feature of special functions is the fact that they are called for execution by the client terminal. Fitur khusus dari fungsi-fungsi khusus adalah kenyataan bahwa mereka dipanggil untuk eksekusi oleh klien terminal. Although special functions have all properties of functions in general, they are not usually called from the program if this program is coded properly. Walaupun fungsi-fungsi khusus memiliki semua sifat-sifat fungsi pada umumnya, mereka biasanya tidak disebut dari program jika program ini dikodekan dengan benar.

Standard Functions Fungsi standar

MQL4 has a number of useful functions that don't need being described when coding a program. MQL4 memiliki sejumlah fungsi-fungsi berguna yang tidak perlu digambarkan ketika pengkodean program. For example, computing square roots, printing messages in the system journal or on the screen - all these and many other standard functions are executed according to the predefined algorithm. The user needn't to learn the contents of these functions. Sebagai contoh, akar kuadrat komputasi, percetakan sistem pesan dalam jurnal atau pada layar - semua ini dan banyak fungsi-fungsi standar lainnya dijalankan sesuai dengan algoritma yang telah ditetapkan. Pemakai tidak perlu mempelajari isi fungsi tersebut. He or she can just be sure that all standard functions are developed by professionals properly and according to the best possible algorithm. Dia hanya bisa memastikan bahwa semua fungsi standar yang dikembangkan oleh para profesional dengan benar dan sesuai dengan algoritma terbaik.

The special feature of standard functions is that they are not described in the text of the program. Fitur khusus dari fungsi standar adalah bahwa mereka tidak dijelaskan dalam teks program. The standard functions are called in the program in the same manner as when using any other functions (it's a common practice). Fungsi-fungsi standar yang

Page 53: Pengenalan MQL4 - 1.Dasar MQL4

disebut dalam program ini dengan cara yang sama seperti ketika menggunakan fungsi-fungsi lain (itu praktek yang umum).

In our example (Fig. 18, 19), two standard functions are used: MathSqrt() and Alert(). Dalam contoh kita (Gambar 18, 19), dua fungsi standar yang digunakan: MathSqrt () dan Alert (). The former one is intended for computing of square roots, whereas the latter one is for messaging a certain text enclosed in parentheses to the screen. Mantan satu ini ditujukan untuk komputasi dari akar kuadrat, sedangkan yang kedua adalah untuk olahpesan teks tertentu yang ditutupi dalam kurung ke layar. The properties of standard functions are considered in more details in section Standard Functions . Here we will note that these records represent standard function calls, whereas no descriptions of these functions can be found in the program. Sifat-sifat fungsi standar dianggap secara lebih rinci pada bagian Fungsi Standar. Di sini kita akan mencatat bahwa catatan-catatan ini mewakili pemanggilan fungsi standar, sedangkan tidak ada deskripsi fungsi-fungsi ini dapat ditemukan dalam program ini. Standard functions can also be named built-in, or predefined functions. Fungsi standar juga dapat dinamai built-in, atau fungsi-fungsi standar. You may use any of these terms. Anda dapat menggunakan ketentuan ini.

User-Defined Functions User-Defined Functions

In some cases, programmers create and use their own functions. Dalam beberapa kasus, programer membuat dan menggunakan fungsi mereka sendiri. We call these functions user-defined functions. Kami menyebutnya fungsi ini fungsi-fungsi yang ditetapkan pengguna. User-defined functions are utilized in programs with both function descriptions and function calls. Fungsi yang ditetapkan pengguna dimanfaatkan dalam program-program dengan kedua fungsi deskripsi dan fungsi panggilan.

Table 1. Function description and function call used in programs for functions of different types. Tabel 1. Fungsi deskripsi dan fungsi panggilan yang digunakan dalam

program-program untuk fungsi-fungsi dari berbagai jenis.

Function Type Fungsi Jenis

Function Description Fungsi Keterangan

Function Call Fungsi panggilan

Special Khusus Applicable Berlaku Not applicable (*) Tidak berlaku (*)

Standard Standar Not applicable Tidak berlaku Applicable Berlaku

User-defined Ditetapkan pengguna Applicable Berlaku Applicable Berlaku

(*) Although special functions can be technically called from a program, it is not recommended to do so. (*) Walaupun fungsi-fungsi khusus dapat secara teknis disebut dari sebuah program, tidak dianjurkan untuk melakukannya.

Page 54: Pengenalan MQL4 - 1.Dasar MQL4

Properties of Functions Sifat-sifat Fungsi

Function Execution Fungsi Pelaksanaan

The main property of all functions is that the called functions are executed. Properti utama dari semua fungsi adalah bahwa fungsi yang disebut dieksekusi. Functions are executed according to their codes. Fungsi yang dilaksanakan sesuai dengan kode-kode mereka.

Passed Parameters and Return Value Lulus Parameter dan Kembali Nilai

As to information received and returned, a function is like a standard calculator. Sedangkan informasi yang diterima dan kembali, fungsi seperti kalkulator standar. You can type (using its keyboard) a certain expression that consists of several values entered one by one, and you will obtain one value as an answer. Anda dapat mengetikkan (memanfaatkan keyboard) ekspresi tertentu yang terdiri dari beberapa nilai-nilai yang dimasukkan satu per satu, dan Anda akan mendapatkan satu nilai sebagai jawaban. A function can get and process one or several parameters from the program that has called this function for execution, and the function will finish its operation by returning (transmitting, giving) one parameter as an answer to this program. Suatu fungsi dapat memperoleh dan memproses satu atau beberapa parameter dari program yang telah memanggil fungsi untuk eksekusi, dan fungsi akan menyelesaikan operasinya dengan kembali (transmisi, memberi) satu parameter sebagai jawaban atas program ini.

The passed parameters are specified by enclosing in parentheses after the name of the function to be called. Parameter yang berlalu ditetapkan dengan melampirkan dalam tanda kurung setelah nama fungsi dipanggil. The passed parameters are usually separated by commas. Parameter yang berlalu biasanya dipisahkan dengan koma. The number of parameters passed to the function must not exceed 64. Jumlah parameter yang dikirimkan ke fungsi tidak boleh melebihi 64. The function may also omit using the passed parameters. Fungsi juga menghilangkan menggunakan parameter berlalu. In this case, an empty list of parameters is specified, ie, you just put an opening parenthesis and a closing parenthesis directly after the function name. Dalam kasus ini, daftar kosong parameter yang ditentukan, yaitu, Anda hanya menempatkan tanda kurung pembuka dan penutup kurung langsung setelah nama fungsi.

The number, types and order of the passed parameters in the function call must match with those of formal parameters specified in the function description (the call for a function that has default parameters is an exemption - see Function Call and Function Description and the Operator "return" ). If they don't match, MetaEditor will give you an error message. Jumlah, jenis dan ketertiban berlalu parameter dalam pemanggilan fungsi

Page 55: Pengenalan MQL4 - 1.Dasar MQL4

harus sesuai dengan parameter formal yang ditetapkan dalam deskripsi fungsi (panggilan untuk fungsi yang memiliki parameter default pengecualian - lihat Fungsi panggilan dan Fungsi Keterangan dan Operator " return "). Jika mereka tidak cocok, MetaEditor akan memberikan pesan kesalahan. Constants, variable, expressions and arrays may be used as passed parameters. Konstanta, variabel, ekspresi dan array dapat digunakan sebagai parameter berlalu.

The return value is specified in the parentheses of the operator return() (see Function Description and the Operator "return" ). The type of the value returned using operator return() must match with the type of the function given in the function header. Nilai pengembalian ditetapkan dalam kurung kembali dari operator () (lihat Fungsi Keterangan dan Operator "kembali"). Jenis nilai operator kembali menggunakan kembali () harus cocok dengan tipe fungsi fungsi yang diberikan dalam header . It is also possible that a function does not return any value. Juga mungkin terjadi karena fungsi tidak mengembalikan nilai apapun. In this case, nothing is specified in the parentheses of the operator return(). Dalam kasus ini, tidak ada yang ditentukan dalam kurung dari operator kembali ().

In our example, the passed parameters are variables A and B (Fig. 21), whereas the return value is variable c (Fig. 20). Dalam contoh kita, parameter yang melewati variabel A dan B (Gambar 21), sedangkan nilai kembali variabel c (Gambar 20). The requirement of matching the types of passed and formal parameters can be seen in Fig. Persyaratan pencocokan jenis berlalu dan parameter formal dapat dilihat pada Gambar. 22. 22.

The number, types and order of the passed parameters in the function call must match with those of formal parameters specified in the function description. Jumlah, jenis dan ketertiban berlalu parameter dalam pemanggilan fungsi harus sesuai dengan parameter formal yang ditentukan dalam fungsi deskripsi. Only variables can be used in the header of the function description as formal parameters. Hanya variabel dapat digunakan dalam header deskripsi fungsi sebagai parameter formal.

Page 56: Pengenalan MQL4 - 1.Dasar MQL4

Fig. Gambar. 22. 22. Match in the number, types and order of passed and formal parameters. Cocok dalam jumlah, jenis dan ketertiban berlalu dan parameter formal. Only

variables are used as passed parameters. Hanya variabel yang digunakan sebagai parameter berlalu.

Only variables, expressions and constants can be used as passed parameters. Hanya variabel, dan konstanta ekspresi dapat digunakan sebagai parameter berlalu.

Fig. Gambar. 23. 23. Match in the number, types and order of passed and formal parameters. Cocok dalam jumlah, jenis dan ketertiban berlalu dan parameter formal. A

constant, an expression, and variables of the corresponding type are used as passed parameters. Konstan, sebuah ekspresi, dan variabel dari jenis yang sesuai digunakan

sebagai parameter berlalu.

Formal Parameters Parameter formal

Page 57: Pengenalan MQL4 - 1.Dasar MQL4

A high point of functions is the use of formal parameters. Titik tinggi fungsi adalah penggunaan parameter formal.

Formal parameters are a list of variables specified in the header of the function description. Parameter formal adalah daftar variabel yang ditentukan dalam header dari fungsi deskripsi.

We mentioned before that one function could be used in several programs. Telah disebutkan sebelumnya bahwa satu fungsi dapat digunakan dalam beberapa program. However, different programs use different names for the variables. Namun, program yang berbeda menggunakan nama yang berbeda untuk variabel-variabel. If functions required strict matching in the names of variables (and, correspondingly, in their value), it wouldn't be convenient for programmers. Jika fungsi-fungsi yang diperlukan pencocokan ketat dalam nama-nama variabel (dan, dengan demikian, dalam nilai), itu tidak akan nyaman untuk pemrogram. Indeed, you would then have to compose each newly developed program in the names of variables that had already been used in your functions before. Memang, Anda akan kemudian harus menyusun setiap program baru yang dikembangkan dalam nama-nama variabel yang telah digunakan dalam fungsi sebelumnya. However, fortunately, the variables used inside functions have no relations to the variables used in a program. Namun, untungnya, variabel yang digunakan di dalam fungsi tidak memiliki hubungan dengan variabel yang digunakan dalam program.

Let's refer to Fig. Mari kita lihat Gambar. 20 and 21 once again. 20 dan 21 sekali lagi. It should be noted that the names of the passed parameters ( A and B are given in the parentheses of the function call) do not match with the names of the parameters ( a and b ) specified in the function description. Perlu dicatat bahwa nama-nama parameter berlalu (A dan B diberikan dalam tanda kurung fungsi panggilan) tidak cocok dengan nama-nama parameter (a dan b) yang disebutkan dalam deskripsi fungsi. We noticed in the section Constants and Variables that MQL4 is case-sensitive. Kami melihat di bagian Konstanta dan Variabel yang MQL4 adalah huruf yang benar. Thus, the names A and a , B and b considered here are different names of variables. Dengan demikian, nama A dan a, B dan b yang dipertimbangkan di sini adalah nama-nama variabel yang berbeda. However, there is no error in this code. Namun, tidak ada kesalahan dalam kode ini.

The variables (formal parameters) used in the function description are not related to the variables used in the basic code of the program. Variabel (parameter formal) yang digunakan dalam deskripsi fungsi yang tidak terkait dengan variabel yang digunakan dalam kode dasar program. They are just different variables. Mereka hanya variabel yang berbeda. Only variables, but not constants, can be specified in the function header as formal parameters. Hanya variabel, tapi tidak konstan, dapat ditentukan dalam header fungsi sebagai parameter formal.

How It Works How It Works

Page 58: Pengenalan MQL4 - 1.Dasar MQL4

In the program, there occurs a function call, variables A and B being specified in its parentheses. Dalam program ini, ada terjadi pemanggilan fungsi, variabel A dan B yang ditentukan dalam tanda kurung.

The program calls the function of the same name, which has formal parameters a and b specified in its header. Program memanggil fungsi dengan nama yang sama, yang memiliki parameter formal a dan b ditetapkan dalam header.

The value of variable A is assigned to variable a . Nilai variabel A adalah variabel yang ditugaskan.

The value of variable B is assigned to variable b . Nilai variabel B ditugaskan untuk variabel b.

The executable function performs calculations using the values of variables a and b . Fungsi executable melakukan perhitungan dengan menggunakan nilai-nilai variabel a dan b.

It is allowed to use any names of formal parameters (that don't coincide with the names of the variables used in the program). Diperbolehkan untuk menggunakan nama-nama parameter formal (yang tidak bertepatan dengan nama-nama variabel yang digunakan dalam program). In this example, we used the identifiers of formal parameters a and b . Dalam contoh ini, kami menggunakan pengidentifikasi parameter formal a dan b. However, we could use any others, for example, m and n , or Kat_1 and Kat_2 . Namun, kita bisa menggunakan setiap orang lain, misalnya, m dan n, atau Kat_1 dan Kat_2. Of course, when writing a program, you should specify in the function body the calculations that use the names of variables that are given in the header. Tentu saja, ketika menulis program, anda harus tentukan dalam tubuh fungsi perhitungan yang menggunakan nama-nama variabel yang diberikan dalam header. Since we have given a and b in the header, so we have to use in the function a and b , not m and n . Karena kita telah memberikan a dan b di header, jadi kita harus menggunakan dalam fungsi a dan b, tidak m dan n.

In a function, the calculations are made that involve formal parameters a and b , but not variables A and B . Dalam fungsi, perhitungan dibuat yang melibatkan parameter formal a dan b, tetapi tidak variabel A dan B. In a function, any allowed actions may be perform on formal parameters a and b (including the changes in the values of these variables). Dalam suatu fungsi, setiap tindakan memungkinkan dapat dilakukan pada parameter formal a dan b (termasuk perubahan dalam nilai-nilai variabel-variabel ini). This does not have any effect on variables A and B . Ini tidak memiliki efek pada variabel A dan B.

The return value calculated in the function is given in the parentheses of the operator return(). Nilai pengembalian dihitung dalam fungsi diberikan dalam tanda kurung dari operator kembali (). The value of a variable, the result of an expression, or a constant can be used as return value. Nilai suatu variabel, hasil dari sebuah ekspresi, atau yang konstan dapat digunakan sebagai nilai kembali. In our case, this is the value of local variable c (local variable is a variable declared within a function; if you exit the function, the values of all local variables will be lost; we will consider more details about local variables in the section Types of Variables ). Dalam kasus kami, ini adalah nilai variabel lokal c (variabel lokal adalah variabel dideklarasikan dalam suatu fungsi, jika Anda keluar dari fungsi, nilai-nilai dari seluruh variabel lokal akan hilang, kami akan mempertimbangkan

Page 59: Pengenalan MQL4 - 1.Dasar MQL4

lebih rinci tentang variabel-variabel lokal pada bagian jenis Variabel). The function returns into the program the value of local variable c (Fig. 19). Fungsi program kembali ke nilai variabel lokal c (Gambar 19). This means that this value will now be assigned to variable C . Ini berarti bahwa nilai ini sekarang akan ditugaskan untuk variabel C.

Further calculations in the program, if any, can be performed with the variables declared within the calling function. In our case, calling function is special function start() (it contains the line for calling the user-defined function), whereas the variables declared within the calling function are A , B , and C . Thus, in the function the calculations are performed using formal parameters, which allows us to create functions using arbitrary names of variables, irrespective of the names of values actually used in the program. Perhitungan lebih lanjut dalam program, jika ada, dapat dilakukan dengan mendeklarasikan variabel di dalam pemanggilan fungsi. Dalam kasus kami, fungsi memanggil fungsi khusus mulai () (berisi baris untuk memanggil fungsi yang ditetapkan pengguna), sedangkan variabel dideklarasikan dalam pemanggilan fungsi adalah A, B, dan C. Jadi, dalam fungsi perhitungan dilakukan dengan menggunakan parameter formal, yang memungkinkan kita untuk membuat fungsi yang menggunakan variabel nama sewenang-wenang, terlepas dari nama-nama nilai-nilai yang sebenarnya digunakan dalam program.

Example: Standard Functions in a Program Contoh: Standar Fungsi dalam Program

First of all, let's consider the behavior of the program shown in Fig. Pertama-tama, mari kita mempertimbangkan program perilaku yang ditunjukkan pada Gambar. 18. 18. We should note that the entire code of the program is located inside the special function start(). Kita harus mencatat bahwa seluruh kode dari program ini adalah terletak di dalam fungsi khusus start (). At this training phase, we won't pay special attention to this (special functions and their properties are considered in more details in the section Special Functions ). Pada tahap pelatihan ini, kami tidak akan membayar perhatian khusus untuk ini (fungsi-fungsi khusus dan harta mereka dianggap secara lebih rinci dalam bagian Fungsi Khusus).

Let's follow the execution of the program starting with the assignment operator: Mari kita mengikuti pelaksanaan program dimulai dengan operator penugasan:

int A = 3 ; // First cathetus int A = 3; / / Pertama cathetus

1. 1. The right part of the assignment operator contains the specified constant, its value is 3. Bagian kanan operator penugasan berisi ditentukan konstan, nilainya adalah 3.

2. 2. The value of 3 (the value of the right part) is assigned to variable A (that locates to the left of the equality sign in the assignment operator). Nilai dari 3 (nilai bagian kanan) adalah ditugaskan untuk variabel A (yang menempatkan ke kiri dari tanda persamaan dalam tugas operator).

Page 60: Pengenalan MQL4 - 1.Dasar MQL4

The control is given to the next line: Kontrol diberikan ke baris berikutnya:

int B = 4 ; // Second cathetus int B = 4; / / Second cathetus

3. 3. The right part of the assignment operator contains the specified constant, its value is 4. Bagian kanan operator penugasan berisi ditentukan konstan, nilainya adalah 4.

4. 4. The value of 4 is assigned to variable B . Nilai dari 4 adalah ditugaskan untuk variabel B.

The program goes to execution of the next line: Program pelaksanaan pergi ke baris berikutnya:

int C_2 = A * A + B * B ; // S um of the squares of catheti int C_2 = A * A + B * B; / / S um dari kuadrat catheti

5. 5. Calculation of the right part of the assignment operator. Perhitungan bagian kanan operator penugasan. The result of the calculations is the value of 25 (the details of how a program refers to variables to take their values are considered in the section Constants and Variables , so we aren't particularizing this point here now). Hasil perhitungan adalah nilai dari 25 (secara rinci bagaimana program mengacu pada variabel untuk mengambil nilai-nilai mereka dianggap di bagian Konstanta dan Variabel, jadi kita tidak particularizing titik ini di sini sekarang).

6. 6. Assignment of the value 25 to variable C_2 . Tugas dari nilai 25 sampai variabel C_2.

The next line represents an assignment operator, the right part of which contains a call for the standard function: Baris berikutnya merupakan tugas operator, bagian kanan yang berisi panggilan untuk fungsi standar:

int C = MathSqrt ( C_2 ) ; // Calculation of hypotenuse int C = MathSqrt (C_2); / / Perhitungan terpanjang

The program seeks to execute the assignment operator. Program ini berupaya untuk melaksanakan tugas operator. For this purpose, it executes calculations to the right of the equality sign first. Untuk tujuan ini, perhitungan dijalankan di sebelah kanan tanda persamaan pertama.

7. 7. The program calls for execution the standard function MathSqrt() (that calculates square roots). Program panggilan untuk eksekusi fungsi standar MathSqrt () (yang menghitung akar kuadrat). The value of variable C_2 (in our case, this value is equal to 25) will be used as the passed parameter. Nilai variabel C_2 (dalam kasus kami, nilai ini sama dengan 25) akan digunakan sebagai parameter berlalu. Note that there is no description of this standard function anywhere in the program. Perhatikan bahwa tidak ada deskripsi fungsi standar ini di mana saja dalam program. The descriptions of standard functions must not be located in programs. Penjelasan fungsi standar tidak boleh berada

Page 61: Pengenalan MQL4 - 1.Dasar MQL4

dalam program. In the text of a program, you can easily distinguish the standard function call by its appearance: they are highlighted in MetaEditor with dark blue (programmer may choose colors voluntarily). Dalam teks dari sebuah program, Anda dapat dengan mudah membedakan fungsi standar panggilan dengan penampilan: mereka disorot dalam MetaEditor dengan biru gelap (programmer dapat memilih warna secara sukarela).

8. 8. The calculations are made in the standard function MathSqrt(). Perhitungan dibuat dalam MathSqrt fungsi standar ().

9. 9. The standard function MathSqrt() has completed its calculations. Fungsi standar MathSqrt () telah menyelesaikan perhitungan. It returns the obtained value. Itu mengembalikan nilai yang diperoleh. In our case, it is the value of 5 (the square root of 25). Dalam kasus kami, itu adalah nilai 5 (akar kuadrat dari 25).

The value returned by the function is now the content of the record: Nilai yang dikembalikan oleh fungsi sekarang isi catatan:

MathSqrt ( C_2 ) MathSqrt (C_2)

This record can be considered as a special, complex variable, a kind of a thing, inside which the calculations are performed. Catatan ini dapat dianggap sebagai khusus, variabel kompleks, semacam sesuatu, di dalam perhitungan yang dilakukan. After these calculations have been completed, the thing takes a value. Setelah perhitungan ini telah selesai, hal mengambil nilai. The determining is here the fact that the value returned by the function can be assigned to another variable or considered somehow in any other calculations. Di sini yang menentukan adalah fakta bahwa nilai yang dikembalikan oleh fungsi dapat diberikan pada variabel lain atau dianggap entah bagaimana perhitungan lainnya.

10. 10. In this case, our value is the value of the right part of the assignment operator. Dalam kasus ini, nilai kita adalah nilai dari bagian kanan operator penugasan. On continuing execution of the assignment operator, the program will assign the value of 5 to variable C. On melanjutkan pelaksanaan tugas operator, program ini akan menetapkan nilai variabel dari 5 C.

11. 11. The next line contains operator that references to the standard function Alert() (function call). Baris berikutnya operator yang berisi referensi ke fungsi standar Alert () (fungsi panggil).

Alert ( "Hypotenuse = " , C ) ; // Message on the screen Alert ( "sisi miring =", C); / / Pesan di layar

The standard function Alert() opens a dialog box where the values of the passed parameters are displayed. Fungsi standar Alert () akan membuka kotak dialog di mana nilai-nilai parameter berlalu akan ditampilkan. In this case, the function has taken two values as the passed parameters: Dalam kasus ini, fungsi telah mengambil dua nilai sebagai parameter lewat:

Page 62: Pengenalan MQL4 - 1.Dasar MQL4

- the value of string constant: Hypotenuse = - Nilai konstanta string: sisi miring =

- the value of integer variable C: 5 - Nilai dari variabel integer C: 5

It was noted above that not all functions must return the value (that is the result of the function execution). Telah dicatat di atas, bahwa tidak semua fungsi harus mengembalikan nilai (yang merupakan hasil dari pelaksanaan fungsi). The standard function Alert() does not return any value, since it has another task - it must display the text on the screen, in a special window. Fungsi standar Alert () tidak mengembalikan nilai apapun, karena memiliki tugas lain - harus menampilkan teks pada layar, dalam sebuah jendela khusus.

As a result of execution of the standard function Alert(), in the window of this function the following line will appear: Sebagai hasil dari pelaksanaan fungsi standar Alert (), di jendela fungsi ini baris berikut akan muncul:

Hypotenuse = 5 Sisi miring = 5

12. 12. The last operator in this program completes the work of the special function start(). Operator terakhir dalam program ini melengkapi karya fungsi khusus start ().

return ; // Function exit operator return; / / Fungsi keluar operator

The work of the program is finished at this point. Kerja dari program ini adalah selesai pada titik ini.

A question may arise: How can we know what function will return the value, and what not? Sebuah pertanyaan mungkin timbul: Bagaimana kita bisa tahu apa fungsi akan mengembalikan nilai, dan apa yang tidak? The answer to this question is obvious: In order to find the detailed descriptions of built-in functions, you should read the reference documentation in MQL4.community , the website launched by MetaQuotes Software Corp. , or the Help File of MetaEditor. Jawaban atas pertanyaan ini jelas: Dalam rangka untuk mencari detil deskripsi fungsi built-in, Anda harus membaca referensi dokumentasi di MQL4.community, website yang diluncurkan oleh MetaQuotes Software Corp, atau Help File dari MetaEditor. The properties of a user-defined function are specified in its description. Sifat yang ditetapkan pengguna fungsi yang ditetapkan dalam deskripsi. Whether a user-defined function returns the value or not, depends on its algorithm (the decision is made by the programmer at the stage of writing the program code of the function). Apakah fungsi yang ditetapkan pengguna mengembalikan nilai atau tidak, tergantung pada algoritma (keputusan yang dibuat oleh pemrogram pada tahap penulisan kode program dari fungsi).

Page 63: Pengenalan MQL4 - 1.Dasar MQL4

Example: User-Defined Function in a Program Contoh: User-Defined Function in a Program

Let's consider how the same calculations are made in the program containing a user-defined function (Fig. 19). Mari kita pertimbangkan bagaimana perhitungan yang sama dibuat dalam program yang berisi fungsi yang ditetapkan pengguna (Gambar 19). A certain part of the code that could previously to be found in the special function start(), is unavailable now. Sebuah bagian tertentu dari kode yang sebelumnya dapat ditemukan dalam fungsi khusus start (), tidak tersedia sekarang. It is replaced with the call for the user-defined function. Ini diganti dengan panggilan untuk fungsi yang ditetapkan pengguna. However, the special function start() is followed by the description of the user-defined function. Namun, fungsi khusus start () ini diikuti oleh deskripsi fungsi yang ditetapkan pengguna.

The first two lines, in which integer variables A and B take numeric values, remain the same. Dua baris pertama, di mana variabel integer A dan B mengambil nilai numerik, tetap sama. Consequently, nothing changes in their execution: Akibatnya, tidak ada perubahan dalam pelaksanaan:

int A = 3 ; // First cathetus int A = 3; / / Pertama cathetus int B = 4 ; // Second cathetus int B = 4; / / Second cathetus

In the third line we have the assignment operator. Pada baris ketiga kita memiliki tugas operator. Its right part contains the call for the user-defined function: Its bagian kanan berisi panggilan untuk fungsi yang ditetapkan pengguna:

int C = Gipo ( A , B ) ; // Calculation of hypotenuse int C = Gipo (A, B); / / Perhitungan terpanjang

6. 6. On executing this operator, the program will first of all call the user-defined function. Pada mengeksekusi operator ini, program akan pertama-tama memanggil fungsi yang ditetapkan pengguna.

Note: The description of the user-defined function must be present in your program and placed immediately after the brace that closes the special function start() (ie, outside the special function). Catatan: Deskripsi tentang fungsi yang ditetapkan pengguna harus ada dalam program anda dan ditempatkan segera setelah penjepit yang menutup fungsi khusus start () (yaitu, di luar fungsi khusus).

In referring to the user-defined function, the program will perform the following: Dalam mengacu pada fungsi yang ditetapkan pengguna, program akan melakukan berikut ini:

6.1. 6.1. Calling for variable A in order to get its value (in our case, 3 ) Memanggil untuk variabel A dalam untuk mendapatkan nilai (dalam kasus kita, 3)

Page 64: Pengenalan MQL4 - 1.Dasar MQL4

6.2. 6.2. Calling for variable B in order to get its value (in our case, 4 ) Memanggil untuk variabel B untuk mendapatkan nilai (dalam kasus kami, 4)

Note: As soon as the program starts to call the user-defined function (the function is user-defined, in our specific case; this rule applies to all functions), the program gets just a copy of the values of variables used as passed parameters, whereas the values of these variables themselves (in this case, A and B ) are not supposed to change due to application of the user-defined function, nor they really change. Catatan: Segera setelah program dijalankan untuk memanggil fungsi yang ditetapkan pengguna (fungsi ini didefinisikan pengguna, dalam kasus tertentu; aturan ini berlaku untuk semua fungsi), program hanya mendapatkan salinan dari nilai-nilai variabel yang digunakan sebagai berlalu parameter, sedangkan nilai-nilai variabel-variabel ini sendiri (dalam kasus ini, A dan B) tidak seharusnya perubahan akibat penerapan fungsi yang ditetapkan pengguna, atau mereka benar-benar berubah.

7. 7. The control is passed to the user-defined function. Kontrol dilewatkan ke fungsi yang ditetapkan pengguna.

During the whole time of execution of the user-defined function (no matter how long it takes), the values of variables in the calling program will not get lost, but will be stored. Sepanjang waktu pelaksanaan yang ditetapkan pengguna fungsi (tak peduli berapa lama waktu yang dibutuhkan), nilai-nilai variabel dalam program menelepon tidak akan hilang, tetapi akan disimpan.

The first line in the description of the user-defined function is its header: Baris pertama dalam deskripsi yang ditetapkan pengguna fungsi adalah header:

int Gipo ( int a , int b ) // User-defined function Gipo int (int a, int b) / / fungsi yang didefinisikan ditentukan

On executing the user-defined function, the program will do the following: Pada menjalankan fungsi yang ditetapkan pengguna, program akan melakukan hal berikut:

7.1. 7.1. The value of 3 (the first value in the list of passed parameters) will be assigned to variable a (the first variable in the list of formal parameters). Nilai dari 3 (nilai pertama dalam daftar parameter berlalu) tersebut akan diarahkan ke sebuah variabel (variabel pertama dalam daftar parameter formal).

7.2. 7.2. The value of 4 (the second value in the list of passed parameters) will be assigned to variable b (the second variable in the list of formal parameters). Nilai dari 4 (nilai kedua dalam daftar parameter berlalu) akan ditugaskan untuk variabel b (variabel kedua dalam daftar parameter formal).

Then the control will be passed to the function body for it to execute its algorithm. Kemudian kontrol akan dilewatkan ke fungsi tubuh untuk itu untuk melaksanakan algoritma.

Page 65: Pengenalan MQL4 - 1.Dasar MQL4

The first operator in the function body is: Operator pertama dalam fungsi tubuh adalah:

int c2 = a * a + b * b ; // S um of the squares of catheti int c2 = a * a + b * b; / / S um dari kuadrat catheti

7.3. 7.3. On executing this operator, the program calculates the value in the right part of the assignment operator, and after that it will assign the obtained value (in our case, 3*3 + 4*4 = 25 ) to variable c2 . Pada mengeksekusi operator ini, program menghitung nilai pada bagian kanan operator penugasan, dan setelah itu akan menetapkan nilai yang diperoleh (dalam kasus kami, 3 * 3 + 4 * 4 = 25) untuk variabel c2.

The next operator: Operator berikutnya:

int c = MathSqrt ( c2 ) ; // Hypotenuse int c = MathSqrt (c2); / / sisi miring

7.4. 7.4. Here we find the square root of the value of variable c2 . The order of operations is the same as in the previous example. Di sini kita menemukan akar kuadrat dari nilai variabel c2. Urutan operasi adalah sama seperti pada contoh sebelumnya. The description of standard function is not used either. Deskripsi fungsi standar tidak digunakan baik. The execution of the assignment operator will result in assigning the value of 5 to variable c . Pelaksanaan tugas operator akan menghasilkan menetapkan nilai variabel c 5.

7.5. 7.5. In the next line, we have operator: Pada baris berikutnya, kita memiliki operator:

return ( c ) ; // Function exit operator return (c); / / Fungsi keluar operator

On executing this operator, the program will return (to the call site of the user-defined function) the value enclosed in the parentheses of this operator. Pada mengeksekusi operator ini, program akan kembali (ke situs panggilan yang ditetapkan pengguna fungsi) nilai yang ditutupi dalam kurung dari operator ini. In our case, it is the value of variable c , ie 5 . Dalam kasus kami, itu adalah nilai variabel c, yaitu 5.

At this point, the execution of the user-defined function is over, the control is given to the call site. Pada titik ini, pelaksanaan fungsi yang ditetapkan pengguna berakhir, kontrol diberikan kepada situs panggilan.

8. 8. Recall that the user-defined function was called from the operator Ingatlah bahwa fungsi yang ditetapkan pengguna dipanggil dari operator

int C = Gipo ( A , B ) ; // Hypotenuse calculation int C = Gipo (A, B); / / hipotenusa perhitungan

The record (the user-defined function call) Catatan (yang ditetapkan pengguna fungsi panggil)

Gipo ( A , B ) Gipo (A, B)

Page 66: Pengenalan MQL4 - 1.Dasar MQL4

at the stage of returning the value, takes the value calculated in the function (in our case, it is the value of 5 ). pada tahap mengembalikan nilai, mengambil nilai yang dihitung dalam fungsi (dalam kasus kami, itu adalah nilai 5).

On completing the execution of the assignment operator, the program will assign the value of 5 to the variable C . Pada menyelesaikan pelaksanaan tugas operator, program ini akan menetapkan nilai 5 ke variabel C.

9. 9. The next operator, Operator berikutnya,

Alert ( "Hypotenuse = " , C ) ; // Message on the screen, Alert ( "sisi miring =", C); / / Pesan di layar,

will be executed in the same way as in the previous example, namely: in a special window, there will a message appear: akan dilaksanakan dalam cara yang sama seperti pada contoh sebelumnya, yaitu: dalam jendela khusus, ada sebuah pesan akan muncul:

Hypotenuse = 5 Sisi miring = 5

10. 10. The last operator in this program, Operator terakhir dalam program ini,

return ; // Function exit operator, return; / / Fungsi keluar operator,

completes the work of the special function start(),and simultaneously completes the work of the entire program (the properties of special functions are considered in more details in the section Special Functions ). menyelesaikan pekerjaan fungsi khusus start (), dan sekaligus menyelesaikan pekerjaan seluruh program (sifat-sifat fungsi khusus dianggap secara lebih rinci pada bagian Fungsi Khusus).

Let's consider some implementation versions of the above user-defined function. Mari kita mempertimbangkan beberapa versi pelaksanaan atas fungsi yang ditetapkan pengguna. It is easy to verify that programming with user-defined functions has some incontestable advantages. Mudah untuk memverifikasi bahwa pemrograman dengan fungsi yang ditetapkan pengguna memiliki beberapa keuntungan yg tak diragukan.

Previously Considered Implementation of User-Defined Function Gipo() Sebelumnya dianggap Pelaksanaan Fungsi Ditetapkan Pengguna Gipo ()

In this function, the formal parameters "resemble" the variables used in the basic program. Dalam fungsi ini, parameter formal "mirip" variabel-variabel yang digunakan

Page 67: Pengenalan MQL4 - 1.Dasar MQL4

dalam program dasar. However, this is just a formal similarity, because A and a are the different names of variables. Namun, ini hanya kemiripan formal, karena A dan a adalah nama-nama variabel berbeda.

//----------------------------------------------------------------------- //------------------------------------------------ ----------------------- int Gipo ( int a , int b ) // User-defined function Gipo int (int a, int b) / / fungsi yang didefinisikan ditentukan { ( int c2 = a * a + b * b ; // S um of the squares of catheti int c2 = a * a + b * b; / / S um dari kuadrat catheti int c = MathSqrt ( c2 ) ; // Hypotenuse int c = MathSqrt (c2); / / sisi miring return ( c ) ; // Function exit operator return (c); / / Fungsi keluar operator } ) //----------------------------------------------------------------------- //------------------------------------------------ -----------------------

Implementation of User-Defined Function Gipo(): Version 2 Pelaksanaan Fungsi Ditetapkan Pengguna Gipo (): Versi 2

In this case, the names of formal parameters do not "resemble" the names of variables used in the basic program. Dalam kasus ini, nama-nama parameter formal tidak "mirip" nama-nama variabel yang digunakan dalam program dasar. However, this doesn't prevent us from using this function in the program. Namun, hal ini tidak menghalangi kita dari menggunakan fungsi ini dalam program.

//-------------------------------------------------------------------- //------------------------------------------------ -------------------- int Gipo ( int alpha , int betta ) // User-defined function int Gipo (int alpha, betta int) / / fungsi yang didefinisikan ditentukan { ( int SQRT = alpha * alpha + betta * betta ; // S um of the squares of catheti int SQRT = alfa * alpha + betta * betta; / / S um dari kuadrat catheti int GIP = MathSqrt ( SQRT ) ; // Hypotenuse int GIP = MathSqrt (SQRT); / / sisi miring return ( GIP ) ; // Function exit operator return (GIP); / / Fungsi keluar operator } ) //-------------------------------------------------------------------- //------------------------------------------------ --------------------

Page 68: Pengenalan MQL4 - 1.Dasar MQL4

Implementation of User-Defined Function Gipo(): Version 3 Pelaksanaan Fungsi Ditetapkan Pengguna Gipo (): Versi 3

In this example, the variable alpha is reused in the program and changes its value twice. Dalam contoh ini, variabel alfa digunakan kembali dalam program dan perubahan nilainya dua kali. This fact has no effect on the actual variables specified in the function calls of the main program. Kenyataan ini tidak berpengaruh pada variabel yang sebenarnya ditentukan dalam pemanggilan fungsi dari program utama.

//-------------------------------------------------------------------- //------------------------------------------------ -------------------- int Gipo ( int alpha , int betta ) // User-defined function int Gipo (int alpha, betta int) / / fungsi yang didefinisikan ditentukan { ( alpha = alpha * alpha + betta * betta ; // S um of the squares of catheti alfa = alfa * alpha + betta * betta; / / S um dari kuadrat catheti alpha = MathSqrt ( alpha ) ; // Hypotenuse alpha = MathSqrt (alfa); / / sisi miring return ( alpha ) ; // Function exit operator return (alpha); / / Fungsi keluar operator } ) //-------------------------------------------------------------------- //------------------------------------------------ --------------------

Implementation of User-Defined Function Gipo(): Version 4 Pelaksanaan Fungsi Ditetapkan Pengguna Gipo (): Versi 4

In this user-defined function, all calculations are collected in one operator. Dalam fungsi yang ditetapkan pengguna, semua perhitungan dikumpulkan dalam satu operator. The return value is calculated directly in the parentheses of the operator return(). Nilai kembali dihitung secara langsung dalam kurung dari operator kembali (). The subduplicate is calculated directly in the location where the passed parameter must be specified in the standard function MathSqrt().This solution may seem to be strange or wrong at the beginning. Yang subduplicate dihitung secara langsung di lokasi di mana parameter berlalu harus dirinci dalam MathSqrt fungsi standar (). Solusi ini mungkin tampak aneh atau salah di awal. However, there is no error in this implementation of the user-defined function. Namun, tidak ada kesalahan dalam pelaksanaan fungsi yang ditetapkan pengguna. The number of operators used in the function is smaller than in other implementations, so the code turns out to be more compact. Jumlah operator yang digunakan dalam fungsi lebih kecil daripada implementasi lain, sehingga kode ternyata lebih kompak.

//-------------------------------------------------------------------- //------------------------------------------------ -------------------- int Gipo ( int a , int b ) // User-defined function Gipo int (int a,

Page 69: Pengenalan MQL4 - 1.Dasar MQL4

int b) / / fungsi yang didefinisikan ditentukan { ( return ( MathSqrt ( a * a + b * b )) ; // Function exit operator return (MathSqrt (a * a + b * b)); / / Fungsi keluar operator } ) //-------------------------------------------------------------------- //------------------------------------------------ --------------------

Thus, the application of user-defined functions has some incontestable advantages in the programming practice: Dengan demikian, penerapan fungsi-fungsi yang ditetapkan pengguna memiliki beberapa keuntungan yg tak diragukan dalam praktek pemrograman:

the names of variables in the basic text of the program have no relations to the names of formal parameters in a user-defined function; nama-nama variabel dalam teks dasar dari program ini tidak memiliki hubungan dengan nama-nama parameter formal dalam fungsi yang ditetapkan pengguna;

user-defined functions can be reused in different programs, there is no need to change the code of a user-defined function; yang ditetapkan pengguna fungsi dapat digunakan kembali dalam program yang berbeda, tidak ada perlu mengubah kode yang ditetapkan pengguna fungsi;

libraries can be created, if necessary. perpustakaan dapat diciptakan, jika perlu.

These very useful properties of functions allow to create really large programs in a corporation, for example. Ini sangat berguna sifat fungsi benar-benar memungkinkan untuk membuat program yang besar dalam perusahaan, misalnya. Several programmers can be involved in this process simultaneously, and they a released from the necessity to agree about the names of variables they use. Beberapa pemrogram dapat terlibat dalam proses ini secara simultan, dan mereka yang dibebaskan dari keharusan untuk setuju tentang nama-nama variabel yang mereka gunakan. The only thing to be agreed is the order of variables in the header and in the function call. Satu-satunya hal yang perlu disepakati adalah urutan variabel dalam header dan dalam fungsi panggil.

Jenis Program

Starting to write a program in MQL4, the programmer must, first of all, answer the question about what type of programs will it be. Mulai menulis sebuah program di MQL4, programmer harus, pertama-tama, menjawab pertanyaan tentang jenis program apa yang akan dipakai. The contents and functionality of the program fully depend on this. Isi dan fungsi dari program ini sepenuhnya bergantung pada. In MQL4, there are 3 types of application programs: Expert Advisors, scripts, and custom indicators. Dalam MQL4, terdapat 3 jenis program aplikasi: Expert Advisors, script, dan kustom indikator. Any program developed by a programmer will belong to one of these types. Setiap program yang dikembangkan oleh seorang programmer akan menjadi milik salah satu dari jenis ini. They all have their purposes and special features. Mereka semua

Page 70: Pengenalan MQL4 - 1.Dasar MQL4

mempunyai tujuan dan fitur khusus. Let's consider these types in more details. Mari kita pertimbangkan jenis ini secara lebih rinci.

Expert Advisor (EA) is a program coded in MQL4 and called by the client terminal to be executed at every tick. Expert Advisor (EA) adalah sebuah program yang dikodekan dalam MQL4 dan dipanggil oleh klien terminal akan dilaksanakan di setiap tick. The main purpose of Expert Advisors is the programmed control over trades. Tujuan utama Expert Advisors adalah kontrol atas perdagangan diprogram. Expert Advisors are coded by users. Expert Advisors dikodekan oleh pengguna. There are no built-in EAs in the client terminal. Tidak ada built-in Eas di terminal klien.

Script is a program coded in MQL4 and executed by the client terminal only once. Script adalah sebuah program yang dikodekan dalam MQL4 dan dieksekusi oleh terminal klien hanya sekali. Scripts are intended to perform any allowed operations that should be executed only once. Skrip ini dimaksudkan untuk melakukan operasi yang diizinkan apapun harus dieksekusi hanya sekali. Scripts are coded by users. Naskah dikodekan oleh pengguna. They are not delivered with the client terminal as built-in programs. Mereka tidak disampaikan dengan klien terminal sebagai built-in program.

Custom indicator is a program coded in MQL4 and called by the client terminal to be executed at every tick. Custom indikator adalah sebuah program yang dikodekan dalam MQL4 dan dipanggil oleh klien terminal akan dilaksanakan di setiap tick. It is basically intended for graphical displaying of preliminarily calculated dependences as lines. Hal ini pada dasarnya ditujukan untuk menampilkan grafis dependences dari preliminarily dihitung sebagai baris. Indicators cannot trade. Indikator tidak dapat perdagangan. There are two types of indicators: technical (built-in) indicators and custom indicators. Ada dua jenis indikator: teknis (built-in) indikator dan custom indikator. Indicators are considered in more details in the sections of Usage of Technical Indicators Indikator dianggap secara lebih rinci dalam bagian Teknis Penggunaan Indikator and Creation of Custom Indicators . dan Penciptaan Custom Indicator.

The programmer chooses the type of the program to be written depending on what is the purpose of this specific program and on properties and limitations of programs of different types. Programmer memilih jenis program yang akan ditulis tergantung pada apa yang merupakan tujuan dari program khusus ini dan pada properti dan keterbatasan program-program dari berbagai jenis.

Properties of Programs Properties Program

Launching a Program for Execution Meluncurkan Program untuk Pelaksanaan

There is a criterion that distinguishes Expert Advisors and custom indicators from scripts. Ada kriteria yang membedakan Expert Advisors dan custom indikator dari skrip. This is

Page 71: Pengenalan MQL4 - 1.Dasar MQL4

their run duration. Ini adalah durasi mereka jalankan. In the section Some Basic Concepts , we mentioned already that programs were launched the amount of time that is multiple of the amount of ticks. This statement is true for EAs and custom indicators, but it is false for scripts. Pada bagian Beberapa Konsep Dasar, kita sudah disebutkan bahwa program yang diluncurkan jumlah waktu yang banyak dari jumlah kutu. Pernyataan ini berlaku untuk EAS dan kustom indikator, tetapi palsu untuk skrip.

Expert Advisor and custom indicator. Once you have attached a program (EA or custom indicator) to the symbol window, the program makes some preparations and switches to the tick-waiting mode. Expert Advisor dan custom indikator. Setelah Anda telah terpasang program (EA atau kustom indikator) untuk jendela simbol, program membuat beberapa persiapan dan switch ke modus tik-tunggu. As soon as a new tick comes, the program will be launched by the client terminal for execution, then it makes all necessary operations prescribed by its algorithm, and, upon completion, passes the control to the client terminal, ie, switches to the tick-waiting mode. Segera setelah kutu baru datang, program ini akan diluncurkan oleh terminal klien untuk eksekusi, maka itu membuat semua perlu operasi ditentukan oleh algoritma, dan, setelah selesai, melewati kontrol ke terminal klien, yaitu beralih ke kutu -menunggu mode.

If a new tick comes when the program is being executed, this does not make any effect on the program execution - the program continues being executed according to its algorithm and passes the control to the client terminal only upon completion. Jika kutu baru muncul ketika program sedang dijalankan, hal ini tidak membuat efek pada pelaksanaan program - program yang terus dilaksanakan sesuai dengan algoritma dan melewati kontrol ke terminal klien hanya setelah selesai. This is why not all the ticks result in launching an EA or a custom indicator, but only those that income when the control is in the client terminal and when the program is in the tick-waiting mode. Inilah sebabnya mengapa tidak semua hasil ticks dalam meluncurkan sebuah EA atau indikator custom, tetapi hanya orang-orang bahwa pendapatan ketika kontrol di terminal klien dan ketika program ini dalam modus tik-tunggu.

The new tick launches the program for execution. Kutu baru meluncurkan program untuk eksekusi. Thus, an Expert Advisor or a custom indicator can operate within a long period of time, being attached to the symbol window and starting to run from time to time (as multiple of the amount of incoming ticks). Dengan demikian, sebuah Expert Advisor atau indikator kustom dapat beroperasi dalam jangka waktu yang panjang, yang melekat pada simbol jendela dan mulai berlari dari waktu ke waktu (karena beberapa dari jumlah yang masuk kutu).

Besides, an Expert Advisor differs from an indicator by the execution order at the first launch of the program. Selain itu, sebuah Expert Advisor berbeda dari sebuah indikator oleh perintah eksekusi pada peluncuran pertama program. This difference is determined by the specific properties of special functions in the program of a certain type (see Special Functions ). Once attached to the symbol window, an Expert Advisor makes necessary preparations (function init()) and switches to the tick-waiting mode to start function start(). Perbedaan ini ditentukan oleh sifat-sifat spesifik fungsi-fungsi khusus

Page 72: Pengenalan MQL4 - 1.Dasar MQL4

dalam program jenis tertentu (lihat Khusus Functions). Begitu melekat pada jendela simbol, sebuah Expert Advisor membuat persiapan yang diperlukan (function init ()) dan switch ke tik-tunggu mode untuk memulai fungsi start (). Unlike EAs, a custom indicator both executes function init() and calls function start() one time to make the first, preliminary calculation of the indicator value. Tidak seperti EAS, custom indikator kedua fungsi mengeksekusi init () dan memanggil fungsi start () satu kali untuk membuat pertama, awal perhitungan nilai indikator. Later on, at a new tick, the program is launched by calling only function start(), ie, operators are executed according to the algorithm of function start(). Kemudian, pada kutu baru, program ini diluncurkan oleh hanya memanggil fungsi start (), yaitu, operator dijalankan sesuai dengan algoritma fungsi start ().

Script. Unlike Expert Advisors or indicators, a script will be launched for execution immediately after it has been attached to a symbol window, without waiting for a new tick. Script. Tidak seperti Expert Advisors atau indikator, script akan diluncurkan untuk eksekusi segera setelah itu telah melekat pada jendela simbol, tanpa menunggu kutu baru. The entire code of the script will be executed on time. Seluruh kode script akan dijalankan tepat waktu. After all program lines have been executed, the script finishes its operations and is unloaded from the symbol window. Setelah semua baris program yang telah dilaksanakan, skrip selesai operasinya dan dibongkar dari jendela simbol. A script is helpful if you want to make one-time operations, for example, to open or close orders, to display texts on the screen, to install graphical objects, etc. Sebuah script ini berguna jika Anda ingin membuat satu kali operasi, misalnya, untuk membuka atau menutup perintah, untuk menampilkan teks pada layar, untuk menginstal objek grafis, dll

The differences in execution of Expert Advisors, scripts and custom indicators is determined by the properties of their special functions the will be considered in more details in the section Special Functions . Perbedaan dalam pelaksanaan Expert Advisors, skrip dan kustom indikator ditentukan oleh milik dari fungsi-fungsi khusus yang akan dipertimbangkan secara lebih rinci dalam bagian Fungsi Khusus.

Trading Trading

One of the main criteria that mark the above programs is the possibility to make trading instructions. Salah satu kriteria utama yang menandai program-program di atas adalah kemungkinan untuk membuat instruksi perdagangan. A trading instruction is a control that a program passes to the trading server in order to open, close, or modify orders. Sebuah instruksi perdagangan adalah program kontrol yang lolos ke server perdagangan untuk membuka, menutup, atau memodifikasi perintah. Trading instructions are formed in the programs using built-in functions that we call "trading functions". Petunjuk trading dibentuk dalam program menggunakan built-in fungsi yang kita sebut "fungsi perdagangan".

Page 73: Pengenalan MQL4 - 1.Dasar MQL4

Only Expert Advisors and scripts have the right to use trading functions (only if the corresponding option is enabled in the EA/script settings). Hanya Expert Advisors dan skrip mempunyai hak untuk menggunakan fungsi perdagangan (hanya jika pilihan yang sesuai diaktifkan di EA / script pengaturan). It is prohibited to use trading functions in custom indicators. Dilarang untuk menggunakan fungsi perdagangan di custom indikator.

Simultaneous Use Gunakan simultan

The programs also differ from each other by the amount of programs of different types simultaneously attached to a symbol window. Program juga berbeda satu sama lain dengan jumlah jenis program yang berbeda secara bersamaan sebuah simbol yang melekat pada jendela.

Expert Advisor. You can attach only one EA in one symbol window; the simultaneous use of several Expert Advisors is prohibited. Expert Advisor. Anda dapat melampirkan hanya satu simbol EA dalam satu jendela; simultan penggunaan beberapa Expert Advisors adalah dilarang.

Script. You can attach only one script in one symbol window; the simultaneous use of several scripts is prohibited. Script. Anda dapat melampirkan satu script hanya dalam satu jendela simbol; simultan penggunaan beberapa skrip adalah dilarang.

Custom indicator . Custom indikator. You can attach several indicators in one symbol window simultaneously, they will not interfere with each other. Anda dapat melampirkan beberapa indikator dalam satu jendela simbol secara simultan, mereka tidak akan mengganggu satu sama lain.

The programs of all types can be launched simultaneously in one symbol window provided their compliance with the limitations of each type. Program dari semua jenis dapat diluncurkan secara bersamaan dalam satu jendela simbol disediakan kepatuhan mereka dengan keterbatasan masing-masing jenis. For example, you can launch one EA, one script and several indicator in one symbol window at the same time, or one EA and one indicator. Sebagai contoh, Anda dapat memulai satu EA, satu script dan beberapa indikator dalam satu jendela simbol pada waktu yang sama, atau satu EA dan salah satu indikator. However, you may not launch several EAs or scripts in one symbol window, whatever programs of other types are launched simultaneously. Namun, Anda mungkin tidak meluncurkan beberapa EAS atau skrip dalam satu jendela simbol, program apa pun jenis lain yang diluncurkan secara bersamaan.

At the same time, you may simultaneously launch the programs of the same type in different windows of one symbol. Pada saat yang sama, Anda dapat sekaligus meluncurkan program-program dari jenis yang sama di jendela yang berbeda dari satu simbol. For example, if you want to launch two Expert Advisors for one symbol, you can

Page 74: Pengenalan MQL4 - 1.Dasar MQL4

launch one EA in one window of this symbol and another one in another window of the same symbol. Misalnya, jika Anda ingin meluncurkan dua Expert Advisors untuk satu simbol, Anda bisa meluncurkan satu EA dalam satu jendela dari simbol ini dan satu lagi di jendela lain simbol yang sama. In this case, your Expert Advisors will work simultaneously. Dalam kasus ini, Expert Advisors Anda akan bekerja secara bersamaan. However, you must take into consideration that EAs launched in this manner may form contradictory trading instructions. Namun, Anda harus mempertimbangkan bahwa EAS diluncurkan dengan cara ini dapat membentuk instruksi perdagangan kontradiktif. For example, one of them can give instructions to open orders, whereas the other one can instruct to close orders. Sebagai contoh, salah satu dari mereka dapat memberi instruksi untuk membuka perintah, sedangkan yang lain dapat menginstruksikan untuk menutup perintah. This may cause occurring of a long sequence of useless trades that results in the total loss. Ini dapat menyebabkan terjadi dari rangkaian panjang berguna perdagangan yang mengakibatkan kerugian total.

The programs of all types can create global variables available for all other programs launched in the client terminal, including those launched in the windows of different symbols. Program dari semua jenis dapat membuat variabel global yang tersedia untuk semua program lain yang diluncurkan pada terminal klien, termasuk yang diluncurkan di jendela simbol yang berbeda. This allows the machine to coordinate the simultaneous operations of all programs. Hal ini memungkinkan mesin untuk mengkoordinasikan operasi simultan dari semua program. The order of using global variables will be specially considered in the section GlobalVariables . Urutan menggunakan variabel global akan dipertimbangkan secara khusus di bagian GlobalVariables.

Calling Programs for Execution Memanggil Program untuk Pelaksanaan

Programs of all types can only be executed at the user's will. Program dari semua jenis hanya dapat dilakukan pada kehendak pengguna. In MQL4, you cannot call an Expert Advisor, a script, or an indicator for execution programmatically. Dalam MQL4, Anda tidak dapat memanggil Expert Advisor, naskah, atau indikator untuk eksekusi pemrograman.

The only exemption is the built-in function iCustom() that allows you to refer to a custom indicator for some data, and to the functions of technical indicators. Satu-satunya pengecualian adalah built-in fungsi iCustom () yang memungkinkan Anda untuk mengacu ke indikator kustom untuk beberapa data, dan untuk fungsi indikator teknis. The referring to function iCustom() or to the functions of technical indicators does not result in displaying the lines of indicators in the symbol window (see Simple Programs in MQL4 ). Pengarah berfungsi iCustom () atau fungsi indikator teknis tidak mengakibatkan menampilkan garis-garis indikator dalam jendela simbol (lihat Wikipedia Program di MQL4).

Page 75: Pengenalan MQL4 - 1.Dasar MQL4

Table 2. Main properties of Expert Advisors, scripts, and custom indicators. Tabel 2. Main sifat Expert Advisors, script, dan kustom indikator.

Property of the Program Properti Program

Expert Advisor Expert Advisor

Script Script

Indicator Indikator

Run duration Jalankan durasi Over a long period Selama periode panjang

One time Satu kali

Over a long period Selama periode panjang

Trading Trading Allowed Diizinkan

Allowed Diizinkan

Prohibited Dilarang

Displaying of lines Menampilkan baris No Tidak No Tidak Yes Ya

Simultaneous use of several programs of the same type Simultan menggunakan program beberapa tipe yang sama

Prohibited Dilarang

Prohibited Dilarang

Prohibited Dilarang

Calling for execution programmatically Memanggil untuk eksekusi pemrograman

Prohibited Dilarang

Prohibited Dilarang

Prohibited Dilarang

Thus, if we want a program that would manage trading according to a certain algorithm, we should write an EA or a script. Jadi, jika kita ingin sebuah program yang akan mengelola perdagangan menurut algoritma tertentu, kita harus menulis sebuah EA atau naskah. However, if we want to have a certain dependence graphically displayed, we should use an indicator. Namun, jika kita ingin memiliki ketergantungan tertentu grafis yang ditampilkan, kita harus menggunakan suatu indikator.