Tuesday, 25 December 2012

Belajar Membuat EA Sederhana 21 (Jebakan)


http://jumforex.blogspot.com/2012/12/belajar-membuat-ea-sederhana-21-jebakan.html

Pastikan sudah mengikuti di part 20 disini

Pada posting kali ini saya akan coba bahas tentang EA jebakan dengan menggunakan dua buah order pending stop.

Adapun rulenya adalah pada jam tertentu langsung pasang 2 buah order buystop dan sellstop dan ketika salah satu order pening stop tersebut tersentuh maka order pending stop yang tersisa langsung didelet.
Kemudian bila pada hari itu tidak tersentuh maka akan didelet. dan tambahan lain pada hari senin tidak trading karena EA ini cocok untuk trend pada hari itu , kalau hari senin diperkirakan biasanya sideway.

Jadi order setiap hari hanya akan melakukan order satu kali saja.

Coba perhatikan gambar di atas pada tanda panah , jadi pada jam server kira 2 jam 0 : 30 maka order stop akan di pasang .

Nah Kita coba buat deklarasinya sbb:


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;

Beberapa bagian yang saya coba siapkan adalah script  delet order type, disini dibuat dalam bentuk fungsi sbb :
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() == m) OrderDelete(OrderTicket());
  if (OrderType() == m) OrderDelete(OrderTicket());
  if (OrderType() == m) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
  if (OrderType() == m)OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
 }
}

Untuk menentukan order pada  jam tertentu sy buat bagian sbb
Hour()==Jam && Minute()==Menit


Untuk bagian delet ketika salah satu order stop tersenttuh adalah


if(jumlahorder(0)==1 && jumlahorder(1)==0){ 
   closeall(5);
   }
if(jumlahorder(0)==0 && jumlahorder(1)==1){ 
   closeall(4);
   }

sedang bagian untuk mendelet orderstop yang tidak tersentuh maka pada jam tersentu di delet
contoh jam 23

if(Hour()==23){
   closeall(4);
   closeall(5);
   }

Untuk asesoris order Pending stop :

   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;

Bagian lain untuk membuat EA libut trading hari senin adalah
DayOfWeek()!=1


Nah EA jadinya  sbb



//+------------------------------------------------------------------+
//|                                                    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()
  {
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 /*|| m!= OrderType()*/) continue;
  if (OrderType() == m) OrderDelete(OrderTicket());
  if (OrderType() == m) OrderDelete(OrderTicket());
  if (OrderType() == m) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
  if (OrderType() == m)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 ------------------------------------------------");
}



Nah jadi deh

Jangan lupa  kasih comment ya !

Belajar Membuat EA Sederhana 20 (Pending Order)


http://jumforex.blogspot.com/2012/12/belajar-membuat-ea-sederhana-pending.html

Pastikan telah mengikuti part 19 disini

sepertinya sudah lama gak posting !

Okey pada part ini saya akan coba bahas tentang EA yang terkait dengan Pending order.
Ada 6 macam type  yaitu

  1. Type  0 yaitu = Buy
  2. Type  1 yaitu = Sell
  3. Type  2 yaitu = Buylimit
  4. Type  3 yaitu = Selllimit
  5. Type  4 yaitu = Buystop
  6. Type  5 yaitu = Sellstop
Dari 6 macam type order tersebut type pending order ada 4 macam. (pastikan juga sudah membaca pada bagian part awal yang juga membahas type order).
Untuk itulah kita akan bahas type  pending order

1. Buylimit
       Buy limit merupakan order pesanan dibawah harga yang sedangan berjalan , sehingga pada strkur order yang perlu durubah adalah type order dan harga yang dipesan.
Perhatikan pada order buy berikut:

        OrderSend(Symbol(), 0, start_lot, Ask, 3, Ask-SL*Point,Ask+TP*Point, "", Magic, 0, Blue);

Ada bagian yang  bergaris bawah merupakan bagian yang harus dirubah dalam menggunakan order Pending tersebut.
Dan bagian yang juga harus diperhatikan adalah Jarak antara harga berjalan dengan harga yang dipesan untuk pending ordernya (OrdersOpenprice)==>    Ask- Jarak*Point
Sehingga jadinya sbb:
  OrderSend(Symbol(), 2, start_lot, Ask- Jarak*Point, 3, Ask- Jarak*Point-SL*Point,Ask-Jarak*Point+TP*Point, "", Magic, 0, Blue);
