//+------------------------------------------------------------------+
//| Tes ea.mq4 |
//| Zefanya |
//| |
//+------------------------------------------------------------------+
#property copyright "Zefanya"
#property link ""
extern int TakeProfit = 30;
extern int StopLoss = 20;
extern int Slippage = 3;
extern int EMA1Periode = 4;
extern int EMA2Periode = 50;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start ()
{
//----
double dMA1, dMA2;
Comment ("Tes ea(c) Zefanya");
dMA1=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE ,0);
dMA1=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE ,0);
dMA1=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE ,1);
dMA1=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE ,1);
if ( (dMA1 > dMA2) && (dMA1 < dMA2) )
if ( (dMA1 < dMA2) && (dMA1 > dMA2) )
if(OrdersTotal()<1) // cuma boleh ada satu OP pada satu saat saja
{
if ((dMA1 > dMA2) && (dMA1< dMA2))
{
// Lakukan perintah BUY disini
OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage,Bid-StopLoss*TakeProfit, Ask+TakeProfit*Point, 0);
}
else if ( (dMA1 < dMA2) && (dMA1 > dMA2) ) // memotong dari atas ke bawah
{
// Lakukan perintah SELL disini
OrderSend(Symbol(),OP_SELL, 1.0, Bid, Slippage, Ask+StopLoss*TakeProfit, Bid-TakeProfit*Point, 0);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
==========================================
OK mantap. Zefanya sudah memposting code buatan sendiri.
Coba kita lihat ya. Sebabnya code ini tidak jalan di Strategy Tester adalah karena code di bawah ini :Spoiler:
Jadi disana, satu variabel dMA1 diberi nilai sebanyak 4 kali. Nah supaya logic jalan, kita perlu 4 variabel yang kita bandingkan satu sama lain. Jadi saya buat variabel :
- dMA1now = untuk melihat nilai MA1 (4) saat ini.
- dMA2now = untuk melihat nilai MA2 (50) saat ini.
- dMA1before = untuk melihat nilai MA1 (4) satu candle yang lalu.
- dMA2before = untuk melihat nilai MA2 (50) satu candle yang lalu
Di bawah ini adalah kode Zefanya yang sudah saya perbaiki, harap dilihat. Lalu dibandingkan dengan milik Zefanya sebelumnya :Ini hasilnya ketika saya backtesting. Jalan tuh, dan profit ! Hehehe.Code://+------------------------------------------------------------------+ //| Tes ea.mq4 | //| Zefanya | //| | //+------------------------------------------------------------------+ #property copyright "Zefanya" #property link "" extern int TakeProfit = 30; extern int StopLoss = 20; extern int Slippage = 3; extern int EMA1Periode = 4; extern int EMA2Periode = 50; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start () { //---- double dMA1now, dMA2now, dMA1before, dMA2before; Comment ("Tes ea(c) Zefanya"); dMA1now=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE ,0); dMA2now=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE ,0); dMA1before=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE ,1); dMA2before=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE ,1); /* Code di bawah ini tidak perlu */ //if ( (dMA1 > dMA2) && (dMA1 < dMA2) ) //if ( (dMA1 < dMA2) && (dMA1 > dMA2) ) if(OrdersTotal()<1) // cuma boleh ada satu OP pada satu saat saja { if ((dMA1now > dMA2now) && (dMA1before< dMA2before)) { // Lakukan perintah BUY disini OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage,Bid-StopLoss*TakeProfit, Ask+TakeProfit*Point, 0); } else if ( (dMA1now < dMA2now) && (dMA1before > dMA2before) ) // memotong dari atas ke bawah { // Lakukan perintah SELL disini OrderSend(Symbol(),OP_SELL, 1.0, Bid, Slippage, Ask+StopLoss*TakeProfit, Bid-TakeProfit*Point, 0); } } //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Semoga membantuSpoiler:
Last edited by DwiM; 11-27-2010 at 06:27 PM.
No comments:
Post a Comment