Rabu, 30 April 2014

Belajar Membuat EA Sederhana 37 (terapan indikator IFX_Keltner_Channel II)

Kita lanjutin deh setelah di part 36    , Kita sudah sedikit membahas tentang indikator IFX_Keltner_Channel.
dari gambaran di part sebelumnya indi ini mempunyai 3 mode yaitu 0,1,2
terus bagimana untuk membaca indikator tersebut supaya bisa dipanggil di dalam Ea .

Pada pembahasan yang dulu kita sudah pernah membahas membuat ea dengan indikator diluar mt4 (custom indikator)
kita coba:
di pembahasan sebelumnya sudah diketahui bahwa indikator ini mempunyai 3 mode dan 3 input parameter , Nah dari situ bisa kita buat custom indikatornya begini

Nah dengan dibuat custom indi IFX_Keltner ini maka akan mudah diimplementasikan kedalam EA

Rule Ea yang akan kita bikin adalah  (untuk mode market trending)
1. Buy ketika harga menembus garis upper
2. sell ketika harga menembus garis lower
3. op dibuat stiap candel ada signal

apalagi ya

itu aja deh
silahkan yang mau bikin bisa dibuat kan EAnya

Nah ini salah satu Ea yang di bikin oleh master "Anie Budi Raharjo " yang udah ngirimkan melalui FB
SLnya dibuat otomatis digaris indinya:


//+------------------------------------------------------------------+
//|                                          IFX_Keltner_Channel.mq4 |
//|                                           Copyright 2013, Annura |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Annura"
#property link      ""

extern string Nama_EA               = "IFX Keltner Channel";
extern int    TP                    = 11;
extern int    SL                    = 20;
extern double Lot                   = 0.01;
extern int    Magic                 = 69;
extern int    Mode_Ma               = 0;
extern int    Ma_Pareode            = 10;
extern int    Price_tip             = 5;
extern int    Max_order             = 2;


int signalBuy,signalSell;
double pt,SLb,TPb,SLs,TPs;

//+------------------------------------------------------------------+
//| 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()
  {
//----
      double kfa  = iCustom(Symbol(),0,"IFX_Keltner_Channel",Ma_Pareode,Mode_Ma,Price_tip,0,0);
      double kfm  = iCustom(Symbol(),0,"IFX_Keltner_Channel",Ma_Pareode,Mode_Ma,Price_tip,1,0);
      double kfb  = iCustom(Symbol(),0,"IFX_Keltner_Channel",Ma_Pareode,Mode_Ma,Price_tip,2,0);

      if(Open[1]<kfa && Close[1]>kfa && Open[0]>kfa)
      {
         signalBuy=1;
      }
      if(Open[1]>kfb && Close[1]<kfb && Open[0]<kfb)
      {
         signalSell=1;
      }
     
      SLb=kfb;
      SLs=kfa;
      if(TP==0)TPb=0;else TPb=Ask+TP*pt;
      if(TP==0)TPs=0;else TPs=Bid-TP*pt;
     
      if(signalBuy==1 && JumlahOrder(0)<Max_order)
      {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,3,SLb,TPb,Nama_EA,Magic,0,Blue); 
      }
      if(signalSell==1 && JumlahOrder(1)<Max_order)
      {
         OrderSend(Symbol(),OP_SELL,Lot,Bid,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);
}

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

Belajar Membuat EA Sederhana 36 (terapan indikator IFX_Keltner_Channel)

Salam sukses semuanya

Kita lanjutkan lagi  part 36 setelah pada sebelumnya 35     kita suda memabahas sedikit tentang proteksi EA.
Pada kesempatan kali ini kita akan membuat EA scalping dengan menggunakan indikator  IFX_Kletner_Channel  . Indikator ini bawaan mt4 untuk broker instaforex

