75747036 cara membuat sendiri expert advisor sederhana

Upload: panggih-dzt

Post on 25-Feb-2018

360 views

Category:

Documents


25 download

TRANSCRIPT

  • 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.html
  • 7/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=FX1000003
  • 7/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=FX1000005
  • 7/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=FX1000001
  • 7/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=FX1000007
  • 7/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=FX1000003
  • 7/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