Rabu, 30 April 2014

Belajar Membuat EA Sederhana 23 Average (Share)

Kali ini saya akan lanjutkan belajar bikin EA part 23 dimana EA ini layak untuk di gunakan di Riel account
Hasil BTnya


Pada part sebelumnya kita sudah membahas tentang EA  martingel nah kali ini kita akan menambahi koleksi kita dengan  type Average , meskipun ada fitur martigel . Karena EA ini sebenarnya hanya menmbahi logika pada ea yang sudah ada. Pada  part 15 juga sudah ada EA average .

Nah untuk kali ini kita akan mengembangkan sebuah EA dangan mengunakan indikator zigzag sebagai pemicu trigernya. dan  penambahan lain adalah untuk close order mengacu pada indikator MA (moving Average).

Bagian triger nya adalah:

for(int d=0; d<Bars  ; d++){
    double up=iCustom(Symbol(),0,"ZigZag",   ExtDepth , ExtDeviation, ExtBackstep, MODE_UPPER, d);
    double lo=iCustom(Symbol(),0,"ZigZag",   ExtDepth , ExtDeviation, ExtBackstep, MODE_LOWER,d);
    if(up!=0 || lo!=0) break;}
 
    int sigz, sigc,signal;
     if(up>0 )  sigz= 1;
     if(lo>0)    sigz= 5;
 


Bagian yang juga tida kalah penting adalah untuk closing order:



if(money()>0){
if(Bid>ma)   closeall(0);
if(Ask<ma)   closeall(1);
}

Pada EA ini juga terdapat target Equety, Pada bagian target equety harus diisi lebih besar dari balance saat digunakan


  if(Target_Equety<AccountEquity()) {
    closeall(0);
    closeall(1);
   Alert("Cek Target_Equetynya salah ");
   return(0);
   }

Jadi syarat untuk closing bila dalam kondisi profit dan mengacu pada harga bergerak terhadap nilai MA

EA ini layak untuk di forwartest, bahkan juga siap untuk di buat riel account

Silahkan di copas semuanya :
//+------------------------------------------------------------------+
//|                                                Jum+AvZigzag+.mq4 |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+

#property copyright "JumForex.blogspot.com"
#property link      "Gifaesa@yahoo.com"

extern string  Nama_EA                 = "Jum+AvZigzag+";
extern string  Target_Equety_          = "Harus lebih besar dari Equety+";
extern double  Target_Equety           = 1000;
extern bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 6;
extern int     Akhir_Jam               = 20;
extern bool    Tp_in_Money             = true;
extern double  TP_in_money             = 10;
extern int     TP                      = 100;
extern int     SL                      = 0;
extern double  Lots                    = 0.1;
extern int     Jarak_order             = 35;
extern int     Max_order               = 10;
extern double  DiMarti                 = 1;
extern bool    TrailingStop_           = false;
extern int     TrailingStop            = 20;
extern int     Magic                   = 69;
extern string  Seting_ZigzAG           = "Sesuka Hati";
extern int     ExtDepth                = 33;
extern int     ExtDeviation            = 5;
extern int     ExtBackstep             = 3;
extern string  Seting_Ma           = "Sesuka Hati";
extern int     Pereode                 = 33;


double slb,tpb,sls,tps,pt,bal;
int wt,wk,tiket,ticet;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
 bal= AccountBalance();
 if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
    ObjectDelete("j");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   ObjectCreate("j",OBJ_LABEL,0,0,0);
   ObjectSet("j",OBJPROP_CORNER,4);
   ObjectSet("j",OBJPROP_XDISTANCE,10);
   ObjectSet("j",OBJPROP_YDISTANCE,10);
   ObjectSetText("j","Jum+ZigZag+ from : JumForex.blogspot.com ,Donasi LR U7360459",19,"Mistral",Aqua);

//----
   if(Target_Equety<AccountEquity()) {
    closeall(0);
    closeall(1);
   Alert("Cek Target_Equetynya salah ");
   return(0);
   }
label();
if(TrailingStop_)dtrailing();
if(Tp_in_Money && TP_in_money<= money()){
   closeall(0);
   closeall(1);
   }
//----
    double ma = iMA(Symbol(), 0, Pereode , 0, MODE_LWMA, PRICE_CLOSE, 0 ) ;
    for(int d=0; d< Bars  ; d++){
    double up=iCustom(Symbol(),0,"ZigZag",   ExtDepth , ExtDeviation, ExtBackstep, MODE_UPPER, d);
    double lo=iCustom(Symbol(),0,"ZigZag",   ExtDepth , ExtDeviation, ExtBackstep, MODE_LOWER,d);
    if(up!=0 || lo!=0) break;}
   
    int sigz, sigc,signal;
     if(up>0 )  sigz= 1;
     if(lo>0)    sigz= 5;
    
    double  OP=iOpen(Symbol(),PERIOD_W1,0);

    if(Ask>OP) sigc=1;
    if(Bid<OP) sigc=5;

