SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis...

89
SKRYPT SZKOLENIOWY

Transcript of SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis...

Page 1: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

SKRYPT SZKOLENIOWY

Page 2: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

2

Spis treści 1.PLATFORMA METATRADER4 ...................................................................... 5

1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER 4 ....................... 5

1.6 OTWIERANIE POZYCJI ....................................................................... 17

1.7 ZLECENIA PO BIEŻĄCEJ CENIE RYNKOWEJ ........................................ 18

1.9 MODYFIKOWANIE POZYCJI ............................................................... 18

1.10 MODYFIKOWANIE I USUWANIE ZLECEO OCZEKUJĄCYCH ............... 19

1.11 ZAMYKANIE POZYCJI ....................................................................... 19

1.12 GODZINY HANDLU .......................................................................... 20

1.13 WYMAGANIE DEPOZYTOWE I RÓŻNE OPŁATY ............................... 20

1.14 SKRÓTY KLAWISZOWE .................................................................... 20

2. PODSTAWY PROGRAMOWANIA W MQL 4 .............................................. 21

2.1 PODSTAWY SKŁADNI ........................................................................ 23

2.3 TYPY ZMIENNYCH ............................................................................. 26

2.4 OPERACJE NA ZMIENNYCH ............................................................... 28

2.5 OPERATOR WARUNKOWY ................................................................ 30

2.6 OPERATORY RELACJI ......................................................................... 32

2.7 PĘTLE ................................................................................................ 33

2.8 PRZYKŁADY ....................................................................................... 36

3. FUNKCJE I ELEMENTY DEBUGOWANIA .................................................... 36

3.1 DEFINICJA FUNKCJI ........................................................................... 37

3.2 FUNKCJE WBUDOWANE ................................................................... 39

3.3 DEBUGOWANIE KODU ...................................................................... 41

Page 3: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

3

3.4 PRZYKŁADY ....................................................................................... 43

4. STRUKTURY DANYCH I FUNKCJE MATEMATYCZNE .................................. 44

4.1 TABLICE JEDNOWYMIAROWE ........................................................... 44

4.2 TABLICE WIELOWYMIAROWE ........................................................... 47

4.3 FUNKCJE MATEMATYCZNE ............................................................... 48

4.4 BUDOWA WŁASNEJ FUNKCJI MATEMATYCZNEJ............................... 50

4.5 PRZYKŁADY ....................................................................................... 51

5. ZMIENNE PREDEFINIOWANE ................................................................... 52

5.1 ŚWIECE JAPOOSKIE A ZMIENNE PREDEFINIOWANE ......................... 53

5.2 ZMIENNE BID I ASK ........................................................................... 54

5.3 FUNKCJE SYMBOL() I PERIOD() ......................................................... 55

5.4 PROSTY SYSTEM TRANSAKCYJNY ...................................................... 57

5.5 PRZYKŁADY ....................................................................................... 58

6. FUNKCJE DODATKOWE ............................................................................ 59

6.1 FUNKCJE DO ZARZĄDZANIA KONTEM ............................................... 59

6.2 FUNKCJE DATY I CZASU ..................................................................... 61

6.3 DANE HISTORYCZNE I INNE INSTRUMENTY ...................................... 62

6.4 UŻYTECZNE FUNKCJE ........................................................................ 64

6.5 PRZYKŁADY ....................................................................................... 65

7. WSKAŹNIKI .............................................................................................. 66

7.2 ŚREDNIE KROCZĄCE .......................................................................... 68

7.3 OSCYLATORY ..................................................................................... 70

7.4 ATR I STOP LOSS ............................................................................... 72

7.5 ŁĄCZENIE WSKAŹNIKÓW .................................................................. 74

7.6 PRZYKŁADY ....................................................................................... 75

8. FORMACJE ŚWIECOWE ............................................................................ 76

Page 4: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

4

8.1 WARUNKI ISTNIENIA FORMACJI ....................................................... 77

8.2 FORMACJE MŁOTA I GWIAZDY ......................................................... 79

8.3 KRZYŻ HARAMI ................................................................................. 80

8.4 OBJĘCIE HOSSY/ OBJĘCIE BESSY ....................................................... 81

8.5 ANALIZA ZŁOŻONYCH FORMACJI ...................................................... 82

8.6 PRZYKŁADY ....................................................................................... 83

9. FUNKCJE TRANSAKCJI .............................................................................. 83

9.1 SYSTEMY AUTOMATYCZNE ............................................................... 84

9.2 SKŁADANIE ZLECEO ........................................................................... 85

9.3 MODYFIKACJE I USUWANIE ZLECEO ................................................. 87

9.4 ZAMKNIĘCIE ZLECENIA ..................................................................... 87

9.6 PRZYKŁADY ....................................................................................... 88

Page 5: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

5

1.PLATFORMA METATRADER4 Platforma transakcyjna MetaTrader4 stanowi kompletne i

w pełni profesjonalne narzędzie służące do inwestowania na rynku

walutowym FOREX i amerykaoskim rynku funduszy STOCK.

Umożliwia obserwację rynku oraz składanie zleceo przez 24h na

dobę. Platforma posiada wysokiej jakości moduł informacyjny oraz

aktualizowany na bieżąco moduł wykresowy wraz z wbudowanymi

instrumentami do analizy technicznej.

MetaTrader4 ma prosty i przyjazny dla użytkownika

interfejs, który pozwala traderowi kontrolowad swoje transakcje i

rachunek, jak również dokonywad analizy technicznej i rozwijad

własne strategie handlowe.

1.1 NAJWAŻNIEJSZE CECHY PLATFORMY

METATRADER 4 -umożliwia pracę z rynkiem: Forex i CFD;

-wykonywanie zleceo: zlecenie natychmiastowe i zlecenie

oczekujące;

- poufny charakter wszystkich działao handlowych;

- nieograniczona ilośd wykresów;

- rozmaite interwały czasowe (od minuty do miesiąca);

- duża liczba technicznych wskazówek;

- możliwośd wgrania własnych wskaźników i skryptów;

- wielojęzyczny interfejs;

- export realnych danych za pomocą protokołu DDE;

- sygnały i systemy w trakcie gry;

- bieżące newsy online z rynku;

- wewnętrzna skrzynka e-mail;

- drukowanie wykresów i raportów z transakcji.

Page 6: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

6

1.2 OBSŁUGA PLATFORMY

OTWIERANIE RACHUNKU

Platforma MetaTrader4 pozwala na pracą w systemie

dwóch i rachunków: demo i rzeczywistym. Mimo, iż środki na

rachunku demo są wirtualne, nie odbiera to możliwości testowania

strategii inwestycyjnych w rzeczywistych warunkach rynkowych.

OTWIERANIE RACHUNKU

Aby otworzyd rachunek demo należy wybrad zakładkę:

"Plik" -> "Otwórz rachunek". Następnym krokiem jest rejestracja,

polegająca na wypełnieniu ankiety. Po pomyślnym zakooczeniu

rejestracji pojawi się okno zawierające informacje o rachunku:

- Login - unikalny identyfikator, w postaci ciągu cyfr nadany nam

przez firmę brokerską.

- Hasło - można je zmienid po zalogowaniu, wchodząc poprzez

„Narzędzia" -> „Opcje".

- Investor — hasło inwestorskie, dzięki któremu można przeglądad

dane rynkowe lecz bez możliwości dokonywania transakcji;

UWAGA! Nie zaleca się zaznaczania opcji „Zapisz dane rachunku",

gdyż osoby niepowołane, posiadające dostęp do komputera, na

którym została zainstalowana platforma, miałyby tym samym

dostęp do rachunku - łącznie z możliwością zawierania transakcji.

Zalogowanie na rachunek następuje po podaniu loginu i hasła,

otrzymanych po rejestracji.

AKTUALIZACJE

Platforma MetaTrader4 w posiada wbudowany system

automatycznej aktualizacji. Pozwala to na szybką instalację

najnowszej wersji programu.

System automatycznej aktualizacji jest zawsze włączony i

nie ma możliwości wyłączenia go. Podczas połączenia z serwerem,

system sprawdza dostępnośd najnowszej wersji. Jeżeli nowa wersja

zostanie wykryta, system zapyta o chęd jej pobrania i instalacji. Aby

Page 7: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

7

rozpocząd aktualizację należy wybrad przycisk „Start". Po pobraniu

plików aktualizacyjnych należy wybrad przycisk „Update and

Restart".

ZARZĄDZANIE WYKRESAMI Wykresy umożliwiają analizę zmian kursów i są pomocne w

analizie graficznej, korzystaniu z różnorodnych wskaźników i

wyznaczaniu linii trendu. Do opcji zarządzania wykresami zalicza się:

TYP WYKRESU: - Bar Charts (Wykres słupkowy) - sekwencja słupków w wybranych

interwałach. Pozioma kreseczka z lewej strony oznacza kurs

otwarcia, z prawej strony kurs zamknięcia, natomiast maksymalna i

minimalna cena wyznaczona jest przez pionową rozpiętośd słupka.

- Candlestick Charts (Wykres świecowy) - sekwencja świec

podobnych do słupków. Pojedyncza świeca składa się z korpusu

(szersza cześd) oraz ceni (cieosze części na dole i górze korpusów).

Cieo dolny wyznacza kurs minimalny, górny - maksymalny. W

przypadku świec wzrostowych dolna jej krawędź odpowiada

kursowi otwarcia, górna zaś - zamknięcia. Dla świec spadkowych

odwrotnie.

- Line Charts (Wykres liniowy) - łamana linia łącząca ceny

zamknięcia.

WSKAŹNIKI ANALIZY TECHNICZNEJ: Wskaźniki analizy technicznej są matematyczną

transformacją cen i wolumenu. Na podstawie osiąganych przez nie

wartości generowane są sygnały wejścia i opuszczenia rynku, lub

powstrzymania się od jakichkolwiek działao.

- Obiekty graficzne: Obok wskaźników analizy technicznej, użyteczną

rolę analityczną pełnią także obiekty graficzne. Platforma daje

możliwośd załączenia linii poziomych, pionowych, trendu oraz

poziomów Fibonacciego.

Page 8: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

8

- Zmiana interwałów: Wykresy na platformie można przeglądad na

jednym z 9 interwałów: od interwału minutowego (Ml) do

miesięcznego (MN).

- Przybliżanie/oddalanie wykresu: Wykresy mogą byd oddalane i

przybliżane, co wpływa na ilośd wyświetlanych słupków i precyzją

wyświetlania cen.

-Przewijanie, automatyczne przewijanie i przesunięcie wykresu.

Analiza cen historycznych wymaga czasem przesunięcia

wykresu do okresów wcześniejszych. Przewinięcia wykresu w lewo

(do okresów wcześniejszych) i prawo (do okresów bliższych

teraźniejszości) dokonad można za pomocą przycisku znajdującego

się pod wykresem. Na wykresie można także włączyd funkcję auto

przewijania - wykres będzie się automatycznie przesuwał w prawo,

do aktualnej ceny.

HANDEL (TRADE) Okno handel zawiera informacje o aktualnym stanie

rachunku, otwartych pozycjach i wystawionych zleceniach

oczekujących. Wszystkie pozycje są posortowane po dacie otwarcia

- od otwartej najwcześniej do otwartej ostatnio. Lista zleceo

oczekujących, również posortowana po dacie, znajduje się pod

paskiem salda.

Jeżeli cena aktywacji zlecenia oczekującego zostanie

osiągnięta, zlecenie zostaje wykonane. Następuje automatyczne

usunięcie go z listy zleceo oczekujących i przeniesienie na listę

otwartych pozycji.

NOWE ZLECENIE Otwiera okno składania zleceo, za pomocą którego można

otworzyd nową pozycję lub wystawid zlecenie oczekujące. Aby

złożyd nowe zlecenie należy sprecyzowad jego parametry:

Page 9: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

9

instrument będący przedmiotem transakcji, wolumen zlecenia w

lotach, typ zlecenia (po cenie rynkowej lub oczekujące), a także

opcjonalnie poziomy Take Profit i Stop Loss. Więcej o składaniu

zleceo w sekcji "Zarządzanie pozycją".

ZAMKNIJ ZLECENIE Otwiera okno zamykania pozycji. Okno zostanie otwarte tylko wtedy, jeżeli naciśniemy szybko dwa razy rysikiem w otwartą pozycję. Zarządzanie pozycją: - MODYFIKACJA ZLECENIA - Po kliknięciu w otwartą pozycję lub

prawym przyciskiem myszki, otworzy się okno, gdzie widad

polecenie modyfikacji lub usunięcia zlecenia. W przypadku zleceo

oczekujących można dokonad modyfikacji ceny aktywacji, a także

poziomu Stop Loss i Take Profit. W otwartych pozycjach modyfikacji

można poddad jedynie poziom Stop Loss i Take Profit.

- POKAŻ ZLECENIE - po kliknięciu w wybrane zlecenie w nowym

oknie wyświetlone zostaną informacje na temat zlecenia.

W oknie znajdziemy wszystkie informacje na temat zlecenia:

- NUMER ZLECENIA;

- CZAS OTWARCIA POZYCJI - data i godzina otwarcia pozycji w

formacie RRRR.MM.DD GG:MM;

- TYP POZYCJI - buy (kupno) albo sell (sprzedaż);

- LOTY - suma towaru jaką kupiliśmy (mierzona w jednostkach

zwanych lotami);

- SYMBOL - nazwa instrumentu, na jakim została dokonana operacja

kupna albo sprzedaży;

- CENA OTWARCIA - pokazuje cenę po jakiej otwarto pozycję;

- „T/P" (Take Profit) - pokazuje poziom Take Profit, jeżeli został on

ustawiony dla zlecenia;

- „S/L" (Stop Loss ) - pokazuje poziom Stop Loss, jeżeli został on

ustawiony dla zlecenia;

- AKTUALNA CENA - pokazuje aktualną cenę.

Page 10: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

10

- ZYSK - pokazuje wynik z zawartej transakcji: w pipsach (punktach) i

walucie depozytowej - USD.

Kolejny pasek pokazuje:

- BALANCE (Saldo) - informacje o saldzie rachunku;

- EQUITY (Wartośd rachunku) - informacje o wartości rachunku.

Wartośd rachunku równa jest saldzie rachunku skorygowanemu o

wynik z otwartych pozycji. Jeżeli nie ma żadnych otwartych pozycji,

wartości rachunku i salda są sobie równe.

- MARGIN (Depozyt) - informacje na temat depozytu

zabezpieczającego.

- FREE MARGIN (Dostępny depozyt) - informacje na temat środków

dostępnych pod depozyt potrzebny do zawarcia nowych transakcji.

Dostępny depozyt równy jest wartości rachunku pomniejszonej o

depozyt. Wyświetlana obok wartości nominalnej wartośd

procentowa, odpowiada poziomowi zabezpieczenia. Poziom

zabezpieczenia równy jest wartości rachunku podzielonej przez

zablokowany depozyt.

HISTORIA RACHUNKU (HISTORY) Okno historii zawiera informacje o przeprowadzonych

operacjach, uwzględniających pozamykane pozycje i usunięte bądź

odrzucone zlecenia oczekujące. Okno historii wyświetlane jest w

postaci tabeli, która zawiera następujące informacje:

- Zlecenie zawiera informacje na temat zamkniętych pozycji, w

szczególności rodzaju zlecenia, instrumentu i wolumenu zlecenia w

lotach.

- Cena - zawiera ceny otwarcia zamkniętych pozycji.

- Wynik - zawiera wyniki lub komentarze zamkniętych pozycji.

WIADOMOŚCI (NEWS) Okno „News" zawiera listę otrzymanych wiadomości

rynkowych. Lista zawiera czas otrzymania oraz nagłówki

przychodzących wiadomości. Nagłówki wyświetlone są w kolejności

Page 11: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

11

przychodzenia. Lista jest automatycznie aktualizowana po nadejściu

nowej wiadomości.

ALARMY (ALERTS)

Zakładka ta umożliwia zarządzanie alarmami dźwiękowymi.

Alarmy, w przeciwieostwie do sygnałów dźwiękowych wydarzeo,

dotyczą poziomów cen osiąganych przez instrumenty. Ustawiony

