web statistics


Bagian 2 - Contoh EA

Discussion in 'Tutorial MQL4' started by white_tiger, Oct 19, 2008.

  1. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    Bahasan yang pertama, adalah EA (setelah EA, baru kita akan membahas custom indicator dan script).

    Untuk memulai membuat EA, setelah masuk MetaEditor, pilih File -> New -> pilih Expert Advisor, lalu masukkan Copyright dan Link

    lalu anda akan mendapat code kira2 seperti ini :

    Code:
    //+------------------------------------------------------------------+
    //|                                                    ContohEA2.mq4 |
    //|                                      Copyright © 2008, Forexindo |
    //|                                         http://www.forexindo.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2008, Forexindo"
    #property link      "http://www.forexindo.com"
    
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    
    Sedikit penjelasan,

    yang di dalam init() dijalankan 1x saat EA pertama kali di drag ke chart
    yang di dalam deinit() dijalankan 1x saat EA di remove dari chart, atau chart ditutup
    yang di dalam start() dijalankan tiap tick (tiap ada harga baru)

    nah, coba lihat EA super simple berikut ini :

    Code:
    //+------------------------------------------------------------------+
    //|                                                    ContohEA1.mq4 |
    //|                                      Copyright © 2008, Forexindo |
    //|                                         http://www.forexindo.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2008, Forexindo"
    #property link      "http://www.forexindo.com"
    
    extern double Lots=0.1;
    extern int StopLoss=100;
    extern int TakeProfit=150;
    extern string txComment="Order EA1";
    extern int MagicNumber=12345;
    extern int Slippage=5;
    
    
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    //----
          if (OrdersTotal()==0)
          {
             if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
             {
                OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
             }
             else if (iClose(Symbol(),0,1) < iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
             {
                OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,txComment,MagicNumber);
             }
             
          } 
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    
    Logika EA ini, kira2 (misal EA ini diletakkan di chart GBPUSD 1 Hour), Jika tidak ada posisi, jika candle jam lalu closenya diatas EMA 10, maka buy, kalau candle jam lalu closenya dibawah EMA 10, maka sell.

    [​IMG]

    kira2 seperti ini lah...... buy di open candle yang gw kasih panah (karena candle sebelumnya closed di atas EMA) di 1.7366, dan close di 1.7516 (150 pips TP)...

    ehm, spreadnya lupa gw itung =)) harusnya buy nya dapet di harga 1.7369 dan TP nya di 1.7519
    ya tapi intinya kira2 gitu lah :-?

    coba kita telaah satu per satu bagiannya..... penjelasan di topic ini sekilas aja... detailnya nanti akan dijelaskan di masing2 bagian.

    Code:
    extern double Lots=0.1;
    extern int StopLoss=100;
    extern int TakeProfit=150;
    extern string txComment="Order EA1";
    extern int MagicNumber=12345;
    extern int Slippage=5;
    
    [​IMG]

    cukup jelas kan ya :D
    extern intinya supaya variable tersebut bisa diubah2 oleh end user yang tidak memiliki akses ke source code EA.

    Code:
    if (OrdersTotal()==0)
    
    Jika semua order = 0, yang berarti perintah dibawahnya (didalem { } ) akan dieksekusi jika tidak ada order sama sekali.
    yang dianggap order adalah baik posisi terbuka (buy/sell) atau pending order.

    Code:
    if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
    
    iClose() itu fungsi untuk mengambil harga close dari candle (detailnya akan dijelaskan di bagian lain)
    pada syntax ini, berarti dia ngambil harga close dari pair dimana EA di attach, 1 candle sebelom sekarang.

    iMA() itu buat ambil nilai moving average, yang dalam syntax ini brarti EMA periode 10 diitung dari harga close, 1 jam sebelum sekarang (biar waktunya sama ama candle yang dibandingkan)


    Code:
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
    
    OrderSend() digunakan untuk melakukan order, nanti akan dijelaskan di bagian lain, termasuk penggunaan error catch nya supaya tidak terjadi tragedi log file ukurannya bergiga2 =))

    else if dan yang dibawahnya itu sama, cuman tanda nya aja yang dibalik..

    .........

    simple kan ?.. ya simple, lah EA nya juga simple sekali. Ga ada money managementnya, ga ada trailling stop nya, ga ada error catcher nya, dll dll

    tapi ya itu EA paling sederhana, nantinya di bagian2 selanjutnya akan dijelaskan lebih detil mengenai fungsi2nya...
     
  2. imutsakti

    imutsakti
    Expand Collapse
    New Member

    Joined:
    May 8, 2008
    Messages:
    1
    Likes Received:
    0
    Tanya dunk

    Fungsi magic number sama slip page tuch gimana pak ?

    Maaf klo pertanyaannya kurang bermutu, coz saya baru pertama kali belajar tetang MQ4.
     
  3. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
  4. soul-society

    soul-society
    Expand Collapse
    New Member

    Joined:
    Nov 27, 2008
    Messages:
    5
    Likes Received:
    0
    tanya Lagi

    iTu Khan kaLau sistemnya hanya MA saja khan pak.
    kalau kita pakai exponensial Ma + Bolinger bands gimana pak?

    apa kalau stiap Expert iTu sendiri Terdiri dari Ma ( maksudnya setiap EA pasti ada MA nya)


    trims


    Eddie


    :) :) :)
     
  5. triswlaharwtn

    triswlaharwtn
    Expand Collapse
    Banned

    Joined:
    Mar 4, 2009
    Messages:
    117
    Likes Received:
    0
    Saya sudah membaca contohnya Mr. White Tiger, pertanyaannya setelah script tersebut dimasukkan ke dalam MetaEditor, kemudian cara menjalankan atau memasang di MetaTradernya bagaimana Ya...

    Maaf, masih NewBie jadi mohon langkah-langkah yang sedikit detail..

    Terima kasih..
     
  6. piong

    piong
    Expand Collapse
    New Member

    Joined:
    May 1, 2009
    Messages:
    50
    Likes Received:
    0
    pak di lajnutkan lagi

    maaf pak...tiger tolong di lanjutkan lagi..masih belom ngerti...
     
  7. krufos

    krufos
    Expand Collapse
    New Member

    Joined:
    Sep 28, 2009
    Messages:
    2
    Likes Received:
    0
    Saya baru coba EA ini tapi kok ngak jalan ya pak ? ada gambar orang lagi cemberut .... kenapa pak ya ? bagaimana cara menyelesaikan nya ?
    Thanks
     
  8. chandrawg

    chandrawg
    Expand Collapse
    Moderator

    Joined:
    Aug 30, 2008
    Messages:
    577
    Likes Received:
    2
    tidak harus setiap EA ada ma nya.. tergantung dari pembuat EA. hanya saja untuk untuk beberapa indicator standard sudah didefinisikan oleh mql4. indicator tersebut bisa anda cek di sini Technical indicators - MQL4 Documentation

    Secara umum, cara menggunakan Expert Advisor (EA) adalah seperti berikut :

    Copy file EA (mq4 atau ex4) kedalam folder C:\Program Files\MetaTrader - FXOpen\experts. Bila EA yang anda mau gunakan masih dalam bentuk mq4, klik2x file tersebut dan akan muncul program MetaEditor, kemudian tekan tombol compile pada menu MetaEditor Toolbar. Bila description menampilkan pesan 0 error(s), 0 warning(s) berarti EA anda siap untuk digunakan.

    Buka MetaTrader dan kemudian pada Navigator Area klik 2x menu Expert Advisor. Drag and drop EA yang hendak anda gunakan kedalam chart. Nanti akan muncul menu options, didalam menu options pilih menu Allow live trading dan kemudian pilih OK. Klik menu Expert Advisors yang terdapat pada MetaTrader Toolbar untuk mengaktifkan EA yang hendak anda gunakan.

    Drag and drop EA yang hendak anda gunakan kedalam chart. Nanti akan muncul menu options, didalam menu options pilih menu Allow live trading dan kemudian pilih OK. Klik menu Expert Advisors yang terdapat pada MetaTrader Toolbar untuk mengaktifkan EA yang hendak anda gunakan.
     
  9. Xandra

    Xandra
    Expand Collapse
    New Member

    Joined:
    Nov 22, 2009
    Messages:
    35
    Likes Received:
    0



    Mas Tiger,

    mohon dibantu aku pingin Ea buy saja
    kalu sudah seperti ini terus supaya buka OP berikutnya setelah step salah jalan tercapai (maksudnya kalo buy kemudian harga turun akan otomatis OP dengan SL dan TP sesuai seeting diatas ditambahain apa... ? biar EA ini kerjaanya OP sesuai step dan TP SL setting


    extern double Lots=0.1;
    extern int Step=20;
    extern int StopLoss=100;
    extern int TakeProfit=25;
    extern int MagicNumber=12345;
    extern string txComment="Order EA1";
    extern int Slippage=5

    if (OrdersTotal()==0)
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point, ask+TakeProfit*Point,txComment,MagicNumber);
     
    #9 Xandra, Dec 6, 2009
    Last edited: Dec 6, 2009
  10. chandrawg

    chandrawg
    Expand Collapse
    Moderator

    Joined:
    Aug 30, 2008
    Messages:
    577
    Likes Received:
    2
    Maksudnya melakukan hedging ya :-?

    mungkin ditambahi code seperti ini
    Code:
    OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)
    if (OrderType()=0)
       {
       if (Bid<OrderOpenPrice()-Step*Point) OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point, Bid-TakeProfit*Point,txComment,MagicNumber);
       }
    else if (OrderType()=0)
       {
       if (Ask>OrderOpenPrice()+Step*Point) OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point, Ask+TakeProfit*Point,txComment,MagicNumber);
       }
    
     

Share This Page