MQL4 - Tipy a triky - MarketZones

Napsal:   Sekce: MQL4 - Tipy a triky

Dnes jsem si pro ty, co se zajímají o jazyk MQL4, připravil jednoduchý indikátor, který nemá za úkol analyzovat cenu, ale zobrazit obchodní hodiny jednotlivých marketů. Pro ty, co je programování spíše utrpením, nebudou ošiděni a mohou si na konci článku stáhnout již hotový indikátor.

Proč jsem pro zobrazení obchodních hodin vybral zrovna indikátor? MetaTrader zpracovává obchodní strategie, skripty a indikátory. Obchodní strategie je pro tento účel nevhodná, jelikož můžu do grafu vložit pouze jednu strategii a tím bych sebral prostor pro smysluplnou strategii. Skript se spouští jenom jednou, což by mému záměru nevyhovovalo. Chci si zobrazit obchodní hodiny jednotlivých marketů pro aktuální den, takže očekávám, že příští den se zobrazení překreslí, tak jak má, nechci se o to starat. Z toho vyplývá, že indikátor je nejvhodnější.

Postup

Otevřete si editor jazyka MQL a založte nový souboru typu Custom indikator. V dalším kroku si pojmenujte indikátor např. MarketZones. Vyplňte následující vstupní parametry (Název, Typ, Hodnota), (viz obr):

London_Show, bool, true
London_Color, color, Blue
London_Text, string, London


Nyní pokračujte v průvodci a v dalším kroku ponechte vše, tak jak je a dokončete průvodce.

Průvodce vygeneroval kód skriptu, kód jsem lehce upravil (viz kód).

Nyní si v kódu za vstupní parametry přidáme následujcí proměnnou, kterou použijeme pro pojmenování grafických objektů (viz kód):

//---- základní názvy objektů
string London_BaseName = "MZLondon";


Dále si vytvoříme pomocné metody, které nám vytvoří grafické objekty, které se budou zobrazovat na time-framech od M1 až po H1. Pro náš účel použijeme vertikální čáru pro zobrazení otevírací a zavírací doby, a text pro popis otevírací doby (viz kód):

// vytvoří vertikální linii
// name = název linie
// c = barva linie
void createVLine(string name, color c)
{
   // kontrola, zda objekt neexistuje
   if(ObjectFind(name) < 0)
   {
      // pokud se podařilo objekt vytvořit, můžeme nastavit vlastnosti
      if(ObjectCreate(name, OBJ_VLINE, 0, 0, 0))
      {
         ObjectSet(name, OBJPROP_COLOR, c);
         ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
         ObjectSet(name, OBJPROP_BACK, true);
         ObjectSet(name, OBJPROP_TIMEFRAMES,
 OBJ_PERIOD_M1|OBJ_PERIOD_M5|OBJ_PERIOD_M15|OBJ_PERIOD_M30|OBJ_PERIOD_H1);
      }
   }
}

// vytvoří textový objekt
// name = název textového objektu
// text = zobrazovaný text
// c = barva textu
void createText(string name, string text, color c)
{
   // kontrola, zda objekt neexistuje
   if(ObjectFind(name) < 0)
   {
      // pokud se podařilo objekt vytvořit, můžeme nastavit vlastnosti
      if(ObjectCreate(name, OBJ_TEXT, 0, 0, 0))
      {
         ObjectSetText(name, text, 8, "Arial", c);
         ObjectSet(name, OBJPROP_ANGLE, 90);
         ObjectSet(name, OBJPROP_TIMEFRAMES, 
OBJ_PERIOD_M1|OBJ_PERIOD_M5|OBJ_PERIOD_M15|OBJ_PERIOD_M30|OBJ_PERIOD_H1);
      }
   }
}


Když již máme napsané pomocné metody pro vytváření grafických objektů, můžeme si napsat metodu, která nám vytvoří komplet obchodních hodin daného marketu a rovnou si napíšeme ještě metodu, která po nás uklidí grafické objekty, pokud uživatel odebere tento indikátor ze svého grafu (viz kód):

// vytvoří MarketZone (MZ) linie
// baseName = základní název MZ
// c = barva MZ
// text = popisek MZ
void createMZ(string baseName, color c, string text)
{
   // název linie zobrazující otevření marketu
   string nameOpen = baseName + "Open";
   // název linie zobrazující zavření marketu
   string nameClose = baseName + "Close";
   // název textu zobrazující popis marketu
   string nameText = baseName + "Text";
   
   createVLine(nameOpen, c);
   createVLine(nameClose, c);
   createText(nameText, text, c);
}

