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

         }
}