Meta Editor

Meta Editor merupakan IDE (Integrated Development Environment/Lingkungan Pengembangan Terpadu) dari MQL4 yang menyediakan semua utilitas yang diperlukan ketika kita akan membuat suatu Expert Advisors, Script, Custom Indicators dan sebagainya di Meta Trader.

Untuk mengakses Meta Editor melalui Meta Trader, klik Toolbar MetaEditor pada MT4



1. Toolbars : Utilisasi yang bisa digunakan pada IDE, seperti Simpan, Open,New dan sebagainya.
2. Editor / Coding Area    : digunakan untuk menuliskan kode program MQL
3. Navigator Windows : Merupakan mapping file-file kode sumber yang bisa ditangani oleh Meta EDITOR yang berada di folder installasi Meta Trader di PC kita
4. Toolbox Panel : berisi informasi-informasi penting bagi pengguna, salah satunya adalah pemberitahuan error ketika kita sedang melakukan  compiling kode sumber.

Berikut langkah-langkah apabila kita akan membuat suatu project baru.
1. Klik Toolbar [NEW]

2. Pada Wizard Windows pilih jenis project yang akan dibuat (misal. Expert Advisors)

3. Selanjutnya isi data dari Expert Advisor, diantaranya Nama Expert Advisor, Author dan Link Web (apabila kita memiliki, bila tidak Link dikosongkan saja)

4. Untuk selanjutnya siap melakukan coding expert advisornya



Untuk melakukan modifikasi/edit dari project yang telah kita buat, lakukan seperti berikut ini:
1. Klik Toolbar [OPEN] atau melalui windows membuaka file melalui windows Navigator dangan klik langsung pada file yang ada.


2. Siap melakukan modifikasi kode program



Untuk detil pembuatan program  dan pembahasan  mengenai MQL4 akan kita bahas pada artikel berikutnya.


Meta Trader & Metaquotes Language (MQL)

Bagi Anda yang bergelut dengan dunia forex, pasti tidak asing lagi dengan MetaTrader 4 atau juga dikenal sebagai MT4. MT4 merupakan platform perdagangan elektronik yang banyak digunakan oleh pedagang valuta asing ritel spekulatif secara online.
System ini dikembangkan oleh MetaQuotes Software dan dirilis pada tahun 2005. Perangkat lunak berlisensi kepada pialang valuta asing yang menyediakan perangkat lunak untuk klien mereka. Perangkat lunak ini terdiri dari kedua klien dan komponen server. Komponen server dijalankan oleh broker dan perangkat lunak klien disediakan kepada pelanggan broker, yang menggunakannya untuk melihat live streaming pergerakan harga pasar, grafik dan untuk menempatkan pesanan serta mengelola account mereka.

Untuk aplikasi Klien berbasis Microsoft Windows yang menjadi populer terutama karena kemampuan bagi pengguna akhir untuk menulis skrip perdagangan mereka sendiri dan robot yang bisa mengotomatisasi perdagangan. Pada 2010 MetaQuotes merilis penerus MetaTrader 5, namun sampai pada awal 2012 sebagian besar broker masih menggunakan MT4.

Kemampuan dari MT yang mengijinkan pengguna akhir menulis sebuah script didukung dengan bahasa pemrograman built-in MT4, yakni bahasa pemrograman Metaquotes Language 4 atau dikenal dengan MQL4. Dengan bahasa pemrograman inilah memungkinkan pengguna akhir untuk membuat sebuah Expert Advisors sendiri yang dapat digunakan untuk manajemen trading otomatis dan sangat cocok untuk menerapkan strategi perdagangan sendiri. Selain itu, kita dapat menggunakan MQL4 untuk penciptaan Custom Indikator sendiri, Script, dan Library. Seperti halnya pada bahasa pemrograman pada umumnya, MQL4 juga memiliki structure dan aturan dalam pemrograman. Bagi anda yang sudah terbiasa dengan pemrograman Bahasa C mungkin akan sangat mudah beradaptasi dengan MQL4 karena syntax-syntax pemrograman MQL4 hampir sama dengan Bahasa C.

Seperti halnya dengan bahasa pemrograman yang lain, MQL4 memiliki compiler yang digunakan untuk mengkompail source code menjadi binary file yang nantinya akan digunakan pada MT4. Compiler tersebut terintegrasi dalam sebuah Integrated Development Environments (IDE) yang disebut METAEDITOR. METAEDITOR ini dibundle dalam Meta Trader 4.

