ZuluScript Creation Guide
Sidst opdateret den
Indledning
ZuluTrade har skabt en ny generation af handelsscripts, der tillader tradere at oprette og installere deres egne handelsrobotter og indikatorer direkte via deres ZuluTrade Trader-konto uden behov for nogen ekstern software eller tredjepartsregistreringer!
ZuluScripts installeres ved hjælp ZuluTrade Query Language ( zql), som er udviklet til at være kompatibel med de mest almindeligt anvendte scripting-sprog på Forex-markedet.
Alt, hvad du behøver for at bruge ZuluScripts, er en Trader-konto med funktionen ZuluTrade+ aktiveret som vist på fanen Indstillinger, Link-indstillinger for Broker-konto, på din konto.
Adgang til ZuluTrade Trading Scripts Editor
For at få adgang til ZuluTrade Trading Scripts når du har tilmeldt dig ZuluTrade og linket din konto til ZuluTrade+ platformen, skal du navigere til ZuluTrade Trading Station og klikke på "Trading Scripts" (handels-scripts).
Et nyt pop-up vindue med titlen 'Trading Client' (handelsklient) åbnes derefter.
På den øverste højre sidebjælke i Scripts Editor kan du finde fire forskellige faner, der skifter funktionalitet i Scripts Editor.
Den første sætter tilstanden til oprettelse af scripts, den anden sætter tilstanden til oprettelsen af brugerdefinerede indikatorer, den tredje til oprettelsen af titler, og den sidste åbner ZQL-ordlisten, hvor du kan finde detaljerede oplysninger om hver enkelt kommando i ZQL-sproget.
Top
Oprettelse af et ZuluScript
For at oprette dit ZuluScript skal du klikke på knappen ’Create Script' (Opret script) i Scripts Editor.
Når det nye script oprettes, bliver editorens rude fyldt med en zql-kodeskabelon - det er på dette panel, at script-koden skal indtastes
På højre side under editoren er der tre knapper, som vil hjælpe med at oprette dint ZuluScript – Save (gem) Compile (kompiler) og Deploy(implementer)
Save - . Save-knappen gemmer dit script, så eventuelle ændringer og fremskridt ikke går tabt.
Dog vil lagring af en script-ændring ikke indikerer, at denne ændring er klar til brug. Enhver ændring skal kompileres og indsættes, før den er klar til brug.
Compile – Kompilering af et script vil tjekke koden for syntaksfejl, og hvis kompileringen er en succes, oprettes de binære filer, der er forbundet med vores script, så det kan eksekveres.
Hvis kompilationsprocessen mislykkes, vil de identificerede fejl blive opført i panelet 'Compiler Output' (kompilerings-outout)
se et eksempel på en mislykket kompilering nedenfor :
Deploy – Et script skal kompileres, før det kan installeres . Når dette er gjort, og zql-filen er blevet oprettet, kan du derefter installere scriptet og have det til rådighed til brug på din ZuluTrade Trading Station
Metadata ! – Du kan redigere metadataene til dit script på højre side af vinduet.
Feltet ’Name’ (navn) er det navn, der vil blive vist, når du knytter scriptet til et liste .
Feltet ’Filename’ (filnavn) er det filnavn, som scriptet lagres under internt på ZuluTrades server. Det er ikke obligatorisk at ændre dette felt, men hvis du ønsker at gøre det, skal du huske det skal slutte med endelsen . Zql.
Feltet ' Description' (beskrivelse) er en kort beskrivelse, der vil være synlig, når du knytter scriptet til et liste. Beskrivelsen kan hjælpe med at minde dig om scriptets nøjagtige funktionalit, så du bedes uddybe eventuelle oplysninger, du har brug for i dette felt.
List of Scripts (liste over scripts) – Under metadatafelterne vises en liste over alle de gemte scripts. Bemærk, at hvert nyt script, der oprettes, gemmes automatisk
Det aktuelt valgte script (hvis kode vises i editorruden) er fremhævet
Sletning af et script – Hvis du er nødt til at slette et script, skal du blot klikke på ""x""-ikonet ved siden af scriptets navn og bekræfte sletningen på det relevante pop-up-vindue.
Script-eksempel - Lad os se et eksempel på et zql-script, som du kan bruge til testformål:
#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);
}
I hver cyklus kontrollerer dette script antallet af åbne positioner. Hvis der ikke er nogen åbne positioner, og visse indikatorpositioner er opfyldt, åbner scriptet åbner en ny position. Hvis der omvendt er mange åbne positioner, det lukker det en
BEMÆRK: Det er ikke en reel handelsstrategi og er kun til demonstration .
Hvis du på noget tidspunkt er nødt til at oprette et nyt script, skal du blot klikke på knappen 'Create Script' og starte denne proces igen.
Top
Oprettelse af en brugerdefineret indikator
Brugerdefinerede indikatorer kan oprettes og anvendes i et andet handelsscript, hvilket udvider de tekniske indikatorer, der allerede findes på det sprog .
Brugerdefinerede indikatorer kan bruges i ethvert ZuluScript med iCustom () ZQL-funktionen efter at have gemt, kompileret og installeret din brugerdefinerede indikator
Bemærk: I øjeblikket kan vi ikke vise brugerdefinerede indikatorer på listerne.
Opret din brugerdefinerede indikator ved at klikke på knappen 'Create Indicator' k(opret indikator) i Scripts Editor.
Sørg for at Eeditoren er sat til fanen for brugerdefinerede indikatorer:
Du kan skal dernæst redigere, døbe, gemme og installere din brugerdefinerede indikator, når du er klar!
Rediger, Indikatorens navn vil være det, der bruges senere til at kontakte iCustom () for at få adgang til det på dine ZuluScripts.
Lad os se på et eksempel på en brugerdefineret indikator, som du kan bruge til testformål :
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);
}
Top
Oprettelse af en header
Her kan du definere genanvendelige funktioner, der kan importeres og bruges af ethvert script eller brugerdefineret indikator.
Bemærk, at headere ikke er ZQL-scripts, så de ikke kræver en init (), start () eller de-init () funktion .
For at oprette dit header, skal du klikke på knappen 'Create Header' (opret header) i Scripts Editor.
Sørg for at editeren er sat til fanebladet Headers (header):
Note I: Det er filnavnet, der skal anvendes i # include <> direktivet på det script, du skal bruge til at tilgå funktionerne
Bemærk II: headere gemmes kun. Kompilering eller implementering er ikke nødvendig, da koden vil blive udarbejdet og anvendt under import af et script eller brugerdefineret indikator.
Brug af headeren i et nyt script er så simpelt som at inkludere header-filen på følgende måde
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Top
Ordliste
I ordlisten (glossary) kan du finde detaljerede oplysninger om hver enkelt kommando i ZQL-sproget .
Du skal blot klikke på bogstaverne øverst for automatisk at gå til det pågældende bogstavs listevisning . Ved at klikke på headeres bogstaver på listen, kan du udvide /skjule hvert bogstavs funktioner og ved at klikke på en funktions navn /header kan du udvide /skjule funktionens detaljer.
Top
Brug af et script på din Trader-konto
Når et script er blevet kompileret og installeret, kan du lukke Script Editor og knytte scriptet til en liste.
For at kunne gøre dette, er du nødt til at navigere til det ønskede valutapar og periode. I dette eksempel er det EURUSD-listen med perioden 1. halvår.
Klik på knappen Trading Scripts (handels-scripts) fremhævet i skærmbilledet nedenfor )), og vælg det ønskede script.
Hvis du holder musen hen over script, vises et værktøjstip, der indeholder en beskrivelse af scriptet.
For at starte scriptet på den valgte liste/periode, skal du blot klikke på scriptets navn,hvorefter et nyt vindue åbnes med en beskrivelse af scriptet samt eventuelle initialiseringsfelter for de eksterne variabler i scriptet.
Når parametrene er justeret i henhold til dine behov, skal derefter klikke på "Start"-knappen for at knytte scriptet til listen
Bemærk : scriptet vil køre på denne liste fra ZuluTrades servere, uanset om din pc er tændt, eller om du er logget ind på din konto eller ej.
Fanen Trading Scripts (handels-scripts) - Her kan du gennemgå alle de aktuelt aktive handels-scripts på hver liste/periode, sammen med den kørende version og tidspunktet for sidste opdatering.
Du kan også navigere direkte til den liste, hvor scriptet kører, via Chart-ikonet
Fanen Messages (beskeder) - Eventuelle beskeder fra dit script, udskrifter, beskeder fra ZuluTrade vedrørende dit script etc. vil blive vist i denne sektion.
Top
Stop og afinstaller et script
Du kan stoppe og afinstallere et script på ethvert givet tidspunkt
Stop et Script - For at stoppe et script fra at køre på en liste /periode skal du blot navigere til fanen ' Trading Scripts ' og klikke på "x" knappen på højre side af det script du ønsker at stoppe, og bekræft afbrydelsen på det relevante pop-up-vindue.
Bemærk : Hvis et script stoppes, vil det kun blive stoppet fra at køre på en listed/periode . Scriptet vil forblive på din Trader-konto og på dine handels-scriåts
Afinstallation af et script - For at afinstallere et script, skal du blot navigere til Trading Scripts og klikke på "x" knappen nær sit navn, og bekræfte afinstallationen på det relevante pop-up-vindue
Bemærk: Afinstallation af scriptet vil blot fjerne det fra listen over tilgængelige scripts på din Trader-konto, det sletter ikke scriptet fra Script Editor-vinduet.
Top
Brugervejledning for ZQL Standalone Compiler
Kom i gang med ZQL Standalone Compiler
ZQL Standalone Compiler er den uafhængige tilstand for ZQL Script compileren, som zulutrade tilbyder på deres web-platform. Det vil kompilere ethvert ZQL-kompatibelt script (f.eks. mq4) til en .zl fil.
Download
ZQL Standalone Compiler distribueres fra Moneta Marketss hjemmeside.
Compileren er til rådighed i zip eller tar filformater
Krav
- Java JDK 6 (vi anbefaler at du anvender Java JDK 6 hotspot)
Installation
Simpelt hen udpak dit valgte download til en mappe efter dit valg. Du kan installere ZQL Standalone Compiler på ethvert operativ system, som understøtter zip- og tar-formater. Se i versionsnoterne for yderligere oplysninger i forhold til versionen.
En hurtig rundtur
Nu da du har downloadet ZQL Standalone Compiler, er næste trin at diskutere layoutet for distributionen og udforske compilerens mappe-struktur, nøglekonfigurations-filer, log-filer og så videre.
Vejviser-struktur
Vejviser |
Beskrivelse |
lib/
|
Indeholder compilerens bibliotek-afhængigheder. |
conf/
|
Indeholder vigtige konfigurationsfiler, som ikke bør ændres på nogen måde. |
run.bat
|
Run-scriptet for Windows maskiner. |
run.sh
|
Run-scriptet for Linux/Unix maskiner. |
Compiler-muligheder
Parameter navn
|
Parameter kort navn
|
Værdi
|
Beskrivelse
|
help |
h |
- |
Udskriver hjælpebeskeden til konsollen. |
class |
c |
Enhver tråd-værdi |
Det genererede klassenavn |
package |
p |
Enhver tråd i form af en pakke-sti |
Det genererede pakkenavn |
output |
o |
Enhver tråd-værdi |
Navnet på den kompilerede output-fil uden udvidelse |
zqh |
z |
Enhver tråd i form af en mappe-sti (relativ eller absolut) |
Inkluder mappe-sti med tilpassede zqh-filer |
name |
n |
Navnet for det ønskede script
Hvis du har mellemrum, så vær sikker på at sætte det mellem " i Windows og \" i Linux
|
Navnet på scriptet til at vises når det er indlæst i Moneta Marketss system |
description |
d |
Beskrivelsen af det ønskede script
Hvis du har mellemrum, så vær sikker på at sætte det mellem " i Windows og \" i Linux
|
Beskrivelsen af scriptet til at vises når det er indlæst i Moneta Marketss system |
Eksempler
Kompiler et tilpasset ekspert-script |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Kompiler et tilpasset ekspert-script med et tilpasset sidehoved-script (f.eks. i mappen for sidehoveder) |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Top