Průvodce vytvářením skriptů ZuluScript

Poslední aktualizace dne

Úvod

Služba ZuluTrade vytvořila novou generaci skriptů obchodování, které obchodníkům umožňují vytvářet a nasazovat vlastní obchodní roboty a indikátory, přímo z účtu ZuluTrade bez potřeby externího softwaru nebo registrace u třetí strany!
Skripty ZuluScript se implementují pomocí jazyka ZQL (ZuluTrade Query Language), který je kompatibilní s nejpoužívanějšími skriptovacími jazyky forexového trhu.

Vše, co potřebujete k používání skriptů ZuluScript, je účet s aktivovanou volbou ZuluTrade+ na kartě Nastavení, Nastavení propojení s brokerským účtem.

Přístup k editoru skriptů obchodování služby ZuluTrade

Pro přístup ke skriptům pro obchodování služby ZuluTrade se stačí zaregistrovat ve službě ZuluTrade a propojit svůj účet s platformou ZuluTrade+, pak přejít do platformy pro obchodování ZuluTrade a kliknout na 'Trading Scripts' (Skripty obchodování).
Otevře se nové místní okno nazvané 'Trading Client' (Klient pro obchodování).
Na horním pravém postranním panelu editoru skriptů najdete 4 karty, pomocí kterých lze přepínat mezi režimy editoru skriptů.
První nastavuje režim vytváření skriptů, druhý nastavuje režim vytváření vlastních indikátorů, třetí vytváření záhlaví a poslední otevře glosář jazyka ZQL, kde najdete podrobné informace o jednotlivých příkazech jazyka ZQL.

Nahoru

Vytvoření skriptu ZuluScript

Chcete-li vytvořit skript ZuluScript, je potřeba v editoru skriptů kliknout na tlačítko 'Create Script' (Vytvořit skript).

Při vytváření nového skriptu se panel editoru vyplní kódem zql ze šablony – v tomto panelu se kód skriptu zadává.


Pod editorem na pravé straně jsou tři tlačítka, která pomáhají při vytváření skriptu ZuluScript – Save (Uložit), Complile (Kompilovat) a Deploy (Nasadit).


Save – Tlačítkem Save (Uložit) lze ukládat skript v libovolnou chvíli, abyste neztratili změny ani další práci.

Uložení změny ve skriptu však neznamená, že je skript připravený k použití. Jakékoli změny je potřeba zkompilovat a nasadit, teprve pak budou dostupné k používání.

Compile – Kompilace skriptu zkontroluje chyby v syntaxi kódu a v případě úspěšné kompilace vytvoří binární soubory spojené s naším skriptem tak, aby jej bylo možné spustit.
Pokud se kompilace nezdaří, zobrazí se chyby v panelu 'Compiler Output' (Výstup kompilace).

Níže najdete ukázku neúspěšné kompilace:
Deploy – Chcete-li skript nasadit, musíte jej nejprve zkompilovat. Jakmile dokončíte kompilaci a vytvoří se soubor .zql, můžete skript nasadit a používat v platformě pro obchodování ZuluTrade!


Metadata – Na pravé straně okna můžete upravovat metadata skriptu.
Pole 'Name' (Název) obsahuje název, který se zobrazuje při připojení skriptu ke grafu.
Pole 'Filename' (Název souboru) je název souboru, pod kterým je skript uložen na serveru služby ZuluTrade. Toto pole nemusíte nutně měnit, ale pokud budete chtít, nezapomeňte, že je potřeba název ukončit příponou „.zql".
Pole 'Description' (Popis) představuje stručný popis, který se bude zobrazovat při připojení skriptu ke grafu. Popis vám například připomene, jakou přesně funkci skript plní, proto se zde nezapomeňte rozepsat o potřebných detailech.

