Anda di halaman 1dari 13

FOREX ROBOT GRATIS ( free Downloaf )

Anda bosan mengalami kerugian karena tidak dapat mengendalikan emosi dan disiplin. Rugi, lelah,
Stress, Patah Semangat jadi sahabat setia. STOP! Tinggalkan kebiasaan itu dan mulailah trading
dengan cara CERDAS bersama Robot Forex Cerdas.

Robot disini bukan secara fisik. Tapi sebuah software dengan gabungan Algoritma
yang unik dan analisa indicator untuk trading forex secara otomatis. Tanpa anda
melakukan perintah Buy/Sell, robot forex akan mengerjakan sendiri.

Langsung saja Download Di sini

download robot forex gratis ,cara menggunakan robot forex,


free download robot forex,cara instal robot forex,
download robot forex,robot forex free download,robot scalper,
robot forex indonesia,robot forex marketiva,ea scalper 2010,
forex robot,mrobot scalper,cara install robot forex,instal forex,
cara instal ea,forex robot indonesia,Cara PakaiEA,
download gratis robot forex,download robot trading gratis,
cara menggunakan ea

Label: CARA BUAT ROBOT TRADING, PERFORMA ROBOT, robot ea, ROBOT FOREX GRATIS

Menyusun EA
ok, pada dasarnya, sebuah EA yang sederhana/standard (bukan EA yang kompleks seperti neural
network, atau yang misalnya terdiri dari beberapa modul yang mengontrol trade sendiri-sendiri)...
terdiri atas beberapa bagian/struktur.. bagian ini biasanya dibikinkan fungsi tersendiri, agar coding
terlihat rapi, sekaligus mempermudah debugging
bagiannya :
1. BuySignal : pada kondisi apa EA buka buy
2. SellSignal : pada kondisi apa EA buka sel
3. CloseBuySignal : pada kondisi apa EA nutup posisi buy (yang ini tidak harus ada, karena dapat
menggunakan TP/SL sebagai closingnya)
4. CloseSellSignal : sama seperti CloseBuySignal
5. MoneyManagement : buat itung lotsize secara otomatis
6. Trail : buat trailling posisi, klo misalnya diperlukan
7. Confirmator : kalau misalnya EA cuman trade hari senin-kamis, maka biasanya ditaruh di bagian
ini..
Kalau 7 bagian itu sudah ketemu, bikin EA nya jadi lebih gampang
misalnya begini, gw mau bikin EA yang kayak di Bagian 2 - Contoh EA
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. TP nya 150 dan SL nya 100 pips
kalau di breakdown jadi 7 bagian tadi :
1) BuySignal : kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle
sebelumnya
2) SellSignal : kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle
sebelumnya
3) Tidak ada
4) Tidak ada
5) Lotnya otomatis diitung berdasarkan SL dan persen risiko.
6) Tidak pakai trail, jadi tidak ada
7) Posis baru dibuka kalau sedang tidak ada posisi, dan juga tidak trade di hari Jumat (gw tambahi
rulenya)
kira-kira source code nya jadi begini
code:
extern double RiskPercent=5;
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 (bolehTrade()) //kalau boleh trade
{
if (BuySignal() ) //kalau ada signal buy
{
OrderSend(Symbol(),OP_BUY,itungLot(),Ask,Slippage,Ask-
StopLoss*Point,Ask+TakeProfit*Point,txComment,MagicNumber);
}
else if (SellSignal() ) //kalau ada signal sell
{
OrderSend(Symbol(),OP_SELL,itungLot(),Bid,Slippage,Bid+StopLoss*Point,Bid-
TakeProfit*Point,txComment,MagicNumber);
}

}
//----
return(0);
}
//+------------------------------------------------------------------+
bool BuySignal()
{
//kalau harga close candle sebelumnya lebih besar/diatas EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) > iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool SellSignal()
{
//kalau harga close candle sebelumnya lebih kecil/dibawah EMA 10 pada candle sebelumnya
if (iClose(Symbol(),0,1) < iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE,1) )
{
return(true);
}
else
{
return(false);
}
}
bool bolehTrade()
{
//kalau jumat, EA ga trade ; atau kalau ada order terbuka, EA juga ga trade
if (DayOfWeek()==5 || OrdersTotal()>0) { return (false); } else { return(true); }
}
double itungLot()
{
//ini untuk itung lot secara otomatis berdasarkan SL dan persen risk
double xLots=0;
xLots=NormalizeDouble(AccountBalance()*RiskPercent/100 /StopLoss / 10,1);
return (xLots);
}
logikanya jadi rapi dan jelas...
oya, sekilas mengenai operator
|| berarti atau & berarti dan (nanti akan dijelaskan di bagian tentang operator)
EA ini kelihatannya simple sekali codingnya paling butuh 5-10 menit doank.... tapi kalau di backtest,
profitable lho (terlepas dari dradownnya yang gede)...

