background image

Moja pierwsza strategia –  

wprowadzenie do programowania 

w MQL4 

Szkolenie on-line 
23 czerwiec 2012 

background image

Czym jest MQL4? 

• MQL4

 (MetaQuotes Language 4) – dostępny w platformie 

BOSSAFX (MetaTrader4) język programowania umożliwiający 
rozbudowę jej standardowej funkcjonalności. 

• MQL4

 jest wbudowany w aplikację kliencką MT4, co oznacza 

że utworzone w nim programy mogą być uruchamiane 
wyłącznie w tym środowisku. 

• MQL4

 pod względem składni przypomina popularne języki 

programowania C i C++, ale tzw. kod wykonywalny jest 
specyficzny dla platformy transakcyjnej MT4. 
 
 

Kod źródłowy napisany w języku 

MQL4 – zrozumiały i edytowalny 

dla programisty (inwestora) 

Kod wykonywalny programu 

 – zrozumiały dla aplikacji 

klienckiej MT4 

kompilator 

MQL4 

background image

• Deklaracje 

Właściwości programu (dyrektywa 

#property

Wykorzystywanych bibliotek i plików 

nagłówkowych (dyrektywa 

#include

Stałe globalne (dyrektywa 

#define

Zmienne globalne 

 

• Definicje funkcji własnych 

wykorzystywanych w programie 

 
 
 
• Definicje funkcji specjalnych 

init() 

– opcjonalnie 

start() 

– obowiązkowo 

deinit() 

- opcjonalnie 

Ogólna struktura programu – kod źródłowy 

background image

• Komentarze 

Fragmenty kodu nie podlegające kompilacji, a zatem nie wpływające na 

funkcjonowanie programu 

Ułatwiają zachowanie porządku i rozumienie kodu wykonywalnego oraz późniejsze 

wprowadzanie zmian 

Komentarz pojedynczej linii – zaczynamy od: 

// 

Komentarz wielu linii – zaczynamy od: 

/* 

 

Podstawowe elementy składni MQL4 

 

• Identyfikatory 

Stanowią nazwy stałych, 

zmiennych, funkcji i typów 

danych – nazwa może mieć max. 

31 znaków 

Identyfikatory zastrzeżone – 

nazwy posiadające z góry 

określone znaczenie w 

programie. Nie mogą być 

wykorzystywane w innym celu 

przez programistę 

background image

• Całkowity – 

int

, np. 1, -43, 866, 196367 itd. 

• Zmiennoprzecinkowy – 

double

, np. -1.45, 567.9876, 1.33582, -9 

• Logiczny – 

bool

, np. 0, 1 lub false, true 

• Znakowy – 

char

, np. ‘A’, ‘b’, ‘5’, ‘$’ 

• Ciąg znaków – 

string

, np. ”To jest przykładowy ciąg 34 znaków” 

• Kolor – 

color

, np.  

 
 
 
 
 
 

• Data i czas – 

datetime

, np.  

Stałe, zmienne – typy danych 

background image

• Deklaracja stałej lub zmiennej powołuje ją do życia i zawsze musi 

poprzedzać jej użycie w programie 

• Deklaracja zmiennej 
 

 

• Miejsce deklaracji decyduje o tym, czy zmienna jest: 

• Lokalna – zdefiniowana w ciele funkcji; 
• Globalna – zdefiniowana na początku programu; 

• Zmienne zewnętrzne – widoczne jako parametr programu 

 

• Definicja stałej symbolicznej – za pomocą dyrektywy 

#define 

 

Deklaracje stałych i zmiennych 

background image

• Tablice zawierają uporządkowany zbiór zmiennych danego typu 

danych: 

int

double

bool

 itp.  

• Deklaracja tablicy odbywa się podobnie jak deklaracja zmiennej, 

ale w identyfikatorze należy użyć nawiasów kwadratowych 

[] 

wpisać w nie wymiar tablicy 

int Tablica1[9]; //deklaracja zmiennej tablicowej typu integer o nazwie Tablica1 i długości 9 

• Uwaga – indeksacja elementów tablicy zaczyna się zawsze od 0! 
• Przykładowa Tablica1 typu integer 

 
 

• Typ danych 

string

 jest w rzeczywistości zmienną tablicową typu 

char 

Tablice 

background image

• Podstawowa operacja przypisania  

identyfikator = wartość / wyrażenie; 
int NazwaZmiennejNr1 = 5; 

• Operacje arytmetyczne: 

+

,

 -

,

 *

,

 /

,  

++

-- 

   

 
 
 
• Operacje relacji 

 
 
 

• Operacje logiczne: 

&&

||

,  

bool ZmLogiczna1 = true; 
bool ZmLogiczna2 = false; 
bool ZmLogiczna3 = ZmLogiczna1 && ZmLogiczna2; 
bool ZmLogiczna4 = ZmLogiczna1 || ZmLogiczna2; 

Operacje na danych 

background image

• Operacje na tablicach przeprowadzamy analogicznie jak w 

przypadku zmiennych, z tym że musimy posłużyć się 

indeksem tablicy 

• Przypisanie zmiennej tablicowej 

int Tablica1[] 

int Tablica1[0] = 5; 
int Tablica1[1] = 10;  
int Tablica1[2] = 15; 
int Tablica1[3] = 20;  
int Tablica1[4] = 25; 
itd. 
 
 

• Odczyt zmiennej tablicowej 

int ZmiennaX = Tablica[0] + Tablica[1]; 
int ZmiennaY = Tablica[0] * Tablica[1]; 

 

Operacje na zmiennych tablicowych 

background image

• Zmienne predefiniowane nie muszą być deklarowane a dostęp 

do nich jest możliwy z każdej funkcji w programie (są to 

zmienne globalne) 

• Niektóre zmienne predefiniowane mają charakter tablicowy 
• Zmienne predefiniowane związane są z wykresem cenowym 

danego instrumentu oraz jego specyfikacją: 

Ask – zmienna przechowująca aktualną cenę ask; 

Bid – zmienna przechowująca aktualną cenę bid; 

Open – zmienna tablicowa przechowująca historię cen otwarcia świec dla danego wykresu 

High – zmienna tablicowa przechowująca historię cen maksymalnych dla świec z danego wykresu 

Low – zmienna tablicowa przechowująca historię cen minimalnych dla świec z danego wykresu 

Close – zmienna tablicowa przechowująca historię cen zamknięcia świec dla danego wykresu 

Volume – zmienna tablicowa zawierająca liczbę zmian cen w danym interwale 

Time – zmienna tablicowa zawierająca datę i godzinę rysowania danej świecy 

Bars – zmienna przechowująca liczbę dostępnych świec na danym wykresie 

Digits – zmienna przechowująca liczbę miejsc po przecinku dla danego instrumentu 

Point – zmienna przechowująca wartość pojedynczego kroku notowań dla danego instrumentu 
 

10 

Zmienne predefiniowane 

background image

• Zmienne tablicowe umożliwiają pobieranie 

cen historycznych: Open, High, Low, Close 

• Zmienne tablicowe numerują kolejne 

świece wstecz, przy czym aktualnie 

rysująca się świeca ma zawsze numer 0 

• Narysowanie się kolejnej świecy powoduje 

przenumerowanie wszystkich 

historycznych świec 

• Przykłady: 

• Open[8] – zwraca cenę otwarcia 

świecy nr 8 

• High[4] – zwraca cenę max. świecy nr 

 

• Pamiętajmy, że wykresy cenowe pokazują 

zawsze ceny bid! 

• Nie ma możliwości pobrania do programu 

historycznej ceny ask, ale można ją 

oszacować dodając wartość spreadu 

 
 
 
 
 

11 

Korzystanie ze zmiennych predefiniowanych 

10 

11 

background image

• Operator – każde wyrażenie w kodzie programu zakończone 

średnikiem „;” 
 

• Operatory proste zawierające jedno wyrażenie, np. operator 

przypisania: 

 

 

identyfikator = wartość / wyrażenie; 

 

• Operatory złożone, zawierające kilka wyrażeń 

• Operator warunkowy 

if-else 

 
 

 

• Operator cykliczny 

for 

 

12 

Operatory 

background image

int przykladowa_funkcja (int zmienna1, int zmienna2) 

13 

Deklaracja i definicja funkcji 

  Typ wartości 

zwracanej przez 

funkcję 

  Nazwa funkcji 

  Typy zmiennych 

pobieranych przez 

funkcję 

  Nazwy zmiennych 

lokalnych w funkcji 

  Przykład: 

background image

14 

Funkcje wykorzystywane w naszej strategii 

background image

15 

Funkcje wykorzystywane w naszej strategii – c.d. 

background image

16 

Funkcje wykorzystywane w naszej strategii – c.d. 

background image

17 

Funkcje wykorzystywane w naszej strategii – c.d. 

background image

Białystok 

    

  

blogi.bossa.pl 

Dziękuję za 
obecność  
i uwagę  

Sebastian Zadora 

s.zadora@bossa.pl 

 

18