Bisa juga di tulis:
OrderSend(Symbol(), OP_BUYLIMIT, start_lot, Ask- Jarak*Point, 3, Ask- Jarak*Point-SL*Point,Ask-Jarak*Point+TP*Point, "", Magic, 0, Blue);

2. Selllimit

Selllimit merupakan order pesanan di atas harga yang sedang bergerak.
Seperti halnya pada order buylimiit bagian yg penting adalah type order dan jarak,
Nah silahkan di banding kan

  OrderSend(Symbol(), 3, start_lot, Bid+Jarak*Point, 3, Bid +Jarak*Point+ SL*Point,Bid+Jarak*Point-TP*Point, "", Magic, 0, Red);
Bisa juga di tulis:
OrderSend(Symbol(), OP_SELLLIMIT, start_lot, Bid+Jarak*Point, 3, Bid+ Jarak*Point + SL*Point,Bid+Jarak*Point-TP*Point, "", Magic, 0, Red);

3. Buystop

Buystop merupakan order pesanan di atas harga yang sedang bergerak.
Silahkan di amati dan dibandingkan dengan type sebelumnya

 OrderSend(Symbol(), 4, start_lot, Ask+ Jarak*Point, 3, Ask+ Jarak*Point-SL*Point,Ask+Jarak*Point+TP*Point, "", Magic, 0, Blue);
Bisa juga di tulis:
OrderSend(Symbol(), OP_BUYSTOP, start_lot, Ask+ Jarak*Point, 3, Ask+ Jarak*Point-SL*Point,Ask+Jarak*Point+TP*Point, "", Magic, 0, Blue);

4. Sellstop
Sellstop adalah merupakan order pesanan dibawah harga yang sedangan berjalan.
Silahkan di amati dan dibandingkan dengan type sebelumnya

  OrderSend(Symbol(), 5, start_lot, Bid-Jarak*Point, 3, Bid -Jarak*Point+SL*Point,Bid-Jarak*Point-TP*Point, "", Magic, 0, Red);
Bisa juga di tulis:
OrderSend(Symbol(), OP_SELLSTOP, start_lot, Bid-Jarak*Point, 3, Bid- Jarak*Point+SL*Point,Bid-Jarak*Point-TP*Point, "", Magic, 0, Red);

Nah Kita akan coba membuat EA sederhana dengan menggunakan ke 4 pending tersebut!
Namun sebelum kita buat kita harus membuat filter jumlah order sesuai typenya , Nah untuk memudahkan saya sediakan sbuah script yang merupakan fungsi untuk menghitung type order


int jumlahorder(int m)
{
int total = 0;
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol()|| OrderMagicNumber()!=Magic || OrderType()!=m ) continue;
 total++;
}
return(total);
}


Cara memanggilnya
Contoh:
Untuk Buylimit

if(jumlahorder(OP_BUYLIMIT) ==0 )OrderSend(Symbol(), 2, start_lot, Ask- Jarak*Point, 3, Ask- Jarak*Point-SL*Point,Ask-Jarak*Point+TP*Point, "", Magic, 0, Blue);

 atau

if(jumlahorder(2)==0) OrderSend(Symbol(), OP_BUYLIMIT, start_lot, Ask- Jarak*Point, 3, Ask- Jarak*Point-SL*Point,Ask-Jarak*Point+TP*Point, "", Magic, 0, Blue);

Untuk Selllimit
if(jumlahorder(OP_SELLLIMIT) ==0 )OrderSend(Symbol(), 3, start_lot, Bid+Jarak*Point, 3, Bid +Jarak*Point+SL*Point,Bid+Jarak*Point-TP*Point, "", Magic, 0, Red);

atau

if(jumlahorder(3)==0)OrderSend(Symbol(), OP_SELLLIMIT, start_lot, Bid+Jarak*Point, 3, Bid +Jarak*Point+SL*Point,Bid+Jarak*Point-TP*Point, "", Magic, 0, Red);


Nah silahkan di lanjut deh

Tapi saya udah coba buatkan EA sederhananya  untuk lebih memahami
silahkan di amati


//+------------------------------------------------------------------+
//|                                             EA Pending Order.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//-------------------------------------------------------------------+


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

