7. MQL4 - Funkce pro obchodování

Napsal:   Sekce: MQL4

V tomto díle si představíme poslední oblast jazyka MQL4 tak, abychom byli schopni napsat svoji vlastni strategii pro automatizované obchodování a tím jsou funkce pro práci s pokyny.

Předchozí díl

Blížíme se k finále o jazyku MQL4 v automatizovaných systémech. Jednotlivé díly, kterými jste si prošli, si postupně slepíme. Některé díly nebyly tak záživné, ale měly svůj smysl. Od základů jazyka přes vzhled editoru jste zjistili, jak získat informace z grafu, dozvěděli jste se, že existují metody pro práci s indikátory a nyní je čas se naučit metody, které komunikují s brokerem a umějí pracovat s jednotlivými pokyny.

Přesně to, co jste zvyklí dělat manuálně (otevírat pokyn, upravovat stop-lossy, zavírat pokyny), to vše můžete dělat automaticky. Je třeba jen správně rozhodnout kdy.

Úplný výpis funkcí pro obchodování naleznete v referenční dokumentaci v sekci Trading functions.

 

OrderSend()

Funkce pro otevření pokynu nebo pro zadání čekajícího pokynu. Funkce vrací identifikátor pokynu, se kterým se později pracuje.

Definice funkce je:

int OrderSend(string symbol, int cmd, double volume, double price, 
int slippage, double stoploss, double takeprofit, string comment,
int magic, datetime expiration, color arrow_color)

Parametr symbol je identifikátor měnového páru

Parametr cmd je typ operace

  •  OP_BUY = okamžitý nákup
  •  OP_SELL = okamžitý prodej
  •  OP_BUYLIMIT = čekající nákup, který se aktivuje, jakmile cena klesne k zadané hranici
  •  OP_SELLLIMIT = čekající prodej, který se aktivuje, jakmile cena stoupne k zadané hranici
  •  OP_BUYSTOP = čekající nákup, který se aktivuje, jakmile cena stoupne k zadané hranici
  •  OP_SELLSTOP = čekající nákup, který se aktivuje, jakmile cena klesne k zadané hranici

Parametr volume je počet lotů, které chcete obchodovat

Parametr price je preferovaná cena pro obchodování u čekajících pokynů

Parametr slippage je maximální odchylka ceny při zadávání pokynu

Parametr stoploss je cena určující hladinu zastavení ztrát

Parametr takeprofit je cena určující hladinu pro realizování zisku

Parametr comment je komentář k pokynu

Parametr magic je obchodníkova vlastní číselná značka

Parametr expiration je datum vypršení platnosti pokynu (platí pouze pro čekající pokyny)

Parametr arrow_color je barva značky otevření pokynu, která se zobrazuje v grafu

Př.: Chceme otevřít pokyn pro nákup aktuálního měnového páru v hodnotě 0.5 lotu a zastavení ztrát chceme nastavit na 30pips.

int ticketId = OrderSend(Symbol(), OP_BUY, 0.5, Ask, 0, Ask – 30 * Point, 0, 
NULL, 0, 0, CLR_NONE);

V prvním parametru jsme pomocí funkce Symbol() řekli, jaký měnový pár chceme obchodovat. Dále jsme pomocí typu operace OP_BUY určili, že chceme nakupovat. Poté určili 0.5 lotu coby výši obchodu, dále nastavili preferovanou cenu nákupu pomocí Ask (zde tento parametr server využívá pro čekající pokyny, přesto je třeba ji vyplnit, ikdyž čekající pokyn nezadáváme). V dalším parametru jsme nastavili nulovou odchylku na 0. Pak jsme určili výši SL. Jelikož známe počet pipsů, musíme vypočítat cenu SL. Víme že proměnná Point vrací hodnotu bodu a Ask vrací aktuální nabídku. Tím pomocí vzorce Ask – Pips * Point vypočítáme cenu SL. Cenu pro realizování zisku (TP) nechceme a proto nastavujeme na 0. Přesto, kdybychom chtěli cenu stanovit, vzorec by byl: Ask + Pips * Point. Další parametr reprezentující komentář pokynu nenastavujeme, proto NULL, naši značku (magic) také nevyplňujeme, proto 0 a datum expirace se týká pouze čekacích pokynů, proto také 0. Poslední parametr je již barva značky a tu necháme na systému, proto konstanta CLR_NONE.

