Tuesday 18 December 2012

Compoundinf Lots.mq4

Quote Originally Posted by rusmanrd View Post
Maaf nindih treadnya TS
saya mau minta dibuatkan dong scrip / logic atau apalah namanya yang berfungsi untuk menggandakan lot 2x lipat dari lot semula dengan hitungan :
jika robot di attach ke chart dan profit 50% dari equty maka robot nambah lot dari yang semula
contoh: equty $100 >>>trading>>>lot 0.1 >>>profit >>>equty sudah $150 >>>robot buka posisi dengan lot baru senilai 0.2>>>dan seterusnya
Dan kalo bisa hitungan persennya bisa diganti dengan keinginan user & kalo jadi naruhnya di bagian struktur yang mana ?
terima kasih dan salam profit
ane coba bro!
jadi setiap equety bertambah 50% (bisa diatur) maka lot akan bertambah sebesar start_lot
perhitungannya sejak balance di attack ke cart






//+------------------------------------------------------------------+ 
//|                                             Compoundinf Lots.mq4 | 
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double Compound_persen=50//setiap sebesar Compound_persen maka lot  extern double start_lot=0.1;// akan bertamabh sebesar star_lot double bal;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+ 
int init()
  { 
//----
   
bal=AccountBalance(); //----
   
return(0);
  } 
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+ 
int deinit()
  { 
//----
   
//----
   
return(0);
  } 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+ 
int start()
  { 
//----
   
double dlot,com;
   
com=Compound_persen*bal/100;// ini lot compound presen balance
   
dlot=start_lot +(start_lot*MathFloor((AccountEquity()-bal)/com));// ini hitungan lotnya 
   
//----
   
return(0);
  } 
//+------------------------------------------------------------------+  

compounding lot

Master-master sekalian, ada gak yg bisa bantu newbie ni...
dah pusing googling nyari coding buat compounding lot (menggandakan lot) jika equity bertambah...
bisa tolong dibuatin dong master sekalian...
rulenya begini: min lot 0.01 jika last equity bertambah $40 dari start equity maka utk OP berikut lotnya ditambah 0.01 dari lot terakhir jadi setiap pertambahan equity $40 lot bertambah 0.01 pada op berikutnya jadinya equity 50 > 0.01 lot, 90 > 0.02 lot, dst. dan jika last equity berkurang $40 maka lot utk next OP dikurangi 0.01 dari lot last OP jadinya misal: equity 120 > 0.03 -$40 jadi 90 maka lotnya dikurangi 0.01 jadi 0.02 utk op berikutnya. minimal equity $50 minmal lotnya 0.01.
mohon bantuannya master-master maklum masih belajar

lot= (MathFloor ( AccountEquity() / 40 )) / 100 ; 
if (lot<0.01) { lot=0.01}


Makasi master atas rumusnya, maksud saya setiap penambahan $40 otomatis lot akan bertambah 0.01 pada saat ea op berikutnya dan sebaliknya jika berkurang. Sebenarnya saya sudah punya ea yg memakai perhitungan yg master berikan itu yaitu ea scalper 2010 eurousd. Moga ada master yg lain mau mampir utk beri petunjuk.

lot= lot_awal + (MathFloor ( (ekuity awal - AccountEquity() )/ 40 )) / 100 ; 
if (lot<0.01) { lot=0.01;}


Quote Originally Posted by pengen-profit View Post
lot= lot_awal + (MathFloor ( (ekuity awal - AccountEquity() )/ 40 )) / 100 ;
if (lot<0.01) { lot=0.01;}


coba Agan hitung pake kalkulator pasti cocok deh....

apa mendingan upload codingnya.. biar kita bisa lihat..

kalo keberatan codingnya di lihat.. minimal upload bagian yang hitung lotnya saja..




//|                                                   OP with MM.mq4 |
//|                                                        FxCielers |
//|                                Oprek from "pengen-profit script" |
//+------------------------------------------------------------------+

#property copyright "FxCielers"
#property link      "indo.mt5.com"
#property show_inputs
#include <stderror.mqh>
#include <stdlib.mqh>
 
extern double takeprofit=7;
 
extern double stoploss=30;
 
extern double slippage=3;
 
extern double risk0.001;
 
extern string _risk"0.001 berarti 0.1% untuk 10 pips";
 
double lotsize ;
 
extern bool buy true;
 
