FOREX. Wprowadzenie Programowanie w MQL4



Podobne dokumenty
Komputerowe systemy na rynkach finansowych. wykład 3 funkcje MQL4

Wielokrotne zamknięcie przez. Zlecenie po cenie rynkowej. Zlecenie oczekujące z limitem

Instrukcja użytkownika mforex WEB

Instrukcja użytkownika Platformy BRE WebTrader

Platforma transakcyjna BOSSA FX. Platforma Metatrader 4 najpopularniejsza na świecie platforma transakcyjna

Instrukcja użytkownika

SUPERMAKLER FX INSTRUKCJA OBSŁUGI TERMINALA TRANSAKCYJNEGO

Wprowadzenie do rynków walutowych

Pierwsze kroki w mforex Trader Instrukcja

Analiza danych w biznesie

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Cena Bid, Ask i spread

Krok 4: Zamykamy pozycję

Poradnik Inwestora część 4. Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktach indeksowych

mforex WEB Instrukcja obsługi

Pips, punkt, spread, kursy bid i ask

Podstawy przedsiębiorczości kolokwium zakres materiału

Inwestor musi wybrać następujące parametry: instrument bazowy, rodzaj opcji (kupna lub sprzedaży, kurs wykonania i termin wygaśnięcia.

1. Rynek Forex. a) Opis rynku

OPCJE WARSZTATY INWESTYCYJNE TMS BROKERS

Spis treści. Wstęp. Pierwsze logowanie. Wygląd platformy po zalogowaniu. Składnianie zleceń. Widok nowego zlecenia na wykresie oraz w zakładce handel

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Poradnik Inwestora część 3. Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktach indeksowych

KROK 4 OTWIERANIE POZYCJI

Jaki jest limit odległości ceny aktywacji od ceny rynkowej dla zleceń oczekujących? Czy mogę zająć pozycje przeciwstawne w jednym instrumencie?

BANK ZACHODNI WBK S.A. SPÓŁKA AKCYJNA CZŁONEK ZARZĄDU BANKU

Instrukcja użytkownika Smart Orders

Zarządzanie Kapitałem

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Przed zapoznaniem się z poniższą instrukcję, zalecamy zapoznanie się z instrukcją Ustawienie platformy.

Zajmujemy pozycję na grupie instrumentów walutowych (Forex)

Informacje o Rynkach FX

Pierwsze kroki na rynku Forex.

Pips, punkt, spread, kursy bid i ask

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Instrukcja użytkownika Advanced Orders

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Pips, punkt, spread, kursy bid i ask

0,20% nominału transakcji nie mniej niż 5 USD

Przykładowe scenariusze kosztów dla transakcji w systemie transakcyjnym TMS Trader MT5

Advanced Orders Zlecenia zaawansowane dla dodatku Smart Orders

0,20% nominału transakcji nie mniej niż 5 USD

Krok 5: ZAMYKANIE ZLECENIA

Podręcznik do platformy MetaTrader dla STP NDD

Rynek Finansowy Platforma Transakcyjna XTB-Trader

Spis treści. Wstęp 3. Logowanie 4. Ekran główny 5. Dodawanie instrumentów i wykresów 6. Składanie zleceń w panelu One Click 7. Zlecenia oczekujące 8

Kontrakty terminowe bez tajemnic. Marcin Kwaśniewski Dział Rynku Terminowego

SUPERMAKLER FX MODUŁ RAPORTÓW

DIF Freedom WEB (CFD) Komputer, Tablet oraz Telefon Szybki Start

Kontrakty terminowe i forex SPIS TREŚCI

Szczegóły Szybkiego Polecenia Transakcji

Komputerowe systemy na rynkach finansowych. wykład systemy mechaniczne

Do końca 2003 roku Giełda wprowadziła promocyjne opłaty transakcyjne obniżone o 50% od ustalonych regulaminem.

Komputerowe systemy na rynkach finansowych (KSnRF)

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

Podręcznik do platformy xtab

Podstawy inwestowania na rynku Forex, rynku towarowym oraz kontraktów CFD

ONE WORLD BROKER WEB (FOREX) Komputer, Tablet oraz Telefon Szybki Start

Rynek akcji a rynek Forex w Polsce

Dla zapracowanych Dla indywidualistów czyli Profesjonalne zarządzanie portfelem inwestycyjnym na giełdzie & Platforma FOREX

Walutowe kontrakty terminowe notowane na GPW. Warszawa, 28 maja 2014 r.

System transakcyjny NS Forex Instrukcja obsługi

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

1) jednostka posiada wystarczające środki aby zakupić walutę w dniu podpisania kontraktu

Obrót CFD w kilku prostych słowach

I. Tabela Opłat i Prowizji TMS Trader MT5. Tabela Opłat i Prowizji TMS Trader MT4

Spis treści: Uzyskiwanie dostępu do konta GWAZY 3. Sekcje platformy 4. Informacje o platformie 5. Lista obserwowanych 5.

Platforma Transakcyjna X-Trade obsługa, analiza, transakcje

Kontrakty terminowe w teorii i praktyce. Marcin Kwaśniewski Dział Rynku Terminowego

OPANUJ RYNEK w 8 minut!

Forward kontrakt terminowy o charakterze rzeczywistym (z dostawą instrumentu bazowego).

System transakcyjny oparty na średnich ruchomych. ś h = gdzie, C cena danego okresu, n liczba okresów uwzględnianych przy kalkulacji.

WARRANTY OPCYJNE. W to też możesz inwestować na giełdzie GIEŁDAPAPIERÓW WARTOŚCIOWYCH WARSZAWIE

WebTrader w Noble Markets

0,20% nominału transakcji nie mniej niż 5 USD

Platforma BPH Inwestor

NOL3. Zarządzanie zleceniami. 1. Transakcyjne funkcjonalności aplikacji NOL3. Biuro Maklerskie Zlecenia

Biuro Maklerskie. Alior Trader Mobile. Podręcznik użytkownika System ios 1/20

Opcje jako uzupełnienie portfela inwestycyjnego

HANDEL OPCJAMI W PLATFORMIE DEALBOOK 360

Prowizja za wykonanie transakcji na CFD na kryptowalutę 0.08% nominału transakcji brak prowizji 0.08% nominału transakcji brak prowizji

POZNAJ RYNEK FOREX W 10 MINUT

Przykładowe scenariusze kosztów dla transakcji w systemie transakcyjnym TMS Connect Professional MT5

Należy zauważyć, iż z tego typu inwestycjami wiąże się również obowiązek podatkowy.

Czym jest kontrakt terminowy?

Hosting na serwerach VPS: automaty rozpoznawania korzystnych transakcji. Równoległe przetwarzanie danych: szybsze wykonywanie zleceń

ROZPOCZĘCIE PRACY Z PLATFORMĄ INFRONT

Warszawska Giełda Towarowa S.A.

ANALIZA FUNDAMENTALNA ORAZ TECHNICZNA NA RYNKU KAPITAŁOWYM. Zakres materiału na kolokwium

Działając w najlepiej pojętym interesie Klientów HFT Brokers w sytuacji trudnych do przewidzenia, a mogących mieć

Podstawy Przedsiębiorczości. wykład 4. MQL4 - wskaźniki analizy technicznej + przykłady

Opis Experta Na Andrzeja by MMD

Opcje na GPW (I) Możemy wyróżnić dwa rodzaje opcji: opcje kupna (ang. call options), opcje sprzedaży (ang. put options).

Zarządzanie Kapitałem

Alior Trader 2. Podręcznik użytkownika. Copyrights Alior Bank

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Najchętniej odwraca pozycję. Ale jeśli nie może, to replikuje transakcję przeciwstawną. strategie opcyjne

Transkrypt:

FOREX Wprowadzenie Programowanie w MQL4 1

Forex to potoczna nazwa największego rynku na świecie - rynku wymiany walut (Foreign Exchange) z dziennymi obrotami sięgającymi obecnie 2 bln dolarów. Jak sama nazwa wskazuje, na tym rynku handluje się pieniędzmi. Forex jest rynkiem OTC (Over The Counter), co oznacza, że nie ma jednego miejsca na świecie gdzie dokonuje się wszystkich operacji na tym rynku, a handel parami walut odbywa się za pośrednictwem telefonów, Internetu i globalnej sieci banków. Jeszcze do niedawna handel na Forex ie zarezerwowany był dla "rekinów" świata finansów takich jak banki czy inne ogromne instytucje finansowe, jednakże wraz z rozwojem Internetu, możliwość aktywnego uczestniczenia na tym rynku została udostępniona znacznie szerszemu gronu osób. W chwili obecnej praktycznie każdy kto ma komputer z dostępem do Internetu może w łatwy sposób rozpocząć swoją przygodę na tym rynku. 2