Někdy se může stát, že se pokyn neotevře kvůli nějaké chybě, např. že se nepodařilo spojit se serverem, nebo že se cena mezitím změnila, nebo že cena SL či TP je příliš malá, než měnový pár povoluje. Pokud se tak stane, tak ID pokynu je -1. Hodnotu chyby pak lze získat pomocí funkce GetLastError(). Hodnoty chyb najdete v referenční příručce v sekci Standard constants / Error codes nebo v sekci Trading functions / Execution errors. Chyby se vypisují do logového souboru, který najdete v adresáři, kde máte nainstalovaný MetaTraders ve složce experts\logs.

 

OrderClose()

Funkce pro zavření pokynu. Pokud nám otevřený pokyn nezavře SL, TP nebo broker, tak jej můžeme zavřít sami. Funkce vrací True nebo False, pokud se operace zavření povede nebo nepovede. Nepovést se může, protože pokyn již neexistuje, byl již zavřen nebo zavření selhalo. Stejně jako u OrderSend() je možné pomocí GetLastError() zjistit číslo chyby a pak v sezamu chyb zjistit, proč se pokyn nepodařilo zavřít.

Definice funkce je:

bool OrderClose(int ticket, double lots, double price, int slippage, color Color)

Parametr ticket je ID pokynu, který chceme zavřít

Parametr lots je počet lotů, které chceme v daném pokynu zavřít

Parametr price je preferovaná zavírací cena

Parametr slippage je maximální odchylka ceny

Parametr Color je barva značky zavření pokynu, která se zobrazuje v grafu

Př.: Zavření pokynu s 0.5 loty, kde ID pokynu máme uložený v pomocné proměnné ticketId.

bool isOK = OrderClose(ticketId, 0.5, Ask, 0, CLR_NONE);

V prvním parametru předáváme ID pokynu, který chceme zavřít. Ve druhém počet lotů, ve třetím musíme vyplnit preferovanou cenu, ač ji server ve skutečnosti ignoruje, tak funkci předáme např. aktuální nabídku pomocí Ask. Odchylku nenastavujeme, proto 0 a barvu značky necháváme na systému, proto CLR_NONE.

 

OrderModify()

Tato funkce upravuje vlastnosti otevřeného nebo čekajícího pokynu, např. novou cenu SL, TP či datum expirace pro čekající pokyny. Pokud úprava proběhne v pořádku, funkce vrací True, jinak False.

Definice funkce je:

OrderModify(int ticket, double price, double stoploss, double takeprofit, 
datetime expiration, color arrow_color)

Parametr ticket je identifikátor pokynu, který chceme upravit

Parametr price je nová cena pro čekající pokyny

Parametr stoploss je cena zastavení ztrát (SL)

Parametr takeprofit je cena realizování zisku (TP)

Parametr expiration je datum vypršení platnosti čekajícího pokynu

Parametr arrow_color je barva značky SL / TP, která se v grafu zobrazuje

Př.: Potřebujeme upravit cenu SL pro existující otevřený pokyn typu BUY. ID pokynu máme uložené v pomocné proměnné ticketId.

bool isOK = OrderModify(ticketId, OrderPrice(), Ask – Point * 20, 
OrderTakeProfit(), 0, CLR_NONE);

V prvním parametru předáváme ID pokynu, který chceme upravit. Ve druhém nastavujeme preferovanou cenu. Zde trochu předbíhám a použil jsem funkci OrderPrice(), která zjistí tuto cenu z daného pokynu, ale více se dozvíte později. Ve třetím parametru pomocí vzorce upravíme novou cenu SL. V dalším parametru pomocí funkce OrderTakeProfit() předáme cenu realizování zisku, která je nastavena v daném pokynu, více se opět dozvíte v následujících funkcí. V posledních parametrech již jen nastavíme 0 pro datum expirace a barvu značky pro SL/TP necháme na systému.

 

OrderSelect()

