Tuesday, 25 December 2012

Belajar Membuat EA Sederhana 11


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

Akhirnya kita sampai pada part 10  dan pastikan anda telah membaca part10

Setelah kita belajar di part sebelumnya bahwa kita sudah mengulas sedikit tentang Indikator yang paling populer yaitu candelistik, sekarang  kita akan bahas tentang Custom Indikator2 standart Mt4.

Dalam pembuatan Ea secara umum banyak menggunakan indikator sebagai petimbangan dalam membuat trigernya (pemicu ordernya), ada banyak indikator yang teredia di Mt4 , contohnya
MA (Moving Averge), MACD, Stochatik, RSI dll.

Bagamana cara membuat custom indikatornya?

Nah untuk membuat custom nya biaanya dibuat variabel duhulu (meskipun ini tidak wajib).
Karena variabel datanya biaaya berkoma maka menggunkan double.

Secara umum indikator mt4 custom indikatornya biasanya nama indikator di tambahkan huruf i didepan nama indikatornya,
Contohnya adalah MA (Moving Average)

kita buat variabel MA, double MA (saya membuat nama MA).
MA ini custom indinya iMA 
Coba perhatikan gambar beikut:
Ketika kita menuliskan iMa(  maka Mt4 secara otomatis memberikan arahan tentang indikator ini, ada beberapa parameter yang harus dibuat sesuai urutannya.
sepeti gambar diatas maka iMa(string symbul, int timeframe, int ma_pereod, int ma_shift, int ma_methot, int applied_price, int shit);

kita lihat parameter Ma berikut:


string symbul (penjelaannya sama sepeti candelitsik) bisa ditulis  Symbul(), bisa juga NUL.
int timeframe (penjelaannya sama sepeti candelitsik).
int ma_pereod ini merupakan data integer (tidak berkoma) sering disebut pereodenya, besarannya bisa ditulis langsung atau dibuat deklasi supaya bisa dirubah angkanya dengan mudah , contoh:
extern int Pereode_Ma.

int ma_shift  , int ma_methot , int applied_price  (bisa di isi langsung atau di buat deklarasi,)
int shit ini merupakan kedudukan Ma seperti halnya candelitik kalau diisi 0 artinya pada kedudukan yaitu nilai Ma pada candel sedang berjalan, bila diisi 1 artinya nilai Ma pada saat 1 candel sebelum sekarang dst , (bisa di isi langsung atau di buat deklarasi,)

Contoh custom indi Ma sbb:
double MA =iMA(NULL,0,Pereode_Ma,0,MODE_SMA,PRICE_CLOSE ,1);
atau
double MA =iMA(Symbol(),0,Pereode_Ma,0,MODE_SMA,PRICE_CLOSE ,1); 

nah contoh diatas untuk pereodenya di buat deklarasi dulu 
extern int Pereode_Ma.=20;

 Terus gimana terapanya dalam triger ?
Banyak sekali cara membuat triger menggunakan indikator Ma ini , contohnya

1. bila harga diatas Ma maka buy dan sebaliknya bila dibawah Ma maka sell
    if(Ask > MA) {  order buy }
    if(Bid < MA) { order sell }

2.Bila pembukaan 1 candel sebelum sekarang   dibawah Ma dan penutupan di atas Ma maka buy
    if(Open[1] > MA  && Close[1]> MA) {  order buy }

Oke sementara sampai disini dulu , kita lanjutan nanti ya

Belajar Membuat EA Sederhana 10


http://jumforex.blogspot.com/2012/08/akhirnya-kita-sampai-pada-part-10-dan.html

Akhirnya kita sampai pada part 10  dan pastikan anda telah membaca part 9

Setelah kita belajar di part sebelumnya bahwa EA sudah bisa order buy dan sell dengan jam yang bisa disesuaikan serta order hanya terbatas masing2 1 order pertype.
Jadi dasar Order EA sebelumnya (triger) adalah jumlah order buy=0 atau jumlah sell = 0.

Nah dasar order EA inilah yang perlu dikembangkan berdasarkan keinginan.

Untuk menambah wawaan tetntang triger ini saya akan membasar tentang Indikator

Indikator yang paling sederhan di dalam Mt4 adalah Candelistik

Coba perhatikan image berikut:


1. Harga tertinggi disebut dengan High

Untuk mengetahui harga high ini dengan cara custum sbb
         iHigh(string Symbul ,int time frime , int shit)
string symbul untuk pair yang di attack digunakan Symbul()
untuk pair langsung bisa ditulikan contoh "GBPUSD"  atau "EURUSD"

int timefreme bisa ditentukan , coba perhatikan

nah tinggal dipilih aja yang mau digunakan, tapi kalau mau membaca candel pada EA di attack maka bisa diisi dngan angka 0

int shif ini untuk menentukan kondisi candel ,
contoh :
bila 0 artinya candel saat berlangsung,
 bila 1 artinya 1 candel sebelum sekarang
2 artinya 2 candel sebelum sekarang

Karena harga High ini merupakan bilangan berkoma maka termasuk tipe data double, sehingga untuk menentukan membuat variabel high ini sbb
contoh

doubel tinggi =  iHigh(Symbol(),PERIOD_H1, 1);

artinya  Harga tertinggi  pada 1  candel  sebelum sekarang (sebelumnya) dan pata time frime H1 dan saya namakan dengan nama variabel tinggi

Time frime ini juga bisa ditulis dalam nilai (value) dalam menit ,contoh kalau  PERIOD_H1  bisa diganti dengan 60 ,  PERIOD_H4 bisa diganti dengan 240 , PERIOD_D1  bisa diganti dengan 1440 dsb.
Tetapi bila di tulis 0 bukan berarti 0 menit tetapi timefrimenya mengikuti chart dimana EA di attack.

contoh:
doubel tinggi =  iHigh(Symbol(),0, 1);
Maka nilai tinggi candel dimana EA akan di attack , bila di attack di time frime(TF) 30 maka akan memabaca titik tinggi 1 candel  sebelumnyam demikian juga kalau di attack di TF H4 juga candel di H4 yang akan di bacanya.

Ada tambahan
doubel tinggi =  iHigh(Symbol(),0, 1);
kadang juga ditulis   
doubel tinggi =  High[1];


Jadi kalau  High[2]  artinya titik tertinggi pada 2 candel sebelumnya pada TF dimana EA di attack

2, Harga pembukaan disebut Open

Sama halnya dengan High, dalam penulisan ketentuannya sama

doubel buka =  iOpen(Symbol(),PERIOD_H1, 1); 
Penjelasanya sama dengan High

3. Harga Penutupan disebut Close

doubel tutup =  iClose(Symbol(),PERIOD_H1, 1);  
 Penjelasanya sama dengan High

4. Harga terbawah disebut dengan Low

 doubel bawah =  iLow(Symbol(),PERIOD_H1, 1);  

Penjelasanya sama dengan High

Daei penjelasan di atas mungkin sedikit bisa di pahami
Contoh dalam terapan sebuah EA yang biasanya digunakan sebagai triger

if(Close[2] <  Close[1]) { -----order buy ----- }
atau
if(iClose(Symbol(),0, 2) <  iClose(Symbol(),0, 1)) { -----order buy -----}

artinya bila harga penutupan candel 2 sebelumnya lebih kecil dengan penutupan candel 1sebelumnya maka order buy
Bisa juga dibuat variabel
double tutup_1  = iClose(Symbol(),0, 1);
double tutup_2  = iClose(Symbol(),0, 2);

if( tutup_2< tutup_1){-----order buy -----}

 Nah dari gambaran diatas ini maka bisa silahkan dicoba di masukan ke dalam EA yang sudah dibuat di part sebelumnya
Oke silahkan dicoba dulu deh


Salam profit





4 komentar:

  1. ini dibuat dimana dan untuk apa,?
    apakah hanya pengenalan atau bisa dimasukin kedalam EA.??
    saya masih bingung,,hehehe
    Balas
    Balasan
    1. tergantung keperluannya bro
      bisa digunakan untuk triger EA atau di dalam indikator
      jadi penggunaanya yang jelas masuk di dalam struktur nya coba perhatikan EA yang dibuat di part 12

Belajar Membuat EA Sederhana 9


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

Di part 8 kita sudah banyak membahas tentang filter penggunaan EA di broker 5 digits

Kali ini kita akan membahas tentang flter lots.
Kegunaannya ini untuk mencegah terjadinya error yang di sebabkan oleh parameter lots yang tidak sesuai

Di pembahasan sebelumnya kita sudah banyak membahas juga tentang penggunaan scrip secara langsung dan juga bisa menggunakn fungsi. Jada pada dasar setiap trader dalam menuangkan kode program itu punya gaya sendiri , dan tidak mesti sama setiap orang .

Nah untuk menambahkan   filter lots ini saya akan berbagi script dalam bentuk fungsi yang selama ini saya gunakan, sbb:

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

Penggunaannya bagaimana?

Pada EA yang telah kita buat di part sebelumnya kita ambil bagian yang ada hubungannya dengan pengaturaun lots yaitu  Lots dan kita tambahkan menjadi  NR(Lots)

Sehingga sebelumnya
if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
 }