alarm zadziała w momencie spełnienia żądanego warunku,

informując nas o tym, że określony poziom ceny lub czas został

osiągnięty.

SKRZYNKA POCZTOWA (MAIL)

Zakładka otwiera skrzynkę pocztową, za pośrednictwem

której, można odbierad i wysyład maile wewnętrzne. Nagłówki

wiadomości e-mail wyświetlane są w tabeli. Po naciśnięciu prawym

przyciskiem myszy w tabeli z listą maili otworzy się jej menu

kontekstowe. Za pomocą menu można odczytad wybraną

wiadomośd, utworzyd nową wiadomośd lub usunąd wybraną

wiadomośd.

STRATEGIE (STRATEGY)

Miejsce, gdzie przechowywana jest informacja nt.

utworzonych i wykorzystanych przez nas strategii handlowych.

DZIENNIK (DIARY)

Zawiera historię wszystkich operacji dokonywanych na

platformie MetaTrader4.

OBIEKTY GRAFICZNE (OBJECTS)

Obiekty graficzne nakładane na wykresy w celu

wyznaczenia linii trendu, istotnych poziomów wsparcia i oporu oraz

zaznaczania istotnych dat. W platformie na wykresy nakładad można

linie pionowe, poziome, trendu oraz poziomy Fibonacciego.

Page 12: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

12

NAZWA OBIEKTU

- Linia Pozioma - Służy do zaznaczania na wykresie poziomów cen. W oknie właściwości obiektu edytowad można kolor, styl i grubośd linii, a także wprowadzid nowy poziom ceny, dla której linia ma byd wyświetlana. - Linia Pionowa - Służy do zaznaczania na wykresie przedziałów czasowych. W oknie właściwości obiektu edytowad można kolor, styl i grubośd linii, a także wprowadzid nową datę dla której linia ma byd wyświetlana. - Linia Trendu - Pozwala zaznaczyd na wykresie trend. Aby ją nałożyd, należy wybrad na wykresie jeden punkt i przytrzymując przeciągnąd do drugiego. W oknie właściwości obiektu edytowad można kolor, styl i grubośd linii, a także wprowadzid nowe poziomy cen i dat, dla których linia ma byd wyświetlana. Po zaznaczeniu opcji „Promieo", linia zostaje przeciągnięta w nieskooczonośd. - Poziomy Fibonacciego - Pozwala na nałożenie linii poziomów Fibonacciego, wzdłuż linii trendu. Aby ją nałożyd, należy wybrad na wykresie jeden punkt i przytrzymując przeciągnąd do drugiego. W oknie właściwości obiektu edytowad można kolor, styl i grubośd linii, a także wprowadzid nowe poziomy czasu, ceny i kolejnych linii na nałożonym obiekcie. WSKAŹNIKI ANALIZY TECHNICZNEJ (INDICATORS) Wskaźniki analizy technicznej są matematyczną transformacją cen i/lub wolumenu. Na podstawie ich wartości dokonuje się predykcji cen i wyznaczania kierunku i siły trendu. Dzięki temu ułatwiają one podejmowanie decyzji o zajęciu pozycji. Platforma posiada zestaw 30 wbudowanych wskaźników. W zależności od rodzaju wskaźnika, zostanie on nałożony bezpośrednio na wykres cenowy lub otworzony w nowym oknie pod wykresem. Wskaźniki mogą byd załączane również do innych wskaźników (np. Średnia ruchoma z wartości innego wskaźnika). NAJBARDZIEJ POPULARNE TYPY WSKAŹNIKÓW WYKORZYSTYWANYCH W ANALIZIE TECHNICZNEJ: -Wskaźniki trendu - trend oznacza utrzymywanie się tendencji kursu w określonym czasie. Trendy mogą się poruszad w trzech kierunkach

Page 13: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

13

— w górę, w dół lub w bok. Wskaźniki trendu korzystają z różnych danych kursowych, aby stworzyd wypadkowy kierunek rynku (np. średnie ruchome, linie trendu, Parabolic SAR, Price Oscillator). - Wskaźniki siły rynku - siła rynku oznacza intensywnośd opinii rynkowej w odniesieniu do ceny, za pomocą oceny pozycji rynkowej zajmowanej przez poszczególnych jego uczestników. We wskaźniku liczą się wolumen i liczba otwartych pozycji. Sygnały z nich płynące zbiegają się z rynkiem lub go wyprzedzają (np. Accumulation/Distribution,Wolumen). - Wskaźniki zmienności - zmiennośd to pojęcie określające rozmiar lub zakres dziennych wahao cen, niezależnie od ich kierunku. Zmiana w zmienności wskazuje zwykle zbliżające się zmiany cen (np. Wstęgi Bollingera). - Wskaźniki cyklu - cykl oznacza powtarzalny schemat zachowania rynku, zależny od powtarzalnych wydarzeo, np. pór roku, wyborów itp. Wiele rynków wykazuje cyklicznośd. Wskaźniki cyklu określają ustalony czas schematów rynkowych (np. Elliott Wave). - Wskaźniki wsparcia i oporu - wsparcie i opór oznaczają poziomy cen w sytuacjach, gdy rynki na zmianę rosną i spadają. Ma to związek z podstawową koncepcją popytu i podaży (np. Linie trendu). - Wskaźniki impetu - impet to szybkośd, z jaką ceny zmieniają się w danym okresie. Wskaźniki impetu świadczą o sile lub słabości trendu w czasie jego trwania. Impet jest największy w początkowej fazie trendu, a najmniejszy w punktach zwrotnych. Najmniejsze odchylenie kierunku ceny czy impetu ostrzega o słabości; wystąpienie skrajnych cen przy słabym impecie sygnalizuje zakooczenie poruszania się w danym kierunku. Impet utrzymujący się przy niezmiennych cenach sygnalizuje możliwą zmianę w kierunku cen (np. Oscylator stochastyczny, MACD, Wskaźnik siły zmiennej RSI). HANDEL

Fundamentalną zasadą zyskownego handlu na rynkach finansowych jest kupowanie taniej i sprzedawanie drożej (zamknięcie zlecenia), albo sprzedawanie drożej a kupowanie taniej (zamknięcie zlecenia). System umożliwia składanie zleceo kupna lub sprzedaży po bieżącym kursie rynkowym a także zleceo

Page 14: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

14

oczekujących zawierających warunki realizacji Buy Limit, Buy Stop, Sell Limit oraz Sell Stop. Dodatkowo każde zlecenie może zawierad poziom realizacji zysków lub/i ograniczenia straty.

1.3 RODZAJE ZLECEO Zlecenia na platformie można podzielid na zlecenia

zawierane po cenach rynkowych, zlecenia oczekujące oraz zlecenia

typu Stop Loss i Take Profit.

Zlecenia po cenach rynkowych - otwierane są po aktualnych cenach

rynkowych:

- cenie bid instrumentu dla zleceo sprzedaży;

- cenie ask instrumentu dla zleceo kupna.

Można także ustawid poziomy Stop Loss i Take Profit dla tego

rodzaju zleceo.

ZLECENIA OCZEKUJĄCE

Są to zlecenia, które będą zrealizowane, jeżeli zostaną

spełnione zadane przez inwestora warunki jego realizacji, w

szczególności dotyczące ceny danego instrumentu, którego zlecenie

oczekujące dotyczy. Są cztery typy zleceo oczekujących:

- Zlecenie Buy Limit - Zlecenie oczekujące otwierające długą pozycję

w wybranym instrumencie, po spełnieniu zadanych wcześniej

warunków realizacji. Cena aktywacji zlecenia jest niższa od ceny

rynkowej ask w chwili jego składania. W czasie notowao

instrumentu zlecenia typu Buy Limit realizowane są po określonej w

warunku realizacji cenie. Aby warunek był spełniony, rynkowa cena

ask musi byd niższa lub równa cenie aktywacji. Jeżeli na otwarciu

notowao danego instrumentu cena otwarcia jest niższa lub równa

cenie aktywacji, to zlecenie realizowane jest po cenie otwarcia.

- Zlecenie Buy Stop - Zlecenie oczekujące, otwierające długą pozycję

w wybranym instrumencie, po spełnieniu zadanych wcześniej

warunków realizacji. Cena aktywacji zlecenia jest wyższa od

rynkowej ceny ask w chwili składania zlecenia. Zlecenia typu Buy

Stop są realizowane zawsze po pierwszej cenie rynkowej ask,

wyższej lub równej warunkowi realizacji.

Page 15: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

15

- Zlecenie Sell Limit - Zlecenie oczekujące, otwierające krótką

pozycję na wybranym instrumencie, po spełnieniu zadanych

wcześniej warunków realizacji. Cena aktywacji zlecenia jest wyższa

od rynkowej ceny bid w chwili składania zlecenia. W czasie

kwotowania instrumentu, zlecenia typu Sell Limit są realizowane po

określonej w warunku realizacji cenie. Jeżeli na otwarciu notowao

cena otwarcia jest wyższa lub równa cenie aktywacji, to zlecenie

zostaje realizowane po cenie otwarcia.

- Zlecenie Sell Stop - Zlecenie oczekujące, otwierające krótką

pozycję w wybranym instrumencie, po spełnieniu zadanych

wcześniej warunków realizacji. Cena aktywacji zlecenia jest niższa

od rynkowej ceny bid w chwili składania zlecenia. Zlecenia typu Sell

Stop są realizowane po pierwszej cenie rynkowe bid, niższej lub

równej warunkowi realizacji.

Stop Loss

Zlecenie mające na celu ograniczenie strat z tytułu otwartej

pozycji. Dla pozycji długich cena aktywacji zlecenia wyznaczana jest

poniżej aktualnej ceny rynkowej bid. Analogicznie, cena aktywacji

zlecenia Stop Loss dla pozycji krótkich, musi byd wyższa od aktualnej

ceny rynkowej ask. Gdy kurs rynkowy osiągnie poziom ceny

aktywacji, pozycja zostaje automatycznie zamknięta. Zlecenia Stop

Loss realizowane są zawsze po pierwszej cenie spełniającej warunek

aktywacji. Oznacza to, że w przypadku wystąpienia luki cenowej

(wewnątrz której znajduje się cena aktywacji), pozycja długa

zostanie zamknięta po kursie niższym od ceny aktywacji.

Wystąpienie luki, zawierającej cenę aktywacji zlecenia Stop Loss dla

pozycji krótkiej, oznacza zamknięcie tej pozycji po cenie wyższej, niż

cena aktywacji. Zlecenie Stop Loss nie musi zamykad pozycji

stratnych. Jeżeli otwarta pozycja jest zyskowna, to dzięki zleceniu

Stop Loss, można zachowad częśd zysku, nie rezygnując

jednocześnie z szansy na jego zwiększenie. W takich sytuacjach

przydatny okazuje się Stop Loss kroczący, podążający za ceną. Stop

Loss kroczący opisany został w sekcji Trailing Stop.

Take Profit

Page 16: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

16

Zlecenie mające na celu automatyczne zamknięcie pozycji

po cenie lepszej, niż aktualna cena rynkowa. Oznacza to, że dla

pozycji długich, cena aktywacji zlecenia Take Profit jest wyższa niż

bieżąca cena rynkowa bid. Analogicznie, dla pozycji krótkich, cena

aktywacji jest niższa od aktualnej ceny rynkowej ask. W czasie

kwotowao, zlecenia Take Profit realizowane są po kursie równym

cenie aktywacji. Na otwarciu kwotowao instrumentu, zlecenia te

realizowane są po cenie otwarcia, jeżeli spełnia ona warunek

aktywacji. Oznacza to, że jeżeli na otwarciu wystąpiła luka cenowa,

w której zawiera się cena aktywacji, to pozycja długa zostanie

zamknięta po cenie wyższej, niż cena aktywacji. Luka cenowa na

otwarciu, zawierająca cenę aktywacji zlecenia Stop Loss dla pozycji

krótkiej, sprawia, że zlecenie to zostanie zrealizowane po cenie

niższej niż cena aktywacji. Dla każdej otwartej pozycji można

wyznaczyd jednocześnie zlecenie Stop Loss i Take Profit

Trailing Stop

Zlecenie to jest bardzo podobne do zlecenia Stop Loss, z tą

różnicą, że w przypadku ruchu ceny w kierunku zgodnym z naszymi

przewidywaniami poziom Stop Loss zostanie automatycznie

przesunięty o odpowiednią ilośd punktów w celu ochrony

wypracowanego zysku. Dlatego zlecenie to jest często nazywane

„podążającym Stop Lossem" lub „ruchomym Stop Lossem". Zlecenia

te są bardzo użyteczne podczas gry z trendem gdyż pozwalają na

zachowanie dużej części wypracowanych zysków bez konieczności

ciągłego, manualnego modyfikowania zlecenia stop loss. Należy

pamiętad, że trailing stop zostanie aktywowany dopiero w

momencie gdy nasza transakcja osiągnie zysk w wysokości Trailing

Stopa plus 1 pips, a minimalna wartośd tego zlecenia to 15 pipsów.

Aby ustawid Trailing Stop należy zaznaczyd zlecenie, do którego ma

byd załączony Trailing Stop, a następnie otworzyd menu

kontekstowe. Z listy menu należy wybrad „Trailing Stop" i wielkośd

w pipsach, o jaką ma się przesuwad Stop Loss.

1.4 RODZAJE EGZEKUCJI ZLECEO

Page 17: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

17

Egzekucja natychmiastowa

W przypadku egzekucji natychmiastowej zlecenie jest

realizowane po cenie wysłanej przez inwestora do brokera. Jeżeli

broker akceptuje zawartą w zapytaniu cenę, zlecenie jest

realizowane. Jeżeli broker nie akceptuje ceny w związku z jej

