Ръководство за създаване на ZuluScript
Последна актуализация на
Въведение
ZuluTrade е създала ново поколение скриптове за търговия, която позволяват на трейдърите да създават и използват собствени роботи за търговия и индикатори, направо чрез своята сметка на трейдър в ZuluTrade, без да е необходим външен софтуер или регистрации на трети страни!
ZuluScripts са реализирани с помощта на езика за заявки на ZuluTrade (zql), който е разработен, за да бъде съвместим с най-често използваните скриптови езици на форекс пазара.
Всичко, което ви е необходимо, за да използвате ZuluScripts в сметка на трейдър с включена опция ZuluTrade+, както е показано във вашата сметка в раздел Настройки , Настройки на връзката със сметката на брокера.
Достъп до редактора на скриптове за търговия в ZuluTrade
За да получите достъп до скриптовете за търговия на ZuluTrade, след като сте се регистрирали в ZuluTrade и сте свързали вашата сметка с платформата ZuluTrade+, трябва да отворите станцията за търговия на ZuluTrade и да кликнете върху 'Trading Scripts' (Скриптове за търговия).
Тогава ще се появи нов изскачащ прозорец, наречен 'Trading Client' (клиент за търговия).
В горния десен ъгъл на страничната лента ще намерите 4 различни раздела, които превключват режима на функционалност на редактора на скриптове.
Първият от тях задава режим на създаване на скриптове, вторият задава режим на създаване на персонализирани индикатори, третият - задава режим за създаване на хедъри, а последният извежда речника на ZQL, където можете да намерите подробна информация за всяка команда на езика ZQL.
Горе
Създаване на ZuluScript
За да създадете свой ZuluScript, трябва да кликнете върху бутона „Create Script“ (Създаване на скрипт) на редактора на скриптове.
След създаването на нов скрипт, прозорецът на редактора се запълва с шаблон на zql код - той е на този прозорец, където се въвежда кода на скрипта.
Под прозореца вдясно са разположени три бутона, които ще ви помогнат при създаването на вашия ZuluScript - Save (Запишете), Complile (Компилирайте) и Deploy (Разположете).
Save - бутонът Save (Запишете) запазва скрипта ви във всеки даден момент, така че всякакви промени и напредък да не бъдат загубени.
Обаче, записването на промяна в скрипт не означава, че тази промяна е готова за ползване. Всяка промяна трябва да бъде компилирана и разположена, за да бъде достъпна за ползване.
Compile (Компилирайте) - При компилиране на скрипта, кодът ще бъде проверен за синтактични грешки, и ако компилацията е успешна, ще бъде създадени двоичните файлове, свързан с нашия скрипт, така че той да може да бъде изпълнен.
Ако процесът на компилация не успее, срещнатите грешки ще бъдат изброени в прозореца 'Compiler Output' (Резултат от компилацията).
Моля, вижте по-долу пример за неуспешна компилация:
Deploy (Разположете) - За да разположите скрипта, той трябва първо да е бил компилиран. След като това е изпълнено и .zql файлът е създаден, можете да разположите скрипта и да го имате на разположение за използване на станцията за търговия в ZuluTrade!
Метаданни - В дясната част на прозореца метаданните на вашия скрипт могат да бъдат изменени.
Полето „Name“ (Име) е името, което ще бъде показано, когато поставяте скрипта на диаграма.
Полето „Filename“ (Име на файла) е името на файла, под което скриптът се записва вътрешно в сървъра на ZuluTrade. Не е задължително да промените това поле, но ако желаете да го направите, имайте предвид, че то трябва да завършва със суфикса „.zql“.
Полето „Description“ (Описание) съдържа кратко описание, което ще бъде видимо, когато прикрепвате скрипта към графика. Описанието може да ви напомни точната функционалност на скрипта, така че в това пространство укажете подробно всички детайли, които ви трябват.
Списък на скриптове - Под полетата с метаданни е разположен списък с всички записани скриптове. Моля, отбележете, че всеки нов създаден скрипт ще бъде записан автоматично.
Текущият избран скрипт (чийто код е показан в прозореца на редактора) ще бъде маркиран
Изтриване на скрипта - Ако желаете да изтриете скрипт, трябва да кликнете върху знака „x“до името на скрипта и да потвърдите изтриването в съответния изскачаш прозорец.
Примерен скрипт - Нека разгледаме примерен zql скрипт, който можете да използвате с целите тестване:
#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);
}
Този скрипт проверява броя отворени позиции във всеки цикъл. Ако няма отворени позиции и са спазени някои условия на индикатора, скриптът ще отвори нова позиция. В противен случай, ако има много отворени позиции, той ще затвори една.
ЗАБЕЛЕЖКА: Това не е действителна стратегия за търговия и е само за демонстрационни цели.
Ако в някой момент трябва да създадете нов скрипт, просто кликнете върху бутона „Create Script“ (Създай скрипт) и повторете процеса отново.
Горе
Създаване на персонализиран индикатор
Персонализирани индикатори могат да бъдат създадени и използвани в друг скрипт за търговия, който разширява списъка на техническите индикатори, достъпни вече в този език.
Персонализираните индикатори могат да бъдат използвани във всеки ZuluScript, който използва функцията iCustom() ZQL след записване, компилиране и разполагане на вашия персонализиран индикатор.
Забележка: За момента не можем да рендираме персонализирани индикатори на графиките.
За да създадете персонализиран индикатор, трябва да кликнете върху бутона „Create Indicator“ (Създайте индикатор) на редактора на скриптове.
Моля, уверете се, че редакторът е превключен на раздела „Персонализирани индикатори“:
След това трябва да редактирате, наименувате, запишете и разположите вашия персонализиран индикатор, когато сте готови!
Функциите Edit (Редактирайте), Name (Наименувайте), Save (Запишете) и Deploy (Разположете) работят по начин, подобен на ZuluScripts
Забележка: името на индикатора ще бъде използвано по-късно при извикване на функцията iCustom() за достъп до вашите ZuluScripts.
Използването на персонализирания индикатор в нов скрипт е толкова просто, както следва:
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);
}
Горе
Създаване на хедър
Тук можете да дефинирате функции за многократна употреба, които могат да бъдат импортирани и използвани във всеки скрипт или персонализиран индикатор.
Моля, отбележете, че хедърите не са ZQL скриптове, така че те не се нуждаят от функциите init(), start() или deinit().
За да създадете ваш хедър, трябва да кликнете върху бутона „Create Header“ (Създай хедър) на редактора на скриптове.
Моля, уверете се, че редакторът е превключен на раздела хедъри:
Забележка I: Това е името на файла, който трябва да бъде използван в директивата на скрипта #include<>, от който се нуждаете за достъп до функциите.
Забележка II: Хедърите само се записват. Не е необходимо компилиране или разполагане, тъй като кодът ще бъде компилиран и разположен, когато бъде импортиран от скрипт или персонализиран индикатор.
Да използвате хедъра в нов скрипт е също така лесно, както и да включите хедър файл както следва
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Горе
Речник
В речника можете да намерите подробна информация за всяка команда на езика ZQL.
Просто кликнете върху буквите горе за автоматично превъртане на списъка на буквите. Също, чрез кликване върху буквата на хедърите на списъка можете да разширите/свиете функциите на всяка буква, а чрез кликване върху името/хедъра на функцията можете да разширите/свиете подробностите за функцията.
Горе
Използване на скрипт на вашата сметка на трейдър
След успешна компилация и разполагане на скрипта, можете да затворите прозореца на редактора на скриптове и да присъедините скрипта към графика.
За тази цел трябва да отидете на желаната валутна двойка и период. За този пример, графиката на EURUSD с времева стъпка от 1 час.
Кликнете върху бутона Trading Scripts (Скриптове за търговия) (маркиран в екранната снимка по-долу) и изберете скрипт по ваш избор.
Ако оставите курсора на мишката върху скрипта, ще се появи пояснение, което съдържа описанието на скрипта.
За да стартирате скрипта на избраната Графика/времеви период, просто кликнете върху името на скрипта и ще се появи нов прозорец, който съдържа описанието на скрипта, както и всички полета за инициализация на външните променливи на скрипта.
След като настроите параметрите според вашите нужди, кликнете върху бутона „Start“ (Старт) и скрипта е прикачен към графиката!
Забележка: Скриптът ще бъде изпълняван на тази графика от сървърите на ZuluTrade, независимо дали вашият персонален компютър е включен или дали вие сте вписани във вашата сметка или не.
Раздел Trading Scripts (Скриптове за търговия) - Тук можете да прегледате всички активни в настоящия момент скриптове за търговия за всяка Графика/период заедно с текущата версия и времето на последната актуализация.
Можете също да се придвижите директно към графиката, където скриптът се изпълнява чрез иконата Chart (Графика).
Раздел Messages (Съобщения) - Всички съобщения от вашия скрипт, отпечатвания, съобщения от ZuluTrade относно вашия скрипт и т.н. ще се появят в този раздел.
Горе
Спиране и скриване на скрипт
Можете да спрете и да скриете скрипта във всеки момент
Спиране на скрипт - За да спрете изпълнението на скрипт на Графика/период, е достатъчно да отидете в раздела „Trading Scripts“ (Скриптове за търговия), да кликнете върху бутона „x“ вдясно от скрипта, който искате да спрете, и да потвърдите спирането в съответния изскачащ прозорец.
Забележка: Спирането на скрипта ще го спре от изпълнение само на Графика/период. Скриптът ще остане във вашата сметка на трейдър и във вашите скриптове за търговия
Скриване на скрипт - За да скриете скрипт, е достатъчно да придвижите курсора на раздела Trading Scipts (Скриптове за търговия), да кликнете върху бутона „x“ до неговото име и да потвърдите скриването в съответния изскачащ прозорец.
Забележка: Скриването на скрипта ще го премахне само от списъка на наличните скриптове на вашата сметка на трейдър, но няма да го изтрие от прозореца на редактора на скриптове.
Горе
Ръководство на потребителя на ZQL Standalone Compiler
Първи стъпки със ZQL Standalone Compiler
ZQL Standalone Compiler е автономен режим на компилатора на скриптове ZQL, който zulutrade предлага на своята уеб платформа. Той ще компилира всеки скрипт, съвместим със ZQL (напр. mq4), в .zl файл.
Изтегляне
ZQL Standalone Compiler се разпространява от сайта на ZuluTrade.
Компилаторът е наличен във формати zip или tar.
Изисквания
- Java JDK 6 (препоръчваме ви да използвате точка за безжичен достъп Java JDK 6)
Инсталиране
Просто извлечете избрания от вас изтеглен файл в директория по ваш избор. Можете да инсталирате ZQL Standalone Compiler на всяка операционна система, която поддържа формати zip или tar Обърнете се към Бележки по изданието за допълнителна информация за версията.
Кратък обзор
Сега, след като изтеглихте ZQL Standalone Compiler, следващото нещо, което ще обсъдим, е оформлението на дистрибуцията и ще проучим структурата на директориите на компилатора, ключовите конфигурационни файлове, регистрационните файлове и т. н.
Структура на директорията
Директория |
Описание |
lib/
|
Съдържа зависимостите на библиотеките на компилатора. |
conf/
|
Съдържа изключително важни конфигурационни файлове, които не трябва да бъдат променяни по никакъв начин. |
run.bat
|
Скрипт за изпълняване за машини под Windows. |
run.sh
|
Скрипт за изпълняване за машини под Linux/Unix. |
Опции на компилатора
Име на параметъра
|
Кратко име на параметъра
|
стойност
|
Описание
|
help |
h |
- |
Отпечатва помощно съобщение на конзолата. |
class |
c |
Всяка стойност на низ |
Генерираното име на класа. |
package |
p |
Всеки низ във формата на път на пакет |
Генерираното име на пакета |
output |
o |
Всяка стойност на низ |
Името на компилирания изходен файл без разширение |
zqh |
z |
Всеки низ във формата на път на директория (относителен или абсолютен) |
Включете пътя на директорията с потребителските zqh файлове |
name |
n |
Името на желаните скриптове
ако имате интервали, уверете се, че ще ги разположите между " в Windows и \" в Linux
|
Името на скрипта, което да бъде показан, след като е зареден в системата ZuluTrade. |
description |
d |
Описанието на желаните скриптове
ако имате интервали, уверете се, че ще ги разположите между " в Windows и \" в Linux
|
Описанието на скрипта, който да бъде показан, след като е зареден в системата на ZuluTrade. |
Примери
Компилирайте персонализиран експертен скрипт |
Изход |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Компилирайте персонализиран експертен скрипт с персонализиран хедър скрипт (напр. в директорията на хедърите) |
Изход |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Горе