Label: CARA BUAT ROBOT TRADING

Fungsi Order dan Indikator Teknikal


Bagian ini membahas beberapa fungsi yang penting, yang dipakai dalam hampir setiap EA.
Sebetulnya fungsi pada MQL 4 itu banyak sekali, tapi mari kita membahas 2 fungsi dasar dulu saja,
yaitu fungsi order dan fungsi analisa teknikal.
1. Fungsi Order
Fungsi ini pasti ada di semua EA. Gunanya adalah untuk buka, tutup, atau ubah posisi (sebetulnya
fungsinya banyak sih)...
lebih lengkapnya ada di help nya MQL4, di bagian "Trading Functions"
disini kita bahas beberapa aja (sisanya bisa dibaca sendiri), kan yang penting ngerti gimana cara
baca & pakainya
OrderSend() : untuk membuka order
code:
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss,
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color
arrow_color=CLR_NONE)
contoh, untuk buka buy 1 lot, tanpa tp dan sl :
code:
OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order #1",1,0,Green);
symbol itu diisi Symbol() jika mau yang diorderkan sama dengan chart dimana EA jalan.. kalau
misalnya mau order pair tertentu, ya tulis aja "GBPUSD" atau "EURUSD" misalnya...
cmd itu ada 6 : OP_BUY, OP_SELL, OP_SELLSTOP, OP_SELLLIMIT, OP_BUYLIMIT,
OP_BUYSTOP
volume itu jumlah lotnya
price, kalau buy, pastikan pricenya Ask, kalau sell, pricenya Bid. Kalau ga ntar error.
slippage itu isi aja 0-5 pip, biar tidak kena requote. Tapi tergantung strateginya juga, kalau TP cuman
3 pip ya otomatis slippagenya jangan besar-besar...
stoploss = harga stoploss (bukan pips SL)...
takeprofit = harga takeprofitnya
comment = terserah mau diisi apa..... cuman keterangan aja untuk user
magic = magic ini magicnumber, gunanya untuk mengidentifikasi posisi. Misalnya saja, EA hanya di
program untuk memanage order dengan magic number tertentu, maka EA tersebut ga akan
modify/close order manual u (karena order manual tidak ada magic number)
expiration = khusus untuk pending order
color = warna tanda di chartnya
fungsi OrderSend() ini akan mengembalikan nilai -1 kalau ordernya gagal, kalau ordernya berhasil,
maka akan mengembalikan nomor ordernya
untuk mengetahui gagal ordernya karena apa, bisa pake fungsi getLastError()
contohnya begini :
code:
int ticket;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order
#2",16384,0,Green);
if(ticket<0)
{
Print("OrderSend failed with error #",GetLastError());
return(0);
}
}
nomor kode error nya bisa diliat di help nya, di MQL4 Reference -> Standard constants -> Error codes
nah, setelah order dibuka, order juga bisa di modify (diubah SL/TP nya) dengan fungsi OrderModify()
code:
bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration,
color arrow_color=CLR_NONE)
OrderModify() ini akan bernilai true jika modifikasinya berhasil, dan false jika modifikasinya gagal...
code:
if(TrailingStop>0)
{
OrderSelect(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<bid-point*trailingstop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
return(0);
}
}
}
oya, ada 1 function lagi yang penting, yaitu OrderSelect()
OrderSelect() ini gunanya untuk memilih order yang akan dimodifikasi/diclose
code:
bool OrderSelect( int index, int select, int pool=MODE_TRADES)
OrderSelect() ini bisa digunakan untuk memilih (men-select - bahasa indo yang tepat apa ya? ) order
baik yang sudah tertutup, lagi terbuka, atau masih pending (limit/stop order)..
index = adalah index order (0,1,2,3,dst) pada mode SELECT_BY_POS ; atau nomor ticket pada
mode SELECT_BY_TICKET
select = ya itu tipe select nya, bisa SELECT_BY_POS (memilih berdasarkan posisi, kalau ga tau
nomor ticketnya, pakai yang ini), atau SELECT_BY_TICKET (kalau sudah tahu nomor ticketnya pakai
yang ini)...
pool = MODE_TRADES itu untuk milih order yang aktif (limit/stop order/order yang masih kebuka),
MODE_HISTORY untuk memilih order yang udah ditutup/dihapus.
contoh :
code:
if(OrderSelect(12470, SELECT_BY_TICKET)==true)
{
Print("order #12470 open price is ", OrderOpenPrice());
Print("order #12470 close price is ", OrderClosePrice());
}
else
Print("OrderSelect returned the error of ",GetLastError());
oya, setelah di-select, kita bisa pakai fungsi-fungsi untuk mengetahui informasi mengenai order
tersebut, seperti jumlah lot, SL, TP, Symbol, dll
fungsi-fungsi antara lain :
OrderLots() = mengetahui jumlah lot
OrderTakeProfit() = mengetahui TP
OrderStopLoss() = mengetahui SL
OrderSymbol() = mengetahui pair nya
...lengkapnya langsung saja cek di MQL4 Reference -> Trading functions ; kalau kurang jelas tentang
cara pakainya, bisa di post di topic ini...
------
ok, order udah bisa di modify, bisa di select, sekarang saatnya untuk menutup order atau menghapus
pending order yang tidak jadi
untuk menutup posisi yang kebuka, pakai OrderClose() (atau OrderCloseBy() kalau hedging)
untuk menghapus pending order, pakai OrderDelete()
code:
bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
ticket = nomor ticket
lots = jumlah lot yang ditutup.. kalau misalnya mau ditutup semua ya isi aja OrderLots()
price = kalau mau nutup sell, pakai harga Ask, kalau mau nutup buy, ketik Bid
slippage = isi 0-5 sesuai keinginan...
color = warna tanda di chartnya..
sama seperti OrderModify(), OrderClose() ini akan bernilai True kalau berhasil menutup, dan bernilai
false kalau gagal menutup posisi
untuk OrderDelete(), jauh lebih simple dari OrderClose()
code:
bool OrderDelete( int ticket, color Color=CLR_NONE)
contoh :
code:
if(Ask>var1)
{
OrderDelete(order_ticket);
return(0);
}
4 fungsi tadi adalah fungsi-fungsi dasar untuk trade.... nah selanjutnya, kita akan bahas fungsi-fungsi
untuk membaca nilai dari indikator teknikal seperti Moving Average, MACD, dll
setelah pembahasan fungsi indikator teknikal ini, harusnya sudah bisa bikin EA yang sederhana
(untuk latihan...... )
2. Fungsi Indikator Teknikal
Di help mql4, bisa di cek di MQL4 Reference - Technical indicators

