Teman-teman trader.
Di PM, saya menerima pesan dan pertanyaan-pertanyaan seputar Thread ini. Kesan saya, ternyata teman-teman masih malu-malu memperlihatkan codingnya di sini, walaupun saya lihat sudah bagus. Sebagian lain ternyata masih banyak yang kebingungan mengenai coding EA. Jadi tampaknya saya akan mengulang satu kasus lagi supaya jelas langkah-langkah membuat EA sederhana dari dasar.
Namanya Studi Kasus, kita tidak mengambil contoh dari kasus khayalan. Tapi kita benar-benar mencari satu strategi trading yang ada di forum, dan kita buatkan EA-nya. Kita percaya bahwa strategi yang diposting di forum sudah menghasilkan profit bagi TS-nya. Dan kalau EA sudah jadi, kita bisa konsultasikan ke pencipta sistem untuk mencari cara bagaimana EA-nya bisa profit.
Kita coba melihat strategi trading yang ada di sub forum ini :
http://indo.mt5.com/showthread.php?2...rading-Scalper
Spoiler:
Di atas, kita lihat bahwa indikator yang digunakan hanya 3 Moving Average. Jadi cukup mudah untuk dibuatkan EA-nya.
Coba diingat-ingat lagi, apa yang harus kita lakukan pertama kali ?
Benar, kita membuat template dari indikator-indikator di atas. Jadi kita pasang 3 indikator Moving Average itu di chart, dan kita simpan dalam template. Saya namakan saja EAScalper, dan nanti EA-nya kita namakan EA Scalper.
Spoiler:
Sebelum dilanjutkan, mohon dibaca pembahasan di halaman depan. Nanti kita lanjutkan lagi ya, break sebentar.
Last edited by DwiM; 11-27-2010 at 06:28 PM.
=============================================
Baik, kita lanjutkan teman-teman.
Coding dulu parameter-parameter yang standar, seperti TakeProfit, StopLoss, dan lain-lain. Masukkan juga parameter untuk indikator yang sudah diketahui yaitu MA1Periode, MA2Periode dan MA3Periode.
Code:
//+------------------------------------------------------------------+
//| EAScalper.mq4 |
//| Dwi M ea@dwim.web.id |
//| http://ea.dwim.web.id |
//+------------------------------------------------------------------+
#property copyright "Dwi M ea@dwim.web.id"
#property link "http://ea.dwim.web.id"
extern int TakeProfit = 10;
extern int StopLoss = 20;
extern int Slippage = 3;
extern int Lots = 1.0;
extern int MA1Periode = 10;
extern int MA2Periode = 20;
extern int MA3Periode = 30;
double dPoint; //untuk setting Broker 5 Digits
Di depan kita sudah belajar bagaimana menangani broker 5 Digits. Agar coding menjadi singkat, saya memasukkan ke bagianInit(). Bagian Init() hanya dijalankan satu kali ketika EA di drag ke chart. Ini lebih baik daripada dimasukkan ke Start() yang dijalankan berkali-kali setiap ada tick.
Code:
int init()
{
//----
/* Bila chartnya adalah broker 5 Digit maka Point dikali 10 */
if (Digits==3 || Digits==5)
{
dPoint=Point*10;
}
else
{
dPoint=Point;
}
//----
return(0);
}
Di dalam Start(), kita masukkan indikator-indikator yang diketahui. Coba pelajari function 3 Indikator MA di bawah ini:
Code:
double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before;
/* Cari nilai MA saat ini */
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,0);
/* Cari nilai MA satu candle sebelumnya */
dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,1);
Terakhir, kita masukkan function logic Konsep Trading, yang dilanjutkan dengan function OrderSend untuk buy dan sell. Codingnya seperti di bawah ini. Jangan lupa, supaya kita membatasi dalam satu saat hanya ada satu OP saja, kita gunakanif(OrdersTotal()<1)
Code:
if(OrdersTotal()<1)
{
if (AccountFreeMargin()<1000*Lots)
{ Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);}
if ((dMA1now > dMA2now) && (dMA1before < dMA2before))
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0);
}
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0);
}
}
OK, Coding dasar sudah dimasukkan. Kita bisa test dulu di strategy tester sebelum dioprek mencari settingan yang tepat.
Spoiler:
Menurut saya coding EA ini sudah cukup sampai disini. Simpel saja. Tidak pakai trailing stop. Sebab ini model EA Scalper yang mencari 10 pip tiap OP. Kalau target TP-nya 30 pip ke atas, akan saya tambahkan locking dan trailing stop.
Ini saya kutipkan keseluruhan coding EA ini. Silakan ditest :
Code:
//+------------------------------------------------------------------+
//| EAScalper.mq4 |
//| Dwi M ea@dwim.web.id |
//| http://ea.dwim.web.id |
//+------------------------------------------------------------------+
#property copyright "Dwi M ea@dwim.web.id"
#property link "http://ea.dwim.web.id"
extern int TakeProfit = 10;
extern int StopLoss = 20;
extern int Slippage = 3;
extern int Lots = 1.0;
extern int MA1Periode = 10;
extern int MA2Periode = 20;
extern int MA3Periode = 30;
double dPoint; //untuk setting Broker 5 Digits
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
/* Bila chartnya adalah broker 5 Digit maka Point dikali 10 */
if (Digits==3 || Digits==5)
{
dPoint=Point*10;
}
else
{
dPoint=Point;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before;
/* Cari nilai MA saat ini */
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,0);
/* Cari nilai MA satu candle sebelumnya */
dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,1);
if(OrdersTotal()<1)
{
if (AccountFreeMargin()<1000*Lots)
{ Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);}
if ((dMA1now > dMA2now) && (dMA1before < dMA2before))
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0);
}
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Baik, semoga pengulangan kasus ini bisa menambah kejelasan. Jika ada pertanyaan silakan diposting disini, akan kita bantu sama-sama.
Jika sudah lebih percaya diri, silakan pecahkan kasus yang saya ajukan di halaman-halaman depan. Kita berlatih EA sama-sama disini.
Salam profit
=================================================
Kita lihat function Moving Average ini :
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLO SE,0);
Kalau mau jadi EMA ya diganti saja parameternya jadi :
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_EMA,PRICE_CLO SE,0);
Itu ada di manual dalam Meta Editor kok hehehehe
=====================================================
Teman-teman trader.
Di PM, saya menerima pesan dan pertanyaan-pertanyaan seputar Thread ini. Kesan saya, ternyata teman-teman masih malu-malu memperlihatkan codingnya di sini, walaupun saya lihat sudah bagus. Sebagian lain ternyata masih banyak yang kebingungan mengenai coding EA. Jadi tampaknya saya akan mengulang satu kasus lagi supaya jelas langkah-langkah membuat EA sederhana dari dasar.
Namanya Studi Kasus, kita tidak mengambil contoh dari kasus khayalan. Tapi kita benar-benar mencari satu strategi trading yang ada di forum, dan kita buatkan EA-nya. Kita percaya bahwa strategi yang diposting di forum sudah menghasilkan profit bagi TS-nya. Dan kalau EA sudah jadi, kita bisa konsultasikan ke pencipta sistem untuk mencari cara bagaimana EA-nya bisa profit.
Kita coba melihat strategi trading yang ada di sub forum ini :
http://indo.mt5.com/showthread.php?2...rading-Scalper
Spoiler:
Di atas, kita lihat bahwa indikator yang digunakan hanya 3 Moving Average. Jadi cukup mudah untuk dibuatkan EA-nya.
Coba diingat-ingat lagi, apa yang harus kita lakukan pertama kali ?
Benar, kita membuat template dari indikator-indikator di atas. Jadi kita pasang 3 indikator Moving Average itu di chart, dan kita simpan dalam template. Saya namakan saja EAScalper, dan nanti EA-nya kita namakan EA Scalper.
Spoiler:
Sebelum dilanjutkan, mohon dibaca pembahasan di halaman depan. Nanti kita lanjutkan lagi ya, break sebentar.
Last edited by DwiM; 11-27-2010 at 06:28 PM.
=============================================
Baik, kita lanjutkan teman-teman.
Coding dulu parameter-parameter yang standar, seperti TakeProfit, StopLoss, dan lain-lain. Masukkan juga parameter untuk indikator yang sudah diketahui yaitu MA1Periode, MA2Periode dan MA3Periode.
Code:
//+------------------------------------------------------------------+ //| EAScalper.mq4 | //| Dwi M ea@dwim.web.id | //| http://ea.dwim.web.id | //+------------------------------------------------------------------+ #property copyright "Dwi M ea@dwim.web.id" #property link "http://ea.dwim.web.id" extern int TakeProfit = 10; extern int StopLoss = 20; extern int Slippage = 3; extern int Lots = 1.0; extern int MA1Periode = 10; extern int MA2Periode = 20; extern int MA3Periode = 30; double dPoint; //untuk setting Broker 5 Digits
Code:
int init() { //---- /* Bila chartnya adalah broker 5 Digit maka Point dikali 10 */ if (Digits==3 || Digits==5) { dPoint=Point*10; } else { dPoint=Point; } //---- return(0); }
Code:
double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before; /* Cari nilai MA saat ini */ dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,0); dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,0); dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,0); /* Cari nilai MA satu candle sebelumnya */ dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,1); dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,1); dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,1);
Code:
if(OrdersTotal()<1) { if (AccountFreeMargin()<1000*Lots) { Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);} if ((dMA1now > dMA2now) && (dMA1before < dMA2before)) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0); } else if ((dMA1now < dMA2now) && (dMA1before > dMA2before)) { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0); } }
Spoiler:
Menurut saya coding EA ini sudah cukup sampai disini. Simpel saja. Tidak pakai trailing stop. Sebab ini model EA Scalper yang mencari 10 pip tiap OP. Kalau target TP-nya 30 pip ke atas, akan saya tambahkan locking dan trailing stop.
Ini saya kutipkan keseluruhan coding EA ini. Silakan ditest :
Code:
//+------------------------------------------------------------------+ //| EAScalper.mq4 | //| Dwi M ea@dwim.web.id | //| http://ea.dwim.web.id | //+------------------------------------------------------------------+ #property copyright "Dwi M ea@dwim.web.id" #property link "http://ea.dwim.web.id" extern int TakeProfit = 10; extern int StopLoss = 20; extern int Slippage = 3; extern int Lots = 1.0; extern int MA1Periode = 10; extern int MA2Periode = 20; extern int MA3Periode = 30; double dPoint; //untuk setting Broker 5 Digits //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- /* Bila chartnya adalah broker 5 Digit maka Point dikali 10 */ if (Digits==3 || Digits==5) { dPoint=Point*10; } else { dPoint=Point; } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before; /* Cari nilai MA saat ini */ dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,0); dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,0); dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,0); /* Cari nilai MA satu candle sebelumnya */ dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,1); dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,1); dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,1); if(OrdersTotal()<1) { if (AccountFreeMargin()<1000*Lots) { Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);} if ((dMA1now > dMA2now) && (dMA1before < dMA2before)) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0); } else if ((dMA1now < dMA2now) && (dMA1before > dMA2before)) { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0); } } //---- return(0); } //+------------------------------------------------------------------+
Jika sudah lebih percaya diri, silakan pecahkan kasus yang saya ajukan di halaman-halaman depan. Kita berlatih EA sama-sama disini.
Salam profit
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLO SE,0);
Kalau mau jadi EMA ya diganti saja parameternya jadi :
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_EMA,PRICE_CLO SE,0);
Itu ada di manual dalam Meta Editor kok hehehehe
=====================================================
dMA3now dan dMA3before nya buat apa brother, kok tidak digunakan di logic programnya. Thanks, salam provit.
ReplyDelete