Menjadi:

if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
 }


Dari penamahan script diatas maka bila terjadi kekeliruan pengisian parameter lots maka EA tetap akan melakukan eksekuri order dan tidak error.
Bila pengisian lotsnya salah dan terlalu kecil maka EA tetap melakukan order dengan menggunakan lots terkecil yang di ijin ka oleh broker, dan juga bila di gunakan pada penggunaan lots yang salah tetap akan order sesuai kektentuan broker , dengan tambahan filter ini maka akan terhindar dari error yang disebabkan oleh kesaalan penggunaan lots

Kita masukkan ke dalam EA sebelumnya jadinya


//+------------------------------------------------------------------+
//|                                                     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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
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(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,Bid+SL*Point, Bid-TP*Point,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);
}


Oke bro sampai di sini dulu ketemu pada part 10 dalam pembahasan yang berbeda


Salam Profit







Belajar Membuat EA Sederhana 8


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

Pada kesempatan sebelumnya di part 7  talah banyak kita bahas parameter EA sederhana dimana EA yang sudah jadi telah bisa melakukan order buy dan sell (hedge) secara terus menerus ketika type order 0 dan dengan penambahan filter jam trading.

Kelemahan pada EA yang telah kita buat sebelum adalah belum suport untuk broker 5 digits .
Untuk itu kali saya akan tambahkan filter broker 5 digits
 Perbedaan antara broker 4 digits dan 5 digits terletak pada Points

