Anda di halaman 1dari 7

Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

Forex Trading For Living

Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana


Setelah membaca mengenai dasar-dasar dari pemrograman MQL, sekarang marilah kita coba untuk praktek mem-
buat EA yang sederhana. EA yang coba saya buat ini sangatlah sederhana. Logikanya begini :

EA akan melakukan pengecekan terlebih dahulu apakah sudah ada posisi atau tidak di market. Bila tidak, maka EA
akan  langsung memasang posisi baru. EA akan melakukan BUY bila harga penutupan (close) candle terakhir be-
rada di atas garis Moving Average atau akan melakukan SELL bila harga penutupan (close) candle terakhir berada
di bawah garis Moving Average.

Sebelum mulai membuat MQL, pertama-tama kita mesti memahami konsep dari strategi trading yang akan kita
buat EA-nya. Dalam setiap strategi trading yang ingin dibuatkan EA-nya, kita perlu mengetahui :

– Indikator apa yang digunakan?


– Bagaimana cara OP (Open Posisi) ke dalam market ?
– Bagaimana cara Exit baik itu TP (Take Profit) maupun SL (Stop Loss) ?

Langkah 1 – Buat Template

Sebelum memulai coding, pertama-tama kita mesti membuat templatenya terlebih dahulu. Template di sini san-
gatlah penting untuk memudahkan kita memahami dengan cara kerja dari EA tersebut. Template ini juga akan
membantu pada saat backtesting nanti. Dari contoh di atas, saya akan membuat templatenya terlebih dahulu.
Caranya tinggal menempelkan 1 garis MA (saya menggunakan MA periode 30). Setelah selesai membuat template,
jangan lupa untuk menyimpan template tersebut.

Langkah 2 – Membuat Expert Advisor Baru

Selanjutnya kita tinggal membuka layar MQL Language Editor yang bisa diakses dengan cara mengclick icon MQL
Editor atau bisa diakses melalui menu Tools > MetaQuotes Language Editor.

1 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

Selanjutnya akan muncul Window baru dan pilih File > New. Pilih Expert Advisor.

Beri nama Expert Advisor yang ingin anda buat. Dalam hal ini saya memberikan nama EA Buy Sell pada EA ini. Se-
lanjutnya click Finish.

Setelah mengclick finish, maka kita akan masuk ke dalam layar editor dari MQL.

Langkah 3 – Coding

Setelah kita masuk ke dalam layar editor, kita bisa mulai melakukan coding. Semua bahasa pemrograman di MQL
ini biasanya diletakkan di dalam int start(). Mengapa ada di sini? Karena setiap kali ada gerakan chart dalam Meta-
Trader, fungsi start() ini akan dijalankan. EA berjalan karena ada gerakan tick dari market. Setiap ada gerakan 1
pips dari market, maka start() akan dipanggil. Inilah dasar dari bahasa pemrograman EA.

Contoh paling sederhana dari sebuah program adalah menuliskan satu baris teks pada layar chart yaitu dengan
mengetikkan command berikut :

2 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

Comment ("Teks yang muncul di layar")

Setelah selesai, kita bisa save dan langsung meng-compilenya. Click Compile yang ada di bagian atas dari MQL Edi-
tor.

Bila coding kita benar, maka tidak ada pesan error seperti tampak pada gambar berikut ini.

Sekarang coba untuk melihat hasil coding kita di MetaTrader. Click saja View > Strategy Tester. Pilih EA yang kita
buat tadi selanjutnya click Start.

Karena chart visual yang dimunculkan pada saat Backtest ini adalah chart kosong, kita bisa membuka template
yang sudah kita buat sebelumnya. Di bagian pojok kiri atas kita akan melihat teks yang kita masukkan akan muncul
pada layar.

Langkah 4 – Membuat Variabel

Setelah berhasil mengetes EA awal tadi, sekarang kita kembali ke coding untuk lanjut membuat EA MA Buy Sell.
Salah satu komponen dari bahasa pemrograman adalah adanya variabel. Di dalam MQL, biasanya variabel akan
banyak digunakan sebagai parameter seperti misalnya untuk Stop Loss, Take Profit, dan lain sebagainya. Cara
membuat variable bisa dilihat di bagian artikel saya sebelumnya.

Pertama-tama, kita buat variabel untuk Take Profit, Stop Loss, Slippage (perbedaan nilai harga yang ditoleransi
pada saat masuk posisi) serta nilai dari periode untuk garis Moving Average (MA). Sebagai contoh di sini saya
anggap periode MA adalah 30 dan nilai Take Profit dan Stop Loss-nya adalah 20.