Ini akan menambah wawasan bagi temen2 yang masih bingung menerapkan coding bila indikatornya tidak ada di standart mt4. 
Nah ini tampilan indikator  IFX_Keltner_Channel , sebenarnya sih mirip dengan indikator anvelope cuma ini terdiri dari 3 garis atas, tengah dan bawah


 Nah untuk memasang indikator ini di chart maka silahkan cek di mt4...



 Nah setelah itu akan muncul parametenya ada 3 macem inputan




Nah kaloudah tampil di Mt4 kita akan lihat buffernya , tekan CTRL D maka akan tampil



Maka akan tampil 3 nilai didalam modenya , untuk mengetahui posisinya maka bisa digunakan pointer untuk menunjuk pada garis indinya dan akan sesuai dengan nilainya
Dari pengamatan maka di peroleh garis atas (upper)  di mode 0, garis tengah mode 1, dan garis bawah (lowwer) mode 2.

 Loh aterus gunanya untuk apa ya ? 
Ini digunakan untuk membuat coding memanggil indikator tersebut!

Tentu masih ingat pada part sebelumnya pernah di bahas tentang coding memanggil indikator yang bukan standart yang ada pada mt4....

gitu dulu deh kita lanjut pas santai...
sabar dulu ya

atau ada yang mau coding juga boleh nati di tampilkan disini
*copas dari http://jumforex.blogspot.com

Belajar Membuat EA Sederhana 35 (Proteksi EA 3)

Salam profit semuanya
Di Part sebelum (part 33 dan 34 ) kita sudah bahas proteksi Ea dengan account demo dan account khusus

Nah kali ini saya akan share sebuah Ea saya yang cocok untuk menantang news dan juga pas untuk kondisi market yang trending ...

Problemnya EA ini di proteksi dengan menggunakan account demo   dan mungkin sedikit dibuat agak rumit ...meski sebenarnya sih gak rumit2 amat...(-___-)
Ini akan menambah wawasan bagi temen2 yang ingin memproteksi EAnya............

Oke langsung aja deh ini penampakan EAnya

//+-----------------------------------------------------------------------------------------+
//|                                                 EA Jum+Profit+v3 |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+
//v3 (16-4-2013)
#property copyright "JumForex.blogspot.com"
#property link      "Gifaesa@yahoo.com"

extern string  Nama_EA                 = "Jum+Profit+v3";
extern bool    Close_Panic             = false;
extern string  Hari_Trade              = "=>Sesuai selera::";
extern bool    Senin                   = false;
extern bool    Selasa                  = true;
extern bool    Rabu                    = true;
extern bool    Kamis                   = true;
extern bool    Jumat                   = true;
extern string  Jam_server              = "Set sesuai selera";
extern int     Mulai_Jam               = 9;
extern int     Akhir_Jam               = 19;
extern string  Sesuaikan_risk          = "Set sesuai selera";
extern bool    Compound_lot            = true;
extern double  Manage_Balance          = 130;
extern bool    Buy                     = true;
extern bool    Sell                    = true;
extern int     TP                      = 35;
extern int     SL                      = 27;
extern double  Lots                    = 0.01;
extern int     Max_level               = 10;
extern int     Magic                   = 69;
double slbx,tpbx,slsx,tpsx,slb,tpb,sls,tps,pt,lslb,ltpb,x,slbk,tpbk,slsk,tpsk;int s,p,pp;string k="JumProFit",kk="JumpRoFit";
int init(){p=Magic;pp=Magic+99;if(Digits==3 || Digits==5) pt=10*Point;else pt=Point;return(0);}
int deinit(){ return(0); }
int start(){label();if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}
{if(Close_Panic){c(k,0);c(k,1);c(k,4);c(k,5);c(kk,0);c(kk,1);c(kk,4);c(kk,5); return(0);  }}
if(IsDemo()){if(Compound_lot ) x=Lots* MathFloor(AccountBalance() / Manage_Balance); else x=Lots;}else x=MarketInfo(Symbol(), MODE_MAXLOT);
if(j(k,0,0)==0 && j(k,0,5)==1){c(k,5);}if(j(k,0,1)==0 && j(k,0,4)==1){c(k,4);}if(j(kk,0,0)==0 && j(kk,0,5)==1){c(kk,5);}if(j(kk,0,1)==0 && j(kk,0,4)==1){c(kk,4);}
double as = j(k,3,1); double bi = j(k,3,0);double ask = j(kk,3,1); double bik = j(kk,3,0);
if(SL==0){slb=0;sls=0;slbx=0;slsx=0;}else if(SL>0){slbk=ask-SL*pt;slsk=bik+SL*pt; slb=as-SL*pt;sls=bi+SL*pt;slbx=Ask-SL*pt;slsx=Bid+SL*pt;}
if(TP==0){tpb=0;tps=0;tpbx=0;tpsx=0;}else if(TP>0){tpbk=ask+TP*pt;tpsk=bik-TP*pt;tpb=as+TP*pt;tps=bi-TP*pt;tpbx=Ask+TP*pt;tpsx=Bid-TP*pt;}
if( Jam()==1 && !Close_Panic && tday()==1 && IsDemo()){
   if(Buy && ju()==0) OrderSend(Symbol(),0,NR(x),Ask,3,slbx, tpbx,k,p,0,Blue);
   if(Sell&& jum()==0) OrderSend(Symbol(),1,NR(x),Bid,3,slsx, tpsx,kk,pp,0,Red);
   }
