Pada dasarnya,
sebuah EA yang sederhana/standard (bukan EA yang kompleks seperti neural
network, atau yang misalnya terdiri dari beberapa modul yang mengontrol trade
sendiri-sendiri)… terdiri atas beberapa bagian/struktur.. bagian ini biasanya
dibikinkan fungsi tersendiri, agar coding terlihat rapi, sekaligus mempermudah
debugging
bagiannya :
bagiannya :
1. BuySignal :
pada kondisi apa EA buka buy
2. SellSignal :
pada kondisi apa EA buka sel
3.
CloseBuySignal : pada kondisi apa EA nutup posisi buy (yang ini tidak harus
ada, karena dapat
menggunakan TP/SL sebagai closingnya)
4.
CloseSellSignal : sama seperti CloseBuySignal
5.
MoneyManagement : buat itung lotsize secara otomatis
6. Trail : buat
trailling posisi, klo misalnya diperlukan
7. Confirmator
: kalau misalnya EA cuman trade hari senin-kamis, maka biasanya ditaruh di
bagian ini..
Kalau 7 bagian itu sudah ketemu, bikin EA nya jadi lebih gampang
misalnya begini, gw mau bikin EA yang kayak di Bagian 2 – Contoh EA
Logika EA ini, kira2 (misal EA ini diletakkan di chart GBPUSD 1 Hour), Jika tidak ada posisi, jika candle jam lalu closenya diatas EMA 10, maka buy, kalau candle jam lalu closenya dibawah EMA 10, maka sell. TP nya 150 dan SL nya 100 pips
kalau di breakdown jadi 7 bagian tadi :
1) BuySignal :
kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle
sebelumnya
2) SellSignal : kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
2) SellSignal : kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
3) Tidak ada
4) Tidak ada
5) Lotnya
otomatis diitung berdasarkan SL dan persen risiko.
6) Tidak pakai
trail, jadi tidak ada
7) Posis baru
dibuka kalau sedang tidak ada posisi, dan juga tidak trade di hari Jumat (gw
tambahi rulenya)
Kira-kira
source code nya jadi begini
code:
extern double RiskPercent=5;
extern double RiskPercent=5;
extern int
StopLoss=100;
extern int
TakeProfit=150;
extern string
txComment=”Order EA1″;
extern int
MagicNumber=12345;
extern int
Slippage=5;
//+——————————————————————+
//| expert initialization function |
//+——————————————————————+
int init()
{
//—-
//—-
return(0);
}
//+——————————————————————+
//| expert deinitialization function |
//+——————————————————————+
int deinit()
{
//—-
return(0);
}
//+——————————————————————+
//| expert deinitialization function |
//+——————————————————————+
int deinit()
{
//—-
//—-
return(0);
}
//+——————————————————————+
//| expert start function |
//+——————————————————————+
int start()
{
//—-
if (bolehTrade()) //kalau boleh trade
{
if (BuySignal() ) //kalau ada signal buy
{
OrderSend(Symbol(),OP_BUY,itungLot(),Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
}
else if (SellSignal() ) //kalau ada signal sell
{
OrderSend(Symbol(),OP_SELL,itungLot(),Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,txComment,MagicNumber);
}
return(0);
}
//+——————————————————————+
//| expert start function |
//+——————————————————————+
int start()
{
//—-
if (bolehTrade()) //kalau boleh trade
{
if (BuySignal() ) //kalau ada signal buy
{
OrderSend(Symbol(),OP_BUY,itungLot(),Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
}
else if (SellSignal() ) //kalau ada signal sell
{
OrderSend(Symbol(),OP_SELL,itungLot(),Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,txComment,MagicNumber);
}
}
//—-
return(0);
}
//+——————————————————————+
bool BuySignal()
{
//kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool SellSignal()
{
//kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) < iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool bolehTrade()
{
//kalau jumat, EA ga trade ; atau kalau ada order terbuka, EA juga ga trade
if (DayOfWeek()==5 || OrdersTotal()>0) { return (false); } else { return(true); }
}
double itungLot()
{
//ini untuk itung lot secara otomatis berdasarkan SL dan persen risk
double xLots=0;
xLots=NormalizeDouble(AccountBalance()*RiskPercent/100 /StopLoss / 10,1);
return (xLots);
}
//—-
return(0);
}
//+——————————————————————+
bool BuySignal()
{
//kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool SellSignal()
{
//kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) < iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool bolehTrade()
{
//kalau jumat, EA ga trade ; atau kalau ada order terbuka, EA juga ga trade
if (DayOfWeek()==5 || OrdersTotal()>0) { return (false); } else { return(true); }
}
double itungLot()
{
//ini untuk itung lot secara otomatis berdasarkan SL dan persen risk
double xLots=0;
xLots=NormalizeDouble(AccountBalance()*RiskPercent/100 /StopLoss / 10,1);
return (xLots);
}
Logikanya jadi rapi dan jelas bukan…
Tidak ada komentar:
Posting Komentar