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
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
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);
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
Hey Everyone,
ReplyDeleteI've attached a list of the highest ranking forex brokers:
1. Best Forex Broker
2. eToro - $50 min. deposit.
Here is a list of the best forex instruments:
1. ForexTrendy - Recommended Probability Software.
2. EA Builder - Custom Strategies Autotrading.
3. Fast FX Profit - Secret Forex Strategy.
I hope you find these lists beneficial.