http://www.forexindo.com/forum/tutorial-mql4/912-bagian-7-fungsi-order-dan-indikator-teknikal.html
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
contoh, untuk buka buy 1 lot, tanpa tp dan sl :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)
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...Code:OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order #1",1,0,Green);
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 :
nomor kode error nya bisa diliat di help nya, di MQL4 Reference -> Standard constants -> Error codesCode: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); } }
nah, setelah order dibuka, order juga bisa di modify (diubah SL/TP nya) dengan fungsi OrderModify()
OrderModify() ini akan bernilai true jika modifikasinya berhasil, dan false jika modifikasinya gagal...Code:bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
contoh :
oya, ada 1 function lagi yang penting, yaitu OrderSelect()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); } } }
OrderSelect() ini gunanya untuk memilih order yang akan dimodifikasi/diclose
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)..Code:bool OrderSelect( int index, int select, int pool=MODE_TRADES)
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 :
oya, setelah di-select, kita bisa pakai fungsi2 untuk mengetahui informasi mengenai order tersebut, seperti jumlah lot, SL, TP, Symbol, dllCode: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());
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()
ticket = nomor ticketCode:bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
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()
contoh :Code:bool OrderDelete( int ticket, color Color=CLR_NONE)
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...... )
2. Fungsi Indikator Teknikal
Di help mql4, bisa di cek di MQL4 Reference - Technical indicators
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)
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 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
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...... }
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...... }
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...)
ForexTrendy is an advanced program capable of determining the safest continuation chart patterns. It scans through all the charts, on all time frames and analyzes every possible breakout.
ReplyDelete