Membina dan menggunakan program

By | 26/09/2019

Program aplikasi yang ditulis dalam MQL4-EA, skrip dan petunjuk-petunjuk-dibuat menggunakan MetaEditor.

Fail executable MetaEditor (MetaEditor.exe) disediakan sebagai sebahagian daripada terminal klien dan terletak di direktori root terminal. Userguide MetaEditor dibuka dengan menekan F1. Ia mengandungi maklumat umum yang diperlukan untuk penciptaan program-program baru. Editor boleh dibuka dengan mengklik pada nama fail MetaEditor.exe atau pada pintasan pada desktop anda.

Struktur terminal pelanggan

Untuk kemudahan operasi, MetaEditor mempunyai toolbar terbina dalam: “Navigator” (Ctrl + D) dan “Toolbox” (Ctrl + T).

Figure 25 Location of windows in MetaEditor.

Membuat Program Baru

Biasanya, semasa penciptaan program baru, kotak alat dan tingkap navigasi tersembunyi. Oleh itu, perhatian pengguna tertumpu pada program yang dicipta. Untuk membuat program baru, pergi ke menu Fail Editor dan klik Baru. Atau, gunakan butang untuk mencipta fail baharu:

Selepas semua tindakan ini “EA Wizard” menawarkan anda senarai jenis program untuk dicipta.

Figure 26 Choosing a program type to be created.

Jika anda perlu membuat EA, periksa EA, dan klik Seterusnya. Dalam tetingkap seterusnya adalah perlu untuk menunjukkan nama EA yang dibuat. Katakan ia dipanggil create.mq4.

Nama fail yang dibuat ditulis tanpa pelanjutannya (indikasi jenis).

Wizard EA menunjukkan tetingkap dengan beberapa bidang yang akan diisi.

Figure 27 A window for indicating general parameters of an EA.

Selepas mengklik Ok, teks muncul di tetingkap utama, dan nama penuh EA yang dibuat, create.mq4, dipaparkan dalam sistem fail dan dalam tetingkap pelayaran.

Marilah kita melihat teks program yang dihasilkan oleh MetaEditor.

//+------------------------------------------------------------------+ 
//|                                                       create.mq4 | 
//|                                                       John Smith | 
//|                                                  www.company.com | 
//+------------------------------------------------------------------+ 

#property copyright "John Smith" 
#property link      "www.company.com" 
//+------------------------------------------------------------------+ 
//| expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int init()   
{ 
//---- 
//----    
return(0);   
} 
//+------------------------------------------------------------------+ 
//| expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
int deinit()   
{ 
//---- 
//----    
return(0);   
} 
//+------------------------------------------------------------------+ 
//| expert start function                                            | 
//+------------------------------------------------------------------+ 
int start()   
{ 
//---- 
//----   
return(0);   
} 
//+------------------------------------------------------------------+

Anda lihat, kod tersebut mengandungi kebanyakan ulasan. Kami sudah tahu bahawa komen itu merupakan sebahagian daripada program yang tidak wajib, dan teks komen tidak diproses oleh program.

Terdapat tiga fungsi khas dalam program ini: init (), start (), dan deinit (). Setiap fungsi mengandungi hanya satu pengendali operator (0) -an untuk keluar dari fungsi. Oleh itu, kod program yang dihasilkan oleh Wizard EA hanya corak, menggunakan mana anda boleh membuat program baru. Kod program akhir tidak wajib mengandungi semua fungsi istimewa yang ditunjukkan. Mereka hadir dalam corak sahaja, kerana, sebagai peraturan, program purata mengandungi semua fungsi ini. Jika mana-mana fungsi tidak akan digunakan, perihalannya boleh dihapuskan.

Barisan program kod berikut juga boleh diabaikan.

#property copyright "John Smith" 
#property link      "www.company.com"

Walaupun program ini tidak digunakan secara praktikal, ia ditulis dengan betul dari sudut pandang sintaksis. Program ini boleh dikumpulkan dan dimulakan. Ia akan dilaksanakan seperti mana-mana program lain. (Walau bagaimanapun, tidak akan ada pengiraan, kerana tiada kod sumbernya.)

Penampilan program