Giełda Forex posiada wiele zalet i oferuje niesamowite korzyści w stosunku do innych giełd (np. do inwestowaniu na rynku akcji): - Łatwy dostęp - Jeszcze niedawno nawet bardzo bogata osoba nie mogła w praktyce inwestować swoich pieniędzy na tym rynku. Obecnie wraz z rozwojem technologii internetowych, powstały możliwości elektronicznego łączenia małych i rozbijania dużych zleceń. Dzięki temu można zacząć inwestowanie na tym rynku nawet z niewielkimi pieniędzmi. - Wyjątkowa płynność - Forex jest ogromnym rynkiem, co sprawia, że jest również rynkiem wyjątkowo płynnym. Oznacza to, że można złożyć zlecenie mając pewność, że zostanie zrealizowanie dosłownie online. Dzięki tak wielkiej płynności rynek ten jest odporny na wszelkie manipulowanie kursami. Nawet interwencje banków centralnych wielkich państw nie są w dłuższym terminie zachwiać głównymi trendami zmian kursów na tym rynku. - Handel przez 24h/dobę - W odróżnieniu od innych rynków czy giełd papierów wartościowych, Forex jest czynny od poniedziałku do piątku przez 24 godziny na dobę. - Zarabianie zarówno przy trendzie zwyżkowym jak i zniżkowym - Na rynku akcji mamy możliwość zarabiania przede wszystkim na trendzie wzrostowym. Jedną z największych zalet Forexu jest możliwość osiągania zysków zarówno przy wzroście jak i przy spadku danej waluty. 3

- DŻWIGNIA czyli LEWAR - Duża dźwignia handlowa na tym rynku - dochodząca do 200 : 1 oznacza, że depozytem w wysokości np. 500$ można kontrolować kupno lub sprzedaż walut o wartości 100.000$. Jeśli przy takim lewarze kurs zakupionej przez Ciebie waluty wzrośnie tylko o 0,5%, zysk wyniesie (0,5% z 100.000$ = 500$). Licząc od strony realnych pieniędzy - Twój zysk z zainwestowanych 500$ wyniesie więc kolejne 500$. - 100% zysku w transakcji trwającej kilka godzin, czy nawet często kilka minut! Czyż to nie piękne? Forex tworzy więc zupełnie nowe możliwości dla rządnych szybkich zysków inwestorów, ale czy jest on bezpieczny? Od pierwszego października 2003 r., zgodnie z nowelą Prawa Dewizowego możemy dużo swobodniej korzystać z usług instytucji finansowych za granicą, otwierać konta bankowe w zagranicznych bankach i zawierać transakcje na międzynarodowych rynkach. Ta zmiana w Prawie Dewizowym dała nam więc szeroki dostęp również do międzynarodowego rynku walutowego, pozwalając korzystać z ochrony i regulacji prawnych rozwiniętych rynków i usług licencjonowanych firm brokerskich. 4

Pod względem prawnym bezpieczeństwo jest więc pełne, ale należy pamiętać, że handel na rynku wymiany walutowej Forex jest bardzo mocno spekulacyjny i zapewnia naprawdę duże zyski jedynie dla obeznanych z nim inwestorów, którzy rozumieją i akceptują wszelkie rodzaje ryzyka związane z tym rynkiem. Zanim zainwestujesz na tym rynku swoje pieniądze najlepiej otwórz konto demo na wybranej platformie transakcyjnej i poćwicz "na sucho" swoje transakcje. Takie konto - demo jest podpięte do prawdziwego systemu transakcyjnego, lecz zasilone fikcyjnymi środkami. Konto demo pozwala ćwiczyć i uczyć się zarabiania na rynku Forex, nie ryzykując żadnych realnych pieniędzy. Pamiętaj jednak, że wielkość zysków zależy od wiedzy, dyscypliny i umiejętności, których na szczęście każdy może się nauczyć. Zanim więc otworzysz konto na platformie brokerskiej, poczytaj co nieco na temat Forexu. 5

Słowniczek Kurs walutowy Każdy kurs walutowy podawany jest w postaci dwóch cen. Pierwsza, to cena po której kwotujący chce kupić walutę, a inwestor sprzedać (BID). Natomiast druga, to cena po której kwotujący chce sprzedać, a inwestor kupić określoną kwotę waluty (OFFER lub ASK). Inaczej mówiąc cena waluty A wyrażona walutą B. Zapis USD/PLN 3.2100 oznacza, że za jednego dolara amerykańskiego należy zapłacić 3.21 złotych. Większość krajów kwotuje kursy podając cenę waluty obcej wyrażonej w walucie krajowej. Para walutowa Inwestor handlując na rynku Forex, zawsze zawiera transakcje na pewnych parach walut, np. EUR/USD czy USD/PLN. Innymi słowy oznacza to, że kupujemy jedną walutę, a drugą z kolei sprzedajemy. Kupno pary walutowej EUR/USD oznacza kupno euro za dolary, jednak jest to transakcja o charakterze nierzeczywistym i nie potrzebujemy posiadać tych walut na swoim rachunku. 6

Pips Pip (ang. Price Interest Point) jest to minimalna wartość o jaką może zmienić się cena waluty? zwykle na czwartym miejscu po przecinku. Większość par walutowych kwotuje się do czterech miejsc za przecinkiem więc zmiana kursu danej pary z 1.4320 na 1.4321 oznaczałoby zmianę o jednego pipsa. Jak obliczyć wartość jednego pipsa? Para walutowa GBP/USD kwotowana jest do czterech miejsc po przecinku dlatego mnożymy kwotę pozycji przez wartość jednego pipsa, inaczej 0.0001 USD. Czyli dla kontraktu wielkości 100 000 GBP/USD (1 lot), jeden pips wynosi 10 USD. Natomiast kolei dla pozycji 100 000 USD/JPY, jeden pips byłby równy 1000 JPY ponieważ USD/JPY kwotowany jest do dwóch miejsc po przecinku (1 pips = 0.01 JPY). 7

Spread Spread to różnica pomiędzy ceną sprzedaży i kupna i jest różny dla każdej pary walutowej. W przypadku płynnych par (tj. EUR/USD, GBP/USD, USD/JPY) jest on znacznie niższy co wynika z mniejszych wahań, którym podlegają. W przypadku np. pary USD/PLN spread wynosi w zależności od płynności rynku w danym momencie od 0.0005 do 0.0100 (każda pora dnia charakteryzuje się inną płynnością). Zdarza się jednak, że jest on znacznie wyższy. Na wielkość spreadu wpływ może mieć również oczekiwana publikacja danych makroekonomicznych, które w przypadku gdy okażą się dla rynku zaskakujące mogą przyczynić się do gwałtownych wahań kursu. Handlując walutami spread jest właśnie podstawową opłatą na rachunkach transakcyjnych ponoszoną przez inwestora. 8

Spot Jest to podstawowy typ transakcji zawieranych na rynku walutowym. Zawierając transakcję kupna bądź sprzedaży typu spot tradycyjnie strony zobowiązują się dostarczyć walutę za dwa dni robocze, jednak rynek Forex cechuje się brakiem dostawy fizycznej, więc w praktyce inwestor może zamknąć transakcję po kilku minutach czy nawet po kilku latach. Depozyt zabezpieczający a dźwignia finansowa Inwestowanie na rynku Forex stwarza możliwość kupowania i sprzedawania aktywów o dużo większej wartości niż gotówka zgromadzona na rachunku inwestora. Transakcje tego typu są realizowane w oparciu o depozyt zabezpieczający. Na najpopularniejszej parze walutowej EUR/USD dźwignia finansowa (tzw. lewar) wynosi często 1:200. Oznacza to, że inwestor może otworzyć transakcję o 200-krotnej wielkości posiadanych środków na rachunku. Dlatego chcąc dokonać transakcji wielkości 100 000 EUR/USD depozyt wyniesie zaledwie 0,5% tej wartości czyli 500 euro (depozyt obliczamy w pierwszej walucie danej pary). 9

Ryzyko walutowe - pojawia się w sytuacji posiadania aktywów/pasywów w walucie obcej. Sprawia to, że ich realna wartość w walucie krajowej narażona jest na ryzyko zmian, wynikające z wahań kursów walutowych. Ryzyku temu podlegają spekulanci, eksporterzy, importerzy, a także kredytobiorcy zaciągający kredyt w walucie obcej z myślą o wykorzystaniu go na zakup dóbr wycenianych w walucie krajowej. Dla dealera walutowego jest to kupno lub sprzedaż określonej kwoty waluty zagranicznej w celach spekulacyjnych, dla eksportera - podpisanie kontraktu handlowego na dostawę produktu za granice, dla kredytobiorcy - wzięcie kredytu w walucie zagranicznej z myślą o wykorzystaniu go na terenie kraju. Ryzyko płynności polega na prawdopodobieństwie zajścia takiej sytuacji, w której nie będzie możliwe dokonanie transakcji na skutek braku uczestników rynku lub istnienia bardzo dużej różnicy pomiędzy ceną kupna i ceną sprzedaży. Wysoka płynność jest warunkiem rozwoju rynku, którego uczestnicy mogą nabyć lub zbyć dany aktyw w dowolnym momencie. Rynek walutowy jest najbardziej płynnym spośród wszystkich rynków finansowych. Trader to osoba osiągająca zyski z operacji spekulacyjnych na aktywach finansowych (futures i opcje na różnego rodzaju towary, akcje przedsiębiorstw, waluty różnych krajów). Na międzynarodowym rynku walutowym Forex traderzy zawierają transakcje kupna/sprzedaży różnych walut i otrzymują dochód z różnicy ich wartości. 10