extern bool sell false;
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
 { 
double tick=MarketInfo(Symbol(),MODE_TICKVALUE);
   
RefreshRates();
   while( 
IsTradeContextBusy() ) { Sleep(100); }
 
  {
int ticket;//----if (buy==false && sell==false)
{
Alert("Mau Buy apa Sell?? pilih salah satu dong..");Alert("Ulangi Lagi ya..!!!");
return (
0);
}
//----
  
lotsize= (AccountEquity()*risk/(10*tick)) ;
{
if (
buy==true)
ticketOrderSend(Symbol(),OP_BUY,lotsize,Ask,slippage*Point,Bid-stoploss*Point,Ask+takeprofit*Point,"FxCielers",0,0,Blue);
if (
ticket>0)
{
Alert("buy order sukses");

}
else
Alert("error opening buy order, error code = "ErrorDescription(GetLastError()));
}

if (
sell==true)
ticketOrderSend(Symbol(),OP_SELL,lotsize,Bid,slippage*Point,Ask+stoploss*Point,Bid-takeprofit*Point,"FxCielers",0,0,Red);
if (
ticket>0)
{
Alert("sell order sukses");

}
else
Alert("error opening sell order, error code = "ErrorDescription(GetLastError()));
}
}}

  }
//+------------------------------------------------------------------+  

error 130

error 130 berarti salah di stoploss atau takeprofit. pastikan saat dicoba, setting SL/TP sudah sesuai dengan ketentuan broker. misalnya fxopen minimal 10 point dari harga running.

Belajar Membuat EA Sederhana 5


http://jumforex.blogspot.com/2012/08/belajar-membuat-ea-sederhana-5.html

Untuk mengikuti ini pastikan sudah membaca  part 4 di sini

OKe semuanya
Kalau pada EA yang sudah kita buat pada part 4 bahwa EA sudah bisa digunakan di semua pair dan telah digunakan fliter pair.
Kali ini kita akan menambahkan supaya EA juga bisa melakukan order sell, mengingat pada EA sebelumnya hanya melakukan order buy saja.

Untuk menambahkan Supaya bisa order sell maka yang diperlukan adalah skrip perintah order sell, sbb:

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);

Coba bandingkan dengan perintah order buy!
Ada perbedaan yang perlu diketahui bahwa order buy mengacu pada harga berjalan Ask sedangkan order sell menggunakan  Bid.
Selisih antara Ask dan bid inilah yang sering di sebut dengan spreed

Pada order buy
Ask-SL*Point, 
Ask+TP*Point,

Pada order sell
Bid+SL*Point, 
Bid-TP*Point 

Dan untuk membedakan warna order disini saya gunakan blue untuk buy dan red untuk sell.

Nah sekarang bagaimana untuk memasukkan perintah  order sell?

Pada EA 1 di part 4 bahwa menggunakan filter pair langung, untuk itu sudah disediakan variabel penghitung order sell yaitu Jumlahsell  ,sehingga bisa dibuat kondisi : if(Jumlahsell==0) atau if(Jumlahsell<1)
Jadinya sbb:
if(Jumlahsell==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

Pada EA 2 yang menggunakan filter pair dengan menggunakan fungsi adalah   if(jumlahorder(1)==0) bisa juga  if(jumlahorder(OP_SELL)==0) atau   if(jumlahorder(1)<1), bisa juga   if(jumlahorder(1)<1)

Jadinya sbb: 

if(jumlahorder(OP_SELL)==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
  
 bisa juga digunakan
if(jumlahorder(1)<1){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

 Kemudian kita masukan kedalam EAnya

EA 1 sbb:


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

extern string  Nama_EA                 = "Buy dan Sell";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

int Jumlahbuy=0;
  int Jumlahsell=0;
  for(int i=0; i<OrdersTotal(); i++)
  {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      if(OrderType()==OP_BUY)   Jumlahbuy++;
      if(OrderType()==OP_SELL)  Jumlahsell++;
  }

  if(Jumlahbuy==0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); } 
if(Jumlahsell==0){OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}

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


Jadi deh silahkan di Compile dulu kalau sukses berari EA sudah bisa Order sell , artnya bila tidak order buy maka akanmmelakukan order buy dan bila tidak ada order sell maka akan melakukan order sell sehingga EA ini akan melakukan hedge (order buy dan sell secara bersamaan)

Mudah kan?

Untuk EA 2 menggunakan filer fungsi sebagai berikut

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

extern string  Nama_EA                 = 
"Buy dan Sell";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

  if(jumlahorder(0)==0) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,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);
} 

  
Oke silahkan di coba di Compile dulu dan kemudian di Beck test  , dan bila mana berhasil maka EA akan kelihatan melakukan buy dan sell