Gambar 1 - Meta Trader 4


Gambar 2 - Meta Editor


Sejarah Visual Basic

Microsoft Visual Basic atau yang lebih akrab disebut VB merupakan bahasa pemrograman yang sangat mudah untuk dipelajari. Syntax yang digunakan berbahasa inggris, jadi sangat mudah sekali bagi kita para pemula mengerti bahasa pemrograman ini. VB adalah bahasa pemrograman yang event driven dan menawarkan Integrated Development Environment (IDE) visual untuk membuat program aplikasi berbasis sistem operasi Windows. Visual Basic merupakan turunan bahasa BASIC dan menawarkan pengembangan aplikasi komputer berbasis grafik dengan cepat serta akses ke database dengna Data Access Objects (DAO), Application (VBA), dan Visual Basic Scripting Edition (VBScript).

Bill Gates, penemu Microsoft, memulai bisnis softwarenya dengan mengembangkan interpreter bahasa BASIC untuk Altair 8800, untuk kemudian diubah agar dapat dijalankan diatas IBM-PC dengan sistem operasi DOS. Pengembangan selanjutnya ialah diluncurkannya BASICA (basic-advanced) untuk DOS. Setelah BASICA, Microsoft meluncurkan Microsoft Quick Basic dan Microsoft Basic. Sejarah BASIC di Micorosoft yang diinterpretasi dan juga bahasa yang dikompilasi membuat visual basic diimplementasikan sebagai gabungkan dari keduanya.

sumber: wikipedia
Send mail from Visual Basic

Send mail from Visual Basic

Script VB untuk kirim email menggunakan Microsoft Outlook

Sub Kirim_Pesan      
        Set OAPP = CreateObject("Outlook.Application")
        Set msg = OAPP.CreateItem(0)
        msg.To = <e-mail  tujuan>
        msg.Subject = <judul email>
        msg.Body = <isi pesan email>
        msg.Attachments.Add (<path attachment>)
        msg.Send
        Set msg=Nothing
        Set OAPP=Nothing
End Sub

NOTE: Komputer harus terinstall Microsoft Outlook :))

Task Process Monitoring

Pengganti Task Manager yang mungkin tidak bisa diakses karena ulah Virus Local :)

1. Form
     List View              [Name = info]
     CommandButton   [Name = cmdCloseProcess] [Caption = Terminate]
     CommandButton   [Name = Command1] [Caption = Exit]
     Timer                    [Name = updateTimer] [Interval = 1000]
     Timer                    [Name = Cap] [Interval=20]
     Label                    [Name = Label1]
2. Module
Form Design


Code Program :

- FORM -
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
           
Dim hSnapshot As Long
Dim processInfo As PROCESSENTRY32
Dim success As Long
Dim exeName As String
Dim retval As Long
Dim itm As ListItem
Dim ProsesName(100), ProsesID(100), PArentID(100)
Dim ProsesExplorer, ExplorerID, cnt, VirusID, PID
Dim virusFound As Boolean

Private Sub Initproses()
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
    processInfo.dwSize = Len(processInfo)
    success = Process32First(hSnapshot, processInfo)
    If hSnapshot = -1 Then
       Exit Sub
    End If

    items2 = 0
    While success <> 0
          items2 = items2 + 1
          success = Process32Next(hSnapshot, processInfo)
    Wend
    retval = CloseHandle(hSnapshot)
    If items1 <> items2 Then
       hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
       processInfo.dwSize = Len(processInfo)
       success = Process32First(hSnapshot, processInfo)
       cnt = 1
       info.ListItems.Clear
       While success <> 0
            
             exeName = Left(processInfo.szExeFile, InStr(processInfo.szExeFile, vbNullChar) - 1)
             Set itm = info.ListItems.Add(cnt, , exeName)
             ProsesName(cnt) = GetFileName(exeName)
             ProsesID(cnt) = processInfo.th32ProcessID
             PArentID(cnt) = processInfo.th32ParentProcessID
             itm.Tag = exeName
             itm.SubItems(1) = processInfo.th32ProcessID
             itm.SubItems(2) = processInfo.th32ParentProcessID
             itm.SubItems(3) = processInfo.cntThreads
             itm.SubItems(4) = processInfo.cntUsage
             itm.SubItems(5) = processInfo.th32ModuleID
             itm.SubItems(6) = processInfo.th32DefaultHeapID
             itm.SubItems(7) = processInfo.pcPriClassBase

             cnt = cnt + 1
             processInfo.dwSize = Len(processInfo)
             success = Process32Next(hSnapshot, processInfo)
       Wend
       retval = CloseHandle(hSnapshot)
       Label1.Caption = cnt - 1 & " Proses Program sedang berjalan - Task Process Monitoring"
       items1 = items2
     End If