Pozostałe terminy CFD (Contract For Difference) kontrakt na różnicę, instrument pochodny, którego rozliczenie transakcji odbywa się w poprzez rozliczenia pieniężne - różnica ceny instrumentu bazowego w dniu otwarcia i zamknięcia pozycji - bez fizycznej dostawy instrumentu bazowego. Kontrakt terminowy (Futures) instrument finansowy z kategorii pochodnych (derywatów), umowa zobowiązująca strony zawartej transakcji do rozliczenia jej w przyszłości po dziś ustalonej cenie. Przedmiotem transakcji jest kontrakt, na którego cenę wpływa cena instrumentu bazowego. Instrumentami bazowymi mogą być dające się wyliczyć wartości ekonomiczne - akcje, waluty, indeksy giełdowe itp. Transakcje mogą być rozliczane w formie pieniężnej lub jako fizyczna dostawa instrumentu bazowego. Day Trading - jest to strategia inwestycyjna polegająca na wielokrotnym zawieraniu transakcji tego samego dnia często na tym samym instrumencie (walucie). Arbitraż cenowy - Polega na kupnie instrumentu na runku przy jednoczesnej jego sprzedaży na innym rynku. Broker firma organizująca obrót określonymi instrumentami, pobierająca prowizje od zawartych transakcji. Broker nie zajmuje pozycji na rynku. Byk inwestor grający na zwyżkę cen, nazwa pochodzi o pozycji byka przy ataku od dołu w górę. 11

Niedźwiedź inwestor grający na zniżkę, nazwa od specyfiki pozycji niedźwiedzia podczas ataku z góry w dół. Rynek Byka okres wzrostów cen. Rynek niedźwiedzia okres spadków cen. Lot - kontrakt na rynku FOREX opiewający, zazwyczaj na 50-100 000 USD przy wykorzystaniu dźwigni finansowej. Koszyk grupa walut używana do zarządzania kursem wymiany danej waluty. Limit order - Zlecenie z limitem ceny. Market order - zlecenie po cenie rynkowej Stop-Loss order - (Zlecenie stop loss) zlecenie mające na celu zamknięcie po określonej cenie pozycji przynoszącej stratę. Take Profit zlecenie realizujące zyski. Trailing stop zlecenie stop/loss które podąża za aktualną ceną. Long position - (Długa pozycja) zajęta na rynku przez kupno instrumentów finansowych. Pozycja długa jest stosowana przez inwestorów oczekujących wzrostów cen. Short sale - (Krótka sprzedaż) - sprzedaż określonej ilości instrumentów finansowych., pożyczonych na rynku, celem odkupienia ich po spadku cen. Krótka sprzedaż jest stosowana przez inwestorów oczekujących spadku cen tzn. zarabia się na różnicy ceny tego samego instrumentu w czasie, sprzedając kiedy jest drożej i odkupując taniej. 12

Margin - depozyt zabezpieczający Margin call - wezwanie do uzupełnienia depozytu. Initial margin - (Depozyt początkowy) - Minimalny depozyt wymagany przez firmę brokerską. OTC Market (Over the Counter Market) - zdecentralizowany rynek pozagiełdowych instrumentów finansowych, którego uczestnicy zawierają transakcje za pośrednictwem internetu, telefonu i pośredników (dealerów), zamiast klasycznego handlu parkietowego. Nie ma jednego, centralnego miejsca obrotu. Rollover (rolowanie) przedłużenie czasu zapadalności kontraktu o kolejny okres połączone z uaktualnieniem jego wartości wyliczonym na podstawie różnic w oprocentowaniu walut z pary (według punktów swapowych) Spread - (Widełki cenowe) - różnica pomiędzy cenami kupna i sprzedaży. Tick - minimalna zmiana ceny. 13

Wykres świecowy Świeca jest graficzną interpretacją tego co dzieje się z ceną. W zależności od tego czy cena otwarcia jest powyżej czy poniżej ceny zamknięcia tworzą nam się dwa rodzaje świec. Świeca zamykająca się powyżej otwarcia jest zazwyczaj jasna a zamykająca się poniżej jest czarna. 14

15

Rodzaje zleceń rynkowych Zlecenie po cenie rynkowej Oznacza, że godzimy się na zawarcie transakcji po cenie, jaka jest w danym momencie na rynku. To najprostsze z dostępnych zleceń. W większości przypadków transakcje są otwierane po bieżącym kursie przez wydanie dyspozycji kup / sprzedaj z poziomu platformy. W zależności od instrumentu są to zlecenia z natychmiastową realizacją, lub zlecenia przez zapytanie, gdzie kwotowanie jest każdorazowo dostarczane przez dealera po wciśnięciu przycisku zapytaj. Warto jednak pamiętać, że w pewnych sytuacjach rynkowych (np. publikacje ważnych danych makroekonomicznych) możemy zawrzeć transakcje po innej cenie, niż w momencie składania zlecenia. Jest to wynikiem gwałtownej zmiany cen. (http://www.coolforex.pl/pl/edukacja/rodzaje_zlecen_cfd_i_spot_forex/1.html) 16

Zlecenie PO RYNKU zlecenie po cenie rynkowej. Kupno lub sprzedaż po aktualnie kwotowanym kursie. 17

Zlecenie oczekujące z limitem Jest to zlecenie oczekujące stosowane w sytuacjach, kiedy myślimy o zawarciu transakcji, ale obecna cena nam nie odpowiada, lub czekamy na odpowiednią sytuację rynkową. Może być ono wprowadzone do systemu w godzinach handlu instrumentu na jaki opiewa. Powinno zawierać przynajmniej rodzaj instrumentu, wolumen transakcji, oraz cenę aktywacji (limit ceny). W przypadku zlecenia zakupu wskazany poziom cenowy musi być niższy od obecnego na rynku, a w przypadku zlecenia sprzedaży wyższy. Zlecenie może być złożone na dowolny okres (kilka godzin, kilka dni), lub do odwołania. Zostanie ono zrealizowane automatycznie w momencie pojawienia się żądanej ceny na rynku. Zlecenia oczekujące z limitem: a) Buy limit zlecenie kupna, w którym cena musi być niższa od bieżącej ceny Ask b) Sell limit zlecenie sprzedaży, w którym cena sprzedaży musi być wyższa od bieżącej ceny Bid 18

Zlecenie LIMIT W przypadku kupna, transakcja przeprowadzana jest po cenie nie wyższej niż określony limit. W przypadku sprzedaży, transakcja przeprowadzana jest po cenie nie niższej niż limit. Ten typ zlecenia może służyć zarówno do otwierania, jak i zamykania pozycji. 19

Zlecenia take profit i stop-loss To w zasadzie nieodłączne elementy każdego zlecenia skutkującego zawarciem transakcji na rynku finansowym, nie tylko na foreksie. Zlecenie take profit określa poziom, przy którym chcemy zrealizować nasz zysk (poziom bid). Z kolei zlecenie stop-loss pokazuje, gdzie chcemy uciec z pozycji, kiedy sprawy na rynku zaczynają przybierać niekorzystny dla nas obrót. Jeżeli mamy otwartą pozycję długą (kupiliśmy walutę), to poziom aktywacji zlecenia stop loss będzie dotyczył poziomu bid (sprzedaży waluty). I tak mając otwartą pozycję długą na EURUSD po poziomie 1,38207, ustawiamy zlecenie stop loss na poziomie 1,37607. Jeżeli rynek spadnie do 1,37607 to zlecenie stop-loss zostanie zrealizowane po 1,37607. Istnieje jednak ryzyko, iż faktyczna realizacja zlecenia nastąpi nieco niżej ze względu na tzw. poślizg wynikający z warunków rynkowych (np. dużej zmienności po publikacji danych makroekonomicznych, czy za sprawą luki otwarcia po weekendzie podczas którego napłynęły ważne informacje np. szczyt państw grupy G7). 20

GŁÓWNE I ZALEŻNE Podczas realizacji zlecenia głównego uaktywniają się zlecenia zależne. Zlecenia zależne nie są związane z żadną otwartą pozycją. W przypadku realizacji jednego z nich zamykane są pozycje w kolejności ich otwierania. 21

Zlecenie STOP W przypadku kupna cena musi być wyższa od aktualnej ceny rynkowej. Natomiast w przypadku sprzedaży cena musi być niższa od aktualnej ceny rynkowej. 22

