Resources | Menggunakan Grafik dan Suara dalam Program MQL4
Program dalam MQL4 memungkinkan bekerja dengan file suara dan grafik:
PlaySound()
digunakan untuk memutar file suara;ObjectCreate()
memungkinkan pembuatan antarmuka pengguna menggunakan objek grafikOBJ_BITMAP
danOBJ_BITMAP_LABEL
.
PlaySound()
Contoh penggunaan fungsi PlaySound()
:
void OrderSendWithAudio()
{
double price = Ask;
int ticket = OrderSend(Symbol(), OP_BUY, 1, price, 3, 0, 0, "My order", 16384, 0, clrGreen);
if (ticket < 0)
{
Print("OrderSend gagal dengan error #", GetLastError());
PlaySound("timeout.wav");
}
else
{
Print("OrderSend berhasil dilakukan");
PlaySound("Ok.wav");
}
}
File suara Ok.wav
dan timeout.wav
berada di folder terminal_directory\Sounds
. Lokasi folder tersebut dapat diketahui dengan:
string terminal_path = TerminalInfoString(TERMINAL_PATH);
Anda juga bisa memutar file dari subfolder dalam terminal_data_directory\MQL4
. Untuk mengetahui lokasinya:
string terminal_data_path = TerminalInfoString(TERMINAL_DATA_PATH);
Contoh memutar file dari folder Files
:
PlaySound("\\Files\\Demo.wav");
Gunakan backslash ganda "\\"
untuk penulisan path. Untuk menghentikan suara:
PlaySound(NULL);
ObjectCreate()
Contoh Expert Advisor yang membuat label grafis dengan OBJ_BITMAP_LABEL
:
string label_name = "currency_label";
string euro = "\\Images\\euro.bmp";
string dollar = "\\Images\\dollar.bmp";
int OnInit()
{
if (ObjectFind(0, label_name) < 0)
{
bool created = ObjectCreate(0, label_name, OBJ_BITMAP_LABEL, 0, 0, 0);
if (created)
{
ObjectSetInteger(0, label_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, label_name, OBJPROP_XDISTANCE, 100);
ObjectSetInteger(0, label_name, OBJPROP_YDISTANCE, 50);
ResetLastError();
bool set = ObjectSetString(0, label_name, OBJPROP_BMPFILE, 0, euro);
if (!set)
PrintFormat("Gagal memuat gambar dari file %s. Kode error %d", euro, GetLastError());
ResetLastError();
set = ObjectSetString(0, label_name, OBJPROP_BMPFILE, 1, dollar);
if (!set)
PrintFormat("Gagal memuat gambar dari file %s. Kode error %d", dollar, GetLastError());
ChartRedraw(0);
}
else
{
PrintFormat("Gagal membuat objek OBJ_BITMAP_LABEL. Kode error %d", GetLastError());
}
}
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
ObjectDelete(0, label_name);
}
Objek OBJ_BITMAP_LABEL
akan menampilkan dua gambar berbeda tergantung apakah tombol ditekan atau tidak: euro.bmp
atau dollar.bmp
.
Menambahkan Resource ke dalam File EX4 saat Kompilasi
Gunakan direktif #resource
agar file gambar/suara bisa langsung dimasukkan ke dalam file EX4 tanpa harus ditransfer secara terpisah.
#resource path_to_resource_file
File BMP dan WAV akan dikompres otomatis sebelum dimasukkan ke file EX4. Ukuran maksimum file resource: 16 MB.
Pencarian Resource oleh Compiler
Format penulisan:
#resource "<path_to_resource_file>"
- Jika path dimulai dengan backslash: dicari relatif ke
terminal_data_directory\MQL4\
- Jika tidak: dicari relatif ke lokasi file sumber MQL4
Contoh penulisan yang benar dan salah:
// Benar
#resource "\\Images\\euro.bmp"
#resource "picture.bmp"
#resource "Resource\\map.bmp"
// Salah
#resource ":picture_2.bmp"
#resource "..\\picture_3.bmp"
#resource "\\Files\\Images\\Folder_First\\My_panel\\Labels\\too_long_path.bmp"
Penggunaan Resource
Gunakan tanda ::
sebelum nama resource dalam kode.
#resource "\\Images\\euro.bmp" // Nama resource: Images\euro.bmp
#resource "picture.bmp" // Nama resource: picture.bmp
#resource "Resource\\map.bmp" // Nama resource: Resource\map.bmp
#resource "\\Files\\Demo.wav" // Nama resource: Files\Demo.wav
// Menggunakan dalam kode
ObjectSetString(0, bitmap_name, OBJPROP_BMPFILE, 0, "::Images\\euro.bmp");
ObjectSetString(0, my_bitmap, OBJPROP_BMPFILE, 0, "::picture.bmp");
PlaySound("::Files\\Demo.wav");