//+------------------------------------------------------------------+
//| MA Buy Sell.mq4 |
//| Forex Trading For Living @forextradingforliving.com |
//| http://www.forextradingforliving.com |

3 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

//+------------------------------------------------------------------+
#property copyright "Forex Trading For Living @forextradingforliving.com"
#property link "http://www.forextradingforliving.com"

extern int TakeProfit = 30;


extern int StopLoss = 30;
extern int Slippage = 3;

extern int periodeMA = 30;

Catatan : Bila broker yang anda gunakan 5 digit, maka tambahkan angka 0 di belakang masing-masing Take Profit, Stop
Loss dan Slippage

Langkah 5 – Mengecek apakah ada Posisi atau Pending Order

Dalam pembuatan program EA, saya biasanya akan membuat sebuah baris pengecekan yang akan mengecek
apakah sudah ada posisi di market atau tidak. Hampir semua EA yang ada akan melakukan pengecekan ini. Ini
adalah untuk menghindari pemasangan posisi yang terus menerus, karena program akan selalu dijalankan setiap
tick-nya. Baris pengecekannya adalah sebagai berikut :

if (OrdersTotal()==0)
{
// Lakukan BUY / SELL Berdasarkan Posisi harga terhadap MA
}

Langkah 6 – Mengecek apakah ada harga ada di atas / bawah dari garis MA

Nah… Selanjutnya kita tinggal membuat statemen pengecekan yang mengecek posisi harga apakah berada di
bawah atau di atas garis Moving Average (MA). Baris untuk mengecek adalah sebagai berikut :

if (iClose(Symbol(),0,1) > iMA(Symbol(),0,periodeMA,0,MODE_EMA,


PRICE_CLOSE,1) )
{
// Lakukan BUY
}
else
if (iClose(Symbol(),0,1) < iMA(Symbol(),0,periodeMA,0,MODE_EMA,
PRICE_CLOSE,1) )
{
// Lakukan SELL
}

Fungsi untuk mendapatkan nilai harga penutupan (close) menurut referensi adalah :

double iClose(string symbol, int timeframe, int shift)

Keterangan :
– symbol – Symbol the data of which should be used to calculate indicator. NULL means the current symbol.
– timeframe – Timeframe. It can be any of Timeframe enumeration values. 0 means the current chart timeframe.
– shift – Index of the value taken from the indicator buffer (shift relative to the current bar the given amount of periods
ago).

Di sini arti dari iClose(Symbol(),0,1) adalah :

symbol : Symbol() – Mengambil pair mata uang tempat dijalankannya EA


timeframe :  0 – Timeframe yang digunakan adalah timeframe yang sedang aktif
shift : 1 – Ini artinya nilai close (harga penutupan) yang  diambil adalah dari 1 candle sebelum price yang sedang
aktif

Sedangkan fungsi Moving Average sendiri menurut referensi adalah sebagai berikut :

double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Parameters:
symbol – Symbol the data of which should be used to calculate indicator. NULL means the current symbol.
timeframe – Timeframe. It can be any of Timeframe enumeration values. 0 means the current chart timeframe.

4 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

period – Averaging period for calculation.


ma_shift – MA shift. Indicators line offset relate to the chart by timeframe.
ma_method – MA method. It can be any of the Moving Average method enumeration value.
applied_price – Applied price. It can be any of Applied price enumeration values.
shift – Index of the value taken from the indicator buffer (shift relative to the current bar the given amount of peri-
ods ago).

Berarti arti dari  iMA(Symbol(),0,periodeMA,0,MODE_SMA, PRICE_CLOSE,1) adalah :

symbol : Symbol() – Mengambil pair mata uang tempat dijalankannya EA


timeframe :  0 – Timeframe yang digunakan adalah timeframe yang sedang aktif
period : periodeMA – periode dari MA yang digunakan diambil dari variabel periodeMA
ma_shift : 0 – tidak ada penggunaan shift pada MA
ma_method : MODE_SMA – kita menggunakan Simple Moving Average (SMA)
applied_price : PRICE_CLOSE – MA dihitung berdasarkan harga penutupan (close) dari market
shift : 1 – Nilai MA yang dihitung adalah berdasarkan harga penutupan (close) dari 1 candle sebelum price yang
sedang aktif

Langkah 7 – Melakukan proses Buy dan Sell

Setelah membuat logika di atas, kita tinggal memasukkan perintah untuk memasang posisi BUY / SELL sesuai den-
gan kondisi. Baris perintahnya adalah sebagai berikut :

Untuk posisi BUY

OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage, Bid-StopLoss*Point,


Ask+TakeProfit*Point, "BELI", 12345, 0, Green);