if(j(k,2,0)+j(k,2,1)-p < Max_level && IsDemo()){
  if(j(k,0,1)==1 && j(k,0,4)==0) {OrderSend(Symbol(),4,(j(k,1,1)),as,3,slb, tpb,k,j(k,2,1)+1,0,Blue);}
  if(j(k,0,0)==1 && j(k,0,5)==0) {OrderSend(Symbol(),5,(j(k,1,0)),bi,3,sls, tps,k,j(k,2,0)+1,0,Red);}
   }
if(j(kk,2,0)+j(kk,2,1)-pp < Max_level && IsDemo()){
  if(j(kk,0,1)==1 && j(kk,0,4)==0) {OrderSend(Symbol(),4,(j(kk,1,1)),ask,3,slbk, tpbk,kk,j(kk,2,1)+1,0,Blue);}
  if(j(kk,0,0)==1 && j(kk,0,5)==0) {OrderSend(Symbol(),5,(j(kk,1,0)),bik,3,slsk, tpsk,kk,j(kk,2,0)+1,0,Red);}
   }
return(0);
}
//+------------------------------------------------------------------+
double j(string m,int n, int tipe){double t=0;for(int i=0; i<OrdersTotal(); i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);if(OrderSymbol()!=Symbol() || OrderComment()!=m || OrderType()!=tipe) continue;if(IsDemo()){if(n==0)t++;if(n==1)t=OrderLots()*2;if(n==2)t=OrderMagicNumber();  if(n==3)t=OrderStopLoss(); }}return(t);}
double ju(){return(j(k,0,0)+j(k,0,1)+j(k,0,2)+j(k,0,3)+j(k,0,4)+j(k,0,5));}
double jum(){return(j(kk,0,0)+j(kk,0,1)+j(kk,0,2)+j(kk,0,3)+j(kk,0,4)+j(kk,0,5));}
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);}
int Jam(){ 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 tday(){int trd=0;if(Senin  && DayOfWeek()==1) trd=1;if(Selasa && DayOfWeek()==2) trd=1;if(Rabu   && DayOfWeek()==3) trd=1;if(Kamis  && DayOfWeek()==4) trd=1;if(Jumat  && DayOfWeek()==5) trd=1;return(trd);}
void c(string m,int t){for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES);if (OrderSymbol() != Symbol() || OrderComment()!=m||  OrderType()!=t) continue;if(IsDemo()){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 f(string m,int t){ double dp = 0;int i; for (i = 0; i < OrdersTotal(); i++) {OrderSelect(i, SELECT_BY_POS, MODE_TRADES);if (OrderSymbol() != Symbol()  || OrderComment()!=m|| t!=OrderType()) continue;if(IsDemo()){ dp += OrderProfit(); }} return(dp);}
void label(){int x,y;if((j(k,0,0)==1 && j(k,2,0)==p)||(ju()==0)) x=0; else x=j(k,2,0)+j(k,2,1)-p;if((j(kk,0,1)==1 && j(kk,2,1)==p)||(jum()==0)) y=0; else y=j(kk,2,0)+j(kk,2,1)-pp;
 Comment("\n ",
   "\n ",
   "\n ------------------------------------------------",
   "\n :: =>+Jum+Profit+v3<=",
   "\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 buy : ",f(k,0)+f(kk,0),"\n :: Floting sell : ",f(k,1)+f(kk,1),
   "\n :: Level pro : ",x, "\n :: Level Fit : ",y,
   "\n ------------------------------------------------",
   "\n :: >>By: Jum69<<",
   "\n ------------------------------------------------");
}

================
Nah oke deh silahkan dicopas dan di coba >>>>>bagi yang mau di riel account ya tantangan sih harus bisa menghilangkan proteksi account demonya

Untuk memastikan proteksinya telah hilang silahkan di BT di account demo dan accoun riel kalo hasilnya sama  berarti sudah berhasil

Bagi yang udah berhasil kasih komen yah!

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

Belajar Membuat EA Sederhana 34 (Proteksi EA 2)

Kita lanjutin deh hee
Setelah pada part sebelumnya kita sudah bahas proteksi hanya untuk account demo
Kali ini kita bahas proteksi untuk account number khusus, sehingga Ea yang di proteksi dengan ini akan hanya dapat digunakan pada nomor account yang sudah ditetapkan.

Nah sebenarnya proteksi ini hanya pangaman account saja tidak berarti proteksi ini tidak bisa dirubah...
Sofware terus berkembang ,  file ex4 juga bisa di ubah lagi ke file mql4 melalui sofware decompile sehingga proteksi hanyalah bersifat sementara. Ketika kita share pada orang lain tentu akan mengalami bahwasanya EA kita suatu ketika juga akan di bongkar oleh trader lain.

Ok bagian yang perlu ditambahakan sama mirip dengan pada protek demo pada part 33

  int No_accnya=0000;// ganti nomor account nya disini
  if(AccountNumber()!=No_accnya){Alert("maaf bOSS no account anda gak cocok ..Kacian deh Loh");     return(0); }

Nah  ini yang perlu disuntik di bawah int start()

heee kita coba suntik ke EA di part 25
//+------------------------------------------------------------------+
//|                                                Jum+switch+.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           = 1000;
extern int     Mulai_Jam               = 0;
extern int     Akhir_Jam               = 20;
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+";


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()
  {
  int No_accnya=0000;// ganti nomor account nya disini
  if(AccountNumber()!=No_accnya){Alert("maaf bOSS no account anda gak cocok ..Kacian deh Loh");     return(0); }
  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);
   }
    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){
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();
   }
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 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 ------------------------------------------------");
//+------------------------------------------------------------------+
}
================
He semoga menambah wawasan deh


