Tuesday 15 October 2013

Belajar Membuat EA Sederhana 38 (terapan indikator IFX_Keltner_Channel III)

Kita sambung deh part sebelumnya http://jumforex.blogspot.com/2013/07/belajar-membuat-ea-sederhana-37-terapan.html

Dibagian sebelumnya sudah di jelaskan tentang model indikator ini. dan juga ada teman yang sudah bikin eanya di part sebelum nya .
Kali saya juga agan share tentang ea yg berdasarkan indikator ini dengan model averaging .

EA ini cococok untuk mengejar rabat !

Tapi jangan lupa Ea ini ada proteksi demonya  | jadi harus dihilangkan dulu

e

gitu deh sementara

 //+------------------------------------------------------------------+
//|                                            Jum+Keltner Chan .mq4 |
//|                                           Copyright 2013, Annura |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "JumForex.blogspot.com"
#property link      "Gifaesa@yahoo.com"

extern string Nama_EA               = "Jum+Keltner+Chan";
extern int    TP                    = 11;
extern int    TP_money              = 11;
extern int    SL                    = 20;
extern bool   SL_otomatis           = false;
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;
double pt,SLb,TPb,SLs,TPs;

int init()
  {
   if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()  {lab();
if(!IsDemo()){Alert("hanya untuk demo boss"); return(0);}
  if(TP_money<=man())closeall();
 
      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);
      static datetime w;
      if(TP==0)TPb=0;else TPb=Ask+TP*pt;
      if(TP==0)TPs=0;else TPs=Bid-TP*pt;
      if(SL==0)SLb=0;else SLb=Ask-SL*pt;
      if(SL==0)SLs=0;else SLs=Bid+SL*pt;
      if(SL_otomatis){  SLb=kfb; SLs=kfa;}//else if(!SL_otomatis){SLb=Ask-SL*pt; SLs=Bid +SL*pt;}
      if(w!=Time[0] && IsDemo()){
      if(Ask<kfb && JumlahOrder(0)<Max_order)   {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,3,SLb,TPb,Nama_EA,Magic,0,Blue);
      }
      if(Bid>kfa && JumlahOrder(1)<Max_order) {
        OrderSend(Symbol(),OP_SELL,Lot,Bid,3,SLs,TPs,Nama_EA,Magic,0,Red);
          }
      w=Time[0]; }

   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;
 if(IsDemo())Total++; }
 return(Total);}
double man(){double Total = 0;
 for(int i=0; i<OrdersTotal(); i++)   {
 OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
 if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic ) continue;
 if(IsDemo())Total+=OrderProfit(); }
 return(Total);}
void closeall(){
 for (int i = OrdersTotal() - 1; i >= 0; i--) {
 OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
 if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic  ) 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); }}
void lab(){
 Comment("\n ",
   "\n ------------------------------------------------",
   "\n :: Spread                 : ", MarketInfo(Symbol(), MODE_SPREAD),
   "\n :: Leverage               : 1 : ", AccountLeverage(),
   "\n :: Equity                 : ", AccountEquity(),
   "\n :: Jam Server             :", Hour(), ":", Minute(),
   "\n ------------------------------------------------",
   "\n :: Total Op Buy  : ",JumlahOrder(0),
   "\n :: Total Op Sell : ",JumlahOrder(1),
   "\n ------------------------------------------------",
   "\n :: >>By: Jum69<<",
   "\n ------------------------------------------------");
}










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





Trims mbak Anie  atas kirimannya.

Tuesday 16 July 2013

Belajar Membuat EA Sederhana 36 (terapan indikator IFX_Keltner_Channel)

http://jumforex.blogspot.com/2013/07/belajar-membuat-ea-sederhana-36-terapan.html

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...

Saturday 8 June 2013

Belajar Membuat EA Sederhana 35 (Proteksi EA 3)

http://jumforex.blogspot.com/2013/05/belajar-membuat-ea-sederhana-35.html 


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



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

------------------------------------------------------------------------------------------
Pastikan mengikuti part sebelumnya
Belajar Membuat EA Sederhana 33
Belajar Membuat EA Sederhana 34


3 komentar:

  1. Mantaps Kang...

    maju terus lah trader Indonesia khusus nya dibawah bendera JumForex
    Balas
  2. salam kenal ya kang, saya arifin...sukses selalu buat akang yang sudah mau share mengenai membuat ea sederhana, tentunya ilmu yg kang jum share sangat bermanfaat buat saya dan teman2....oh iya saya punya indikator bisa akang bantu saya agar indikator itu bisa jadi EA ?
    Balas
  3. @Kang Arifin salam kenal kembali dari saya,
    kalo berkenan share indikatornya disini, kita oprek sama2, sekalian belajar

    @Kang Jum,
    Jika posisi pasar sideways keci (dibawah 50 poin) l..lumayan report EA part35 ini, BTW thank you

    salam,
    Balas