Ada banyak cara untuk membuat EA agar dapat digunakan di broker 5 digits tapi saya akan beri 2 cara sederhana, al:
1. membuat skrip langsung

kita buat deklarasi dulu , mengingat nilai point merupakan bilangan berkoma maka termasuk type data double,
double pt=0; // ini di letakkan di dklarasi.

 kita buat skrip sbb:
   if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;


Maksudnya adalah bila digits=3  atau  digits=5  maka pt = 10 x point  else (artinya bila tidak) maka pt =point
disisipkan di bawah int init()

jadinya

int init()
  {
//----
if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;  
//----
   return(0);
  }

Apa maksudnya di tempat kan disini ?

int init() ini menyimpan data saat EA di attack , sebenarkan tidak mesti harus ditempatkan di dalam init() bisa juga ditempatkan di dalam int start().

Terus apa bedanya bila di tempatkan di init() dan di start()?

Bila di tempatkan di dalam init() maka nilai pt (pont) akan di baca baik di dalam int start() maupun diluar tetapi kalau di tempat kan di int start() maka diluar int start() tidak terbaca.

terus gimana cara merubahnya?

kita lihat bagian EA sebelumnya yang terkait dengan point

if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
 }

Ini yang ada point nya kita ganti dengan pt, jadinya <\:

if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*pt, Ask+TP*pt,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*pt, Bid-TP*pt,Nama_EA,Magic,0,Red);}
 }

Sehingga bila kita masukkan kedalam EA 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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
extern int     TP                      = 11;
extern int     SL                      = 100;
extern double  Lots                    = 0.1;
extern int     Magic                   = 69;
double pt=0;
//+------------------------------------------------------------------+
//| 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(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*pt, Ask+TP*pt,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*pt, Bid-TP*pt,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);
}

2. Dengan menggunakan fungsi

Mengingat point adalah type data bilangan berkoma maka kita mulai dengan double

double dpt()
{
 if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
 return(pt);
}

karena ini fungsi maka di tempatkan di luar int start(), dan untuk penerapannya tinggal poin diganti dangan dpt()

Sehinnga jadinya ESnya 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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
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()
  {
//----

Comment("Mulai_Jam :",Mulai_Jam,"  Akhir_Jam : ", Akhir_Jam, "Sekarang Jam ", Hour()); 

if(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*dpt(), Ask+TP*dpt(),Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*dpt(), Bid-TP*dpt(),Nama_EA,Magic,0,Red);}
 }