extern string  Nama_EA                 = "Jum+Pending";
extern int     Mulai_Jam               = 6;
extern int     Akhir_Jam               = 20;
extern int     TP                      = 20;
extern int     SL                      = 100;
extern double  Lots                    = 0.01;
extern int     Jarak                   = 15;
extern int     Magic                   = 69;

double slb,tpb,sls,tps,pt;
int wt,wk,tiket,ticet;
//+------------------------------------------------------------------+
//| 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()
  {
label();
  
   if(Jam_trade()==1){
      if(jumlahorder(2)==0)OrderSend(Symbol(), OP_BUYLIMIT,NR(Lots), Ask- Jarak*Point, 3, Ask- Jarak*Point-SL*Point,Ask-Jarak*Point+TP*Point, "", Magic, 0, Blue);
      if(jumlahorder(3)==0)OrderSend(Symbol(), OP_SELLLIMIT,NR(Lots) , Bid+Jarak*Point, 3, Bid+ Jarak*Point+SL*Point,Bid+Jarak*Point-TP*Point, "", Magic, 0, Aqua);
      if(jumlahorder(4)==0)OrderSend(Symbol(), OP_BUYSTOP,NR(Lots) , Ask+ Jarak*Point, 3, Ask+ Jarak*Point-SL*Point,Ask+Jarak*Point+TP*Point, "", Magic, 0, Blue);
      if(jumlahorder(5)==0)OrderSend(Symbol(), OP_SELLSTOP,NR(Lots) , Bid-Jarak*Point, 3, Bid- Jarak*Point+SL*Point,Bid-Jarak*Point-TP*Point, "", Magic, 0, Yellow);
     }
   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 label()
{
 Comment("\n ",
   "\n ",
   "\n ------------------------------------------------",
   "\n :: =>+Jum+Pending<=",
   "\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 ------------------------------------------------");
}

Bila ada manfaatnya atau belum jelas silahkan kasih comment ya

Happppy profit deh

Belajar Membuat EA Sederhana 19 Martingel


http://jumforex.blogspot.com/2012/11/belajar-membuat-ea-sederhana-19.html

Pastikan udah baca di part 18 disini
Berbicara EA martingel tentu gak ada habisnya !
Banyak trader yang anti dengan EA martingel tapi juga banyak trader penggemar martingel
Haaaaa
Biasanya banyak trader yang  kebetulan habis MC gara2 EA martingel pasti akan memberi sumpah serapah" Dasar EA martingel heeeee kapok deh menggunakan EA martingel....."

Sebagai pengguna EA martingel tentu saja bagi saya EA martingel merupakan  EA yg profitabel terlepas dari kekurangan dan kelemahannya , yang penting bisa memahami dan memperhitungankan risikonya  tentu tidak menjadi masalah.

Oke pada part 19 ini saya akan bahas tentang EA martingel sederhana dengan menggunakan 2 buah indikator yaitu  zigzag dan candel mingguan

Rulesnya :
Buy :

  • Zigzag muncul dibawah (lower) 
  • Harga di atas harga open candel minggu yang sedang berjalan
  • op tidak dalam candel yang sama seperti pada part 18
Untuk sel kebalikannya!

Tambahan lain pada EA kali ini adalah menggunakan target Equety ( jika target equety terpenuhi maka EA berhenti trading) EA yang akan kita gunakan masih sama seperti pada part 18...


Oke yang perlu dibahas dulu adalah indikator zigzag 
Nah pada indikator zigzag yang perlu dipahami adalah bahwa indikator ini berubah mengikuti harga tertinggi (Uper) dan terendah (lower).
Kita buat customnya:

    double up=iCustom(Symbol(),0,"ZigZag",  ExtDepth , ExtDeviation, ExtBackstep, MODE_UPPER,0 );
    double lo=iCustom(Symbol(),0,"ZigZag", ExtDepth , ExtDeviation, ExtBackstep, MODE_LOWER, 0);

Jadi modenya MODE_UPPER ketika harga posisi diatas dan MODE_LOWER ketika posisi dibawah.
Kemudian mengingat kita akan mengacu pada posisi zigzag dan berapapun jarak candel maka pada shift nya kita buat fleksibel saya tambahkan operasi for sebagai berikut

    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;}
     if(up>0 )  aturan buy 
     if(lo>0)   aturan sell

