Saturday, April 14, 2012

CODE MEMBUAT Forex Robot (How to make Forex Robot )

kackdir.blogspot.com
pengertian robotPengertian Forex Robot

Apa sebenarnya pengertian dari forex robot ini? Forex Robot atau biasa disebut Expert Advisors (EA) adalah sebuah program komputer yang dirancang untuk melakukan trading forex secara otomatis.
Forex robot bisa melakukan open transaksi dan close transaksi secara mandiri tanpa campur tangan manusia. Dirancang dengan algoritma yang rumit dan hanya support untuk platform trading tertentu, platform yang paling banyak digunakan yaitu Meta Trader 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.. 
Langsung saja :
1 Pertama kita buka dulu program MT4 nya, setelah itu klik menu tool dan klik Metaquotes Language Editor atau bisa klik F4
2. Nah... setelah program Meta Editornya sudah terbuka, buatlah lembar baru dengan klik menu New atau ctrl+N, setelah muncul kotak dialog centang bagian  Expert Advisor, dan selanjutnya klik Next
dibawah ini contoh template Script MQL4

//+------------------------------------------------------------------+
//| MACD WITH PRICE MODIFICATON.mq4 |
//| Copyright © 2011-2012, baguswidyantoro |
//| http://baguswidyantoro.t35.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, isikan nama anda disni"
#property link "http://isikan website anda disini"

extern int MagicNumber = 12345678;
extern int TimeStart = 0;
extern int TimeFinish = 24;
extern double Lots = 0.1;
extern double TrailingStop = 20.0;
extern double TakeProfit = 30.0;
extern int StopLoss = 50;
extern int GridLevel = 1;
extern int Multiplier = 2;
extern int GridRange = 35;
extern int TargetBalanceInPips = 5000;
int gi_unused_132 = 0;
double g_pips_144 = 4.0;
double g_pips_152 = 3.0;
double g_period_160 = 21.0;

int init() {
return (0);
}

int deinit() {
return (0);
}

int start() {
int l_ticket_52;
if (Bars < 100) {
Print("bars less than 100");
return (0);
}
if (TakeProfit < 10.0) {
Print("TakeProfit less than 10");
return (0);
}
double l_imacd_0 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
double l_imacd_8 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
double l_imacd_16 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
double l_imacd_24 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1);
double l_ima_32 = iMA(NULL, 0, g_period_160, 0, MODE_EMA, PRICE_CLOSE, 0);
double l_ima_40 = iMA(NULL, 0, g_period_160, 0, MODE_EMA, PRICE_CLOSE, 1);
int l_ord_total_56 = OrdersTotal();
if (l_ord_total_56 < 1) {
if (AccountFreeMargin() < 100.0 * Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return (0);
}
if (l_imacd_0 < 0.0 && l_imacd_0 > l_imacd_16 && l_imacd_8 < l_imacd_24 && MathAbs(l_imacd_0) > g_pips_144 * Point && l_ima_32 > l_ima_40) {
l_ticket_52 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, Ask + TakeProfit * Point, "macd", 12345678, 0, Green);
if (l_ticket_52 > 0) {
if (OrderSelect(l_ticket_52, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ", OrderOpenPrice());
} else Print("Error opening BUY order : ", GetLastError());
return (0);
}
if (l_imacd_0 > 0.0 && l_imacd_0 < l_imacd_16 && l_imacd_8 > l_imacd_24 && l_imacd_0 > g_pips_144 * Point && l_ima_32 < l_ima_40) {
l_ticket_52 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, Bid - TakeProfit * Point, "macd", 12345678, 0, Red);
if (l_ticket_52 > 0) {
if (OrderSelect(l_ticket_52, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ", OrderOpenPrice());
} else Print("Error opening SELL order : ", GetLastError());
return (0);
}
return (0);
}
for (int l_pos_48 = 0; l_pos_48 < l_ord_total_56; l_pos_48++) {
OrderSelect(l_pos_48, SELECT_BY_POS, MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY) {
if (l_imacd_0 > 0.0 && l_imacd_0 < l_imacd_16 && l_imacd_8 > l_imacd_24 && l_imacd_0 > g_pips_152 * Point) {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);
return (0);
}
if (TrailingStop <= 0.0) continue;
if (Bid - OrderOpenPrice() <= Point * TrailingStop) continue;
if (OrderStopLoss() >= Bid - Point * TrailingStop) continue;
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, Green);
return (0);
}
if (l_imacd_0 < 0.0 && l_imacd_0 > l_imacd_16 && l_imacd_8 < l_imacd_24 && MathAbs(l_imacd_0) > g_pips_152 * Point) {
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);
return (0);
}
if (TrailingStop > 0.0) {
if (OrderOpenPrice() - Ask > Point * TrailingStop) {
if (OrderStopLoss() > Ask + Point * TrailingStop || OrderStopLoss() == 0.0) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, Red);
return (0);
}
}
}
}
}
return (0);
}+


3. Simpan scrip yang telah anda buat tersebut, coba / tes dahulu robot yang telah anda buat dan gunakan pada Demo acaunt.
Penjelasan singkat fungsi script
Dalam sebuah EA, pasti ada :
  • init() (Initialization)> Ketika sebuah EA dijalankan, maka yang di eksekusi pertama kali adalah bagian ini. Dan ini hanya sekali berjalan.
  • start() > di eksekusi ketika init selesai di eksekusi.. & section ini looping berulang2 tiap tick
  • deinit() > Di eksekusi jika sebuah EA di remove dari chart.. Hanya sekali berjalan..
sekarang masuk ke Syntak..
Syntak yang biasa dipakai dalam sebuah EA adalah :
  • bool > merupakan perbandingan true atau false
    bool=true;
  • int (integer) > input adalah bilangan bulat
    contoh
    int bilangan=0;
    double > input bisa menggunakan bilangan desimal
    double lots=0.1;
    string > input berupa huruf
  • string coment="contoh teks yang dipasang";
  • color > input yg dihasilkan berupa warna
    color ijo=Green;
  • untuk penamaan variabel tidak boleh menggunakan spasi..
    agar bisa di ubah2 maka menggunakan extern
    contoh
    extern double lots=0.1;
Untuk Detail script per item akan saya bahas pada artikel forex yang akan datang, ( masih dalam penulisan )
Selamat Mencoba ...............

0 comments:

Post a Comment

KOMENTAR