Tato funkce najde pokyn dle ID nebo dle pořadí a provede vybrání tohoto pokynu. Vybrání pokynu slouží pro další funkce zpracovávající informace o pokynu, které nespecifikují pokyn dle ID, ale jsou odkázané právě na služby této funkce.

Definice funkce je:

bool OrderSelect(int index, int select, int pool)

Parametr index je buď ID pokynu nebo číslo pořadí pokynu. Pořadí je pak závislé na třetím parametru

Parametr select specifikuje, podle čeho se pokyn vybírá

  •  SELECT_BY_POS = vybírá se pokyn dle pořadí a index tak stanoví číslo pořadí
  •  SELECT_BY_TICKET = vybírá se dle ID pokynu

Parametr pool určuje typ pro výběr pokynu dle pořadí. Tento parametr se bere v úvahu pouze, pokud je parametr select nastaven na SELECT_BY_POS

  •  MODE_TRADES = vybírá dle pořadí pokyny z tabulky otevřené nebo čekající pokyn
  •  MODE_HISTORY = vybírá dle pořadí pokyny z tabulky zavřené (ukončené) pokyny

 

Př.: Potřebujeme vybrat pokyn dle ID, které máme uložené v pomocné proměnné ticketId.

bool isSelected = OrderSelect(ticketId, SELECT_BY_TICKET);

V prvním parametru říkáme ID pokynu, který chceme vybrat a v druhém specifikujeme, že se jedná o výběr dle ID a ne dle pořadí. Třetí parametr nevyplňujeme, protože se používá pouze pro druhý typ výběru.

 

Ostatní funkce

Následující výčet několika funkcí, které pracují v součinnosti s funkcí OrderSelect().

OrderOpenPrice() – zjišťuje, jaká je otevírací cena pokynu, za kterou byl pokyn vytvořen

OrderClosePrice() – zjišťuje, jaká je zavírací cena pokynu. Může vrátit 0, pokud pokyn je ještě aktivní a nebyl ukončen.

OrderOpenTime() – zjišťuje čas otevření pokynu

OrderCloseTime() – zjišťuje čas zavření pokynu. Touto funkcí lze tak ověřit, zda pokyn je ještě otevřen. Pokud vrací 0, pokyn nebyl ještě zavřen.

OrderLots() – zjišťuje, s kolika loty pokyn obchoduje

OrderStopLoss() – zjišťuje, jaká je cena SL

OrderTakeProfit() – zjišťuje, jaká je cena TP

OrderType() – zjišťuje typ pokynu. Vrací číslo operace, viz. parametr cmd funkce OrderSend().

Př.: Známe ID otevřeného pokynu a chceme zjistit, zda je pokyn ještě otevřen, nebo je již zavřen (např. byl zavřen kvůli SL).           

int ticketId = 12345;
if(OrderSelect(ticketId, SELECT_BY_TICKET))
{
      if(OrderCloseTime() > 0)
{
            // pokyn je již zavřen
}
else
{
            // pokyn není zavřen
}
}
else
{
       // chyba při výběru pokynu, do logu vypíšeme chybovou zprávu
      Print("Chyba při vybírání pokynu, chyba č: ", GetLastError());
}

 

Tím jsme si představili základní funkce pro obchodování. Z předchozích dílů jsme nyní schopni napsat vlastní strategii. Než se k tomu dostaneme, je třeba strategii otestovat. Testování strategie si představíme v dalším díle.

Hodnocení článku:
Sdílení článku:
Facebook

