web statistics


Bagian 7 - Fungsi Order dan Indikator Teknikal

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

  1. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    Fungsi Order dan Analisa Teknikal

    Bagian ini membahas beberapa fungsi yang penting, yang dipakai dalam hampir setiap EA. Sebetulnya fungsi pada MQL 4 itu banyak sekali, tapi mari kita membahas 2 fungsi dasar dulu saja, yaitu fungsi order dan fungsi analisa teknikal.

    1. Fungsi Order

    Fungsi ini pasti ada di semua EA. Gunanya adalah untuk buka, tutup, atau ubah posisi (sebetulnya fungsinya banyak sih)...

    lebih lengkapnya ada di help nya MQL4, di bagian "Trading Functions"

    disini kita bahas beberapa aja (sisanya bisa dibaca sendiri), kan yang penting ngerti gimana cara baca & pakainya

    OrderSend() : untuk membuka order

    Code:
    int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) 
     
    
    contoh, untuk buka buy 1 lot, tanpa tp dan sl :

    Code:
    OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order #1",1,0,Green);
    
    
    symbol itu diisi Symbol() jika mau yang diorderkan sama dengan chart dimana EA jalan.. kalau misalnya mau order pair tertentu, ya tulis aja "GBPUSD" atau "EURUSD" misalnya...

    cmd itu ada 6 : OP_BUY, OP_SELL, OP_SELLSTOP, OP_SELLLIMIT, OP_BUYLIMIT, OP_BUYSTOP

    volume itu jumlah lotnya

    price, kalau buy, pastikan pricenya Ask, kalau sell, pricenya Bid. Kalau ga ntar error.

    slippage itu isi aja 0-5 pip, biar ga kena requote. Tapi tergantung strateginya juga, kalau TP cuman 3 pip ya otomatis slippagenya jangan besar2...

    stoploss = harga stoploss (bukan pips SL)...
    takeprofit = harga takeprofitnya
    comment = terserah mau diisi apa..... cuman keterangan aja untuk user
    magic = magic ini magicnumber, gunanya untuk mengidentifikasi posisi. Misalnya saja, EA hanya di program untuk memanage order dengan magic number tertentu, maka EA tersebut ga akan modify/close order manual u (karena order manual tidak ada magic number)
    expiration = khusus untuk pending order
    color = warna tanda di chartnya

    fungsi OrderSend() ini akan mengembalikan nilai -1 kalau ordernya gagal, klo ordernya berhasil, maka akan mengembalikan nomor ordernya
    untuk mengetahui gagal ordernya karena apa, bisa pake fungsi getLastError()

    contohnya begini :

    Code:
      
    int ticket;
      if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
        {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green);
         if(ticket<0)
           {
            Print("OrderSend failed with error #",GetLastError());
            return(0);
           }
        }
    
    
    nomor kode error nya bisa diliat di help nya, di MQL4 Reference -> Standard constants -> Error codes

    nah, setelah order dibuka, order juga bisa di modify (diubah SL/TP nya) dengan fungsi OrderModify()

    Code:
    bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE) 
     
    
    OrderModify() ini akan bernilai true jika modifikasinya berhasil, dan false jika modifikasinya gagal...

    contoh :

    Code:
     if(TrailingStop>0)
        {
         OrderSelect(12345,SELECT_BY_TICKET);
         if(Bid-OrderOpenPrice()>Point*TrailingStop)
           {
            if(OrderStopLoss()<Bid-Point*TrailingStop)
              {
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
               return(0);
              }
           }
        }
    
    
    oya, ada 1 function lagi yang penting, yaitu OrderSelect()
    OrderSelect() ini gunanya untuk memilih order yang akan dimodifikasi/diclose


    Code:
    bool OrderSelect( int index, int select, int pool=MODE_TRADES) 
    
    OrderSelect() ini bisa digunakan untuk memilih (men-select - bahasa indo yang tepat apa ya? ) order baik yang sudah tertutup, lagi terbuka, atau masih pending (limit/stop order)..

    index = adalah index order (0,1,2,3,dst) pada mode SELECT_BY_POS ; atau nomor ticket pada mode SELECT_BY_TICKET
    select = ya itu tipe select nya, bisa SELECT_BY_POS (memilih berdasarkan posisi, kalau ga tau nomor ticketnya, pakai yang ini), atau SELECT_BY_TICKET (kalau uda tau nomor ticketnya pake yang ini)...

    pool = MODE_TRADES itu untuk milih order yang aktif (limit/stop order/order yang masih kebuka), MODE_HISTORY untuk memilih order yang udah ditutup/dihapus.

    contoh :

    Code:
    if(OrderSelect(12470, SELECT_BY_TICKET)==true)
        {
         Print("order #12470 open price is ", OrderOpenPrice());
         Print("order #12470 close price is ", OrderClosePrice());
        }
      else
        Print("OrderSelect returned the error of ",GetLastError());
    
    
    oya, setelah di-select, kita bisa pakai fungsi2 untuk mengetahui informasi mengenai order tersebut, seperti jumlah lot, SL, TP, Symbol, dll

    fungsi2nya antara laen :

    OrderLots() = mengetahui jumlah lot
    OrderTakeProfit() = mengetahui TP
    OrderStopLoss() = mengetahui SL
    OrderSymbol() = mengetahui pair nya

    ...lengkapnya langsung aje cek di MQL4 Reference -> Trading functions ; kalau kurang jelas tentang cara pakainya, bisa di post di topic ini...

    ------

    ok, order udah bisa di modify, bisa di select, sekarang saatnya untuk menutup order atau menghapus pending order yang tidak jadi

    untuk menutup posisi yang kebuka, pakai OrderClose() (atau OrderCloseBy() kalau hedging)

    untuk menghapus pending order, pakai OrderDelete()

    Code:
    bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE) 
     
    
    ticket = nomor ticket
    lots = jumlah lot yang ditutup.. kalau misalnya mau ditutup semua ya isi aja OrderLots()
    price = kalau mau nutup sell, pakai harga Ask, kalau mau nutup buy, ketik Bid
    slippage = isi 0-5 sesuai keinginan...
    color = warna tanda di chartnya..

    sama seperti OrderModify(), OrderClose() ini akan bernilai True kalau berhasil nutup, dan bernilai false kalau gagal nutup posisi

    untuk OrderDelete(), jauh lebih simple dari OrderClose()

    Code:
    bool OrderDelete( int ticket, color Color=CLR_NONE) 
    
    
    contoh :

    Code:
    if(Ask>var1)
        {
         OrderDelete(order_ticket);
         return(0);
        }
    
    

    4 fungsi tadi adalah fungsi2 dasar untuk trade.... nah selanjutnya, kita akan bahas fungsi2 untuk membaca nilai dari indikator teknikal seperti Moving Average, MACD, dll

    setelah pembahasan fungsi indikator teknikal ini, harusnya sudah bisa bikin EA yang sederhana (untuk latihan...... :D )
     
  2. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    2. Fungsi Indikator Teknikal

    Di help mql4, bisa di cek di MQL4 Reference - Technical indicators

    [​IMG]

    gw kasih contoh moving average aja...

    functionnya iMA()

    Code:
    double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) 
     
    
    misalnya sesuai gambar diatas, rulenya kalau close candle sebelomnya diatas EMA 144, gw buka buy...

    Code:
    
    
       //pertama musti siapin variabel
       double ma1=0;
    
       ma1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
       if (iClose(Symbol(),0,1)>ma1)
       {
          //open buy......
       }
    
    
    untuk ma_method, itu ada 4 (bisa di klik sih di help nya), ada MODE_SMA, MODE_EMA, MODE_SMMA, MODE_LWMA
    untuk applied_price, itu ada 7, klik aja di link helpnya untuk detailnya (daripada gw tulis lagi...)

    contoh laen, strategi paling populer sepanjang masa, MA cross :D

    kalau EMA 10 motong EMA 20 dari atas, open sell

    klo diterjemahin ke perintah2 komputer, kira2 kayak gini
    1) cek EMA 10 dan 20 pada candle 2 sebelom sekarang
    2) cek EMA 10 dan 20 pada candle 1 sebelom sekarang
    3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada candle 1, berarti terjadi cross

    ya tinggal di coding aje....

    Code:
    
       double ma10_1, ma20_1, ma10_2, ma20_2=0;
    
       //1) cek EMA 10 dan 20 pada candle 2 sebelom sekarang
       ma10_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
       ma20_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
       
       //2) cek EMA 10 dan 20 pada candle 1 sebelom sekarang
       ma10_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
       ma20_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
       
       //3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada candle 1, berarti terjadi cross   
       
       if ( ma10_2 > ma20_2 && ma10_1 < ma20_1 )
       {
          //open sell......
       }
    
    
    kurang canggih.... mau dikasih filter RSI buat detek overbought (supaya lebih klop)...

    Code:
    
       double ma10_1, ma20_1, ma10_2, ma20_2=0;
       double rsi1=0;
    
       //1) cek EMA 10 dan 20 pada candle 2 sebelom sekarang
       ma10_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
       ma20_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
       
       //2) cek EMA 10 dan 20 pada candle 1 sebelom sekarang
       ma10_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
       ma20_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
       
       rsi1=iRSI(Symbol(),0,14,PRICE_CLOSE,1);
       //3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada candle 1, berarti terjadi cross   
       
       if ( ma10_2 > ma20_2 && ma10_1 < ma20_1 && rsi1 > 70 )
       {
          //open sell......
       }
    
    
    gampang kan :D

    untuk indikator2 laen seperti macd, par-sar, sto, envelope, dll bisa dibaca sendiri di referencenya....

    bahasan selanjutnya adalah membuat EA sederhana yang komplit (bisa dicompile & bisa jalan) (tapi ga tau profitable atau ga...)
     
  3. chef joy karachef

    chef joy karachef
    Expand Collapse
    New Member

    Joined:
    Apr 8, 2008
    Messages:
    196
    Likes Received:
    1
    Bos kalau inchimoku bisa bikin eanya nggak?atau yang lebih simple cuma patokan kumonya aja kalau price keluar kumo entry,thanks bos mantap tutorialnya;)
     
  4. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    bisa

    pakai fungsi
    Code:
    double iIchimoku( string symbol, int timeframe, int tenkan_sen, int kijun_sen, int senkou_span_b, int mode, int shift) 
    
    
    mode nya itu yang dipilih..... kumo itu yang mana ya?

    daftar pilihan mode :
    Code:
    MODE_TENKANSEN -> Tenkan-sen. 
    MODE_KIJUNSEN -> Kijun-sen. 
    MODE_SENKOUSPANA -> Senkou Span A. 
    MODE_SENKOUSPANB -> Senkou Span B. 
    MODE_CHINKOUSPAN -> Chinkou Span. 
    
    
     
  5. chef joy karachef

    chef joy karachef
    Expand Collapse
    New Member

    Joined:
    Apr 8, 2008
    Messages:
    196
    Likes Received:
    1
    thanks bos ntar mau nyoba:D kumo itu area antara senkou span a sama senkou b
     
  6. antonmpt

    antonmpt
    Expand Collapse
    New Member

    Joined:
    Oct 23, 2008
    Messages:
    16
    Likes Received:
    0
    E A

    Pagi Boss
    :-@
    1.Bagaimana cara Perintah E A agar kalau sudah T P kena atau T S kena tidak Open Posisi lagi . Karena saya Punya Robot kalau sudah kena T P atau T S apabila Indicator sesuai Perintah pasti Open lagi . Jadi Posisi ke 2 tidak Profit karena sudah range nya lebar malah bisa loss .
    dengan kata lain 1 hari untuk 1 pair cuma bikin 1 Posisi . Tolong Dijabarkan Bos .
    2.Kalau menjalankan lima chart pair original EURO/GBP/JPY/SWIS/AUSI secara sama sama . dengan seluruh windows ditampilkan apakah kerja E A masih bisa
    normal Boss .
    Tks Tolong Dijabarkan .
     
  7. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    1. bisa sih pakai global variable

    setelah EA sukses order, tulis ini
    Code:
    GlobalVariableSet("haritradeterakhir",DayOfWeek());
    
    fungsinya untuk inform hari terakhir trade ke global variabel
    global variabel ini tidak hilang walau EA di stop, atau bahkan MT ditutup...
    nanti di bagian selanjutnya kita bahas lebih dalam :D

    sebelum EA order, juga dikasih ini :

    Code:
    if ( GlobalVariableGet("haritradeterakhir") != DayOfWeek() ) { ....... 
    
    jadi kalau hari nya masih sama dengan yang tersimpan di global variable, maka dia ga open posisi lagi

    di bagian init juga perlu dikasih ini :

    Code:
    if (GlobalVariableCheck("haritradeterakhir")) { GlobalVariableSet("haritradeterakhir,0); }
    
    2. Asal dikasih magic number, normal kok.
     
  8. antonmpt

    antonmpt
    Expand Collapse
    New Member

    Joined:
    Oct 23, 2008
    Messages:
    16
    Likes Received:
    0
    E A

    Selamat Pagi Boss:)

    Bagaimana Cara memasukan Costum Indicator ya ke E A .
    Saya akan memasukan beberapa custom Indicator tetapi agak kesulitan ,
    Tolong di bantu boss .:-@

    Terimakasih .
     
  9. white_tiger

    white_tiger
    Expand Collapse
    Administrator
    Staff Member

    Joined:
    Jun 13, 2007
    Messages:
    1,501
    Likes Received:
    4
    pakai iCustom()
    output dari custom indikatornya harus dipelajari dulu, terutama indicator yang bar warna warni yang biasanya biru = buy, red = sell... biasanya outputnya agak berbeda...
     
  10. joesoefkalla

    joesoefkalla
    Expand Collapse
    New Member

    Joined:
    Oct 27, 2008
    Messages:
    390
    Likes Received:
    0
    g rasa salah satu EA yg pakai function ini adalah si Bogie,
    karena dia pake indikator tambahan... (correct me if i'm wrong)

    bro kucing putih, tau EA lain yang pake Custom Indicator gak selain si Bogie itu? thanks...



    (btw, ada yg punya EA yg Neural-Network based gak selain Bogie NN?)
     

Share This Page