Seznam skriptů – Pod poli s metadaty se nachází seznam všech uložených skriptů. Upozorňujeme, že každý nově vytvořený skript se automaticky uloží.
Aktuálně vybraný skript (jehož kód se zobrazuje v panelu editoru) je zvýrazněný.
Odstranění skriptu – Pokud budete potřebovat odstranit nějaký skript, stačí kliknout na ikonu „x" vedle názvu skriptu a potvrdit odstranění v příslušném místním okně.
Ukázka skriptu – Podívejme se na ukázkový skript zql, který můžete použít pro účely testování:

#property copyright "Copyright © 2014, Zulutrade Inc"
#property link "www.zulutrade.com"

extern int BuyThreshold = 40;
extern int SellThreshold = 30;
extern double Lots = 1;
extern int MagicNumber = 33;
extern string comment = "by example script";
extern int maxOpenPositions = 3;
extern int shift = 1;

int RSILength = 14;
int TimeOfFirstBar = 0;

int init() {
}

int start() {
double RSI = 0.0;

if (isFirstTickOfCurrentBar()) {
RSI = iRSI(NULL, PERIOD_H1, RSILength, PRICE_CLOSE, shift);
Print("Got RSI value for period H1 and shift ", shift, " equals to ", RSI);
// Buy Condition
if ( RSI >= BuyThreshold && OrdersTotal() < maxOpenPositions) {
if (doBuy() == false) {
return (0);
}
}
// Close condition
if ( RSI <= SellThreshold && OrdersTotal() > 0) {
if(doClose() == false) {
return(0);
}
}
}
}

// Figures out the first tick of a new bar
bool isFirstTickOfCurrentBar() {
if (TimeOfFirstBar != Time[1]) {
TimeOfFirstBar = Time[1];
return (true);
}
return (false);
}

// Close an order checking magic number to make sure it is generated from current script
bool doClose() {
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
if (OrderClose( OrderTicket(), OrderLots(), Ask, 0, White) == -1) {
Print ("Failed to close trade ", OrderTicket(),", error # ", GetLastError());
return(false);
}
Print ("Successfully closed trade ", OrderTicket(),", error # ", GetLastError());
return(true);
}

// Open a new order
bool doBuy() {
int ticket = OrderSend( Symbol(), OP_BUY, Lots, Ask, 0, 0.0, 0.0, comment, MagicNumber, 0, Lime);
if (ticket < 0) {
Print ("Failed to open trade, error # ", GetLastError());
return (false);
}
Print ("Successfully opened ticket ", ticket);
return (true);
}
Tento skript v každém cyklu zkontroluje počet otevřených pozic. Pokud nejsou žádné pozice otevřené a jsou splněny některé podmínky indikátorů, otevře skript novou pozici. Pokud je naopak otevřených příliš mnoho pozic, skript jednu ukončí.
POZNÁMKA: Nejde o skutečnou obchodní strategii a slouží pouze k demonstračním účelům.

Pokud budete někdy potřebovat vytvořit nový skript, stačí kliknout na tlačítko „Create Script" (Vytvořit skript) a spustit proces znovu.

Nahoru

Vytvoření vlastního indikátoru

Vlastní indikátory lze vytvářet a používat v jiném skriptu pro obchodování, a tak rozšiřovat řadu již dostupných technických indikátorů v daném jazyce.

Vlastní indikátory lze použít v jakémkoli libovolném skriptu ZuluScript pomocí funkce iCustom() ZQL, a to po uložení, kompilaci a nasazení vlastního indikátoru.

Poznámka: V tuto chvíli nedokážeme vykreslovat vlastní indikátory v grafech.


Chcete-li vytvořit vlastní indikátor, klikněte na tlačítko 'Create Indicator' (Vytvořit indikátor) editoru skriptů.

Nezapomeňte zkontrolovat, zda je editor přepnutý na kartu Custom indicators (Vlastní indikátory):

Hotový vlastní indikátor je pak potřeba upravit, pojmenovat, uložit a nasadit!