Čtěte více

  • 2. MQL4 - Vzhled editoru MetaQuotes
    V tomto díle se v rychlosti seznámíme se vzhledem editoru jazyka MQL4 a s jeho základními možnostmi.
  • 2. týden prvního kola investiční soutěže
    Máme za sebou 2. týden prvního kola investiční soutěže, která probíhá na tzv. “demo“ fiktivních účtech. Každý soutěžící odstartoval hru se stejným počátečním kapitálem 30 000 Kč.
  • 20 vytrvalých
    Jsem day-trader na EUR/USD. Forex obchoduji 5 let.
  • 2004-2015: 11 let obchodování a stále v zisku. Jaké je tajemství?
    Přemýšleli jste někdy nad tím, jak dlouho budete chtít trading provozovat? A jak to udělat, abyste byli i za pár let stále ve hře? Jaký časový horizont uvažujete? Pět, možná deset let? A mít vlastní klienty? Kolik myslíte, že by vám takový trading zabral času? A jak jej vybudovat? Řešení už existují a nemusíte je hledat. Trader a zubař, Julius H. je na burze od roku 2004. Prošlapal cestu a zjistil, jak být na trhu po desetiletí úspěšný. Když jsem se s ním potkal, tušil jsem, že je přede mnou výjimečný rozhovor s výjimečným člověkem. A bylo to více než správné tušení.
  • 20ti minutový perfektní den dle R. Horner
    Článek od Raghee Horner - 20ti minutový perfektní den...
  • 3. MQL4 - Ještě, než začneme kódovat
    Řízení motorového vozidal je vždy záživnější, než studování předpisů. Stejně tak je to v programování. Samotné kódování není tak nudné, jako čtení referenčních manuálů, ale bez základních znalostí se programovat ani nedá začít. V tomto díle se podíváme trochu do struktury jazyka MQL4.
  • 4. MQL4 - Můj první skript
    V této kapitole si zkusíme společně vytvořit první velice jednoduchý skript. Ukážeme si tak, jak se skript zakládá, seznámíme se s prvními funkcemi a nasadíme skript do platformy MetaTraderu.
  • 5 nejsilnějších emocí tradera
    Psychologie obchodování je nedílnou součástí každého z nás. Trhy jsou jakýmsi živým organismem, u kterého se snažíme racionálním přístupem zanalyzovat jeho vývoj, což vytváří rozpor mezi očekáváním a konečným výsledkem.
  • 5. MQL4 - Předdefinované proměnné
    V této kapitole se trochu ponoříme do jazyka MQL4 a představíme si základní proměnné, pomocí kterých můžeme zjišťovat informace o cenách.
  • 6. MQL4 - Technické indikátory
    V tomto díle se podíváme funkce, které vracejí data jednotlivých indikátorů.
  • 8 pips
    Dnes mi dorazila zpráva od mého dobrého přítele. Napsal mi v ní: "Tak dneska jsem vydělal jen 8 pips". Trh EUR/USD se dnes do této chvíle pohyboval v rozmezí High a Low asi 80 pips. Nabízí se zde otázka: Je 8 pips profitu za jeden den skutečně tak málo?
  • 8. MQL4 - Tester strategií
    V tomto díle se v rychlosti seznámíme s testerem strategií, který nám pak poslouží k testování a ladění naší strategie.
  • 9. MQL4 - Moje první strategie (1/2)
    V tomto díle si společně napíšeme vlastní strategii. Začneme nejprve vytvořením knihovny s pomocnými funkcemi pro obchodování.
  • A co takhle EURo?
  • A jsme tam, kde jsme byli před 10 lety
    Shoda u představitelů americké centrální banky (Fed) na rychlejším zvyšování úrokových sazeb trhy překvapila, protože poslední roky Fed hrál spíše holubičí kartu a odsouval utahování měnové politiky dál do budoucna. Poslední data z amerického trhu práce sice Fed zase trochu zbrzdila, jeho optimismus ukazující na rychlejší americkou ekonomiku, která si vyšší sazby zaslouží, však můžeme potvrdit.
  • AOS vs vlastní obchodování
    Stále více se setkávám s lidmi, kteří chtějí pro své obchodování používat AOS.
  • AOS - budúcnosť tradera
    Budúcnosť obchodníka, nevidím reálne, bez pomocníka AOS.
  • AOS a obchodné stratégie
    Základným stavebným kameňom obchodníka by mala byť jeho obchodná stratégia. Veľká väčšina obchodníkov – začiatočníkov, si nevie svoju obchodnú stratégiu nájsť, navrhnúť, otestovať a tak to častokrát končí zhlukom indikátorov či trendových čiar, ktoré viac či menej fungujú. No dlhodobá udržateľnosť a ziskovosť je minimálna. Preto sa v tomto článku pozrieme viac na to prečo mať obchodnú stratégiu ako ju možno naprogramovať, backtestovať a dostať až do podoby AOS – automatizovaného obchodného systému.
  • AOS strategie EURJPY H1-1
    Dnes se podíváme na první AOS obchodovanou na reálném účtu. Jde o měnový pár EURJPY a timeframe H1. Tato strategie využívá indikátory Stochastic a Bolinger Bands. Její zisk na 0,1 lotu je v průměru 923 USD ročně.
  • ART OF TRYING
    The art of trying. Poprvé jsem se s touto myšlenkou setkal v knize Paula Coelha – Like the River Flowing (česky: Jako řeka, jež plyne). The art of trying. Umění stále to zkoušet. Zkoušet to do té doby, než se to povede, než to bude úspěch. Zamýšlím se: kde bych vlastně teď byl, kdybych tohle v sobě neměl? Kde jsou vlastně teď ti, kdo tohle v sobě mají a ti, kdo tohle v sobě nemají?
  •  


    Diskuse ke článku

    Diskuse je přístupná pouze pro registrované uživatele.
    Přihlásit se | Nová registrace