Kemudaian hal lain yang perlu di ketahui bahwa dalam bahasa program mql4 untuk membuat keterangan yang dimana keterangan tersebut tidak di baca sebaga program biasa nya digunakan tanda  // untuk satu baris tetapi bila terdiri dari banya baris digunakan tanda  /* keterangan  dan diakhiri */ 

Semoga berhasil dan selamat mencoba

Sampai ketemu di part 6 (menambafkan filterWaktu trading) 

Belajar Membuat EA Sederhana 4


http://jumforex.blogspot.com/2012/08/belajar-membuat-ea-sederhana-4.html

Untuk mengikuti ini pastikan sudah membaca  part 3 di sini

Sebelum memulai ini saya mengucapkan Selamat Idhul Fitri
"Minal Aidzin wal Faizin 
Mohon Maaf Lahir dan Batin"

Sebelumnya kita sudah mencoba membuat EA yang sederhana dimana EA yang telah dibikin hanya melakukan order Buy dan order dibatasi hanya  1 yang aktif yaitu buy.

Kalau di perhatikan pada EA yang di buat pada part 3 ada beberapa kelemahan al:
  1. Hanya bisa digunakan satu pair saja (1 pasang mata uang)
  2. Hanya bisa melakukan order buy 
  3. Tidak ada batasan waktu trading
  4. Tidak menggunakan indikator untuk trigernya (pemicu ordernya)
Kali ini kita bahas dulu tentang filter pair supaya EA yg telah kita buat di part 3 bisa digunakan di semua pair.
di part 3 kita menggunakan:
if(OrdersTotal()==0)
yang dimaksud OrdersTotal ini adalah jumlah semua order diadalam Mt4 dari semua pair , termasuk pending order. Jadi kalau ada  1 pending buystop di EURUSD  dan ada 2 buy di GBPUSD jadi jumlahnya 3 order, sehingga karena kita membuat kondisi OrdersTotal() ==0  maka total order dihitung semua order. 

Ada beberapa cara untuk membuat filter pair dan saya akan bahas 2 macem cara yang umum digunakan menurut bahasa sederhana. 

1. Cara langsung 

 Cara ini biasa dibuat skrip diatas perintah order  untuk menggantikan OrdersTotal(). 
Skrip ini ada tinggal simpan di library  sebagai scrip standar yang mungkin suatu saat dipakai lagi

  int Jumlahbuy=0;
  int Jumlahsell=0;
  for(int i=0; i<OrdersTotal(); i++)
  {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      if(OrderType()==OP_BUY)   Jumlahbuy++;
      if(OrderType()==OP_SELL)  Jumlahsell++;
  }

Nah skrip diatas merupakan skrip yang sering dipakai

  int Jumlahbuy=0;
  int Jumlahsell=0;


Ini merupakan variabel penghutung order , penempatan nya di ditempatkan di deklarasi (dibawah parameter yang ada extern) bisa juga di atas skrip seperti di atas.

for(int i=0; i<OrdersTotal(); i++)

Maksudnya adalah menghitung order aktif yang dimulai dari awal sampai terakhir. Kebalikan skrip ini biasannya menghitung mundur (bahasa sederhannya)
 for(int i=OrdersTotal()-1; i>=0; i--)

Coba bandingkan dulu!

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
ini scrip standar untuk memilih ordr aktif 
  
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
 

Ini menggunakan atau (
||) artinya memilih hanya pada symbul (pair) yang  dan numor magic di attack jadi yang lain dari itu diabaikan
bisa juga kondisi ini menggunakan tanda dan (&&) bedanya bila menggunakan && tersebut  tanda != diganti dengan == sehingga jadinya
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) continue;

Silahkan dibandingkan   2 kondisi tersebut  (jangan sampai terbalik karena kalau terbalik ini tidak berfungsi. Untuk itu tinggal  akan menggunakan && atau ||  atau keduanya dipakai

Kemudian
  if(OrderType()==OP_BUY)   Jumlahbuy++;
artinya membatasi order buy saja yang dihintung  dinyatakan kedalam sebuah variabel  Jumlahbuy
  if(OrderType()==OP_SELL)  Jumlahsell++;
  
 artinya membatasi order sell saja yang dihintung  dinyatakan kedalam sebuah variabel  Jumlahsell


Terus gimana cara menggunakan?

Tinggal mengganti saja 
if(OrdersTotal()==0)  diganti dengan if(Jumlahbuy==0)  bisa juga diganti dengan  if(Jumlahbuy<1)

Jadinya EAnya sbb:


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

extern string  Nama_EA                 = "Buy Saja";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

int Jumlahbuy=0;
  int Jumlahsell=0;
  for(int i=0; i<OrdersTotal(); i++)
  {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      if(OrderType()==OP_BUY)   Jumlahbuy++;
      if(OrderType()==OP_SELL)  Jumlahsell++;
  }

  if(Jumlahbuy==0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); }