if(sigz+sigc==2) signal=1;
if(sigz+sigc==10)signal=2;
if(Jam_trade()==1){
   if(SL==0)slb=0;else slb=Ask-SL*pt;
   if(SL==0)sls=0;else sls=Bid+SL*pt;
   if(TP==0)tpb=0;else tpb=Ask+TP*pt;
   if(TP==0)tps=0;else tps=Bid-TP*pt;
  if(jumlahorder(0)==0 && jumlahorder(1)==0  && Trade_buy  && signal==2) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,slb, tpb,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(0)==0 && jumlahorder(1)==0  && Trade_sell && signal==1) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,sls, tps,Nama_EA,Magic,0,Red);}
 }
if(trad()==1 && wt!=Time[0] && jumlahorder(1)==0 && jumlahorder(0)< Max_order  && Trade_buy  && signal==2) {OrderSend(Symbol(),OP_BUY,xlot(0),Ask,3,slb, tpb,Nama_EA,Magic,0,Blue); wt=Time[0]; }
if(trad()==2 && wk!=Time[0] && jumlahorder(0)==0 && jumlahorder(1)<Max_order  && Trade_sell && signal==1) {OrderSend(Symbol(),OP_SELL,xlot(1),Bid,3,sls, tps,Nama_EA,Magic,0,Red); wk=Time[0];  }

if(money()>0){
if(Bid>ma)   closeall(0);
if(Ask<ma)   closeall(1);
}


   return(0);
  }
//+------------------------------------------------------------------+

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);
}

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 dtrailing()
{
for(int i=0; i<OrdersTotal(); i++){
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic ) continue;
        if(OrderType()==OP_BUY)  {
         if(Bid-OrderOpenPrice()>pt*TrailingStop)  {
           if((OrderStopLoss()<Bid-pt*TrailingStop) || (OrderStopLoss()==0)) {
              OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pt*TrailingStop,OrderTakeProfit(),0,Green);
              return(0);
              }
              }
           }
        if(OrderType()==OP_SELL)  {
         if((OrderOpenPrice()-Ask)>(pt*TrailingStop)){
           if(OrderStopLoss()>(Ask+pt*TrailingStop) || (OrderStopLoss()==0)){
              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pt*TrailingStop,OrderTakeProfit(),0,Red);
              return(0);
              }
              }
           }
     }
 
}
void closeall(int m)
{
 for (int i = OrdersTotal() - 1; i >= 0; i--) {
  OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
  if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic || m!= OrderType()) continue;
  if (OrderType() > 1) OrderDelete(OrderTicket());
   else {
    if (OrderType() == 0) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
    else               OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
  }
 }
}
double money()
{
 double dp = 0;
 int i;
 for (i = 0; i < OrdersTotal(); i++) {
  OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
  if (OrderSymbol() != Symbol()  || OrderMagicNumber()!=Magic) continue;
  dp += OrderProfit();
 }
 return(dp);
}

int trad()
{
 int type,dp; double opb,ops,lastlotb,lastlots;
  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)opb = OrderOpenPrice();
   if(type==1)ops = OrderOpenPrice();
  }
   double as = opb - Jarak_order * pt;
   double bi = ops + Jarak_order * pt;
   if ( Ask <= as &&  jumlahorder(0)> 0 ) dp=1;
 if ( Bid >= bi &&  jumlahorder(1)> 0 ) dp=2;

return(dp);
}
double xlot(int m)
{
 double ylot,dlot;
  for (int i = 0; i < OrdersTotal(); i++) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
   if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic ||OrderType()!=m) continue;
     dlot=OrderLots();
     }
if(OrderType()==m)ylot=NR(Lots*MathPow(DiMarti,jumlahorder(m)));
return(ylot);
}
void label()
{
 Comment("\n ",
   "\n ",
   "\n ------------------------------------------------",
   "\n :: =>+Jum+AvZigzag+<=",
   "\n :: =>JumForex.blogspot.com<=",
   "\n ------------------------------------------------",
   "\n :: Spread                 : ", MarketInfo(Symbol(), MODE_SPREAD),
   "\n :: Leverage               : 1 : ", AccountLeverage(),
   "\n :: Jam Server             :", Hour(), ":", Minute(),
   "\n ------------------------------------------------",
   "\n :: Equity sekarang        : ", AccountEquity(),"  $",
   "\n :: Target_Equety          : ", Target_Equety ,"  $",
   "\n ------------------------------------------------",
   "\n :: Posisi floting         :",money(),"  $",
   "\n :: Jumlah level           :",jumlahorder(0)+jumlahorder(1),
   "\n ------------------------------------------------",
   "\n :: >>By: Jum69<<",
   "\n ------------------------------------------------");
//+------------------------------------------------------------------+
}

=========

*copas dari http://jumforex.blogspot.com

Tidak ada komentar:

Posting Komentar