Funkce Edit (Upravit), Name (Pojmenovat), Save (Uložit) a Deploy (Nasadit) fungují na podobném principu, jako skripty ZuluScript
Poznámka: Název indikátoru se bude později používat pro přístup k indikátoru při volání funkce iCustom() ve skriptech ZuluScript.


Podívejme se na příklad vlastního indikátoru, který můžete použít pro účely testování:

extern int index = 0;
int MODE = 0;
int init() {
return(0);
}
int start() {
double value = iCustom(NULL, NULL, "my_new_indicator", 0, index);

Print("my_new_indicator value for bar ", index, " is ", value);
}

Nahoru

Vytvoření záhlaví

Zde můžete definovat opětovně použitelné funkce, které lze importovat a použít v libovolném skriptu nebo vlastním indikátoru.

Upozorňujeme, že Záhlaví nejsou skripty ZQL, proto nevyžadují funkce init(), start() nebo deinit().


Pokud chcete vytvořit záhlaví, klikněte na tlačítko 'Create Header' (Vytvořit záhlaví) editoru skriptů.

Zkontrolujte, zda je editor přepnutý na kartu Záhlaví:
upozornění: V pokynu skriptu #include<> je potřeba použít název toho souboru, k jehož funkcím budete chtít přístup.

Poznámka II: Záhlaví se pouze ukládají. Kompilace ani nasazení nejsou nutné, protože tento kód se kompiluje a nasazuje, když jej importuje skript nebo vlastní indikátor.



Pro použití záhlaví v novém skriptu stačí jednoduše přidat soubor záhlaví, jak ukazuje příklad

#include "my_common_functions.zqh"

int init() {
}

int start() {
printMyBalance();
}

Nahoru

Glosář

V glosáři najdete podrobné informace o každém příkazu jazyka ZQL.

Stačí kliknout na písmena v horní části a automaticky se přesunete na seznam pod daným písmenem. Kliknutím na písmenná záhlaví seznamu můžete funkce pod každým písmenem sbalit nebo rozbalit a kliknutím na jméno/záhlaví funkce můžete sbalit nebo rozbalit podrobnosti o dané funkci.

Nahoru

Používání skriptu na obchodním účtu

Po úspěšné komplikaci a nasazení skriptu můžete zavřít okno editoru skriptů a připojit skript ke grafu.

K tomu je potřeba přejít k vybranému měnovému páru a časovému období. U této ukázky máme graf měnového páru EURUSD s obdobím H1.

Klikněte na tlačítko Trading Scripts (Skripty obchodování – zvýrazněno na obrázku níže) a vyberte požadovaný skript.

Pokud kurzor podržíte nad skriptem, zobrazí se místní nápověda s popisem skriptu.


Pokud chcete ve vybraném grafu/období spustit skript, klikněte na název skriptu a otevře se nové okno obsahující popis skriptu i inicializační pole pro externí proměnné skriptu.


Po úpravě parametrů podle svých potřeb je potřeba kliknout na tlačítko „Start" (Spustit). Tím se skript připojí ke grafu!

Poznámka: Skript se spustí v tomto grafu ze serverů ZuluTrade bez ohledu na to, zda máte počítač zapnutý nebo zda jste ke svému účtu přihlášení.

Karta Trading Scripts (Skripty obchodování) – Zde můžete zkontrolovat všechny aktuálně aktivní skripty obchodování u každého grafu/časového období, společně se spuštěnou verzí a časem poslední aktualizace.

Pomocí ikony grafu můžete také přejít rovnou do grafu, ve kterém je skript spuštěn.


Karta Messages (Zprávy) – V této části se zobrazují například zprávy skriptu či zprávy služby ZuluTrade týkající se vašeho skriptu.

Nahoru

Zastavení a zrušení nasazení skriptu

Skript lze kdykoli zastavit nebo zrušit jeho nasazení


