Resources | Menggunakan Grafik dan Suara dalam Program MQL4

Penawaran Terbatas! Paket Data 25GB Hanya Rp 90.000
Dapatkan kuota besar 25GB untuk semua nomor AS, Loop, dan simPATI hanya dengan Rp 90.000, berlaku selama 30 hari! Internet lancar tanpa khawatir kehabisan kuota, cocok untuk streaming, gaming, dan browsing sepuasnya!
Aktifkan sekarang dan nikmati kebebasan internet!
Read More Beli PaketProgram 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");