saya kasih contoh moving average aja...


functionnya iMA()
code:
double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int
shift)
misalnya sesuai gambar diatas, rulenya kalau close candle sebelumnya diatas EMA 144, saya buka
buy...
code:
//pertama musti siapin variabel
double ma1=0;
ma1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
if (iClose(Symbol(),0,1)>ma1)
{
//open buy......
}
untuk ma_method, itu ada 4 (bisa di klik sih di help nya), ada MODE_SMA, MODE_EMA,
MODE_SMMA, MODE_LWMA
untuk applied_price, itu ada 7, klik aja di link helpnya untuk detailnya (daripada gw tulis lagi...)
contoh lain, strategi paling populer sepanjang masa, MA cross
kalau EMA 10 motong EMA 20 dari atas, open sell
kalau diterjemahin ke perintah-perintah komputer, kira-kira kayak begini
1) cek EMA 10 dan 20 pada candle 2 sebelum sekarang
2) cek EMA 10 dan 20 pada candle 1 sebelum sekarang
3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada
candle 1, berarti terjadi cross
ya tinggal di coding aje....
code:
double ma10_1, ma20_1, ma10_2, ma20_2=0;
//1) cek EMA 10 dan 20 pada candle 2 sebelom sekarang
ma10_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
ma20_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);