Bars ini adalah angka yang jumlah tick candel untuk menunjukkan shift nya dalam menghitung candel  , bisa juga diganti dengan angka 1000 atau lebih ,ini untuk menentukan dimasa candel kebelakang  keberadaan posisi zigzag.

Sedangkan untuk membuat menentukan Open candel mingguan kita gunakan:
double  OP=iOpen(Symbol(),PERIOD_W1,0);
if(Ask>OP) aturan buy 
if(Bid<OP)  aturan sell

Nah dari uraian diatas kita gunakan aturan buy sbb

int sigz, sigc;
     if(up>0 )  sigz= 1;
     if(lo>0)    sigz= 5;

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

if(sigz+sigc==2) op buy
if(sigz+sigc==10) op sell

Penggunaan angka 1 dan 5 ini sebarang aja intinya untuk memudahkan identifikasi saja , jadi suka-suka saja!

Tambahan lain adalah target Equety  (jika target equety terpenuhi maka EA berhenti trading).

extern double Target_Equety= 1000;

supaya bisa data balance ketika EA di attack ke chart tersimpan maka kita buat dulu data balance yang ditempatkan di bawah int init()


int init()
  {
bal= AccountBalance();
   return(0);
  }


dan untuk menghentikan ketika target terpenuhi maka harus dibuat coding target dibawah int start() , sbb:


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

Setelah di coba penampakannya sbb:



Nah silahkan  di rakit sendiri dulu ya !

Monggo di kasih comment dulu!

Belajar Membuat EA Sederhana 18 Martingel


http://jumforex.blogspot.com/2012/10/belajar-membuat-ea-sederhana-18.html

Pastian sudah mengikuti part 17 sebelumnya disiini

Pada pembahasan ali ini kita akan membuat EA yang bertype Martingel , saya rasa banyak penggemar Ea yang berjenis kelaminnya martingel heeeeeeee

Pada Ea martingel yang kita bikin ini hanya mengedit Ea sebelumnya di part 17 dan saya beri nama Jum+Donchian+v2

Seperti biasa dalam Ea martingel ada beberapa parameter tambahan bila dibanding dengan Ea non martingel,  al:

  1. Pengali lot , sering diberi nama multiflier atau multi saja ..... atau dimarti haaa   ya .. suka2 aja yang bikin. 
  2. Jarak antar order , sering diberi nama pips atau range atau apalah suka2
  3. Banyaknya level order, ini merupaan batasan jumlah order masksimum

Nah dari penambahan 3 parameter di atas maka kita akan membuat codingnya

Pengali lot

Ada banyak cara dalam membuat pengali lot order ini , pada bagian ini saya akan menggunakan fungsi matematika MathPow (merupakan fungsi matematika yang digunakan menghitung kelipatan).
Aturannya  MathPow(double value1, double value 2)
value 1 = merupakan bilangan kelipatan
value 2 = bilangan level kelipatan

Jadi dalam hal ini kita gunakan Lots*MathPow(DiMarti,jumlahorder())
dalam hal ini pengali lot kita gunaan DiMarti

Cara lain selain dengan menggunakan MathPow adalah dengan mengalikan order lot terakhir dengan DiMarti 
(lain kali kita bahas)
Nah dalam hal ini saya buat fungsinya sbb:


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



Jarak antar order
Jarak antar order ini di hitung dari harga order sebelumnya sering disebut Orderopenprice.
Nah untuk menentukan besaran Orderopenprice pada order terahir perlu dibuat scrip pencacah atau untuk menghitung order openprice terahir
saya gunakan fungsi sbb:

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

Banyaknya level order
Untuk membatasi order maka saya gunakan batasan jumlahorder(0)<Max_order , jumlahorder(1)<Max_order 

Haaa wah udah hampir jadi nih .....

Nah saya aan tambahkan filter candel supaya kalau ada news panjang akan order setiap pergantian candel , dengan memanfaatan wt!=Time[0] seperti pembahasan sebelumnhya.

Terapan tambahan untuk order martingelnya saya buat sbb:


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


Dan untuk sedikit melihat info maka saya juga  buatkan fungsi untuk membuat labelnya

void label()
{
Comment("\n ",
"\n ",
"\n ------------------------------------------------",
"\n :: =>+Jum+Donchian+v2<=",
"\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 ------------------------------------------------");
}


