Senin, 24 Desember 2012

Belajar Membuat EA Sederhana 8


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

Pada kesempatan sebelumnya di part 7  talah banyak kita bahas parameter EA sederhana dimana EA yang sudah jadi telah bisa melakukan order buy dan sell (hedge) secara terus menerus ketika type order 0 dan dengan penambahan filter jam trading.

Kelemahan pada EA yang telah kita buat sebelum adalah belum suport untuk broker 5 digits .
Untuk itu kali saya akan tambahkan filter broker 5 digits
 Perbedaan antara broker 4 digits dan 5 digits terletak pada Points

Ada banyak cara untuk membuat EA agar dapat digunakan di broker 5 digits tapi saya akan beri 2 cara sederhana, al:
1. membuat skrip langsung

kita buat deklarasi dulu , mengingat nilai point merupakan bilangan berkoma maka termasuk type data double,
double pt=0; // ini di letakkan di dklarasi.

 kita buat skrip sbb:
   if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;


Maksudnya adalah bila digits=3  atau  digits=5  maka pt = 10 x point  else (artinya bila tidak) maka pt =point
disisipkan di bawah int init()

jadinya

int init()
  {
//----
if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;  
//----
   return(0);
  }

Apa maksudnya di tempat kan disini ?

int init() ini menyimpan data saat EA di attack , sebenarkan tidak mesti harus ditempatkan di dalam init() bisa juga ditempatkan di dalam int start().

Terus apa bedanya bila di tempatkan di init() dan di start()?

Bila di tempatkan di dalam init() maka nilai pt (pont) akan di baca baik di dalam int start() maupun diluar tetapi kalau di tempat kan di int start() maka diluar int start() tidak terbaca.

terus gimana cara merubahnya?

kita lihat bagian EA sebelumnya yang terkait dengan point

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

Ini yang ada point nya kita ganti dengan pt, jadinya <\:

if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*pt, Ask+TP*pt,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*pt, Bid-TP*pt,Nama_EA,Magic,0,Red);}
 }

Sehingga bila kita masukkan kedalam EA 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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
double pt=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

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

int Jam_trade()
{
   bool trade = false;
   if(Mulai_Jam > Akhir_Jam){
     if (Hour() >= Mulai_Jam || Hour() < Akhir_Jam) trade = true;
   } else
     if (Hour() >= Mulai_Jam && Hour() < Akhir_Jam) trade = true;
   
   return (trade);
}

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);
}

2. Dengan menggunakan fungsi

Mengingat point adalah type data bilangan berkoma maka kita mulai dengan double

double dpt()
{
 if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
 return(pt);
}

karena ini fungsi maka di tempatkan di luar int start(), dan untuk penerapannya tinggal poin diganti dangan dpt()

Sehinnga jadinya ESnya 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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
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()
  {
//----

Comment("Mulai_Jam :",Mulai_Jam,"  Akhir_Jam : ", Akhir_Jam, "Sekarang Jam ", Hour()); 

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

{
double pt=0;
 if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
 return(pt);

}



int Jam_trade()
{
   bool trade = false;
   if(Mulai_Jam > Akhir_Jam){
     if (Hour() >= Mulai_Jam || Hour() < Akhir_Jam) trade = true;
   } else
     if (Hour() >= Mulai_Jam && Hour() < Akhir_Jam) trade = true;
   
   return (trade);
}

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);
}

Saya yakin tidak sulit ini tinggal di Compile saja jadi deh

Mudahkan

Kasih komen deh
sampe ktemu di part 9 ya

salam profit

Tidak ada komentar:

Posting Komentar