Salam profit All
*copas dari http://jumforex.blogspot.com

Belajar Membuat EA Sederhana 33 (Proteksi EA)

Salam Profit semuanya!

Sepertinya udah banyak sih share coding EA  sampai part 32.......

Nah kali ini kita akan belajar tentang proteksi EA ....karena ada bebepa temen di Ym yang minta di ajari proteksi EA ...............

Ada banyak cara untuk proteksi EA ataupun script dan Indikator al:

  1. Proteksi Demo ==> EA hanya bisa digunakan untuk account demo.
  2. Proteksi accout khusus ==> hanya bisa digunakan account tertentu saja.
  3. Proteksi Broker ==> hanya bisa digunakan broker tertentu saja
  4. Proteksi Pair ==> hanya bisaa digunakan pair tertentu saja.
  5. Proteksi waktu ==> dibatasi sampai waktu tertentu : tgl -bulan-tahun
  6. Proteksi Nama==>hanya bisa digunakan dengan nama account tertentu
  7. Proteksi Pasword==> menggunakan pasword tertentu ,lisensi number 
  8. Proteksi dll ==>menggunakan file dll
  9. Proteksi webs==> harus tersambung dengan webs
  10. dll.
Nah kita akan bahas beberapa proteksi ..............

Yang Pertama 
Proteksi account demo
Untuk memproteksi supaya  EA hanya bisa digunakandi account demo disini kita tambahkan pembaca account demo yaitu:  IsDemo()
Nah dari sini kita kembangkan dalam sebuah operasi