//----
   return(0);
  }
//+------------------------------------------------------------------+


Nah EA diatas sudah bisa dipakai di semua pair 
Mudahkan?

2. Menggunakan Fungsi

Jadi selain menggunakan cara langsung pada bagian 1 bisa juga digunakan fungsi.
Fungsi ini menentukan nilai yang biasanya ditempatkan diluar int start().
Karena jumlah order ini merupakan bilangan bulat tidak berkoma maka digunakan integer (int).

coba perhatikan!

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

Ini merupakan skrip untuk filter order menggunakan fungsi .
Cara menggunkan nya
 jumlahorder(OP_BUY) ini merupakan jumlah buy
jumlahorder(OP_SELL) ini merupakan jumlah sell
jumlahorder(OP_BUYSTOP) ini merupakan jumlah pending order Buystop
dst....

Type order bisa juga dinyatakan dalam bilangan
OP_BUY     =    0
OP_SELL    =   1
OP_BUYLIMIT     =  2
OP_SELLLIMIT    =  3
OP_BUYSTOP     =   4
OP_SELLSTOP    =  5

Sehingga
 jumlahorder(OP_BUY)    bisa ditulis juga jumlahorder(0) 
demikian juga untuk jumlahorder(OP_SELL) bisa ditulis jumlahorder(1)

Sehingga pada EA diatas bisa diganti 
if(Jumlahbuy==0) menjadi if(jumlahorder(OP_BUY)==0)  atau  if(jumlahorder(0)==0) 

Dan kalau masukan ke dalam EAnya

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

extern string  Nama_EA                 = "Buy Saja";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if(jumlahorder(0)==0) {  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); }
//----
   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) ;
}

Nah silahkan di Compile hasil dari pembuatan terebut bila sukses berarti EA terebut sudah bisa digunakan, tapi bila masih ada errornya maka silahkan dikoreksei ulang mulai dari awal dan bandingkan dengan hasil di atas (copykan hasil di atas ke metaeditor ).

Semoga sukses 
Jangan lupa kasih komen masukan ya untuk memudahkan belajar membuat EA sederhana terebut.
Disini saya berupaya menguraikan dengan bahasa saya yang sederhana dan bukan bahasa seorang yang belajar dari ilmu programer jadi mudah2 an mudah dipahami dan  bila ada kekurangan yah harap maklum, tapi ini didasari dengan niat yang tulus saling belajar dan memajukan trader Indonesia.

Salam Profit semuanya
sampai jumpa di part 5

Belajar Membuat EA Sederhana 3


http://jumforex.blogspot.com/2012/08/belajar-bikin-ea-sederhana-3.html

Lanjutan dari posting sebelumnya part 2 disini 

Pada post sebelumnya kita sudah bikin parameter EA sbb:


Dan kita sudah bahas 3 type data yaitu string, int dan double

Nah kali ini saya akan menambahkan satu parameter yang sering digunakan sebagai identitas order EA yaitu nomer Magic (magicnumber). dalam bahasa mql4 => OrderMagicNumber()

Apa sih sebenarnya magicnumber?

Magicnumber  adalah sebagai Ktp order atau Id ,  loh koq  bisa KTP ya?
Karena magicnumber sering digunakan sebagai identititas order sebuah EA untuk membedakan order dengan EA lain,  meki sebenarnya tidak hanya itu penggunaannya bisa digunakan lebih luas.
untuk mengetahui nomer magic pada sebuah order biasanya tunjuk pointer pada sebuah order maka disitu akan muncul angka nomer order dan nomer magic
contoh
Pada image berikutnya Numermaginya adalah 16   (id 16)

Nah itu gambaran kegunaan magic number !
Nah dalam parameter EA yang akan kita buat kali ini kita akan tambahkan nomor magic
Nomor magic ini meupakan type data int (bilangan bulat tanpa koma)
sehingga bisa dituliskan
//+------------------------------------------------------------------+
//|                                                     Buy Saja.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern string  Nama_EA                 = "Buy Saja";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                = 0.1;
extern int     Magic                 = 69;