End Sub

Private Sub Cap_Timer()
    If Label1.Left < 0 - Label3.Width Then
      DoEvents
        Label1.Left = 4350
    End If
    Label1.Left = Label3.Left - 20
       
    Select Case Label1.ForeColor
        Case vbBlue: Label1.ForeColor = vbRed
        Case vbRed: Label1.ForeColor = vbMagenta
        Case vbMagenta: Label1.ForeColor = vbBlue
    End Select
   
End Sub

Private Sub cmdCloseProses_Click()
    opPROS = OpenProcess(1, 0, info.SelectedItem.SubItems(1))
    If opPROS <> "" Then
        TerminateIt = TerminateProcess(opPROS, 0)
        If TerminateIt = False Then
            f = MsgBox("Proses " & info.SelectedItem.Text & " tidak bisa dihentikan...!!!", vbCritical, "Task Process Monitoring")
        End If
    End If
    CloseHandle (opPROS) 
End Sub

Private Sub Command1_Click()
    End
End Sub

Private Sub Form_Load()
    Label3.Left = 4350
    PID = ""
    virusFound = True
    Initproses
    item1 = 0
    Call CekProses
End Sub

Private Sub CariExplorer()
    For i = 1 To cnt
        If LCase(ProsesName(i)) = "explorer.exe" Then
            ExplorerID = ProsesID(i)
        End If
    Next
End Sub

Private Sub CekProses()
    For i = 1 To cnt
        If (LCase(ProsesName(i)) = "winlogon.exe") And PArentID(i) = ExplorerID Then
            VirusID = ProsesID(i)
            virusFound = True
            PID = PID & "/PID " & VirusID & " "
            MsgBox (VirusID)
           
        ElseIf (LCase(ProsesName(i)) = "lsass.exe") And PArentID(i) = ExplorerID Then
            VirusID = ProsesID(i)
            virusFound = True
            PID = PID & "/PID " & VirusID & " "
            MsgBox (VirusID)
           
        ElseIf (LCase(ProsesName(i)) = "inetinfo.exe") And PArentID(i) = ExplorerID Then
            VirusID = ProsesID(i)
            virusFound = True
            PID = PID & "/PID " & VirusID & " "
            MsgBox (VirusID)
        ElseIf (LCase(ProsesName(i)) = "services.exe") And PArentID(i) = ExplorerID Then
            VirusID = ProsesID(i)
            virusFound = True
            PID = PID & "/PID " & VirusID & " "
            MsgBox (VirusID)
        Else
            virusFound = False
        End If
    Next
End Sub

Private Sub KillVirus(ID)
    On Error Resume Next
    Shell "C:\WINDOWS\SYSTEM32\Taskkill.exe /f " & PID, vbHide
    Initproses
End Sub

Private Sub updateTimer_Timer()
    updateTimer.Enabled = False
    Call Initproses
    updateTimer.Enabled = True
End Sub

-MODULE-
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Public Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long

Public Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * 260
End Type
Public Const TH32CS_SNAPALL = &HF
Public Const WM_CLOSE = &H10
Public items1 As Long
Public items2 As Long

Public Function GetFileName(FullPath As String) As String
       On Error Resume Next
       Dim dta As String
       Dim ch As String
       Dim plen As Long
       Dim cnt As Integer
       plen = Len(FullPath)
       cnt = 0
       ch = Mid$(FullPath, plen, 1)
       While ch <> "\" And cnt < plen
            dta = ch & dta
            cnt = cnt + 1
            ch = Mid$(FullPath, plen - cnt, 1)
       Wend
       GetFileName = dta
End Function

Running Program
Back To Top