// odstraní MarketZone linie
// baseName = základní název MZ
void deleteMZ(string baseName)
{
   ObjectDelete(baseName + "Open");
   ObjectDelete(baseName + "Close");
   ObjectDelete(baseName + "Text");
}

Nyní použijeme naše metody v kódu. Upravíme metody init() a deinit(). V metodě init() si vytvoříme MarketZone linii a v metodě deinit() provedeme smazání prvků (viz kód):


// inicializace
int init()
{
   // pokud se má zobrazit London, vytvoříme MZ
   if(London_Show)
   {
      createMZ(London_BaseName, London_Color, London_Text);
   }
   
   return(0);
}

// deinicializace
int deinit()
{
   // smazání MZ pro London
   deleteMZ(London_BaseName);
   
   return(0);
}


Teď jsme ve fázi, kdy náš skript (indikátor) je použitelný, ale pokud se změní den, nepřekreslí se obchodní hodiny na nový den, ale zůstanou tam, kde se vytvořili poprvé. Stejně tak popisek otevírací doby se nepřekreslí správně, pokud si v grafu začneme přepínat jednotlivé time-frames. K pokynu překreslení dojde, pokud se změní aktuální cena, na to mi můžeme reagovat. Proto si vytvoříme metody, které nám překreslí naše grafické prvky. Upravíme metodu start() a zareagujeme na změnu ceny a provedeme překreslení. Následující kód lze optimalizovat, aby nedocházelo k překreslování pokaždé, ale pouze, když potřebujeme. Přesto jej ponechám tak, jak je, kvůli jednoduchosti ukázky kódu. Vzhledem k malému počtu použitých grafických prvků, nám to nebude vadit (viz kód):

// překreslí vertikální linii
// name = název linie
// dt = datum umístění linie
void redrawVLine(string name, datetime dt)
{
   if(ObjectFind(name) > -1)
   {
      ObjectSet(name, OBJPROP_TIME1, dt);
   }
}

// překreslí textový objekt
// name = název textového objektu
// dt = datum umístění textového objektu
void redrawText(string name, datetime dt)
{
   if(ObjectFind(name) > -1)
   {
      ObjectSet(name, OBJPROP_TIME1, dt);
      ObjectSet(name, OBJPROP_PRICE1, (WindowPriceMax() - WindowPriceMin()) / 2 + WindowPriceMin());
   }
}

// překreslí MarketZone linii
// baseName = základní název MZ
// currentDate = řetězec aktuálního datumu (bez času)
// timeOpen = řetězec času otevření marketu
// timeClose = řetězec času zavření marketu
void redrawMZ(string baseName, string currentDate, string timeOpen, string timeClose)
{
   // název linie zobrazující otevření marketu
   string nameOpen = baseName + "Open";
   // název linie zobrazující zavření marketu
   string nameClose = baseName + "Close";
   // název textu zobrazující popis marketu
   string nameText = baseName + "Text";
   
   // vytvoření datumu pro otevírací a zavírací dobu
   datetime dtOpen = StrToTime(currentDate + " " + timeOpen);
   datetime dtClose = StrToTime(currentDate + " " + timeClose);
   
   redrawVLine(nameOpen, dtOpen);
   redrawVLine(nameClose, dtClose);
   redrawText(nameText, dtOpen);
   
   WindowRedraw();
}

// běh indikátoru
int start()
{
   string currentDate = TimeToStr(TimeCurrent(), TIME_DATE);
     
   // pokud se má vykreslit London, překreslíme MZ   
   if(London_Show)
   {
      redrawMZ(London_BaseName, currentDate, "09:00", "17:59");
   }      

   return(0);
}


Nyní, když zkompilujete bezchybný kód, můžete vyzkoušet indikátor v platformě. Měli byste vidět linie obchodních hodin londýnského marketu (viz obr); upozornění: na vyšších TF jak H1 se linie nezobrazují.

Samozřejmě, že se nabízí otázka, zda lze zobrazit obchodní hodiny jiného marketu? Ano, např. si přidáme MZ pro New York (viz obr). Stačí přidat nové vstupní parametry a proměnnou pro názvy grafických objektů:

extern bool      NewYork_Show = true;
extern color     NewYork_Color = Red;
extern string    NewYork_Text = "New York";

//---- základní názvy objektů
string NewYork_BaseName = "MZNewYork";


Upravíme metody init(), deinit() a start():