Belajar Membuat EA Sederhana 34 (Proteksi EA 2)

http://jumforex.blogspot.com/2013/05/belajar-membuat-ea-sederhana-34.html 

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





He semoga menambah wawasan deh


Salam profit All

Mari Membuat EA (Logic Stoch plus Martingale)

http://www.blogrumahfx.com/2013/01/mari-membuat-ea-logic-stoch-plus.html

//+-----------------------------------------------------------------------+
//|                                        ~~ tes trigger op stoch ~~.mq4 |
//|                                          @tes trigger op stoch        |
//|                                                                       |
//+-----------------------------------------------------------------------+
#property copyright "@tes trigger op stoch"

/*-- Parameter ini ditampilkan di EA dan bisa diubah --*/

extern   int      TakeProfit  10;    // Nilai TP setiap OP di EA Martingale ini
extern   int      PipStep     10;    // Jarak pip dimana akan buka OP baru
extern   int      Slippage    3;    // Apa itu slippage ? Googling sendiri ya..
extern   double   Lots        0.05;  // Nilai lots awal, nantinya akan digandakan setiap step
extern   double   Multiply    3.0;  // Nilai pengali setiap step OP baru
extern   int      MaxTrade    7;   // Banyak OP maksimal yang boleh dijalankan
extern   bool     UseTime     TRUE// Pilihan apakah memakai waktu bekerjanya EA ?
extern   int      HourStart   24;   // Waktu mulai EA bekerja
extern   int      HourEnd     13;   // Waktu akhir EA bekerja

/*-- Parameter ini tidak ditampilkan di EA --*/

string   EAName    "~~tes trigger op stoch~~"// Nama EA, untuk ditampilkan di layar
string   EAComment "~~tes trigger op stoch~~"; // Variabel ini akan kita masukkan di setiap OP sebagai Comment
int      EAMagicNumber 8095;  // Magic Number
double   SetPoint      0;     // Variabel SetPoint untuk kode digit broker 4 atau 5


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

int init()
  {

   //----

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

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+

int deinit()
  {
//----

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

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start()
  {

   //----

   
int   iTrade=0;


   
Comment(EAName);             // Tampilkan Nama EA di layar

   /* -- Jika tidak ada OP sama sekali, maka jalankan fungsi berikut --*/
   /* -- Disinilah tempat anda memasukkan koding indikator untuk memicu OP --*/
   
if(OrdersTotal()==0)
   {

       if ((
iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_MAIN,0) > iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_SIGNAL,0)))
      {
         
/*-- Order Buy --*/
         
OrderSend(Symbol(), OP_BUYLots,  AskSlippage0Ask+TakeProfit*SetPointEACommentEAMagicNumber);

      }
      else if ((
iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_MAIN,0) < iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_SIGNAL,0)))
      {
         
/*-- Order Sell --*/
         
OrderSend(Symbol(), OP_SELLLotsBidSlippage0Bid-TakeProfit*SetPointEACommentEAMagicNumber);
      }

   }


   
/* -- Inilah Fungsi Martingale. Jika ada OP yang salah, maka lakukan martingale --*/
   
if(OrdersTotal()>=1)
   {
      
GoMartingale();
   }

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

//+------------------------------------------------------------------+

/*--agar EA bisa running di Broker 4 Digit atau 5 Digit--*/

void SetBroker()
{
   if (
Digits==|| Digits==5// Perintah untuk broker 5 Digits
      
{SetPoint=Point*10;}
   else                        
// Perintah untuk broker 4 Digits
      
{SetPoint=Point;}
}
void GoMartingale()
{
         
int      iCount      =  0;
         
double   LastOP      =  0;
         
double   LastLots    =  0;
         
bool     LastIsBuy   =  FALSE;
         
int      iTotalBuy   =  0;
         
int      iTotalSell  =  0;
         
int      Spread=0;

         
SpreadMarketInfo(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_BUYMultiply*LastLotsAskSlippage0Ask+TakeProfit*SetPointEACommentEAMagicNumber);
               
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_SELLMultiply*LastLotsBidSlippage0Bid-TakeProfit*SetPointEACommentEAMagicNumber);
               
ModifyTP();
               return(
0);
            }
         }

}

/*-- 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(), 0NewTP0);
           }

           
/*- Kalau semua OP adalah SELL, maka ubahlah TP mereka -*/
           
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
           {
               
OrderModify(OrderTicket(), OrderLots(), 0NewTP0);
           }

         }
}