Selasa, 18 Desember 2012

Belajar Membuat EA Sederhana 5


http://jumforex.blogspot.com/2012/08/belajar-membuat-ea-sederhana-5.html

Untuk mengikuti ini pastikan sudah membaca  part 4 di sini

OKe semuanya
Kalau pada EA yang sudah kita buat pada part 4 bahwa EA sudah bisa digunakan di semua pair dan telah digunakan fliter pair.
Kali ini kita akan menambahkan supaya EA juga bisa melakukan order sell, mengingat pada EA sebelumnya hanya melakukan order buy saja.

Untuk menambahkan Supaya bisa order sell maka yang diperlukan adalah skrip perintah order sell, sbb:

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);

Coba bandingkan dengan perintah order buy!
Ada perbedaan yang perlu diketahui bahwa order buy mengacu pada harga berjalan Ask sedangkan order sell menggunakan  Bid.
Selisih antara Ask dan bid inilah yang sering di sebut dengan spreed

Pada order buy
Ask-SL*Point, 
Ask+TP*Point,

Pada order sell
Bid+SL*Point, 
Bid-TP*Point 

Dan untuk membedakan warna order disini saya gunakan blue untuk buy dan red untuk sell.

Nah sekarang bagaimana untuk memasukkan perintah  order sell?

Pada EA 1 di part 4 bahwa menggunakan filter pair langung, untuk itu sudah disediakan variabel penghitung order sell yaitu Jumlahsell  ,sehingga bisa dibuat kondisi : if(Jumlahsell==0) atau if(Jumlahsell<1)
Jadinya sbb:
if(Jumlahsell==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

Pada EA 2 yang menggunakan filter pair dengan menggunakan fungsi adalah   if(jumlahorder(1)==0) bisa juga  if(jumlahorder(OP_SELL)==0) atau   if(jumlahorder(1)<1), bisa juga   if(jumlahorder(1)<1)

Jadinya sbb: 

if(jumlahorder(OP_SELL)==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
  
 bisa juga digunakan
if(jumlahorder(1)<1){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

 Kemudian kita masukan kedalam EAnya

EA 1 sbb:


//+------------------------------------------------------------------+
//|                                                     Buy Saja.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern string  Nama_EA                 = "Buy dan Sell";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

int Jumlahbuy=0;
  int Jumlahsell=0;
  for(int i=0; i<OrdersTotal(); i++)
  {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      if(OrderType()==OP_BUY)   Jumlahbuy++;
      if(OrderType()==OP_SELL)  Jumlahsell++;
  }

  if(Jumlahbuy==0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); } 
if(Jumlahsell==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

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


Jadi deh silahkan di Compile dulu kalau sukses berari EA sudah bisa Order sell , artnya bila tidak order buy maka akanmmelakukan order buy dan bila tidak ada order sell maka akan melakukan order sell sehingga EA ini akan melakukan hedge (order buy dan sell secara bersamaan)

Mudah kan?

Untuk EA 2 menggunakan filer fungsi sebagai berikut

//+------------------------------------------------------------------+
//|                                                     Buy Saja.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern string  Nama_EA                 = 
"Buy dan Sell";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

  if(jumlahorder(0)==0) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

int jumlahorder( int tipe)
{
int total=0;
for(int i=0; i<OrdersTotal(); i++)
  {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic || OrderType()!=tipe) continue;
     total++;
  }

return(total);
} 

  
Oke silahkan di coba di Compile dulu dan kemudian di Beck test  , dan bila mana berhasil maka EA akan kelihatan melakukan buy dan sell

Kemudaian hal lain yang perlu di ketahui bahwa dalam bahasa program mql4 untuk membuat keterangan yang dimana keterangan tersebut tidak di baca sebaga program biasa nya digunakan tanda  // untuk satu baris tetapi bila terdiri dari banya baris digunakan tanda  /* keterangan  dan diakhiri */ 

Semoga berhasil dan selamat mencoba

Sampai ketemu di part 6 (menambafkan filterWaktu trading) 

Tidak ada komentar:

Posting Komentar