//2) cek EMA 10 dan 20 pada candle 1 sebelom sekarang


ma10_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
ma20_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);

//3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada
candle 1, berarti terjadi cross

if ( ma10_2 > ma20_2 && ma10_1 < ma20_1 )


{
//open sell......
}
kurang canggih.... mau dikasih filter RSI buat detek overbought (supaya lebih klop)...
code:
double ma10_1, ma20_1, ma10_2, ma20_2=0;
double rsi1=0;
//1) cek EMA 10 dan 20 pada candle 2 sebelom sekarang
ma10_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);
ma20_2=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,2);

//2) cek EMA 10 dan 20 pada candle 1 sebelom sekarang


ma10_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);
ma20_1=iMA(Symbol(),0,144,0,MODE_EMA,PRICE_CLOSE,1);

rsi1=iRSI(Symbol(),0,14,PRICE_CLOSE,1);
//3) klo EMA 10 lebih tinggi dari EMA 20 pada candle 2, dan EMA 10 lebih rendah dari EMA 20 pada
candle 1, berarti terjadi cross

if ( ma10_2 > ma20_2 && ma10_1 < ma20_1 && rsi1 > 70 )
{
//open sell......
}
gampang kan
untuk indikator-indikator lain seperti macd, par-sar, sto, envelope, dll bisa dibaca sendiri di
referencenya....
bahasan selanjutnya adalah membuat EA sederhana yang komplit (bisa dicompile & bisa jalan) (tapi
ga tau profitable atau ga...)

</bid-point*trailingstop)
Label: CARA BUAT ROBOT TRADING

Operator dan Ekspresi MQL4


1. Operator Aritmatika
code:
=B+C //a = b ditambah c
A=B-C //a = b dikurangi c
A=B*C //a = b dikali c
A=B/c //a = b dibagi c
A=B%C //a = sisa bagi b dengan c - 10 % 3 = 1 ; 8 % 3 = 2
code:
A++; //sama dengan A ditambah 1