//----
   return(0);
  }
//+------------------------------------------------------------------+
double dpt()

{
double pt=0;
 if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;
 return(pt);

}



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

Saya yakin tidak sulit ini tinggal di Compile saja jadi deh

Mudahkan

Kasih komen deh
sampe ktemu di part 9 ya

salam profit

Belajar Membuat EA Sederhana 7


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

Pastikan anda telah mengikuti part 6 disini 

Pada part 6 telah kita bikin EA yang bisa buy dan sell dengan tambahan paremeter pilihan untuk terus trading buy atau sell dengan menggunakan boolian sehingga bisa digunakan pilihan true ata false.

Kali kita akan bahas tentang menambahkan waktu trading

Waktu trading kali ini kita  bahas menggunakan waktu trading broker (time broker) dengan menggunkan variabel Hour() untuk Jam dan Minute() untuk waktu menit

Cukup  sederhana contoh
if(Hour()== 7 && Minute()==5)
Artinya Ketika  (jam 7 lewat 5 menit  ) kondisi apa yang diinginkan .......

kita coba terapkan dalam perintah EA  kita
if(Hour()== 7 && Minute()==5){
   if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
   if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
}

Pada penambahan di atas maka EA hanya akan Order buy dan sell ketika jam broker telah menunjukan jam 7 lewat 5 menit .

Nah bagamana supaya parameter waktu yang diinginkan bisa mudah di tampilkan dalam EA ?

Maka kita bisa membuat deklarasi waktu jam dan menit (waktu ini merupakan tipe data integer / tidak berkoma)
contoh
extern int  Jam_Order  =7;
extern int  Menite        = 5;

 sehingga kalau dimasukkan ke dalam EA  sbb:

if(Hour()== Jam_Order && Minute()==Menite){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic,0,Red);}
 }


Mudahkan?
Ooooooo   ternyata mudah tinggal silahkan di coba di copas ke dalam EAnya .................
Jadideh!

Terus bagamana seandainya kita mau menambahkan waktu trading  dari jam tertentu sampai jam tertentu?

Nah untuk membuat batasan waktu ini saya akan bagikan sebuah skrip jadi yang biasa digunakan dalam bentuk fungsi
Sebelumnya kita buat deklarasi waktu mulai dan mengakhiri  trading
extern    int                Mulai_Jam    =  22;
exter       int              Akhir_Jam    =   4;

kemudian fungsi waktunya sbb:

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

Karena skrip tersebut dalam bentuk fungsi maka penempatannya diluar int start()
Sekilas dari skrip tersebut menggunakan  bool dalam terapan waktu trading dan harus bernilai 1 .
Silahkan di simak dan di telaah fungsi terebut diatas!

untuk terapan penggunaanya dalam EA   if(Jam_trade()==1){.....}

 Kalau kita masukkan ke dalam EA 2 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 bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
extern int     Mulai_Jam               = 22;
extern int     Akhir_Jam               = 4;
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(Jam_trade()==1){
  if(jumlahorder(0)==0 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,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);
}

Oke bro EA sudah jadi silahkan di Compile dan EA siap digunakan untuk trade. Parameter sudah lengkap tapi mengenai profit dan tidaknya yang silahkan di coba sendiri 

Salam profit 
Sampai ketemu pada part 8 dalam pembahasan yang lain

Belajar Membuat EA Sederhana 6


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

Untuk mengikuti ini pastikan sudah membaca  part 5 di sini


Sebelum membahas tentang filter waktu kita akan tambahkan tentang  type data.  Sebelum nya kita sudah bahas tentang string, int dan doubel . Ada satu lagi yang sering digunakan untuk sebagai pilihan yaitu bool.
Bool ini mengahilkan nilai 1 bila true dan 0 bila false.
Jadi data tipe ini dalam sebiah deklarasi di dahului dengan  kata bool dan ditambahkan kata tanpa sepasi kemudian = (sama dengan) dan di beri pilihan false atau true dan diakhiri dengan ; (titik koma)
contoh:
Kita mau menambahkan pilihan untuk EA sebelumnya supaya ada pilihan untuk buy saja atau sell saja

Kita buat deklarasi dulu
extern bool Trade_buy= true;
extern bool Trade_sell= true;

