web statistics


Bagian 8 - Menyusun EA

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

  1. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    gw kasih X karena gw masih blom tau nomer berapa... (sekarang ude dikasih nomer, nomor 8..)
    karena sebelum bab ini, ada 3-4 bagian lagi yang membahas operasi, loop & decision, dan function, dan..... belum inget... =))

    ok, pada dasarnya, sebuah EA yang sederhana/standard (bukan EA yang kompleks seperti neural network, atau yang misalnya terdiri dari beberapa modul yang mengontrol trade sendiri2)... terdiri atas beberapa bagian/struktur.. bagian ini biasanya dibikinkan fungsi tersendiri, agar coding terlihat rapi, sekaligus mempermudah debugging

    bagian2nya :

    1) BuySignal : pada kondisi apa EA buka buy
    2) SellSignal : pada kondisi apa EA buka sel
    3) CloseBuySignal : pada kondisi apa EA nutup posisi buy (yang ini tidak harus ada, karena dapat menggunakan TP/SL sebagai closingnya)
    4) CloseSellSignal : sama seperti CloseBuySignal

    5) MoneyManagement : buat itung lotsize secara otomatis
    6) Trail : buat trailling posisi, klo misalnya diperlukan

    7) Confirmator : kalau misalnya EA cuman trade hari senin-kamis, maka biasanya ditaruh di bagian ini..

    Klo 7 bagian itu sudah ketemu, bikin EA nya jadi lebih gampang

    misalnya begini, gw mau bikin EA yang kayak di http://www.forexindo.com/forum/tutorial-mql4/880-bagian-2-contoh-ea.html

    kalau di breakdown jadi 7 bagian tadi :

    1) BuySignal : kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle sebelumnya
    2) SellSignal : kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
    3) ga ada
    4) ga ada

    5) Lotnya otomatis diitung berdasarkan SL dan persen risiko.
    6) Ga pake trail, jadi ga ada
    7) Posis baru dibuka kalau sedang tidak ada posisi, dan juga tidak trade di hari Jumat (gw tambahi rulenya)

    kira2 source code nya jadi begini

    Code:
    //+------------------------------------------------------------------+
    //|                                                    ContohEA3.mq4 |
    //|                                      Copyright © 2008, Forexindo |
    //|                                         http://www.forexindo.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2008, Forexindo"
    #property link      "http://www.forexindo.com"
    
    extern double RiskPercent=5;
    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 (bolehTrade()) //kalau boleh trade
          {
             if (BuySignal() ) //kalau ada signal buy
             {
                OrderSend(Symbol(),OP_BUY,itungLot(),Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
             }
             else if (SellSignal() ) //kalau ada signal sell
             {
                OrderSend(Symbol(),OP_SELL,itungLot(),Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,txComment,MagicNumber);
             }
             
          } 
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    
    bool BuySignal()
    {
       //kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle sebelumnya 
       if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
       {
          return(true);
       }
       else
       {
          return(false);
       }
    }
    
    bool SellSignal()
    {
       //kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya 
       if (iClose(Symbol(),0,1) < iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
       {
          return(true);
       }
       else
       {
          return(false);
       }
    }
    
    bool bolehTrade()
    {
       //kalau jumat, EA ga trade ; atau kalau ada order terbuka, EA juga ga trade
       if (DayOfWeek()==5 || OrdersTotal()>0) { return (false); } else { return(true); }
    }
    
    double itungLot()
    {
       //ini untuk itung lot secara otomatis berdasarkan SL dan persen risk
       double xLots=0;
       xLots=NormalizeDouble(AccountBalance()*RiskPercent/100 /StopLoss / 10,1);
       return (xLots);
    }
    

    logikanya jadi rapi dan jelas...

    oya, sekilas mengenai operator
    || berarti atau
    && berarti dan
    (nanti akan dijelaskan di bagian tentang operator)
     
  2. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    EA ini kelihatannya simple sekali :-? codingnya paling butuh 5-10 menit doank.... tapi kalau di backtest, profitable lho :D (terlepas dari dradownnya yang gede)...

    [​IMG]

    =)) =)) padahal iseng bikinnya =))
     
  3. nevido

    nevido
    Expand Collapse
    New Member

    Joined:
    Feb 26, 2008
    Messages:
    370
    Likes Received:
    1
    Boss, apakah setiap EA harus selalu pakai init() dan deinit()? dan apakah isi dari function init()/deinit() itu ?
    thankiu.
     
  4. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    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)

    >> http://www.forexindo.com/forum/tutorial-mql4/880-bagian-2-contoh-ea.html
     
  5. antonmpt

    antonmpt
    Expand Collapse
    New Member

    Joined:
    Oct 23, 2008
    Messages:
    16
    Likes Received:
    0
    Looping

    :-@
    Selamat malam Boss .
    1.Saya mau tanya bagaimana cara bikin looping seperti di
    tempatnya FXpro . Sy coba bikin koq belum berhasil ya .
    Looping (0) berati robot jalan 24 jam
    Looping (1) robot cuma jalan 1 x putaran kena TP / SL / TS mana yang lebih dulu
    Looping (2) robot jalan 2 x putaran dan seterusnya . :-@
    2.Kalau menambahkan volality di EA caranya bgm ya bos ?
    maklum baru belajar bikin EA . Lumayan sudah dikit dikit bisa :)

    Terimakasih Boss :)
     
  6. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    ^
    1. ehm... maksudnya looping gimana ya? kurang ngerti...

    2. volatiliti nya yang seperti apa? kriteria yang bagaimana yang disebut volatile ?
     
  7. antonmpt

    antonmpt
    Expand Collapse
    New Member

    Joined:
    Oct 23, 2008
    Messages:
    16
    Likes Received:
    0
    EA

    S lamat siang bos . Kemarin saya coba demo di :-/ ;) salah satu ea ada perintah Looping
    yang dapat mengatur robot berjalan berapa kali putaran . Kalau default jalan 24 jam berari di drag 0 . kalau 1 berati jalan 1 x putaran terus berhenti demikian seterusnya . Perintahnya supaya bisa dibikin seperti diatas bagaimana boss ?
    Sy tidak bisa lihat program C++ nya . :-@ ;)

    apakah Robot bisa dikasih no PIN Password sebelum dijalankan kalau bisa pakai
    perintah bagaimana .?
    terimakasih .
     
  8. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    kayaknya sih pake globalvariable aje....

    bisa sih.... pake jadi dideklarasikan di extern, terus di start tinggal di if aje :-?

    tapi buat ape dikasih pin..
     
  9. 4051fx

    4051fx
    Expand Collapse
    New Member

    Joined:
    Apr 21, 2008
    Messages:
    30
    Likes Received:
    0
    Bos kalo kita mau buat EA berdasarkan custom indikator yang ada mq4 maupun yang tidak ada (ex4) gimana caranya ya? Terus kalo sistem close nya seperti ini jika cross up buy jika cross down close buy, jadi close posisi nya bukan berdasarkan TP tapi berdasarkan sinyal berlawanan yang muncul. Contohkan aja pake EMA 21 dan EMA 8.

    Thanks Bro for the valuable thread ever ;)
     
  10. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    untuk Ea yang pakai custom indi, yang penting adalah ex4 nya, pakai fungsi iCustom()

    kalau misalnya kalau crossdown dia nutup posisi buy, berarti kan kalau ada signalsell, dia tutup posisi buy...

    Code:
    
    else if (SellSignal() ) //kalau ada signal sell
    {
    OrderClose(..............);     
    OrderSend(Symbol(),OP_SELL,itungLot(),Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,txComment,MagicNumber);
    }
    
    ya tinggal ditambahi OrderClose() saja di dalamnya :D
    TP nya di nol kan saja
     

Share This Page