// inicializace
int init()
   // pokud se má zobrazit London, vytvoříme MZ
   if(London_Show)
   {
      createMZ(London_BaseName, London_Color, London_Text);
   }

   // pokud se má zobrazit New York, vytvoříme MZ  
   if(NewYork_Show)
   {
      createMZ(NewYork_BaseName, NewYork_Color, NewYork_Text);
   }
   
   return(0);
}

// deinicializace
int deinit()
{
   // smazání MZ pro London
   deleteMZ(London_BaseName);
   // smazání MZ pro New York
   deleteMZ(NewYork_BaseName);   
   
   return(0);
}

// běh indikátoru
int start()
{
   string currentDate = TimeToStr(TimeCurrent(), TIME_DATE);
     
   // pokud se má vykreslit London, překreslíme MZ  
   if(London_Show)
   {
      redrawMZ(London_BaseName, currentDate, "09:00", "17:59");
   }      
   
   // pokud se má vykreslit New York, překreslíme MZ
   if(NewYork_Show)
   {
      redrawMZ(NewYork_BaseName, currentDate, "14:00", "22:59");
   }

   return(0);
}


Pokud chcete vykreslit i jiné obchodní hodiny, tak to už zbývá na vás, jako samostatné cvičení. Postup je stejný jako u New Yorku.

Zde je kompletní kód ke stažení (obsahuje obchodní hodiny pro Londýn, New York, Sydney a Tokio).

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

Čtěte více

  • Môj pohľad na vybrané forex trhy
    Teraz sa spolu pozrieme na to ako sa vybrané trhy správali v minulosti s tým, že takisto poukážem na možný budúci vývoj trhov, a ako na nich profitovať. EUR/CAD short, GBP/NZD long a USD/CHF long.
  • Môj výhľad na kryptomeny - trpezlivosť
    Bitcoin a kryptomeny.
  • Monetárna politika - Centrálni bankári ako bohovia trhu
    Či si to chceme priznať alebo nie centrálni bankári sú bohovia na finančnom trhu. Nie v tom zmysle, že by mohli všetko, ale ich rozhodnutia majú široké následky naprieč celým finančným sektorom. Nechcem hovoriť o tom či je to správne, že majú takú moc... Nechcem hovoriť ani o tom, že či je správne, že títo bohovia sú „nevolení“ ale iba „dosadení“... A nebudem ani rozoberať otázku, kto vlastne kontroluje tých, čo kontrolujú... Zaujíma ma to, čo je dôležité pre obchodníka. A to je silný dopad ich rozhodnutí na trh.
  • Money management - Na co by neměl žádný trader zapomenout
    Nedříve je důležité říci, co je to vlastně money management. Mnoho, nejen začínajících, traderů má spojen termín money management pouze s nastavováním SL a TP, to však není zdaleka úplně pravda.
  • Money-management pod novými pravidlami ESMA
    V posledných týždňoch sa čoraz viac stretávame s veľkými obavami, ktoré spôsobujú nové pravidlá obchodovania s derivátmi od európskeho regulátora ESMA. Najväčším strašiakom je pre väčšinu obchodníkov zníženie finančných pák, ktoré od 1.8.2018 nadobudnú nasledujúce hodnoty:
  • Money Management %R
    Zarobil som na danom obchode? OK. Prerobil som? Tiež OK!
  • Možná i největší býci už vyhlížejí akciový pullback
    Zelená svíčka, jak jinak. Tentokrát americký akciový index S&P 500 posílil za týden o 2,23 % a od začátku roku již přidal přes 7 %.
  • Možná intervence na EURCHF
    Intervence SNB na páru EURCHF. Páteční výrazný pohyb.
  • Možný vývoj na akcivém indexu US30 - DJIA.
    Včera jsem se ve svém článku stručně zabýval úvahou o aktuální situaci v dolarovém indexu DXM10 kde jsem se velmi stručně zmínil i o akciových indexech. Dnes bych chtěl na tento článek navázat a věnovat se situaci v akciovém indexu US30 - DJIA. Jeho vliv na měnové páry a hlavně na JPY v posledních týdnech nabývá na síle.
  • Môžu niečo zmeniť americké dáta z trhu práce?
    Tak ako sa posledné týždne/mesiace približujeme k decembru (prosinci), pravdepodobnosť, že FED ešte raz zvýši sadzby tento rok, tak ako to anticipoval v poslednom Dot Plote, klesá stále viac a viac. Investori pokračujú vo výpredajoch USD z už chronicky známych ekonomických a politických dôvodov. To čo však môže rozhodnúť o ďalšom pohybe na USD je rast miezd v kontexte ostatných dát z trhu práce, ktoré budú dnes zverejnené.
  • 9. MQL4 - Moje první strategie (1/2)
    V tomto díle si společně napíšeme vlastní strategii. Začneme nejprve vytvořením knihovny s pomocnými funkcemi pro obchodování.
  • 8 pips
    Dnes mi dorazila zpráva od mého dobrého přítele. Napsal mi v ní: "Tak dneska jsem vydělal jen 8 pips". Trh EUR/USD se dnes do této chvíle pohyboval v rozmezí High a Low asi 80 pips. Nabízí se zde otázka: Je 8 pips profitu za jeden den skutečně tak málo?
  • 8. MQL4 - Tester strategií
    V tomto díle se v rychlosti seznámíme s testerem strategií, který nám pak poslouží k testování a ladění naší strategie.
  • 7. MQL4 - Funkce pro obchodování
    V tomto díle si představíme poslední oblast jazyka MQL4 tak, abychom byli schopni napsat svoji vlastni strategii pro automatizované obchodování a tím jsou funkce pro práci s pokyny.
  • 6. MQL4 - Technické indikátory
    V tomto díle se podíváme funkce, které vracejí data jednotlivých indikátorů.
  • 5 velkých mýtů o obchodování forexu
    Pokud jste ve světě obchodování forexu nováček a hledáte informace, jak vůbec začít, vězte, že v tomto odvětví platí, že je propleteno spoustou balastu a zkreslených informací. Po čas celé své tradingové kariéry se budete neustále zdokonalovat a nejspíš vyhledávat nové informace a rady na internetu.
  • 5 rozdielov v tradingu kryptomien a forexu
    Dnes vám opíšem 5 zásadných rozdielov pri tradingu krypto trhu a forexových mien. Každá je v niečom lepšia a v niečom horšia a idem na tie rozdiely poukázať. Aj keď je tu kryptosvet iba necelých 10 rokov a forex niekoľkonásobne viac, tak popularita týchto trhov je celkom podobná.
  • 5 rozdielov v tradingu kryptomien a akcii
    V dnešnom blogu Vám vysvetlím zásadných 5 rozdielov pri tradingu a akciach. Každé má svoje pro a proti, no jeden trh je regulovaný a druhý nie je a tam začínajú všetky problémy aj príležitosti. Veľa začiatočníkov verí, že kupovanie kryptomeny cez krypto burzu je ako kupovať akcie cez brokera, no pravda je inde.
  • 5 nejsilnějších emocí tradera
    Psychologie obchodování je nedílnou součástí každého z nás. Trhy jsou jakýmsi živým organismem, u kterého se snažíme racionálním přístupem zanalyzovat jeho vývoj, což vytváří rozpor mezi očekáváním a konečným výsledkem.
  • 5. MQL4 - Předdefinované proměnné
    V této kapitole se trochu ponoříme do jazyka MQL4 a představíme si základní proměnné, pomocí kterých můžeme zjišťovat informace o cenách.
  •  


    Diskuse ke článku

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