avatar

Autor:

Geafer

Hodnocení autora:
Bližší informace o autorovi >>

Kategorie blogu

reklama
DEGIRO banner

Kurzy obchodování

Zář
23

Jak vytvářet ziskové AOS a testovat obchodní strategie

Představujeme vám exkluzivní seminář se zástupci profesionálního vývojářského týmu, působícího ve společnosti FXstreet.cz. Hlavní náplní budou základy tvorby automatických obchodních systémů (AOS) pro platformu MetaTrader 4 včetně praktických ukázek. Naučíte se také správně backtestovat ziskovost AOS. Navíc si sami v průběhu semináře vytvoříte svůj první ziskový AOS.

říj
14

Profesionálem na forexu - kurz pro pokročilé tradery (Praha)

Seminář Profesionálem na forexu je určený pro absolventy kurzu Juniorská škola tradingu a pro pokročilé forexové tradery. Naučíme vás naše ziskové intradenní a swingové obchodní strategie a posuneme vás k vyšším ziskům. Jedná se o jeden z nejlépe hodnocených seminářů FXstreet.cz a věnujeme se na něm hlavně korelačním strategiím a intermarket analýze. Sleva: Absolventi semináře Juniorská škola tradingu mají tento seminář za 4 400,-Kč.


říj
28

Exkluzivní VIP seminář: Obchodujte jako bankovní trader!

Představujeme vám exkluzivní seminář, který účastníky semináře posouvá mezi tradingovou elitu. V průběhu semináře se dozvíte veřejně nedostupné informace o tom, jak ve skutečnosti funguje forex, pravdu o retailových brokerech a další veřejně nedostupné informace z obchodování bank a tradingu na institucionální úrovni.

Lis
4

Juniorská škola tradingu - Forex I-II (Brno)

Juniorská škola tradingu - Forex I-II je určena pro začínající tradery. Pokud chcete vyzkoušet něco nového, vymanit se z davu a být úspěšný v obchodování na finančních trzích, tak je tento seminář určen právě vám.

Lis
25

Praktický workshop technické analýzy + profi obchodní systémy na FOREXu

FXstreet.cz představuje unikátní seminář s hostem - Patrikem Urbanem, který působil jako profesionální trader na Wall Streetu. Praktické použití technické analýzy, Price Action a obchodní systémy ziskových traderů. Kromě Patrika Urbana na semináři jako host vystoupí také full-time trader Jakub Hodan.

Literatura

titulka_smallsize.jpg

Novinka! Kniha "Jak se stát forexovým obchodníkem" Ondřeje Hartmana vychází ve druhém a výrazně rozšířeném vydání!

Kniha vychází již ve druhém, ale tentokrát výrazně upraveném a rozšířeném vydání. Kniha je koncipována tak, aby byla užitečným průvodcem jak začínajícím obchodníkům bez zkušeností, tak i těm, kdo na forexu již obchodují a potřebují si prohloubit své znalosti.

Day_Trading_obalka_78x110.jpg

Kniha "FOREX – Ziskové intradenní a swingové obchodní strategie" od Kathy Lien vychází v češtině!

