Rabu, 30 April 2014

Belajar Membuat EA Sederhana 28 ( order Harian)

Kita lanjut lagi deh  ....
Dan pastikan sudah mengikuti part 27

Pada kesempatan ini saya akan sedikit mengoprek EA Cutswicting pada part 25 untuk ditambahkan boolean  supaya dalam sehari trading kalo sudah takeprofit berhenti trading.
Jadi ditambahkan :
extern bool    Trading_Continue = false; // artinya kalau false kalo sudah nyentuh takeprofit dalam hari itu akan berhenti trade, sebaliknya bila true akan terus trading .

Bagian yang penting didalam hal ini perlu ditambahkan adalah membaca history  jumlah trade dalam sehari.
adalah bagian ini :
sebelumnya
double trad(int m)
{
  double pr,op;
  for (int i = 0; i < OrdersHistoryTotal(); i++) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
   if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA*/) continue;
   if(m==1)pr=OrderProfit();
   if(m==2)pr=OrderType();
   if(m==3)pr=OrderMagicNumber();
    }
return(pr);
}
ditambahkan menghitung jumlah order dalam sehari  jadinya sbb:

double trad(int m)
{
  double pr,op;
  for (int i = 0; i < OrdersHistoryTotal(); i++) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
   if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA*/) continue;
   if(m==1)pr=OrderProfit();
   if(m==2)pr=OrderType();
   if(m==3)pr=OrderMagicNumber();
   datetime tclose=OrderCloseTime();
   datetime topen=OrderOpenTime();
   if (iBarShift(Symbol(),PERIOD_D1,topen)==0) {
   if (iBarShift(Symbol(),PERIOD_D1,tclose)==0){
   if(m==4)pr++;
   }
   }
 }
return(pr);
}

Jadi untuk memanggil / menghitung jumlah order dalam sehari adalah trade(4) 
Nah dari script diatas dibuatlah logika sbb
  bool  trs=false;
  if(!Trading_Continue){if(trad(4)>0)trs=true;else trs=false; }else trs=false;
Nah di coding di atas bila dirangkai maka jadinya sebagai berikut:
 //+------------------------------------------------------------------+
//|                                               Jum+switch+2.mq4 |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+

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

extern string  Target_Equety_          = "Harus lebih besar dari Equety+";
extern double  Target_Equety           = 100000;
extern int     Mulai_Jam               = 0;
extern int     Akhir_Jam               = 20;
extern bool    Trading_Continue        = false;
extern int     TP                      = 30;
extern int     SL                      = 20;
extern double  Lots                    = 0.01;
extern int     Max_order               = 12;
extern double  DiMarti                 = 2;
extern int     Magic                   = 69;
string  Nama_EA                 = "Jum+SwitchFractals+";

bool trs=false;
double slb,tpb,sls,tps,pt,bal;
//+------------------------------------------------------------------+
//| 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()
  {
  if(SL==0||TP==0){Alert(" Isi dulu TP Dan SLnya"); return(0);}
  label();
  if(Target_Equety<AccountEquity()) {
    closeall(0);
    closeall(1);
    Alert("Cek Target_Equetynya salah ");
   return(0);
   }
   if(!Trading_Continue){if(trad(4)>0)trs=true;else trs=false; }else trs=false;
 
    for(int d=0; d< Bars  ; d++){
    double up=iFractals(Symbol(),0,MODE_UPPER,d);
    if(up!=0 ) break;}
    for(int e=0; e< Bars  ; e++){
    double lo=iFractals(Symbol(),0,MODE_LOWER,e);
    if( lo!=0) break;}
    int signal;

if(Bid > up) signal=1;
if(Ask < lo)signal=2;
if(Jam_trade()==1 && DayOfWeek()>1 && !trs){
if((trad(1)>0) || (trad(1)==0)){
  if(jumlahorder(0)==0 && jumlahorder(1)==0){
    if(signal==1) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*pt, Ask+TP*pt,Nama_EA,Magic,0,Blue);}
    if(signal==2) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*pt, Bid-TP*pt,Nama_EA,Magic,0,Red);}
    }
   }
 }
if(jumlahorder(0)==0 && jumlahorder(1)==0 && trad(3)<Max_order+Magic ){
if(trad(1)<0 && trad(2)==1) {OrderSend(Symbol(),OP_BUY,xlot(),Ask,3,Ask-SL*pt, Ask+TP*pt,Nama_EA,trad(3)+1,0,Blue);  }
if(trad(1)<0 && trad(2)==0) {OrderSend(Symbol(),OP_SELL,xlot(),Bid,3,Bid+SL*pt, Bid-TP*pt,Nama_EA,trad(3)+1,0,Red);   }
}



   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() || OrderComment() != Nama_EA || 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() || OrderComment() != Nama_EA ||  OrderType()!=m) 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()  || OrderComment() != Nama_EA) continue;
  dp += OrderProfit();
 }
 return(dp);
}

double trad(int m)
{
  double pr,op;
  for (int i = 0; i < OrdersHistoryTotal(); i++) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
   if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA*/) continue;
   if(m==1)pr=OrderProfit();
   if(m==2)pr=OrderType();
   if(m==3)pr=OrderMagicNumber();
   datetime tclose=OrderCloseTime();
   datetime topen=OrderOpenTime();
   if (iBarShift(Symbol(),PERIOD_D1,topen)==0) {
   if (iBarShift(Symbol(),PERIOD_D1,tclose)==0){
   if(m==4)pr++;
   }
   }
 }
return(pr);
}double xlot()
{
 double ylot,dlot;
  for (int i = 0; i < OrdersHistoryTotal(); i++) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
   if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA */) continue;
     dlot=OrderLots();
     }
    ylot=NR(dlot*DiMarti);
return(ylot);
}
void label()
{
   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+switchFractals_2 from : JumForex.blogspot.com ",21,"Mistral",Aqua);
 Comment("\n ",
   "\n ",
   "\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 :: Level                  :",trad(3)-Magic,
   "\n ------------------------------------------------",
   "\n :: >>By: Jum69<<",
   "\n ------------------------------------------------");
//+------------------------------------------------------------------+
}
============
Nah jadi deh
Siap tempur !
*copas dari http://jumforex.blogspot.com

Tidak ada komentar:

Posting Komentar