Oke tinggal di Compile lagi  dan di cek tidak ada errornya maka kita lihat di mt4 kalau berhasil maka akan terlihat seperti image berikut setelah ea Buy Saja kita attack
Sip deh  parameter EA sudah jadi  !
Apa EA sudah bisa jalan ?
Kalau jalan sih bisa saja tapi belum bisa order heeeeeeee

Nah supaya bisa order sesuai rules yang kita tentukan maka kita akan program

Program kita  akan tempatkan di bawah int start()

int start()
  {
//----
Disini   
//----
   return(0);
  }

Untuk memulai program  sesuai rule yaitu bila tidak ada order maka akan melakukan order Buy
Program yang dibuat menggunakan operasi if  
Penulisannya dimulai dengn kata  if dan di mulai tanda kurung pembuka dan di akhiri dengan tutup kurung)kemudian tanda Kurung kurawal pembuka { dan di akhiri tutup kurung kurawal penutup }

Ketentuannnya :
if( bila ada kondisi yang ditentukan ) {  perintah yang diinginkan diakhiri tanda titik koma ;  }
Kadang juga bisa di tulis tnpa kurung kurawal dalam kondisi khusus (perintah sederhana)
if( bila ada kondisi yang ditentukan )   perintah yang diinginkan diakhiri tanda titik koma ; 

Oke deh  mungkin gambarannya mudah dipahami
Sekarang kembali  rules EA buy saja yang akan kita buat

dimana bila tidak ada order maka EA akan melakukan order buy artinya hanya ada 1 order buy
if( tidak ada order ) melakukan order buy;

tidak ada order artinya order total =0, ketentuan penulisan sama  dengan (=) di dalam kondisi harus di tulis 2 kali ( == )
order total di dalam mt4 disediakan sebagai variabel yang di sediakan dan di tulis OrdersTotal() 
sehinga kita tulis sebagai kondisi

if(OrdersTotal()==0)   
atau bisa juga ditulis
if(OrdersTotal()<1)  

Order buy sebagai perintah yang diinginkan kita mengambil  di satu 
OrderSend(Symbol(),OP_BUY,start_lot,Ask,slipage,Ask-SL*Point, Ask+TP*Point,"+Jum+oke+",Magic,0,Blue);

kita rubah sesuai parameter yang kita sediakan ,start_lot diganti dengan Lots, slipage kita ganti dengan angka 3 (nanti akan kita bahas di post berikutnya ) , "+Jum+oke+" kita ganti dengan  parameter Nama_EA dan Magic  sudah sesuai
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);

Ini kita gabungkan
Jadinya kalau   di gabungkan dengan kondisi di di tempatkan di bawah int start()
if(OrdersTotal()==0)  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);

atau  sama saja dengan

if(OrdersTotal()==0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); }

atau  sama juga dengan

if(OrdersTotal()<0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); }


 Nah hasilnya setelah dimasukkan ke dalam int start() dan seluruhnya adalah

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

extern string  Nama_EA                 = "Buy Saja";
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if(OrdersTotal()==0){  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue); }
//----
   return(0);
  }
//+------------------------------------------------------------------+


Jangan lupa untuk klik  Compile  dan pastikan tidak ada error 
Setelah sukses tahap berikutnya adalah kita coba Beck test untuk mengetahui apakah EA sudah bisa order
Nah silah di coba
dan saya coba Beck tes hasilnya sbb:

Ternyata EA ini sudah bisa order dan siap digunakan demo haaaaaaaaaa
Nah silahkan kasih komen ya kalau sudah berhail atau masih belum jelas

Kalau ternyata ada yang error berarti madih ada yang salah teliti ulang caranya dobel klik pada bagian yang ditunjuk
contoh
 Hasil Compile ternyata
Compiling 'Buy Saja.mq4'...    
'}' - semicolon expected    C:\Program Files\InstaTraderdem\experts\Buy Saja.mq4 (40, 112)
1 error(s), 0 warning(s)    


Nah dobel klik pada bagian ini
 '}' - semicolon expected    C:\Program Files\InstaTraderdem\expertsr\Buy Saja.mq4 (40, 112)
Maka cursor akan menunjuk pada bagian  yang error atau yang ada hubungannya dengan yang ditunjuk , sehingga harus di teliti ulang kekurangannya atau kelibihan (biasanya ada kekurangan titik koma (;) atau kelebihan/kekurangan tanda ( ,) ,{ } .  dll
Kalau masih error silahkan copy hasil program di atas dan bandingkan dimana kekurangannya  

Intinya di cari  dulu errornya sampai sukses 

Oke selamat mencoba

Kita lanjut di part 4 berikutnya
semoga bermanfaat!