Jenis Pembolehubah

Program aplikasi dalam MQL4 boleh mengandungi puluhan dan ratusan pembolehubah. Harta penting setiap pembolehubah adalah kemungkinan untuk menggunakan nilainya dalam suatu program. Had kemungkinan ini berkaitan dengan skop pembolehubah.

Skop ubah adalah lokasi dalam suatu program di mana nilai pembolehubah tersedia. Setiap pembolehubah mempunyai skopnya. Menurut skop terdapat dua jenis pemboleh ubah dalam MQL4: lokal dan global.

Pembolehubah Tempatan dan Global

Pembolehubah setempat adalah pemboleh ubah yang diisytiharkan dalam fungsi. Skop pembolehubah tempatan adalah badan fungsi, di mana pembolehubah diisytiharkan. Pembolehubah setempat boleh dimulakan oleh pemalar atau ungkapan yang sepadan dengan jenisnya.

Pembolehubah global s pembolehubah yang diisytiharkan di luar semua fungsi. Skop pemboleh ubah global adalah keseluruhan program. Pembolehubah global boleh dimulakan hanya dengan pemalar yang sejajar dengan jenisnya (dan bukan ungkapan). Pembolehubah global diisytiharkan hanya sekali sebelum menyatakan pelaksanaan fungsi khas.

Jika kawalan dalam suatu program berada di dalam fungsi tertentu, nilai-nilai pembolehubah tempatan yang diisytiharkan dalam fungsi lain tidak tersedia. Nilai mana-mana pembolehubah global boleh didapati daripada sebarang fungsi khusus dan pengguna yang ditentukan. Mari kita lihat contoh mudah.

Masalah 22. Buat program yang mengira kutu.

Algoritma penyelesaian Masalah 22 menggunakan variabel global (countticks.mq4):

//--------------------------------------------------------------------
// countticks.mq4
// The code should be used for educational purpose only.
//--------------------------------------------------------------------
int Tick; // Global variable
//--------------------------------------------------------------------
int start() // Special function start()
{
Tick++; // Tick counter
Comment("Received: tick No ",Tick); // Alert that contains number
return; // start() exit operator
}
//--------------------------------------------------------------------

Dalam program ini hanya satu pembolehubah global digunakan – Tandakan. Ia adalah global kerana ia dinyatakan di luar permulaan () penerangan. Ini bermakna pemboleh ubah akan mengekalkan nilai dari semak untuk tanda semak. Mari lihat perincian pelaksanaan program.

Dalam Fungsi Khas, kami menganalisis kriteria di mana fungsi khas dimulakan. Secara ringkas: mula () di Expert Advisors dimulakan oleh terminal pelanggan apabila satu tanda baru muncul. Pada masa lampiran Pakar Penasihat ke tetingkap keselamatan, tindakan berikut akan dilakukan:

1. Pengisytiharan Tick variable variable. Pembolehubah ini tidak dimulakan oleh pemalar, sebab itu nilainya pada tahap ini sama dengan sifar.

2. Kawalan dipegang oleh terminal pelanggan sehingga satu tanda baru muncul.

3. Tanda kutip diterima. Kawalan diserahkan kepada permulaan fungsi khas ().

3.1. Kawalan pelaksanaan permulaan () dijalankan kepada pengendali:

Tick ​​++; // Kick counter

Hasil daripada pelaksanaan pengendali nilai Tick meningkat sebanyak 1 (keseluruhannya).

3.2. Kawalan diserahkan kepada pengendali:

Komen ("diterima: tandakan Tidak", Tandakan); // Alert yang mengandungi nombor

Pelaksanaan fungsi standard Comment () akan menyebabkan penampilan amaran:

Diterima: tandakan No 13.3. Kawalan diserahkan kepada pengendali: kembali; // start () operator keluarHasil daripada pelaksanaannya () selesai operasi, kawalan dikembalikan kepada terminal pelanggan. Pembolehubah global terus wujud, nilainya sama dengan 1.Tindakan selanjutnya akan diulang bermula dari titik 2. Tanda variasi akan digunakan dalam pengiraan sekali lagi, tetapi pada tanda kedua pada saat permulaan fungsi khas bermula () nilainya adalah sama dengan 1, itulah sebabnya hasil pengendali Tick ​​++; // Kick counterpelaksanaan akan menjadi nilai baru pemboleh ubah Tick – ia akan ditingkatkan dengan 1 dan sekarang akan sama dengan 2 dan pelaksanaan Komentar () akan menunjukkan tanda amaran:Diterima: tandakan No 2Oleh itu, nilai Tick akan meningkat sebanyak 1 pada setiap permulaan fungsi khas mula (), iaitu pada setiap tanda. Penyelesaian masalah semacam itu hanya mungkin apabila menggunakan pembolehubah yang mengekalkan nilai-nilai mereka selepas keluar dari fungsi (dalam hal ini pembolehubah global digunakan). Ia tidak masuk akal untuk menggunakan pemboleh ubah tempatan untuk tujuan ini: pembolehubah tempatan kehilangan nilainya fungsi, di mana ia diisytiharkan, selesai operasi.Ia boleh dilihat dengan mudah, jika kita memulakan Penasihat Pakar, di mana Tick dibuka sebagai pembolehubah setempat (iaitu program mengandungi ralat algoritma):

int start()                           // Special function start()
{
int Tick; // Local variable
Tick++; // Tick counter
Comment("Received: tick No ",Tick);// Alert that contains number
return; // start() exit operator
}

Leave a Reply

Your email address will not be published. Required fields are marked *