Menggunakan komen dalam program sangat disyorkan, dan dalam sesetengah keadaan, ia sangat penting. Ia harus ditekankan bahawa seorang pengaturcara bukan sahaja mencipta program, tetapi juga membacanya. Kadang-kadang terdapat kesukaran yang besar apabila membaca program. Pengalaman banyak pengaturcara menunjukkan bahawa logik, yang mana program telah dibangunkan, boleh dilupakan (atau tidak diketahui dalam produk oleh pengaturcara lain). Tanpa ulasan rentetan, sukar, kadang-kadang juga mustahil, memahami fragmen kod.

Program kod yang betul pasti mengandungi komen.

Kelebihan utama komen adalah:

  • Pertama, ulasan mengasingkan satu bahagian program dari yang lain. Lebih mudah untuk membaca teks yang diformatkan dengan bijak daripada teks lurus.
  • Kedua, komen rentetan menerangkan dengan kata-kata biasa apa yang programmer hendak lakukan dalam setiap baris kod berasingan.
  • Ketiga, di bahagian atas program, maklumat umum mengenai program boleh ditentukan seperti nama dan kenalan penulis (termasuk laman web pengarang, e-mel dan sebagainya), peruntukan program (sama ada ia lengkap program perdagangan atau fungsi perpustakaan), ciri dan batasannya yang utama, dan maklumat berguna yang lain.

Setiap pengaturcara boleh memilih gaya komen yang mudah. Pilihan gaya yang ditawarkan oleh pemaju MQL4 dibentangkan dalam create.mql4 EA. Marilah kita melihat ciri-ciri utama gaya penampilan yang boleh diterima.

  1. Panjang baris komen tidak boleh melebihi saiz tetingkap utama. Keterbatasan ini bukanlah syarat rasmi sintaks bahasa, tetapi membaca program yang mengandungi garis panjang tidak mudah. Mana-mana garis panjang boleh dipisahkan menjadi beberapa baris supaya setiap baris kelihatan sepenuhnya pada skrin. Panjang garis maksimum ialah 118 simbol untuk monitor dengan resolusi 1024 x 768 piksel.
  2. Pengisytiharan berubah dilakukan pada permulaan program. Adalah disyorkan untuk menulis komen deskriptif bagi setiap pembolehubah; maklumkan secara ringkas maksudnya dan, jika diperlukan, keghairahan penggunaannya.
  3. Setiap pengendali lebih baik diletakkan pada baris berasingan.
  4. Sekiranya terdapat komen dalam satu baris, ia harus bermula dari kedudukan ke-76 (disarankan untuk 17 “monitor dengan resolusi 1024 x 768 piksel). Syarat ini tidak wajib. Sebagai contoh, jika baris kod mengambil 80 jawatan, ia tidak semestinya dibahagikan kepada dua baris, komen boleh dimulakan dari kedudukan 81. Biasanya bahagian kod program mengandungi 50 baris simbol, dan komen rentetan kelihatan seperti lajur teks di sebelah kanan skrin.
  5. Untuk membahagikan serpihan secara logik berasingan, ulasan garis berterusan lebar penuh digunakan (118 simbol).
  6. Apabila pendakap digunakan, indent saiz tabulasi mesti digunakan (biasanya tiga simbol).

Marilah kita melihat bagaimana kod EA boleh dilihat. Dalam kes ini, logik algoritma program tidak dibincangkan. Kami berminat dengan penampilan program. Program komen (EA create.mq4) mungkin mempunyai bentuk berikut.

//-------------------------------------------------------------------- 
// create.mq4 // To be used as an example in MQL4 book. 
//-------------------------------------------------------------------- 
int Count=0;                                 // Global variable 
//-------------------------------------------------------------------- 
int init()                                   // Spec. funct. init()    
{    
Alert ("Funct. init() triggered at start");  // Alert    return;                                      // Exit init()    
} 
//-------------------------------------------------------------------- 
int start()                                  // Spec. funct. start()    
{    
double Price = Bid;                          // Local variable    Count++;                                     // Ticks counter    
Alert("New tick ",Count,"   Price = ",Price); // Alert    return;                                      // Exit start()    
} 
//-------------------------------------------------------------------- 
int deinit()                                  // Spec. funct. deinit()    
{    
Alert ("Funct. deinit() triggered at exit"); // Alert    return;                                      // Exit deinit()    
} 
//--------------------------------------------------------------------

Sangat mudah untuk melihat bahawa blok yang lengkap dan bermakna program dipisahkan oleh komen-berterusan baris. Ini adalah cara untuk melepaskan fungsi khas, fungsi pengguna dan bahagian kepala sesuatu program