Untuk posisi SELL

OrderSend(Symbol(),OP_SELL, 1.0, Bid, Slippage, Ask+StopLoss*Point,


Bid-TakeProfit*Point, "JUAL", 12345, 0, Red);

Berdasarkan referensi, format dari fungsi BUY dan SELL adalah sebagai berikut :

int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double take-
profit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Berarti arti dari OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage, Bid-StopLoss*Point, Ask+TakeProfit*Point, “BELI”, 0,


0, Green); adalah :Parameters :
symbol – Symbol for trading.
cmd – Operation type. It can be any of the Trade operation enumeration.
volume – Number of lots.
price – Preferred price of the trade.
slippage – Maximum price slippage for buy or sell orders.
stoploss – Stop loss level.
takeprofit – Take profit level.
comment – Order comment text. Last part of the comment may be changed by server.
magic – Order magic number. May be used as user defined identifier.
expiration – Order expiration time (for pending orders only).
arrow_color – Color of the opening arrow on the chart. If parameter is missing or has CLR_NONE value opening
arrow is not drawn on the chart.

symbol : Symbol() – Mengambil pair mata uang tempat dijalankannya EA


cmd :  OP_BUY – Memasang posisi BUY
volume : 1.0 – Jumlah lot yang dipasang adalah 1 lot
price : Ask – Posisi buy yang dipasang adalah pada nilai Ask dari market
slippage : Slippage – Nilai slippage yang ditoleransi pada saat masuk posisi berdasarkan variabel Slippage
stoploss : Bid-StopLoss*Point – Nilai Stop Loss yang diatur adalah dari nilai Bid dikurangi dengan variabel Sto-
pLoss
takeprofit : Ask+TakeProfit*Point – Nilai Take Profit yang diatur adalah dari nilai Ask ditambahkan dengan vari-
abel TakeProfit
comment : “BELI” – Komentar yang muncul saat kita melihat history adalah “BELI”
magicnumber : 12345 – Hanya seperti identifier untuk mengenali trade kita (Bisa diisi dengan angka sembarang)
expiration : 0 – Karena ini bukan pending order, maka diisi dengan 0.
arrow_color : Green – Tandah panah yang muncul pada saat backtrack ataupun pada saat EA berjalan berwarna

5 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

hijau saat ada posisi BUY yang dipasang

Dengan begitu maka script lengkap dari program EA Buy Sell adalah sebagai berikut :

//+------------------------------------------------------------------+
//| MA Buy Sell.mq4 |
//| Forex Trading For Living @forextradingforliving.com |
//| http://www.forextradingforliving.com |
//+------------------------------------------------------------------+
#property copyright "Forex Trading For Living @forextradingforliving.com"
#property link "http://www.forextradingforliving.com"
extern int TakeProfit = 20;
extern int StopLoss = 20;
extern int Slippage = 3;

extern int periodeMA = 30;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
Comment("MA Buy Sell");

if (OrdersTotal()==0)
{
if (iClose(Symbol(),0,1) > iMA(Symbol(),0,periodeMA,0,MODE_EMA, PRICE_CLOSE,1) )
{
OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage, Bid-StopLoss*Point, Ask+TakeProfit*Point, "BELI", 12345, 0,
Green);
}
else
if (iClose(Symbol(),0,1) < iMA(Symbol(),0,periodeMA,0,MODE_EMA, PRICE_CLOSE,1) )
{
OrderSend(Symbol(),OP_SELL, 1.0, Bid, Slippage, Ask+StopLoss*Point, Bid-TakeProfit*Point, "JUAL", 12345, 0,
Red);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

Canggihnya EA Chartist - Si Inem Cerdas Cara Menggunakan Moving Average Belajar Membuat EA (Bagian 1) - Penge-
Buatan Secundo Lee dalam Forex Trading nalan Bahasa MQL

 January 29, 2014  vendy  Expert Advisor, Pemrograman MQL

3 thoughts on “Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana”

6 of 7 06/07/2018 12:57
Belajar Membuat EA (Bagian 2) – Membuat EA Sederhana http://www.forextradingforliving.com/pemrograman-mql/belajar-membua...

H Sumiharyanto
May 17, 2017 at 10:31 pm

Sangat bagus dan simpel,

xxxxxx
November 9, 2017 at 12:59 am

cara mengatasi indikator telat memberi data gimana ya? misal ma tepat di area dua atau tiga cendle di belakang
candle terbaru?

vendy 
November 20, 2017 at 2:53 am

contohnya gimana?

Proudly powered by WordPress

7 of 7 06/07/2018 12:57

Anda mungkin juga menyukai