Zlecenie trailing stop, czyli tzw. stop kroczący Jest to bardzo przydatne zlecenie w bieżącym zarządzaniu ryzykiem portfela. Poziom stop-loss nie jest wtedy sztywny, a zmienia się w zależności od ruchów instrumentu bazowego o zadaną przez nas wartość. Dla przykładu, jeżeli mamy pozycję długą, a stop kroczący wynosi 15 pipsów, to w przypadku wzrostu notowań o 15 pipsów poziom stop-loss zostanie przesunięty o daną wartość w górę. Jeżeli kurs rynkowy zacznie spadać, to SL nie ulegnie zmianie. To pozwala inwestorowi szybciej ucinać straty, lub zachowywać potencjalne zyski (bo TS może działać też jako pewnego rodzaju wędrujące zlecenie take profit przy strategii średnioterminowej). Złożenie zlecenia trailing stop jest możliwe niezależnie po której stronie rynku w danym momencie jesteśmy trzeba tylko pamiętać o ogólnych regułach dla zleceń typu stop-loss, tj. kiedy liczone jest od strony bid, a kiedy od ask. Zazwyczaj zlecenie trailing stop działa jednak tylko w sytuacji, kiedy jesteśmy zalogowani do systemu transakcjnego. W każdym innym przypadku system stosuje zwykłe zlecenia stop-loss. Tym samym, jeżeli ustawiliśmy zlecenie trailing stop, ale po pewnym czasie wylogowaliśmy się z systemu transakcyjnego, to automatycznie jest ono zamieniane w zwykłe zlecenie stop-loss po ostatnim poziomie trailing-stop. 23

TRAILING STOP- Porusza się zgodnie z zaplanowanym trendem, a w przypadku odwrócenia trendu, zatrzymuje się i nie cofa. Działa jak normalny StopLoss z tym że jego poziom zmienia się wraz ze zmianą ceny w pożądanym kierunku. 24

Stop out przymusowe zamknięcie pozycji Wszyscy wiemy, że strat w przeciwieństwie do zysków nie można pielęgnować w nieskończoność. Kiedyś przychodzi czas na powiedzenie sobie dość. Niestety z reguły wcześniej robi to za nas broker dokonując automatycznego zamknięcia transakcji. I tak system BOSSA FX w czasie trwania transakcji sprawdza, czy aktualna Wartość rachunku wystarczy na pokrycie minimalnego depozytu, który wynosi 30% Depozytu. W momencie jego spadku do tego poziomu lub poniżej, na rachunku jest zamykana najbardziej stratna pozycja. Jeżeli instrument, który generuje największą stratę, nie jest w tym momencie handlowany (nie dotyczy to walut), zamknięciu podlega następna w kolejności najbardziej stratna pozycja. Mechanizm stop out (s.o) umieszcza w komentarzu zamkniętej transakcji adnotację s.o. wraz z informacją o stanie środków z momentu zamknięcia (rysunek poniżej). Fragment z historii rachunku pokazujący transakcję zamkniętą przez s.o. Kolejne kolumny: godzina zamknięcia automatycznego, cena, punkty swap, wynik, stan rachunku: 29.7% obliczone jako Wartość rachunku 18 113.8/ Depozyt 60 972.3. 25

Praktyka Transakcje na CFD dają możliwość korzystania z bardzo wysokiej dźwigni finansowej, umożliwiającej zawieranie transakcji nawet 100-krotnie większych niż stan środków inwestora na rachunku. Zatem żeby kupić np. 200 tys. USD wystarczy posiadać na swoim rachunku inwestycyjnym zaledwie 6 tys. PLN. Oczywiście zakup przez nas 2 lotów reprezentujących 200 tysięcy USD nie oznacza, że jesteśmy posiadaczami tej kwoty i możemy ją wypłacić z naszego rachunku inwestycyjnego. Rozliczenie transakcji na kontraktach różnic kursowych następuje tylko i wyłącznie poprzez porównanie kursu otwarcia i zamknięcia danej transakcji. Nabycie 2 lot-ów oznacza, że nasze ewentualne zyski ze zmiany kursu walutowego naliczane będą nie od 6 tys. PLN a od kwoty 200 tysięcy USD. Tak wysoka dźwignia finansowa oznacza, że w przypadku wzrostu kursu USD do PLN zarobimy stukrotnie więcej niż w przypadku rzeczywistego zakupu dolarów za kwotę 6 tys. PLN.

Przykłady transakcji Załóżmy, że przewidujemy osłabienie się polskiej waluty w stosunku do waluty europejskiej ze względu na prawdopodobne podanie się do dymisji rządu i prawdopodobieństwo przedterminowych wyborów. Na rachunku inwestycyjnym w inwestor posiada 20.000 PLN a aktualny kurs EUR/PLN wynosi 3,9840. Inwestor jest przekonany o trafności swojej analizy rynku i postanawia zaryzykować kupując 2 loty EUR/PLN po kursie 3,9840. Zawarcie takiej transakcji oznacza, że inwestor posiada obecnie otwartą pozycję na wzrost kursu EUR/PLN o nominale 200.000 EUR. Na zabezpieczenie transakcji zostanie pobrany depozyt początkowy w wysokości 2*4.000 PLN, czyli 8.000 PLN. Inwestor zarobi na w/w transakcji, jeżeli kurs EUR/PLN będzie wyższy niż 3,9840 a straci, jeżeli będzie niższy niż 3,9840. Prześledźmy zatem stan naszego rachunku inwestycyjnego w zależności od hipotetycznych zmian kursu na rynku.

Dzień pierwszy - na zamknięciu dnia kurs EUR/PLN wynosił 3,9700. Strata inwestora z wyceny wynosi: 200.000*(3,97-3,9840)= -2.800 PLN. Inwestor decyduje się jednak przetrzymać pozycję i przerolować ją na następny dzień. Operacja rolowania przebiega automatycznie. Otwarta pozycja inwestora zostanie zastąpiona nową, identyczną pozycją tzn. będzie on miał kupione 200.000 EUR/PLN po kursie 3,9840, jego rachunek zostanie obciążony kwotą punktów swapowych za jeden dzień. Jako że zgodnie z Tabelą Punktów Swapowych np. gdy punkty swapowe za jeden lot wynoszą 29 PLN to rachunek inwestora zostanie obciążony kwotą: 2*29 PLN = 58 PLN. Dzień drugi - na zamknięciu dnia kurs EUR/PLN wynosił 3,9880. Zysk inwestora z wyceny wynosi: 200.000*(3,988-3,9840) = 800 PLN. Inwestor stwierdza jednak, że zysk w wysokości 800 PLN jest dla niego niewystarczający i postanawia przetrzymać pozycję do następnego dnia, rolując ją tak jak w dniu poprzednim. Znowu jego konto zostaje obciążone kwotą 58 PLN z tytułu ujemnych punktów swapowych.

Dzień trzeci - o godzinie 14:00 pojawia się informacja o dymisji rządu i przedterminowych wyborach, rynek jest niespokojny. O godzinie 15:15 kurs EUR/PLN wynosi już 4,0190. Inwestor stwierdza, że taki poziom kursu jest dla niego satysfakcjonujący i postanawia zamknąć pozycję, sprzedając ją po kursie 4,0190. Zysk inwestora wynosi: 200 000*(4,0190-3,9840) = 7 tys. PLN. Inwestor poniósł jednak koszty punktów swapowych za dwa dni. Tak więc zysk netto inwestora z przeprowadzonej operacji wynosi =7 000PLN 2 * 58 PLN = 6 884 PLN

Przykład 2 Załóżmy teraz, że inwestor przewiduje wzmocnienie się polskiej waluty w stosunku do euro. Swoje przekonanie opiera na przewidywaniach, że po zakończeniu wojny w Zatoce Perskiej polskie firmy zdobędą intratne kontrakty na odbudowę Iraku, co przyczyni się do poprawy sytuacji gospodarczej w Polsce. Na rachunku inwestycyjnym w posiada 20 tys. PLN, aktualny kurs EUR/PLN wynosi 4,4630. Inwestor stwierdza, że ten kurs EUR/PLN jest za wysoki i długo się nie utrzyma, dlatego też postanawia sprzedać 2,5 lota EUR/PLN. Zawarcie takiej transakcji oznacza, że inwestor posiada obecnie otwartą pozycję na spadek kursu EUR/PLN o nominale 250 tys. EUR, na zabezpieczenie której z jego rachunku inwestycyjnego zostanie pobrany depozyt początkowy w wynosi 2,5 * 4,000 PLN, czyli 10 tys. PLN. Inwestor zarobi na w/w transakcji, jeżeli kurs EUR/PLN będzie niższy niż 4,4630 a straci, jeżeli będzie wyższy niż 4,4630. Dzień pierwszy - na zamknięciu dnia kurs EUR/PLN wynosił 4,48