avatar

Autor:

Geafer

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

Kategorie blogu

reklama
HighSky Brokers nabidka

Kurzy obchodování

Led
12

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

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

Led
26

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

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


úno
9

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

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

úno
23

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

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

Literatura

titulka_smallsize.jpg

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

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

Day_Trading_obalka_78x110.jpg

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

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

C:\fakepath\kathy-lien-08112017.jpg

Světový bestseller o tradingu v češtině! Úspěšní obchodníci: Jak běžní lidé porážejí Wall Street v jeho vlastní hře

Jedna z nejprodávanějších knih od Kathy Lien právě vychází v českém překladu! Obsahuje sérii rozhovorů Kathy Lien s nejúspěšnějšími tradery. Tato kniha se stala inspirací pro tisíce čtenářů po celém světě. Setkáte se v ní s příběhy obyčejných lidí, kteří dokázali zbohatnout díky systematickému dodržování konkrétních pravidel v tradingu. Bez ohledu na jejich povolání jsou dnes úspěšnými obchodníky a investory. V této knize vám budou představeny jejich obchodní přístupy a strategie, které vám pomohou pochopit, jak lze pomocí vlastní píle dosáhnout úspěchu ve zdánlivě složitém světě tradingu.

Forex - doporučené články:

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

Nejnovější články:


Naposledy čtené:


FXstreet.cz - forex, komodity, kryptoměny, trading, zpravodajství

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