Sehingga jadinya gini deh


//+------------------------------------------------------------------+
//|                                                 EA Jum+Donchian+ |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+

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

extern string  Nama_EA                 = "Jum+Donchian+v2";
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.3;
extern bool    TrailingStop_           = false;
extern int     TrailingStop            = 20;
extern int     Magic                   = 69;
extern string  Seting_Donchian         = "Sesuka Hati";
extern int     IPeriod                 = 20;

double slb,tpb,sls,tps,pt;
int wt,wk,tiket,ticet;
//+------------------------------------------------------------------+
//| 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()
  {
label();
if(TrailingStop_)dtrailing();
if(Tp_in_Money && TP_in_money<= money()){ 
   closeall(0);
   closeall(1);
   }
//----
 double da = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 0,0 ) ;// garis atas modenya 0
 double db = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 1,0 ) ;// garis bawah modenya 1
 double dt = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 2,0 ) ;// garis tengah modenya 2
int signal;
if(da<Ask) signal=1;// aturan buy
if(db>Bid) signal=2;//aturan sell
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];  }

   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+Donchian+v2<=",
"\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 ------------------------------------------------");
}

Sepertinya EA ini udah layak di Coba deh untuk di Beck test  ........

Nah sampai disini monggo dicoba kalao ada manfaat dan pertanyaan silahkan kasih komen ya

Smoga bermanfaat!

Belajar Membuat EA Sederhana 17


http://jumforex.blogspot.com/2012/10/belajar-membuat-ea-sederhana-17.html

Pastikan telah mengikuti di part 16 disini

Nah setelah kita pelajari cara membuat custom  indikator Donchian pada part sebelumnya , maka kita akan coba bikin EAnya dengan indikator tersebut
Yandg belum punya indikator silahkan  download dulu di part 15

Rulenya sbb:
mode trend
Buy : Pada saat harga di atas garis merah atas
Sell : Pada saat harga di bawah garis merah bawah

mode reversal
dan rule di atas di balik

Sehingga di tambahkan
if(Mode_trend){
if(da<Ask) signal=1;// aturan buy
if(db>Bid) signal=2;//aturan sell
}

if(!Mode_trend){
if(da<Ask) signal=2;// aturan sell
if(db>Bid) signal=1;//aturan buy
}
Ini untu mengatur sesuai selera signal mana yang mau digunakan

Untuk EA yang dibikin mengacu pada EA yang telah dibikin sebelumnya



//+------------------------------------------------------------------+
//|                                               EA Jum+Donchian+   |
//|                                                gifaesa@yahoo.com |
//|                                     http://JumForex.blogspot.com |
//+------------------------------------------------------------------+

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

extern string  Nama_EA                 = "Jum+Donchian+";
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             = false;
extern double  TP_in_money             = 2;
extern bool    Mode_trend             = true;
extern int     TP                      = 100;
extern int     SL                      = 500;
extern double  Lots                    = 0.1;
extern bool    TrailingStop_           = true;
extern int     TrailingStop            = 25;
extern int     Magic                   = 69;
extern string  Seting_Donchian         = "Sesuka Hati";
extern int     IPeriod                 = 20;

double slb,tpb,sls,tps,pt;
//+------------------------------------------------------------------+
//| 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(TrailingStop_)dtrailing();
if(Tp_in_Money && TP_in_money<= money()) closeall();
//----
 double da = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 0,0 ) ;// garis atas modenya 0
 double db = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 1,0 ) ;// garis bawah modenya 1
 double dt = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 2,0 ) ;// garis tengah modenya 2
int signal;
if(Mode_trend){
if(da<Ask) signal=1;// aturan buy
if(db>Bid) signal=2;//aturan sell
}

if(!Mode_trend){
if(da<Ask) signal=2;// aturan sell
if(db>Bid) signal=1;//aturan buy
}

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==1) {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==2) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,sls, tps,Nama_EA,Magic,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() || 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()
{
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());
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);
}

Jadi deh
Mudah2 an dengan gambaran EA di atas akan membuka wawasan bagi trader semuanya

Salam Sukses

Belajar Membuat EA Sederhana 16


http://jumforex.blogspot.com/2012/10/belajar-membuat-ea-sederhana-16.html

Setelah kita membuat EA average dengan pergantian candel pada part sebelumnya