Strata inwestora z wyceny wynosi: 250 000*(4,4630-4,48)= -4 250PLN. Inwestor decyduje przetrzymać pozycję i ją przerolować na następny dzień. Ze względu na fakt, że inwestor sprzedał EUR/PLN, zgodnie ż tabelą punktów swapowych jego konto inwestycyjne zostanie uznane dodatnimi punkami swapowymi z tytułu rolowania pozycji. Stan rachunku inwestora wzrośnie o 2,5 * 50 PLN = 125 PLN, jako że punkty swapowe za jeden dzień na krótkiej pozycji EUR/PLN za jeden lot wynoszą 50 PLN. Dzień drugi - wojska amerykańskie wkraczają do Bagdadu, co rokuje szybkie zakończenie konfliktu. Na rynkach światowych panuje euforia, indeksy giełdowe notują znaczne wzrosty. Kurs EUR/PLN o godzinie 16:10 spada do poziomu 4,3910. Inwestor stwierdza, że taki poziom kursu jest dla niego satysfakcjonujący i postanawia zamknąć pozycję. Zysk inwestora wynosi: 250 000 * (4,4630-4,3910) = 18 000 PLN. Dodatkowo inwestor zarobił na dodatnich punktach swapowych 125 PLN, zatem zysk netto z zamkniętej transakcji wynosi = 18 000 PLN + 125 PLN = 18 125 PLN

Wprowadzenie do MetaQuotes Language 4 (MQL4) Meta Quotes Language 4 (MQL4) jest nowym językiem programowania (obecnie funkcjonuje już MQL5). Jest to język wbudowany w platformę transakcyjną MetaTrader i dedykowany do budowania własnych strategii handlowych. Język ten pozwala na tworzenie własnych strategii automatycznych (Expert Advisor) w postaci automatycznych systemów transakcyjnych i doskonale nadaje się do realizacji własnej strategii handlowej. Poza tym, można użyćwać MQL4 do tworzenia własnych wskaźników (Custom Indicator) oraz skryptów (Scripts), a także bibliotek (Library). W MQL4 zostało wbudowanych bardzo dużo funkcji niezbędnych do analizy aktualnych i historycznych notowań, a także podstawowe działania arytmetyczne i operacje logiczne oraz polecenia testowe i sprawdzające. MetaEditor 4 (edytor kodu źródłowego), który przedstawia różne konstrukcje języka MQL4, służy do pisania kodu programu. Wspiera użytkownika w pisaniu kodu system eksperckiego za pomocą prostego i czytelnego interfejsu. Można korzystać także z wbudowanego słownika pomocy, opisującego składnię języka MQL4 w postaci pliku pomocy. Skrócona instrukcja zawiera funkcje podzielone na kategorie działań, słowa zastrzeżone i inne konstrukcje języka. 32

Programy napisane w MetaQuotes Language 4 mają różne funkcje i zastosowania opisane poniżej: Expert Advisor - jest to mechaniczny system handlu działający zgodnie ze ściśle określonymi zasadami i regułami. EA dokonuje obliczeń, analizy i wykonuje określone działania przy każdym pojawieniu się nowego kwotowania dla danego instrumentu. Działanie EA jest szeregowane, to znaczy nowe przeliczenia nie zostaną rozpoczęte po pojawieniu się nowego kwotowania w przypadku gdy poprzednie nie zostały jeszcze zakończone. EA może działać jednocześnie na wielu instrumentach (być uruchomiony na wielu wykresach dostępnych w terminalu), może otwierać, monitorować, zamykać transakcje w sposób w pełni automatyczny poprzez wysyłanie zapytań bezpośrednio do serwera transakcyjnego. Podobnie jak większość systemów transakcyjnych, terminal obsługuje strategie napisane za pomocą MQL4 i umożliwia równoległe działanie wielu EA wykorzystując do obliczeń zarówno dane bieżących kwotowań, jak i dane historyczne. Pliki wykonywalne EA przechowywane są w następującej lokalizacji terminal_directory\experts. Custom Indicator jest to wskaźnik analizy technicznej napisany samodzielnie przez użytkownika, który jest zintegrowany i wykonywany na wykresie w terminalu klienckim. Charakterystyczne dla wskaźników jest to, że nie służą do automatycznego handlu i są przeznaczone tylko do realizacji obliczeń analitycznych i prezentacji wyników na wykresach. Pliki wykonywalne Custom Indicator przechowywane są w następującej lokalizacji terminal_directory\experts\indicators. 33

Script - to program przeznaczony dla jednorazowego wykonania niektórych działań i obliczeń. Charakterystyczne dla skryptów jest to, że nie dokonują obliczeń przy nadejściu nowego kwotowania tak jak EA oraz Custom Indicator, tylko na żądanie użytkownika. Pliki wykonywalne Scripts przechowywane są w następującej lokalizacji terminal_dictionary\experts\scripts. Library to moduł biblioteczny zawierający zbiór często wykorzystywanych funkcji użytkownika. Charakterystyczne dla bibliotek jest to, że nie są wykonywana na wykresie, a dostęp do funkcji w nich zawartych możliwy jest tylko z poziomu innych EA, Custom Indicator, Script oraz Library. Pliki Library przechowywane są w następującej lokalizacji terminal_directory\experts\library. Included file to pliki źródłowe (tak zwane nagłówkowe), służące do przechowywania najczęściej używanych bloków programów wykorzystywanych przez użytkownika. Pliki takie mogą być włączone do kodów źródłowych EA, Custom Indicator, Script oraz Library na etapie kompilacji. Wykorzystanie Included file jest bardziej zalecane niż stosowanie pojedynczych Library, ponieważ szybkość wykonywania kodów zawartych w plikach nagłówkowych jest znacznie większa niż w przypadku korzystania z funkcji zawartych tylko w Library. Pliki Included file przechowywane są w następującej lokalizacji terminal_directory\experts\include. 34

35

Podstawy MetaQuotes Language 4 MetaQuotes Language 4 (MQL4) jest językiem programowania dedykowanym do pisania systemów mechanicznych oraz wspierającym obliczenia analizy technicznej, prezentacji danych oraz realizacji automatycznych transakcji. Jest to język wbudowany w aplikację kliencką platformy transakcyjnej MetaTrader 4.0, co oznacza, że aplikacje wykonywalne mogą być uruchamiane i wykonywane tylko w tym środowisku za pomocą terminala transakcyjnego. Język ten pozwala użytkownikom na pisania własnych systemów mechanicznych (Expert Advisor), które automatycznie dokonują handlu. Poza tym, można tworzyć własne wskaźniki analizy technicznej (Custom Indicator), skrypty (Script) i biblioteki (Library). Źródło: www.bossa.pl 36

Funkcje specjalne - w języku MQL4 istnieją trzy predefiniowane funkcje specjalne, o których wspomniane było wyżej: init() - jest to funkcja uruchamiana jednorazowo przy inicjalizacji EA, wskaźnika, skryptu, czyli przy umieszczeniu na wykresie, włączeniu strategii lub zmianie parametrów, włączeniu/wyłączeniu EA. start() - jest to najważniejsza i obligatoryjna funkcją każdego EA, wskaźnika, skryptu. Jest uruchomiona dla EA i wskaźników za każdym razem zmiany kwotowań, natomiast w skryptach uruchamiana jest jednorazowo. Jeśli w naszym programie nie umieścimy funkcji start nie zostanie on skompilowany, a programista dostanie komunikat, że brak funkcji start(). deinit() - jest to funkcja uruchamiana jednorazowo przy zamykaniu EA, wskaźnika, skryptu, czyli w momencie usuwania EA, wskaźnika, skryptu z wykresu lub w momencie przeładowania parametrów, a także włączenia / wyłączenia EA. Powyższe predefiniowane funkcje specjalne mogą mieć przekazywane parametry, ale parametry te będą ignorowane podczas uruchamiania w terminalu, ale domyślne wartości można pobierać. Funkcji start(), init() i deinit() można wywołać z dowolnego miejsca programu. Nie jest zalecane wzajemne wywoływanie funkcji specjalnych start() w funkcji init() lub dokonywanie obliczeń danych z wykresów w funkcji init(), w której wykres i zmienne są dopiero inicjowane. Init() i deinit() nie powinny zawierać skomplikowanych obliczeń powinny być zoptymalizowane do jak najszybszego wykonania się. 37

Zmienne predefiniowane w MQL4 Język programowania MQL4 został opracowany i dostosowany do specyficznych wymagań tworzenia EA, wskaźników i skryptów czyli w większości przypadków do operowania na rynkach które mają dużą zmienność i szybkość zmian jeśli tak można określić kwotowania real-time. W celu przyspieszenia obliczeń i szybkiego dostępu do najczęściej wykorzystywanych zmiennych, którymi jest między innymi wartość kwotowań, udostępniono programistom tak zwane zmienne predefiniowane, którymi są Ask, Bid, Open, High, Low, Close, Point, Time, Volume. Dostęp do zmiennych predefiniowanych jest z każdego rodzaju programu, czyli z EA, wskaźnika, skryptu, biblioteki. Aby zapewnić szybki i bezpieczny dostęp do tych danych, terminal klienta przechowuje lokalne kopie predefiniowanych zmiennych dla każdego niezależnie uruchomionego programu. Dane te są aktualizowane przy każdej zmianie wartości kwotowań czy parametrów symbolu typu Digits, Point. Można też dokonać programowej aktualizacji tych danych za pomocą funkcji RefreshRates(). 38

