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