Úterý 19. březen 2024 04:02
reklama
Dukascopy new
reklama
Dukascopy new
reklama
Instaforex Dakar
reklama
CapXmaster

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: 
   

Čtěte více

  • 5 věcí, které by měl obsahovat checklist tradera
    Jsou oblasti a profese, kde je bezpečnost a eliminace chyby lidského faktoru absolutní prioritou. Ať už jde například o jadernou elektrárnu, nebo pilotování letadla. Jasnou součástí fungování jsou v těchto oblastech tzv. checklisty, neboli kontrolní seznamy.
  • 5 velkých mýtů o obchodování forexu
    Pokud jste ve světě obchodování forexu nováček a hledáte informace, jak vůbec začít, vězte, že v tomto odvětví platí, že je propleteno spoustou balastu a zkreslených informací. Po čas celé své tradingové kariéry se budete neustále zdokonalovat a nejspíš vyhledávat nové informace a rady na internetu.
  • 5 výhod brokera XTB
    Společnost X-Trade Brokers (zkratka XTB) působí na trhu již více než 15 let. Během tohoto období společnost dynamicky rostla a dnes se řadí mezi přední online brokery na světě.
  • 5 způsobů, jak zlepšit své technicko-analytické schopnosti
    Technickou analýzu lze někdy považovat za snazší přístup k obchodování na forexu než využívání fundamentální analýzy. Ale po pravdě řečeno, abyste se naučili správně využívat technickou analýzu, vyžaduje to stovky hodin učení a minimálně několik měsíců intenzivní praxe. Mnoho obchodníků na forexu, kteří teprve začínají, považuje za náročné porozumět technickým informacím. V tomto příspěvku se zaměříme, jak usnadnit cestu za zlepšením vašich technicko-analytických schopností.
  • 52 týdnů praktických ukázek: Bilance za rok
    Nebudu tady polemizovat nad relativitou uběhlého času a nebudu se pouštět do úvah typu „je to jako včera, co jsem začal prezentovat svoje obchody“. Prostě je to tak, že uběhlo 52 týdnů, tedy rok a to je z pohledu obchodníka už docela dobrý vzorek pro posouzení, jak na tom vlastně je nejen on, ale i jeho strategie.
  • 6. MQL4 - Technické indikátory
    V tomto díle se podíváme funkce, které vracejí data jednotlivých indikátorů.
  • 6 otázek, které byste si měli položit před otevřením reálného účtu
    V dnešním článku si ukážeme, jaké otázky bychom si měli položit před otevřením živého obchodního účtu a jak dále postupovat.
  • 6 pravidiel pre efektívne riadenie rizika
    Zažívate pri obchodovaní strach, stres nerozhodnosť a neistotu? Hľadáte stále nové analýzy, čítate správy, pýtate sa ľudí na názor a neustále sledujete graf? Pokračujte takto ďalej a na 99% sa psychicky úplne zruinujete a prídete o celý kapitál. Nemusí to však tak skončiť, stačí dodržiavať týchto 6 pravidiel.
  • 65 týdnů praktických ukázek: Bilance
    Dalších 13 týdnů uplynulo jako voda, a tak tady máme další bilanci, tentokrát za 65 týdnů, tedy za rok a čtvrt. A tak se bez zbytečností můžeme mrknout, co se tedy odehrálo.
  • 7 důvodů, proč ztrácejí tradeři disciplínu
    Obchodníci nedokáží dosáhnout zisku nebo udržet si zisk obvykle proto, že spadnou do některé často se vyskytujících psychologických pastí. Většinu těchto problémů můžeme udržet na uzdě pouze prostřednictvím důkladné přípravy, plánování a sebereflexe. To neznamená, že budeme tyto problémy udržovat na uzdě po celou dobu, ale tím, že o nich víme a neustále na nich pracujeme, máme mnohem větší šanci dostat se na vlnu zisků a chvíli se na ní udržet. Zde je seznam sedmi nejčastějších důvodů, proč tradeři ztrácejí svou disciplínu při obchodování.
  • 7 mýtů o investování u XTB
    XTB je broker působící na českém trhu již více než 15 let. Za tu dobu využily služby společnosti desítky tisíc klientů. Brokerský byznys ale může být na první pohled matoucí a za dlouholeté působení se především na internetu objevilo mnoho nepřesností. V tomto článku jsme připravili vysvětlení sedmi nejčastějších mýtů, které na síti kolují.
  • 7 smrteľných výhovoriek pre vaše obchodovanie (1. časť)
    Pravdepodobne ste dobre oboznámení so siedmimi smrteľnými hriechmi alebo duchovnými nedostatkami; môže byť však užitočné ich stručne uviesť:
  • 7 smrteľných výhovoriek pre vaše obchodovanie (2. časť)
    Pravdepodobne ste dobre oboznámení so siedmimi smrteľnými hriechmi alebo duchovnými nedostatkami.
  • 7 spôsobov ako sa vyhnúť podvodom na Forexe
    Forexový priemysel v poslednej dobe zaznamenáva čoraz viac podvodov. Tu je 7 spôsobov, ako zabrániť strate peňazí v takýchto podvodoch:
  • 7 tipů pro efektivní skalpování
    Dozvíte se, na co byste si měli dát pozor, co si důkladně promyslet a v jakých oblastech na sobě pracovat, abyste se stali ziskovým skalperem.
  • 7 tipů pro větší sebedůvěru v tradingu
    Proč je úspěšnější můj kamarád, který má úplně stejnou strategii? Nebo. Ten obchodník se mi líbí, chci jeho strategii, ale proč se mi nedaří jako jemu? Poznáváte se?
  • 78 týdnů praktických ukázek: Bilance
    Dalších 13 týdnů uplynulo jako voda, a tak tady máme další bilanci, tentokrát za 78 týdnů, tedy za rok a půl. Nebyl to jednoduchý čtvrt rok, ale mrkneme se na to.
  • 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.
  • 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 základných pravidiel, ktorými by sa mal obchodník riadiť (časť prvá)
    Zaujímalo vás niekedy aký je rozdiel medzi víťazmi a porazenými z dlhodobého hľadiska? Ako väčšina ľudí, aj vy si pravdepodobne myslíte, že odpoveďou je vzdelanie. Potom si prečítate niekoľko ďalších kníh, niekoľko článkov a myslíte si, že to bolo ono. No ... hádajte čo? To nie je ono. Ktokoľvek z nás dokáže hĺtať veľa informácií, niektoré predsa len prinesú lepšie výsledky. Aj keď ich možno počujete volať obchodníci Uber, v skutočnosti ich spája jedna jednoduchá vec: disciplína. Dovoľte mi vypracovať a uľahčiť vám pochopenie tým, že vám poskytnem niekoľko jednoduchých pravidiel, ktoré musí každý úspešný obchodník dodržiavať.
  •  


    Diskuse ke článku

    Diskuse je přístupná pouze pro registrované uživatele.
    Přihlásit se | Nová registrace
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 (speciální uzavřená sekce na webu), až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní VIP indikátory, 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é VIP indikátory, 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é:

reklama
Dukascopy new