Ask - przechowuje ostatnią znaną wartość ceny Ask dla symbolu wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Bid - przechowuje ostatnią znaną wartość ceny Bid dla symbolu wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Point - przechowuje wartość punktu danego symbolu. Dla instrumentu kwotowanego z dokładnością do 5 miejsc po przecinku wartość ta wynosi 0.00001, dla instrumentu kwotowanego z dokładnością jedności wartość ta wynosi 1. Przykład: if( irsi(null,0,14,price_close,0) < 25) { OrderSend (Symbol(), OP_BUY, Lots, Ask, 3, Bid-StopLoss * Point, Ask + TakeProfit *Point, "Moje zlecenie", 3, D 2005.10.10 12:30, Red); return; 39

Open[] jest zmienną tablicową i przechowuje wszystkie wartości ceny otwarcia dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Open jest taki sam jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1. Analogicznie High[], Low[] i Close[]. Voluime[] jest zmienną tablicową i przechowuje wszystkie wartości wielkości obrotu dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Volume jest taki sam jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1. Bars przechowuje liczbę słupków, jakie są dostępne na bieżącym wykresie, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. 40

Uruchamianie programów Aby możliwe było uruchomienie programów pisanych w MQL4 muszą one być prawidłowo zapisane składniowo, zgodnie ze specyfikacją języka i muszą być prawidłowo skompilowane. Aby skompilować program w MetaEditor przy otwartym kodzie źródłowym klikamy F5 lubm wybieramy przycisk Kompiluj z paska szybkiego wyboru lub Kompiluj z menu plik. Wynik kompilacji musi zakończyć się bez jakichkolwiek błędów (ostrzeżenia są dozwolone, ale należ je zweryfikować). Wówczas wygenerowany zostanie plik wykonywalny programu w z rozszerzeniem ex4 i zostanie umieszczony w tym samym katalogu co kod źródłowy. Pliki źródłowe jak i wykonywalne przechowywane są w ściśle określonych miejscach w strukturze katalogów: EA - terminal_dir\experts Wskaźnika terminal_dir\experts\indicators Skrypty - terminal_dir\experts\scripts Biblioteki - terminal_dir\experts\libraries Pliki nagłówkowe - terminal_dir\experts\include 41

EA, wskaźniki oraz skrypty mogą być uruchamiane tylko na wykresach poprzez przeciągnięcie myszką danej nazwy dostępnej w terminalu w okienku Nawigator lub po przez wybór menu kontekstowego lewym przyciskiem myszki i wybór z menu "dodaj do wykresu", a wskaźniki dodatkowo mogą być dodawane poprzez wybór z menu głównego [wstaw->wskaźniki->nazwa_wskaźnika]. Podczas uruchomienia zostaniemy poproszenie o podanie parametrów dla danego EA, wskaźnika, skryptu, które możemy ustawić zgodnie z naszymi potrzebami lub pozostawić domyślne. Do zmiany parametrów mamy zawsze dostęp po uruchomieniu na wykresie. W celu usunięcia EA lub wskaźnika korzystamy z menu kontekstowego, klikając prawy przycisk myszki na wykresie i wybierając dla EA Strategie->Usuń, a dla wskaźnika wybieramy Lista wskaźników, po czym pokazuje się lista z możliwością zaznaczenia i usunięcia konkretnego wskaźnika. Skrypty z tego względu, że uruchamiają się jednorazowo nie mają opcji usunięcia ręcznego, ponieważ zostają usunięte automatycznie po zakończeniu swoich operacji, obliczeń. Wyjątkiem jest wymuszenie zamknięcia np. gdy skrypt wykonuje się zbyt długo, co jest dostępna z poziomu terminala. 42

W tym samym momencie na jednym wykresie może zostać uruchomiony tylko pojedynczy EA, pojedynczy skrypt oraz dowolna liczba wskaźników. Skrypt wykonywany jest jednorazowo i automatycznie jest usuwany z wykresu. Wskaźniki działają cały czas po umieszczeniu ich na wykresie, natomiast działanie EA po umieszczeniu na wykresie może zostać włączony lub zatrzymane poprzez przycisk szybkiego wyboru włącz/wyłącz strategię. Po umieszczeniu EA na wykresie i prawidłowym zainicjowaniu pokazuje się nazwa EA w prawym górnym rogu wykresu oraz symbol graficzny oznaczający: - krzyżyk EA jest umieszczony na wykresie, ale nieuruchomiony, czyli nie wykonuje obliczeń naszej strategii - smutna buźka EA jest umieszczony na wykresie i uruchomiony, ale handel automatyczny jest wyłączony (parametr ustawiany we właściwościach strategii Handel->Umożliw handel) - uśmiechnięta buźka EA jest umieszczony na wykresie i handel automatyczny jest włączony (parametr ustawiany we właściwościach strategii Handel->Umożliw handel), czyli nasza strategia dokonuje automatycznego handlu Na tym samym wykresie jednocześnie może pracować jeden ekspert, jeden skrypt, oraz nieograniczona ilość wskaźników. 43

Funkcje zarządzania zleceniami (transakcjami) OrderSend - Funkcja umożliwia otwieranie zleceń natychmiastowych oraz oczekujących. Funkcja zwraca numer zlecenia, jeśli zakończy się powodzeniem lub wartość -1, jeśli wystąpił błąd wykonania funkcji (otwarcia nowego zlecenia). Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Jest to podstawowa funkcja z operacji handlowych oraz jedyna służąca do otwierania nowych pozycji z poziomu własnego programu. Składnia int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=null, int magic=0, datetime expiration=0, color arrow_color=clr_none ) Parametry symbol symbol rynku cmd identyfikator typ zlecenia volume wielkość zlecenia wlotach price cena po jakiej ma zostać otwarte zlecenie slippage maksymalne dopuszczalne odchylenie ceny rynkowej w pipsach od powyższej ceny otwarcia 44