Je nám velikou ctí, že můžeme obohatit český a slovenský forexový trh světově uznávanou knihou číslo 1 pro každého, kdo chce do hloubky pochopit fungování největšího světového finančního trhu.

zaciname na burze 03112013.jpg

Začínáme na burze - Jak uspět při obchodování na finančních trzích

Chcete dosáhnout úspěchu při obchodování na finančních trzích? Už jste to zkoušeli a stále se vám moc nedaří? Nevyznáte se v příliš odborných analýzách na finančních serverech? Všem začínajícím investorům přichází na pomoc nová kniha od zkušeného autora – Začínáme na burze.

Forex - doporučené články:

Co je FOREX?
Základní informace o finančním trhu FOREX. Forex je obchodování s cizími měnami (forex trading) a je zároveň největším a také nejlikvidnějším finančním trhem na světě.
Forex pro začátečníky
Forex je celosvětová burzovní síť, v jejímž rámci se obchoduje se všemi světovými měnami, včetně české koruny. Na forexu obchodují banky, fondy, pojišťovny, brokeři a podobné instituce, ale také jednotlivci, je otevřený všem.
1. část - Co to vlastně forex je?
FOREX = International Interbank FOReign EXchange. Mezinárodní devizový trh - jednoduše obchodování s cizími měnami - obchodování se směnnými kurzy.
VIP zóna - Forex Asistent
Nabízíme vám jedinečnou příležitost stát se součástí týmu elitních obchodníků FXstreet.cz. Ve spolupráci s předními úspěšnými obchodníky jsme pro vás připravili unikátní VIP skupinu, až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní Price Action VIP indikátor, doposud úspěšně používaný pouze k soukromým účelům. Nyní se vám otevírá možnost stát se součástí této VIP skupiny, díky které získáte jedinečné know-how pro obchodování na forexu, výjimečný Price Action VIP indikátor, a tím také náskok před drtivou většinou ostatních účastníků trhu.
Forex brokeři - jak správně vybrat
V podstatě každého, kdo by chtěl obchodovat forex, čeká jednou rozhodování o tom, s jakým brokerem (přeloženo jako makléř/broker nebo zprostředkovatel) by chtěl mít co do činění a svěřil mu své finance určené k obchodování. Velmi rád bych vám přiblížil problematiku výběru brokera, rozdíl mezi jednotlivými typy brokerů a v neposlední řadě uvedu několik příkladů nejznámějších z nich.
Forex robot (AOS): Automatický obchodní systém
Snem některých obchodníků je obchodovat bez nutnosti jakéhokoliv zásahu do obchodu. Je to pouhá fikce nebo reálná záležitost? Kolik z nás věří, že "roboti" mohou profitabilně obchodovat? Na jakých principech fungují?
Forex volatilita
Forex volatilita, co je volatilita? Velmi užitečným nástrojem je ukazatel volatility na forexu. Grafy v této sekci ukazují volatilitu vybraného měnových párů v průběhu aktuální obchodní seance.
Forex zůstává největším trhem na světě
V dnešním článku se podíváme na nejnovější statistiky globálního obchodování na forexu. Banka pro mezinárodní vyrovnání plateb (BIS) totiž před pár týdny zveřejnila svůj pravidelný tříletý přehled, ve kterém detailně analyzuje vývoj na měnovém trhu. BIS je označována jako "centrální banka centrálních bank". Je nejstarší mezinárodní finanční organizací a hraje klíčovou roli při spolupráci centrálních bank a dalších institucí z finančního sektoru. Dnešní vzdělávací článek sice nebude zcela zaměřen na praktické informace z pohledu běžného tradera, ale i přesto přinese zajímavé a důležité poznatky.

Nejnovější články:


Naposledy čtené:


FXstreet.cz - forex, komodity, trading, zpravodajství

Nezávislý investiční server zaměřený na forex, komodity, trading a zpravodajství. Vzdělávací články, cenové grafy, cizí měny, semináře, ekonomické a forex zprávy.
reklama
Purple VIP akce
reklama
Purple VIP akce
reklama
LYNX banner
reklama