terus dimana harus ditambahkan ?
Untuk menambahkan ini maka yang perlu dicari adalah bagian triger atau pemicu ordernya, yaitu
  if(jumlahorder(0)==0)  jadinnya if(jumlahorder(0)==0 && Trade_buy== true )
  if(jumlahorder(1)==0)  jadinya  if(jumlahorder(1)==0 && Trade_sell==true )

Penulisan Trade_buy== true bisa juga ditulis Trade_buy== 1  atau hanya  Trade_buy
Sedangkan Trade_buy==false bisa juga ditulis Trade_buy== 0  atau   !Trade_buy

Kita coba maukakan kedalam 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 dan Sell";
extern bool    Trade_buy               = true;
extern bool    Trade_sell              = true;
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 && Trade_buy) {OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic,0,Blue);}
  if(jumlahorder(1)==0 && Trade_sell) {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);
}

Nah Ea di atas pada EA 2 yang menggunakan sedang kan untuk EA 1 silahkan ditambah akan sendiri
Setelah kita Compile sukses maka kalau kita attack EAnya akan tampak sbb:

Oke bro sampai di sini dulu bro kita lanjut di part 7

Salam sukses

Sunday, 23 December 2012

EXTRA OPTIONS MQL Coding Cost



http://iticsoftware.com/index.php?route=common/home&ref=254

EXTRA OPTIONS

You can improve performance of your expert advisor adding following extra options!

To order one or several extra options please, contact us via e-mail: coding@iticsoftware.com Please, specify what kind of extra options you would like to add and provide us with your expert advisor or indicator for review. mq4 file (source code) is required.

Extra Options For Expert Advisors

Dynamic lot calculation
a) as percent of Account Balance
b) as percent of Accout Equity
c) as percent of Account FreeMargin

So on increase of Account Balance/Equity/FreeMargin the lot size will growth too

cost $65
Dynamic lot calculation with RiskPcnt option

You will enter an initial risk % of equity you can loose if StopLoss is triggered.
So if StopLoss = 50 pips, AccoutnEquity = 5000 and RiskPcnt = 10.0
then you will pay only 500$ on StopLoss.

cost $65
Dynamic lot calculation by Martingale theory.
New lot will be multiplied by 2.0 (LotFactor = 2.0 is external parameter)
if previous lot was closed in loss.
MaxLot of series will be second external parameter.

cost $95
Possibility to define work days of the week
example:
extern string _tmp3_ = " --- Trade days ---";
extern bool MondayOn = true;
extern bool TuesdayOn = true;
extern bool WednesdayOn = true;
extern bool ThursdayOn = true;
extern bool FridayOn = false;
extern bool SaturdayOn = false;
extern bool SundayOn = false;

cost $45
Trade time to open order from hh:mm to hh:mm
example: from 6:30 to 22:45 by ServerTime
cost $55
Close open orders at CloseTime (CloseTime is external param)
a) only profitable
b) only losing
c) all

cost $45
Sound, Popup, Email alerts on set/open/modify/close/delete of an order
cost $65
Support of Market Execution (required for ECN brokers)
Open operation will be splitted into 2 parts:
a) Open new order with 0 (zero) stoploss and 0 (zero) takeprofit
b) Modify sl and tp of new order to actual values

cost $55
Make StopLoss, TakeProfit, TrailingStop hidden to brokers
In this case EA will manage Hidden (or invisible) stops
Standard (or visible) stops will be available too

cost $160
Breakeven function
Moves StopLoss to breakeven level when trade is in profit by X pips
cost $45
Standard Trailing: simple trailing, stoploss follows by the market
cost $45
High/Low Trailing: trailing by bars High/Low
cost $45
ATR Trailing: trailing by ATR indicator
cost $45
Fractals Trailing: trailing by Fractals
cost $45
PSAR Trailing: trailing by Parabolic Stop And Reverse indicator
cost $45
ProfitPcnt Trailing: trailing with lock of some pcnt of max. profit reached
cost $45
TLine Trailing: trailing by some TrendLine added manual on the chart
cost $45
MA Trailing: trailing by MovingAverage indicator
cost $45

We also can add different types of money managements, read more....

Extra options for Indicators

Extra allerts (pop -up, e-mail alert, sound)
cost $75
Hidden (Riverse) Divergence. Can be added to Divergence Indicators and Advanced Divergence IndicatorsLearn more...
cost $ 75