stoploss poziom StopLoss takeprofit poziom TakeProfit comment komentarz tekstowy do zlecenia magic identyfikator dla EA expiration czas wygaśnięcia tylko dla zleceń oczekujących arrow_color kolor strzałki otwierającej zlecenie lub wartość domyślna CLR_NONE czyli brak koloru Wartość zwracana numer nowego zlecenia lub -1 jeśli błąd Przykład: int zlecenie; if( irsi(null,0,14,price_close,0) < 20 ) { zlecenie = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point, Ask+25*Point, "Moje zlecenie kupna",16384,0,green); if(zlecenie < 0 ) { Print("Błąd wykonania funkcji OrderSend ",GetLastError()); return(0); 45

Uwaga! W przypadku zleceń po cenie rynkowej typu OP_SELL lub OP_BUY, jako cenę otwarcia możemy podać tylko aktualną cenę Bid dla typu OP_SELL lub Ask dla typu OP_BUY i nie powinniśmy stosować wyliczanych, normalizowanych cen. Jeśli podamy cenę wyliczoną o nieprawidłowym formacie np. za mało pozycji po przecinku to otrzymamy błąd numer 129 (ERR_INVALID_PRICE). Jeśli podana cena będzie z aktualną ceną rynkową otrzymamy błąd numer 138 (ERR_REQUOTE), w tym przypadku możemy zastosować parametr slippage i określić maksymalne odchylenie od aktualnej ceny rynkowej, przy jakim zgadzamy się na otworzenie pozycji. Jeśli stosujemy parametr slippage to cena po której pozycja będzie otwarta określona jest przez widełki = aktualna cena +- parametr slippage. Wartość StopLoss i TakeProfit możemy określić podczas otwierania nowego zlecenia, ale muszą być większe niż dopuszczalna przez brokera minimalna wartość stopów (stop level), którą możemy odczytać korzystając z funkcji MarketInfo() parametr MODE_STOPLEVEL. W przypadku ustawienia nieprawidłowych, najczęściej za bliskich poziomów stop otrzymamy błąd o kodzie 130 (ERR_INVALID_STOPS). 46

Jeśli otwieramy zlecenia oczekujące cena otwarcia nie może być ceną rynkową Ask lub Bid. Minimalny poziom odstępu od aktualnej ceny dla zleceń oczekujących określony przez brokera możemy odczytać za pomocą funkcji MarketInfo() parameter MODE_STOPLEVEL. W przypadku ustawienia nie prawidłowych cen oczekujących otrzymamy błąd o kodzie 130. Broker może zablokować zlecenia oczekujące wówczas przy próbie wywołania takiego zlecenie otrzymamy błąd o kodzie 147 (ERR_TRADE_EXPIRATION_DENIED). Może też zostać nałożone ograniczenie na maksymalna ilość zleceń otwartych i oczekujących wówczas zostanie wygenerowany błąd o kodzie 148 (ERR_TRADE_TOO_MANY_ORDERS). 47

OrderClose - Funkcja zamyka otwartą pozycje transakcyjną. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Składnia bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE ) Parametry ticket identyfikator zlecenia lots wielkość zamykanej pozycji w lotach price preferowana cena zamknięcia slippage maksymalna wielkość odchylenia ceny kwotowanej od ceny zamknięcia color kolor strzałki symbolizującej zamknięcie pozycji lub wartość domyślna CLR_NONE brak koloru Wartość zwracana true jeśli zamknięcie pozycji powiodło się false jeśli zamknięcie pozycji nie powiodło się Przykład: if( irsi(null,0,14,price_close,0) > 80 ) { OrderClose( numer_zlecenia,1,ask,3,red); return(0); 48

MarketInfo - Funkcja zwraca informacje na temat danego instrumentu, którego pierwszym parametrem jest symbol instrumentu. Drugi parametr to predefiniowana zmienna określająca jakie informacje będą zwracane przez funkcję (zobacz opis w punkcie stałe identyfikatory funkcji MarketInfo). Składnia: double MarketInfo( string symbol, int type) Parametry symbol nazwa symbolu type - identyfikator zmiennej określającej informacje, które będą zwracane Wartość zwracana Wartość zależna od identyfikatora type Przykłady double bid = MarketInfo(EURUSD, MODE_BID); double ask = MarketInfo(Symbol(), MODE_ASK); double point = MarketInfo(EURUSD, MODE_POINT); int digits = MarketInfo(EURUSD, MODE_DIGITS); int spread = MarketInfo(EURUSD, MODE_SPREAD); 49

OrderSelect Funkcja wybiera i zaznacza jako aktualną pozycję do dalszego użycia przez inne funkcje operacji handlowych. Jest to podstawowa funkcja, którą musimy użyć za każdym razem, gdy chcemy pobrać informacje z terminala o aktualnie otwartych, oczekujących lub historycznych pozycjach. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Pozycje mogą być wybierane na podstawie niepowtarzalnego identyfikatora zlecenia, wówczas parametr select przyjmuje wartość SELECT_BY_TICKET lub poprzez indeks pozycji wówczas parametr select przyjmuje wartość SELECT_BY_POS. Pozycje mogę być wybierane z aktualnie otwartych lub historycznych co ustalamy parametrem pool, który przyjmuje wartość MODE_TRADES lub MODE_HISTORY. 50

Składnia bool OrderSelect( int index, int select, int pool=mode_trades ) Parametry index identyfikator zlecenia zależny od drugiego parametru select select parametr oznaczający typ zaznaczanego indeksu: SELECT_BY_POS identyfikator indeksu pozycji SELECT_BY_TICKET identyfikator zlecenia pool stosowany tylko w trybie SELECT_BY_POS, może przyjmować poniższe wartości: MODE_TRADES (default) wybierane są zlecenia z otwarte i oczekujące MODE_HISTORY wybierane są zlecenia zamknięte z historii rachunku Wartość zwracana true jeśli funkcja zakończona powodzeniem false jeśli funkcja zakończona niepowodzeniem Przykład: if(orderselect(124, SELECT_BY_TICKET)==true) { Print("Cena otwarcia zlecenie #124 ", OrderOpenPrice()); Print("Cena zamknięcia zlecenia #124 ", OrderClosePrice()); else Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 51

OrderSymbol - Funkcja zwraca ciąg znaków, który reprezentuje nazwę symbolu instrumentu finansowego dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia string OrderSymbol() Parametry: brak Wartość zwracana nazwa symbolu rynku Przykład: if(orderselect(124, SELECT_BY_POS)==true) { Print("Symbol rynku dla zlecenia #124 ", OrderSymbol()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 52

OrderTicket - Funkcja zwraca numer zlecenia dla aktualnie wybranego zlecenia. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana numer identyfikacyjny zlecenia int OrderTicket() Przykład: if( OrderSelect(124, SELECT_BY_TICKET)==true ) { Print("Czas wygaśnięcia zlecenia #124 to ",TimeToStr(OrderExpiration())); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 53

OrderType - Funkcja z wraca typ zlecenia dla aktualnie wybranego zlecenia. Zwracana wartość odpowiada dostępnym w terminalu typom zleceń, które zamieszczone zostały poniżej. Stała wartość opis OP_BUY 0 pozycja kupna OP_SELL 1 pozycja sprzedaży OP_BUYLIMIT 2 pozycja oczekującą kupna po spadku do podanej ceny OP_SELLLIMIT 3 pozycja oczekującą sprzedaży po wzroście do podanej ceny OP_BUYSTOP 4 pozycja oczekującą kupna po wzroście do podanej ceny OP_SELLSTOP 5 pozycja oczekującą sprzedaży po spadku do podanej ceny Składnia Wartość zwracana typ zlecenia int OrderType() Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). 54

Przykład: int order_type; if(orderselect(124, SELECT_BY_POS)==true) { Print( "Typ zlecenia dla pozycji #124 ", OrderType() ); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 55

OrderLots - Funkcja zwraca wielkość, wolumen aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana wielkość pozycji w lotach double OrderLots() Przykład: if( OrderSelect(124,SELECT_BY_POS)==true ) { Print("wielkość pozycji #124 ",OrderLots()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 56

OrdersTotal - Funkcja z liczbą aktualnie otwartych pozycji wraz ze zleceniami oczekującymi. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Składnia: int OrdersTotal() Parametry: brak Wartość zwracana liczba aktualnie otwartych pozycji Przykład: int wszystkie_zlecenia = OrdersTotal(); for(int p=0;p<wszystkie_zlecenia;p++) { if(orderselect(p,select_by_pos)==false) continue; Print(OrderTicket(),,OrderSymbol(),,OrderOpenPrice()); 57

OrderDelete - Funkcja usuwa wcześniej otwarte zlecenie oczekujące. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Składnia bool OrderDelete( int ticket, color Color=CLR_NONE) Parametry ticket numer zlecenia color kolor strzałki na wykresie oznaczającej usunięcie zlecenia lub wartość domyślna CLR_NONE czyli brak koloru Wartość zwracana true jeśli funkcja zakończona powodzeniem false jeśli funkcja zakończona niepowodzeniem Przykład: if( Ask > 1.5239) { OrderDelete( numer_zlecenia ); return(0); 58

OrderModify - Funkcja modyfikuje wcześniej otwartą pozycję lub zlecenie oczekujące. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Cena otwarcia oraz czas wygaśnięcia może być modyfikowany tylko dla zleceń oczekujących. Składnia bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration,color arrow_color=clr_none) Parametry ticket identyfikator zlecenia price cena otwarcia tylko dla zleceń oczekujących stoploss nowy poziom StopLoss takeprofit nowy poziom TakeProfit expiration czas wygaśnięcia zlecenia oczekującego arrow_color color strzałek dla poziomów StopLoss/TakeProfit lub wartość domyślna CLR_NONE czyli brak koloru Wartość zwracana true jeśli funkcja, modyfikacja zlecenie zakończona powodzeniem false jeśli funkcja, modyfikacja zlecenie zakończona niepowodzeniem 59

Przykład: if( TrailingStop > 0 ) { OrderSelect(124,SELECT_BY_TICKET); if(bid-orderopenprice() > Point*TrailingStop) { if( OrderStopLoss() < Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop, OrderTakeProfit(), 0, Blue); return(0); 60

OrderProfit - Funkcja zwraca aktualny zysk/stratę otwartej i aktualnie zaznaczonej pozycji (bez swap i prowizji). W otwartej pozycji, jest uzwzględniony niezrealizowany zysk. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia double OrderProfit() Parametry: brak Wartość zwracana zysk/strata z aktualnie otwartych pozycji (bez swap i prowizji) Przykład: if( OrderSelect(10, SELECT_BY_POS) == true ) { Print("Zysk/strata z pozycji #124 ",OrderProfit()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 61

OrderCloseBy - Funkcja zamyka zlecenia przeciwstawne. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Składnia bool OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE) Parametry ticket identyfikator zlecenia opposite identyfikator zlecenia przeciwstawnego color kolor strzałki symbolizującej zamknięcie pozycji lub wartość domyślna CLR_NONE brak koloru Przykład: if( irsi(null,0,14,price_close,0) > 80 ) { OrderCloseBy(numer_zlecenia,numer_zlecenia_przeciwstawnego); return(0); 62

OrderStopLoss - Funkcja zwraca wartość StopLoss dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana wartość StopLoss double OrderStopLoss() Przykład: if(orderselect(ticket,select_by_pos)==true) { Print("StopLoss dla pozycji #124 ", OrderStopLoss()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 63

OrderTakeProfit - Funkcja zwraca wartość TakeProfit dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana wartość TakeProfit double OrderTakeProfit() Przykład: if(orderselect(124, SELECT_BY_POS)==true) { Print("TakeProfit dla pozycji #124 ", OrderTakeProfit()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 64

OrderSwap - Funkcja zwraca wartość Swap dla aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana wielkość pozycji Swapowych double OrderSwap() Przykład: if(orderselect(124, SELECT_BY_TICKET)==true) { Print("Naliczone punkty swap dla pozycji #124 ",OrderSwap()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 65

OrderOpenPrice - Funkcja zwraca wartość ceny otwarcia pozycji dla aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Uwaga: aby korzystać z tej funkcji konieczne jest wcześniejsze zaznaczenie zlecenia za pomocą funkcji OrderSelect(). Składnia Parametry: brak Wartość zwracana cena otwarcia zlecenia double OrderOpenPrice() Przykład: if(orderselect(124, SELECT_BY_POS)==true) { Print("Cena otwarcia zlecenia #124 ",OrderOpenPrice()); else { Print("Błąd wykonania funkcji OrderSelect ",GetLastError()); 66

Funkcje informacyjne konta W języku MQL4 dostępnych jest szereg funkcji pozwalających na sprawdzenie stanu konta klienta. Funkcje informacyjne zostały opisane poniżej w kolejnych podpunktach. AccountBalance funkcja zwraca wartość stanu konta wszystkich zamkniętych pozycji w walucie bazowej konta klienta. Przykład: Print( "Stan konta =" AccountBalance() ); AccountCredit funkcja zwraca wartość kredytu (zadłużenia) klienta w stosunku do brokera w walucie bazowej konta. AccountCurrency funkcja podaje walutę rachunku bieżącego klienta. AccountEquity funkcja zwraca wartość rachunku obrotów bieżących. Podaje w walucie rachunku bieżącego wartość aktualnego stanu konta (balans) powiększoną/pomniejszoną o wartość aktualnie otwartych pozycji. AccountFreeMargin funkcja podaje wartość dostępnych środków w walucie konta bieżącego, które są dostępne do otwierania nowych pozycji. 67

AccountFreeMarginCheck funkcja zwraca informację na temat możliwości otworzenie określonej wielkości pozycji podawanej jako parametr. Jeśli brak wolnych środków na nowe pozycje to generowany jest błąd nr 134 (ERR_NOT_ENOUGH_MONEY). Przykład: if ( AccountFreeMarginCheck( Symbol(), OP_BUY, 10) <= 0 GetLastError() == 134) Print( "Brak wolnych środków do otwarcia pozycji 10 lotów" ); AccountLeverage funkcja zwraca wartość dźwignię finansowej na danym koncie., "dźwignia finansowa", AccountLeverage ()); AccountMargin funkcja zwraca wartość aktualnie wykorzystywanego marginesu na wszystkie otwarte pozycje w bieżącej walucie konta. AccountProfit funkcja zwraca zysk na rachunku zalogowanego klienta w walucie bieżącego rachunku. AccountStopoutLevel funkcja zwraca wartość minimalnego stanu konta klienta, przy którym pozycje będą automatycznie zamykane. 68

Funkcje wskaźników analizy technicznej Średnia ruchoma Składnia: double ima( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift ) Parametry symbol symbol rynku lub NULL dla aktualnego symbolu z wykresu timeframe skala czasowa danych lub 0 dla aktualnej skali czasowej z wykresu symbolu period ilość słupków dla średniej ma_shift przesunięcie linii wskaźnika w stosunku do wykresu głównego ma_method typ liczonej średniej: MODE_SMA - średnia prosta MODE_EMA - średnia exponencjalnie ważona MODE_SMMA - średnia wygładzana MODE_LWMA - średnia ważona applied_price wskazanie na której wartości ceny mają być dokonywane 69

obliczenia: PRICE_CLOSE - cena zamknięcia PRICE_OPEN - cena otwarcia PRICE_HIGH - cena najwyższa PRICE_LOW - cena najniższa PRICE_MEDIAN - cena średnia liczona następująco (high+low)/2 PRICE_TYPICAL - cena średnia liczona następująco (high+low+close)/3 PRICE_WEIGHTED - cena średnia liczona następująco (high+low+close+close)/4 shift przesunięcie względem aktualnego numeru słupka Wartość zwracana wynik obliczeń wskaźnika na danym słupku Przykład: double Srednia_krotka = ima(null,0,5,0,mode_sma,price_close,1); double Srednia_dluga = ima(null,0,18,0,mode_sma,price_close,1); 70

71

Wskaźnik RSI (Relative Strength Index - Indeks siły względnej) Składnia: double irsi( string symbol, int timeframe, int period, int applied_price, int shift) Parametry symbol symbol rynku lub NULL dla aktualnego symbolu z wykresu timeframe skala czasowa danych lub 0 dla aktualnej skali czasowej z wykresu symbolu period ilość słupków dla średniej applied_price wskazanie na której wartości ceny mają być dokonywane obliczenia: PRICE_CLOSE - cena zamknięcia PRICE_OPEN - cena otwarcia PRICE_HIGH - cena najwyższa PRICE_LOW - cena najniższa PRICE_MEDIAN - cena średnia liczona następująco (high+low)/2 PRICE_TYPICAL - cena średnia liczona nastęująco (high+low+close)/3 PRICE_WEIGHTED - cena średnia liczona następująco (high+low+close+close)/4 shift przesunięcie względem aktualnego numeru słupka Wartość zwracana wynik obliczeń wskaźnika na danym słupku Przykład: if( irsi(null,0,14,price_close,0) > irsi(null,0,14,price_close,1) ) return(0); 72

Wskaźnik porównuje ruchy zwyżkujące i zniżkujące cen zamknięcia w danym okresie czasu. Twórca wskaźnika sugeruje okres czternastodniowy jako optimum, jednakże spotyka się okresy siedmio- i dziewięciodniowe dla analiz krótkoterminowych oraz okresy dwudziestojedno- i dwudziestopięciodniowe dla analiz długoterminowych. Wartości wskaźnika są prezentowane na wykresie w skali od 0 do 100. 73

74

Wskaźnika Bollingera Bands Składnia: double ibands( string symbol, int timeframe, int period, int deviation, int bands_shift, int applied_price, int mode, int shift) Parametry symbol symbol rynku lub NULL dla aktualnego symbolu z wykresu timeframe skala czasowa danych lub 0 dla aktualnej skali czasowej z wykresu symbolu period ilość słupków dla średniej deviation odchylenie od głównej linii wskaźnika bands_shift przesunięcie względne od liczonych wartości wykresu applied_price wskazanie na której wartości ceny mają być dokonywane 75

obliczenia: PRICE_CLOSE - cena zamknięcia PRICE_OPEN - cena otwarcia PRICE_HIGH - cena najwyższa PRICE_LOW - cena najniższa PRICE_MEDIAN - cena średnia liczona następująco (high+low)/2 PRICE_TYPICAL - cena średnia liczona nastęująco (high+low+close)/3 PRICE_WEIGHTED - cena średnia liczona następująco (high+low+close+close)/4 mode typ liczonej wartości wskaźnika: MODE_UPPER - górna linia MODE_LOWER - dolna linia shift przesunięcie względem aktualnego numeru słupka Wartość zwracana wynik obliczeń wskaźnika na danym słupku Przykład: if( ibands(null,0,20,2,0,price_low,mode_lower,0) > Low[0] ) return(0) 76

Wstęga Bollingera (Bollinger Bands) jest wskaźnikiem zmienności cen i wyznacza obszar, w którym powinna utrzymywać się cena instrumentu. Esencją analizy wykresu na podstawie tego wskaźnika jest założenie, że dla kursu pozostającego w trendzie horyzontalnym wykres powinien oscylować pomiędzy dwoma wstęgami Bollingera: górną i dolną. Wyjście linii kursu poza ten obszar (ewentualnie zbliżenie się do ramienia wstęgi) oznacza sygnał krótkotrwałego odwrócenia tendencji w dłuższym trendzie horyzontalnym. 77

78

Wskaźnik Momentum Składnia: double imomentum( string symbol, int timeframe, int period, int applied_price, int shift) Parametry symbol symbol rynku lub NULL dla aktualnego symbolu z wykresu timeframe skala czasowa danych lub 0 dla aktualnej skali czasowej z wykresu symbolu period ilość słupków do wyznaczenia zmienności ceny applied_price wskazanie na której wartości ceny mają być dokonywane obliczenia: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED shift przesunięcie względem aktualnego numeru słupka Wartość zwracana wynik obliczeń wskaźnika na danym słupku Przykład: if(imomentum(null,0,12,price_close,0) > imomentum(null,0,20,price_close,0)) 79

Wskaźnik Momentum jest podstawowym wskaźnikiem impetu kursu, prezentuje wielkość zmiany ceny danego instrumentu w określonym przedziale czasowym pod postacią współczynnika. Wskaźnik Momentum analizuje się w oparciu o linię Signal lub przecięcie poziomu zerowego. W przypadku pierwszej interpretacji, sygnał kupna (K) zostaje wygenerowany, gdy wskaźnik przebija od dołu niemalejącą linię Signal, zaś sygnał sprzedaży (S) zostaje wygenerowany, gdy wskaźnik przebija od góry nierosnącą linię Signal. Przy drugim sposobie analizy do generowania sygnałów K/S zostają wykorzystane momenty przecięcia poziomu zerowego. 80