Przewodnik, jak tworzyć skrypty ZuluScript

Ostatnia aktualizacja

Wprowadzenie

ZuluTrade stworzyło skrypty inwestycyjne nowej generacji, które pozwalają Inwestorom tworzyć i rozmieszczać własne roboty i wskaźniki inwestycyjne bezpośrednio ze swojego rachunku Inwestora ZuluTrade – bez konieczności instalowania dodatkowego oprogramowania ani rejestracji w serwisach stron trzecich!
Skrypty ZuluScript są wdrażane w języku ZuluTrade Query Language (zql), który został opracowany, by współpracować z większością powszechnie używanych języków skryptowych rynku Forex.

Aby korzystać ze skryptów ZuluScript wystarczy rachunek Inwestora z włączoną opcją ZuluTrade+, jak pokazano w zakładce Ustawienia, Ustawienia powiązania rachunku brokerskiego na Twoim rachunku.

Uzyskiwanie dostępu do Edytora Skryptów inwestycyjnych ZuluTrade

Aby uzyskać dostęp do Skryptów inwestycyjnych ZuluTrade, po dokonaniu rejestracji w ZuluTrade i powiązaniu swojego rachunku z platformą ZuluTrade+ musisz przejść do platformy ZuluTrade Trading Station i kliknąć „Skrypty inwestycyjne".
Pojawi się nowe wyskakujące okno o nazwie „Klient inwestycyjny".
Po prawej stronie u góry panelu bocznego Edytora skryptów znajdują się 4 różne zakładki, za pomocą których przełączany jest tryb funkcjonalności Edytora skryptów.
Pierwszy konfiguruje tryb do tworzenia skryptów, drugi – do tworzenia Wskaźników indywidualnych, trzeci – do tworzenia Nagłówków, a ostatni przywołuje Glosariusz ZQL, gdzie znajdziesz szczegółowe informacje o każdym z poleceń języka ZQL.

Najlepsze

Tworzenie skryptu ZuluScript

Aby utworzyć skrypt ZuluScript, kliknij przycisk „Utwórz skrypt" w Edytorze skryptów.

Po utworzeniu nowego skryptu okno edytora wypełni kod szablonu zql – w tym panelu należy wprowadzić kod skryptu.


Po prawej stronie poniżej edytora znajdują się trzy przyciski pomocne przy tworzeniu skryptu ZuluScript – Zapisz, Kompiluj i Rozmieść.


Zapisz – przycisk Zapisz zapisuje skrypt w danym momencie, tak aby wszelkie zmiany i postępy nie zostały utracone.

Zapisanie zmiany w skrypcie nie oznacza jednak, że ta zmiana jest gotowa. Wszelkie zmiany muszą zostać skompilowane i rozmieszczone przed udostępnieniem ich do użytku.

Kompiluj – Kompilacja skryptu sprawdza kod pod kątem błędów składni, a po pomyślnym zakończeniu kompilacji tworzy pliki binarne powiązane z naszymi skryptami, dzięki czemu skrypt może być wykonany.
Jeżeli proces kompilacji nie zakończy się pomyślnie, lista błędów pojawi się w panelu „Wynik kompilacji".

Poniżej znajduje się przykład kompilacji niezakończonej pomyślnym wynikiem:
Rozmieść – Aby rozmieścić skrypt, najpierw należy przeprowadzić kompilację. Po przeprowadzeniu kompilacji i utworzeniu pliku .zql możesz Rozmieścić skrypt – teraz możesz z niego korzystać na swojej platformie ZuluTrade Trading Station!


Metadane – Po prawej stronie okna można wprowadzać zmiany do Metadanych skryptu.
Pole „Nazwa" wskazuje nazwę, która będzie wyświetlana po załączeniu skryptu do wykresu.
Pole „Nazwa pliku" wskazuje nazwę pliku, w którym skrypt będzie przechowywany wewnętrznie na serwerze ZuluTrade. Zmiana tego pola nie jest obowiązkowa, ale jeśli chcesz wprowadzić zmianę, pamiętaj, że rozszerzeniem nazwy musi być .zgl.
Pole „Opis" to krótki opis, który będzie widoczny po załączeniu skryptu do wykresu. Opis będzie przypominać Ci o dokładnej funkcjonalności skryptu, dlatego uwzględnij w tym miejscu wszystkie potrzebne informacje.

Lista skryptów – Pod polem Metadanych znajduje się lista wszystkich zapisanych skryptów. Pamiętaj, że każdy nowo utworzony skrypt zostaje automatycznie zapisany.
Aktualnie wybrany skrypt (którego kod wyświetlany jest w oknie edytora) jest podświetlony
Usuwanie skryptu – Jeśli chcesz usunąć skrypt, kliknij ikonę „x" obok nazwy skryptu i potwierdź usunięcie w odpowiednim wyskakującym oknie.
Skrypt przykładowy – Przyjrzyjmy się przykładowemu skryptowi zql, który możesz przetestować:

#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);
}
Ten skrypt sprawdza w każdym cyklu liczbę otwartych pozycji. Jeżeli brak otwartych pozycji, a spełnione są niektóre warunki wskaźnika, skrypt otwiera nową pozycję. W przeciwnym przypadku – jeżeli jest wiele otwartych pozycji, skrypt zamyka jedną z nich.
UWAGA: To nie jest rzeczywista strategia inwestycyjna – służy tylko jako ilustracja.

Jeżeli w dowolnym momencie chcesz utworzyć nowy skrypt, kliknij przycisk „Utwórz skrypt" i rozpocznij proces od nowa.

Najlepsze

Tworzenie Wskaźnika indywidualnego

Wskaźniki indywidualne można utworzyć i korzystać z nich w innym skrypcie inwestycyjnym, rozszerzając zakres wskaźników technicznych już dostępnych w skrypcie.

Wskaźniki indywidualne mogą być stosowane w każdym skrypcie ZuluScript za pośrednictwem funkcji iCustom() ZQL po zapisaniu, kompilacji i rozmieszczeniu wskaźnika indywidualnego.

Uwaga: W chwili obecnej nie możemy wyświetlić wskaźników na wykresach.


Aby utworzyć własny Wskaźnik indywidualny, kliknij przycisk „Utwórz wskaźnik" w Edytorze skryptów.

Upewnij się, że Edytor skryptów przełączony jest na zakładkę Wskaźniki indywidualne:

Gdy Wskaźnik indywidualny jest gotowy, należy go Edytować, Nazwać, Zapisać i Rozmieścić.

Edytuj, Nazwij, Zapisz i Rozmieść wynik swojej pracy w podobny sposób, jak opisano dla skryptów ZuluScript.
Uwaga: Nazwą wskaźnika będzie nazwa stosowana później w funkcji iCustom() w celu uzyskania dostępu do skryptów ZuluScript.


Popatrzmy na przykładowy Wskaźnik indywidualny używany podczas testowania:

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);
}

Najlepsze

Tworzenie Nagłówka

W tym miejscu możesz zdefiniować funkcje wielokrotnego użytku, które można zaimportować i zastosować do każdego Skryptu lub Wskaźnika indywidualnego.

Pamiętaj, że Nagłówki nie stanowią skryptów ZQL, dlatego nie wymagają funkcji init(), start() ani deinit().


Aby utworzyć Nagłówek, kliknij przycisk „Utwórz Nagłówek" w Edytorze skryptów.

Upewnij się, że Edytor przełączony jest na zakładkę Nagłówki:
Uwaga I: To jest nazwa pliku, której należy użyć w dyrektywnie #include<> w skrypcie, do którego funkcji chcesz uzyskać dostęp.

Uwaga II: Nagłówki tylko się zapisuje. Przeprowadzenie kompilacji lub rozmieszczenia nie jest konieczne, ponieważ kod zostanie skompilowany i rozmieszczony po zaimportowaniu przez Skrypt lub Wskaźnik indywidualny.



Używanie Nagłówka w nowym Skrypcie jest tak proste, jak włączanie pliku nagłówka:

#include "my_common_functions.zqh"

int init() {
}

int start() {
printMyBalance();
}

Najlepsze

Glosariusz

W Glosariuszu znajdziesz szczegółowe informacje dla każdego polecenia języka ZQL.

Wystarczy kliknąć litery u góry i automatycznie przewinąć do wykazu liter. Klikając nagłówki liter w wykazie, możesz również rozszerzyć/zwinąć funkcje każdej litery, a po kliknięciu nazwy/nagłówka funkcji możesz rozszerzyć/zwinąć szczegóły funkcji.

Najlepsze

Korzystanie ze Skryptu na rachunku Inwestora

Po pomyślnym zakończeniu kompilacji i rozmieszczenia Skryptu możesz zamknąć okno Edytora skryptów i załączyć Skrypt do wykresu.

Aby to zrobić, musisz przejść do wybranej pary walutowej i okresu. W tym przykładzie – do wykresu EUR/USD o okresie H1.

Kliknij przycisk Skrypty inwestycyjne (podświetlony na zrzucie ekranu poniżej) i wybierz skrypt.

Gdy najedziesz kursorem myszki na skrypt, pojawi się etykieta narzędzia zawierająca Opis skryptu.


Aby uruchomić skrypt na wybranym Wykresie/w wybranym Okresie, kliknij nazwę skryptu i pojawi się nowe okno zawierające opis skryptu oraz pola inicjalizacji dla zewnętrznych zmiennych skryptu.


Po dostosowaniu parametrów zgodnie z potrzebami możesz kliknąć przycisk Start, a skrypt zostanie załączony do wykresu.

Uwaga: Skrypt zostanie uruchomiony na tym wykresie z serwerów ZuluTrade niezależnie od tego, czy Twój komputer jest uruchomiony lub czy jesteś zalogowany na swój rachunek.