Kali ini Kita akan bahas membuat EA dengan indikator diluar Mt4
Nah kali ini kita aan bahas membuat EA dengan indikator Donchian Bands
Indikator ini sudah cukup terkenal

Nah sebelum kita coba membuat custom indiator ini, hal yang perlu diketahui sebelum membuat custom indinya adalah mencek nilai indikator dulu , caranya:

attack indikator ke chart di mt4
tekan Ctrl D

Nah sekarang perhatikan nilai yang ada dalam jendela tersebut!
Mengingat banyanya indikator yang dibikin oleh para programer tentu untuk membaca indikator dan menentukan nilai perlu latihan dan sering mencoba dan mencoba!


Pada gambar di atas adalah cara menentukan indikator yang tidak ada di mt4, di dahului dengan iCustom.

double donci = iCustom(Symbol(), Timeframe, "Nama indiatornya", bufer, mode, shift);

Saya beri nama donci (contoh saja)  ,
Timeframe bisa di sesuaikan lihat pembahasan di part awal
Nama indikator  disesuaikan dengan tanda " "
bufer ini tergantung indikatornya , setiap indikator punya bufer berbeda-beda maksimal jumlahnya 8
contoh kalo ada 3 bufer
double indi_x = iCustom(Symbol(), Timeframe, "Nama indiatornya", bufer1, bufer2, bufer3, mode, shift);
Mode adalah urutan nilai yang keluar dari indikatornya (bisa di cek pada jendela Ctrl D), ini dimulai dari 0 ;
Shift adalah seperti pada candel yang telah dibahas sebelumnya , contoh diisi 0 artinya candel yang sedang berjalan, diisi 1 artinya candel 2 sebelumnya

Oke kita lanjut  membuat custom dengan indikator Donchian Bands , namun seblum itu silahkan download dulu indiatornya disini 

Nah kalu sudah di download silahan di attac ke Mt4 dan kemudian tekan Ctrl D


Perhatikan pada jendela data windows
Ada 3 buah nilai , paling atas ini adalah mode 0, sedangkan di bawahnya mode 1 dan paling bawah mode 2.

Pada tampilan indiator trsebut ada 3 buah garis yaitu paling atas merah, tengah hijau dan bawah merah.
Untuk menetuan nilai 3 garis tersebut arahan pointer ke garis tersebut!
Pada garis paling atas maka kalau di cek data windows pada saat diarahan garis merah atas maka nilainya akan sama dengan mode 0,
Pada garis hijau tengah maka nilainya cocok dengan mode 3
dan pada garis bawah merah nilainya cocok dengan mode 2

Nah dari nilai diatas untu menentuan customnya

Searang kita lihat nilai bufernya , tekan Ctrl I dan double klik pada indikator Donchian Bands , maa aan tampil sbb:


Maka terdapat satu nilai bufer , yaitu IPeriod

Sekarang dari data di atas kita coba buat customnya
Karena ada 3 buah modenya sehingga kita buat 3 buah nama ,  yaitu da, db dan dt (nama ini sebarang saja)


double da = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 0,0 ) ;// garis atas modenya 0
double db = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 1,0 ) ;.// garis bawah modenya 1
double dt = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 2,0 ) ;// garis tengah modenya 2

pada shift nya kebetulan saya ini 0 artinya candel yang sedang berjalan

Untuk mengecek apakah custom yang kita buat tersebut berhasil membaca nilanya maka kita lihat dengan mmanfaatkan comment

Saya coba buatkan EAnya


//+------------------------------------------------------------------+
//|                                                           in.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int IPeriod=20;

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

int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 double da = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 0,0 ) ;// garis atas modenya 0
 double db = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 1,0 ) ;// garis bawah modenya 1
 double dt = iCustom(Symbol(), 0,"Donchian Bands",IPeriod, 2,0 ) ;// garis tengah modenya 2

Comment("garis atas ",da,"garis tengah ",dt, "garis bawah ",db);
//----
   return(0);
  }
//+------------------------------------------------------------------+


dari EA pembaca tersebut akan terlihat sbb:



Oke cukup mudah kan?

Oke deh yang sudah mengerti silahan dibuat EAnya ya  dengan mengacu pada EA pada part sebelumnya, saya kira cuup mudah!

Semoga sukses

Jangan lupa asih komen kalau sudah berhasil !

Sampai di part berikutnya!