.// ———————————————— ——————–

Pembolehubah diisytiharkan dalam blok berasingan di mana setiap pembolehubah diterangkan. Kadang-kadang program mengandungi pembolehubah untuk menggambarkan komentar mana dalam beberapa baris yang harus digunakan. Ini adalah kes yang jarang berlaku, tetapi jika ia berlaku, komen semacam itu mestilah diletakkan; sebaliknya, bukan sahaja pengaturcara lain, tetapi pengarangnya sendiri tidak akan dapat teka-teki keluar selepas seketika.

Bahagian kanan setiap baris kod mengandungi komentar penjelasan. Nilai komen dapat dihargai sepenuhnya jika program tidak mengandungi apa-apa, dan beberapa masalah dengan memahami algoritma berlaku ketika membaca program. Sebagai contoh, jika kod yang sama dibentangkan tanpa komen dan pemisahan blok, ia akan menjadi lebih sukar untuk membacanya, walaupun program ini agak mudah dan ringkas.

int Count=0; 
int init() 
{ 
Alert (Funct. init() triggered at start"); 
return; 
} 
int start() 
{ 
double Price = Bid; 
Count++; 
Alert("New tick ",Count,"   Price = ",Price); 
return; 
} 
int deinit()
{ 
Alert (""Funct. deinit() triggered at exit"); 
return;
}

Penyusunan program

Untuk membuat program boleh digunakan dalam amalan, ia mesti dikumpulkan. Untuk tujuan ini, butang (F5) di MetaEditor hendaklah digunakan. Sekiranya program tidak mengandungi sebarang kesilapan, ia disusun, dan mesej berikut berlaku dalam kotak alat.

Figure 29 Editor message about a successful program compilation.

Juga, apabila sebuah program disusun, fail baru (create.ex4) muncul dalam direktori yang sepadan (dalam kes ini, dalam Terminal_directory \ experts). Program ini sedia untuk beroperasi di terminal pelanggan MetaTrader4. Semasa penyusunan, versi terakhir teks sumber program di bawah nama yang sama (dalam kes kami, ia adalah fail create.mq4) akan disimpan dalam direktori yang sama.

Perkara lain yang berlaku apabila program dikompilkan ialah garis dengan nama EA yang dicipta akan muncul dalam folder EAs tetingkap pelayaran terminal pelanggan.

Figure 30 Displaying the name of an EA in the client terminal navigator window

Jika ralat dikesan dalam program semasa penyusunan, MetaEditor akan menunjukkan mesej ralat yang sepadan. Dalam kes sedemikian, anda harus kembali mengedit teks sumber, membetulkan kesilapan, dan cuba menyusun semula program sekali lagi. Satu kompilasi program yang berjaya adalah mungkin hanya jika tiada kesilapan dalam program ini.

Menggunakan program dalam amalan

Sekiranya program aplikasi (EA, skrip, atau penunjuk) berjaya disusun dan namanya muncul di tetingkap pelayaran terminal pelanggan, ia boleh digunakan dalam amalan. Ia dilakukan dengan menyeret borang ikon yang sesuai dengan tetingkap navigator ke dalam tetingkap keselamatan dengan menggunakan tetikus (“drag & drop” kaedah). Ini bermakna program akan dilampirkan pada carta keselamatan dan bermula untuk pelaksanaan.

EA dan penunjuk akan beroperasi sehingga pengguna menamatkan pelaksanaan program secara manual. Skrip normal akan berhenti beroperasi selepas melaksanakan algoritmanya.

Sebarang program aplikasi (EA, penunjuk, atau skrip) hanya boleh digunakan untuk dagangan sebagai sebahagian daripada Terminal Pelanggan MetaTrader 4 apabila ia disambungkan ke pelayan (pusat perhatian) melalui Internet. Tiada program yang boleh dipasang pada pelayan atau digunakan di terminal pemaju lain.

Dengan kata lain, jika seorang peniaga mahu menggunakan program aplikasi, dia perlu menghidupkan komputer, buka Terminal Pelanggan MetaTrader 4 dan mulakan fail * * .ex4 dalam tetingkap keselamatan. Semasa pelaksanaan program, bergantung kepada algoritmanya, pesanan perdagangan dapat dibentuk dan dikirimkan ke pelayan, dengan demikian menjalankan pengurusan perdagangan.

Leave a Reply

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