Zakładka Skrypty inwestycyjne – W tym miejscu możesz przeglądać wszystkie aktualnie aktywne skrypty inwestycyjne na każdym Wykresie/w każdym Okresie łącznie z informacją o uruchomionej wersji i datą ostatniej aktualizacji.

Możesz też przejść bezpośrednio do Wykresu, na którym uruchomiony jest Skrypt poprzez ikonę wykresu.


Zakładka wiadomości – Wszystkie wiadomości wysłane przez Skrypt, wydruki, wiadomości od ZuluTrade dotyczące Twojego skryptu itp. pojawiać się będą w tej sekcji.

Najlepsze

Zatrzymywanie i Cofnięcie rozmieszczenia skryptu

Możesz Zatrzymać i Cofnąć rozmieszczenie Skryptu w dowolnym momencie


Zatrzymywanie skryptu – Aby zatrzymać skrypt, który jest uruchomiony na Wykresie/w Okresie, wystarczy przejść do zakładki „Skrypty inwestycyjne", kliknąć przycisk „x" po prawej stronie Skryptu, który chcesz zatrzymać i potwierdzić Zatrzymanie w odpowiednim wyskakującym oknie.

Uwaga: Zatrzymanie skryptu spowoduje wyłączenie skryptu tylko na Wykresie/w Okresie, w którym jest uruchomiony. Skrypt pozostanie na Twoim rachunku Inwestora oraz w Twoich Skryptach inwestycyjnych


Cofnięcie rozmieszczenia Skryptu – Aby cofnąć rozmieszczenie skryptu, wystarczy przejść do sekcji Skrypty inwestycyjne, kliknąć przycisk „x" obok nazwy skryptu i potwierdzić Cofnięcie rozmieszczenia w odpowiednim wyskakującym oknie.

Uwaga: Cofnięcie rozmieszczenia skryptu spowoduje jedynie usunięcie skryptu z listy dostępnych Skryptów na Twoim rachunku Inwestora, nie spowoduje usunięcia skryptu z okna Edytora skryptów.

Najlepsze

Przewodnik użytkownika ZQL Standalone Compiler

Jak rozpocząć pracę z ZQL Standalone Compiler

ZQL Standalone Compiler jest standardowym trybem ZQL Script compiler, który ZuluTrade oferuje na swojej platformie internetowej. Skompiluje każdy skrypt kompatybilny z ZQL (np. mq4) do pliku .zl.

Pobierz

ZQL Standalone Compiler jest rozprowadzany ze strony ZuluTrade.

Kompilator jest dostępny w plikach w formatach: zip lub 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

Wymogi

  • Java JDK 6 (zalecamy korzystanie z hotspotów Java JDK 6)

Instalacja

Proszę po prostu wyodrębnić wybrane pobieranie do wybranego katalogu. ZQL Standalone Compiler można zainstalować we wszystkich systemach operacyjnych, które wspierają format zip lub tar. Aby uzyskać dodatkowe informacje, proszę się odnieść do Informacji o danej wersji.

Krótki przewodnik

Teraz, po pobraniu ZQL Standalone Compiler, następna rzecz do przedyskutowania to rozłożenie dystrybucji i przeanalizowanie struktury katalogu kompilatora, kluczowych plików konfiguracyjnych, plików logowania itd.

Struktura katalogu
Katalog Opis
lib/
Zawiera kompilator zależności od bibliotek
conf/
Zawiera ważne pliki konfiguracyjne, których pod żadnym pozorem nie powinno się zmieniać.
run.bat
Wykonywanie skryptu na urządzeniach Windows
run.sh
Wykonywanie skryptu na urządzeniach Linux/Unix
Opcje kompilatora
Nazwa parametru
Krótka nazwa parametru
Wartość
Opis
help h - Drukuje wiadomość pomocy w konsoli
class c Jakakolwiek wartość ciągowa Wygenerowana nazwa klasy
package p Jakikolwiek ciąg w formieścieżki pakietowej Wygenerowana nazwa pakietu
output o Jakakolwiek wartość ciągowa Nazwa opracowanego pliku wyjściowego
zqh z Jakikolwiek ciąg w formie ścieżki katalogowej (relatywny lub absolutny) umieść ścieżkę katalogową z własnymi plikami zqh
name n

Nazwa wymaganego skryptu

w przypadku małych spacji proszę je umieścić pomiędzy " w Windows i \" w Linuxie

Nazwa pliku po wczytaniu go do systemu ZuluTrade
description d

Opis wymaganego skryptu

w przypadku małych spacji proszę je umieścić pomiędzy " w Windows i \" w Linuxie

Opis skryptu, który będzie pokazany po wczytaniu go w systemie ZuluTrade
Przykłady
Opracuj własny specjalistyczny skrypt Wynik pracy
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
my_expert.zl
Opracuj własny specjalistyczny skrypt, z własnym skryptem w nagłówku (np. w katalogu nagłówków) Wynik pracy
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
my_expert.zl
Najlepsze