if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}

Nah , if(!IsDemo()){ ini artinya bila tidak demo maka blabla.............yaitu Alert("Maaf bos hanya untuk demo") =>maka alert akan berbunyi dan memberi tahu ..............
ditambahkan untuk menghentikan perintah berikutnya yaitu return(0);

Code tersebut di tempatkan di dalam atau dibawah  int start(){ 
contoh:

int start(){ if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}

Nah untuk lebih jelasnya saya akan proteksi EA di part 21

sehingga jadinya begini
 //+-----------------------------------------------------------------------------------------+
//|                                                    EA Jum+Profit |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+

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

extern string  Nama_EA                 = "Jum+Profit";
extern bool    Trade_buystop           = true;
extern bool    Trade_sellstop          = true;
extern string  Jam_server              = "Set sesuai selera";
extern int     Jam                     = 0;
extern int     Menit                   = 30;
extern bool    Tp_in_Money             = false;
extern double  TP_in_money             = 5;
extern int     TP                      = 100;
extern int     SL                      = 20;
extern double  Lots                    = 0.1;
extern int     Jarak_stop              = 25;
extern bool    TrailingStop_           = true;
extern int     TrailingStop            = 12;
extern int     Magic                   = 69;
double slb,tpb,sls,tps,pt,lslb,ltpb;
//+------------------------------------------------------------------+
//| 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()
  {
if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}
label();
if(TrailingStop_)dtrailing();
if(Tp_in_Money ){
  if(TP_in_money<= money(0)){
   closeall(0);
   closeall(2);
   }
  if(TP_in_money<= money(1)){
   closeall(1);
   closeall(3);
   }
 }
if(jumlahorder(0)==1 && jumlahorder(1)==0){
   closeall(5);
   }
if(jumlahorder(0)==0 && jumlahorder(1)==1){
   closeall(4);
   }
if(Hour()==23){
   closeall(4);
   closeall(5);
   }
//----
   double as = Ask + Jarak_stop*pt;
   double bi = Bid - 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(DayOfWeek()!=1 && Hour()==Jam && Minute()==Menit && jumlahorder(0)==0 && jumlahorder(1)==0){
  if(jumlahorder(4)==0  && Trade_buystop  ) {OrderSend(Symbol(),OP_BUYSTOP,NR(Lots),as,3,slb, tpb,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(5)==0  && Trade_sellstop ) {OrderSend(Symbol(),OP_SELLSTOP,NR(Lots),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 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||  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;
 int i;
 for (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+Profit<=",
   "\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 buy : ",money(0),
   "\n :: Floting sell : ",money(1),
   "\n ------------------------------------------------",
   "\n :: >>By: Jum69<<",
   "\n ------------------------------------------------");
}


====================
Ternyata hanya dengan sebaris perintah tersebut cukup ampuh bahwasanya EA   hanya akan bisa digunakan di account demo he he he..............Mudah kan?

Oke deh sementara disini dulu ya nanti kita saambung lagi di part berikutnya
*copas dari http://jumforex.blogspot.com

Belajar Membuat EA Sederhana 32

Salam Profit semuanya

Pada part kali saya share  EA sederhana yang gunanya untuk menutup semua  order dalam 1 pair pada jam tertentu,
 kebetulan EA ini pernah saya share di forum IndoMt5 , Karena ada permintaan seorang temen untuk di tambahi fungsi hari  supaya bisa diseting harinya.

Mudah2an menambah wawasan

//+------------------------------------------------------------------+
//|                                       EA TutupGakPeduliOrder.mq4 |
//|                                          Copyright © 2011,Jum69  |
//|                                     http://Jumforex.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011,Jum69"
#property link      "http://Jumforex.blogspot.com"

//edit 26-4-2013
extern  bool   Yakin_Mau_Tutup_Semua=false;
extern string  Hari_Close = "=>Sesuai selera::";
extern bool    Senin = true;
extern bool    Selasa= true;
extern bool    Rabu= true;
extern bool    Kamis= true;
extern bool    Jumat= true;
extern  string Isi_Jamnya="===>Ingat gan jam Server+";
extern  int    Jam= 0;
extern  int    Menit= 0;
string j_1;
int init() {  return(0); }
int deinit()  {   return(0);  }
int start()
  {
  Infonya();
  if(Yakin_Mau_Tutup_Semua)j_1="Oke On"; else j_1="Off";
  if(Yakin_Mau_Tutup_Semua && Hour() == Jam && Minute()== Menit && tday()==1)c();
   return(0);
  }
void  Infonya()
 {
   Comment(" -----------------------------------------------",
      "\n :: ====>INFO TERKINI<===",     
      "\n ------------------------------------------------",
      "\n :: Spread                 : ", MarketInfo(Symbol(), MODE_SPREAD),
      "\n :: Leverage               : 1 : ", AccountLeverage(),
      "\n :: Equity                 : ", AccountEquity(),
      "\n :: Jam server             : ", Hour(), ": ",Minute(),
      "\n ------------------------------------------------",
      "\n :: Program Tutup Order    : ",j_1,
      "\n :: Jam Tutup Order        :", Jam, ": ",Menit,
      "\n ------------------------------------------------",
      "\n :: http://Jumforex.blogspot.com ",
      "\n ------------------------------------------------",
      "\n :: HAPPY TRADING @Jum69 ",
      "\n ------------------------------------------------");
     
}  
int tday()
{
int trd=0;
if(Senin  && DayOfWeek()==1) trd=1;
if(Selasa && DayOfWeek()==2) trd=1;
if(Rabu   && DayOfWeek()==3) trd=1;
if(Kamis  && DayOfWeek()==4) trd=1;
if(Jumat  && DayOfWeek()==5) trd=1;
return(trd);
}
void c()
{
for (int i = OrdersTotal() - 1; i >= 0; i--) {
  OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
  if (OrderSymbol() != Symbol() ) 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);
  }
 }
}


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

Belajar Membuat EA Sederhana 31 (Multi Pair)

Untuk melengkapi wawasan kita tentang membuat EA, disini saya akan coba share tentang Membuat EA multi pair (Ea untuk 6 pair). Hal ini untuk memenuhi permintaan beberapa teman melalui email.

Ea ini hanya sebagai dasar2 saja dan untuk pengembangan lebih lanjut silahkan untuk berkreasi
Dasar2 Ea dilengkapi dengan fungsi yang mudah untuk di comot  ,al :
  1. fungsi order untuk multi pair
  2. close semua order multi pair
  3. menghitung total order perpair
  4. Kebetulan signal diambil dari close candel dan open candel
Mungkin bagi temen2 yang berminat silahkan mengamati code berikut dan mudah2an pas untuk belajar

//koreksi 10/04/2013

//+------------------------------------------------------------------+
//|                                                Jum+MultiPair.mq4 |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "JumForex.blogspot.com"
#property link      "Gifaesa@yahoo.com"

extern string  EA="multipair";
extern bool    Close_Panic=false;
extern double  Lots=0.1;
extern int     Tp=5;
extern int     Sl=15;
extern string  Pr1="GBPUSD";
extern string  Pr2="EURUSD";
extern string  Pr3="AUDUSD";
extern string  Pr4="USDJPY";
extern string  Pr5="USDCHF";
extern string  Pr6="EURJPY";
string  Nama_EA = "Jum+MultiPair :";
int     Magic = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init(){ return(0); }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){ return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 u();
if(Close_Panic){c(Pr1,0);c(Pr1,1); c(Pr2,0);c(Pr2,1);c(Pr3,0);c(Pr3,1);c(Pr4,0);c(Pr4,1);c(Pr5,0);c(Pr5,1);c(Pr6,0);c(Pr6,1);  }

if(!Close_Panic){
if(jum(Pr1,0)==0 && O(Pr1,1)<C(Pr1,1))or(Pr1,0,Lots);
if(jum(Pr2,0)==0 && O(Pr2,1)<C(Pr2,1))or(Pr2,0,Lots);
if(jum(Pr3,0)==0 && O(Pr3,1)<C(Pr3,1))or(Pr3,0,Lots);
if(jum(Pr4,0)==0 && O(Pr4,1)<C(Pr4,1))or(Pr4,0,Lots);
if(jum(Pr5,0)==0 && O(Pr5,1)<C(Pr5,1))or(Pr5,0,Lots);
if(jum(Pr6,0)==0 && O(Pr6,1)<C(Pr6,1))or(Pr6,0,Lots);

if(jum(Pr1,1)==0 && O(Pr1,1)>C(Pr1,1))or(Pr1,1,Lots);
if(jum(Pr2,1)==0 && O(Pr1,2)>C(Pr2,1))or(Pr2,1,Lots);
if(jum(Pr3,1)==0 && O(Pr1,3)>C(Pr3,1))or(Pr3,1,Lots);
if(jum(Pr4,1)==0 && O(Pr1,4)>C(Pr4,1))or(Pr4,1,Lots);
if(jum(Pr5,1)==0 && O(Pr1,5)>C(Pr5,1))or(Pr5,1,Lots);
if(jum(Pr6,1)==0 && O(Pr1,6)>C(Pr6,1))or(Pr6,1,Lots);
}

//----
   return(0);
  }
//+------------------------------------------------------------------+
void or(string sy, int op,double lt)
   { double mod,mr,sl,tp;string st;
   if( op==0){ mod=MODE_ASK;st=" Buy ";}
   if( op==1){ mod=MODE_BID;st=" Sell ";}
    mr=MarketInfo(sy,mod);
   if( op==0){ sl=mr-Sl*pt(sy); tp=mr+Tp*pt(sy);}
   if( op==1){ sl=mr+Sl*pt(sy); tp=mr-Tp*pt(sy);}
   OrderSend(sy,op,lt,mr,3,sl, tp,Nama_EA+st+sy,Magic,0,Blue);
   }

int jum(string sy, int tipe)
    { int t=0;
    for(int i=0; i<OrdersTotal(); i++)
      {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!= sy || OrderMagicNumber()!=Magic || OrderType()!=tipe) continue;
      t++;
      } return(t);
    }

double pt(string sy)
{
  double t;
  double p = MarketInfo(sy, MODE_TICKSIZE);
  if (Digits == 3 || Digits == 5) t=10*p; else t=p;
  return(t);
  }

 void c(string sy,int m)
   {
    double mod;
    if( m==1) mod=MODE_ASK;
    if( m==0) mod=MODE_BID;
    double mr= MarketInfo(sy,mod);
    for (int i = OrdersTotal() - 1; i >= 0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != sy || OrderMagicNumber()!=Magic ) continue;
      if (OrderType() == m) OrderClose(OrderTicket(), OrderLots(), mr, 3, CLR_NONE);
      if (OrderType() == m && m>1) OrderDelete(OrderTicket());
      }
   }
double C(string sy,int s){return(iClose(sy,PERIOD_H4,s));}
double O(string sy,int s){return(iOpen(sy,PERIOD_H4,s));}

void u()
   {
   Comment("\n ",
   "\n ",
   "\n ------------------------------------------------",
   "\n :: =>+Jum+MultiPair<=",
   "\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 :: >>By: Jum69<<",
   "\n ------------------------------------------------");
  }


==========
 semoga bermanfaat untuk semua 
Salam Sukses trader Indonesia
*copas dari http://jumforex.blogspot.com