E-book Magazínu FOREX
|
|
- Romana Křížová
- před 6 lety
- Počet zobrazení:
Transkript
1 E-book Magazínu FOREX 2017 Magazín 2017 FOREX. Magazín Všechna FOREX. Všechna práva práva vyhrazena. Žádná část této publikace nesmí být kopírována a rozmnožována část této publikace za účelem dalšího nesmí rozšiřování být kopírována v jakékoliv a rozmnožována formě či jakýmkoliv za způsobem bez předchozího písemného souhlasu. účelem dalšího rozšiřování v jakékoliv formě či jakýmkoliv 1 způsobem bez předchozího písemného souhlasu.
2 OBSAH OBSAH... 2 Předmluva Začínáme s MQL Základy a mimimum pro programování Základní struktura EA Zadání pokynu a omezovač vstupů do EA Ověření funkčnosti EA Zadáváme pozici short Zadání podmínek pro vstup a posun na break-even Programujeme trailing stop v MQL Zadání pokynů typu STOP a LIMIT Spuštění více EA najednou Zadání většího počtu pozic v EA Errory při používání EA Jak na indikátor do MT
3 Předmluva Umíte si naprogramovat vlastní obchodní strategii? Pokud ne, pomůže Vám tento e-book o programování v nejznámějším jazyce MQL4. Jednoduchou formou si ukážeme tvorbu strategie (EA) na konkrétním případě. Naučíme Vás naprogramovat si vlastní obchodní strategii během pár hodin. Každý krok podrobně popíšeme a ukážeme si konkrétní zápis v jazyce MQL4. Pokud hledáte nějakou zajímavou obchodní myšlenku, navštivte web Magazínu FOREX sekci Obchodní myšlenky. Pokud se chcete dozvědět více o tom, jak vytvořit AOS, který byste posléze naprogramovali, přečtěte si náš e-book Jak vytvářet AOS. 3
4 1. Začínáme s MQL4 Řada lidí se na nás v minulosti obracela a obrací s žádostmi, abychom je naučili programovat si své vlastní strategie a indikátory. V minulosti jsme se o to v řadě případů pokusili a výsledek byl dosti nevalný. Většina z nich neměla dostatečnou vůli a chuť se učit, a jakmile zjistili, že to obnáší určité úsilí, tak to vzdali. Jiní se k programování upnuli jako ke spásnému prostředku na vydělávání peněz a mysleli si, že se během měsíce naučí programovat. Pak tam nahází několik indikátorů, zoptimalizují zisk a budou vydělávat milióny Brzo však přijdou na to, že to tak jednoduché není. Po této negativní zkušenosti jsme dlouho odolávali tlaku učit někoho programovat. Nakonec jsme se rozhodli udělat tento poslední pokus. Internet má tu výhodu, že si tento e-book mohou přečíst desítky, stovky či tisíce čtenářů a pokud to jednomu či dvěma pomůže v jejich úsilí naučit se programovat, tak to má smysl. Dříve než se do základů programování pustíme, chceme napsat ještě několik věci. Předně nemáme programátorské vzdělání a kvalita našich programátorských dovedností je nízká. Na druhou stranu MQL4 jsme intenzivně studovali asi měsíc a na konci tohoto měsíce jsme naprogramovali svojí první strategii a to bez větších obtíží. Když jsme to za měsíc zvládl my, tak proč ne Vy. Náš programátorský kód je naprosto jednoduchý až primitivní a kdejaký profesionální programátor by nad ním ohrnoval nos. Nicméně fungujete to a my vám nabízíme možnost se jednoduchou formou naučit základy tak, že to zvládne každý, kdo bude mít chuť a pevnou vůli. Hlavní nevýhodou je, že neexistují dostatečné materiály v češtině. Nejpodrobnější informace najdete na Najdete tam manuál. Druhou věc, kterou budeme potřebovat je mít nainstalovaný MetaTrader4 od nějakého vámi vybraného brokera. Nemusíte mít live účet, stačí si někde otevřít demoúčet a nainstalovat si MT4. Meta Editor je součástí každé instalace MT4. Otevřete platformu MT4 a kliknutím na následující ikonu se nám otevře okno Meta editoru, kde budeme moci začít psát svůj první program. 4
5 Než se do toho pustíme, projděte si několik následujících pojmů, které budeme v textu často používat, a jsou zároveň takovým teoretickým úvodem do základů programování. MetaQuotes Language 4 (MQL4) je jazyk na programování obchodních strategií. Pomocí MQL4 můžete vytvářet vlastní Expert Advisors (EA). Pomocí EA lze automaticky řídit obchodní proces a jsou schopné i automaticky dle zadaných pravidel zadávat a ukončovat obchodní příkazy zasíláním příkazů přímo na server brokera. Většina funkcí nutných k analýze a porovnávání historických cen, stejně jako základní aritmetické a logické operace jsou obsaženy již přímo ve struktuře MQL4. V MQL4 jsou obsaženy rovněž základní indikátory a příkazy. Pro zapisování programových kódů se používá MetaEditor 4 IDE (viz. obrázek výše). V MQL4 je možné rozdělit programy podle typů do 4 kategorií: Expert Advisors (EA) slouží k napsání mechanických obchodních systémů, které umí upozornit na splnění předem definovaných podmínek pro vstup či ho automaticky směřovat přímo na server. Custom Indicators slouží k vytváření vlastních technických indikátorů. V MT4 je zabudována řada těch nejznámější indikátorů, ale díky Custom Indicators si můžete naprogramovat jakýkoliv nový indikátor. Scripts jsou určené pro jednorázové provedení některých úkonů Libraries knihovny. Do nich mohou být ukládány bloky uživatelských programů. 5
6 My se zaměříme pouze na Expert Advisors s cílem zvládnout naprogramovat svou vlastní strategii. V závěru této miniškoly programování se podíváme i na Custom Indicators a ukážeme si jak snadno a rychle naprogramovat vlastní indikátor. Tuto kapitolu ukončíme a do programování se pustíme v té další. 6
7 2. Základy a mimimum pro programování Než se pustíme do programování, chtěli bychom s vámi projít pár základních pojmů, které je nezbytné znát. Komentáře: Komentáře budeme používat pro lepší orientaci v textu. Pokud bude komentář pouze jednořádkový, umístíme před něj dvě lomítka. Pokud budeme potřebovat napsat delší text na více řádků, tak použijete lomítko a hvězdičku na začátku a na konci textu // jednořádkový komentář /* víceřádkový komentář */ Identifikátory: Jde o pojmenování proměnných, funkcí a typů dat. Pro identifikátory platí určitá omezení. Jejich délka nesmí přesáhnout 31 znaků. Lze používat číslice 0-9, velká a malá písmena a-z, A-Z, symbol podtržení (_). První symbol nesmí být číslice a nesmí kolidovat s žádným vyhrazeným slovem. Vyhrazená slova, která nelze použít pro pojmenování proměnné: Datové typy: bool, color, datetime, double, int, string, void Paměťové třídy: extern, static Operátoři: break, case, continue, default, else, for, if, return, switch, while Ostatní: false, true Tato klíčová slova jsou v rámci MQL4 vyhrazena pro určité úkony, které si popíšeme později. Příklad jak pojmenovávat proměnné: PT_prvni; SMA120, autotrailing_5896 apod. Datové typy: int (Integer) celá čísla bool (Boolean) má hodnoty true nebo false string (String) řetězce double (Floating-point number) čísla s desetinným místem color (Color) barva datetime (Datetime) datum a čas Typy datové typy budeme používat pro zadávání hodnot (konstant). Nejčastěji budeme používat datové typy int, double a string. 7
8 Operace: MQL4 pracuje se standardními aritmetickými operacemi, tak jak je běžně známe: Součet hodnot a = b + 3; Rozdíl hodnot a = b 2; Změna znaménka a = -a; Součin hodnot a = b * 4; Podíl hodnot a = b / 6; Přičtení 1 k proměnné a++; Odečet 1 od proměnné a ; Zvláštností je přičtení jedničky k proměnné či odečtení jedničky. Pamatujte však, že tyto operace nemůžeme běžně používat s ostatními operacemi tzn. rovnice a = (b++)*4 je neplatný výraz. Často budeme využívat i tzv. porovnávací operace: Pokud testujeme, zda je a rovno b a == b; Pokud testujeme, zda a se nerovná b a!= b; Pokud testujeme, zda je a menší než b a < b; Pokud testujeme, zda je a větší než b a > b; Pokud testujeme, zda je a menší nebo rovno než b a <= b; Pokud testujeme, zda je a větší nebo rovno než b a >= b; Bez nich se neobejdeme asi u žádné EA. Operandy: Kromě klasických operandů, které známe, jako jsou +, -, *, /, <, >, <=, >= je dobré znát následující operandy: rovná se = = nerovná se!= and (a) && or (nebo) Operátory: Jsou užitečné výrazy, které nám pomohou při strukturování našich budoucích programů. Mezi nejznámnější patří: break, continue, return, if, if-else, switch, while, for a další. Mohli bychom je zdlouhavě popisovat, ale nejsme si jistí, zda byste je plně pochopili, bez toho aniž byste viděli jejich praktické využití. Proto se k jednotlivým operátorům vrátíme až tehdy, až je budeme prakticky využívat pro tvorbu naší EA. Tak nevíme, jestli jsme některé z vás již neodradili. Již druhá kapitola a stále nic hmatatelného o programování EA. Ale nebojte, to co jsme dnes popisovali je naprosté minimum toho, co je potřeba vědět, abychom mohli začít programovat první EA. Profesionální programátoři by se nám vysmáli, a řekli by mi, že to není ani zlomek znalostí, které potřebujete k vytvoření EA, ale věřte nám, že to bude stačit. 8
9 3. Základní struktura EA Tak a je to tady, začínáme programovat. Otevřeme si svou první EA. V menu MetaEditoru vybereme File -> New Pak si vyberte možnost Expert Advisor a klikněte na tlačítko Další > Pak si svou první EA pojmenujte např: Pokus a dejte Dokončit 9
10 a otevře je vám tělo nové EA. 10
11 Projděme si krátce jednotlivé části popsat: 1 hlavička. Celá tato část je postavená na komentářích. Obsahuje základní informace o této EA. Tyto informace jsou zbytné, a pokud je smažete, EA bude fungovat úplně stejně. Já osobně hlavičku používám pro zapsání všech identifikačních údajů k dané strategii, kterou programuji. 2 copyright. Opět zbytná část. Tyto údaje/informace se objevují na různých místech v MT4, když pak s touto EA pracujete. Nemají však žádný vliv na funkčnost EA. Pomocí #property můžeme v MQL4 specifikovat určité parametry. V EA je nepotřebujeme, větší význam má #property při tvorbě indikátorů. 3 expert initialization function. Do této části budeme dávat definice externích parametrů. Samotná EA je rozdělena do 3 funkcí init(), deinit () a start (). Init () slouží pro definici toho, co potřebuje zavést do programu předtím, než se rozběhne. 4 expert deinitialization function. Deinit() obsahuje naopak instrukce, které je potřeba provést k vyčištění zavedených dat a instrukcí, když je program ukončen. Viděl jsem řadu EA, kde se programátoři vyžívali ve složitých kódech v částech 3 a 4. My jdeme cestou tvorby EA metodou snadno a rychle, takže se omezíme jen na to nejnutnější. 5 expert start function. V části start () se bude nacházet tělo našeho programovaného systému a zde nás čeká nejvíce práce. Pojďme si tedy zkusit naprogramovat nějakou jednoduchou myšlenku. Představme si, že chceme vstupovat do longu na EURUSD vždy při otevření trhů v neděli ve 23:00 SEČ s profit targetem 200 pipů a stoplossem 100 pipů. EA můžeme naprogramovat hodně staticky, tzn. naprogramujeme natvrdo trh EURUSD, a hodnoty PT a SL. My se však pokusíme programovat EA co nejuniverzálněji s vidinou, aby EA fungovala i na jiných trzích než jen EURUSD. Profit target a stoploss také nastavíme tak, abychom ho mohli měnit a popřípadě i optimalizovat. Než se pustíme do psaní kódu u složitějších obchodních systémů, je dobré si promyslet, jaké proměnné musíme nadefinovat a udělat si jednoduchý diagram podmínek a toho, co bude následovat po jich splnění atd. V prvním kroku vydefinujeme základní proměnné, které budeme pro naprogramování výše uvedené myšlenky potřebovat, tzn. definice Stoplossu a Profit targetu. extern double Stoploss_v_pipech = 100; extern double Profit_target_v_pipech = 200; Vzhledem k tomu, že proměnná uváděná v pipech je celé číslo, můžete proměnnou definovat pomocí datového typu int. Můžete však použít i datový typ double, ten pracuje s desetinnými čísly a lze ho samozřejmě použít i pro celá čísla. Pokud dáme před definici proměnné slovo extern, tak se tato proměnná bude zobrazovat při spuštění strategie a uživatel si bude moci tuto hodnotu upravovat. Tato proměnná pak bude moci být testována. Za každým řádkem nezapomeňte středník. 11
12 Na obrázku je vidět, že když pak přidáme EA do grafu, všechny proměnné označené extern se objeví v záložce vložit parametry a my je můžeme změnit. Pokud bychom nepoužili příkaz extern proměnná by se v této záložce neobjevila. POZOR ještě na jednu věc. Pokud máte brokera, který pracuje se čtyřmístnou cenou, dosadíte hodnoty 200 a 100. Pokud však broker používá pětimístné ceny, je potřeba zadat 2000 a Podívejme se raději ještě jednou na to, co jsme již v EA provedli: 12
13 1 a 2 upravili jsme hlavičku nemá sice vliv na funkci EA, ale je dobré si zde poznamenat klíčové informace. Když pak budete programovat 30 jiných EA a pak se vrátíte k té první, tak Vám to pomůže v rychlejší orientaci. Proto razím zásadu: Dělejte si poctivě komentáře, pomůže Vám to při budoucích úpravách 3 definice SL a PT 4 uložili jsme stiknutím Compile. Zapsaný kód uložíme stisknutím tlačítka Compile v horní liště. Tím dojde k uložení zapsaného kódu a jeho kontrole. V případě, že je kód zapsán správně objeví se v dolním okně oznámení o tom, že je kód bez chyb. Popřípadě zde najdete chybovou hlášku, pokud je kód zapsán chybně. Další věc, kterou potřebujeme definovat je den v týdnu a čas vstupu. Budeme ho potřebovat pro vstup do pozice. Jelikož půjde vždy o celé číslo, použijeme datový typ int. Zápis provádíme do části start(). V této části se bude programovat celý zbytek naší strategie. int D = DayOfWeek(); // zjistí den v týdnu (neděle=0 pátek=5) int m = TimeMinute(TimeCurrent()); // zjistí aktuální minutu int h = TimeHour(TimeCurrent()); // zjistí aktuální hodinu Tyto 3 funkce pro zjištění aktuálního dne, hodiny a minuty si dobře zapamatujte, budeme je potřebovat skoro v každé strategii. Teď, když se učíme, tak pro názornost zapisujeme každou proměnnou na vlastní řádek, ale zápis lze zjednodušit takto: int D = DayOfWeek(), m = TimeMinute(TimeCurrent()), h = TimeHour(TimeCurrent()); Nemusí se pokaždé opisovat int, jednotlivé proměnné se oddělí čárkou a za poslední proměnnou se udělá středník. 13
14 V červeném rámečku je vidět přidaný kód. Ve spodní části MetaEditoru vidíte nápovědu pro funkci DayOfWeek(). Nápovědu pro jakoukoliv funkci zobrazíte tak, že nastavíte kurzor v textu na vybraný příkaz či funkci a stisknete F1. Ve spodní části se Vám objeví nápověda, Je to velice šikovné, zkuste si to. Klikejte průběžně Compile. Nejen, že tím průběžně svou práci uložíte, ale naleznete snáze chybu (errorová hláška). Dávejte si hlavně pozor na závorky a středníky na konci řádků. Pokud se Vám objeví nějaká errorová hláška, vždy obsahuje popis chyby a číslo řádku, ve kterém vznikla. Nyní už můžeme přistoupit k zadání příkazu LONG. Těsně předtím, však musíme vydefinovat podmínky, aby program věděl, kdy má vstoupit. EA můžeme na účtu aktivovat kdykoliv v pondělí v 8:30, nebo ve středu v 16:25, či v neděli ve 23:45. My však chceme, aby se příkaz provedl pouze při otevření trhů v neděli ve 23:00. Musíme tedy v EA tuto podmínku definovat pomocí operátoru if: if (D == 0 && h == 23 && m == 0) Tento zápis nám říká, že když D (den) bude 0 (neděle) a zároveň h (hodina) bude 23 a zároveň m (minuta) je 0, tak potom a bude následovat příkaz, neboť podmínky pro vstup byly splněny. Nicméně zde provedeme jednu modifikaci. Někdy se stane, že broker otevře trh ne přesně ve 23:00 SEČ, ale o minutu či dvě později. Proto navrhuji dát do podmínek místo m == 0 raději m < 5. Tím si zajistíme, že příkaz se zadá i v případě, že broker otevře až např. ve 23:03 SEČ. Zde si musíme dát na časy pozor. Čas, který zadáte, musí odpovídat času Vašeho brokera. Podívejte se, když trh otevře, jaký čas má Váš broker. Pokud má Londýnský čas, bude ukazovat 22:00. Musíte pak podmínku upravit na h == 22. Někteří brokeři jsou posunutí dopředu a nedělní svíčku vůbec nemají a otevírají vlastně v pondělí 0:00, pak musíte opět upravit na D == 1 a h == 0 atd. Teď, když již EA ví, kdy má vstoupit do pozice, můžeme zadat příkaz a to tímto zápisem: { ticket = OrderSend(Symbol(),OP_BUY,0.01,Ask,0,Ask-SL,Ask+PT,Text, Magic_number,0,Blue); } No tento zápis Vás určitě dost postrašil, co? Nebojte se, vše si vysvětlíme. Nyní si zapište výše uvedené do EA a klikněte na Compile. 14
15 V EA je momentálně 5 chyb. Všechny si postupně projdeme a odstraníme je. Co je však nejdůležitější je příkaz OrderSend. Zadání příkazu je klíčové, protože pokud to uděláme špatně, můžeme přijít o spoustu peněz. Příkaz obsahuje velké množství parametrů a je dobré si to dopodrobna projít. Ale myslím, že pro dnešek už to stačilo. V příští kapitole opravíme chyby a vysvětlíme si příkaz OrderSend. Naší první EA dokončíme a zkusíme jí spustit. 15
16 4. Zadání pokynu a omezovač vstupů do EA V minulé kapitole jsme skončili v okamžiku, kdy jsme po zadání kódu pro odeslání příkazu do trhu obdrželi 5 errorových hlášek. Povězme si nyní více o definici příkazu OrderSend. OrderSend (symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color) Příkaz má 11 parametrů, které daný příkaz definují a znamenají následující: 16
17 Symbol definuje měnový pár, na kterém chceme pozici zadat. Zde jsme zadali příkaz Symbol (). Je zde možno definovat měnový pár textovým řetězcem a uvést konkrétně např. EURUSD či jiný pár. Problém je, že EA pak bude fungovat/zadávat příkazy pouze na tomto měnovém páru. Příkaz Symbol() sám přiřadí ten měnový pár z grafu, na který naši EA umístíme. Tím bude naše EA univerzální a použitelná pro libovolný měnový pár. Cmd definuje typ příkazu, tzn. zda půjde o příkaz typu market (okamžitý vstup do trhu), nebo o čekající pokyn typu LIMIT nebo STOP (více o typech příkazů v tomto článku). Každý typ má svůj kód, a nebo může být vyjádřen číslicí. Doporučujeme používat textové značení, lépe si ho pamatujete. Rozeznáváme tedy: OP_BUY (nebo číselný kód:0) pro pokyn typu MARKET a typ pozice buy (long/nákup) OP_SELL (1) pro pokyn typu MARKET a typ pozice sell (short/prodej) OP_BUYLIMIT (2) pro pokyn typu LIMIT a typ pozice buy (long/nákup) OP_SELLLIMIT (3) pro pokyn typu LIMIT a typ pozice sell (short/prodej) OP_BUYSTOP (4) pro pokyn typu STOP a typ pozice buy (long/nákup) OP_SELLSTOP (5) pro pokyn typu STOP a typ pozice sell (short/prodej) V našem případě chceme vstupovat za market do pozice long, zadáme tedy OP_BUY. Volume definuje velikost pozice. Můžeme zadat natvrdo např lotu, tak jako jsem to udělali my. Nicméně můžeme to opravit, aby byla EA více flexibilní. Místo 0.01 zadáme proměnou Velikost_pozice. Tuto novou proměnnou vydefinujeme jako externí proměnou, abychom jí mohli libovolně měnit. Jelikož velikost pozice může být desetinné číslo, použijeme datový typ double. extern double Velikost_pozice = 0.01; // definice velikosti pozice pro obchodování Price je cena, za kterou chceme vstoupit. Pokud chceme vstoupit za MARKET volíme buď cenu Ask (pro buy/long) a nebo Bid (pro sell/short). U pokynů typu LIMIT nebo STOP zadáváme cenu v závislosti na pravidlech strategie, kterou programujeme. Ukážeme si to prakticky v některé z příštích kapitol. V našem případě volíme cenu Ask. Slippage zde je možné zadat max. požadovanou odchylku při exekuci příkazu Stoploss zde zadáme cenu, na které chceme obchod ukončit, pokud se vyvíjí proti nám. Definovali jsem ho rovnicí Ask-SL. Ask znamená aktuální tržní cenu (za ní jsme do obchodu vstoupili) a tuto cenu snížíme o požadovaný stoploss. Proměnou SL jsme zatím nedefinovali. Definovali jsme pouze proměnnou StopLoss_v_pipech. Nemůžeme však použít Ask-StopLoss_v_pipech, neboť StopLoss_v_pipech je 200 pipů tzn. rovnice by počítala např. 1,3215 (aktuální market) 200 a to se rovná -198,6785! Musíme tedy převést pipy do cenového vyjádření. Většinu z vás napadne upravit rovnici takto: Ask StopLoss_v_pipech/ Není to špatně, ale má to řadu úskalí, jako to, že to funguje pouze u brokera se 4 místnou cenou. U pětimístného brokera by bylo potřeba přidat za ještě jednu nulu. Druhý problém bude např. u USDJPY. Páry s japoncem bychom museli dělit pouze 100 (resp u 5-ti místného brokera). Musíme tedy najít flexibilnější řešení a tím je použít příkaz Point. Ten vrátí hodnotu cenového vyjádření jednoho pipu pro daný měnový pár. Pro EURUSD u čtyřmístného brokera se Point = 0,0001, pro USDJPY = 0,01 atd. Správný zápis tedy je: Ask StopLoss_v_pipech*Point Tady navrhujeme definovat novou proměnnou SL = StopLoss_v_pipech*Point (datový typ double) a rovnici pak zjednodušit na Ask-SL. Oba zápisy fungují stejně, ale důvod je ryze praktický. SL se snadněji napíše (a u složitějších EA budeme nuceni používat tuto proměnnou vícekrát) a zároveň je celý kód přehlednější. Často to bývá praktické u složitějších a rozsáhlejších EA. Naprogramujete EA, která bude obsahovat několik pozic, a 17
18 později se rozhodněte měnit způsob stanovení stoplossu. Pak musíte jít do každého příkazu a přepsat rovnici, která stoploss definuje. Kdežto v našem případě pouze změníte rovnici pro proměnnou SL a zbytek kódu měnit nemusíte. TakeProfit zde zadáme cenu, na které chceme vystoupit, když jde obchod naším směrem. V našem případě to uděláme analogicky, jako u SL. Nadefinujeme novou proměnnou PT = Profit_Target_v_pipech* Point a do OrderSend zapíšeme výstupní cenu jako Ask+PT. Pokud nechceme stanovit žádný PT, můžeme doplnit pouze 0. To použijeme v případech, kdy budeme pozici uzavírat buď na základě nějakého naprogramovaného trailing stopu či dle splnění jiných specifických podmínek (ukážeme si v některé z dalších kapitol). Obdobně lze použít nulu (= nezadání cílové ceny) i u SL. Úmyslně jsme to v předchozím odstavci nezmínili, neboť jsme přesvědčeni, že žádný obchod by neměl být bez SL. Ale technicky to možné je. Dávejte si na to pozor! Víme, že někdo SL nepoužívá a má v EA naprogramované ukončení příkazu při splnění některých podmínek a tím chrání svůj účet. Upozorňuji, že je to nebezpečné. Může se například stát, že zadáte příkaz (je bez SL). Pak dojde k výpadku proudu a váš počítač se vypne. V tom okamžiku vaše EA nefunguje, a ačkoliv nastali podmínky pro ukončení obchodu, váš obchod se neukončí, neboť EA není funkční. Když se pak dostanete k počítači, můžete být Váš obchod v daleko větší ztrátě! Comment slouží pro zadání komentáře. Nemusí se zde nic zadávat, nicméně my to používáme, neboť tento text se tak objevuje v MT4 jako komentář k obchodu. Pokud obchodujete na jednom účtu více strategií/ea, hodně vám to usnadní orientaci, který obchod patří ke které EA. Opět využijeme definici pomocí nové proměnné, kterou pojmenujeme Text. Jelikož se jedná o textovou proměnnou, použijeme pro její definici datový typ string. Text musí být v uvozovkách. string Text = Moje první strategie Text Moje první strategie můžeme dát přímo do OrderSend, ale zase platí, že u složitějších EA by bylo náročně text na všech místech přepisovat v případě změny Magic zde se zadává tzv. magické číslo. Nehledejte v tom nic mystického. Toto číslo pomáhá při identifikaci jednotlivých příkazů zadaných na vašem účtu, resp. k identifikace příslušnosti příkazu k dané EA. Vysvětlíme si to a ukážeme později. Můžeme napsat natvrdo číslo např. 1122, ale my opět použijeme zápisu přes proměnnou definovanou jako Magic_number Expiration zde můžeme definovat dobu platnosti pokynu. Lze pouze pro čekající pokyny, což není náš případ, neboť mi jsme vstupovali za market. Jak definovat délku platnosti pokynu si ukážeme později, až si budeme zkoušet čekající pokyny. Arrow_color zde můžeme napsat barvu, např. Blue či Red atd. Pokud zde uvedeme nějakou barvu, tak když se pokyn zadá, tak se v grafu objeví šipka dle zvolené barvy. My toto používáme a zadáváme si modrou barvu pro LONG a červenou pro SHORT. Je to spíše grafická pomůcka a nemá to žádný vliv na zadávaný pokyn. Doufáme, že teď již složitému zápisu OrderSend(Symbol(),OP_BUY,0.01,Ask,0,Ask- SL,Ask+PT,Text,Magic_number,0,Blue) rozumíte. Z výkladu je také patrné, že errory, které se objevily, jsou důsledek toho, že jsme použili proměnné, které jsme neměli definované a to: SL, PT, Magic_number a Text. Chybí ještě definovat proměnnou ticket. To je proměnná, kterou přiřadíme k příkazu OrderSend. Pokud by se při používání EA pokyn v reálu nezadal, proměnná ticket dosáhne hodnoty -1 a to lze využít pro zjištění důvodu, proč se příkaz nezadal (ale to si ukážeme později). 18
19 Aby bylo vše jasné, podívejme se, jak vypadá naše EA po posledních úpravách. Musíme doplnit definice proměných SL, PT, Magic_nuber, Text a ticket. Nesmíme zapomenout definovat ještě novou externí proměnnou Velikost_pozice, jak jsme se rozhodli výše. Doplníme kód a stiskneme Compile. 19
20 V červených polích vidíte naše poslední úpravy a dole informaci o tom, že již nemáme žádné chyby. Zdálo by se, že již máme práci hotovou, ale ještě chybí jedna věc, aby byla EA funkční, a to omezovač vstupů. To je náš laický název souboru operací, které zajistí, aby se náš pokyn zadal pouze jednou. Proč nějaký omezovač potřebujeme? EA funguje tak, že když ji zaktivujeme, běží od prvního řádku kódu až na konec, kde je příkaz return. Vrátí se zpátky na začátek a jede znovu. Tento cyklus zopakuje několikrát za vteřinu. V okamžiku, kdy jsou splněny podmínky pro vstup do trhu (v našem případě neděle, 23 hodin a 0 minut) zadá se příkaz. Během minuty však EA udělá několik cyklů a pokaždé by došlo k zadání pokynu. To samozřejmě nechceme, chceme zadat jen jeden pokyn. Musíme tedy do našeho kódu naimplementovat omezovač vstupů. V platformě MT4 může být zadáno např. deset pokynů. My potřebujeme zjistit, zda některý z nich už není zadaný pokyn z naší EA. Pokud ne, necháme EA, aby ho zadala. Pokud však již pokyn zadán bude, chceme zabránit tomu, aby se zadal pokyn znovu. První co potřebujeme vědět je, kolik pokynů je momentálně zadáno v platformě MT4. K tomu použijeme příkaz OrdersTotal(), ten nám řekne, že momentálně je to např. 10 pokynů. Teď tedy musíme jít pokyn po pokynu a zjistit, zda je či není z naší EA. Zavedeme si počítadlo (proměnnou q), kde q bude 1, 2, 3, 10 a pak chceme testovat pro příkaz 1, zda je jeho Magic number shodné s magic number naší EA pak to samé pro příkaz 2 3 až 10. Pokud ani v jednom případě nenajdeme pokyn s naším magic number, tak bude program pokračovat dál a zadá se pokyn. Pokud však nalezneme jeden pokyn se shodným magic number, tak vložíme příkaz return a dál program nepustíme, a bude se muset vrátit na začátek. Teoreticky víme, co chceme a teď to musíme přetvořit do kódu. Pro výběr pokynu použijeme příkaz OrderSelect(q, SELECT_BY_POS, MODE_TRADES). q je pořadové číslo, druhý parametr je způsob výběru. Zde jsou dvě možnosti SELECT_BY_TICKET (výběr podle čísla ticketu) nebo SELECT_BY_POS (výběr podle pořadí pokynu). Použijeme tedy SELECT_BY_POS. Třetí parametr má také dvě možnosti: MODE_TRADES (vybírá z aktivních či čekajících pokynů) nebo MODE_HISTORY (vybírá z ukončených nebo zrušených příkazů). Nás zajímají ty aktivní, takže zadáme MODE_TRADES. Tímto příkazem jsme vybrali pokyn dle jeho pořadí a zjistíme, zda jeho magic number je shodné, a to příkazem OrderMagicNumber(). Tento příkaz zjistí hodnotu magic number vybraného příkazu. A teď už můžeme sestavit podmínku: if(orderselect(q, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic_number) {return(0);} Jinak řečeno když u vybraného pokynu (v pořadí q = 1,2, 10) je magic number rovno našemu magic number potom se vrať na začátek programu. Nicméně ještě musíme vyřešit to počítadlo. K tomu použijeme operátor for. Začneme s q = 0 a pak zvýšíme q na 1, následně na 2 Kdy skončíme? Nevíme přeci kolik příkazů v platformě MT4 bude v jakém okamžiku? Můžeme nastavit mezní hodnotu pro q = 1000, neboť tolik pokynů v jednom okamžiku mít na účtu nebudeme, ale to bychom program zbytečně zahlcovali velkým množstvím operací. Využijeme proto příkaz OrdersTotal(), ten (jak již víme) zjistí aktuální počet pokynů v platformě. Zápis počítadla by pak vypadal takto: for(q = 0; q < OrdersTotal(); q++) { } Jinak řečeno začínám od nuly a přičítáme vždy jedničku. Pokud bude q méně než aktuální počet pokynů v platformě, tak vykonám příkazy v závorce. Teď spojíme počítadlo s předchozí podmínkou a omezovač vstupů je hotov. Pozor na konci vzniknou dvě závorky. Pokud tam dáte jen jednu, EA nebude fungovat. 20
21 Doplníme omezovač do naší EA a celý kód zkontrolujeme. Při kontrole jsme objevili ještě dva nedostatky, které opravíme. Vydefinovali jsme novou externí proměnnou Velikost_pozice, ale zapomněli jsem ji dát do kódu zadání pokynu OrderSend. Druhou věc, kterou ještě změníme je podmínka vstupu, kdy m == 0. Někteří brokeři otevřou trh s malým zpožděním (říkali jsme si to v minulé kapitole) takže upravíme podmínku na m < 5. Nezapomeňte kliknout na Compile a naše první EA je hotová. V příští kapitole se podíváme, jak se chová EA v platformě MT4, otestujeme ji a ukážeme si jak zkontrolovat v grafu, zda EA dělá to, co skutečně chceme. 21
22 5. Ověření funkčnosti EA V minulé kapitole jsme dokončili svou první EA. Jednalo se o poměrně jednoduchý koncept, přesto si nyní ukážeme dvě věci: 1) nastavení EA v MT4 2) ukážeme si krátce otestování EA a přenesení obchodů do grafu tak, abychom mohli ručně zkontrolovat, zda EA pracuje skutečně tak, jak má. Nastavení EA v MT4 provedeme jednoduše tažením myší. Vybranou strategii přetáhneme do okna grafu měnového páru, na kterém chceme vybranou EA obchodovat (viz. následující obrázek). Objeví se nám dialogové okno, ve kterém můžeme upravit parametry nastavení strategie. Pokud chceme, aby EA obchodovala sama, musíme tuto volbu zaškrtnout. Na druhé záložce můžeme upravovat ty proměnné, které jsme si nadefinovali jako externí. 22
23 Aby EA řádně fungovala, je ještě třeba kliknout na tlačítko Zapnout strategie. To, že je EA správně aktivována poznáte tím, že se v pravém horním rohu grafu vedle jména EA objeví symbol smajlíka. Od tohoto okamžiku se již bude EA aktivně obchodovat. Avšak POZOR, nedoporučuji v žádném případě nastavovat EA rovnou na live účet, pokud ho nejprve nenecháte chvilku běžet na demo účtu. U složitějších EA je vyšší riziko, že jsme v kódu udělali nějakou chybu a EA nebude pracovat správně. Je tedy dobré se nejprve přesvědčit, že je EA v pořádku a nepřijít zbytečně o peníze. Ještě jedna drobnost. Aby EA fungovala, musí být zapnutý počítač i MT4. Pokud počítač či platformu MT4 vypnete, EA nebude pracovat! Avšak existuje ještě jeden způsob, jak si ověřit správnou funkci EA a tím je využití testeru. Otevřete si testr 23
24 Nastavte základní parametry: Vyberte strategii/ea, symbol/trh, na kterém chcete testovat. Model nastavíme na Všechny cenové pohyby. Dále nastavíme datum např. od do dnešního dne. Období nastavíme na Daily. Pak stačí kliknout na Začátek Výsledkem je přehled uskutečněných obchodů, které najdete na záložce Výsledky. 24
25 Vývoj obchodů znázorněný graficky najdete na listu Graf. Ten znázorňuje vývoj naší equity. 25
26 Naším cílem je zkontrolovat, zda se obchody zadaly tak, jak měly tzn. podle našich pravidel. Kontrolu můžeme provést na záložce výsledky, kde vidíme vstup do trhu a cenové parametry SL a PT atd. Nicméně do by bylo neuvěřitelně pracné. Existuje však ještě jedna možnost, která nám znázorní realizované transakce v grafu a umožní nám snazší ruční kontrolu pozic. Vraťte se zpět na záložku Nastavení a klikněte na Tlačítko Otevřít graf. Objeví se vám nové okno grafu a v něm uvidíte grafický záznam našich obchodů. Pro lepší orientaci se přepneme na 1H time frame a nastavíme si separátory období. Na grafu pěkně vidíme jednotlivé obchody a poměrně rychle můžeme opticky zkontrolovat, že vstupy jsou skutečně v neděli při otevření trhů. Kliknutím na pravé tlačítko myši si můžeme snadno změřit vzdálenost (velikost) SL a PT. Opticky tedy můžeme poměrně rychle zkontrolovat funkčnost EA. 26
27 Při optické kontrole často narazíme na věc, kterou jsme si ani neuvědomili, jako například následující: Ve většině případů se obchod ukončil v rámci daného týdne. Buď byl zasažen SL či PT. Při projíždění grafu však narazíme na místo (např ), kde je vidět, že obchod se do konce týdne neukončil a pokračoval ještě v následujícím týdnu. Nový obchod, který se měl zadat v neděli při otevření trhů se nezadal. Proč? Důvodem je náš omezovač vstupů, který vyhodnotil, že je v MT4 zadaný pokyn patřící k této EA a zamezil tak zadání nového pokynu. 27
28 Co s tím? Je to chyba? Chyba to není. EA pracuje správně, mi si to pouze musíme rozmyslet a udělat rozhodnutí, jak se v takové situaci zachovat. Má smysl otvírat novou pozici long, když už v longu jsme? Můžeme pouze modifikovat PT a SL a dosáhnout stejného efektu, jako když otevřeme novou pozici (ušetříme však jeden spread a popř. i poplatky). My však uděláme to, že obchod, který se do pátka neukončí, uzavřeme těsně před uzavřením trhů v pátek sami. V neděli tak nebude otevřen žádný pokyn a nový pokyn se řádně zadá. V příští kapitole si tedy zkusíme naprogramovat ukončení otevřeného pokynu a nejen to. Rozšíříme naší cvičnou EA i o pozici do shortu, přidáme nějaký indikátor pro výběr typu pozice (long/short), zkusíme si naprogramovat posunutí na break-even a také trailing stop. Naším cílem bude ukázat vám jednoduché kódy pro tyto jednotlivé varianty. Společně pak uvidíme, že tyto části kódů (např. trailing stop) je možné překopírovat do jiné EA a s minimálními úpravami jsou použitelné do většiny dalších EA, které budete programovat. 28
29 6. Zadáváme pozici short V minulé kapitole jsme dokončili naší první EA a ukázali si jak ověřit její funkčnost. Nyní si naší EA rozšíříme o short pozici. Zápis kódu již zvládnete jistě sami, je stejný jako u pozice buy, jen upravíme následující: Typ pozice bude OP_SELL, jako tržní cenu pro prodej musíme použít cenu Bid. Jako barvu pro šipku, která nám v grafu ukáže vstup do pozice, zvolíme červenou barvu. Je vám to určitě jasné, ale jen připomenu, že SL a PT zadáme vzorcem stejně jako u pokynu LONG. Ale pozor, v tomto případě musíme SL přičíst a PT odečíst. Pro úplnost viz. následující obrázek: Takže zapišme kód pro SHORT. Pro jednoduchost předpokládáme, že vstupujeme SHORT za stejných podmínek jako do LONGu, tzn. při otevření trhu ve 23:00 SEČ. Zápis vypadá takto: 29
30 Nyní si můžeme zkontrolovat dle návodu z minulé kapitoly, zda EA pracuje správně. Na následujícím obrázku vidíme, že se skutečně zadávají dvě pozice. Jedna LONG (označené modrou barvou) a jedna SHORT (označené červenou barvou). Všimněte si také toho, že křivka ekvity vypadá také jinak. Dokud jsme obchodovali pouze LONG pozici, křivka směřovala na jih. Nyní je vývoj více vybalancovaný. Ale to není teď podstatné. Projeďte si celý graf a zjistíte, že přidáním short pokynu se ještě zvětšil počet situací, kdy se zvýšil počet případů, kdy se pokyn neukončil v rámci daného týdne a přesáhl do následujícího, čímž se nazadaly short a long pokyn pro následující týden. Na konci minulého týdne jsme si řekli, že zkusíme naprogramovat ukončení pokynu k určitému časovému okamžiku. Řekněme tedy, že pokud se pokyn LONG či SHORT (nebo oba) neukončí do pátku zasažením PT či SL, tak je ukončíme v pátek ve 22:30 SEČ. Použijeme již znalosti z omezovače vstupů. Jako první věc budeme potřebovat počítadlo. Opět budeme v situaci, že bude v platformě MT4 zadáno x příkazů, my je potřebujeme jeden po druhém zkontrolovat, zda nepatří k naší EA, a pokud ano tak je ukončíme. Zápis počítadla bude vypadat následovně: for(p = 0; p < OrdersTotal(); p++) { } 30
31 Opět použijeme příkaz OrdersTotal(), který nám zjistí kolik celkem příkazů je aktuálně v MT4 a my potom provedeme opakovaně soubor operací uvedených v závorce. Jaký kód dáme do závorky (do těla počítadla)? Vložíme tam: 1) definici podmínek pro výstup a 2) samotný příkaz pro ukončení pokynu ad 1) definice podmínek bude jednoduchá (opět je to obdoba toho, co již známe z omezovače vstupů): if(orderselect(p, SELECT_BY_POS, MODE_TRADES)==true && D == 5 && h == 22 && m >= 30 && OrderMagicNumber()==Magic_number) Nejprve vybereme pokyn v MT4 s pořadovým číslem p (1,2, x) a u něj zjistíme jaký má magic number tzn. zda patří k naší EA či nikoliv. Pokud magic number odpovídá naší strategii, chceme obchod ukončit/zavřít. Ale pozor pamatujte, jak EA funguje běží stále dokola, tzn. že se příkaz zadá při otevření trhů ve 23:00 SEČ a hned v dalším cyklu by EA identifikovala otevřený pokyn a chtěla by ho zavřít, musíme proto ještě doplnit podmínku, kdy to smí udělat. A to je v pátek (tedy D == 5), ve 22 hodin (tedy h == 22) a ve 30 minut (tedy m == 30). Zde opět doporučuji neomezovat minuty pouze na 30 minutu, ale nahradit např. zápisem m >= 30. EA či broker můžou mít ve 22:30 výpadek a obnovit činnost až ve 22:32. Váš pokyn nebude uzavřen, pokud m == 30, pokud však zadáte, že příkaz se může zavřít ve 30 či výše, tak se příkaz zavře okamžitě po ukončení výpadku. ad 2) příkaz pro ukončení pokynu OrderClose ( ticket, lots, price, slippage, color) Struktura příkazu je velmi podobná struktuře příkazu OrderSend, který jsme si popisovali dříve. Je však o něco jednodušší, neboť cílem je uzavření obchodu, nepotřebujeme informace o PT, SL apod. abychom mohli pokyn zavřít. ticket zde je potřeba zadat číslo ticketu, který chceme zavřít. Počítadlo nám vybralo konkrétní pokyn dle pořadí a příkaz OrderTicket() zjistí číslo ticketu, takže dosadíme tuto funkci lots je objem pozice, který chceme uzavřít. V našem případě doplníme proměnou, kterou jsme použili pro definici objemu, který chceme obchodovat, tedy Velikost_pozice price cena, za kterou chceme vystoupit. Vystoupit chceme za tržní cenu, takže doplníme Bid či Ask. ALE POZOR! U long příkazu jsme vstupovali za Ask a tedy vystupujeme za Bid cenu a obráceně u short příkazu jsme vstupovali za Bid a vystupujeme tedy za Ask cenu. A pak už jen slippage a barva šipky (známe z minula). Příkaz by tedy měl vypadat takto (pro long): close=orderclose(orderticket(),velikost_pozice,bid,2,yellow) Proč je to tak důležité rozlišit Ask a Bid cenu? Trh se nemusí již příliš hýbat a u párů s velkým spreadem by se long za Ask cenu, která se bude lišit o spread od tržní ceny na ukončení long pozice (tedy Bid), nemusel zobchodovat. Proto vložíme do našeho kódu ještě jednu podmínku, která otestuje, zda se jedná o pokyn long či short a každému přiřadí svou vlastní cenu pro ukončení pozice. 31
32 Jak tedy bude vypadat zápis kódu: A je to. Jen ještě upozorním, že jsme použili dvě nové proměnné, které je potřeba definovat a to p, close. Opět si dejte pozor na závorky. Jednu sadu závorek má operátor for, druhou sadu operátor if a třetí sadu druhý operátor if, který rozpoznává, zda je příkaz long či short. Na konci zápisu kódu jsou tedy 3 závorky. A ještě jedna důležitá věc. Zápis kódu musíte dát před omezovač vstupů, jinak by nefungoval. Omezovač by zjistil, že existuje příkaz, který patří k naší EA a vrátí se na začátek. K našemu ukončovateli příkazů by ho tedy vůbec nepustil Zbývá tedy jen zmáčknout compile, spustit tester a podívat se na grafu, zda EA dělá to, co jsme chtěli: 32
33 Funguje výborně. Tento krátký kód můžete použít i do jiných EA. Podmínkami výstupu nemusí být jen časové hledisko, ale i jiné podmínky jako např. určitá hodnota indikátoru apod. Pouze upravíte podmínky pro ukončení. Musím uznat, že není úplně ideální vstupovat v jednom okamžiku short a long zároveň, V příští kapitole tedy přidáme do naší cvičné EA nové podmínky pro vstup. Ukážeme si dvě varianty. První vstup na bázi indikátoru. Druhý na bázi nějaké cenové formace. A pak již budeme vstupovat pouze jedním směrem, buď long, nebo short. EA se pak ještě pokusíme rozšířit o posunutí na break-even při dosažení určité ceny. 33
34 7. Zadání podmínek pro vstup a posun na break-even Začneme posunutím SL na break-even. V naší zkušební EA máme stanoven PT na úrovni 200 pipů. Zkusme nyní naprogramovat posunutí SL na break-even (na vstupní cenu) v okamžiku, kdy se bude trh vyvíjet správným směrem a dosáhne zisku 100 pipů. Opět to budeme programovat co nejvíce flexibilně. Budeme tedy definovat proměnou Posun_na_BE_v_pipech a to jako externí proměnnou, abychom ji mohli zadávat a testovat. Budeme ji zadávat v pipech a následně ji převedeme na cenové vyjádření, tak jako jsme to udělali u PT a SL v předchozích kapitolách. extern double Posun_na_BE_v_pipech = 1000; double BE = Posun_na_BE_v_pipech * Point; 34
35 Ani kód pro posunutí SL nebude složitý. Opět začneme počítadlem, tak jako u omezovače vstupů či kódu na ukončení otevřených pozic. Princip je stejný filtrujeme všechny obchody na účtu v MT4 a pokud patří k naší EA provedeme akci. V dalším kroku vydefinujeme podmínky, za kterých se má posun na BE provést. Opět použijeme již známé části kódu pro filtraci pokynů v MT4: OrderSelect(p,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY && OrderMagicNumber() ==Magic_number. Takže u vybraného pokynu otestujeme zda je BUY či SELL a zjistíme, zda magic number odpovídá naší EA (opakování z dřívějška). přidáme však testující podmínku, která nám řekne, kdy je zisk již větší než požadovaných 100 pipů. Podmínku vytvoříme takto: Bid >= OrderOpenPrice() + BE pro pokyn typu long. Bid je aktuální tržní cena, za kterou prodáváme. Testujeme proto situace, kdy bude aktuální tržní cena vyšší nebo rovno naší vstupní ceně + požadovaný počet pipů pro posun na BE. Vstupní cenu zjistíme příkazem OrderOpenPrice(), který nám zjistí cenu vstupu vybraného příkazu a přičteme k němu námi požadovaný BE. Když bude cena Bid vyšší měli bychom SL posunout. Ask <= OrderOpenPrice() BE pro pokyn short. Cena, za kterou short pozici ukončíme je Ask. Chceme tedy, aby byl Ask menší než vstupní cena mínus BE a pak posouváme SL. Do podmínek vložíme ještě následující podmínku: OrderStopLoss()!=OrderOpenPrice(). Má to jediný důvod. V okamžiku, kdy je tržní cena vyšší než požadovaných 100 pipů zisku, podmínka by byla pořád splněna a EA by se snažila znovu upravovat SL a to na stejnou hodnotu a to prakticky pořád dokola, dokud by buď nebyl zasažen PT (200 pipů) a nebo neklesl zisk pod 100 pipů. Nechceme EA nechat vykonávat zbytečné úkoly, proto vložíme podmínku, která říká, že posun na BE proveď pouze pokud se aktuální SL daného pokynu nerovná vstupní ceně tohoto pokynu. Jinak řečeno, jakmile se posune SL na BE, bude se rovnat vstupní ceně a tato podmínka nebude splněna, tak EA se nebude zbytečně snažit upravovat již upravený SL. Pokud tam tuto podmínku nedáte neznamená to, že by EA nefungovala, ale bude dělat řadu zbytečných úkonů. Zbývá již jen zadat příkaz pro modifikaci pokynu. OrderModify (ticket, price, stoploss, takeprofit, expiration, color) Vše se znovu opakuje jako u příkazů OrderSend a OrderClose, takže jen stručně: ticket číslo ticketu pokynu zjistíme příkazem OrderTicket() price je vstupní cena, tu nezle modifikovat. Její hodnotu zjistíme příkazem OrderOpenPrice() stoploss zde chceme upravit hodnotu a tedy zadáme hodnotu vstupní ceny tzn. OrderOpenPrice(). Jen pro pořádek samozřejmě můžeme doplnit i jinou cenu. Pokud chceme posunout SL jen o kousek nahoru např. 20 pipů doplníme OrderOrderStopLoss() + 20 * Point, nebo pokud nechceme posunut na BE a mít nulu, v případě že se trh vrátí a chceme alespoň malý zisk 10 pipů zadáme OrderOpenPrice() + 10 * Point, apod. takeprofit i zde je možné upravovat hodnotu. Zvyšovat jí či snižovat. My PT měnit nechceme, takže ponecháme jeho původní hodnotu, kterou zjistíme příkazem OrderTakeProfit() 35
36 expiration zde se dá změnit délka platnosti pokynu (ale pouze u čekajících pokynů). Ukážeme si později color barva šipky A můžeme zapsat finální kód do naší EA. My vám teď trochu zamotáme hlavu. V budoucnu vám budeme ukazovat ještě trailing stop a další části kódů, které budou vždy vycházet s podobného principu tzn. budeme využívat počítadlo atd. je zbytečné opisovat do EA počítadlo desetkrát. Můžeme použít to původní z kódu pro ukončení pozice a pouze posunout závorku. Zní to jednoduše, ale raději to ještě trochu popíšeme. Kód pro ukončení pozice v pátek vypadal takto: Kód pro posunutí na BE by vypadal takto: My oba kódy schováme pod jedno počítadlo: Není na tom nic složitého, ale je potřeba si dát pozor na závorky resp. jejich počet. Bohužel i operátory if používají závorky. Navíc v řadě případů budeme používat kaskádovité podmínky tzn. podmínku if (závorky) a v rámci toho další podmínku if (závorky) takže nám půjde ze závorek hlava kolem Podívejme se tedy na zápis kódu. Jen pro pořádek uvádíme, že ještě definujeme proměnou modify. 36
37 Není vám na těch kódech něco divné? V případě zavírání pozice jsou definovány podmínky pomocí operátoru if a do něj vloženy ještě další podmínky if, které testují, zda jde o BUY či SELL pozici. V případě posunu na BE máme definovány dvě samostatné skupiny podmínek if pro BUY a SELL samostatně. Oba zápisy jsou správně a fungují stejně. Záleží na vás jakým způsobem to uděláte. Nicméně není špatné si ustálit jednotný postup. Budete se v tom snáze orientovat a hledat chyby atd. Nicméně je Vám nyní jasné, že každý takovýto zápis je možné udělat několika různými způsoby. Znovu proto apelujeme na to, snažte se dělat kódy co nejpřehledněji a nešetřete komentáři. Vám i všem ostatním to usnadní orientaci v kódu. My proto upravíme zápis pro zavírání pozic následovně: 37
38 A teď zkusíme v testeru, zda funguje EA tak, jak má. 38
39 Výborně posun na BE funguje správně. Nyní se můžeme pustit na náš dnešní druhý úkol, a to je definice komplikovanějších podmínek pro vstup do pozice. EA v současné podobě vstupuje současně do long i short pozice. To není zrovna šťastné řešení a pojďme tedy vstupovat pouze do jednoho směru třeba na základě nějakého indikátoru. Zkusíme tedy naprogramovat následující podmínku: 1) když páteční svíčka zavře pod SMA(50), tak vstoupíme short 2) když páteční svíčka zavře nad SMA (50), tak vstoupíme long Nejprve si ukážeme jak zjistit hodnotu SMA(50). Výhodou je, že MQL má v sobě definovánu většinu standardních ukazatelů. Pro výpočet SMA tedy použijeme následující příkaz: ima (symbol, timeframe, period, ma_shift, ma_method, applied_price, shift) 39
40 Projdeme jednotlivé parametry: Symbol zde zadáme měnový pár, pro který zjišťujeme SMA. My vložíme příkaz Symbol(), který nám přiřadí měnový pár odpovídající tomu, který je v grafu. Takto jsme to již dělali v minulosti. To zajistí univerzálnost EA na jakkoliv měnový pár. Můžeme však zadat natvrdo i určitý měnový pár např. EURUSD. To má svůj význam v případě, že chceme obchodovat určitý měnový pár např. GBPUSD, ale vstupní podmínka se odvíjí od jiného měnového páru např. EURUSD. TimeFrame zde musíme zadat časový úsek, pro který chceme hodnotu SMA zjišťovat. My obchodujeme denní graf tzn. zadáme PERIOD_D1. Popis můžete zadat textově či číslem (viz. tabulka níže). My používáme textové označení, lépe si ho pamatujeme a je pro nás snáze rozpoznatelné. Textový kód Hodnota Popis PERIOD_M1 1 1 minute. PERIOD_M5 5 5 minutes. PERIOD_M minutes. PERIOD_M minutes. PERIOD_H hour. PERIOD_H hour. PERIOD_D Daily. PERIOD_W Weekly. PERIOD_MN Monthly. 0 (zero) 0 Timeframe used on the chart. Ma_shift někdy se setkáte s variantami průměrů s různým časovým posunem. To můžete zadat číslicí. Ma_method my používáme jednoduchý klouzavý průměr, takže zadáme hodnotu MODE_SMA. Můžeme však pracovat i s jinými typy klouzavých průměrů. Tabulka ukazuje textový či číselný kód pro různé varianty klouzavých průměrů: Textový kód Hodnota Popis MODE_SMA 0 Simple moving average, MODE_EMA 1 Exponential moving average, MODE_SMMA 2 Smoothed moving average, MODE_LWMA 3 Linear weighted moving average. Applied_price zde zadáme cenu, z které chceme klouzavý průměr počítat. My chceme použít zavírací ceny, takže doplníme PRICE_CLOSE. Další varianty cen uvádí tabulka: 40
41 Constant Value Description PRICE_CLOSE 0 Close price. PRICE_OPEN 1 Open price. PRICE_HIGH 2 High price. PRICE_LOW 3 Low price. PRICE_MEDIAN 4 Median price, (high+low)/2. PRICE_TYPICAL 5 Typical price, (high+low+close)/3. PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4. Shift určuje, pro kterou svíčku chceme hodnotu zjistit. Aktuální svíčka má pořadové číslo 0. Předchozí svíčka hodnotu 1, Předpředchozí svíčka má hodnotu 2. My doplníme hodnotu 1. Neboť my hodnotu SMA zjišťujeme v neděli. Tato svíčka má pořadí 0 a chceme vědět hodnotu SMA v pátek. Jelikož v sobotu se neobchoduje, sobotní svíčka v platformě není a nedělní svíčce předchozí páteční svíčka a doplníme tedy hodnotu 1. Toto je důležité pochopit, neboť se s tím budeme setkávat velice často. Připojujeme proto i ilustrační obrázek: Je patrné, že pokud bychom chtěli v neděli zjistit hodnotu z minulé středy, museli bychom zadat shift = 3. Celý zápis potom vypadá takto: SMA = ima(symbol(),period_d1,sma_period,0,mode_sma,price_close,1) Hodnotu SMA chceme porovnat se zavírací cenou v pátek. Zavírací cenu zjistíme následovně: C = iclose(null,period_d1,1) Příkaz iclose má 3 parametry. První je symbol. Zadáme buď Symbol() nebo NULL. Oba tyto výrazy zajistí, že bude přiřazen měnový pár z grafu. Druhý parametr je time frame a třetí parametr je shift. Opět doplníme 1, neboť chceme znát hodnotu pátečního close. Obdobně můžeme zjišťovat ceny open, high a low. Příkazy jsou iopen, ihigh a ilow. Nyní už stačí matematicky vyjádřit naše podmínky: 1) když páteční svíčka zavře pod SMA(50), tak vstoupíme short: SMA > C 2) když páteční svíčka zavře nad SMA (50), tak vstoupíme long: SMA < C Tyto podmínky doplníme do naší EA. 41
42 42
43 Uložíme pomocí Compile a otestujeme v testeru, zda EA funguje správně. Je vidět, že se již zadává pouze jeden pokyn, buď short nebo long. Z grafu je vidět, že se správně zadávají short i long pokyny podle toho, zda je SMA nad či pod pátečními cenami. Naše podmínky pro vstup jsou poměrně jednoduché, ale princip je vám již určitě zřejmý. Pokud bude vstup definován na základě kombinace více např. 4 indikátorů, tak budeme postupovat stejně, akorát budeme mít více proměnných. V příští kapitole tohoto e-booku o programování se pokusíme naprogramovat si jednoduchý trailing stop. 43
44 8. Programujeme trailing stop v MQL4 V této kapitole se pokusíme naprogramovat jednoduchý trailing stop. Trailovat můžeme podle různých pravidel. My se pokusíme naprogramovat trailing v následující podobě: V minulé kapitole jsme si naprogramovali posunutí SL na BE v okamžiku, kdy pokyn dosáhne zisku pipů. Trh se pak může vyvíjet dále v náš prospěch např. na pipů, pak se však může otočit a jít proti nám až zasáhne SL, který je na BE tzn. 0 pipů pro nás. Naprogramujeme tedy trailing stop tak, že jakmile poroste trh nad pipů budeme posouvat SL tak, aby byl 100 pipů od nejvyššího dosaženého high tzn. pokud dosáhne v čase náš obchod zisku +150 pipů měl by se SL posunout na úroveň + 50 pipů. Zápis kódu bude opět velmi podobný již předchozím zápisům. Opět budeme potřebovat počítadlo a budeme testovat každý pokyn, který vyfiltrujeme pomocí magic number a u něhož chceme zjistit, zda patří k naší EA. Počítadlo použijeme opět to původní a vložíme kód pro trailing stop a pouze posuneme závorku. Změnu SL provedeme pomocí příkazu OrderModify a to úplně stejně, jako jsme to dělali u posunutí na BE v minulé kapitole. Je to vlastně úplně stejné. Jediné v čem se zápis liší, je definice podmínek, kdy má ke změně SL dojít. Ty budeme definovat takto: Nadefinujeme proměnnou H a L jako High a Low aktuální svíčky a budeme testovat pro long okamžik, kdy H mínus cena vstupu bude větší než BE. BE jsme definovali v minulé kapitole jako zisk v pipech, při kterém převedeme posun SL na cenu vstupu. Tato podmínka zabezpečí, že příkaz OrderModify se uskuteční, pouze pokud zisk našeho obchodu překročí hodnotu BE, tedy 100 pipů. Pokud je méně než 100 pipů, nechceme SL posouvat! Na druhou stranu zisk může být nad 100 pipy zisku poměrně dlouhou dobu a pokyn by se stále dokola modifikoval a to také nechceme, proto vložíme ještě jednu podmínku, která porovná jaký SL máme u příkazu zadán a pokud bude odpovídat naším požadavkům, nebudeme ho již znovu zbytečně modifikovat. Podmínku definujeme takto H-SL > než aktuální zadaný SL příkazu. Pokud bude H SL (v našem případu High mínus 100 pipů) větší než nastavený SL příkazu provedeme modifikaci tak, že SL nastavíme ve výši H-SL. Tím zabráníme cyklickému znovunastavování SL a to do doby, než trh dosáhne nového H. Nevím, zda je to naprosto zřejmé a tak si to ukážeme ještě jednou na následujícím obrázku. 44
45 Vstoupíme a nastavíme SL na úrovni 100 pipů. Trh se vyvíjí a až do bodu A nedosáhne zisku 100 pipů. V bodě A dosahuje zisku pipů a dojde k posunu SL na BE. Od bodu A až do bodu B platí, že H-SL (tedy High 100 pipů) je vyšší než aktuální zadaný SL příkazu a dojde tedy k jeho modifikaci a SL až do bodu B roste. Od bodu B do bodu C není H-SL vyšší než zadaný SL a proto nedochází k jeho modifikaci. Od bodu C až do bodu D opět platí, že H-SL je vyšší než zadaný SL a dochází tedy k jeho modifikaci. Od bodu D opět nedochází k modifikaci SL. Pro short stanovíme podmínky obdobně, akorát vše odvíjíme od Low. Zápis kódu bude tedy vypadat následovně: Jen připomínáme, že definujeme dvě nové proměnné H a L, dále vkládáme kód pro trailing. Využíváme stávající počítadlo (for { }) Musíme tedy posunout poslední závorku za vkládaný kód. Provedli jsme ještě drobnou změnu v kódu pro Posun na BE, ale důvod si řekneme později. 45
46 Teď se podíváme, zda EA dělá to, co si přejeme a posouvá SL dle našeho požadavku. Spustíme testr a otevřeme si graf. Vidíme, že EA pracuje, jak má. Ten se jen krátce vrátíme k tomu, proč jsme provedli ještě drobnou korekci v kódu pro Posun na BE. Tato část ztratila opodstatnění, a pokud ji celou smažete, EA bude fungovat stejně. Naše podmínka H-SL v trailing stopu totiž způsobí, že když bude High +100 pipů od našeho vstupu, SL se zadá ve výši H-SL tedy tedy 0 pipů. My jsme však část Posun na BE v EA nechali, ale při spuštění testeru se EA zacyklovala. V době, kdy byl náš příkaz v zisku více než 100 pipů docházelo k tomu, že SL se posunul dle kódu Posun na BE na cenu vstupu, protože byl však trh výše než pipů zisku zafungoval i kód pro traling stop a SL se posunul ještě výše. 46
47 Víme, že EA funguje v cyklu stále dokola a tak v další smyčce opět Posun na BE posunul SL zpět na vstupní cenu a kód pro trailing stop opět výše dle dosaženého High. Tento problém jsme tedy vyřešili úpravou podmínky v kódu pro Posun na BE, kde jsem stanovili, že modifikace SL se má provést pouze pokud je SL příkazu menší než vstupní cena. Tím jsem zajistili, že posun na vstupní cenu dle kódu Posun na BE se posunu pouze při prvním dosažení zisku pipů a pak již ne. Vraťme se však ještě k trailing stopu. Vyzkoušejme si, jak funguje v případě, že PT zadáme hodně vysoký např pipů. Dáme tak prostor obchodu růst mnohem významněji. Podívejme se na graf z testeru: 47
48 Na grafu je vidět pěkný trade z počátku ledna Zde je vidět, jak trailing pěkně zafungoval. Obchod hned vyrazil naším směrem. Nedosáhl však hranice zisku pipů a neposunul se tak na BE. Pak se trh otočil a jen o chlup nebyl zasažen náš SL. Pak už se trh utrhl a šel pouze naším směrem. Obchod byl ukončen v pátek před zavřením trhů, tak jak je v EA naprogramováno. Tento pěkný trade nakonec skončil v zisku pipů. V grafu je naznačen vývoj SL v čase a je vidět, že po celou dobu nebyl zasažen. Samozřejmě trailing stop můžeme konstruovat i jinak. Je důležité si pamatovat, že potřebujeme počítadlo a příkaz OrderModify a pak už je to jen o tom stanovit si podmínky, kdy má k posunu SL dojít. Tím jsme si ukázali ty nejzákladnější věci, které můžeme při tvorbě vlastní EA potřebovat. Troufáme si říct, že teď již každý z vás zvládne nějakou vlastní jednoduchou EA naprogramovat. Je tu však ještě jedna věc, ke které bychom se chtěli v příští kapitole vrátit, a to jsou čekající pokyny. Zatím jsme si ukazovali vstupy pouze za aktuální tržní cenu a příště si ukážeme, jak zadat čekací pokyn typu STOP a LIMIT. 48
49 9. Zadání pokynů typu STOP a LIMIT Dnes si ukážeme jak naprogramovat zadání čekajících pokynů. Opět využijeme naši pokusnou strategii. Zatím jsme vstupovali pouze za tržní cenu. Vstupovali jsme v neděli při otevření trhů a to do longu i shortu zároveň. Posleze jsme přidali filtr a pokud cena v pátek zavřela pod SMA (50), tak jsme vstupovali pouze SHORT. Pokud naopak cena v pátek zavřela nad SMA(50) šli jsme v neděli pouze LONG. Abychom si ukázali čekající pokyny, nebudeme vstupovat do trhu v neděli hned. Pokud budeme mít signál do LONGU, budeme chtít vstoupit až při proražení high pátečního dne o 2 pipy. Naopak, pokud budeme mít signál do SHORTU, tak budeme chtít vstoupit až na proražení low páteční svíčky alespoň o 2 pipy. Povězme si nyní více o definici příkazu OrderSend. OrderSend (symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color) Příkaz má 11 parametrů, které jsme si již popsali ve 4. kapitole. Pro zopakování si popíšeme všech 11 parametrů. Ty, které již známe, jsem označil kurzívou, můžete je přeskočit. Symbol definuje měnový pár, na kterém chceme pozici zadat. Zde jsme zadali příkaz Symbol (). Je zde možno definovat měnový pár textovým řetězcem a uvést konkrétně např. EURUSD či jiný pár. Problém je, že EA pak bude fungovat/zadávat příkazy pouze na tomto měnovém páru. Příkaz Symbol() sám přiřadí ten měnový pár z grafu, na který naši EA umístíme. Tím bude naše EA univerzální a použitelná pro libovolný měnový pár. Cmd definuje typ příkazu, tzn. zda půjde o příkaz typu market (okamžitý vstup do trhu), nebo o čekající pokyn typu LIMIT nebo STOP. Každý typ má svůj kód, a nebo může být vyjádřen číslicí. My používáme textové značení, lépe si ho zapamatujete. Rozeznáváme tedy: OP_BUY (nebo číselný kód:0) pro pokyn typu MARKET a typ pozice buy (long/nákup) OP_SELL (1) pro pokyn typu MARKET a typ pozice sell (short/prodej) OP_BUYLIMIT (2) pro pokyn typu LIMIT a typ pozice buy (long/nákup) OP_SELLLIMIT (3) pro pokyn typu LIMIT a typ pozice sell (short/prodej) OP_BUYSTOP (4) pro pokyn typu STOP a typ pozice buy (long/nákup) OP_SELLSTOP (5) pro pokyn typu STOP a typ pozice sell (short/prodej) V našem případě chceme vstupovat při proražení high pátečního dne, zadáme tedy OP_BUYSTOP. Volume definuje velikost pozice. Můžeme zadat natvrdo např lotu, tak jako jsme to udělali my. Nicméně navrhujeme to opravit, aby byla EA více flexibilní. Místo 0.01 zadáme proměnou Velikost_pozice. Tuto novou proměnnou vydefinujeme jako externí proměnou, abychom jí mohli libovolně měnit. Jelikož velikost pozice může být desetinné číslo, použijeme datový typ double. 49
50 extern double Velikost_pozice = 0.01; // definice velikosti pozice pro obchodování Price je cena, za kterou chceme vstoupit. Když jsme vstoupovali za MARKET volili jsme cenu Ask (pro buy/long) a nebo Bid (pro sell/short). U pokynů typu LIMIT nebo STOP zadáváme cenu v závislosti na pravidlech strategie, kterou programujeme. V našem případě pro LONG se cena definuje jako H1+2*Point pro SHORT definujeme cenu jako L1-2*Point, kde: H1 = ihigh(null,period_d1,1) L1 = ilow(null,period_d1,1) neboli H1 (high o jednu svíčku zpět tzn. v pátek), stejně tak L1 Slippage zde je možné zadat max. požadovanou odchylku při exekuci příkazu Stoploss zde zadáme cenu, na které chceme obchod ukončit, pokud se vyvíjí proti nám. Definovali jsme ho rovnicí H1+2*Point-SL. Pro pozici SHORT postupujeme stejně: L1-2*Point + SL TakeProfit zde zadáme cenu, na které chceme vystoupit, když jde obchod naším směrem. Do OrderSend zapíšeme výstupní cenu jako H1+2*Point+PT. U SHORTU je to L1-2*Point PT Comment slouží pro zadání komentáře. Nemusí se zde nic zadávat, nicméně my to používáme, neboť tento text se tak objevuje v MT4 jako komentář k obchodu. Pokud obchodujete na jednom účtu více strategií/ea, hodně vám to usnadní orientaci, který obchod patří ke které EA. Opět využijeme definici pomocí nové proměnné, kterou pojmenujeme Text. Jelikož se jedná o textovou proměnnou, použijeme pro její definici datový typ string. Text musí být v uvozovkách. string Text = Moje první strategie Text Moje první strategie můžeme dát přímo do OrderSend, ale zase platí, že u složitějších EA by bylo náročně text na všech místech přepisovat v případě změny Magic number zde se zadává tzv. magické číslo. Nehledejte v tom nic mystického. Toto číslo pomáhá při identifikaci jednotlivých příkazů zadaných na vašem účtu, resp. k identifikace příslušnosti příkazu k dané EA. Můžeme napsat natvrdo číslo např. 1122, ale my opět použijeme zápisu přes proměnnou definovanou jako Magic_number Expiration zde budeme definovat dobu platnosti pokynu. Použijeme formulaci itime(symbol(),period_d1,0) Příkaz itime(symbol(),period_d1,0) nám definuje čas, kdy započala svíčka 0. Jelikož je to denní svíčka je počáteční čas vždy 0:00 a to i u nedělní svíčky, ikdyž reálně začíná až v 23:00 SEČ. K tomuto času pak přípočteme čas v sekundách. Pokud chceme, aby příkaz trval 24 hodin = 24 * 60 * 60 = Arrow_color zde můžeme napsat barvu, např. Blue či Red atd. Pokud zde uvedeme nějakou barvu, tak když se pokyn zadá, tak se v grafu objeví šipka dle zvolené barvy. My toto použijeme a zadáme si modrou barvu pro LONG a červenou u SHORT. Je to spíše grafická pomůcka a nemá to žádný vliv na zadávaný pokyn. 50
51 Zapišme tedy vše do kódu: Nezapomeňme definovat H1 a L1 a upravit příkazy OrderSend pro LONG a SHORT. Ale než se do toho pustíme, musíme si ukázat ještě jednu věc, která je odlišná od vstupu za MARKET. Když jsme vstupovali za cenu Ask (LONG) a Bid (SHORT). Teď však vstupujeme za cenu definovanou jako high a low. Ale POZOR! Jak už víme z předchozích kapitol, všechny ceny, které takto vypočteme či vidíme v grafu jsou vyjádřené v ceně poptávkové (Bid). Proto musíme pro vstupy do LONGU přičíst k ceně ještě spread. Cena vstupu je tedy: H1+2*Point + Spread, kde Spread = MarketInfo(Symbol(),MODE_SPREAD) * Point Provedeme proto dopnění proměnných: 51
52 Nakonec upravíme i samotný příkaz pro vstup do LONGU a SHORTU. Provedeme ještě jednu změnu. Budeme chtít, aby příkaz zůstal aktivní až do pátka tzn. počet sekund = * 6 = (neděle, pondělí, úterý, středa, čtvrtek a pátek = celkem 6 dnů) Nyní se podíváme do testeru, zda strategie dělá to co má? 52
53 Je to v pořádku. Je vidět, že páteční cena zavřela pod SMA (50) A nastavil se čekací pokyn pro SHORT. Ten nebyl celý týden aktivován a vypršel v pátek. Cena v druhý pátek zavřela nad SMA (50) a zadává se tedy čekající pokyn, který se v úterý aktivoval. V příští kapitole se podíváme na to, jak spustit více EA najednou. 53
54 10. Spuštění více EA najednou V minulých kapitolách jsme si ukázali, jak vytvořit vlastní EA. V páté kapitole tohoto e-booku je jednoduchá ukázka, jak nastavit automatické obchodování vaší EA v MT4. Dnes si ukážeme, jak to udělat, pokud chceme obchodovat více EA najednou. Postup nastavení je stejný jen si musíme otevřít více oken grafu. Pokud chceme nastavit 3 EA obchodované na páru EURUSD, otevřeme si 3 grafy EURUSD a v každém grafu nastavíme jinou EA. Nastavení EA v MT4 provedeme jednoduše tažením myší. Vybranou strategii přetáhneme do okna grafu měnového páru, na kterém chceme vybranou EA obchodovat (viz. následující obrázek). Objeví se nám dialogové okno, ve kterém můžeme upravit parametry nastavení strategie. Pokud chceme, aby EA obchodovala sama, musíme tuto volbu zaškrtnout. Na druhé záložce můžeme upravovat ty proměnné, které jsme si nadefinovali jako externí. 54
55 Aby EA řádně fungovala, je ještě třeba kliknout na tlačítko Zapnout strategie. To, že je EA správně aktivována poznáte tím, že se v pravém horním rohu grafu vedle jména EA objeví symbol smajlíka. Od tohoto okamžiku se již bude EA aktivně obchodovat. Další EA nastavíme stejně avšak na dalším grafu EURUSD. Avšak pozor zapnutím tlačítka Zapnout strategie se budou obchodovat všechny strategie, které máte na jednotlivých grafech nastavené. Pokud nechcete, aby se některá EA obchodovala, musíte buď tuto strategii odstranit, a nebo odkliknout volbu Umožnit obchodovat viz. výše. Takováto EA se pak nebude obchodovat, ikdyž tlačítko Zapnout strategie bude aktivní. Vše je jednoduché a určitě to zvládnete, ale je tu však jedna věc, na kterou vás musím upozornit a to je magic number. Určitě jste si všimli, že jsme v naší cvičné EA nastavili Magic number = Možná se vám to zdálo jako zbytečná proměnná, ale bez ní by více EA najednou nefungovalo. Každá EA má jiné výstupní parametry. Potřebujeme, aby EA poznala, který pokyn k té konkrétní EA patří. Když jsme se učili programovat, netušili jsme to a spustili jsme všechny EA bez magic number. Pořád jsme nechápali, proč se nám najednou ukončil pokyn na USDJPY, když ještě nebyly splněny podmínky pro výstup? Důvodem bylo to, že splnil podmínky, které jsme měli stanovené pro jinou EA na EURUSD a protože EA si myslela, že je to pokyn, který k ní patří, tak ho uzavřela. Proto je potřeba vždy striktně v EA testovat, jaké magic number daný pokyn má a zda patří k dané EA. 55
56 Na obrázku vidíte souběh několika EA na jednom účtu. Abychom se v pokynech lépe vyznali, stanovili jsme si určitý model přidělování čísel magic numbers. Testujeme řadu EA a každé přidělujeme při testování číslo např. 1,2,3, 21,22, atd. Pokud se pak rozhodneme obchodovat live odvodíme magic number od tohoto čísla a upravíme ho na 4 místa (např. z 3 uděláme 3000, z 5 uděláme 5000, ze 17 uděláme 1700). Často obchodujeme jednu strategii na více párech. Pro jednotlivé páry pak vycházíme ze čtyřmístného čísla následovně: např. pro EURUSD dáme 5001, pro USDCHF 5002, pro USDJPY 5003 atd. Samozřejmě číslování můžete zvolit jakkoliv jinak. Neexistuje žádné dané pravidlo, jediné co musíte dodržet je to, že každé magic number je unikátní číslo. Pokud by měly dvě EA stejné magic number hrozí, že vaše pokyny nebudou fungovat správně. Pokud máte na účtě spuštěno více EA, snadno ztratíte přehled o tom, který pokyn patří k té které EA. Proto jsme si vytvořili jednotný formát i pro komentář, který lze u každé EA zadat, a který se pak zobrazuje i v MT4 u jednotlivých pokynů. string Text = Magic_number+ _DEB_ +Symbol()+ _XTB ; Tuto formuli používáme pro všechny své EA. Červeně označené řetězce natáhnou magic number dané EA a měnový pár, na kterém je nastaven. Zbylé řetězce si pro každou EA upravujeme ručně. Např. DEB je zkratka Daily extreme breakout (název strategie) a XTB je broker, na kterém jsme strategii testovali. Text pak vložíme do příkazu pro otevření pokynu: ticket = OrderSend(Symbol(),OP_SELLSTOP,Objem,L-Pr,0,L-Pr+SL,L-Pr-PT,Text,Magic_number,0,Red); 56
57 Na obrázku výše vidíte, že u každého pokynu hned vidíme informaci o magic number, názvu strategie (EA), atd. Magic number má však ještě jednu výhodu, pomůže vám při analýze realizovaných obchodů. Bohužel MT4 nenabízí analýzu či statistiku podle jednotlivých EA. Můžete si však stáhnout následující podrobný report: Tyto data můžeme stáhnout do excelu a využít magic number pro detailní analýzu dat. Můžete si udělat v excelu malý analyzátor realizovaných obchodů. Díky magic number můžete získat řadu zajímavých a zároveň důležitých informací. Podívejte se na následující příklad: 57
58 Analýza, kterou používáme je daleko sofistikovanější (ekvitní křivky pro jednotlivé strategie, průběhy v čase, po měsících, kvartálech atd ). Zde je jen malá ukázka z celkového reportu. Jedná se o účet u ActivTrades, který použíme na testování nových EA. Zobrazuje obchodování od počátku roku do poloviny května. Report nám pomáhá rychle se zorientovat, jak se jednotlivým EA daří, kolik realizovaly obchodů, s jakým procentem úspěšnosti atd. Je na libovůli každého, jak si report uzpůsobí svým potřebám. Možná jste si všimli, že v komentářích u obchodů na obrázku MT4 nahoře se objevují v komentářích u názvu strategie ještě čísla v závorkách (1),(2) a (3). Jedná se o označení jednotlivých pokynů. U řady strategií otvíráme více pokynů, první pokyn (1) většinou uzavíráme na prvním PT, druhý pokyn (2) na druhém PT a třetí (3) necháváme trailovat. Zároveň 2 a 3 třeba posouváme na BE, pokud 1 dosáhne zisku. Jak otevřít více pokynů najednou si ukážeme příště. 58
59 11. Zadání většího počtu pozic v EA V této kapitole si ukážeme, jak naprogramovat vstup více kontraktu, u kterých stanovíme různé hladiny výstupů. Použijeme opět naší pokusnou strategii, které v současnosti vstupuje do trhu jedním příkazem. Naprogramujeme teď vstup 2 příkazů, kdy první bude vystupovat na pevném PT ve výši 100 pipů a druhý necháme trailovat podle high/low, tak jak jsme si to do naší EA naprogramovali minule. Způsoby, jak to udělat jsou dva: 1) buď zadáme dva příkazy, kdy u jednoho zadáme pevný PT (např. 50 pipů) a u druhého zadáme 0 a necháme ho trailovat, nebo 2) zadáme jen jeden příkaz, ale v dvojnásobném objemu pozice. Musíme ho zadat bez PT a při splnění podmínky PT uzavřít polovinu pozice a druhou nechat trailovat Ukážeme si oba případy. Začneme tím prvním, tedy zadání dvou příkazů: Vytvoříme si novou proměnnou ticket2 a přidáme novou textovou proměnnou Text2 pro odlišení popisu prvního a druhého příkazu: 59
60 a doplníme zápis nového long a short příkazu. Nezapomeňte zadat PT=0 a příkaz označit Textem2 Ještě přepiště PT na 100 pipů a může se podívat na testr, zda se zadávají oba pokyny správně. 60
61 Výborně, vše funguje. Teď se to pokusíme udělat pouze jednou pozicí, ale s dvojnásobným objemem. Nejprve jednoduše upravíme zadání long a short pokynu. Zdvojnásobíme velikost pozice a vynulujeme PT Nyní musíme naprogramovat uzavření poloviny pozice při dosažení PT. Kód bude velmi podobný, jako když jsme testovali cenu a posouvali příkaz na BE (viz. kapitola 7). Opět klasická smyčka for testujeme, zda existuje pokyn s naším magic number, zda je short či long a zda aktuální Bid či Ask překročil náš profit target a pokud ano, tak uzavřeme polovinu otevřené pozice příkazem OrderClose (to již také umíme). ALE POZOR! Pokud takto uděláme, uzavře se nám polovina pozice a následně i druhá. Proč? Už jsme si několikrát říkali, že EA pracuje neustále ve smyčce, takže zjistí, že existuje pokyn s magic number, je buy či sell a ask či bid přepročil PT a provede uzavření poloviny pozice. V dalším cyklu je však podmínka splněna znovu a tak provede znovu zavření poloviny pozice a je to! Proto do testovací podmínky vložíme ještě jednu podmínku a to: 61
62 OrderLots()==Velikost_pozice*2 Příkaz OrderLots zjistí aktuální velikost pozice. Pokud se rovná vstupnímu objemu, tak dojde k zavření poloviny pozice. Avšak v druhé a dalších smyčkách již tato podmínka nebude splněna, a tak se nám druhá polovina pozice neuzavře. Určitě to již zvládnete sami, ale pro kontrolu přikládám kód. Jak už jsme si řekli dříve, nemusíme tvořit novou smyčku for, ale můžeme kód vložit do stávající smyčky A pro kontrolu koukneme, zda strategie dělá to co má 62
63 Funguje v čem je vlastně rozdíl mezi variantou 1 a 2. Výsledek je stejný, ale v testru budete vidět rozdílný počet pozic (viz. následující obrázek) U varianty 2 vidíte, že v některých případech je uzavřena celá pozice najednou (někdy se uzavře polovina na PT a druhá dle trailingu). Vidíte, že testr vám ukazuje u varianty 2 velikost pozic. 63
64 A kterou variantu máte používat? Je to jedno, při testování preferujeme první variantu, neboť při běhu více strategií s více kontrakty máme lepší přehled. Viz např. následující obrázek: Hned vidíme, že strategie Inside bar na EURUSD již zavřela první kontrakt a druhý ještě trailuje. Na strategii SDS na japoncovi ještě běží 2. a 3. kontrakt atd. Na druhou stranu, již se nám stalo, že trh byl při zadávání pokynů hodně rychlý a EA se při zadávání pokynů zasekla a zadal se ze 3 kontraktů pouze jeden či dva (na demu se to nestává, ale na live to není neobvyklé). To se vám u varianty 2 nestane, neboť vstoupíme hned celým objemem. Proto pokud vstupujeme za market a EA obchodujeme live, tak používáme spíše variantu 2 (viz. na předchozím obrázku strategie (Gapy). U stop a limit příkazů používáme variantu 1. Doufám, že je vám princip jasný a zvládnete již sami naprogramovat strategii, pokud chci vstoupit např. se 3 či více kontrakty. Teď již umíme sestavit vlastní EA a můžete se vrhnout na programování dalších. Samozřejmě při tvorbě EA se dost často dostaneme do situací, že vše nefunguje jak má a budeme se prát s různými errory. Proto se v příští kapitole podíváme na errory v EA. 64
65 12. Errory při používání EA V této kapitole se budeme zabývat errory v MQL4. V předchozích kapitolách jsme si ukázali, jak naprogramovat vlastní EA. Zatím jsme se setkali s errory přímo v kódu, které jsme odstraňovali, abychom vůbec mohli naší EA spustit. Bohužel tím, že se nám podaří odstranit všechny chyby v kódu to zcela nekončí. V reálném obchodování EA se setkáme s řadou dalších errorů, které budou souviset s trhem a jeho vývojem, kotací ceny apod. Zapneme EA, nastanou podmínky pro vstup do trhu, ale příkaz se neprovede. Co s tím? Nejprve musíme zjistit, co způsobilo chybu a pak ji můžeme zkusit odstranit. Každá chyba má jsou číselnou hodnotu, viz. následující tabulka: Value Constant Description 0 ERR_NO_ERROR No error returned. 1 ERR_NO_RESULT No error returned, but the result is unknown. 2 ERR_COMMON_ERROR Common error. 3 ERR_INVALID_TRADE_PARAMETERS Invalid trade parameters. 4 ERR_SERVER_BUSY Trade server is busy. 5 ERR_OLD_VERSION Old version of the client terminal. 6 ERR_NO_CONNECTION No connection with trade server. 7 ERR_NOT_ENOUGH_RIGHTS Not enough rights. 8 ERR_TOO_FREQUENT_REQUESTS Too frequent requests. 9 ERR_MALFUNCTIONAL_TRADE Malfunctional trade operation. 64 ERR_ACCOUNT_DISABLED Account disabled. 65 ERR_INVALID_ACCOUNT Invalid account. 128 ERR_TRADE_TIMEOUT Trade timeout. 129 ERR_INVALID_PRICE Invalid price. 65
66 130 ERR_INVALID_STOPS Invalid stops. 131 ERR_INVALID_TRADE_VOLUME Invalid trade volume. 132 ERR_MARKET_CLOSED Market is closed. 133 ERR_TRADE_DISABLED Trade is disabled. 134 ERR_NOT_ENOUGH_MONEY Not enough money. 135 ERR_PRICE_CHANGED Price changed. 136 ERR_OFF_QUOTES Off quotes. 137 ERR_BROKER_BUSY Broker is busy. 138 ERR_REQUOTE Requote. 139 ERR_ORDER_LOCKED Order is locked. 140 ERR_LONG_POSITIONS_ONLY_ALLOWED Long positions only allowed. 141 ERR_TOO_MANY_REQUESTS Too many requests. 145 ERR_TRADE_MODIFY_DENIED Modification denied because order too close to market. 146 ERR_TRADE_CONTEXT_BUSY Trade context is busy. 147 ERR_TRADE_EXPIRATION_DENIED Expirations are denied by broker. 148 ERR_TRADE_TOO_MANY_ORDERS 149 ERR_TRADE_HEDGE_PROHIBITED The amount of open and pending orders has reached the limit set by the broker. An attempt to open a position opposite to the existing one when hedging is disabled. 150 ERR_TRADE_PROHIBITED_BY_FIFO An attempt to close a position contravening the FIFO rule. Abychom zjistili, k jaké chybě došlo, tak musíme do našeho kódu zaimplementovat následující podmínku. Určitě si pamatujete, že když jsme umísťovali příkaz do trhu, tak jsme použili proměnnou ticket = OrderSend(.). Pokud se příkaz z nějakého důvodu neprovede, tak proměnná ticket dosáhne hodnoty -1. A toho můžeme využít, proto hned za příkaz OrderSend dáme následující kód: if (ticket==-1){err=getlasterror();print( Send error(,err, )_,Text); Zavedeme novou proměnou err a pokud ticket = -1 (tzn. že se příkaz OrderSend neprovedl správně), přiřadíme proměnné err hodnotu vzniklé chyby. Poté příkazem Print vytiskneme číslo chyby tak, abychom věděli, k jaké chybě došlo. Pro přehlednost zadáváme do tisku následující texty: Send error nebo text Modify error či Delete error abychom věděli, který typ příkazu způsobil chybu. Poté se vytiskne číslo chyby, tedy hodnota proměnné err a nakonec doplňujeme proměnnou Text, kterou používáme např. u příkazu OrderSend. Důvodem je to, že pokud máme spuštěno více EA najednou, tak potřebujeme vědět, u které EA/strategie chyba vznikla. Zápis chyby pak najdeme na záložce deník a zápis může vypadat takto: 66
67 Send error (129)_Gap system, nebo Modify error (132)_SDS system(2) apod. Takže hned vidíme, že chyba vznikla při zadávání příkazu u Gap systemu, nebo že došlo k chybě při modifikaci u SDS systemu apod. Podívejme se na tuto podmínku a to, jak bychom jí mohli zaimplementovat do kódu. V tomto článku bychom chtěli ještě upozornit na jednu chybu, která souvisí s tím, zda používáte 4 nebo 5-ti místného brokera. Na tento problém jsme narazili v době, kdy se začali objevovat brokeři, kteří kotovali cenu na 5 míst. Ačkoliv u 4-místného brokera můžete běžně cenu zadávat ve vazbě na Ask či Bid. Tzn. můžeme v příkazu v OrderSend zadat vstup do longu za Ask a PT stanovit na cenu Ask+PT a SL stanovit jako Ask-SL (tak, jak jsme si to ukazovali při tvorbě naší pokusné strategie v předchozích kapitolách). Tento zápis bude u 4-místného brokera bezproblémově fungovat, avšak u 5-ti místného ne. U 5-ti místného brokera nelze nastavit PT a SL odvozený od Bid a Ask ceny při vstupu. To znamená, že nejdřív se musí zadat příkaz na vstup za Bid (u short) nebo Ask (u longu) a následně příkaz modifikovat a zadat SL a PT. Ukažme si to na následujícím kódu. Místo zápisu SL a PT dáme nuly a po zadání příkazu ho ihned zmodifikujeme: Opět použijeme smyčku s příkazem for, vyhledáme aktivní příkaz, který má magic number shodný s naší strategií a následně PT a SL upravíme pomocí příkazu Modify. V příští kapitole našeho e-booku si ukážeme, jak naprogramovat jednoduchý indikátor. 67
68 13. Jak na indikátor do MT4 V dnešním článku se pokusíme naprogramovat jednoduchý indikátor. Zkusme například naprogramovat Gannův indikátor, který v klasické nabídce indikátorů v MT4 nenajdeme. Vzorec pro výpočet indikátoru je jednoduchý = (((High Open) + (Close Low)) / 2*Range)*100. Pusťme se tedy do programování indikátoru. Nejprve otevřeme nový soubor, tak jako jsme začínali při programování naší pokusné strategie: Tentokrát však nezvolíme Expert Advisor, ale zvolíme Custom Indicator. V dalším okně pak můžeme zaškrtnout, že chceme zobrazit indikátor ve vlastním okně. To bude náš případ. Pokud bychom chtěli programovat indikátor, který chceme zobrazit přímo v grafu a ne pod ním, tak tuto volbu nezaškrtneme. 68
69 potvrdíme a otevře se nám základní kostra. Prakticky shodná s tou, kterou jsme si ukazovali v kapitole 3. Strukturu si již nebudeme znovu vysvětlovat, kdyžtak se podívejte zpět do kapitoly 3. Všimněte si, že již v kódu máme zápis pro zobrazení indikátoru ve vlasním (separátním) oknu. Pokud bychom chtěli zobrazit indikátor přímo v grafu (např. pokud bychom programovali klouzavý průměr, ATR, Bollinger Bands apod.) vložíme: indicator_chart_window a indikátor se vykreslí v okně grafu Klíčovým prvkem v tvorbě indikátorů jsou buffery. Představme si to jako dlouhé pytle, do kterých si budeme ukládat vypočtené hodnoty indikátoru pěkně za sebou pro svíčku 1, svíčku 2, svíčku 3 atd. Každý buffer si pojmenujeme, a kdykoliv budeme potřebovat hodnotu indikátoru x-svíček zpět vždycky jí v našem pytli najdeme. Bufferů můžeme mít celkem 8. Nevím, zda to někdy využijete, ale běžně využijete 1-3 buffery. My 69
70 dnes použijeme 1, ale pokud bychom dělali indikátor např. 2 klouzavých průměrů (pro dvě různé periody, a chtěli bychom vykreslit 2 křivky), potřebovali bychom buffery 2. Musíme tady vydefinovat počet bufferů, které pro indikátor použijeme v našem případě tedy: #property indicator_buffers 1 Další věc, kterou si můžeme nadefinovat je barva indikátoru. Řekněme, že chceme zelenou a zapíšeme takto: #property indicator_color1 Green. Pokud bychom měli více bufferů (křivek) doplníme i barvu pro druhý buffer např. červenou: #property indicator_color2 Red. Všimněte si, že za slovem color (barva) je potřeba doplnit číslici (pořadí bufferu), jemuž chceme barvu přiřadit. V úvodu musíme také vydefinovat proměnné, tak jako jsme to dělali u EA. Konkrétně musíme vydefinovat označení jednotlivých bufferů. My máme jeden a zápis bude vypadat takto: double Buffer1[]; Identicky bychom definovali další buffery, pokud bychom je měli. Dále do části init() vložíme parametry, které chceme načíst hned na začátku a to: IndicatorShortName( Gann indikátor ); SetIndexStyle(0,DRAW_LINE); 70
71 SetIndexBuffer(0,Buffer1); První řádka kódu definuje název indikátoru, který se nám v okně zobrazí. Toto není povinné, ale je to více než praktické, vidět název použitého indikátoru. Další povel SetIndexStyle definuje, jak má být náš indikátor zobrazován. Ačkoliv my si zde definujeme pouze dva parametry lze definovat celkem 4 např. SetIndexStyle(3, DRAW_LINE, EMPTY, 2, Red). 1) První číslo je line index můžete doplňovat hodnoty 0-7. Pro první buffer přiřadíme 0, Pokud bychom měli 2 buffery, tak druhému bychom přiřadili line index 1 tzn. SetIndexStyle(1, DRAW_LINE) 2) Druhý parametr je typ zobrazení indikátoru. My jsme použili klasickou čáru, ale na výběr jsou ještě následující typy: DRAW_LINE, DRAW_SECTION, DRAW_HISTOGRAM, DRAW_ARROW, DRAW_ZIGZAG. 3) Třetí parametr je šířka čáry. 4) Čtvrtý parametr je barva čáry. My jsme již definovali v úvodu, takže vynecháme. SetIndexBuffer přiřazuje k jednotlivým zakreslovaným indikátorům buffer tzn. pytel vypočtených hodnot. První parametr je opět line index a druhý parametr je přiřazený buffer. Aby to bylo úplně jasné, tak pokud bychom měli 3 buffery, tak zápis by vypadal třeba takto: SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Buffer1); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,Buffer2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,Buffer3); Takže zapišme do našeho pokusného souboru: 71
72 Tak a už nám zbývá pouze vypočítat hodnoty našeho indikátoru a nasypat je do pytle (tedy bufferu). Než se do toho pustíme, musíme si říci jednu důležitou věc. Pro kolik svíček musíme indikátor spočítat a uložit do bufferu. Pro 10, 50 nebo 200 nebo ? Na aktuálním grafu vidíme třeba jen 200 svíček, stačilo by tedy spočítat hodnotu indikátoru jen 200 svíček zpět. Ale, co když se budeme chtít posouvat v grafu do minulosti? Tak uděláme výpočet raději pro svíček? Ale co když půjdeme ještě více do minulosti? Ne. Touto logikou bychom zachvíli počítali hodnoty pro svíček. Jak to tedy uděláme? Využijeme chytrého příkazu IndicatorCounted(), který nám zajistí, že historické hodnoty indikátoru, které jsme již v minulém zobrazení indikátoru kalkulovali se již znovu kalkulovat nebudou. Již z předchozích kapitol víme, že vše co dáme do části start() se neustále ve smyčce opakuje. Pokud bychom kalkulovali stále dokola např hodnot indikátoru, tak bychom významně omezovali rychlost MT4 a zahlcovali ho, a to nechceme. Uděláme to následovně. Potřebujeme do bufferu zadat hodnotu indikátoru pro svíčku 1, svíčku 2, svíčku 3 atd. Vydefinujeme tedy proměnnou z. Pro výpočet budeme potřebovat definovat High, Low, Open, Close a Range. To už umíme: double high =High[z]; double low =Low[z]; double open =Open[z]; double close=close[z]; double range=high-low; kde z je 0 svíčka, 1 svička, 2 svíčka, 3 svíčka Teď již můžeme vypočítat hodnotu indikátoru pro svíčku z a přiřadit do bufferu: Buffer1[z]= (((high-open)+(close-low))/(2*range))*100; teď už zbývá ta poslední finta, abychom to nepočítali pro z 0 až Při posledním zavření MT4 se indikátor vypočítal pro všechny tehdy existující svíčky. Když ho teď znovu otevřeme, otevřely se mezitím nové svíčky a my zjistíme jejich počet takto z = Bars IndicatorCounted(). Funkce Bars nám říká, kolik svíček je aktuálně vidět na grafu a od nich odečteme již počet historicky zkalkulovaných svíček. Vyjde nám např. že nových svíček je 25. Pak budeme hodnotu indikátoru počítat pouze pro svíčku 25, svíčku 24, svíčku 23 až svíčku 0. K tomu použijeme smyčku: while (z>=0) { výpočty z ; } Pozn. z znamená snížení hodnoty z o 1 v každém cyklu tzn. 25, 24, 23, 0 72
73 Takže se podívejme, jak bude celý zápis vypadat: A máme hotovo. Teď se jen podíváme na to, zda se indikátor správně zobrazí. 73
74 Vše je jak má být. Jen jeden obchodní tip. Indikátor osciluje mezi Zakreslete si úrovně 30 a 70 nebo 25 a 75 a všimnete si, že pokud indikátor překročí 70 (75) má trh tendenci k otočení do shortu. Pokud klesne pod 30 (25) má trh tendenci jít na další svíčce long. Tímto končí náš výklad o programování v MQL4. Snad jsme alespoň některým z vás pomohli při snaze naprogramovat si svou vlastní EA či indikátor. Na našem webu je i sekce věnující se indikátorům. Zde najdete inspiraci a otevřené kódy ke tvorbě dalších zajímavých a užitečných indikátorů. 74
MQL4 COURSE. V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat
MQL4 COURSE By Coders guru www.forex-tsd.com (Appendix 2) Trading Functions -------------------- V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat tento dodatek
MQL4 COURSE. By Coders guru (Dodatek 2) Obchodní Funkce
MQL4 COURSE By Coders guru www.forex-tsd.com (Dodatek 2) Obchodní Funkce V tomto dodatku najdete popis 25 MQL4 obchodních funkcí. Rozhodl jsem se napsat tento dodatek před napsáním třetí části lekce "Váš
Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec
StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak
MQL 4 COURSE. By Coders guru -15 Váš první Expert Advisor - Část 3
MQL 4 COURSE By Coders guru www.forex-tsd.com -15 Váš první Expert Advisor - Část 3 V předchozích dvou částech této lekce jsme si představili náš expert advisor a jeho myšlenku. V Příloze 2 jsme studovali
2
Goldstarway.com Goldstarway Trading + MetaTrader 4 = Moderní a spolehlivé řešení připojení na burzu. Návod na používání platformy MetaTrader 4 v prostředí Goldstrway. Tato platforma funguje také v prostředí
Programování v jazyku LOGO - úvod
Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných
MetaTrader Mobile Uživatelský manuál Operační systém Andorid HIGHSKY.CZ
MetaTrader Mobile Uživatelský manuál Operační systém Andorid HIGHSKY.CZ 1 OBSAH Instalace 3 Přihlášení 4 Trh 5 Symboly 4 Graf 6 Vlastnosti grafu 7 Nový pokyn okamžitá realizace 7 Nový pokyn čekající 8
xmobile Operační systém Andorid Uživatelský manuál X-Trade Brokers DM S.A., organizační složka 1/12
xmobile Operační systém Andorid Uživatelský manuál 1/12 Návod xmobile OS Android Přihlášení... 3 Trh... 3 Symboly... 4 Graf... 5 Vlastnosti grafu... 6 Obchod... 6 Nový pokyn okamžitá realizace... 7 Nový
THEOPHILOS. (návod k použití)
THEOPHILOS (návod k použití) Nejprve si z internetových stránek www.theophilos.com (nebo www.theophilos.sk) stáhněte všechny soubory, které Vás zajímají a nainstalujte je (podrobný návod na instalaci programu
Hromadná korespondence
Hromadná korespondence Teoretická část: Typickým příkladem použití hromadné korespondence je přijímací řízení na školách. Uchazeči si podají přihlášku, škola ji zpracuje a připraví zvací dopis k přijímací
MQL4 COURSE. By Coders guru www.forex-tsd.com. -13 Váš první Expert Advisor - část 1
MQL4 COURSE By Coders guru www.forex-tsd.com -13 Váš první Expert Advisor - část 1 V předchozí lekci jsme vytvořili první indikátor. Sice nebyl příliš užitečný pro naše obchodování, byl však užitečný pro
METATRADER 4 PRŮVODCE ZAČÁTEČNÍKA
METATRADER 4 PRŮVODCE ZAČÁTEČNÍKA OBSAH Stažení MetaTrader 4 3 První přihlášení k MetaTrader 4 7 Přihlášení k MetaTrader 4 7 Změna jazyka 8 Změna vašeho hesla 9 Zapomenuté heslo 9 Obchodování s MetaTrader
Lekce 12 Animovaný náhled animace kamer
Lekce 12 Animovaný náhled animace kamer Časová dotace: 2 vyučovací hodina V poslední lekci tohoto bloku se naučíme jednoduše a přitom velice efektivně animovat. Budeme pracovat pouze s objekty, které jsme
POSTUP NAHRÁNÍ SOFTWAROVÝCH ROZŠÍŘENÍ DO OBCHODNÍ PLATFORMY METATRADER 4 PRO UŽIVATELE MS WINDOWS
POSTUP NAHRÁNÍ SOFTWAROVÝCH ROZŠÍŘENÍ DO OBCHODNÍ PLATFORMY METATRADER 4 PRO UŽIVATELE MS WINDOWS Obchodní platforma MetaTrader 4 nabízí díky své popularitě mezi tradery a zároveň mezi programátory mnoho
II. Elektronická pošta
II. Chceme-li si přečíst poštu, klikneme v levém sloupci na nápis Doručená pošta. Máme před sebou seznam e-mailů seřazených podle data a času přijetí. Pokud máme zapnuto zobrazení náhledu, ve spodní nebo
MQL4 COURSE. By Coders guru -8- Proměnné
MQL4 COURSE By Coders guru www.forex-tsd.com -8- Proměnné Vítejte v lekci proměnné mého MQL 4 kurzu. Doufám, že se vám předchozí lekce líbily a že jste připraveni na boj s proměnnými: Doporučuji, abyste
Vlastnosti dokumentu/stránky
Vlastnosti dokumentu/stránky Formát stránky papíru pro tisk V záložce Rozložení stránky na pásu karet najdeme vše potřebné pro přípravu dokumentu před tiskem. 1) Záložka Rozložení stránky 2) Změna Orientace
Programujeme v softwaru Statistica - příklady
Programujeme v softwaru Statistica - příklady Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody, příklady V předchozích článcích bylo vyřčeno mnoho teorie k problematice
xmobile Mobilní telefony iphone Uživatelský manuál X-Trade Brokers DM S.A., organizační složka 1/14
xmobile Mobilní telefony iphone Uživatelský manuál 1/14 Návod xmobile iphone Přihlášení... 3 Trh... 4 Seznam symbolů... 5 Graf... 6 Vlastnosti grafu... 7 Obchod... 8 Nový pokyn - okamžitý... 9 Nový pokyn
Vytvoření tiskové sestavy kalibrace
Tento návod popisuje jak v prostředí WinQbase vytvoříme novou tiskovou sestavu, kterou bude možno použít pro tisk kalibračních protokolů. 1. Vytvoření nového typu sestavy. V prvním kroku vytvoříme nový
Postup: Nejprve musíme vyplnit tabulku. Pak bude vypadat takto:
Úkol: Jednoduchá tabulka v Excelu Obrázky jsou vytvořené v Excelu verze 2003 CZ. Postupy jsou platné pro všechny běžně dostupné české verze Excelu s výjimkou verze roku 2007. Postup: Nejprve musíme vyplnit
KAPITOLA 4 ZPRACOVÁNÍ TEXTU
KAPITOLA 4 ZPRACOVÁNÍ TEXTU TABULÁTORY Jsou to značky (zarážky), ke kterým se zarovná text. Můžeme je nastavit kliknutím na pravítku nebo v dialogovém okně, které vyvoláme kliknutím na tlačítko Tabulátory
STATISTICA Téma 1. Práce s datovým souborem
STATISTICA Téma 1. Práce s datovým souborem 1) Otevření datového souboru Program Statistika.cz otevíráme z ikony Start, nabídka Programy, podnabídka Statistika Cz 6. Ze dvou nabídnutých možností vybereme
Informační a komunikační technologie pro učební obory ME4 a SE4. Makra
Informační a komunikační technologie pro učební obory ME4 a SE4 Makra I. část Praha 2012 2013 Zpracoval: Ing. Pavel branšovský pro potřebu VOŠ a SŠSE Volně použito podkladů z internetu a kolegů ze školy
MS SQL Server 2008 Management Studio Tutoriál
MS SQL Server 2008 Management Studio Tutoriál Vytvoření databáze Při otevření management studia a připojením se ke konkrétnímu sql serveru mám v levé části panel s názvem Object Explorer. V tomto panelu
1. Základní pojmy, používané v tomto manuálu. 2. Stránky
Redakční systém manuál 1. Základní pojmy, používané v tomto manuálu Hlavní menu Menu v horní světlemodré liště obsahující 7 základních položek: Publikovat, Správa, Vzhled, Komentáře, Nastavení, Pluginy,
MQL4 COURSE. By Coders guru Váš první indikátor Část 1
MQL4 COURSE By Coders guru -10- Váš první indikátor Část 1 Vítejte v praktické části kurzu MQL 4 - vašem prvním indikátoru v jazyce M Q L4. Doporučuji vám, abyste si velmi pozorně přečetli předchozí lekce
Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.
Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého
PHP tutoriál (základy PHP snadno a rychle)
PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve
Instrukce pro zprovoznění FXstreet.cz VIP Exit Managera
Instrukce pro zprovoznění FXstreet.cz VIP Exit Managera FXstreet.cz VIP Exit Managera poskytujeme na základě zakoupeného čtvrtletního, půlročního či ročního předplatného VIP zóny ke stažení zdarma, z čehož
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
PRÁCE S APLIKACÍ Evidence městských knih
PRÁCE S APLIKACÍ Evidence městských knih Po prvním spuštění Aplikace založení databází... 2 Založení prefixu, číslování záznamů... 7 Popis navigačních tlačítek... 8 Založení nového záznamu městské knihy...
Manuál k programu KaraokeEditor
Manuál k programu KaraokeEditor Co je KaraokeEditor? Program slouží pro editaci tagů v hudebních souborech formátu mp3. Tagy jsou doprovodné informace o písni, uložené přímo v mp3. Aplikace umí pracovat
Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání
Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou
KAPITOLA 3 - ZPRACOVÁNÍ TEXTU
KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KLÍČOVÉ POJMY textové editory formát textu tabulka grafické objekty odrážky a číslování odstavec CÍLE KAPITOLY Pracovat s textovými dokumenty a ukládat je v souborech různého
Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem
Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba
Programujeme v softwaru Statistica
Programujeme v softwaru Statistica díl třetí Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V předchozích článcích (díl první, díl druhý) jsme si osvětlili základní
Proces editace JOSM. Tato příručka může být stažena jako josm_more-about-josm_en.odt or josm_more-aboutjosm_en.pdf
Proces editace JOSM Tato příručka může být stažena jako josm_more-about-josm_en.odt or josm_more-aboutjosm_en.pdf Zkontrolováno 12.7.2015 V předchozí části jste nainstalovali JOSM a začali kreslit své
Návod k obsluze trenažéru
Návod k obsluze trenažéru K ovládání trenažéru slouží kompaktní řídící systém, který je vybaven dvouřádkovým displejem a membránovou klávesnicí. Na klávesnici jsou klávesy : ENT + - - STOP nebo návrat
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
StatSoft Jak vyzrát na datum
StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek
Kapitola 11: Formuláře 151
Kapitola 11: Formuláře 151 Formulář DEM-11-01 11. Formuláře Formuláře jsou speciálním typem dokumentu Wordu, který umožňuje zadávat ve Wordu data, která lze snadno načíst například do databázového systému
MS OFFICE MS WORD. Editor rovnic - instalace
MS OFFICE Může se zdát, že užití kancelářského balíku MS Office při výuce fyziky nepřesahuje běžné aplikace a standardní funkce, jak jsou popsány v mnoha příručkách ke všem jednotlivým částem tohoto balíku.
Obchodujeme systém. RSIcross. Martin Kysela
Obchodujeme systém RSIcross Martin Kysela kysela@linuxzone.cz UPOZORNĚNÍ Tento dokument představuje základní principy obchodování systému RSIcross pro účely intradenních spekulací na komoditních burzách.
Vytvoření uživatelské šablony
Inženýrsky manuál č. 40 Aktualizováno: 11/2018 Vytvoření uživatelské šablony Program: Stratigrafie - Dokumentace Soubor: Demo_manual_40.gsg Cílem tohoto inženýrského manuálu je ukázat vytvoření vlastní
Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka
Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 MS Power Point Metodický
6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
METODICKÝ POKYN PRÁCE S MS Word MÍRNĚ POKROČILÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
METODICKÝ POKYN PRÁCE S MS Word MÍRNĚ POKROČILÍ Formátování textu Text formátujeme (určujeme jeho vlastnosti) na pásu karet DOMŮ. U textu můžeme formátovat font, velikost písma, řez, barvu písma, barvu
Grid 2. Krok za krokem. Jednoduchý manuál pro základní úpravy mřížek v programu
Grid 2 Krok za krokem Jednoduchý manuál pro základní úpravy mřížek v programu Kopírování sady mřížek (uživatele) Chceme-li si vyzkoušet práci s programem Grid 2, je nejlepší upravit si již vytvořené mřížky
Moje-Projekty.cz Dokumentace k aplikaci
Moje-Projekty.cz Dokumentace k aplikaci 12. 3. 2015 Verze: 1.0 Obsah 1. Obecné informace... 3 2. Přihlášení do systému... 4 3. Odhlašování ze systému... 4 4. Jak si změnit heslo... 4 5. Nastavení projektů...
Tiskový manažer - Printman
Tiskový manažer - Printman Tiskový manažer je program, který je součástí programu Praktik. Používá se v případě, pokud máte připojenou tiskárnu přes USB port (nebo vaše tiskárna není v seznamu podporovaných
15. Projekt Kalkulačka
Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy
Dotazníky v Teamiu. Nastavení dotazníků. Vytvoření dotazníku
Dotazníky v Teamiu Pomocí dotazníků si můžete vytvářet své vlastní odpovědní formuláře, které následně můžete přiložit k vybraným pozicím. Pokud uchazeč bude na danou pozici chtít reagovat, musí dotazník
Channel EA: Nastavitelné hodnoty: Take Profit, SL, počet bodů, o které má být trend proražen, Lot size
Přijatý zip soubor rozbalte na plochu. Soubory s přílohou.ex4 (obchodní systémy) zkopírujte do instalační složky Metatraderu Složka MQL/Experts. Soubory s příponou.mq4 (skripty) kopírujte do složky MQL/Experts/Scripts
1 Tabulky Příklad 3 Access 2010
TÉMA: Vytvoření tabulky v návrhovém zobrazení Pro společnost Naše zahrada je třeba vytvořit databázi pro evidenci objednávek o konkrétní struktuře tabulek. Do databáze je potřeba ještě přidat tabulku Platby,
MANUÁL K AGENDĚ SPEDICE PŘÍRUČKA PRO UŽIVATELE
MANUÁL K AGENDĚ SPEDICE PŘÍRUČKA PRO UŽIVATELE Úvodem Spedice je nová agenda WEBDISPEČINKU, která nahrazuje dosavadní Optimalizaci rozvozů a svozů. Umožňuje vytvářet rozvozové trasy (přepravy), zastávky
Vytvoření a úpravy geologického modelu
Inženýrský manuál č. 39 Aktualizace 11/2018 Vytvoření a úpravy geologického modelu Program: Stratigrafie Soubor: Demo_manual_39.gsg Úvod Cílem tohoto inženýrského manuálu je vysvětlit základní práci s
2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML
ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní
Psaní programu pro PLC SIMATIC S7-300 pomocí STEP 7
Psaní programu pro PLC SIMATIC S7-300 pomocí STEP 7 Seznámení s programem STEP 7 bude provedeno řešením jednoduché úlohy. Lis s ochranným zařízením má být spuštěn jen pomocí signálu START- spínače S1,
dokumentu, respektive oddílu (více o oddílech v další kapitole). Nemůžeme
Microsoft Office IV Sloupce Chtěli bychom psát školní noviny a máme pocit, že jsou málo profesionální. Chtěli bychom využít možnost psaní v několika sloupcích. Nastavíme si na stránce místo jednoho sloupce
Dealer Extranet 3. Správa objednávek
Dealer Extranet 3 Správa objednávek Obsah Zpracování objednávky 3 Vyhledávací pole 4 Konfigurátor 5 Rychlá objednávka 6 Rychlá objednávka náhradních dílů a nestandardních produktů 7 Oblíbené 8 Objednávání
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
Začínáme pracovat s tabulkovým procesorem MS Excel
Začínáme pracovat s tabulkovým procesorem MS Excel Nejtypičtějším představitelem tabulkových procesorů je MS Excel. Je to pokročilý nástroj pro tvorbu jednoduchých i složitých výpočtů a grafů. Program
Programování v jazyce VISUAL BASIC.NET
GYMNÁZIUM ŠTERNBERK Programování v jazyce VISUAL BASIC.NET JAROSLAV ZAVADIL 1. ČÁST ŠTERNBERK 2009 1 / 51 1. kapitola Úvod V následujících kapitolách se seznámíme s ukázkou programování ve vyšším programovacím
Gabriela Janská. Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz
PŘÍRUČKA KE KURZU: ZÁKLADY PRÁCE NA PC MS WORD 2003 Gabriela Janská Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz Obsah: 1. Písmo, velikost písma, tučně, kurzíva, podtrhnout
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Textové popisky. Typ dat
Textové popisky Newsletter Statistica ACADEMY Téma: Možnosti softwaru, datová reprezentace Typ článku: Tipy a triky Máte ve svých datech kategorie ve formě textu? Víme, že někdy není úplně jasné, jak Statistica
Tiskový manažer Printman (Tiskový manažer verze 1.58 a novější)
Tiskový manažer Printman (Tiskový manažer verze 1.58 a novější) Tiskový manažer je program, který je součástí programu Praktik. Používá se pokud máte připojenou tiskárnu přes USB port. (Pokud je tiskárna
Manuál k ovládání aplikace INFOwin.
Manuál k ovládání aplikace INFOwin. Základní práce s formuláři je ve všech modulech totožná. Vybereme tedy například formulář Pokladní kniha korunová na kterém si funkce ukážeme. Po zápisech se lze pohybovat
ipodatelna Uživatelská příručka
Uživatelská příručka 1 Obsah Obsah 1 I Úvod 2 II Práce s aplikací 3 III Podání 4 1 Nové podání... 5 IV Informace o Uživateli 11 V Podatelna 13 1 Přijmout... a odmítnout podání 13 2 Seznam... došlých podání
Zobrazení zdrojových dat u krabicového grafu
StatSoft Zobrazení zdrojových dat u krabicového grafu Krabicový graf zobrazuje informace o poloze i variabilitě dat. Zachycujeme na něm různé charakteristiky a někdy může být žádoucí zobrazit si v grafu
Základní nastavení systému Windows 7
Základní nastavení systému Windows 7 Ing. Miroslava Trusková 2012 1 Dobrý den, vítejte v lekci Systémová nastavení. Dnes si vysvětlíme, jak si přizpůsobit nastavení počítače tak, aby vyhovoval Vašim požadavkům.
Mgr. et Mgr. Jan Petrov, LL.M. Ph.D. BYZNYS A PRÁVO
BYZNYS A PRÁVO Byznys a právo OBSAH ZÁKLADNÍ FUNKCE EXCELU... 2 FUNKCE ODMOCNINA A ZAOKROULIT... 4 FORMÁT A OBSAH BUNĚK... 5 RELATIVNÍ ODKAZY... 9 ABSOLUTNÍ ODKAZY... 11 Byznys a právo ZÁKLADNÍ FUNKCE
Omezení funkcionalit v softwaru STATISTICA
StatSoft Omezení funkcionalit v softwaru STATISTICA Věděli jste, že v softwaru STATISTICA si lze omezit jednotlivé nabídky? Pojďme se nyní podívat na pokročilejší úpravy softwaru, které mohou být v určitých
Základní vzorce a funkce v tabulkovém procesoru
Základní vzorce a funkce v tabulkovém procesoru Na tabulkovém programu je asi nejzajímavější práce se vzorci a funkcemi. Když jednou nastavíte, jak se mají dané údaje zpracovávat (některé buňky sečíst,
Beton 3D Výuková příručka Fine s. r. o. 2010
Zadání Cílem tohoto příkladu je navrhnout a posoudit výztuž šestiúhelníkového železobetonového sloupu (výška průřezu 20 cm) o výšce 2 m namáhaného normálovou silou 400 kn, momentem My=2,33 knm a momentem
Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Práce v programu Word 2003
Práce v programu Word 2003 Prostředí programu WORD 2003 Program WORD 2003 slouží k psaní textů, do kterých je možné vkládat různé obrázky, tabulky a grafy. Vytvořené texty se ukládají, jako dokumenty s
Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
Modul zásoby - Tvorba cen a cenových akcí v *8747 Materiál pro samostudium +1420
Modul zásoby - Tvorba cen a cenových akcí v *8747 Materiál pro samostudium +1420 11.11.2013 Major Bohuslav, Ing. Datum tisku 19.11.2013 2 Modul zásoby - Tvorba cen a cenových akcí v *8747 Modul zásoby
Up & Down opce. Manuál. Obsah
Up & Down opce Manuál Obsah 1 Přihlášení do platformy... 2 2 Rozhraní platformy... 4 2.1 Změna modulu z Forex na Opce... 4 2.2 Market Watch... 5 2.3 Up-Down Opce... 9 2.4 Okno Obchodního portfólia... 11
od Admiral Markets Trading Camp
od Admiral Markets Trading Camp 1. Fibonacci retracement 2. Nastavení 3. Použití v praxi Autorem tohoto mocného nástroje je matematik Leonardo Pisano Fibonacci. Nástroj vychází z přírody konkrétně z vypozorování
Práce se styly 1. Styl
Práce se styly 1. Styl Styl se používá, pokud chceme, aby dokument měl jednotný vzhled odstavců. Můžeme si nadefinovat styly pro různé úrovně nadpisů, jednotlivé popisy, charakteristiky a další odstavce.
MT4 Supreme Edition Celosvětové mínění
MT4 Supreme Edition Celosvětové mínění V tomto manuálu naleznete instrukce pro instalaci a použití MT4 Supreme Edition. Instalační proces a použití je stejné jako u nové MT5 Supreme Edition. Jednoduše
Aplikace Vyhledání a stažení aplikace Založení účtu v Google Play Internet Nastavení u Zap./Vyp. přístupového bodu Připojení a odpojení wi-fi
1 5. 6. 7. 8. Aplikace Vyhledání a stažení aplikace Založení účtu v Google Play Internet Nastavení e-mailu Zap./Vyp. přístupového bodu Připojení a odpojení wi-fi sítě Nastavení internetu v zahraničí Nastavení
[RDM] STRUČNÁ UŽIVATELSKÁ PŘÍRUČKA. CENTRÁLNÍ REGISTR PODPOR MALÉHO ROZSAHU - de minimis
PDS s.r.o. Viniční 20, 615 00 Brno IČ: 25523121, DIČ: CZ25523121 [RDM] CENTRÁLNÍ REGISTR PODPOR MALÉHO ROZSAHU - de minimis STRUČNÁ UŽIVATELSKÁ PŘÍRUČKA Praha, Brno 2009, 2010 Verze dokumentu Verze Datum
Jak vytvořit nebo předělat vlastní motiv pro SunLight CMS
Jak vytvořit nebo předělat vlastní motiv pro SunLight CMS V tomto tutoriálu se podíváme na to, jak si při troše šikovnosti udělat nebo předělat vybraný motiv pro redakční systém SunLight CMS. Jako příklad
Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
Formátování pomocí stylů
Styly a šablony Styly, šablony a témata Formátování dokumentu pomocí standardních nástrojů (přímé formátování) (Podokno úloh Zobrazit formátování): textu jsou přiřazeny parametry (font, velikost, barva,
Nastavení přístupových práv terminálů BM-Finger na čipování docházky a otevírání dveří
Nastavení přístupových práv terminálů BM-Finger na čipování docházky a otevírání dveří Zobrazení a změna informace o nastavení přístupových práv zvoleného terminálu. Tedy kdo a kdy má právo na tomto terminálu
Příklad definice směn pro 4 kolektivy, které se střídají v nepřetržitém provozu po 12 hodinových směnách
Příklad definice směn pro 4 kolektivy, které se střídají v nepřetržitém provozu po 12 hodinových směnách Příklad využívá konkrétní zadání z praxe, kdy má zákazník 4 skupiny pracovníků v nepřetržitém provozu.
POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON
Program SK2 Připojení adaptérusk2 k počítači Propojte svůj počítač pomocí přiloženého propojovacího USB kabelu s adaptérem SK2. SK2 v prostředí Windows 2000 - XP - Vista - po propojení počítače s adaptérem
Microsoft Word - Styly, obsah a další
Microsoft Word - Styly, obsah a další Definice uživatelských stylů Nový - tzv. uživatelský styl - se vytváří pomocí panelu Styly a formátování stiskem tlačítka Nový styl. Po stisknutí tlačítka se objeví
Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.
TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců. Zadání: V textovém souboru text.txt je uloženo několik řádků textu. Vytvořte makro, které určí nejdelší řádek z daného souboru. 1. Název
tohoto systému. Můžeme propojit Mathcad s dalšími aplikacemi, jako je Excel, MATLAB, Axum, nebo dokumenty jedné aplikace navzájem.
83 14. (Pouze u verze Mathcad Professional) je prostředí pro přehlednou integraci a propojování aplikací a zdrojů dat. Umožní vytvořit složitý výpočtový systém a řídit tok dat mezi komponentami tohoto
5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina
5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.
PSANÍ VZORCŮ A ROVNIC
PSANÍ VZORCŮ A ROVNIC aneb matematikem bez nesnází Jednoduché matematické, fyzikální či chemické vzorce a rovnice můžeme zapsat poměrně snadno za pomoci znaků na klávesnici a použitím horního nebo dolního
051.MT4.v3.28.05.2012. Orientace v Platformě MT4
051.MT4.v3.28.05.2012 Orientace v Platformě MT4 OBSAH Následující dokument vás seznámí s podstatnými funkcemi obchodní platformy. Přečtěte si ho prosím a neváhejte nás kontaktovat s jakýmikoliv případnými
Záhlaví a zápatí Tvorba obsahu
Microsoft Office 2007 Záhlaví a zápatí Tvorba obsahu Microsoft WORD 2007 1.1.2011 Obsah Záhlaví a zápatí... 1 Tvorba záhlaví a zápatí... 1 Číslování stránek... 1 Práce s oddíly... 2 Vytvoření oddílů...