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