http://jumforex.blogspot.com/2012/08/belajar-membuat-ea-sederhana-9.html
Di part 8 kita sudah banyak membahas tentang filter penggunaan EA di broker 5 digits
Kali ini kita akan membahas tentang flter lots.
Kegunaannya ini untuk mencegah terjadinya error yang di sebabkan oleh parameter lots yang tidak sesuai
Di pembahasan sebelumnya kita sudah banyak membahas juga tentang penggunaan scrip secara langsung dan juga bisa menggunakn fungsi. Jada pada dasar setiap trader dalam menuangkan kode program itu punya gaya sendiri , dan tidak mesti sama setiap orang .
Nah untuk menambahkan filter lots ini saya akan berbagi script dalam bentuk fungsi yang selama ini saya gunakan, sbb:
double NR(double thelot)
{
double maxlots = MarketInfo(Symbol(), MODE_MAXLOT),
minilot = MarketInfo(Symbol(), MODE_MINLOT),
lstep = MarketInfo(Symbol(), MODE_LOTSTEP);
double lots = lstep * NormalizeDouble(thelot / lstep, 0);
lots = MathMax(MathMin(maxlots, lots), minilot);
return (lots);
}
Penggunaannya bagaimana?
Pada EA yang telah kita buat di part sebelumnya kita ambil bagian yang ada hubungannya dengan pengaturaun lots yaitu Lots dan kita tambahkan menjadi NR(Lots)
Sehingga sebelumnya
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);}
}
Menjadi:
if(Jam_trade()==1){
if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
}
Dari penamahan script diatas maka bila terjadi kekeliruan pengisian parameter lots maka EA tetap akan melakukan eksekuri order dan tidak error.
Bila pengisian lotsnya salah dan terlalu kecil maka EA tetap melakukan order dengan menggunakan lots terkecil yang di ijin ka oleh broker, dan juga bila di gunakan pada penggunaan lots yang salah tetap akan order sesuai kektentuan broker , dengan tambahan filter ini maka akan terhindar dari error yang disebabkan oleh kesaalan penggunaan lots
Kita masukkan ke dalam EA sebelumnya jadinya
//+------------------------------------------------------------------+
//| 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()
{
//----
if(Jam_trade()==1){
if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,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);
}
double NR(double thelot)
{
double maxlots = MarketInfo(Symbol(), MODE_MAXLOT),
minilot = MarketInfo(Symbol(), MODE_MINLOT),
lstep = MarketInfo(Symbol(), MODE_LOTSTEP);
double lots = lstep * NormalizeDouble(thelot / lstep, 0);
lots = MathMax(MathMin(maxlots, lots), minilot);
return (lots);
}
Oke bro sampai di sini dulu ketemu pada part 10 dalam pembahasan yang berbeda
Salam Profit
Kali ini kita akan membahas tentang flter lots.
Kegunaannya ini untuk mencegah terjadinya error yang di sebabkan oleh parameter lots yang tidak sesuai
Di pembahasan sebelumnya kita sudah banyak membahas juga tentang penggunaan scrip secara langsung dan juga bisa menggunakn fungsi. Jada pada dasar setiap trader dalam menuangkan kode program itu punya gaya sendiri , dan tidak mesti sama setiap orang .
Nah untuk menambahkan filter lots ini saya akan berbagi script dalam bentuk fungsi yang selama ini saya gunakan, sbb:
double NR(double thelot)
{
double maxlots = MarketInfo(Symbol(), MODE_MAXLOT),
minilot = MarketInfo(Symbol(), MODE_MINLOT),
lstep = MarketInfo(Symbol(), MODE_LOTSTEP);
double lots = lstep * NormalizeDouble(thelot / lstep, 0);
lots = MathMax(MathMin(maxlots, lots), minilot);
return (lots);
}
Penggunaannya bagaimana?
Pada EA yang telah kita buat di part sebelumnya kita ambil bagian yang ada hubungannya dengan pengaturaun lots yaitu Lots dan kita tambahkan menjadi NR(Lots)
Sehingga sebelumnya
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);}
}
Menjadi:
if(Jam_trade()==1){
if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
}
Dari penamahan script diatas maka bila terjadi kekeliruan pengisian parameter lots maka EA tetap akan melakukan eksekuri order dan tidak error.
Bila pengisian lotsnya salah dan terlalu kecil maka EA tetap melakukan order dengan menggunakan lots terkecil yang di ijin ka oleh broker, dan juga bila di gunakan pada penggunaan lots yang salah tetap akan order sesuai kektentuan broker , dengan tambahan filter ini maka akan terhindar dari error yang disebabkan oleh kesaalan penggunaan lots
Kita masukkan ke dalam EA sebelumnya jadinya
//+------------------------------------------------------------------+
//| 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()
{
//----
if(Jam_trade()==1){
if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,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);
}
double NR(double thelot)
{
double maxlots = MarketInfo(Symbol(), MODE_MAXLOT),
minilot = MarketInfo(Symbol(), MODE_MINLOT),
lstep = MarketInfo(Symbol(), MODE_LOTSTEP);
double lots = lstep * NormalizeDouble(thelot / lstep, 0);
lots = MathMax(MathMin(maxlots, lots), minilot);
return (lots);
}
Oke bro sampai di sini dulu ketemu pada part 10 dalam pembahasan yang berbeda
Salam Profit
Hello Ya'll,
ReplyDeleteI've included a list of the most recommended 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 Indicators Autotrading.
3. Fast FX Profit - Secret Forex Strategy.
Hopefully these lists are helpful to you...
GPS robot [10 times increase of the deposit sum]
ReplyDeleteI just finished a webinar with Mark and his partner, Antony, two days ago and it was AWESOME.
During the webinar MARK and ANTONY shared their secrets to success and answered questions about their new version of the GPS Forex Robot that is coming out TODAY!