Jumat, 29 Agustus 2014

Cara Membuat Expert Advisors bagi pemula

Tutorial membuat Expert Advisors (EA) khusus MT4 bagi pemula.
Langkah-langkah membuat expert advisors:

  • Sebelum membuat expert advisors (EA) sebaiknya strategi manual yang kita pakai sudah teruji menghasilkan profit terlebih dahulu paling tidak selama dua bulan.
  • Apabila sudah teruji menghasilkan profit barulah kita buat expert advisors menggunakan acuan strategi manual tersebut.
  • Sebelumnya kita harus mengenal istilah-istilah dasar yang dipakai dalam MetaEditor seperti di bawah ini : 
extern      : input data bisa dirubah sesuai keinginan pemakai
intern       : input data tidak bisa dirubah pemakai kecuali melalui MetaEditor
double     : tipe data dalam angka decimal seperti 0.1; 0.2 dll
int            : tipe data dalam angka eksak seperti 1; 2; 10; 100; 1000, dll
OnInit      : perintah yang pertama kali dijalankan ketika EA di attach ke MT4
OnDeinit  : perintah yang terakhir kali dilakukan ketika EA dihapus (remove) dari MT4
OnTick    : perintah yang dilakukan ketika EA sudah di attach ke MT4
OnTester : perintah yang dilakukan ketika EA di ujicobakan (belum di attach ke MT4)
Tanda garis miring dua (//) : untuk memberi komentar 1 baris pada script
Tanda garis miring satu dan asterik (/*) : untuk memberi tanda awal komentar beberapa baris pada script
Tanda asterik dan garis miring (*/) : untuk memberi tanda akhir komentar beberapa baris pada script
  1. Untuk membuat expert advisors pertama-tama buka program MT4
  2. Kemudian klik tombol menu MetaEditor yang ada disebelah kanan tombol New Order atau disebelah kiri tombol AutoTrading
  3. Setelah muncul jendela baru MetaEditor
  4. Klik tombol New dibawah menu File
  5. Pilih Expert Advisor (Template)
  6. Klik tombol Next
  7. Beri nama expert advisor dibelakang tulisan Experts\   , beri nama Author dan Link
  8. Klik tombol Next
  9. Kosongkan pilihan pada jendela berikutnya kecuali OnTester dan klik tombol Next
  10. Klik tombol Finish
  11. Akan muncul template seperti di bawah ini //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
      
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
      
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
      
      }
    //+------------------------------------------------------------------+
    //| Tester function                                                  |
    //+------------------------------------------------------------------+
    double OnTester()
      {
    //---
       double ret=0.0;
    //---

    //---
       return(ret);
      }
    //+------------------------------------------------------------------+
  12. Di bawah ini saya berikan contoh kode EA hedging / order buy dan sell bersamaan yang sederhana
  13. Langkah-langkahnya hapus template kode seperti langkah No 11 di atas kemudian ketik kode seperti di bawah ini, setelah selesai klik tombol Compile
//+------------------------------------------------------------------+
//|                                                                                Hedging.mq4 |   //nama EA
//|                                       Copyright 2013,  mukh47.blogspot.com |   //Author
//|                                                          http://mukh47.blogspot.com |  //Link
//+------------------------------------------------------------------+
#property copyright "Copyright 2013,  mukh47.blogspot.com"
#property link      "http://mukh47.blogspot.com"
#include <stdlib.mqh>  
#include <stderror.mqh>
extern double Lots=0.1;        //volume lot yang diinginkan
extern int    Magic=0;           //Magic: magic number / identitas order kita
extern int    Slippage=3;        //Slippage: +- point yang diijinkan dari harga order kita
extern int    starttrade=1;      //jam mulai trading kita (waktu server)
extern int    endtrade=23;     //jam berakhir trading kita (waktu server)
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
if(DayOfWeek()==0 || DayOfWeek()==6) return(0);   //kode untuk sabtu minggu libur tidak trading
//----Cari Order---------------------------
if(OrdersTotal()<1)  //jika tidak ada order
  {
    for(int y=1; y<=OrdersTotal(); y++)         
    {
      if (OrderSelect(y-1,SELECT_BY_POS)==true)
      {
        if(OrderMagicNumber()==Magic)  //jika ada order sesuai identitas magic number kita
        {
          int orderada=1;  //order sesuai magic number kita bernilai benar/ada
        }
      }
    }
  }
//-----------------------------------------------------------------------------------+
// Opening criteria
//-----------------------------------------------------------------------------------+

if ( OrdersTotal()<1 && Hour()>=starttrade && Hour()<=endtrade && orderada!=1) /*contoh kriteria order
Jika total order nol dan jam trading sesuai kriteria dan tidak ada order sesuai magic number kita*/
   {
      int openbuy=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage,0,0,"",Magic,0,Blue) ; /*perintah order buy*/
   if (openbuy <0 )  // jika order buy gagal
      Print ("OrderSend failed with error #", GetLastError());  /* perintah menampilkan penyebab kesalahan/kegagalan order*/
        
      int opensell=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage,0,0,"",Magic,0,Red);  /*perintah order sell */
   if (opensell <0 )  //jika order sell gagal
      Print ("OrderSend failed with error #", GetLastError());  /*perintah menampilkan penyebab kesalahan/kegagalan order*/
       
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+//

Artikel lainnya: 
Cara install metatrader MT4