Tipenya Ea martingel tapi ini sedikit berbeda dengan tipe martingel yang sudah ada yaitu martingel yang cocok untuk kondisi trending , biasanya martingel yang umumnya adalah takut terhadap kondisi trending .
Ini sebenarnya ada sedikit memenuhi permintaan dari rekan2 yang sudah 2 orang menhubungi ym dan email saya tentang ea ini.
Pada ea part 22 ini merupakan ea jebakan dimana order pertamanya mengunakan pending stop dan bila pending stop sudah tersentuh maka akan dilanjutkan dengan martingel bila ternyata mengalami floting pada jarak tertentu dan martingel nya adalah satu arah
Nah pada part 24 ini kita akan gunakan martingelnya adalah 2 arah (hedge ) dengan mengunakan pending stop.
Ordernya saya akan mengacu pada jam trending dan indikator yang sederhan yaitu candel
Karena ini ea untuk trending saya tambahkan filter untuk hari senin = notrade (DayOfWeek()!=1)
Rulenya sederhana aja
bila candel bullis maka buy dan bila floting minus pada jarak tertentu pasang sellstop
bila ternyata sellstop tersentuh maka akan pasang buystop .
Take profit mengacu pada tp in money alias pada $.
Simpel deh....!
Ini Hasilnya :
//+------------------------------------------------------------------+
//| EA Jum+SmaRt |
//| gifaesa@yahoo.com |
//| http://JumForex.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "JumForex.blogspot.com"
#property link "Gifaesa@yahoo.com"
extern string SmaRt_Marti = "Trending EA";
extern string Jam_server = "Set sesuai selera";
extern int Mulai_Jam = 6;
extern int Akhir_Jam = 20;
extern bool Tp_in_Money = true;
extern double TP_in_money = 10;
extern int Max_order = 10;
extern int Jarak_stop = 15;
extern double DiMarti = 1.5;
extern int TP = 0;
extern int SL = 0;
extern double Lots = 0.1;
extern int Magic = 69;
double slb,tpb,sls,tps,pt,lslb,ltpb,slbx,tpbx,slsx,tpsx;
string Nama_EA = "Jum+SmaRt";
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(Digits==3 || Digits==5) pt=10*Point; else pt=Point;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
label();
if(Tp_in_Money ){
if(TP_in_money<= money(0)+money(1)){
closeall(0);
closeall(1);
closeall(4);
closeall(5);
}
}
if(jumlahorder(0)+ jumlahorder(1)==0){
if(jumlahorder(4)==1 ||jumlahorder(5)==1){
closeall(4);
closeall(5);
}
}
if(SL==0)slbx=0;else slbx=Ask-SL*pt;
if(SL==0)slsx=0;else slsx=Bid+SL*pt;
if(TP==0)tpbx=0;else tpbx=Ask+TP*pt;
if(TP==0)tpsx=0;else tpsx=Bid-TP*pt;
if(DayOfWeek()!=1 && Jam_trade()==1 && jumlahorder(0)==0 && jumlahorder(1)==0){
if(Open[1]<Close[1] ) {OrderSend(Symbol(),0,NR(Lots),Ask,3,slbx, tpbx,Nama_EA,Magic,0,Blue);}
if(Open[1]>Close[1] ) {OrderSend(Symbol(),1,NR(Lots),Bid,3,slsx, tpsx,Nama_EA,Magic,0,Red);}
}
double as=oppric()+Jarak_stop*pt;
double bi=oppric()-Jarak_stop*pt;
if(SL==0)slb=0;else slb=as-SL*pt;
if(SL==0)sls=0;else sls=bi+SL*pt;
if(TP==0)tpb=0;else tpb=as+TP*pt;
if(TP==0)tps=0;else tps=bi-TP*pt;
if(jumlahorder(0)+jumlahorder(1)>0 && jumlahorder(0)+jumlahorder(1)<Max_order){
if(opakhir()==1 && jumlahorder(4)==0 ) {OrderSend(Symbol(),OP_BUYSTOP,xlot(),as,3,slb, tpb,Nama_EA,Magic,0,Blue);}
if(opakhir()==0 && jumlahorder(5)==0 ) {OrderSend(Symbol(),OP_SELLSTOP,xlot(),bi,3,sls, tps,Nama_EA,Magic,0,Red);}
}
return(0);
}
//+------------------------------------------------------------------+
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);
}
void closeall(int m)
{
for (int i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic || OrderType()!=m) continue;
if (OrderType() > 1) OrderDelete(OrderTicket());
if (OrderType() == 0) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
if (OrderType() == 1)OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
}
}
double money(int m)
{
double dp = 0;
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic || m!=OrderType()) continue;
dp += OrderProfit();
}
return(dp);
}
void label()
{
Comment("\n ",
"\n ",
"\n ------------------------------------------------",
"\n :: =>+Jum+SmaRt<=",
"\n :: =>JumForex.blogspot.com<=",
"\n ------------------------------------------------",
"\n :: Spread : ", MarketInfo(Symbol(), MODE_SPREAD),
"\n :: Leverage : 1 : ", AccountLeverage(),
"\n :: Equity : ", AccountEquity(),
"\n :: Jam Server :", Hour(), ":", Minute(),
"\n ------------------------------------------------",
"\n :: Floting : ",money(0)+money(1),
"\n :: Level : ",jumlahorder(0)+jumlahorder(1),
"\n ------------------------------------------------",
"\n :: >>By: Jum69<<",
"\n ------------------------------------------------");
}
double oppric()
{
int type; double op;
for (int i = 0; i < OrdersTotal(); i++) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
type=OrderType();
if(type==0 || type==1)op = OrderOpenPrice();
}
return(op);
}
int opakhir()
{
int type; int a;
for (int i = 0; i < OrdersTotal(); i++) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
type=OrderType();
if(type==0 )a = 0;
if(type==1 )a = 1;
}
return(a);
}
double xlot()
{
int m=jumlahorder(0)+jumlahorder(1);
double ylot=NR(Lots*MathPow(DiMarti,m));
return(ylot);
}
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);
}
============
Disini tidak saya uraikan secara rinci
*copas dari http://jumforex.blogspot.com
Tidak ada komentar:
Posting Komentar