permisi master master di sini.. minta ijin untuk share coding EA Martiangle.
jujur ini bukan tulisan saya. tapi hanya copas dari forum sebelah.
dalam sebuah EA martiangel ada tiga poin dasar.
1. Fungsi Pemicu sebagai trigger OP pertama :Ini terserah strategi teman-teman, hanya untuk OP pertama saja. Misalnya teman-teman memakai cross 2 buah MA untuk OP buy atau sell.
2. Fungsi Martingale : Fungsi ini memeriksa apakah ada OP yang salah ? Jika ya, maka akan dibuat OP baru searah dengan OP semula. Dengan lot yang digandakan.
3. Fungsi Modifikasi TP : Di dalam fungsi ini, semua OP martingale akan dimodifikasi TP-nya.
==============================
1. Fungsi Pemicu, terserah bagaimana logic yang mau di pake. bisa dengan MA, bisa instan OP, bisa dengan bermacam2 logic yang beredar di forum ini.
2. Fungsi Martiangle
Tugas fungsi ini adalah memeriksa apakah OP-nya salah arah. Jika salah arah, maka fungsi akan membuat satu OP lagi searah dengan sebelumnya, dengan lot yang sudah digandakan.
3. Funsi ModifyTP
ungsi ModifyTP ini menyamakan TP di satu titik. Sehingga jika TP ini kena, maka semua OP martingale akan tertutup dengan hasil balance bertambah. Memang ada OP awal yang loss, tapi karena OP selanjutnya lot-nya ditambah, maka jika kena TP ini hasil akhirnya akan menambah balance.
alternatif lain sebenernya bisa dengan membaca profit per OP, jadi nanti dibuat close sersuai order. biasanya ini TP in Money, tpi untuk case saat ini menggunakan TP in PIP
====================================================================
Nah dari kode di atas. oleh si pemberi materi di buatlah kode utuh 1 ea.
Kode ini saya modifikasi biar ada target Profit per Harinya.
=====EDITED=====
walah maksimal ternyata 10.000 karakter.. jadi saya ga bisa copas code nya di sini..
silahkan download mq4 untuk jadi refrensi
selamat mencoba
jujur ini bukan tulisan saya. tapi hanya copas dari forum sebelah.
dalam sebuah EA martiangel ada tiga poin dasar.
1. Fungsi Pemicu sebagai trigger OP pertama :Ini terserah strategi teman-teman, hanya untuk OP pertama saja. Misalnya teman-teman memakai cross 2 buah MA untuk OP buy atau sell.
2. Fungsi Martingale : Fungsi ini memeriksa apakah ada OP yang salah ? Jika ya, maka akan dibuat OP baru searah dengan OP semula. Dengan lot yang digandakan.
3. Fungsi Modifikasi TP : Di dalam fungsi ini, semua OP martingale akan dimodifikasi TP-nya.
==============================
1. Fungsi Pemicu, terserah bagaimana logic yang mau di pake. bisa dengan MA, bisa instan OP, bisa dengan bermacam2 logic yang beredar di forum ini.
2. Fungsi Martiangle
Tugas fungsi ini adalah memeriksa apakah OP-nya salah arah. Jika salah arah, maka fungsi akan membuat satu OP lagi searah dengan sebelumnya, dengan lot yang sudah digandakan.
Code:
void GoMartingale()
{
int iCount = 0;
double LastOP = 0;
double LastLots = 0;
bool LastIsBuy = FALSE;
int iTotalBuy = 0;
int iTotalSell = 0;
int Spread=0;
Spread= MarketInfo(Symbol(), MODE_SPREAD);
for(iCount=0;iCount<OrdersTotal();iCount++)
{
OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
if(LastOP==0) {LastOP=OrderOpenPrice();}
if(LastOP>OrderOpenPrice()) {LastOP=OrderOpenPrice();}
if(LastLots<OrderLots()) {LastLots=OrderLots();}
LastIsBuy=TRUE;
iTotalBuy++;
/* Bila mencapai batas OP maksimal, jangan tambah OP lagi */
if(iTotalBuy==MaxTrade) {return(0);}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
if(LastOP==0) {LastOP=OrderOpenPrice();}
if(LastOP<OrderOpenPrice()) {LastOP=OrderOpenPrice();}
if(LastLots<OrderLots()) {LastLots=OrderLots();}
LastIsBuy=FALSE;
iTotalSell++;
/* Bila mencapai batas OP maksimal, jangan tambah OP lagi */
if(iTotalBuy==MaxTrade) {return(0);}
}
}
/* Jika arah Price adalah DOWNTREND...., Periksa nilai Bid (*/
if(LastIsBuy)
{
if(Bid<=LastOP-(Spread*SetPoint)-(PipStep*SetPoint))
{
OrderSend(Symbol(), OP_BUY, Multiply*LastLots, Ask, Slippage, 0, Ask+TakeProfit*SetPoint, EAComment, EAMagicNumber);
ModifyTP();
LastIsBuy=FALSE;
return(0);
}
}
/* Jika arah Price adalah Sell...., Periksa nilai Ask (*/
else if(!LastIsBuy)
{
if(Ask>=LastOP+(Spread*SetPoint)+(PipStep*SetPoint))
{
OrderSend(Symbol(), OP_SELL, Multiply*LastLots, Bid, Slippage, 0, Bid-TakeProfit*SetPoint, EAComment, EAMagicNumber);
ModifyTP();
return(0);
}
}
}
3. Funsi ModifyTP
ungsi ModifyTP ini menyamakan TP di satu titik. Sehingga jika TP ini kena, maka semua OP martingale akan tertutup dengan hasil balance bertambah. Memang ada OP awal yang loss, tapi karena OP selanjutnya lot-nya ditambah, maka jika kena TP ini hasil akhirnya akan menambah balance.
alternatif lain sebenernya bisa dengan membaca profit per OP, jadi nanti dibuat close sersuai order. biasanya ini TP in Money, tpi untuk case saat ini menggunakan TP in PIP
Code:
/*-- Fungsi ModifyTP ini untuk mengubah semua OP agar TP di titik yang sama --*/
void ModifyTP()
{
int iCount=0;
double NewTP=0;
/*- Ambil nilai Take Profit dari Order terakhir -*/
for(iCount=0;iCount<OrdersTotal();iCount++)
{
OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);
/*-- Kalau OP-nya adalah BUY, ambil nilai TP yang paling kecil. Jadikan TP bersama --*/
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
if(NewTP==0) {NewTP=OrderTakeProfit();}
if(NewTP>OrderTakeProfit()) {NewTP=OrderTakeProfit();}
}
/*-- Kalau OP-nya adalah SELL, ambil nilai TP yang paling besar. Jadikan TP bersama --*/
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
if(NewTP==0) {NewTP=OrderTakeProfit();}
if(NewTP<OrderTakeProfit()) {NewTP=OrderTakeProfit();}
}
}
/*- Ubah semua nilai OP TakeProfit dengan yang baru (2x lipat) -*/
for(iCount=0;iCount<OrdersTotal();iCount++)
{
OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);
/*- Kalau semua OP adalah BUY, maka ubahlah TP mereka -*/
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
OrderModify(OrderTicket(), OrderLots(), 0, NewTP, 0);
}
/*- Kalau semua OP adalah SELL, maka ubahlah TP mereka -*/
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
{
OrderModify(OrderTicket(), OrderLots(), 0, NewTP, 0);
}
}
}
====================================================================
Nah dari kode di atas. oleh si pemberi materi di buatlah kode utuh 1 ea.
Kode ini saya modifikasi biar ada target Profit per Harinya.
=====EDITED=====
walah maksimal ternyata 10.000 karakter.. jadi saya ga bisa copas code nya di sini..
silahkan download mq4 untuk jadi refrensi
selamat mencoba