Zastavení skriptu – Chcete-li zastavit skript spuštěný v grafu nebo u časového období, stačí přejít na kartu 'Trading Scripts' (Skripty obchodování), kliknout na tlačítko „x" na pravé straně skriptu, který chcete zastavit a potvrdit zastavení v příslušném místním okně.

Poznámka: Zastavením skriptu zastavíte skript spuštěný v určitém grafu/u časového období. Skript zůstane na vašem účtu a mezi vašimi skripty obchodování


Zrušení nasazení skriptu – Chcete-li zrušit nasazení určitého skriptu, stačí přejít do oddílu skriptů obchodování, kliknout na tlačítko „x" u jeho názvu a potvrdit zrušení nasazení v příslušném místním okně.

Poznámka: Zrušením nasazení skriptu pouze odeberete skript ze seznamu dostupných skriptů vašeho obchodního účtu. Skript tímto způsobem neodstraníte z okna editoru skriptů.

Nahoru

Uživatelská příručka ZQL Standalone Compiler

Seznámení se ZQL Standalone Compiler

ZQL Standalone Compiler je samostatný režim pro kompilátor skriptu ZQL, který nabízí ZuluTrade na své webové platformě. Zkompiluje jakýkoliv skript kompatibilní s ZQL (např. mq4) na .zl soubor.

Stáhnout

ZQL Standalone Compiler je distribuován z ZuluTrade stránky.

Kompilátor je k dispozici ve formátu zip nebo tar.

MD5 SHA1
zql-standalone-compiler-stable.zip zql-standalone-compiler-stable.zip.md5 zql-standalone-compiler-stable.zip.sha1
zql-standalone-compiler-stable.tar.bz2 zql-standalone-compiler-stable.tar.bz2.md5 zql-standalone-compiler-stable.tar.bz2.sha1

Požadavky

  • Java JDK 6 (doporučujeme použití Java JDK 6 hotspotu)

Instalace

Jednoduše rozbalte zvolený stažený soubor do adresáře podle vašeho výběru. ZQL Standalone Compiler můžete nainstalovat na jakýkoliv operační systém, který podporuje formáty zip nebo tar. Další informace o této verzi naleznete v Poznámkách k vydání.

Rychlá prohlídka

Nyní, když jste si stáhli ZQL Standalone Compiler, se budeme dále zabývat rozložením distribuce a prozkoumáme adresářovou strukturu kompilátoru, klíčové konfigurační soubory, logy, atd.

Struktura adresáře
Adresář Popis
lib/
Obsahuje závislosti knihoven kompilátoru.
conf/
Obsahuje důležité konfigurační soubory, které nelze v žádném případě nahradit.
run.bat
Spustit skript na zařízení Windows.
run.sh
Spustit skript na zařízení Linux/Unix.
Možnosti kompilátoru
Název parametru
Skrácený název parametru
Hodnota
Popis
help h - Vytiskne nápovědu na konzoli.
class c Jakákoliv hodnota řetezce Název vygenerované třídy
package p Jakýkoliv řetezec ve formě cesty k balíčku Název vygenerovaného balíčku
output o Jakákoliv hodnota řetezce Název zkompilovaného vystupního souboru bez přípony
zqh z Jakýkoliv řetezec ve formě cesty k adresáři (relativní nebo absolutní) Zahrnout cestu k adresáři s vlastními zqh súbory
name n

Název požadovaného skriptu

pokud používate mezery, ujistěte se, že je umístíte mezi " ve Windowsu a \" v Linuxu

Ukázat název skriptu, jakmile je nahrán do ZuluTrade systému
description d

Popis požadovaného skriptu

pokud používate mezery, ujistěte se, že je umístíte mezi " ve Windowsu a \" v Linuxu

Ukázat popis skriptu, jakmile je nahrán do ZuluTrade systému
Příklady
Kompilovat vlastní expertní skript Výstup
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
my_expert.zl
Kompilovat vlastní expertní skript s vlastním záhlavím skriptu (např. v adresáři záhlaví) Výstup
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
my_expert.zl
Nahoru