zmianą, nastąpi rekwotowanie („requote"). Wówczas system

wyświetli okno zawierające wolumen, instrument oraz stronę

transakcji (BUY/SELL), a także nową cenę i poprosi o ponowne

kwotowanie.

1.5 ZARZĄDZANIE POZYCJĄ Fundamentalną zasadą zyskownego handlu na rynkach

finansowych jest kupowanie taniej i sprzedawanie drożej. System

transakcyjny MetaTrader4 umożliwia składanie zleceo kupna lub

sprzedaży po bieżącym kursie rynkowym a także zleceo

oczekujących zawierających warunki realizacji Buy Limit, Buy Stop,

Sell Limit oraz Sell Stop. Złożone zlecenia można także modyfikowad,

zamykad częściowo lub w całości, a w przypadku zleceo

oczekujących - także usuwad.

- otwieranie pozycji — sprzedaż lub kupno instrumentów w wyniku

złożenia zlecenia lub aktywacji zlecenia oczekującego;

- modyfikowanie zleceo — zmienianie poziomów Stop Loss i Take

Profit w otwartych pozycjach;

- składanie zleceo typu Buy Stop, Sell Stop, Buy Limit, Sell Limit;

- modyfikowanie i usuwanie zleceo oczekujących, które nie zostały

zrealizowane;

- zamykanie pozycji — częściowe lub całkowite.

1.6 OTWIERANIE POZYCJI Otwieranie pozycji polega na wejściu na rynek, przez zakup

lub sprzedaż określonego instrumentu. Wejście to może nastąpid po

złożeniu zlecenia kup/sprzedaj w trybie natychmiastowym lub po

aktywacji zlecenia oczekującego.

Page 18: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

18

1.7 ZLECENIA PO BIEŻĄCEJ CENIE RYNKOWEJ System posiada dwa tryby realizacji zleceo po bieżącym

kursie rynkowym. Należy pamiętad, iż otwarcie pozycji długiej (BUY)

odbywa się zawsze po cenie ASK, a otwarcie pozycji krótkiej (SELL)

zawsze po cenie BID. Aby złożyd zlecenie należy otworzyd okno

składania zleceo.

1.8 SKŁADANIE ZLECEO OCZEKUJĄCYCH Składanie zleceo oczekujących przebiega według

podobnego procesu jak zleceo po cenie rynkowej. Różnica polega na

określaniu parametrów dodatkowych zlecenia. W oknie „Nowe

zlecenie" należy dodatkowo określid:

- Typ - wybieramy „Zlecenie oczekujące";

- Typ - wybieramy typ zlecenia oczekującego (Buy Stop, Buy Limit,

Sell Stop, Sell Limit);

- Po cenie - ustalamy ceną aktywacji zlecenia oczekującego;

- Wygaśnięcie - opcjonalnie możemy określid okres ważności

zlecenia oczekującego. Jeżeli do tego czasu zlecenie nie zostanie

zrealizowane, system je usunie. Niezrealizowane zlecenia

oczekujące bez określonego terminu ważności usuwane są

automatycznie po roku. Po ustaleniu parametrów zlecenia,

wybieramy przycisk „Złóż zlecenie", aby je złożyd.

1.9 MODYFIKOWANIE POZYCJI Modyfikowanie otwartych pozycji sprowadza się do

zmiany, wyznaczenia nowych lub całkowitego usunięcia, poziomów

Stop Loss i Take Profit. Aby otworzyd okno modyfikacji otwartych

pozycji, należy zaznaczyd wybraną pozycję w oknie Zlecenia, a

następnie otworzyd menu kontekstowe i wybrad polecenie

„Modyfikuj zlecenie". Aby zmienid wartośd poziomu Stop Loss i Take

Profit, należy wprowadzid cenę S/L i/lub T/P w komórkach „S/L"

„T/P". Wprowadzając wartośd „0", wyłączamy Stop Loss i Take

Profit. Wybierając określone wartości w komórkach „Poziom"

ustawimy poziomy Stop Loss i Take Profit w zadanej odległości od

Page 19: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

19

aktualnej ceny rynkowej. Aby wprowadzid zmiany wybieramy

przycisk „Modyfikuj".

1.10 MODYFIKOWANIE I USUWANIE ZLECEŃ

OCZEKUJĄCYCH Zlecenia oczekujące również mogą byd poddane

modyfikacji. Aby otworzyd okno modyfikacji zleceo oczekujących

należy zaznaczyd wybrane zlecenie w oknie „Zlecenie", a następnie

otworzyd menu kontekstowe i wybrad polecenie „Modyfikuj

zlecenie". Aby zmienid parametry zlecenia oczekującego, zmieniamy

wartości w określonych komórkach:

- Symbol - określa instrument którego zlecenie dotyczy i nie

wymaga zmiany;

- Typ - domyślną wartośd-„Modyfikuj zlecenie" - pozostawiamy bez

zmian;

- Cena - w komórce możemy ustawid nową cenę aktywacji zlecenia

oczekującego;

- S/L, T/P - w komórkach możemy zmienid poziomy Stop Loss i Take

Profit dla danego zlecenia;

- Wygaśnięcie - możemy określid datę wygaśnięcia zlecenia, lub

odznaczając ją nie określad daty ważności zlecenia.

- Po wprowadzeniu zmian możemy je zaakceptowad przyciskiem

„Modyfikuj". Aby usunąd zlecenie oczekujące wybieramy przycisk

„Usuo".

1.11 ZAMYKANIE POZYCJI Aby zamknąd pozycję, należy otworzyd okno zamykania

pozycji. Można to zrobid na 3 sposoby:

- Zaznaczyd otwarte zlecenie, otworzyd menu kontekstowe w oknie

„Zlecenia" i wybrad polecenie „Zamknij zlecenie";

- Kliknąd dwukrotnie rysikiem w zlecenie, które chcemy zamknąd;

- Wybrad przycisk w pasku narzędzi.

Page 20: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

20

- W oknie zamykania pozycji należy ustawid parametry zamykania

pozycji:

- Symbol - określa instrument w którym pozycja ma zostad

zamknięta;

- Wolumen - określa jaką częśd zlecenia chcemy zamknąd, zlecenie

może zostad zamknięte częściowo lub w całości.

1.12 GODZINY HANDLU Klient może dokonywad transakcji dwadzieścia cztery (24)

godziny na dobę, przez 5 dni w tygodniu, zaczynając ok. godziny

24:00 z niedzieli na poniedziałek, a koocząc ok. godz. 22:30 w

piątek.

1.13 WYMAGANIE DEPOZYTOWE I RÓŻNE OPŁATY Wszystkie depozyty są rozliczane w dolarach

amerykaoskich USD. Jeżeli klient chciałby zasilid swój rachunek inną

walutą wówczas bank obsługujący brokera zamieni deponowaną

walutę na USD zgodnie z obowiązującym kursem rynkowym.

Aby otworzyd rachunek wymagany jest minimalny depozyt

w wysokości dwóch tysięcy dolarów 2.000 USD. Depozyty mogą byd

realizowane przelewem bankowym. Rachunek zostanie zasilony

środkami z czeku dopiero w momencie otrzymania przelewu

bankowego przez bank obsługujący brokera. W przypadku

MARATONÓW suma potrzebna do rozpoczęcia pracy na realnych

pieniądzach wynosi od 300 do 1000 USD. Rachunki PAMM (Master

Account - Konta Mistrzowskie) od 1.100 USD w górę.

1.14 SKRÓTY KLAWISZOWE

Ctrl +Tab = Przechodzenie

pomiędzy zakładkami

Ctrl + F = Krzyżyk

Ctrl + G = Włączenie siatki

Ctrl + L = Włączanie

wolumenu

Page 21: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

21

Ctrl + I = Lista wskaźników

Ctrl + E = Włączanie strategii

Ctrl + D = Okno danych

Ctrl + M = Rynek

Ctrl + N = Okno Nawigator

Ctrl + P = Wydruk grafiki

Ctrl + T = Okno Terminal

Ctrl + O = Okno opcje

Ctrl + Y = Okresy czasowe

Shift + F12 = Przesunięcie o

jedną świeczkę w prawo

F8 = Właściwości wykresu

F9 = Nowe zlecenie

Fil = Aktywny grafik na pełny

ekran

F12 = Przesunięcie o jedną

świeczkę w lewo

Alt + 1 = Wykres słupkowy

Alt + 2 = Wykres świecowy

Alt + 3 = Wykres liniowy

Alt + F4 = Zamknięcie

platformy

Backspace = Usuo ostatni

obiekt

+ = Zwiększ

- = Zmniejsz

2. PODSTAWY PROGRAMOWANIA W MQL 4 MetaQuotes Language 4 (MQL 4) jest językiem

umożliwiającym programowanie strategii handlowych. Silna

kontrola typów i brak wskaźników powoduje to, że nawet źle

napisany program nie zdestabilizuje pracy systemu. MQL 4

umożliwia tworzenie wskaźników, strategii i skryptów, co pozwala

na automatyzację procesów handlowych i opracowanie własnych

pomysłów. Dodatkowo, często używane funkcje mogą zostad dla

wygody zebrane w bibliotekach. MQL w połączeniu z testerem

strategii dostarczonym wraz z platformą MetaTrader pozwala na

niemal natychmiastowe przetestowanie własnych pomysłów na

danych historycznych.

Najczęściej pomijaną kwestią w przypadku powyższego

języka jest możliwośd tworzenia systemów ekspertowych. Należy

tutaj jednoznacznie określid granicę pomiędzy tymi dwoma

podejściami:

strategia automatyczna (ang. Expert Advisor) jest znacznie

szerzej opisywaną w literaturze koncepcją, gdzie od

Page 22: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

22

użytkownika wymagana jest minimalna znajomośd obsługi

platformy. Cały proces handlu przebiega automatycznie, a

żadna dodatkowa zgoda użytkownika przy podejmowaniu

działao przez program nie jest wymagana.

główną ideą systemu ekspertowego jest niejako wspieranie

gracza w podejmowaniu decyzji. Program sugeruje

potencjalne punkty wejścia na rynek, jednak ostateczna

decyzja należy już tylko do użytkownika. Takie podejście

pozwala w pełni kontrolowad sytuację na rynku przy

jednoczesnym ograniczeniu czasu spędzonego na handlu.

Niestety w tym wypadku wymagana jest od użytkownika

podstawowa wiedza z zakresu analizy fundamentalnej oraz

technicznej.

Znajomośd zagadnieo związanych z rynkiem walutowym

oraz przyswojenie podstaw programowania w języku MQL 4 pozwoli

na tworzenie systemów znacznie ułatwiających śledzenie wielu par

walutowych jednocześnie oraz skuteczny na nich handel.

MQL 4 jest językiem, który dużo czerpie z języka ANSI C,

znanego również jako C99 (norma ISO/IEC 9899: 1999). Programiści

języka C oraz C++ a także języków pochodnych, takich jak Java czy

C#, w MQL odnajdą się w nowym środowisku bardzo szybko.

Do tworzenia programów w omawianym języku, oprócz

środowiska, wymagany jest również kompilator (dostarczany wraz z

platformą MetaTrader). MQL jest językiem kompilowanym.

Kompilowanie tłumaczy kod programu pisanego w języku

formalnym na język maszynowy. Pliki zawierające wykonywalne

kody maszynowe muszą posiadad rozszerzenie EX4. Rozszerzenie to

przez terminal kliencki jest rozpoznawane jako pliki wykonywalne.

Edytor tekstu MetaEditor jest programem typu IDE

(zintegrowane środowisko programowania) posiadającym funkcję

podświetlania składni. W edytorze zastosowane zostało inteligentne

podpowiadanie tekstu (rozwiązanie analogiczne do IntelliSense w

Page 23: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

23

środowisku Microsoft Visual Studio). Komunikaty dotyczące błędów

są przekierowane i wyświetlone w zakładce "Błędy" w polu "Tekst".

Po skompilowaniu programu tworzony jest plik wynikowy

posiadający nazwę identyczną z plikiem źródłowym zawierający

rozszerzenie EX4. W przypadku błędów podczas kompilacji, w

zakładce "Błędy" pojawi się pełna ich lista. Oprócz poważnych

błędów, uniemożliwiających kompilację, określanych jako "Errors",

zdarzają się też ostrzeżenia (ang. Warnings). Ostrzeżenia nie mają

bezpośredniego wpływu na działanie programu, jednak stanowią

informację o potencjalnie niebezpiecznych/nadmiarowych

fragmentach kodu.

MetaEditor posiada zintegrowany system pomocy

dostępny w zakładce "Pomoc" (alternatywnie klawisz F1). Samo

środowisko jest stosunkowo elastyczne i pozwala użytkownikowi na

dostosowanie licznych elementów do własnych preferencji.

Wielkośd i krój czcionki, kolory, układ okien to tylko nieliczne z

możliwych do edycji elementów.

2.1 PODSTAWY SKŁADNI Podstawowym elementem tworzenia rozbudowanych

programów są instrukcje wysokiego poziomu - czyli czynności, które

ma wykonad program. Instrukcje takie mogą występowad jako

pojedyncze wyrażenia:

Page 24: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

24

Powyżej widoczna jest prosta instrukcja, gdzie zmiennej o

nazwie a przypisywana jest wartośd 1. Najistotniejsza częśd

programu znajduje się w części init(). Funkcje szczegółowo opisane

zostaną w kolejnym rozdziale. Natomiast fragment kodu nad funkcją

init() pełni rolę informacyjną: możliwe jest tutaj podanie adresu

strony internetowej, czy też danych autora.

Z kolei bloki stanowią bardziej złożone fragmenty kodu,

gdzie zbiór instrukcji prostych traktowany jest jako całośd. W

powyższym kodzie, blok instrukcji stanowi cała funkcja init(), gdzie

kolejno zdefiniowana została zmienna, następnie przypisana została

jej wartośd oraz nastąpił powrót z funkcji.

Wszystkie bloki instrukcji w kodzie zaznaczane są przy

pomocy nawiasów klamrowych. W każdym bloku może znaleźd się

dowolna liczba instrukcji prostych. Zaleca się także, aby w

przypadku instrukcji warunkowych (zagadnienie to opisane zostanie

szerzej w dalszej części rozdziału) zawierających pojedyncze

instrukcje również stosowad oznaczenia bloków. Pomijanie

nawiasów w takich sytuacjach nie stanowi błędu, jednak w

Page 25: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

25

przypadku późniejszych modyfikacji kodu może już prowadzid do

trudnych do zidentyfikowania błędów.

2.2 KOMENTARZE I ZNAKI PUSTE Język MQL posiada wolny format. Oznacza to, że układ linii

oraz znaki puste nie są zaliczane do kodu programu (w

przeciwieostwie do np. języka Python, gdzie układ wcięd jest

istotnym elementem kodu). Umożliwia to pisanie wielu instrukcji w

jednej linii kodu, oddzielenie fragmentów dowolną liczbą

separatorów, a nawet pisanie jednej instrukcji w kilku wierszach. O

ile zwłaszcza pierwsza z tych możliwości jest niezalecana (a w

przypadku pisania programu przez kilka osób wręcz zabroniona), o

tyle oddzielanie części kodu pozwala na opracowanie przejrzystych i

starannie opisanych jego fragmentów.

Bardzo ważnym elementem programu (szczególnie w sytuacji, kiedy

konieczne mogą byd dodatkowe modyfikacje kodu) są szczegółowe

komentarze. Komentarze w kodzie to fragmenty programu

pomijane w procesie kompilacji, w których znajdują się informacje

dla programisty.

W MQL dostępne są dwa rodzaje komentarzy: liniowe oraz

blokowe. Komentarze liniowe stosowane są najczęściej do krótkiego

opisu wybranej zmiennej. Z kolei długie komentarze blokowe

umieszczane są przed funkcją i służą do opisu większego fragmentu

kodu, listy parametrów i udostępnianego przez funkcję typu.

Page 26: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

26

Sama treśd komentarza jest szczególnie istotna. Tekst powinien byd

krótki i przejrzysty. Nie należy także opisywad oczywistych

fragmentów kodu.

2.3 TYPY ZMIENNYCH Każda stosowana w programie nazwa musi zostad

zadeklarowana. Chodzi tutaj o podanie informacji, że opisuje ona

obiekt danego typu. W języku MQL dostępne są 4 typy

fundamentalne:

integer - typ całkowitoliczbowy;

double - liczby rzeczywiste;

string - typ łaocuchowy;

bool - wartości prawda/fałsz;

Każdy z powyższych typów stosowany jest w odmiennych

sytuacjach i może opisywad różne zmienne. Powyższe typy stanowią

jeden z najistotniejszych elementów języka MQL.

Najprawdopodobniej najbardziej oczywistym typem wyda się

integer. Jest to typ przeznaczony do reprezentacji liczb całkowitych.

W języku MQL możliwy jest też zapis wartości w systemie

Page 27: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

27

ósemkowym i szesnastkowym. Opisywany typ oznaczany jest

słowem kluczowym int. Każda liczba całkowita może ponadto zostad

przedstawiona ze znakiem + lub -.

Typ wartości rzeczywistych double przeznaczony jest do

reprezentacji 8 - bajtowych wartości przeliczalnego zbioru liczb

wymiernych w formacie dziesiętnym (o ograniczonej dokładności).

Innymi słowy chodzi tutaj o liczby z ułamkiem dziesiętnym.

Trzeci typ danych to typ tekstowy. Przeznaczony jest do

reprezentowania ciągu znaków w fizycznie ciągłej tablicy.

Maksymalna długośd słowa/zdania wynosi 255 znaków.

Page 28: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

28

Należy dodatkowo zaznaczyd, że ciąg znaków nie musi

ograniczad się tylko do jednej linii tekstu. Możliwe jest podzielenie

tekstu na kilka linii. Służy do tego znak kooca linii /n. Ostatnim

prezentowanym typem jest typ logiczny bool. Chodzi tutaj o

dwuwartościową zmienną logiczną przyjmującą wartości

prawda/fałsz (true oraz false). Typ ten najczęściej stosowany jest do

sprawdzenia, czy spełnione zostało dane założenie. Złożone

instrukcje sprowadzane są do prostego pytania:Tak/Nie. W

zależności od tego, czy udało się spełnid postawiony warunek, czy

też nie, wykonywane są inne bloki instrukcji.

2.4 OPERACJE NA ZMIENNYCH Zarówno proste, jak i złożone operacje na zmiennych

możliwe są po uprzednim ich zdefiniowaniu i określeniu typu.

Przykładowo, prosta operacja dodawania liczb całkowitych

widoczna jest poniżej:

W tym wypadku instrukcja dwuargumentowa może zostad

wykonana po wcześniejszym podaniu nazw dwóch zmiennych typu

int. Na szczególną uwagę zasługują tutaj dwie linie służące do

wypisania danych na ekran. MessageBox(...) to funkcja (więcej o

funkcjach w kolejnym rozdziale), której parametrem jest łaocuch.

Niestety typ int nie jest w tym wypadku uznany za łaocuch. Istnieją

jednak metody służące przekształceniu jednego typu w inny - chodzi

tutaj o funkcje konwersji. DoubleToStr(...) to funkcja pozwalająca

na właśnie taką konwersję, gdzie na wejście funkcji przekazywany

jest parametr int, natomiast na wyjście - zmienna łaocuchowa. W

kolejnej linii natomiast zastosowana jest funkcja Alert(...), która

Page 29: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

29

otrzymuje dowolną zmienną łaocuchową, która następnie wypisana

jest na ekran. W języku MQL obowiązują wszystkie znane z

matematyki zależności i priorytety operatorów. Przykładowo,

mnożenie jest instrukcją dwuargumentową, więc wymagane jest

podanie dwóch wartości o tym samym typie. Oczywiście operacje

mnożenia mają priorytet równy dzieleniu, dodawanie ma priorytet

niższy, a wyrażenia w nawiasach mają priorytet najwyższy. Poza

wymienionymi operacjami dwuargumentowymi jest też kilka

operacji jednoargumentowych, których działanie może nie byd tak

oczywiste. Przykładowo, w MQL dostępny jest operator zmiany

znaku, który pozwala zmienid znak zmiennej na przeciwny (nie

należy mylid tego operatora z dwuargumentowym odejmowaniem).

Oczywiście operacje na zmiennych najczęściej kooczą się na

przypisaniu, czyli wpisaniu nowej wartości danej zmiennej, do

jednej ze zmiennych już istniejących. Przypisanie określane jest przy

pomocy znaku rówości. Znak = może byd w tym przypadku

interpretowany jako: "od teraz wartośd zmiennej jest równa...".

Jednym z najczęściej popełnianych na początku błędów jest zamiana

znaku równości na znak przypisania. Znak równości opisany zostanie

dokładnie w następnym podrozdziale dotyczącym operatorów

relacji.

Możliwe jest też zastosowanie pewnego uproszczenia w

kodzie, gdzie dwuargumentowe operacje matematyczne łączone są

w jednej instrukcji z przypisaniem.

Jest to pewne uproszczenie niepolecane początkującym

programistom. Zwłaszcza na początku lepiej przygotowad programy

nieco dłuższe i przejrzyste.

Page 30: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

30

2.5 OPERATOR WARUNKOWY Operator warunkowy jest jedną z podstawowych

konstrukcji właściwie w każdym języku programowania. Opisane

dotychczas przykłady instrukcji prostych, instrukcji blokowych i

operatorów opisują prosty, liniowy kod. Operator warunkowy IF

pozwala na wprowadzenie rozgałęzienia w kodzie: gdzie w

zależności od podjętej decyzji (decyzji użytkownika, lub też decyzji

ustalonej na podstawie innych zmiennych) możliwe jest wykonanie,

lub też pominięcie pewnych fragmentów kodu.

W języku MQL najczęściej stosowane w operatorze IF typy

zmiennych to int oraz bool. Zmienna boolowska wydaje się w tym

przypadku naturalna: przyjmuje dwie wartości oraz możliwe jest

wykonanie dwóch odmiennych fragmentów kodu.

Rozwinięciem operatora IF jest operator IF - ELSE. Pozwala on na

tworzenie znacznie bardziej rozbudowanych programów, gdzie

Page 31: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

31

możliwośd opcji do wyboru zależy od liczby dodatkowych

warunków:

Ciekawe możliwości daje również zagnieżdżanie operatorów, gdzie

przy spełnieniu warunku pojawia się następny warunek - warunek

zagnieżdżony:

Jednym z najpopularniejszych przykładów dotyczących wyrażenia IF

ELSE jest problem wyznaczania pierwiastków równania

kwadratowego, gdzie w zależności od wartości delta równanie

posiada jeden, dwa lub nie posiada żadnych miejsc zerowych.

Page 32: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

32

2.6 OPERATORY RELACJI Operatory relacji pozwalają łączyd proste warunki w

instrukcji IF w bardziej złożone wyrażenia. Przykładowo, zamiast

stosowad zagnieżdżonych wyrażeo IF, możliwe jest połączenie jest

ich w jedną instrukcję:

Wszystkie dostępne w MQL operatory relacji przedstawione zostały

poniżej:

== równy;

!= różny;

< mniejszy;

Page 33: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

33

> większy;

<= mniejszy lub równy;

>= większy lub równy.

Szczególnie istotny jest tutaj operator równości ==, który nierzadko

mylony jest z operatorem przypisania.

2.7 PĘTLE Oprócz instrukcji warunkowej IF, konieczne jest również

zapoznanie się z zagadnieniem pętli. Są to instrukcje pozwalające na

wykonywanie pojedynczej instrukcji, lub też całego bloku instrukcji

określoną liczbę razy. Prosty schemat blokowy pętli przedstawiony

został poniżej:

Pętle stosowane są najczęściej do przeglądu pewnego zbioru

wartości, np. tablic (więcej o tablicach w dalszych rozdziałach).

Innym popularnym zastosowaniem pętli jest wielokrotne

wykonanie powtarzającej się instrukcji. Przedstawiona powyżej

pętla FOR składa się części sterującej pętlą oraz bloku instrukcji. W

Page 34: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

34

części sterującej wymagane jest określenie warunku początkowego

pętli, czyli wartości, od jakiej zaczyna się odliczanie (np. od 0 do 100,

lub od 10 do 1). Drugi element to właśnie wartośd koocowa pętli.

Wreszcie ostatnia częśd to wartośd, o jaką zmienia się pętla przy

każdym przejściu przez blok instrukcji.

Interesujący jest tutaj ostatni element pętli FOR, w tym przypadku

jest to dekrementacja. Operacja dekrementacji w każdym przebiegu

pętli to odjęcie wartości 1 od zmiennej sterującej pętlą. Istnieje też

odpowienik dekrementacji dla zwiększania wartości zmiennej o 1:

jest to inkrementacja.

Drugi rodzaj pętli dostępny w MQL to pętla WHILE.

Stosowana najczęściej w przypadku, gdy nie jest znana dokładna

liczba powtórzeo pętli a blok kodu wykonywany jest aż do

spełnienia zadanego warunku. Przykładowo:

Dodatkowe elementy pomocne przy sterowaniu pętlą to

instrukcje break oraz continue. W przypadku pierwszej z nich chodzi

o przerwanie wykonywania pętli w momencie wystąpienia

określonego warunku. Przykładowo, w pętli dana wartośd dzielona

Page 35: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

35

jest przez kolejne liczby, jednak w przypadku dzielenia przez zero

wybrana wartośd jest pomijana.

Instrukcją zbliżoną do continue jest break. Zasadnicza

różnica polega jednak na tym, iż break natychmiast przerywa

wykonywanie pętli, w której jest zawarta.

W powyższym kodzie kolejne iteracje pętli są wykonywane, do

momentu spełnienia warunku, czyli znalezienia takiej wartości pętli,

która jest podzielna przez 17 - w tej sytuacji dalsze przebiegi pętli są

zaniechane i następuje wykonanie pozostałej części kodu.

Page 36: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

36

2.8 PRZYKŁADY 1. Napisz program, który dla dwóch zmiennych typu double

realizuje operacje dodawania, odejmowania, mnożenia oraz

dzielenia.

2.Napisz program realizujący operację mnożenia liczb rzeczywistych,

dodawania łaocuchów i przypisania dla wartości bool.

3. Napisz program, w którym podane są 3 zmienne: int oraz dwie

zmienne double. Zmienna int może przyjmowad wartości 1,2 lub 3.

Każda inna wartośd skutkuje komunikatem "Błąd". W przypadku,

gdy wartośd int jest równa 1, na zmiennych double realizowana jest

operacja dodawania. Dla int równego dwa: operacja odejmowania.

Dla zmiennej 3: do pierwszej zmiennej przypisana jest wartośd

zmiennej drugiej i na odwrót. POMOC: do wyświetlenia komunikatu

użyj funkcji MessageBox. Do przepisania zmiennych wprowadź

zmienną pomocniczą.

4. Napisz program, który wypisuje na ekran sumę liczb od 1 do 50,

wypisuje liczbę elementów podzielnych przez 2 oraz liczbę

elementów podzielnych przez 3.

5. Napisz program, który wypisuje, ile liczb niepodzielnych przez 2, 3

i 5 znajduje się w przedziale zadanym przez użytkownika.

6. Napisz program, który wypisuje trójkąt prostokątny z gwiazdek.

3. FUNKCJE I ELEMENTY DEBUGOWANIA MQL jest językiem proceduralnym, gdzie pewne fragmenty

kodu powinny tworzyd jedną całośd. Takie elementy określane są

jako funkcje. Dwie podstawowe przesłanki do tworzenia bloków

kodu to:

spójnośd kodu. W przypadku funkcji całe bloki instrukcji

wywoływane są przy pomocy jednej linii kodu, co znacznie

wpływa na jego bezpieczeostwo. Liczba miejsc, w których

programista może popełnid błąd jest istotnie ograniczona.

powtarzające się fragmenty. W przypadku stałych i często

powtarzających się bloków instrukcji działaniem

Page 37: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

37

pożądanym jest w tym przypadku zamknięcie ich w funkcji i

następnie jej wywoływanie. Ogranicza to nadmiarowośd

kodu i wpływa pozytywnie na jego czytelnośd.

Jednym z ciekawszych przykładów zastosowania funkcji w pisaniu

strategii automatycznych jest wyszukiwanie formacji na wykresie.

Metody te opisane zostaną w późniejszych rozdziałach.

Warto również stosowad jednolitą konwencję nazwową,

która pozwoli bez problemu w przyszłości modyfikowad wybrane

fragmenty kodu. Przykładowy fragment programu:

Wskazane zostały tutaj dwie metody nazywania zmiennych.

Pierwsza, określana jako notacja węgierska, to sposób zapisu, w

ktorej nazwa zmiennej poprzedzona jest pierwszą literą jej typu. Z

kolei notacja wielbłądzia zakłada, iż pojedyncza zmienna może

składad się z kilku połączonych słów, gdzie każde z nich pisane jest z

dużej litery. Dodatkowo pierwsza litera nazwy zmiennej pisana jest z

małej litery, natomiast nazwa funkcji rozpoczyna się wielką literą.

3.1 DEFINICJA FUNKCJI Lista parametrów to zmienne przekazywane do wnętrza

funkcji stosowane przy obliczeniach. W pewnych sytuacjach lista

parametrów jest pusta, a wszystkie obliczenia odbywają się tylko na

zmiennych wewnątrz funkcji. Kolejnym istotnym elementem jest

Page 38: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

38

udostępniany typ. Każda funkcja po zakooczeniu swojego działania

oddaje sterowanie do miejsca, w którym została wywołana. W

miejscu powrotu do głównej części programu możliwe jest

odczytanie wartości zwracanego typu. W pewnych sytuacjach

zwracanym typem jest void, czyli typ pusty. Można to

interpretowad, jako fragment kodu, który nie przekazuje dalej

żadnej wartości:

Na powyższym przykładzie widad fragment programu, do którego

przekazane zostają dwa parametry, a jedynym efektem jego

działania jest wypisanie na ekran pewnych informacji. Zamiast

stosowad kilka linii kodu zawsze, kiedy na ekran podawana jest

identyczna informacja - warto taki kod przekształcid w funkcję.

Dzięki temu możliwe jest wywołanie jej po raz kolejny, jednak z

innymi parametrami. Dobrym zwyczajem jest także określenie

udostępnianego przez funkcję typu jako int.

Page 39: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

39

Wartośd zero na wyjściu funkcji oznacza brak błędów. Każda inna

wartośd może byd kodem błędu.

Nieco bardziej złożonym zagadnieniem są same konwencje

nazwowe, a także typy udostępniane przez funkcję. Nazwa funkcji

powinna byd w miarę krótka i co ważniejsze - przejrzysta. Już po

nazwie i po liście parametrów, użytkownik powinien byd w stanie

określid, jakie jest ogólne przeznaczenie takiego fragmentu kodu.

3.2 FUNKCJE WBUDOWANE MQL 4 predefiniuje trzy funkcje specjalne, są to funkcje o

identyfikatorach: init(), start() oraz deinit(). Funkcja init()

udostępnia wartośd typu prostego i może zostad zdefiniowana z listą

parametrów. Natychmiast po uruchomieniu programu (przez

dodanie go do wykresu i uruchomienie strategii), program

rozpoczyna pracę od predefiniowanej funkcji init() - o ile jej ciało

jest zdefiniowane. Fragment ten pełni niejako funkcję konstruktora,

gdzie np. ustalane są wartości najważniejszych zmiennych (ustalanie

ścieżek na dysku, typu wykresu, na jakim odbywa się handel).

Funkcja init() wywoływana jest tylko raz: po uruchomieniu

programu.

Page 40: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

40

Natomiast w trakcie pojawiania się nowych danych

giełdowych wywoływana jest funkcja start(). Jest to najważniejsza

funkcja w całej strategii - zawiera wszystkie funkcje dodatkowe

związane z obliczeniami i ruchami cenowymi na wykresie. W funkcji

start() mogą na przykład znaleźd się fragmenty kodu

odpowiedzialne za wyszukiwanie formacji świecowych na wykresie,

wyszukiwanie przecięd średnich, czy też informujące o poziomie

wyprzedania instrumentu. Funkcja start() wywoływana jest dla

każdego napływającego odczytu (nie dla każdej nowej świecy).

Oznacza to, że przy szczególnie złożonych systemach pewne odczyty

mogą nie zostad przeanalizowane. W przypadku, gdy funkcja

analizuje poprzednie notowania, wtedy nowe notowanie jest

pomijane przez program (funkcja uruchomiona zostaje ponownie w

momencie zakooczenia poprzedniej analizy). Narzuca to pewne

ograniczenia na użytkownika - funkcja powinna byd w miarę prosta,

a cały kod powinien byd optymalny (bez zbędnych powtórzeo i

niepotrzebnych, dodatkowych wywołao).

Każdy program dołączony do wykresu kooczy pracę przez

wywołanie predefiniowanej funkcji deinit() (o ile jest ona

zdefiniowana).

Page 41: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

41

Funkcja ta wywoływana jest automatycznie przed zamknięciem

skryptu, programu skojarzonego z wykresem, samego wykresu,

wyłączenia terminala, przed zmianą okna czasowego, zmianą

parametrów i zmianą konta. Funkcje init() oraz deinit() są tutaj

opcjonalne, jednak warto dodad chociaż krótką informację o

przebiegu działania programu.

3.3 DEBUGOWANIE KODU Niestety jednym z poważniejszych problemów przy pisaniu

strategii automatycznych w MQL 4 jest brak debuggera, czyli tzw.

"odpluskwiacza". Jest to program umożliwiający śledzenie na

bieżąco zmian w programie w trakcie jego wykonywania. Brak

takiego narzędzia jest szczególnie odczuwalny przy analizie

złożonych programów, gdzie błędy są bardzo trudne do

zlokalizowania. Poniżej przedstawiony zostanie jeden ze sposobów

na radzenie sobie z wyszukiwaniem błędów w kodzie.

Page 42: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

42

Po pierwsze oczywiście, należy starad się ograniczad liczbę

błędów - głównie poprzez pisanie przejrzystych fragmentów kodu,

które najlepiej na bieżąco testowad.

Należy zacząd od tego, że spora ich częśd to np. łatwe do

znalezienia błędy składni. W takiej sytuacji wystarczy spojrzed na

okno "Błędy", odczytad i przeanalizowad informację. Należy mied

jednak świadomośd, że najpoważniejsze błędy, to tak zwane błędy

logiczne: kiedy to sam program działa bez zarzutu, jednak sygnały

kupna/sprzedaży płynące do nas z systemu nie pokrywają się z

rzeczywistością. W tym miejscu warto sprawdzid, czy opracowany

system "ma szansę w ogóle działad". Innymi słowy, czy na wykresie

można wskazad moment, w którym system powinien dad sygnał, a

jeżeli tak, to co było przyczyną braku takiego sygnału.

Okazuje się, że funkcja Alert() pełni tutaj bardzo istotną

rolę. Jest to jedna z funkcji wbudowanych, która pozwala wypisad

dowolny tekst na ekran (alternatywą może byd funkcja

MessageBox()). Przyczyną braku sygnału może byd niewłaściwa

interpetacja sygnału płynącego z danej pary walutowej. W tym

miejscu warto mied pod ręką szczegółowy opis funkcji generującej

sygnał wraz z danymi, jakie powinna ona udostępniad. Przekazując

wartośd udostępnianą do funkcji Alert(), można sprawdzid, co było

rezultatem działania fragmentu programu (jednocześnie

porównując wynik z wartością, której oczekiwano na wyjściu).

Page 43: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

43

Analiza wszystkich funkcji pozwala wskazad fragment

programu generujący błędne sygnały. Badanie poszczególnych

fragmentów wewnątrz funkcji umożliwi określenie konkretnych linii

kodu, które są przyczyną błędu. Oczywiście w pewnych sytuacjach

już na etapie wstępnej analizy kodu może okazad się, że funkcja

generująca sygnał jest zbudowana błędnie. Opisany powyżej proces

debugowania może wydad się uciążliwy, jednak przy odrobinie

praktyki pozwala wyeliminowad właściwie 100% błędów w

programie. Na koniec należy wspomnied o dośd istotnej kwestii:

mianowicie korekty kodu przy użyciu wspomnianej metody możliwe

są tylko w godzinach, kiedy rynek walutowy nie jest zamknięty.

3.4 PRZYKŁADY 1. Napisz funkcję, która jako parametr dostaje napis, a na wyjściu

udostępnia liczbę samogłosek w łaocuchu.

2. Napisz funkcję, która jako parametr dostaje napis, a na wyjściu

udostępnia odpowiednio zakodowany napis. Np. a + 3 = d, c + 2 = e,

y + 2 = a. Drugim parametrem funkcji jest wartośd o jaką następuje

przesunięcie.

3. Napisz funkcję, która jako parametr otrzymuje dwa łaocuchy

znaków, a na wyjściu udostępnia jeden łaocuch, który zawiera na

zmianę znaki z dwóch powyższych.

Page 44: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

44

4. Napisz program, który zlicza odczyty danych z wykresu i podaje

ich liczbę w funkcji.

5. Napisz program, który w funkcji init() ustawia wartośd pewnej

zmiennej double na wartośd 100.0. Dla każdego odczytu sprawdza

jego numer: jeżeli odczyt jest podzielny przez 7, to od zmiennej z

początku odejmuje 5.3, w przeciwnym wypadku dodaje 0.2.

Wartośd ta wyświetlana jest dla każdego odczytu podzielnego przez

5.

4. STRUKTURY DANYCH I FUNKCJE

MATEMATYCZNE W rozdziale drugim przedstawione zostały fundamentalne

typy danych. Należy jednak zauważyd, że wszystkie narzędzia

służące interpretacji kursu par walutowych opierają się na okresach

obejmujących minimum kilka świec. Stąd oczywiście prosty wniosek,

iż potrzebne są struktury danych umożliwiające przechowywanie

tych wartości w jednym miejscu tak, aby były one ze sobą logicznie

powiązane. W tym celu stosowane są właśnie tablice jedno oraz

wielowymiarowe.

Dodatkowo, do przetwarzania tablic często stosuje się

funkcje matematyczne, których pewien zbiór dostępny jest w języku

MQL. Oczywiście w dośd prosty sposób można opracowad własne

funkcje matematyczne.

4.1 TABLICE JEDNOWYMIAROWE Każda zdefiniowana w programie tablica posiada typ.

Możliwe jest tworzenie tablic o dowolnym typie podstawowym (np.

integer, double czy bool). Większośd danych na wykresie

prezentowana jest w formie jednowymiarowej tablicy typu double,

gdzie każdy element odpowiada jednemu odczytowi.

Page 45: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

45

Elementy każdej tablicy w programie numerowane są od

zera. Przykładowo, 10-elementowa tablica indeksowana jest

numerami 0 - pierwszy element tablicy, aż do 9 - ostatni element

tablicy.

Oczywiście możliwe jest przechowywanie wszystkich

istotnych wartości w pojedynczych zmiennych, jednak przykładowo

dla zwykłej świecy japooskiej potrzeba aż 4 wartości: otwarcie,

zamknięcie, minimum oraz maksimum. Każda następna świeca, to

kolejne wartości. W MQL 4 dostępne są 4 tablice jednowymiarowe

wartości double przechowujące powyższe wartości świec:

Open[] - tablica przechowująca wartości otwarcia

kolejnych świec,

Close[] - tablica z wartościami zamknięcia,

High[] - wartości maksymalne dla świec,

Low[] - wartości minimalne dla świec.

Powyższe predefiniowane zmienne w oczywisty sposób ułatwiają

wszelkie możliwe analizy danych.

Page 46: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

46

Do skutecznego stosowania tablic wymagane jest również

opanowanie kilku prostych funkcji. Jedną z najważniejszych jest

ArraySize(...), jako parametr przyjmuje dowolną tablicę, natomiast

udostępnia jej liczbę elementów. Należy zdad sobie sprawę, że

bardzo często dokładna liczba elementów tablicy nie jest znana.

Możliwe jest jednak wywołanie funkcji, której parametrem jest

dowolna tablica, a udostępnianą wartością właśnie jej liczba

elementów. Połączenie ArraySize(...) z pętlą FOR pozwala na

przegląd dowolnej struktury w zaledwie kilku krokach.

Przy pomocy ArraySize(...) w prosty sposób można określid też, czy

w tablicy przechowywana jest parzysta liczba elementów.

Inną użyteczną funkcją jest ArrayMinimum(...), która

udostępnia element minimalny w tablicy przekazywanej jako

parametr. Możliwe jest napisanie własnej wersji opisywanej funkcji,

która udostępnia minimum z tablicy z przedziału zadanego jako

parametr.

Page 47: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

47

Kolejną ciekawą funkcją jest ArrayInitialize(...), która ustala

wartości tablicy według zadanego parametru. Można jednak

przygotowad własną wersję funkcji, która wypełnia tablicę

wartościami losowymi z zadanego przedziału. Przykład taki

przestawiony zostanie podczas opisu funkcji matematycznych w

dalszej części tego rozdziału.

4.2 TABLICE WIELOWYMIAROWE Oprócz zwykłych, jednowymiarowych tablic, możliwe jest

też stosowanie tablic wielowymiarowych. Tablica dwuwymiarowa

interpretowana jest jako struktura posiadająca określoną liczbę

wierszy i kolumn. Pojedyncze wartości znajdują się na przecięciu

wierszy i kolumn. Analogicznie, tablica trójwymiarowa posiada

również trzeci wymiar, a każdy z elementów znajduje się na

przecięciu wszystkich trzech wymiarów.

Page 48: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

48

O ile bez tablic jednowymiarowych, przygotowanie

jakiejkolwiek strategii jest praktycznie niemożliwe, to stosowanie

struktur wielowymiarowych można zastąpid odpowiednią liczbą

elementów jednowymiarowych.

4.3 FUNKCJE MATEMATYCZNE W MQL 4 dostępny jest szereg funkcji matematycznych

pozwalających znacznie uprościd obliczenia. Dla osób niezwiązanych

z programowaniem, nieco dziwny może byd brak operatora

potęgowania. Oczywiście proste obliczenia można wykonad przy

pomocy wielokrotnego mnożenia, jednak dla formuł, w których w

Page 49: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

49

wykładniku potęgi jest duża liczba warto zastosowad funkcję

MathPow(...):

Podobna sytuacja występuje przy pierwiastkowaniu

wartości, kiedy to należy skorzystad z funkcji MathSqrt(...). Jedną z

funkcji stanowi wbudowany w MQL 4 generator liczb

pseudolosowych (platforma MetaTrader nie posiada rzeczywistego

generatora liczb losowych).

W połączeniu z funkcjami tablicowymi, można przygotowad wiele

interesujących struktur.

Wreszcie jedną z najważniejszych funkcji jest MathAbs(...),

która pozwala obliczyd wartośd bezwzględną dowolnego wyrażenia.

Należy zdad sobie sprawę, jak istotna jest to funkcja w kontekście

analizy danych giełdowych. Nierzadko dochodzi do sytuacji, że

wymagane jest obliczenie ruchu ceny w dwie strony, czyli po prostu

zasięgu ceny. Dzięki funkcji MathAbs(...) możliwe jest obliczenie

różnicy pomiędzy dwoma wartościami bez względu na to, która z

nich jest większa.

Page 50: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

50

Charakterystyczną cechą wbudowanych funkcji

matematycznych (podobnie zresztą jak innych typów funkcji w MQL

4) jest ich spójna definicja. Każda z nich posiada nazwę zaczynającą

się od "Math...", następnie do nazwy dołączona jest nazwa

właściwa, np. "Pow" - potęga (ang. Power). Wartością udostępnianą

jest double.

4.4 BUDOWA WŁASNEJ FUNKCJI

MATEMATYCZNEJ Pomimo licznych funkcji wbudowanych, często okazuje się,

że kodu potrzebnego użytkownikowi w danej strategii niestety nie

ma wśród elementów języka MQL 4. W takiej sytuacji możliwe są

dwa wyjścia:

opracowanie własnej funkcji wykorzystującej jedną (lub

kilka) funkcji wbudowanych. Zabieg taki wydaje się dużo

prostszy z punktu widzenia użytkownika i często wymaga

tylko kilku dodatkowych linii kodu. Niestety w MQL 4 nie

ma możliwości tzw. przeciążania, co ma miejsce w językach

obiektowych i pozwala dosd prosto zmodyfikowad kod

istniejących funkcji.

drugim rozwiązaniem jest zaprojektowanie i napisanie

własnej funkcji matematycznej od początku. Jest to zadanie

znacznie trudniejsze, ponieważ trzeba dokładnie wiedzied,

jak działa funkcja wbudowana, lub też wymyślid własne

rozwiązanie.

Funkcja do wyszukiwania elementu minimalnego przedstawiona

została poniżej.

Page 51: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

51

Funkcja udostępniająca drugi od kooca element minimalny

(z zastosowaniem funkcji Min(...)) przedstawiona została poniżej.

4.5 PRZYKŁADY 1. Napisz funkcję sortującą i wypisującą na ekran kolejne elementy

tablicy.

2. Napisz własną wersję funkcji ArrayMin(...), która dla podanej

tablicy udostępnia wartośd minimalną.

3. Napisz funkcję, która jako parametr dostaje dwie liczby:

przedziały oraz trzeci: tablicę. Funkcja wypełnia określony fragment

tablicy elementami losowymi. Fragment tablicy zadany jest swoma

Page 52: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

52

pierwszymi argumentami. Na koocu funkcja udostępnia sumę tych

elementów tablicy.

4. Napisz program, który 4 tablice: Open[], Close[], Low[] oraz

High[] przepisuje do tablicy dwuwymiarowej, gdzie każdy wiersz

tablicy to odpowiednio tablice Open[], Close[], Low[] oraz High[]

powiększone o 1 puste pole. Na ostatnim elemencie wpisane

zostanie maksimum z każdego wiersza. Napisz również funkcję,

która udostępnia iloczyn elementów znajdujących się na ostatnich

polach każdego wiersza.

5. Napisz funkcję, która nie przyjmuje żadnych parametrów.

Wewnątrz funkcji tworzona jest trójwymiarowa tablica 5x5x5

inicjalizowana elementami losowymi. Następnie wyzerowane

powinny zostad elementy znajdujące się na środku każdego

wymiaru oprócz środka tablicy (element 3x3x3). Wszystkie

pozostałe, parzyste elementy tablicy powinny zostad do siebie

dodane, a uzyskana wartośd udostępniona na wyjściu funkcji.

5. ZMIENNE PREDEFINIOWANE W poprzednim rozdziale opisany został szereg

podstawowych funkcji wbudowanych w MQL 4 ułatwiających pracę

z danymi. Należy jednak pamiętad, że podstawowym zadaniem

strategii automatycznych i systemów ekspertowych w handlu

walutowym jest śledzenie w czasie rzeczywistym danych

napływających z rynku. Jednocześnie w tworzonym programie

muszą znaleźd się informacje o typach realizowanych zleceo

(zlecenia krótkie i zlecenia długie) a także o instrumencie. Możliwe

jest opracowanie systemu grającego tylko na parze walutowej

EURUSD - jednak od programisty wymagane jest, aby ta informacja

podana była jawnie w kodzie. Podobnie wygląda sytuacja z oknem

czasowym, na jakim może odbywad się handel. Do poprawnego

działania systemu należy określid, czy strategia działa dla dowolnych

danych, czy np. tylko na wykresie czterogodzinnym. Są to informacje

dla tradera dośd oczywiste i nie zwraca się na nie uwagi. Niestety

Page 53: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

53

strategie automatyczne rządzą się swoimi prawami i wymagają

opracowania szeregu dodatkowych założeo.

5.1 ŚWIECE JAPOŃSKIE A ZMIENNE

PREDEFINIOWANE Świece japooskie w MQL to tablice wartości double, gdzie

każdy z elementów tablicy odpowiada jednej świecy. Jest to

zasadnicza różnica pomiędzy interpretacją wykresów przez

użytkownika, gdzie świece i formacje świecowe po prostu "widad" a

świecami w kodzie. Każda, nawet najprostsza formacja świecowa

musi zostad opisana szeregiem warunków, aby można było ją w

prosty sposób wskazad w tablicach Open[], Close[], High[] oraz

Low[]. Pewnym ułatwieniem jest tutaj zależnośd, że np. wartośd

otwarcia 5 świecy znajduje się w tablicy Open[] na 5 miejscu (czyli

Open[4] - indeksy od zera), a wartośd zamknięcia w tablicy Close[]

również na 5 miejscu. Dzięki temu w prosty sposób można odróżnid

świece wzrostowe oraz spadkowe:

Długie cienie świecy, to nic innego jak sytuacja, kiedy

wartości skrajne oddalone są dośd wyraźnie od wartości

otwarcia/zamknięcia świecy. Dla kilku świec o długich cieniach u

góry można wysnud hipotezę, iż cena instrumentu napotkała pewien

opór. Do opisania sytuacji w programie należy sprawdzid długośd

cieni kilku ostatnich świec.

Page 54: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

54

Oczywiście bardziej złożone analizy wymagają większej

liczby warunków opisujących nawet pojedynczą świecę. Dodatkowo

należy pamiętad o istotnej zależności: duża liczba warunków wpływa

negatywnie na liczbę generowanych sygnałów. Sygnały są

pewniejsze, jednak jest ich dużo mniej. W przypadku strategii

automatycznej użytkownik stawia przede wszystkim na skutecznośd

systemu. Dla systemu ekspertowego duża liczba sygnałów (z których

częśd osoba obserwująca rynek może na bieżąco odrzucid) może

wydad się znacznie trafniejszym rozwiązaniem.

5.2 ZMIENNE BID I ASK Dwie zmienne predefiniowane określające aktualne ceny

instrumentów. Ask określa ostatnio znaną cenę dla kupującego, po

której aktualny instrument jest oferowany. Kurs Ask jest zawsze

wyższy od kursu Bid. Pamiętad należy o zasadzie, że długa pozycja,

czyli zakup instrumentu takiego jak pary walutowe, indeksu czy

surowca dokonywana jest po cenie Ask, czyli po cenie wyższej. Z

kolei Bid określa ostatnio znaną cenę oferowaną przez kupującego

dla sprzedającego na aktualnym instrumencie. Kurs Bid jest zawsze

niższy od kursu Ask.

Powyższe wartości są ważne w szczególności dla strategii

automatycznych, w których ustalana jest cena dla zajęcia pozycji.

Page 55: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

55

Przy każdym odczycie możliwe jest sprawdzenie aktualnej wartości

Bid lub Ask oraz porównanie tych wartości z ustaloną wcześniej

ceną.

Kolejnym zastosowaniem wspomnianych zmiennych jest

szacowanie wartości Stop Loss oraz Take Profit podczas składania

zlecenia. W momencie pojawienia się dogodnego sygnału do zajęcia

pozycji sprawdzana jest aktualna cena wybranego instrumentu.

Następnie ustalany jest poziom Stop Loss - np. na podstawie

wskaźnika ATR (więcej o tej metodzie w rozdziale 7), lub też na

podstawie wcześniej ustalonej wartości.

5.3 FUNKCJE SYMBOL() I PERIOD() Funkcje Symbol() oraz Period() związane są z problemem

opisanym na początku tego rozdziału. Chodzi tutaj o automatyczny

handel na z góry założonych instrumentach oraz na określonym

oknie czasowym. Funkcja Symbol() udostępnia zmienną łaocuchową

(String), która opisuje instrument na aktualnym wykresie. Jednym z

podstawowych zastosowao funkcji Symbol() może byd tutaj

sprawdzenie, jakiej wartości jest równy jeden pips.

Page 56: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

56

Popularnym zabiegiem jest też opracowanie oddzielnych

funkcji generujących sygnały dla par walutowych. Przykładowo,

jeżeli aktualnie wybranym wykresem jest EURUSD, wtedy

wywoływane są funkcje związane ze średnimi kroczącymi.

Natomiast w przypadku par z jenem mogą to byd funkcje generujące

sygnały oparte na oscylatorach.

Page 57: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

57

Drugą wspomnianą funkcją jest tutaj Period(), czyli

sprawdzenie, jakie okno czasowe jest aktualnie wybrane na danym

wykresie. Należy przy tym pamiętad, iż wartości udostępniane przez

tę funkcję podawane są w minutach: przykładowo dla wykresów

godzinnych wartośd funkcji Period() wynosi 60. Najczęściej

opracowane systemy automatyczne wymagają konkretnego okna

czasowego, na którym strategia działa najlepiej.

Przykładowo, strategie oparte o skalpowanie mogą sprawdzad się

bardzo dobrze dla wykresu 5 - minutowego, a dla 30 - minutowych

nie działad.

5.4 PROSTY SYSTEM TRANSAKCYJNY Przy tworzeniu prostego systemu transakcyjnego, który

informuje użytkownika o punkcie wejścia na rynek należy brad pod

uwagę kilka czynników. Przede wszystkim sytuacja wejścia na rynek

powinna zostad dokładnie opisana. Użytkownik powinien np. w

punktach wskazad najistotniejsze elementy strategii:

1. Strategia dla instrumentu EURUSD na oknie czasowym

minimum 15 minut;

2. Tylko pozycje krótkie;

3. Wystąpienie świecy wzrostowej o długim korpusie;

4. Długie cienie nad świecą;

5. Korekta kursu do około połowy wartości długiej świecy

wzrostowej.

Page 58: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

58

Na tym etapie można stworzyd szkielet programu, lub od razu

przejśd do kodowania:

Podczas przygotowania nawet najprostszego systemu

konieczne jest jego gruntowne przetestowanie. W przypadku

strategii automatycznych służy do tego wbudowany tester strategii,

z kolei w przypadku systemów ekspertowych niezbędne jest ciągłe

śledzenie sygnałów generowanych przez program. Należy

oczywiście założyd, że konieczne będzie również przeprowadzenie

procesu debugowania (opisanego szerzej w rozdziale 3) a także

wprowadzenie modyfikacji kodu.

5.5 PRZYKŁADY 1. Napisz program, który oblicza liczbę świec wzrostowych oraz

spadkowych dla ostatnich 50 świec, a także informuje, czy pojawiły

się na wykresie świece Doji.

2. Napisz program, który działa tylko na wykresie 15 - minutowym

na parze EURUSD i informuje użytkownika o pojawieniu się tylko

nowej świecy. Dodatkowo podawana jest informacja, która świeca z

kolei została odczytana podczas działania programu.

Page 59: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

59

3. Napisz program, który dla aktywnego instrumentu oblicza spread.

Następnie dodaje go do TP oraz odejmuje od SL. Wartości TP oraz SL

powinny zostad podane z menu. Dodatkowo, w opcjach powinna

byd możliwośd wybrania opcji zlecenia: kupno oraz sprzedaż. Dla

kupna TP > SL, dla sprzedaży TP < SL. Pomoc: skorzystaj ze

zmiennych extern.

4. Napisz program, który dla dowolnej pary z jenem oblicza liczbę

pipsów o jakie zmienił się kurs pary w ciągu ostatnich n odczytów

świecy (dla dowolnego wykresu o oknie czasowym mniejszym od

godziny) - n jest liczbą świec braną pod uwagę.

5. Napisz program, w którego menu podawana jest oczekiwana

liczba pipsów zysku. Następnie program sprawdza liczbę świec

wzrostowych oraz spadkowych w ciągu ostatnich 50 odczytów.

Następnie obliczany jest średni wzrost dla jednej świecy. Wreszcie

podawana jest szacowana liczba odczytów, po których osiągnięty

zostanie założony zysk.

6. FUNKCJE DODATKOWE Oprócz licznych funkcji i zmiennych predefiniowanych w

poprzednich rozdziałach, w języku MQL 4 jest też ogromna liczba

funkcji związanych z zarządzaniem kontem, funkcji daty i czasu a

także pozwalających na handel na innych instrumentach niż

aktualnie wyświetlony. Opisywane w tym rozdziale funkcje z jednej

strony nie są kluczowym elementem strategii automatycznych -

stanowią tylko ich dopełnienie. Z drugiej jednak strony poznanie ich

w znacznym stopniu ułatwi tworzenie programów automatycznych,

które pozwalają ograniczyd funkcję użytkownika do minimum.

6.1 FUNKCJE DO ZARZĄDZANIA KONTEM Pierwszą grupę stanowią funkcje do zarządzania kontem.

Przy realizacji większości transakcji jedną z ważniejszych wartości (z

punktu widzenia użytkownika) jest wielkośd dostępnego kapitału.

Oczywiście podczas handlu każdy z użytkowników konta sam

Page 60: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

60

dobiera wielkośd zlecenia i szacuje ryzyko. W wypadku strategii

automatycznych nawet ogólne określenie poziomu ryzyka jest

często niemożliwe, a jednym z podstawowych narzędzi jest w tym

wypadku funkcja AccountFreeMargin(...), która sprawdza liczbę

dostępnych na koncie środków.

Obok wspomnianej funkcji kolejnym istotnym elementem

jest AccountFreeMarginCheck(...), czyli funkcja sprawdzająca

wartośd środków na koncie po złożeniu zlecenia podanego jako

parametr. Zabieg taki umożliwia np. zablokowanie możliwości

wykonywania dalszych transakcji po przekroczeniu pewnej kwoty na

koncie.

Powyższe funkcje stosowane są przede wszystkim podczas

strategii automatycznych, gdzie do programu należy każdy aspekt

Page 61: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

61

handlu: od wyznaczenia potencjalnego poziomu wejścia na rynek,

poprzez ustalenie parametrów zlecenia, złożenie zlecenia, jego

zarządzanie a także zamknięcie. W przypadku systemów

ekspertowych możliwe jest pominięcie stosowania powyższych

funkcji, jednak to do użytkownika należy decyzja, do jakiego stopnia

jest skłonny oddad sterowanie handlem do programu.

Drugą grupę funkcji związanych z handlem stanowią

elementy takie jak AccountCompany(), czy AccountNumber(). W

pierwszej chwili może wydawad się, że ich zastosowanie w handlu

jest znikome, jeżeli jednak użytkownik przygotowuje program

dedykowany dla konkretnego konta, użytkownika, bądź też

działający tylko u danego brokera, wtedy dobrze jest sprawdzid

wartości takie, jak numer konta. Pozwoli to ograniczyd dostęp do

strategii osobom nieupoważnionym.

6.2 FUNKCJE DATY I CZASU W systemach transakcyjnych, jednym z pomijanych

elementów jest analiza fundamentalna. W prostym systemie

automatycznym nie jest możliwa dynamiczna analiza napływających

danych. Należy jednak pamiętad, że obecnie większośd serwisów

związanych z rynkiem podaje istotne informacje o ważnych

Page 62: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

62

wydarzeniach na cały tydzieo. Dzięki temu możliwe jest np.

określenie dni, w których handel jest zbyt ryzykowny (wielu

traderów rezygnuje z gry w piątek przed weekendem). W takiej

sytuacji możliwe jest zastosowanie funkcji DayOfWeek(), która

udostępnia aktualny dzieo tygodnia.

Warto też przyjrzed się jednej z metod na wprowadzenie

własnego niestandardowego okna czasowego. Dzięki funkcji

TimeCurrent(), która udostępnia liczbę sekund, jakie minęły od 1

stycznia 1970 roku (notacja systemów UNIX), możliwe jest

określenie liczby sekund od ostatniego odczytu. Przykładowo

sprawdzenie zależności "aktualny czas = poprzedni odczyt + 20

sekund" daje dostęp do okna czasowego równego 20 sekund. Jest

to jeden ze sposobów na analizę danych tylko w określonych

momentach czasu - przydatne dla bardzo złożonych funkcji, które w

okresach największej aktywności na giełdzie nie są w stanie

analizowad każdego odczytu z osobna.

6.3 DANE HISTORYCZNE I INNE INSTRUMENTY Interesującym aspektem automatycznych systemów

transakcyjnych jest możliwośd analizy danych a także składania

zleceo na innych instrumentach, niż aktualnie wyświetlany. Oznacza

to, że uruchamiając strategię EURUSD możliwe jest złożenie zlecenia

Page 63: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

63

na parze USDJPY (oczywiście bez otwierania dodatkowego okna). W

prostych systemach transakcyjnych jest to raczej rzadko spotykana

cecha, jednak warto pamiętad o tym, iż jeden wykres z włączoną

strategią może sprawdzad sytuację na kilku parach walutowych.

Odpowiednikiem tablic Close[], Open[], High[] oraz Low[] dla

innych instrumentów są funkcje iClose(...), iOpen(...), iHigh(...) oraz

iLow(...). Co ciekawe nie są to tablice, lecz funkcje udostępniające

wartośd double dla wybranego instrumentu, okna czasowego oraz

przesunięcia względem aktualnego odczytu. W dośd prosty sposób

można jednak wartości te wpisad do tablicy.

Jednym z ciekawych zagadnieo może byd analiza par, gdzie

w jednej z nich dolar jest walutą bazową, a w innej - kwotowaną.

Obserwując spadki na jednej z par walutowych możliwa jest

natychmiastowa reakcja na innym instrumencie.

Page 64: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

64

6.4 UŻYTECZNE FUNKCJE Oprócz opisanych w powyższym rozdziale funkcji

związanych z zarządzaniem kontem oraz pozycją warto wspomnied

o funkcjach istotnych z dwóch powodów. Po pierwsze, zwłaszcza w

przypadku nowych strategii automatycznych istotne jest dokładne

sprawdzenie ich skuteczności. Funkcja IsDemo() umożliwia

sprawdzenie, czy konto, na którym aktualnie odbywa się handel jest

w rzeczywistości kontem demonstracyjnym, co nie narazi

użytkownika na żadne dodatkowe straty. Innym ciekawym

rozwinięciem (szczególnie dla firm) dla funkcji IsDemo() może byd

przygotowanie wersji demonstracyjnej funkcji, z której korzystanie

na koncie rzeczywistym jest możliwe dopiero po wykupieniu

abonamentu.

Można przyjąd, że obok funkcji IsTradeAllowed(), która

umożliwia handel dla wybranej strategii, są to funkcje zapewniające

pewnego rodzaju bezpieczeostwo.

Page 65: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

65

Wreszcie ostatnią opisywaną w tym rozdziale funkcją jest

IsConnected() - niestety awarie związane z serwerem czasami się

zdarzają i nie można ich uniknąd. W przypadku częstych awarii

można zamknąd zlecenie minimalizując ewentualne straty gracza.

6.5 PRZYKŁADY 1. Napisz program, który może zostad uruchomiony tylko na

platformie firmy Iron Fx. W menu możliwe jest podanie minimalnej

liczby środków na koncie. Program informuje o możliwości złożenia

zlecenia, kiedy 3 ostatnie świece były jednego koloru (odpowiednio

możliwośd kupna lub sprzedaży), przy czym liczba środków na

koncie musi byd większa, niż podana w menu wartośd.

2. Napisz program, który w menu posiada parametry: liczba świec

przy odczycie, kierunek trendu: kupno/sprzedaż oraz oczekiwany

zysk w pipsach. Program sprawadza numer konta użytkownika (nr

podany w menu powinien zgadzad się z numerem w MetaTrader).

Następnie dla każdej świecy obliczany jest ruch ceny - różnica

pomiędzy ceną otwarcia, a ceną zamknięcia. Program informuje

użytkownika, czy dla takich parametrów udałoby się zrealizowad

zysk, lub ewentualnie ile pipsów braknie do realizacji zysku.

Program działa na parach EURUSD oraz USDJPY.

3. Napisz program, który w przypadku spadku na kursie EURUSD w

ciągu 3 ostatnich świec, sprawdza, czy na parze USDCHF nastąpił

Page 66: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

66

wzrost w ciągu trzech ostatnich świec i ewentualnie podaje

informację o wzroście. Przy czym wzrost na parze USDCHF musi

mied zasięg minimum 3/4 spadku na parze EURUSD.

4. Napisz program, którzy tworzy trójwymiarową macierz:

pierwszym wymiarem są 4 pary walutowe: EURUSD, USDJPY,

USDCHF oraz USDCAD. Kolejny wymiar to ceny otwarcia,

zamknięcia, maksimum oraz minimum. Wreszcie ostatni wymiar to

liczba odczytów: 4. W takiej macierzy 4x4x4 należy wskazad: która

para walutowa zanotowała największą zmianę kursu (w pipsach).

5. Napisz program, który dla podanego w programie poziomu SL

oblicza, czy zlecenie jest możliwe do realizacji: uwzględniając n

ostatnich odczytów (n jako parametr w menu) ustalid lokalne

maksimum (dla pozycji krótkiej) lub minimum (dla pozycji długiej) i

sprawdzid, czy różnica pomiędzy ceną (Bid lub Ask w zależności od

zlecenia) o lokalnym optimum jest mniejsza niż wartośd SL podana

w menu. Rodzaj zlecenia wybierany jest z menu.

7. WSKAŹNIKI Zdecydowana większośd systemów automatycznych w

większym stopniu opiera się na wykorzystaniu wskaźników analizy

technicznej. Określenie kierunku ruchu ceny na wykresie opiera się

na obserwacji, natomiast w przypadku języka MQL 4 wszystkie

wskaźniki zamienione zostają na wartości liczbowe (podobnie, jak

ma to miejsce w przypadku świec japooskich). Interpretacja i analiza

takich danych odbiega istotnie od tradycyjnej analizy technicznej i

wymaga pewnych dodatkowych umiejętności. Informacje

przedstawione w dwóch kolejnych rozdziałach mają na celu

nakreślenie najistotniejszych elementów i sposobów wyznaczania

punktów wejścia na rynek. Informacje te mogą byd stosowane z

powodzeniem w systemach ekspertowych ułatwiających handel

(gdzie informacja o sygnale przekazywana jest do wiadomości

użytkownika), jak i strategiach automatycznych, gdzie użytkownik

obserwuje tylko efekty działania strategii. Ze względu na

zachowanie spójności niniejszego skryptu, informacje o systemach

Page 67: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

67

automatycznych i składaniu zleceo w programie przedstawione

zostaną w rozdziale 9.

7.1 LISTA PARAMETRÓW FUNKCJI Wszystkie funkcje wbudowane dotyczące wskaźników w

MQL 4 mają podobną konstrukcję - chodzi tutaj przede wszystkim o

listę parametrów funkcji. Przed szczegółowym opisem tej listy,

należy zdad sobie sprawę, jak dokładnie działa wskaźnik w MQL 4.

Dowolny wskaźnik (średnia krocząca, oscylator, SAR) to wartośd

liczbowa naniesiona na wykres jako obiekt graficzny: i tak, średnia

krocząca to linia łącząca ze sobą odczyty z poszczególnych chwil

czasu. Mając to na uwadze interpretacja funkcji wskaźnika w MQL 4

wydaje się już oczywista: jest to funkcja, która dla zadanego

instrumentu udostępnia wartośd double, czyli punkt, który powinien

zostad umieszczony na wykresie. Z każdym odczytem świecy z

wykresu sytuacja wygląda dokładnie tak samo, dlatego kluczowym

problemem jest tutaj znalezienie odpowiedniej zależności pomiędzy

ceną instrumentu w danej chwili, a wartością wskaźnika dla tego

instrumentu.

Mając powyższe wiadomości, oczywista w interpretacji jest

również lista parametrów funkcji. Każdy wskaźnik udostępnia

wartośd dla konkretnego instrumentu, konkretnej chwili czasu - stąd

nie powinny dziwid wymagane parametry takie jak: nazwa

instrumentu, czy okno czasowe. Funkcja udostępnia wtedy wartośd

odczytu dla danego instrumentu w podanej chwili. Powtarzalnym

parametrem jest też przesunięcie (ang. shift) występujące

przeważnie jako ostatni parametr na liście. Chodzi tutaj o to,

względem której świecy obliczany będzie dany wskaźnik. Nic nie stoi

na przeszkodzie, aby obliczyd wartośd wykładniczej średniej

kroczącej z ostatnich 20 okresów względem 9 świecy wstecz - wtedy

przesunięcie będzie właśnie równe 9.

Oprócz opisanych powyżej zmiennych z listy argumentów,

dla każdego wskaźnika istnieje też kilka parametrów unikalnych,

Page 68: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

68

takich jak np. lista okresów, na podstawie której liczona jest wartośd

średniej kroczącej.

7.2 ŚREDNIE KROCZĄCE Jednym z najprostszych, a jednocześnie najskuteczniejszych

systemów automatycznych jest strategia oparta na średnich

kroczących. Sygnały generowane przez średnie generowane są w

momencie przecięcia wykresu przez średnią. Oczywiście w

przypadku wykresów świecowych należy przyjąd spójny sposób

obliczania wartości wykresu - np. na podstawie cen otwarcia

poszczególnych świec. Samo sprawdzenie punktu przecięcia

wskaźnika z wykresem daje tylko sygnał. Następnie należy wskazad

potencjalny kierunek ruchu ceny:

Page 69: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

69

przecięcie wykresu przez średnią od góry to sygnał kupna;

przecięcie wykresu przez średnią od dołu to sygnał

sprzedaży.

W tym kontekście przecięciem od góry można określid sytuację,

kiedy wartości średniej są większe od wartości wykresu i w miarę

zbliżania się do aktualnego odczytu maleją:

Analogiczną sytuację można opisad w przypadku sygnału

sprzedaży, kiedy to wartości średniej są mniejsze od wartości

wykresu i w miarę zbliżania się do aktualnego odczytu rosną.

Wiele systemów transakcyjnych opartych jest na kilku

średnich kroczących. Jedną z najpopularniejszych wersji jest

sytuacja, kiedy to na wykresie znajdują się dwie średnie kroczące, a

sygnały generowane są w momencie przecięcia średnich.

Page 70: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

70

Nieco trudniejsze jest tutaj wskazanie oczekiwanego

kierunku ruchu instrumentu. Można jednak wskazad to, wybierając

główną średnią, np. tę o mniejszym okresie, która szybciej reaguje

na zmiany cen instrumentu. Wynikiem tego jest przecinanie średniej

o dłuższym okresie przez średnią o okresie krótszym. Przecięcie

średniej od dołu to sygnał sprzedaży, natomiast przecięcie od góry,

to sygnał kupna. Może to zostad przedstawione w podobny sposób,

jak powyższy przykład. Jedyną różnicą tutaj jest to, że pod uwagę

brane są odczyty dwóch różnych średnich kroczących, których

różnica w miarę zbliżania się do aktualnych odczytów maleje.

7.3 OSCYLATORY Pomimo niewątpliwej skuteczności dobrze dobranych

średnich kroczących ważne jest, aby do analizy włączyd dodatkowe

wskaźniki weryfikujące poprawnośd sygnałów. Dobrym przykładem

może byd tutaj np. CCI, czy też oscylator stochastyczny. Co ciekawe,

wskaźniki widoczne w osobnym oknie (takie jak dwa powyższe)

oparte są na tych samych zasadach. Lista parametrów zawierająca

Page 71: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

71

nazwę symbolu, przedział czasowy i parametry charakterystyczne

dla siebie przekazywana jest do funkcji, która następnie udostępnia

wartośd wskaźnika. Interpretacja wskaźnika CCI jest bardzo prosta:

chodzi tutaj o poziomy: poniżej -100 oraz powyżej 100. Wskaźnik

poniżej poziomu -100 przecinający linię na tym poziomie od dołu

świadczy o sygnale kupna. W przypadku poziomu 100 chodzi

oczywiście o przecięcie tej wartości od góry.

Liczba odczytów wstecz stosowanych do wygenerowania

sygnału świadczy o jego dokładności. Przykładowo, jeden ze

scenariuszy dla wskaźnika CCI wygląda następująco:

wartośd wskaźnika znajduje się nad poziomem -100 lecz

maleje;

przecięcie poziomu -100 przez wskaźnik;

dalszy spadek wartości wskaźnika;

stopniowy wzrost wartości CCI;

przecięcie poziomu -100;

wzrost ponad poziom -100 - sygnał kupna.

Niestety tak szczegółowa interpretacja wskaźnika może

doprowadzid do sytuacji, kiedy liczba wygenerowanych sygnałów

wejścia na rynek jest bliska zeru.

Page 72: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

72

Nieco bardziej złożonym wskaźnikiem do analizy jest

oscylator stochastyczny.

Na wykresie oscylatora obecne są dwie średnie, jednak funkcja

udostępnia tylko jedną wartośd. W tym wypadku należy zwrócid

uwagę na jeden z parametrów charakterystycznych dla tego

oscylatora: przełącznik, która ze średnich jest aktualnie aktywna. Dla

MODE_MAIN funkcja udostępnia wartośd głównej średniej,

natomiast dla MODE_SIGNAL jest to wartośd średniej sygnałowej.

Dla poprawnej interpretacji tego wskaźnika należy wywoład funkcję

dwa razy z różnymi parametrami signal, a następnie przeanalizowad

wyniki. Jedną z możliwych interpretacji są tutaj dwa poziomy

analogiczne, jak w przypadku wskaźnika CCI.

7.4 ATR I STOP LOSS Wszystkie powyższe przykłady odnoszą się tylko do

generowania sygnałów, jednak równie istotnym elementem jest

ustalenie poziomów Stop Loss i Take Profit. Jednym ze sposobów

może byd tutaj wykorzystanie wskaźnika ATR do obliczenia dynamiki

Page 73: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

73

zmiany cen na rynku. Często określa się zależnośd pomiędzy ATR

oraz Stop Loss jako: Stop Loss = ATR *n, gdzie n jest tutaj

szacowanym wskaźnikiem ryzyka. Przykładowo, dla wartości n=1.5,

wartośd Stop Loss powinna zostad ustalona na ATR*1.5. Kolejnym

etapem jest wyznaczenie lokalnego minimum/maksimum na

wykresie w obrębie kilku najbliższych świec.

W przypadku, gdy oszacowana wartośd Stop Loss jest mniejsza niż

odległośd do lokalnego dołka - transakcja może zostad uznana za

bezpieczną.

Sam wskaźnik ATR może byd również stosowany jako

generator sygnałów. Tutaj jednak interpretacja wyników zależy od

indywidualnych preferencji użytkownika. Duża zmiennośd wskaźnika

oznacza dużą dynamikę cen. Dla jednego gracza może to byd

miejsce do szukania punktów wejścia na rynek, z kolei dla innych -

sygnał na przeczekanie.

Page 74: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

74

7.5 ŁĄCZENIE WSKAŹNIKÓW Zwłaszcza w przypadku bardziej złożonych systemów

automatycznych konieczne jest stosowanie kilku sygnałów

jednocześnie, co pozwala istotnie ograniczyd liczbę błędnych wejśd

na rynek. W przypadku systemów ekspertowych nie jest to

najistotniejsze, ponieważ każdy z sygnałów weryfikowany jest przez

użytkownika. Należy pamiętad o stosowaniu różnych wskaźników, tj.

należących do różnych grup. Możliwe jest oczywiście opracowanie

systemu opartego na kilku średnich kroczących o różnym okresie,

jednak poprawna implementacja wszystkich jego cech może byd

kłopotliwa dla początkującego programisty. Na początku zaleca się

stosowanie przede wszystkim średniej kroczącej połączonej z

dowolnym oscylatorem. Taka strategia pozwala generowad sporo

istotnych sygnałów wejścia na rynek. Przecięcie średniej kroczącej z

wykresem to potencjalny sygnał, który następnie weryfikowany jest

przez potwierdzenie sygnału na oscylatorze.

Oczywiście tak przygotowany system powinien zostad

poddany szczegółowym testom - sprawdzeniu jego skuteczności dla

różnych par walutowych, okresów oraz okien czasowych. O ile w

przypadku systemów ekspertowych błędny sygnał może zostad

szybko odrzucony, to w przypadku strategii automatycznych każda

pomyłka oznacza stratę gracza.

Problem handlu z trendem może nie byd oczywisty w

systemach automatycznych. Opracowanie metody pozwalającej

wskazad kierunek trendu samo w sobie może byd zadaniem

trudnym. Niestety nie istnieje wskaźnik pozwalający na wyznaczenie

kierunku ruchu danego instrumentu. Jedną z metod może byd tutaj

wyznaczenie globalnego oraz lokalnych maksimów, co pozwoli

potwierdzid, iż kolejne szczyty cenowe znajdują się coraz niżej (w

przypadku trendu spadkowego).

Page 75: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

75

7.6 PRZYKŁADY 1. Napisz program, gdzie w menu dla średniej kroczącej można

podad typ średniej (wykładnicza, prosta), sposób obliczania ceny

(otwarcie, zamknięcie, średnia z max i min) oraz okres. Program

generuje przy każdym odczycie informacje o tym, jaka jest różnica

pomiędzy ceną a wartością średniej. Dodatkowo powinna zostad

wyświetlona informacja o tym, czy aktualnie średnia znajduje się

nad czy pod wykresem ceny.

2. Napisz program, który jako parametr dostaje dwa parametry:

górną oraz dolną granicę dla wskaźnika CCI. W momencie przecięcia

górnej granicy od góry pojawia się informacja o sygnale sprzedaży.

Page 76: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

76

Natomiast przy przecięciu dolnej granicy od dołu - informacje o

sygnale kupna.

3. Napisz program, który generuje sygnał wejścia na rynek w

momencie, kiedy średnia o okresie podanym jako parametr przecina

wykres świecowy, przy czym wysokośd świecy musi wynosid

minimum n pipsów, gdzie n jest parametrem podanym w menu.

Przy przecięciu wykresu od góry generowany jest sygnał wzrostowy,

tak więc świeca powinna byd również wzrostowa. Przy

uruchomieniu programu powinna zostad również wyświetlona

informacja o brokerze, numerze konta i nazwie użytkownika.

Sygnały generowane są tylko, jeżeli uruchomione jest konto demo.

4. Napisz program, który dla par EURUSD oraz USDCHF i okresów od

15 minut do godziny włącznie sprawdza, ile razy wykładnicza

średnia krocząca przecinała wykres od góry.

5. Napisz program, który dla średniej kroczącej (wykładniczej lub

prostej w zależności od parametru) generuje sygnały przy przecięciu

wykresu - od góry, lub od dołu. Przy każdym przecięciu wykresu

dodatkowo sprawdzane jest, czy wskaźnik CCI znajduje się w strefie

wykupienia/wyprzedania. Przykładowo, dla sygnału spadkowego

wygenerowanego przez średnią i wskaźnika CCI znajdującego się w

strefie wykupienia generowana jest informacja "Silny sygnał". Dla

sygnału spadkowego i wskaźnika CCI w strefie wyprzedania "Duże

ryzyko". W pozostałych przypadkach "Słaby sygnał". Analogicznie

należy rozpatrzyd przypadek sygnału wzrostowego.

8. FORMACJE ŚWIECOWE W poprzednim rozdziale przedstawionych zostało kilka

przykładów zastosowania analizy technicznej w handlu

automatycznym. Kolejnym istotnym czynnikiem wspomagającym

generowanie sygnałów wejścia na rynek jest analiza formacji (na

kursie zajmujemy się tylko formacjami świec japooskich). Połączenie

tych dwóch elementów może dad bardzo dobre wyniki w przypadku

systemów automatycznych. Z kolei dla systemów ekspertowych, już

sama analiza formacji na wykresie i generowanie sygnałów na ich

Page 77: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

77

podstawie może dad bardzo dobre rezultaty. Należy przy tym

pamiętad, że skutecznośd formacji świecowych zależy w dużym

stopniu od stosowanego okna czasowego - gdzie duże okno czasowe

(godzina, 4 godziny a nawet jeden dzieo) to silne sygnały, a

ewentualne dane ekonomiczne przeważnie nie są w stanie odwrócid

głównego ruchu cenowego. Niestety liczba takich sygnałów jest

odwrotnie proporcjonalna do wielkości okna czasowego. Na

wykresie 5-minutowym liczba takich sygnałów może byd bardzo

duża, ale są to najczęściej ruchy o zasięgu kilku- kilkunastu pipsów. Z

kolei dla świec na wykresie 4-godzinnym należy uwzględnid bardzo

duży SL (nierzadko nawet ponad 100 pipsów).

8.1 WARUNKI ISTNIENIA FORMACJI Każda formacja to pewien charakterystyczny wygląd świecy

lub świec na wykresie. Najistotniejszymi elementami są tutaj:

kolor świecy i kolor świec poprzednich;

cienie i ich długośd;

punkty otwarcia i zamknięcia świecy w stosunku do świec

poprzednich;

długośd świecy.

Już na podstawie powyższych elementów można opisad dowolną

formację operując pewnymi warunkami. Przykładowo dla świecy

wzrostowej będzie to: cena otwarcia jest niższa od ceny zamknięcia.

Długośd świecy można określid na podstawie różnicy pipsów

pomiędzy ceną otwarcia a ceną zamknięcia. Oczywiście, jeżeli kolor

świecy nie jest tutaj istotny, warto posłużyd się wartością absolutną

z różnicy pomiędzy ceną otwarcia a ceną zamknięcia. Liczba pipsów

może byd w tym przypadku zdefiniowana jako parametr. Świeca

długa na wykresie 5-minutowym może mied tylko 15 pipsów, z kolei

długa świeca na wykresie dziennym to np. 500 pipsów. Warto

dostosowad dany fragment kodu do z góry założonego okna

czasowego.

Page 78: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

78

Teraz w zależności od wybranego okna czasowego oraz

początkowych założeo wskazana zostanie tylko świeca spełniająca

warunki.

Dla złożonych formacji składających się z 3 i więcej świec

liczba koniecznych do podania warunków może byd znacznie

większa. Nierzadko wymagane jest także, aby oprócz określenia

szczegółów formacji, podad kilka cech ogólnych dla elementów

poprzedzających formację. Dla odwrócenia trendu spadkowego

warto sprawdzid, czy trend utrzymywał się długo, lub czy formację

odwrócenia poprzedzały znaczne spadki. W takiej sytuacji

wygenerowany sygnał jest znacznie istotniejszy.

Dla formacji świecowych liczba generowanych sygnałów

wygląda podobnie, jak w przypadku analizy technicznej.

Szczegółowy opis formacji i liczne warunki dodatkowe wpływają

istotnie na jakośd sygnału, jednak ograniczają ich liczbę do

minimum.

Page 79: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

79

8.2 FORMACJE MŁOTA I GWIAZDY Formacje młota oraz gwiazdy są jednymi z

najpopularniejszych świec wskazujących na odwrócenie trendu.

Formacje odwrócenia to układy wskazujące na załamanie

aktualnego trendu. Młot charakteryzuje się długim cieniem pod

korpusem, krótszym korpusem oraz brakiem cienia nad nim. Kolor

świecy nie ma tutaj znaczenia, jednak można przygotowad dwie

funkcje odpowiednio dla świecy wzrostowej oraz spadkowej.

Przedstawiona powyżej wersja formacji młota jest bardzo prosta i

nie uwzględnia wcześniejszych świec. Wpływa to niestety

negatywnie na jakośd generowanych sygnałów. Uważa się, że jest to

bardzo silny sygnał otwarcia pozycji, niestety w systemie

automatycznym zastosowanie tylko tej formacji może nie przynosid

oczekiwanych rezultatów.

Bardzo podobną formacją jest gwiazda. Przy czym tutaj

długi cieo znajduje się nad korpusem. Kolor świecy również nie ma

znaczenia. Można jednak przygotowad zdecydowanie bardziej

złożoną funkcję, w której oprócz samej świecy, sprawdzone zostają

świece ją poprzedzające.

Page 80: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

80

8.3 KRZYŻ HARAMI Krzyż harami jes specyficzną formacją zbliżoną do formacji

harami składającą się z dwóch świec. Druga ze świec w formacji to

świeca Doji, w której cena otwarcia i cena zamknięcia znajdują się

na tym samym poziomie. Analizując podaną formację warto

zauważyd, iż w rzeczywistości opisana sytuacja występuje bardzo

rzadko (cena zamknięcia równa cenie otwarcia), co przekłada się na

małą liczbę sygnałów generowaną przez wspomnianą formację.

Jednak zakładając niewielki margines błędu, kiedy to cena otwarcia

oraz cena zamknięcia różnią się od siebie tylko o kilka (np. 2-3

pipsy). Krzyż harami występuje zarówno w trendzie wzrostowym,

jak i spadkowym. Wskazane jest tutaj wyraźne wyróżnienie

wzrostowego oraz spadkowego krzyża harami. Druga ze świec w

formacji (poprzedzająca Doji) jest również bardzo istotna.

Dodatkowo, np. w przypadku harami na trendzie wzrostowym,

świece poprzedzające świecę drugą w formacji powinny byd również

wzrostowe. Liczba uwzględnionych tutaj świec zależy już od

interpretacji użytkownika.

Page 81: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

81

8.4 OBJĘCIE HOSSY/ OBJĘCIE BESSY Formacje objęcia hossy i bessy składają się tylko z dwóch

świec, jednak istotną trudnośd stanowi tutaj określenie stosunku

korpusu jednej świecy do korpusu drugiej świecy. Ponadto każda z

tych świec może posiadad cienie. W przypadku objęcia hossy, gdzie

formacja następuje po trendzie spadkowym, należy dodatkowo

przyjąd założenie, że górne cienie świecy nie są zbyt długie. Długie

cienie mogą w tym wypadku świadczyd o nieudanej próbie objęcia

hossy i w konsekwencji doprowadzid do dalszych spadków.

Analogicznie sytuacja przedstawia się dla objęcia bessy, która to

formacja powinna pojawid się po wcześniejszych świecach

wzrostowych. Tutaj z kolei długie górne świece mogą stanowid

dodatkowy element potwierdzający możliwośd odwrócenia trendu.

Page 82: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

82

8.5 ANALIZA ZŁOŻONYCH FORMACJI Przy analizie dowolnej formacji najistotniejszym

elementem jest określenie warunków jej wystąpienia. W przypadku

układów 3 i więcej świec, liczba warunków może wynosid nawet

kilkanaście elementów. Przede wszystkim należy zwrócid uwagę,

aby poszczególne warunki nie wykluczały się. W sytuacji, kiedy

łącznikiem w wyrażeniu warunkowym jest "LUB", możliwe jest

wystąpienie jednej z kilku możliwych sytuacji. Przykładowo dla

formacji młota sprawdzenie koloru świecy nie jest wymagane.

Natomiast jeżeli w danym systemie świeca wzrostowa implikuje

dodatkowo inny warunek (przykładowo korpus świecy dwa razy

krótszy od cienia), wtedy warto skorzystad z wyrażenia "LUB".

Każda formacja powinna byd przygotowana w formie jednej

funkcji udostępniającej wartośd bool lub int. Zaistnienie formacji na

wykresie to wartośd true z kolei brak formacji to wartośd false.

Podejście takie pozwoli łączyd formacje świecowe ze sobą a także w

prosty sposób modyfikowad przygotowane formacje w przyszłości.

Page 83: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

83

8.6 PRZYKŁADY 1. Napisz program, w którym dla liczby świec zadanej parametrem

sprawdzane jest, ile z nich to formacja młota. Należy rozdzielid tę

liczbę w zależności od koloru młota.

2. Napisz program, w którym dla ostatnich 100 świec sprawdzane

jest, ile z nich miało korpus o długości liczba_minut*2. Program ma

wypisad informację w ilu przypadkach (procent przypadków)

nastąpiła korekta długiej świecy - przynajmniej do połowy jej

długości.

3. Napisz program zliczający dla n ostatnich świec (n jako parametr)

liczbę krzyży harami, gdzie ewentualna różnica pomiędzy ceną

otwarcia i zamknięcia określana jako błąd podawana jest jako

parametr. Przykładowo cena otwarcia - cena zamknięcia = 3 pipsy.

Błąd ustalony na 5 pipsów - to formacja uznana jest za krzyż harami.

4. Napisz program, który dla n ostatnich świec sprawdza, w ilu

przypadkach 3 świece pod rząd były tego samego koloru.

Dodatkowo, każda ze świec powinna mied wysokośd minimum

0.5*m pipsów (gdzie m to okno czasowe: 15 min = 15 pipsów).

Następnie należy wskazad, w ilu przypadkach nastąpiły dalsze

wzrosty, a w ilu spadki.

5. Napisz program, który wyszukuje formacje młota i gwiazdy, a przy

wystąpieniu formacji sprawdza, czy wskaźnik CCI również generuje

sygnał. Jeżeli sygnał jest potwierdzony, wtedy pojawia się

komunikat o sygnale.

9. FUNKCJE TRANSAKCJI Istotnym elementem dowolnego systemu automatycznego

są specjalne funkcje odpowiedzialne za składanie zleceo oraz

zarządzanie nimi. Funkcje transakcyjne są wbudowanymi

elementami języka MQL 4 umożliwiającymi opracowanie gotowej

strategii automatycznej. Oprócz samego składania zlecenia istotne

jest też zarządzanie zleceniami i ich ewentualne modyfikacje (w

szczególności zmiany dotyczące Stop Loss oraz Take Profit), a w

Page 84: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

84

przypadku zleceo oczekujących także ich usuwanie w przypadku

nieprzewidzianych ruchów cenowych na rynku.

9.1 SYSTEMY AUTOMATYCZNE W przypadku systemów automatycznych, gdzie każde

zlecenie składane jest automatycznie, wymagane jest dopracowanie

znacznie większej liczby elementów, niż w przypadku systemów

ekspertowych. W tych pierwszych oprócz funkcji generującej dobre

sygnały należy też zadbad o odpowiednie zarządzanie kontem,

monitorowanie sytuacji na rynku (kierunek trendu, istotne poziomy

wsparcia i oporu). Oczywiście po wygenerowaniu sygnału należy

sprawdzid, czy złożenie zlecenia jest możliwe, a następnie jego

złożenie, lub też ustawienie zlecenia oczekującego. Następnym

etapem jest zarządanie takim zleceniem i ewentualne wcześniejsze

zamknięcie lub też usunięcie (w przypadku zleceo oczekujących). Te

wszystkie elementy sprawiają, że samo przygotowanie skutecznego

systemu generującego dobra sygnały wejścia na rynek to tylko

połowa sukcesu. Następnym krokiem (nierzadko równie

pracochłonnym) jest wyposażenie systemu w funkcje umożliwiające

poprawny handel.

Drugą opcją jest tutaj system ekspertowy generujący

sygnały, które następnie analizowane są przez tradera. Ich

niewątpliwą zaletą jest fakt, że użytkownik skupia się przede

wszystkim na sposobie wyznaczania punktów wejścia na rynek, a

samo zarządzanie zleceniem schodzi tutaj na dalszy plan, albo

nawet jest całkowicie pomijane. Jest to ważne szczególnie w

przypadku osób mających stycznośd z MQL 4 po raz pierwszy.

System ekspertowy uczy przede wszystkim podstaw języka oraz

sposobu przekształcenia swoich pomysłów w gotowe programy.

Dopiero opanowanie tych elementów pozwoli na opracowanie w

pełni automatycznego systemu.

Page 85: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

85

9.2 SKŁADANIE ZLECEŃ W momencie pojawienia się sygnału, który pozwala na

złożenie zlecenia, konieczne jest wywołanie specjalnej funkcji

transakcyjnej OrderSend(...) odpowiedzialnej za ten proces. Jest to

jedna z najbardziej skomplikowanych funkcji wbudowanych w MQL,

gdyż wymaga podania bardzo dużej liczby parametrów. Oprócz

podstawowego parametru Symbol, który pozwala wskazad dla

jakiego instrumentu zlecenie jest składane, konieczne jest też

podanie szeregu innych:

typ zlecenia - do systemu musi trafid jawna informacja, czy

jest to zlecenie kupna, sprzedaży, czy też zlecenie

oczekujące;

wielkośd zlecenia - można ustawid wielkośd domyślną na

początku działania programu, lub też dla każdego zlecenia

podawad wielkośd osobno. Jest to przydatne zwłaszcza z

niewielką liczbą środków na koncie, gdzie złożenie zlecenia

o wielkości 1 lota może nie byd możliwe;

ustalenie poziomów SL i TP - możliwe jest też złożenie

zlecenia bez tych wartości oraz ich późniejsza modyfikacja

przy pomocy innej funkcji.

Samych argumentów jest oczywiście znacznie więcej, jednak

podane powyżej są jednymi z najistotniejszych.

Page 86: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

86

Złożenie zlecenia w momencie pojawienia się sygnału jest

oczywiście najprostszą sytuacją. Niestety należy też uwzględniad

sytuację, kiedy złożenie zlecenia z jakiegoś powodu nie jest możliwe

(problem z serwerem, brak środków na koncie, nieodpowiednie

wartości SL/ TP). W tym momencie warto skorzystad z funkcji do

zarządzania kontem, które pozwolą sprawdzid np. dostępne środki

na koncie, a także (co nawet ważniejsze) dostępne środki po

ewentualnym złożeniu zlecenia. Pozwoli to na uniknięcie przykrych

niespodzianek dotyczących wyczyszczenia rachunku przez program.

Warto też zastanowid się nad licznikiem zleceo. Otóż zdecydowana

większośd graczy na bieżąco śledzi swoje otwarte pozycje i nimi

zarządza. Podobnie sytuacja powinna wyglądad z systemem

automatycznym - co jakiś czas otwarte pozycje powinny byd

sprawdzane i ewentualnie modyfikowane. Stąd sugestia, aby ustalad

maksymalny licznik otwartych zleceo - w zależności od wielkości

dostępnego kapitału może to byd 5, 10 lub nawet więcej zleceo.

Każde zlecenie posiada unikalny numer - tzw. bilet (ang.

Ticket) pozwalający śledzid historię zlecenia. Pozwala to w pełni

kontrolowad sytuację na swoim koncie. Warto wspomnied tutaj o

funkcji OrderSelect(...), która umożliwia przegląd wszystkich

aktywnych zleceo (z użyciem pętli FOR).

Page 87: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

87

9.3 MODYFIKACJE I USUWANIE ZLECEŃ W momencie złożenia zlecenia przy pomocy funkcji

OrderSend(...) możliwe jest jego modyfikowanie. Dzięki temu

możliwa jest szybka modyfikacja dowolnego zlecenia z listy

spełniającego wybrany warunek.

Do zmian wartości zlecenia służy z kolei funkcja

OrderModify(..), która pozwala na wprowadzenie takich zmian jak

nowe poziomy SL oraz TP. W przypadku zleceo oczekujących

możliwości modyfikacji są tutaj znacznie większe. Możliwa jest np.

zmiana czasu, w którym dane zlecenie wygasa. Przykładowo

zlecenia oczekujące na koniec tygodnia, lub nie uruchomione przez

kilka dni mogą zostad zmodyfikowane.

9.4 ZAMKNIĘCIE ZLECENIA Ostatnim etapem zarządzania pozycją jest zamknięcie

zlecenia, czyli funkcja OrderClose(...). Funkcja ta jest dośd

charakterystyczna, gdyż udostępnia ona wartośd bool, gdzie true

oznacza, iż zamknięcie danej pozycji powiodło się, z kolei false to

błąd. Sama możliwośd zaistnienia błędów podczas zamknięcia

transakcji może przysporzyd sporo problemów. Bez użycia systemu

automatycznego, użytkownik od razu widzi, czy udało się bez

problemów zamknąd dane zlecenie, ewentualnie wymusid

zamknięcie po nowej cenie. W przypadku zleceo zamykanych

Page 88: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

88

automatycznie problemem może byd duży skok ceny w krótkiej

chwili czasu. W funkcji OrderClose(...) nie ma możliwości ponownej

próby zamknięcia zlecenia, jest natomiast wartośd określana jako

slippage. Jest to liczba punktów, o jaką maksymalnie może różnid się

aktualna cena i oczekiwana cena zamknięcia.

Co ciekawe, jednym z parametrów jest też wielkośd pozycji do

zamknięcia. Oznacza to możliwośd realizacji części zysków oraz

jednoczesne przesunięcie wartości TP dla danego zlecenia.

Przykładowo, zlecenie 1 lota może zostad zrealizowane w połowie

przez zamknięcie zlecenia na wielkośd 0.5 lota.

9.6 PRZYKŁADY 1. Napisz program, który przy każdym odczycie danych sprawdza,

liczbę aktywnych pozycji - jeżeli ta liczba jest mniejsza od liczby

założonej w menu, a handel odbywa się na koncie demo i

dodatkowo dwie ostatnie świece były wzrostowe, to składane jest

zlecenie. Poziomy TP i SL oraz wielkośd zlecenia ustalana jest na

podstawie wartości podanych w menu. Handel może odbywad się

tylko na parze EURUSD.

Page 89: SKRYPT SZKOLENIOWYpjuszczuk.pl/wp-content/uploads/2015/03/Skrypt.pdfSKRYPT SZKOLENIOWY . 2 Spis treści ... własne strategie handlowe. 1.1 NAJWAŻNIEJSZE CECHY PLATFORMY METATRADER

89

2. Napisz program, który przy każdej nowej świecy (i tylko wtedy)

przegląda istniejące aktywne pozycje, a następnie, w przypadku, gdy

cena danego instrumentu zbliży się na odległośd mniejszą niż n (n

pipsów jako wartośd w menu) od poziomu TP, to następuje

przesunięcie TP o 100 pipsów (w górę dla zleceo długich oraz w dół

dla zleceo krótkich).

3. Napisz program, który przy każdej nowej świecy sprawdza

zlecenia oczekujące. Jeżeli poziom instrumentu zblizył się do SL o

więcej niż 50 pipsów w ciągu ostatniego odczytu - zlecenie to

powinno zostad usunięte. Program działa tylko na instrumencie

USDCHF.

4. Napisz progam, który przy każdej nowej świecy sprawdza

przecięcie średnich kroczących o poziomach 7 oraz 12 okresów.

Każde takie przecięcie średniej wolniejszej przez szybszą to

potencjalny sygnał otwarcia pozycji. Pozycja może zostad otwarta

tylko, jeżeli liczba aktywnych pozycji jest mniejsza niż 5, a kwota na

jaką złożone zostanie zlecenie nie stanowi więcej niż 5%

całkowitego kapitału. Wielkośd zlecenia w lotach jak i poziomy SL/TP

powinny zostad ustalone w menu.

5. Napisz program, który przy każdej formacji młota oraz gwiazdy

otwiera zlecenie ze SL odpowiednio 5 pipsów poniżej (w przypadku

młota) oraz powyżej (w przypadku gwiazdy). Zlecenie to zostaje

zamknięte zaraz po pojawieniu się kolejnej świecy. Strategia działa

na wszystkich instrumentach z wyłączeniem par z jenem.

Dodatkowo na oknie czasowym od 30 minut do 1 dnia włącznie.

Maksymalny możliwy SL ustalany jest w menu.