Post on 25-Feb-2018
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
1/26
CARA MEMBUAT SENDIRI EXPERT
ADVISOR SEDERHANA (DASAR ! )
Pengenalan MQL 4
MQL4 adalah bahasa pemrograman yang terdapat pada platform MetaTrader 4. MQL4 ini
paling umum digunakan untuk membuat Expert Advisor (EA), Custom Indicator, dan Script.
Expert Advisor / EA, seperti yang sudah kita ketahui, adalah program untuk mengotomasi
trading anda berdasarkan logika2 dan paramater2 tertentu.
Custom Indicator, hampir sama seperti EA, cuma tidak bisa melakukan trading. Dan dapat
menggunakan function2 indicator.
Script, sama seperti EA, hanya saja dilakukan hanya 1x saat script dijalankan.
Untuk membuat program/script dengan MQL 4, caranya cukup mudah, cukup jalankan saja
MetaEditor.
MQL4 ini struktur dan syntax nya mirip C/C++. Jadi kalau udah kebiasa dengan C/C++,
harusnya ga akan mengalami kesulitan membuat program dengan MQL4. Kesulitannya
mungkin saat debugging..
Lebih lanjutnya, MQL4 dapat melakukan interkoneksi dengan file DLL. Hal tersebut
memungkinkan pemrograman yang lebih kompleks dan rumit, dan tentu saja, sangat
memungkinkan untuk disusupi spyware/virus oleh pembuat EA (terutama yang pakai DLL).
Bagian 2 - Contoh EA
Bahasan yang pertama, adalah EA (setelah EA, baru kita akan membahas custom indicator
dan script).
http://erobocyber.blogspot.com/2010/04/cara-membuat-sendiri-expert-advisor.htmlhttp://erobocyber.blogspot.com/2010/04/cara-membuat-sendiri-expert-advisor.htmlhttp://erobocyber.blogspot.com/2010/04/cara-membuat-sendiri-expert-advisor.htmlhttp://erobocyber.blogspot.com/2010/04/cara-membuat-sendiri-expert-advisor.html7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
2/26
Untuk memulai membuat EA, setelah masuk MetaEditor, pilih File -> New -> pilih Expert
Advisor, lalu masukkan Copyright dan Link
lalu anda akan mendapat code kira2 seperti ini ://+-------------------------------------------------------+//| ContohEA2.mq4 |//| Copyright 2010, e-robocyber |//| http://www.erobocyber.blogspot.com |//+-------------------------------------------------------+#property copyright "Copyright 2010, e-robocyber"#property link "http://www.erobocyber.blogspot.com"
//+-------------------------------------------------------+//| expert initialization function |//+-------------------------------------------------------+
int init(){//----//----return(0);}//+-------------------------------------------------------+//| expert deinitialization function |//+-------------------------------------------------------+int deinit(){//----//----
return(0);}//+--------------------------------------------------------+//| expert start function |//+--------------------------------------------------------+int start(){//----//----return(0);}//+--------------------------------------------------------+
Sedikit penjelasan,
yang di dalam init() dijalankan 1x saat EA pertama kali di drag ke chart
yang di dalam deinit() dijalankan 1x saat EA di remove dari chart, atau chart ditutup
yang di dalam start() dijalankan tiap tick (tiap ada harga baru)
nah, coba lihat EA super simple berikut ini :
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
3/26
Code://+-----------------------------------------------------------+//| ContohEA1.mq4 |//| Copyright 2010, erobocyber |//| http://www.erobocyber.blogspot.com |//+-----------------------------------------------------------+
#property copyright "Copyright 2010, erobocyber"#property link "http://www.erobocyber.blogspot.com"
extern double Lots=0.1;extern int StopLoss=100;extern int TakeProfit=150;extern string txComment="Order EA1";extern int MagicNumber=12345;extern int Slippage=5;
//+-----------------------------------------------------------+//| expert initialization function |
//+-----------------------------------------------------------+int init(){//----//----return(0);}//+-----------------------------------------------------------+//| expert deinitialization function |//+-----------------------------------------------------------+int deinit(){//----
//----return(0);}//+-----------------------------------------------------------+//| expert start function |//+-----------------------------------------------------------+int start(){//----if (OrdersTotal()==0){if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);}else if (iClose(Symbol(),0,1) {OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*
Point,Bid-TakeProfit*Point,txComment,MagicNumber);}}//----return(0);}//+------------------------------------------------------------+
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
4/26
Logika EA ini, kira2 (misal EA ini diletakkan di chart GBPUSD 1 Hour), Jika tidak ada
posisi, jika candle jam lalu closenya diatas EMA 10, maka buy, kalau candle jam lalu
closenya dibawah EMA 10, maka sell.
buy di open candle yang gw kasih panah (karena candle sebelumnya closed di atas EMA) di
1.7366, dan close di 1.7516 (150 pips TP)...
ehm, spreadnya lupa gw itung harusnya buy nya dapet di harga 1.7369 dan TP nya di 1.7519
ya tapi intinya kira2 gitu lah
coba kita telaah satu per satu bagiannya..... penjelasan di topic ini sekilas aja... detailnya nanti
akan dijelaskan di masing2 bagian.
Code:
Code:extern double Lots=0.1;extern int StopLoss=100;extern int TakeProfit=150;extern string txComment="Order EA1";extern int MagicNumber=12345;extern int Slippage=5;
cukup jelas kan ya
extern intinya supaya variable tersebut bisa diubah2 oleh end user yang tidak memiliki akses
ke source code EA.
Code:if (OrdersTotal()==0)
Jika semua order = 0, yang berarti perintah dibawahnya (didalem { } ) akan dieksekusi jika
tidak ada order sama sekali.
yang dianggap order adalah baik posisi terbuka (buy/sell) atau pending order.
Code:if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
iClose() itu fungsi untuk mengambil harga close dari candle (detailnya akan dijelaskan di
bagian lain)
pada syntax ini, berarti dia ngambil harga close dari pair dimana EA di attach, 1 candle
sebelom sekarang.
iMA() itu buat ambil nilai moving average, yang dalam syntax ini brarti EMA periode 10
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
5/26
diitung dari harga close, 1 jam sebelum sekarang (biar waktunya sama ama candle yang
dibandingkan)
Code:OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
OrderSend() digunakan untuk melakukan order, nanti akan dijelaskan di bagian lain,termasuk penggunaan error catch nya supaya tidak terjadi tragedi log file ukurannya bergiga2
else if dan yang dibawahnya itu sama, cuman tanda nya aja yang dibalik..
.........
simple kan ?.. ya simple, lah EA nya juga simple sekali. Ga ada money managementnya, ga
ada trailling stop nya, ga ada error catcher nya, dll dll
tapi ya itu EA paling sederhana, nantinya di bagian2 selanjutnya akan dijelaskan lebih detil
mengenai fungsi2nya... .Tentunya di Posting saya Berikutnya !!
Semoga bermanfaat
Pengenalan Expert Advisor
Pengenalan MQL4
Bahasa program MetaQuotes Language 4 atau lebih dikenal dengan nama MQL4
adalah Bahasa pemrograman generasi ke-4, bahasa pemrograman ini telah
diciptakan dan dikembangkan oleh MetaQuotes Software Corp. MQL4 adalahbahasa pemrograman yang diciptakan secara khusus untuk membuat stategi
perdagangan dan menganalisa sinyal pasar mata uang valuta asing. Bahasa program
MQL4 ini hanya bekerja dan berjalan pada MetaTrader 4 Client Terminal
EXPERT ADVISOR DAN KEGUNAANNYA
Expert Advisordisingkat EA, kita biasa mengenalnya sebagai robot forex.
Terdapat pada MetaTrader 4 yang fungsinya untuk memberi perintah komputer agar
secara otomatis dapat menganalisa chart kemudian melakukan trading berdasarkanhasil analisa tersebut. Tentunya, kita perlu menyediakan aturan-aturan atau rule agar
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
6/26
komputer bisa melakukan hal tersebut secara otomatis serta bisa menterjemahkan
keinginan dan strategi trading kita.
Berikut kami berikan ilustrasinya untuk mempermudah pemahaman:
Dengan timeframe H1 Anda trading di EUR/USD Dalam 5 jam terakhir, Anda ingin membuka posisi buy setiap harga naik
menembus titik tertinggi
Dalam 5 jam terakhir, Anda ingin membuka posisi sell setiap harga turun
menembus titik terendah
Anda bisa menterjemahkannya dalam sebuah kode pemrograman, dengan
aturan yang sudah jelas tersebut, dan melalui MQL Editor yang sudah
disediakan kala meng-install MetaTrader 4 membuat EA sendiri
Cukup memasangkan pada timeframe H1, setelah EA jadi, tanpa Anda perlu
mengklik tombol apapun maka komputer akan membuka posisi buy dan sell
sendiri. Dengan demikian tentunya lebih mudah bagi trader, karena tidak
perlu duduk di depan komputer berjam-jam menunggu sinyal untukmembuka posisi serta tidak akan melewatkan analisa dan momen apapun.
Agar mampu menghasilkan profit, langkah dasar untuk membuat sebuah
robot forex adalah sebagai berikut:
1.
Terjemahkan ke dalam pola yang komplit dan jelas, pikirkan strategi dan
aturan trading Anda, terjemahkan. Contoh: Buka buy jika selama 5 bar
berturut pair bergerak, jika titik tertinggi bar terakhir sudah di bawah titik
tertinggi bar sebelumnya kemudian tutup posisi.
2. Ke dalam bahasa pemrograman MQL, tuangkan langkah detil pada no 1
tadi. Anda bisa membaca panduan lengkap pada Help MQL Editor jika
kesulitan atau berkonsultasi dengan Tim Pelatihan Forex Gratis.
3.
Lakukan backtest beberapa kali dan temukan setting yang menguntungkan,
Setelah EA di-compile. Lakukan forward test dengan setting terbaik selama
1-2 minggu.
4. Barulah menjalankan EA di akun real jika terus profit dan menuai profit
sekalipun saat Anda tidur malam.
Jika Anda menemui kesulitan dalam menuangkan strategi-strategi trading Anda ke
dalam sebuah EA, bagi para trader terutama member Pelatihan Forex Gratis, baik
masalah teknis pemrograman, atau hendak berkonsultasi seputar ide dan strategiAnda, bisa kontak kami melalui email. Kami dari Pelatihan Forex Gratis akan
membantu merealisasikan Expert Advisor idaman Anda
Ada 3 jenis aplikasi yang dapat dibuat dengal MQL4, semuanya adalah untuk
keperluan trading forex, saham, ketiga jenis program tersebut adalah
Pembuatan Custom Indicator
Pembuatan Expert Advisor (Robotic)
Script
include file
untuk memulai bekerja dengan MQL4 anda harus mendonwloadnya terlebih dahulu
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
7/26
disini
Expert Advisor adalah suatu mekanik sistem yang terhubung pada suatu grafik
tertentu dan berjalan otomatis , sesuai dengan notasi tick (waktu) dan memberikan
berbagai kemungkinan dengan memberikan perintah trade secaralangsung ke server
broker.
File pembuatan program expert advisor disimpan dalam folder
terminal_drectory\experts
Custom Indicator berfungsi hanya untuk menerapkan analisa terhadap kondisi pasar
valuta asing dan biasanya sebagai pelengkap tambahan expert advisor, indikator
tidak bisa melakukan perintah trade secara langsung.
File pembuatan custome indikator disimpan kedalam folder
terminal_directory\experts\indicators
Script suatu program yang dibuat hanya untuk melakukan satu tindakan perintah
saja , Script tidak bisa berjalan otomatis tapi berjalan berdasarkan permintaan trader
(pemakai).
File penyimpanan include file disimpan dalam folder
terminal_directory\experts\scripts
Include file adalah blok program yang paling sering digunakan, blok-blok program
yang digunakan untuk pembuatan expert advisor, script dan custom indicator.
File penyimpanan include file disimpan dalam folder
terminal_directory\experts\include
Pemberian komentar / ulasan
/*pemberian komentar terdiri dari beberapa baris....
*/
// digunakan untuk pemberian komentar satu baris
Reserve word adalah daftar kata yang tidak boleh digunakan sebagai variable,
karena daftar kata tersebut sudah digunakan oleh sistem untuk tugas-tugas tertentu
dibawah ini adalah daftar reserve wordboolexternbreakfalsecolorstaticcasetrue
datetimecontinuedouble
http://www.emasforex.pralestari.com/?m=freemodul11&id=FX1000003http://www.emasforex.pralestari.com/?m=freemodul11&id=FX10000037/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
8/26
defaultintelsestringforvoid
ifreturnswitchwhile
Dasar-Dasar MQl4
Dasar-Dasar MQl4
Constant
adalah suatu nilai yang diberikan oleh programmer
contoh dari konstan adalah : 17, 15.5, "Kursus"
Variable
adalah suatu nama dalam program yang mempunyai nilai.
contoh variable a = 10; b = a + 15;
a adalah variable
b adalah variable
10 dan 15 adalah konstant untuk variable.
catatan : setiap baris harus ditutup dengan tanta titik-koma (;)
Tipe variable
dibedakan lagi menjadi beberapa bagian seperti dibawah ini
int- untuk bilangan bulat
double- untuk bilangan pecahan
Bool- untuk logika pembenaran
string- untuk huruf
color- untuk penetapan warna
datetime- untuk penetapan tanggal dan waktu
Memberi nilai variable dengan benar benar
Integer - untuk bilangan bulat
http://www.emasforex.pralestari.com/?m=freemodul10&id=FX1000005http://www.emasforex.pralestari.com/?m=freemodul10&id=FX1000005http://www.emasforex.pralestari.com/?m=freemodul10&id=FX10000057/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
9/26
Berkisar antara - 214483648 sampai +214483647
int Art = 10;
int B_27 = -1;
int Num = 21;
int Max = 2147483647;
int Min = -2147483648;
double - untuk bilangan pecahan
double Jual = 10.123;
double Jual_Beli = -1.0;
double Jumlah = 0.5;
double Total = -12.07;
double HargaPrice_2 = 1.2756;
boolean - untuk penetapan logika benar atau salahbool aa = True; // Boolean variable aa mempunyai nilai benar
bool B17 = TRUE; // Boolean variable B17 mempunyai nilai benar
bool Hamma = 1; // Boolean variable Hamma mempunyai nilai benar
bool Asd = False; // Boolean variable Asd mempunyai nilai salah
bool Nol = FALSE; // Boolean variable Nol mempunyai nilai salah
bool Prim = 0; // Boolean variable Prim mempunyai nilai salah
string - untuk penulisan karakter huruf dan angka
string Prefix = "MetaTrader 4";
string Postfix = "_of_my_progr. OK";
string Name_Mass = "History";
string text ="Upper Line\nLower Line"; // huruf yang berisi ganti baris
(linefeed)
Escape Squence untuk mreflesikan karakter khusus yang diawali dengan
garis miring terbalik (black slash) '\'
Tekan tombol enter \rGanti Garis Baru \ntombol tab \t
garis miling terbalik \\tanda petik satu \'tanda petik dua \"tanda hexadecimal \xhh
color - untuk penulisan warna
color A = Red; // warna merah
color B = Yellow; // warna kuning
color Colorit = Black; // warna hitam
color B_21 = White; // warna putih
datetime - untuk tanggal dan waktu
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
10/26
Harus diawali dengan huruf D
datetime Alfa = D'2009.01.01 00:00'; // tahun baru 1 Januari 2009
datetime Tim = D'01.01.2009'; // tahun baru 1 Januari 2009
datetime Tims = D'2009.06.12 16:30:45'; // Juni 12, 2009 4:30:45 p.m.
datetime N_3 = D'12.06.2009 16:30:45'; // Juni 12, 2009 4:30:45 p.m.
datetime Compile = D''; // sama dengan D'[compilation date] 00:00:00'
Memahami fungsi-fungsi File
Memahami fungsi-fungsi File
Suatu fungsi yang menentukan, mengijinkan status dari terminal trader, juga status
dari keabsahan program MQL4.
void FileClose( )
void FileDelete( )
void FileFlush( )
bool FileIsEnding( )
bool FileIsLineEnding( )
int FileOpenHistory( )
int FileReadArray( )
bool FileSeek( )
int FileSize( )
int FileWrite( )
int FileWriteArray( )
void FileClose( int handle)
Berfungsi untuk menutup file yang baru saja dibuka oleh FileOpen()
Parameters:
handle - File handle returned by the FileOpen() function
int handle=FileOpen("filename", FILE_CSV|FILE_READ);if(handle>0){
// working with file ...FileClose(handle);
}
void FileDelete( string filename)
berfungsi untuk menghapus file yang sudah ada dan untuk mengecek
keberhasil file yang sudah dihapus kita harus menggunakan fungsi
GetLastError().Berkas file hanya bisa dihapus apabila berada di dalam folder
terminal_dir\experts\files directory (terminal_directory\tester\)atau
didalam subfolder tersebut
Parameters:
filename - nama file
// file my_table.csv will be deleted from terminal_dir\experts\files directory
int lastError;
http://www.emasforex.pralestari.com/?m=freemodul6&id=FX1000001http://www.emasforex.pralestari.com/?m=freemodul6&id=FX10000017/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
11/26
FileDelete("my_table.csv");
lastError=GetLastError();
if(laseError!=ERR_NOERROR)
{
Print("An error ocurred while (",lastError,") deleting file my_table.csv");
return(0);}
void FileFlush( int handle)
Berfungsi untuk menyimpan seluruh data yang berada di memori komputer
untuk disimpan kedalam hard disk.
Parameters:
handle - File handle, returned by FileOpen() functions.int bars_count=Bars; inthandle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);if(handle>0) { FileWrite(handle,"#","OPEN","CLOSE","HIGH","LOW"); for(inti=0;i
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
12/26
if(handle
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
13/26
if(handle>0){
FileSeek(handle, 0, SEEK_END);//---- add data to the end of fileFileWrite(handle, data1, data2);FileClose(handle);
handle=0;}
int FileSize( int handle)
Berfungsi untuk mengembalikan ukuran fileint handle;int size;handle=FileOpen("my_table.dat", FILE_BIN|FILE_READ);if(handle>0){
size=FileSize(handle);Print("my_table.dat size is ", size, " bytes");FileClose(handle);
}
int FileWrite( int handle, ...)
Berfungsi untuk merekam data kedalam file, setelah penulisan akan
disisipkan secara otomatis tanda koma untuk membedakan jenis data dan
pada akhir file akan ditambahkan "\r\n"
Parameters:
handle - File handle returned by the FileOpen() function.int handle;
datetime orderOpen=OrderOpenTime();handle=FileOpen("filename", FILE_CSV|FILE_WRITE, ';');if(handle>0){
FileWrite(handle, Close[0], Open[0], High[0],Low[0], TimeToStr(orderOpen));
ileClose(handle);}
int FileWriteArray( int handle, object array[], int start, int count)Berfungsi untuk merekam data array kedalam file binari penyimpanan array
data bisa terdiri dari integer, bool, datetime dan color.
Parameters:
handle - File handle returned by the FileOpen() function.
array[] - Array to write.
start - Starting index in the array (the first written element number).
count - Count of elements to be written.int handle;
double BarOpenValues[10]; // copy first ten bars to the
array for(int i=0;i
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
14/26
handle=FileOpen("mydata.dat", FILE_BIN|FILE_WRITE);if(handle>0) { FileWriteArray(handle,BarOpenValues, 3, 7); // writing last 7 elementsFileClose(handle); } }
Memahami Cara Kerja Operator Switch
Operator Switch
Fungsi switch digunakan apabila terdapat penggunaan syarat lebih dari dua, maka akan lebih
efektif menggunakan switch.
Format Sintaks Switch
Blok Diagram Switch
http://www.emasforex.pralestari.com/?m=freemodul3&id=FX1000007http://www.emasforex.pralestari.com/?m=freemodul3&id=FX10000077/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
15/26
switch(kondisi) { case syarat1: lakukan sesuatu;break; case syarat2: lakukan sesuatu;break; case syarat3: lakukan sesuatu;break; default: lakukan sesuatu jika semua syarat
tidak terpenuhi }
Format Sintaks IF ELSE//------------------------------------------------------------------------------// barnumber.mq4// The code should be used for educational purpose only.//------------------------------------------------------------------------------
int start(){
int n = 3;
Alert("Bar numbers starting from ", n,":");
switch (n)
{
case 1 : Alert("Bar 1");
case 2 : Alert("Bar 2");
case 3 : Alert("Bar 3");
case 4 : Alert("Bar 4");
case 5 : Alert("Bar 5");
case 6 : Alert("Bar 6");
case 7 : Alert("Bar 7");
case 8 : Alert("Bar 8");
case 9 : Alert("Bar 9");
case 10: Alert("Bar 10");
break;
default: Alert("Wrong number entered");
}
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
16/26
return;
// keluar dari start()
}
Memahami contoh penggunaan switchint start()
{double Level=1.3200;int Delta=NormalizeDouble((Bid-Level)Point,0);if (Delta
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
17/26
Contoh penggunaan IF ELSE
int start(){doubleLevel,Price;Level=1.2753;Price=Bid; // set harga level
//--------------------------------------------------------------------
if (Price>Level){Alert("Harga telah melebihi harga level ");
}//--------------------------------------------------------------------
return;}
atau bisa juga ditulis seperti ini dengan menghilangkan tanda {if (Price>Level) Alert("Harga telah melebihi harga level ");
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
18/26
Jika harga diatas Level 1 ataudibawah Level 2
lambang atau adalah ||int start()
{doubleLevel_1,Level_2,Price;Level_1=1.2850;
Level_2=1.2800;Price=Bid;
//--------------------------------------------------------------------if (Price > Level_1 || Price < Level_2){Alert("Harga tidak berada pada level yg sudah ditentukan");
}//--------------------------------------------------------------------
return;}
//--------------------------------------------------------------------
Memahami Variable
Variable
Variable merupakan hal yang sangat penting dan mendasar dalam MQL4, karena
variable adalah tempat untuk menyimpan data, data tersebut bisa dipanggil, dirubah ,
MQL4 mengenal beberapa jenis variable diantaranya adalah:
http://www.emasforex.pralestari.com/?m=freemodul2&id=FX1000003http://www.emasforex.pralestari.com/?m=freemodul2&id=FX1000003http://www.emasforex.pralestari.com/?m=freemodul2&id=FX10000037/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
19/26
Predefine variable
Local variable
global variable
external variable
define variable
Predefine variable (Variable standar)
adalah reserve words dengan nilai data yang sudah disiapkan oleh sistem
sehingga nilai data tersebut tidak bisa ganti dan dimasukan oleh programmer.
untuk mengetahui perubahan data hanya bisa dilakukan dengan memanggil
RefreshRate() . Predefine variable juga mereflesikan status dari gerakan harga
sekarang.
Daftar Predefine variable
AskBidBarsPointDigits
Predefine variable Time SeriesTimeOpenCloseHighLowVolume
Ask adalah harga beli sekarang , untuk mendapatkan harga beli terbaru
harus menggunakan RefreshRate().
Bid adalah harga jual sekarang, untuk mendapatkan harga jual terbaru harus
menggunakan RefreshRate()Contoh penggunaan harga sekarang
int start(){Alert("Ask = ", Ask); // Harga
Sekarangreturn;}
double bid =MarketInfo("EURUSD",MODE_BID);double ask =MarketInfo("EURUSD",MODE_ASK);double point =MarketInfo("EURUSD",MODE_POINT);int digits=MarketInfo("EURUSD",MODE_DIGITS);int spread=MarketInfo("EURUSD",MODE_SPREAD);
if(iRSI(NULL,0,14,PRICE_CLOSE,0)
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
20/26
return;}
Bars adalah jumlah bars(batang) pada kondisi sekarang yang tergambar
dalam suatu grafik .
iBars adalah suatu fungsi yang mengembalikan jumlah bars(batang) dalam
suatu grafik tertentu.
int counter=1;for(int i=1; i=0; i--)
{if(High[i+1] > LastHigh) LastHigh = High[i+1];if(Low[i+1] < LastLow) LastLow = Low[i+1];//----if(TimeDay(Time[i]) != TimeDay(Time[i+1])){P = (LastHigh + LastLow + Close[i+1])/3;
R1 = P*2 - LastLow;S1 = P*2 - LastHigh;R2 = P + LastHigh - LastLow;S2 = P - (LastHigh - LastLow);R3 = P*2 + LastHigh - LastLow*2;S3 = P*2 - (LastHigh*2 - LastLow);LastLow = Open[i];LastHigh = Open[i];
}//----PBuffer[i] = P;S1Buffer[i] = S1;R1Buffer[i] = R1;
S2Buffer[i] = S2;R2Buffer[i] = R2;
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
21/26
S3Buffer[i] = S3;R3Buffer[i] = R3;
}
Double Open[] adalah rangkaian array yang berisi harga buka dari masing-
masing bariOpen() adalah suatu fungsi standar buka yang mengembalikan nilai nilai
buka yang ditunjukkan dengan simbol dan pergeseran waktu. Jika
pergeseran waktu masih kosong , maka fungsi iOpen() akan
mengembalikan nilai 0.
Double Close[], iClose()i = Bars - counted_bars - 1;
while(i>=0){double high = High[i];double low = Low[i];double open = Open[i];double close = Close[i];AccumulationBuffer[i] = (close-low) - (high-close);if(AccumulationBuffer[i] != 0){double diff = high - low;if(0==diff)
AccumulationBuffer[i] = 0;else
{AccumulationBuffer[i] /= diff;AccumulationBuffer[i] *= Volume[i];}
}if(i < Bars-1) AccumulationBuffer[i] +=
AccumulationBuffer[i+1];i--;
}
Double High[] Rangkaian array yang berisi harga tertinggi dari masing-
masing bar graphik pada saat sekarang
urutan rangkaian index disusun dengan pola terbalik dari urutan terakhir ke
urutan yang paling baru
misalnya bar sekarang berada pada index 0 sedangkan yang lama berada
pada index dengan urutan bars-1
double Low[], iHigh() , iLow()//---- maximums counting
i=Bars-KPeriod;if(counted_bars>KPeriod) i=Bars-counted_bars-1;while(i>=0)
{double max=-1000000;k = i + KPeriod-1;while(k>=i){price=High[k];
if(max < price) max=price;k--;
}
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
22/26
HighesBuffer[i]=max;i--;
}//----
Volume adalah rangkaian array yang berisi jumlah tick dari masing-masing
bar dari grapik yang sekarangiVolume() adalah suatu fungsi standar buka yang mengembalikan nilai tick
dari bar yang ditunjukkan dengan simbol dan pergeseran waktu. Jika
pergeseran waktu masih kosong , maka fungsi iVolume() akan
mengembalikan nilai 0.if(i==0 && time0 < i_time + periodseconds){
d_volume += Volume[0];if(Low[0] < d_low) d_low = Low[0];if(High[0] > d_high) d_high = High[0];d_close = Close[0];
}
last_fpos = FileTell(ExtHandle);last_volume = Volume[i];FileWriteInteger(ExtHandle, i_time, LONG_VALUE);FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
Memahami ruang lingkup local variable
Local variable letaknya berada didalam suatu fungsi, dan hanya berlaku
didalam fungsi tersebut, apabila digunakan diluar fungsi tersebut maka nilainyaadalah nol.int start(){
hasil = my_func( x, y, z);// ---------------
my_func(double a,double b, double c){
int d;d = (a * b + c);return(d);
}
// ----------------return(0);
}
local variable adalah a, b, c dan d
int start(){int Tick; // local
variableTick++; //
Penambahan TickComment("Jumlah Tick: ",Tick); // pemberitahuan jumlahtick
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
23/26
return; // keluardari start
}
int Tick; // globalvariable
int start(){Tick++; //
Penambahan TickComment("Jumlah Tick: ",Tick); // pemberitahuan jumlah
tickreturn; // keluar
dari start}
Memahami ruang lingkup global variable
GLobal variable letaknya berada diluarsuatu fungsi, dan berlaku didalamsemuga program tersebut,int global_variableint start(){
hasil = my_func( x, y, z);int bb;
// ---------------my_func(double a,double b, double c)
{int d;d = (a * b + global_variable);
return(d);}// ----------------return(0);}
Global variable adalah global_variable, sedangkanbbadalahlocal variable
Memahami ruang lingkup external variable
External variable letaknya berada diluarsuatu fungsi start, dan berlaku didalam
semuga program tersebut, external variable adalah suatu pilihan yang diberikan oleh
programmer agar bisa dirubah-rubah oleh user atau pemakai sistem.//--------------------------------------------------------------------// externvar.mq4// The code should be used for educational purpose only.//--------------------------------------------------------------------extern double Level = 1.2500; // External variableextern int n = 5; // External
variablebool Fact_1 = false; // Global variable
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
24/26
bool Fact_2 = false; // Global variable//--------------------------------------------------------------------int start(){
double Price = Bid;if (Fact_2==true)
return;
if (NormalizeDouble(Price,Digits) >= NormalizeDouble(Level,Digits))Fact_1 = true;
if (Fact_1 == true && NormalizeDouble(Price,Digits)
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
25/26
function call - fungsi yang memberikan nilai balik
Format void function tanpa mempunyai nilai return
void nama_fungsi(daftar parameter) { print(daftar parameter) }Format function call dengan mempunyai nilai return
Function call adalah suatu fungsi yang kita buat sendiri untuk melakukan hal-hal
tertentu yang kita inginkan sendiri ,
dibawah ini kami berikan contoh membuat fungsi sendiri dengan nama Gipo
Format Function Call
Penjelasan dari gambar tersebut diatas adalah Fungsi tersebut bernama Gipo
sedangkan hasil dari fungsi Gipo adalah int atau bilangan bulat untuk mendapatkan
nilai dari fungsi Gipo harus dengan return( variable ) nama variabel kita pilih
sendiri dari contoh diatas adalah return(c) int a, int b adalah parameter berisi nilai
yang sudah ada dan bisa kita pilih sendiri Apabila kita ingin menggunakan fungsi
Gipo maka kita harus memanggilnya int hasilnya = Gipo(5,6);
nama_fungsi(daftar parameter) { print(daftar parameter) return(); }Memahami contoh penggunaan function call
int start() { int a = 5; double b = 10.99; double hasilnya = My_function(a, b); return;
} int My_function (int a, double b){
int c = a * b + 3;
return (c);
} bool My_bool(int Alpha) { if(Alpha>0) { Alert("The value is positive"); return
(true); } return (false); }
Memahami contoh penggunaan void function
void My_function (double Price_Sell) { if(Price_Sell - Ask > 100) Alert("Profit for
this order exceeds 100 ?"); return; }
7/25/2019 75747036 Cara Membuat Sendiri Expert Advisor Sederhana
26/26