Belajar MQ4
Halo rekan-rekan sekalian.
Saya buka thread ini dengan tujuan belajar bersama-sama tentang MQ4.
Saling mengisi dan saling diisi, sehingga dapat bersama-sama maju.
Saya belajar MQ4 secara mandiri, tapi masih sedikit yang saya bisa dan banyak hal yang belum bisa saya pahami.
Semoga, sharing rekan-rekan disini merupakan pembelajaran bersama yang baik dan bermanfaat.
---
Ada hal yang membuat saya penasaran, yaitu "bagaimana cara mengetahui konnversi dari pip (atau point) menjadi deposit currency melalui EA".
Sebagai contoh:
Terdapat broker yang menerapkan cent account.
Lot terkecil yang diijinkan sebesar 0.01.
Dari pengamatan, pada currency pair EURUSD, dengan 0.01 lot, 1 pip = 1 cent = 0.01 dollar.
Saat kita (manusia) melihat, maka dapat diputuskan seperti contoh diatas.
Tapi bagaimana suatu EA bisa melakukan konversi tersebut?
Terima kasih.
======================================================================
Belajar MQ4 #1 - Jenis Program
Sumber: Dokumentasi MetaEditor
Terdapat 4 jenis program pada MQL4, yaitu:
1. Expert Advisor
2. Custom Indicator
3. Script
4. Library
5. Included File
Expert Advisor (EA)
-------------------
Program yang mempunyai kemampuan untuk menganalisa suatu chart dan mengeksekusi transaksi.
EA mempunyai siklus: init - start - deinit.
init
Dieksekusi saat: EA di-compile, EA di-attach ke chart, terjadi perubahan timeframe, terjadi perubahan user, atau MetaTrader di-restart.
start
Dieksekusi setiap kali terjadi perubahan tick pada chart.
start merupakan bagian utama dari EA, bagaimana EA akan bertindak, semuanya terdapat di dalam start.
Terkadang terjadi perbedaan kecepatan antara waktu eksekusi start dengan waktu perubahan tick, terutama pada komputer yang kemampuan komputasinya rendah.
Jika perbedaan ini terjadi, maka eksekusi start akan dilanjutkan sampai selesai walaupun telah terjadi perubahan tick.
Eksekusi start pada perubahan tick berikutnya akan terjadi jika eksekusi yang sebelumnya telah selesai tuntas.
deinit
Dieksekusi saat: EA di-compile, EA di-remove dari chart, terjadi perubahan timeframe, terjadi perubahan user, atau MetaTrader di-restart.
Custom Indicator (CI)
---------------------
Program yang mempunyai kemampuan menganalisa suatu chart tetapi tidak dapat mengeksekusi transaksi.
CI mempunyai siklus: init - start - deinit
Script
------
Berbeda dengan EA, script tidak dieksekusi saat terjadi perubahan tick, tetapi oleh permintaan langsung dari user.
Script hanya memiliki start saja.
Library
-------
Program yang merupakan himpunan dari function-function.
Library tidak dapat bekerja secara otomatis.
Library digunakan dengan cara di-attach-kan ke dalam program lain (EA, CI)
Included File (IF)
------------------
Program yang berisi himpunan function-function, tetapi lebih mengarah pada content berupa text.
Penggunaan IF lebih ringan dibanding Library.
Dapat digunakan oleh EA, CI, Script, dan Library.
=====================================================================
Belajar MQ4 #2 - MQ4 vs C
Sumber: Dokumentasi MetaEditor
Rekan-rekan yang berkecimpung di dunia programming, terutama yang menggunakan Bahasa C/C++, tentunya tidak asing dengan MQ4.
Ya, betul, karena MQ4 merupakan bahasa yang menggunakan dasar Bahasa C.
Tetapi tidak semua reserved word, operator, dan tata cara Bahasa C ada pada MQ4.
Yang tidak ada pada MQ4 adalah:
1. no address arithmetic;
Saya belum tahu persis apa maksudnya point yang satu ini, tapi dugaan saya adalah tidak ada penggunaan pointer pada MQ4.
2. no operator do ... while;
Yang ini saya pernah mengalami, waktu saya menggunakan do ... while dan di-compile langsung dapat error.
Ternyata MQ4 hanya mengenali while, tetapi tidak mengenali do.
do dianggap sebagai variabel yang tidak/belum dideklarasikan.
Sehingga struktur perulangan yang bisa digunakan hanya while dan for saja.
3. no operator goto ...;
Rupanya MQ4 sudah menerapkan "Pemrograman Terstruktur" jadi tidak lagi menggunakan goto.
Semua alur program harus diatur menurut kaidah "Terstruktur".
4. no operation of [condition]?[expression 1]:[expression 2];
Operator kondisi cepat juga tidak lagi ada.
Padahal menyenangkan juga menggunakan operator yang satu ini.
Code:
if (hujan) berenang; else berlari; ... sama dengan ... hujan ? berenang : berlari;
Terkadang tanpa ada structure, pengaturan struktur data menjadi rumit, karena tidak bisa membuat array of structure.
Tetapi masih dapat dipecahkan dengan menggunakan multiple-array.
Code:
struct abc { int a, b, c; }; abc data[10]; ... sama dengan ... int a[10], b[10], c[10];
======================================================================
Belajar MQ4 #3 - Switch
Saya tertarik untuk membahas perintah switch karena pernah mengalami error saat menggunakannya.
Kesalahan yang pernah saya lakukan adalah:
Code:
int _buy = OP_BUY; int sell = OP_SELL; switch(OrderType()) { case _buy: total_buy++; break; case _sell: total_sell++; break; }
Akhirnya diubah seperti ini baru error mau hilang:
Code:
switch(OrderType()) { case OP_BUY: total_buy++; break; case OP_SELL: total_sell++; break; }
Jika menggunakan if, maka tidak akan ada error, seperti berikut:
Code:
int _buy = OP_BUY; int sell = OP_SELL; if(OrderType() == _buy) total_buy++; else if(OrderType() == _sell) total_sell++;
Jelas tidak, masing-masing mempunyai kekuatan dan kecocokan pada suatu masalah.
switch
Sangat membantu saat menghadapi pilihan yang sifatnya seragam.
Misalnya, sebuah hari, jika sudah dinyatakan Senin, pasti tidak bisa dinyatakan hari yang lain.
Sebuah order, jika sudah bertipe OP_BUY, pasti pada saat yang sama bertype yang lain.
Dari sisi estetika, barangkali switch lebih "indah" dibanding if.
if
Sangat leluasa untuk segala jenis kondisi.
Penyusun kondisi tidak harus operand bertype integer seperti pada switch.
Mereka berdua, switch dan if, akan sangat baik bila disinergikan.
Karena, tidak semua switch bisa dilakukan secara mudah dengan if.
Sebaliknya, tidak semua if bisa dilakukan dengan switch.
======================================================================
No comments:
Post a Comment