Utilizând limbajul de programare a celor de la MetaQuotes - MetaQutoes Programming Language 4 (MQL4), poți realiza o varietate de lucruri și acoperi o serie de necesități. În principiu, în MQL4 poți realiza următoarele tipuri de "programe", destinate rulării în cadrul platformei de tranzacționare pe care tot cei de la metaQuotes o dezvoltă, respectiv MetaTrader 4 (MT4): script-uri, indicatori (matematici) și EA-uri.
Spre exemplu, dacă tranzacționezi pe termen scurt și ai deschise trei ordine pe trei instrumente diferite, în loc să le închizi pe fiecare în parte, poți rula un script care închide aproape simultan (oricum, mult mai repede decât dacă ai închide tu manual) toate cele trei ordine.
Foarte importante pentru MQL4 sunt noțiunile de "tick" și control.
Este important deoarece este "trigger"-ul (factorul care declanșează) executarea codului unui EA sau reevaluarea de către un indicator. Este, cu alte cuvinte, informația vitală (sau "input"-ul) necesară pentru ca EA-ul, respectiv indicatorul, să aibă ce (și-n consecință să poată) procesa, respectiv exercita funcția pentru care a fost programat, respectiv conceput. "Tick"-ul provine de la server, server-ul putând fi unul demo sau real (live), fiind reprezentat de adresa aferentă câmpului din dialog-ul pe care-l folosești pentru a te loga în contul de tranzacționare, alături de cel de log-in și parolă. De pe server, "tick"-ul este descărcat în platformă care îl dă mai departe EA-ului sau indicatorului (EA-ul la rândul lui înaintează informația, dacă este cazul, indicatorilor pe care îi include) care procesează informația și întoarce un rezultat în platformă. Rezultatul poate fi de la nul (când nu se va întâmpla nimic, deoarece nu este cazul, iar acest lucru deoarece algoritmul nu a găsit ceva "demn de interes") la executarea unui ordin în piață. Această procesare, este denumită "control" și, cum spuneam mai sus, este a doua importantă componentă a limbajului MQL4 și implicit a "programelor" realizate cu acesta.
Controlul reprezintă fluxul de execuție al codului în cadrul "programului" (EA, indicator sau script), respectiv în cadrul MT4. Informația este transmisă, prin linii de cod, de la un obiect la altul. Practic obiectele sunt acele entități care stochează o informație (sau un șir de informații). Ele pot fi "string"-uri, "int"-uri, "double"-uri etc. Transmiterea informației, este realizată prin intermediul propozițiilor și buclelor de tipul "if", "while", "switch", 'for" etc. Stocarea informațiilor și transmiterea de la obiect la obiect, pe anumite "culoare logice", decise de către condițiile impuse de propoziții, reprezintă procesarea informațiilor care, finalmente, duce la luarea unei decizii sau afișarea unei anumite valori pentru un anume indicator.
Înlănțuirea dintre obiecte, propoziții și toate celelalte componente ale acestor programe, ia forma unor linii de cod stocate pe disc sub forma unor fișiere care poartă extensia .mq4 și care sunt încărcabile în IDE-ul celor de la Metaquotes, respectiv în MetaEditor, care poate fi accesat din meniul principal al a-MT4, la "Tools" (Unelte) - "MetaQuotes Programmng Language" sau prin apăsarea, din cadrul MT4, a tastei F4.
Aceste fișiere, care conțin deci codul sursă, vor fi compilate în cadrul IDE-ului, căpătând extensia .ex4, putând astfel fi rulate în cadrul MT4.
Bineînțeles că, dacă ești cunoscător, te vei întreba care este "run-time"-ul (sau mașina virtuală) în care rulează programul (EA-ul, "script"-ul sau indicatorul. Ei bine, acesta este reprezentat de însăși platforma MT4. De fapt, MT4 este și mediul de rulare, dar și librăria cu "controale". În ceea ce privește ultimul aspect, este de menționat că algoritmii lucrează atât cu resursele proprii (obiecte, propoziții etc.) dar și cu resursele MT4. Spre exemplu, dacă rulăm un algoritm care să stabilească automat nivele (să spunem că este specializat în pivoți), acesta va procesa informația pe care o preia de la MT4 (respectiv, să zicem, prețurile de închidere), filtrând doar acele nivele importante (făcând apel la propoziții de tipul "if"). Acum, algoritmul "știe" care sunt nivelele importante, dar trebuie să facă în așa fel încât să "îți parvină", cumva. Ce mai bună metodă este, prin urmare, să le așeze pe grafic, iar în acest scop se va folosi de liniile orizontale, la fel cum și tu, și eu, și oricine altcineva ar putea adăuga o astfel de linie din meniul principal al MT4, la "Insert" (Introdu) - "Lines" (Linii) - "Horizontal Line" (Linie Orizontală). Foarte bine, însă această linie este o resursă a platformei, este adevărat, oglindită și în MQL4 pentru a putea fi accesată din cod, ea rămânând însă o parte integrantă a MT4.
Dacă ai programat vreodată, măcar în cadrul unor cursuri sau din curiozitate pe cont propriu, și astfel dacă posezi niște cunoștințe minime de programare, vei constata că MQL4 se aseamănă foarte mult cu limbajele de programare ce derivă din C, respectiv C++, Java sau C#. Mai mult, dacă programezi în mod curent într-unul sau mai multe din aceste limbaje, îți va fi foarte ușor să începi programarea în MQL4, perspectivele fiind deosebit de generoase.