//contoh :
A=1; //A sama dengan 1
A++;
Print (A); //saat ini A bernilai 2 (1+1)
A++;
Print (A); //saat ini A bernilai 3 (karena ditambah 1 lagi)
code:
B--; //sama kayak diatas, cuman dikurangi 1
B=1;
B--;
Print(B); //saat ini B nilainya 0
2. Assignment operator
yang umum dipakai cuma =
ada banyak sih, ada +=, -=, %= dll, tapi jarang dipakai & agak susah dipahami.. jadi saya jelasin di
lain waktu saja
code:
a=b*5; //masukkan nilai b dikali 5 ke a a+=5; //A sama dengan a+5 a-=5; //A sama dengan a-4
3. Relational operator (operator pembanding)
code:
== : sama
!= : tidak sama
< : lebih kecil dari
> : lebih besar dari
<= : lebih kecil dari atau sama dengan
>= : lebih besar dari atau sama dengan
contoh penerapan
code:
if (a==b) { } //kalau a sama dengan b
if (a>b) { } // kalau a lebih besar dari b
if (a!=b) { } // kalau a tidak sama dengan b
4. Operator Logical
cuma ada 3 yang penting
&& : dan
|| : atau
! : not
contoh penerapan :
code:
if (a==b && c
if (!a==b || c>=d) { } //jika a sama dengan b adalah salah (berarti a tidak sama dengan b) atau c lebih
besar dari atau sama dengan d

Label: CARA BUAT ROBOT TRADING

Tipe Data MQL4


Di MQL4 ada 7 tipe data :
1. Integer (int)
Integer = bilangan tidak berkoma, dari -2 milyar sampai +2 milyar
code:
int A=1;
2. Boolean (bool)
Boolean cuma bisa bernilai benar atau salah (true atau false)
code:
bool SpreadProtection=true;
3. Character (int)
Char ini isinya cuma 1 huruf/symbol saja, untuk deklarasi menggunakan int, karena yang disimpen
adalah nomor ascii nya
code:
int char1='A';
hanya 1 huruf, dan diapit tanda petik 1
4. String (string)
String = kata-kata/kalimat
code:
string commentOrder="Order by EA1";
kata-kata diapit pakai tanda petik (")
5. Double (double)
percis sama integer, cuma double ini untuk bilangan berkoma
code:
double Lot=0.1;
6. Color (color)
Color ini buat menyimpan informasi warna...
function-function tertentu ada paramater warna, untuk set warna tanda panah di chartnya....
misalnya OrderSend
code:
color WarnaBuy=Red;
OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order
#2",16384,0,WarnaBuy);
warna ini paling gampang ya ditulis saja (Red, Blue, Green, dll), atau pakai nilai integer dari RGB
nya..
tapi kayaknya sih warna-warna umum ude cukup, kan hanya buat charting aja, bukan seni lukis
pilihan warnanya bisa di set di Web colors - MQL4 Documentation
7. Datetime (datetime)
Datetime ini untuk menyimpan informasi tanggal & waktu ke variabel
misal :
code:
datetime expiredEA=D'31.12.2007 00:00:00';
if (TimeCurrent()>expiredEA) { Print("maap, EA sudah expired"); }
fungsi diatas, membandingkan waktu sekarang dengan tanggal dan jam expired EA yang sudah
disimpan dalam variabel...
selain itu, biasanya datetime ini digunakan untuk mengatur waktu expire dari pending order formatnya
D'dd.mm.yy HH:MM:SS'
Label: CARA BUAT ROBOT TRADING

Syntax dan Hal Dasar


Syntax dari MQL4 ini mirip c/c++.
Langsung saja kita bahas satu per satu
1. Deklarasi dan Penamaan Variabel
yang valid :
code:
double aa;
double aaa,bbb;
double aaaa=1;
double bb,cc=2;
double a=0,b=1;
double d=2,
e=3,
f=4;
double itu tipe data nya, bisa diganti int, string, bool, dll
a-f itu nama variablenya.
jadi intinya : (yang paling simple)
code:
tipe_data nama_variabel=nilai;
Kalau sudah terbiasa coding, kombinasi seperti diatas juga bisa dipakai kalau mau dibikin biar bisa
diubah-ubah oleh user, ditambahi saja extern jadi :
code:
extern tipe_data nama_variabel=nilai;
oya, nama variable ini case sensitive. Nama_Variabel beda sama nama_variabel
untuk array, akan dijelaskan di bagian lain. (soalnya kalau pemula jarang pakai array )
aturan penamaan variabel :
- panjangnya max 31 karakter
- harus diawali huruf besar, huruf kecil atau _ (tidak bisa angka atau simbol lain selain _ )
- tidak bisa menggunakan keyword
contoh-contoh keyword : bool, color, extern, static, Case, Else, If, true, false dan lain2
2. Comment
untuk tulis comment, ada 2 cara
1. menambahkan // di awal kalimat
2. menggunakan /* */
contoh
code:
int stoploss=10; //stoploss dari trade
Atau /*
code:
Stoploss diisi dalam point
*/
int stoploss=10;
kalimat sesudahnya // pada baris yang sama tidak akan dibaca oleh program dan apapun yang diapit
/* dan */ juga tidak akan dibaca oleh program
Label: CARA BUAT ROBOT TRADING

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).

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, Forexmenang |
//| http://www.freerobotea.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Forexmenang"
#property link "http://www.freerobotea.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 :

Code:
//+------------------------------------------------------------------+
//| ContohEA1.mq4 |
//| Copyright © 2010, Forexmenang |
//| http://www.freerobotea.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Forexmenang"
#property link "http://www.freerobotea.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);
}
//+------------------------------------------------------------------+
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
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

Anda mungkin juga menyukai