ZuluScript Handleiding
Voor het laatst bijgewerkt op
Introductie
ZuluTrade heeft een nieuwe generatie van beleggingsscripts ontwikkeld waarmee Handelaars hun eigen handelrobots en -indicators kunnen aanmaken en uitrollen, rechtstreeks via hun ZuluTrade-beleggeraccount, zonder de noodzaak voor externe software of registraties bij derden!
ZuluScripts worden geïmplementeerd met behulp van ZuluTrade Query Language (zql). Deze taal is ontwikkeld om compatibel te zijn met de scripttalen die het meest gebruikt worden in de Forexmarkt.
Het enige wat u hoeft te doen om ZuluScripts te kunnen gebruiken, is een Beleggeraccount met de ingeschakelde optie ZuluTrade+, die u aantreft in de tab Instellingen - Koppelingsinstellingen Brokerrekening, van uw account.
Toegang tot de ZuluTrade Trading Scripts Editor
Toegang tot de ZuluTrade-beleggingsscripts: u meldt u aan bij ZuluTrade en koppelt uw account met het ZuluTrade+-platform, vervolgens navigeert u naar het ZuluTrade-beleggingsstation en klikt u op 'Beleggingsscripts'.
Er verschijnt een pop-up-venster met de omschrijving 'Beleggingsclient'.
Op de zijbalk rechtsboven van de Scripts Editor treft u 4 verschillende tabbladen aan waarmee u kunt schakelen tussen de diverse functiemodi van de Scripts Editor.
De eerste schakelt de modus in voor het creëren van Scripts; de tweede schakelt de modus in voor het creëren van Custom Indicators; de derde modus is voor het creëren van Headers en de laatste toont de ZQL Glossary, waarin u de detailinformatie aantreft voor elk commando van de ZQL-taal.
Beste
Een ZuluScript aanmaken
Voor het aanmaken van uw ZuluScript klikt u op de knop 'Script aanmaken' in de Scripts Editor.
Tijdens het aanmaken van een nieuw script, wordt het bewerkingspaneel gevuld met sjabloon-ZQL-code. Op dit paneel moet de scriptcode worden ingevoerd.
Rechtsonder de editor treft u drie knoppen aan, welke u zullen helpen met het creëren van uw ZuluScript: Bewaren, Compileren en Uitrollen.
Bewaren – de knop Bewaren, bewaart uw script op elk gewenst moment, zodat alle wijzigingen en voortgang niet verloren gaan.
Het bewaren van een script betekent echter niet dat deze wijzigingen klaar zijn voor gebruik. Iedere wijziging moet Gecompileerd en Uitgerold worden voordat het beschikbaar kan zijn voor gebruik.
Compileren – het compileren van een script controleert de code op fouten en, indien de compilatie correct is, zullen de binaire bestanden geassocieerd worden met ons script zodat het uitgevoerd kan worden.
Indien de compilatieprocedure onjuist verloopt, worden de gevonden fouten in een overzicht getoond in het paneel 'Compilatieoutput'.
Hieronder treft u een voorbeeld aan van een niet succesvolle compilatie:
Uitrol – voor de uitrol van een script, moet het eerst zijn gecompileerd. Zodra dat is gebeurd en het .zql-bestand aangemaakt is, kunt u het script Uitrollen, en is het beschikbaar voor gebruik op uw ZuluTrade Trading Station!
Metagegevens – aan de rechterzijde van het scherm, kunnen de metagegevens bewerkt worden.
Het veld 'Naam' is de naam die getoond zal worden wanneer het script in een grafiek wordt vermeld.
Het veld 'Bestandsnaam' is de bestandsnaam waarmee het script intern is opgeslagen op ZuluTrades server. Het is geen vereiste dit veld te wijzigen, maar mocht u dat toch graag willen, houd u er dan rekening mee dat het moet eindigen met '.zql'.
Het veld 'Omschrijving' is een korte omschrijving die getoond zal worden wanneer het script in een grafiek wordt vermeld. De omschrijving kan u helpen herinneren wat de precieze functionaliteit van het script is, dus het is aan te raden details van de functionaliteit in dit veld in te geven.
Overzicht van Scripts – onder het veld Metagegevens, wordt een overzicht gegeven van alle bewaarde scripts. Let op! Elk nieuw script dat u aanmaakt, wordt automatisch bewaard.
Het huidig geselecteerde script (waarvan de code wordt weergegeven op het editorpaneel) is geaccentueerd.
Een script verwijderen – wilt u een script verwijderen, dan klikt u op het "x"-icoontje naast de scriptnaam en bevestigt u de verwijdering op het betreffende dialoogvenster.
Voorbeeldscript – hier volgt een voorbeeld zql-script. U kunt het gebruiken voor testdoeleinden:
#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);
}
Dit script controleert in elk deelproces het aantal openstaande posities. Indien er geen openstaande posities zijn en er een aantal indicatorcondities van toepassing zijn, opent het script een nieuwe positie. Indien er juist vele openstaande posities zijn, zal het een positie sluiten.
OPMERKING: dit script bevat geen echte beleggingsstrategie en is uitsluitend geschikt als voorbeeld.
Indien u op een gegeven moment een nieuw script wilt creëren, klikt u eenvoudig op de knop 'Script aanmaken' en start u de procedure opnieuw.
Beste
Een Custom Indicator aanmaken
Custom indicators kunnen gecreëerd en gebruikt worden in een ander beleggingsscript en vormen een uitbreiding op de reeds beschikbare technische indicators in de taal.
Custom indicators kunnen gebruikt worden in elk ZuluScript met behulp van de iCustom() ZQL-functie nadat u uw custom indicator bewaard, gecompileerd en uitgerold hebt.
Opmerking: Op dit moment kunnen Custom Indicators niet op grafieken getoond worden.
Voor het aanmaken van uw Custom Indicator klikt u op de knop 'Indicator aanmaken' van de Scripts Editor.
Zorg ervoor dat u in de Editor werkt in het tabblad Custom Indicators:
Zodra de Custom Indicator klaar is, dient u deze te bewerken, een naam te geven, te bewaren en uit te zetten!
Het Bewerken, Naam geven, Bewaren en Uitrollen geschiedt op vergelijkbare wijze als bij de ZuluScripts
Opmerking: de naam van de indicator wordt later gebruikt via de functie iCustom() om deze te kunnen oproepen in uw ZuluScripts.
Hier volgt een voorbeeld van een Custom Indicator, welke u kunt gebruiken voor testdoeleinden:
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);
}
Beste
Een Header aanmaken
Hier kunt u herbruikbare functies definiëren die geïmporteerd en toegepast kunnen worden door elk Script of Custom Indicator.
Let op! Headers zijn geen ZQL-scripts, en vereisen geen init(), start() of deinit() functie.
Voor het aanmaken van uw Header klikt u op de knop 'Header aanmaken' van de Scripts Editor.
Zorg ervoor dat u in de Editor werkt in het tabblad Headers:
Opmerking I: De bestandsnaam moet worden gebruikt in de instructie #include<> in het script dat u nodig hebt om toegang te hebben tot de functies.
Opmerking II: Headers worden enkel bewaard. Compilatie of uitrol is niet noodzakelijk aangezien de code gecompileerd en uitgerold zal worden zodra hij door een Script of een Custom Indicator geïmporteerd wordt.
Het toepassen van de header in een nieuwe script is net zo eenvoudig als het invoegen van het headerbestand
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Beste
Verklarende Woordenlijst
In de Verklarende Woordenlijst treft u gedetailleerde informatie aan voor elk commando van de ZQL-taal.
U klikt eenvoudig op de letters bovenaan het scherm om automatisch naar de betreffende letter te scrollen. Wanneer u klikt op een letterheader van de lijst, worden de betreffende functies met die letter weergegeven/verborgen en door het klikken op een functienaam/-header worden de functiedetails weergegeven/verborgen.
Beste
Een Script gebruiken in uw beleggingsaccount
Nadat een Script op correcte wijze gecompileerd en uitgerold is, kunt u het Script Editor-scherm sluiten en het Script koppelen aan een grafiek.
Hiertoe navigeert u naar de valutapaar en de periode naar keuze. Voor dit voorbeeld is een EURUSD-grafiek als uitgangspunt genomen met een periode van H1.
Klik op de knop Beleggingsscripts (gemarkeerd in de onderstaande schermafbeelding) en selecteer het script naar keuze.
Wanneer u de muisaanwijzer op het script laat, verschijnt er een tooltip met de beschrijving van het Script.
Voor het starten van het script in de betreffende grafiek/periode, klikt u eenvoudig op de naam van het script. Er verschijnt nu een nieuw venster met daarin de scriptbeschrijving en alle initialisatievelden ten behoeve van de externe variabelen van het script.
Nadat u de parameters naar wens hebt bewerkt, klikt u op de knop "Start" waardoor het script nu gekoppeld is aan de grafiek!
Opmerking: Het script draait in deze grafiek vanaf de servers van ZuluTrade; het draait onafhankelijk van of uw pc uit staat of ingeschakeld is en of u nu ingelogd bent op uw account of niet.
Tabblad Beleggingsscripts - hier kunt u alle beleggingsscripts voor elke grafiek/periode raadplegen die op dat moment actief zijn, tezamen met de actieve versie en het tijdstip van meest recente update.
U kunt bovendien via het Grafiek-icoontje rechtstreeks naar de betreffende grafiek navigeren waarin het script draait.
Tabblad Berichten - alle berichten van uw script, prints, berichten van ZuluTrade met betrekking tot uw Script, etc. verschijnen in dit tabblad.
Beste
Een Script stopzetten en intrekken
U kunt een Script op elk gewenst moment Stopzetten en Intrekken
Een Script stopzetten - Voor het stopzetten van een script voor een grafiek/periode, gaat u naar het tabblad 'Beleggingsscripts', en klikt u op de knop 'x' rechts van het Script dat u wenst stop te zetten. Vervolgens bevestigt u het Stopzetten via het dialoogvenster.
Opmerking: Het stopzetten van een script zorgt er alleen voor dat het script niet langer draait in een grafiek/periode. Het Script blijft onderdeel van uw beleggingsaccount en Beleggingsscripts
Een Script intrekken - Voor het intrekken van een script, navigeert u naar het tabblad Beleggingsscripts en klikt u op de knop 'x' naast de scriptnaam, daarna bevestigt u het Intrekken via het dialoogvenster dat nu in beeld verschijnt.
Opmerking: Het intrekken van een script zal het script verwijderen uit het overzicht van beschikbare Scripts in uw Beleggingsaccount; deze handeling zorgt er niet voor dat het script verwijderd wordt in de Script Editor.
Beste
ZQL Standalone Compiler Gebruiksaanwijzing
Beginnen met de ZQL Standalone Compiler
ZQL Standalone Compiler is de alleenstaande modus van de ZQL Script compiler die zulutrade biedt op zijn web platform. Het zal elke ZQL compatibele script compileren (bijv. Mq4) naar een .zl- bestand.
Downloaden
ZQL Standalone Compiler wordt verspreid vanaf FXCMMarketss website.
De compilator is beschikbaar In zip of tar-bestandsformaten.
Vereisten
- Java JDK 6 (we raden aan dat u de Java JDK 6 hotspot gebruikt)
Installatie
Pak je gekozen download simpelweg uit in de map van uw keuze. U kunt de ZQL Standalone Compiler op elk besturingssysteem installeren dat de zip en tar-formaten ondersteunt. Lees de Release Notes voor extra informatie met betrekking tot de uitgave.
Een Snelle Rondleiding
Nu dat u de ZQL Standalone Compiler heeft gedownload is de volgende stap om de layout van de verspreiding te bespreken en de mapstructuur, belangrijke configuratiebestanden, logfiles etc. van de compilator te verkennen.
Mapstructuur
Map |
Beschrijving |
lib/
|
Bevat de library dependencies van de compilator. |
conf/
|
Bevat cruciale configuratiebestanden die op geen enkele manier gewijzigd moeten worden. |
run.bat
|
De run script voor Windows systemen. |
run.sh
|
De run script voor Linux/Unix systemen. |
Compilator Opties
Parameter Name
|
Parameter Short Name
|
Waarde
|
Beschrijving
|
help |
h |
- |
Stuurt het help bericht naar de console. |
class |
c |
Elke stringwaarde |
De gegenereerde class name. |
package |
p |
Elke string in de vorm van een paackage pad |
De gegenereerde package name |
output |
o |
Elke stringwaarde |
Gecompileerde output file name zonder extensie |
zqh |
z |
Elke string in de vorm van een directory-pad (relatief of absoluut) |
Voeg directory-pad toe met aangepaste zqh-bestanden |
name |
n |
De gewenste scripts name
Als u ruimte heeft, zorg er dan voor dat u het tussen " in Windows en \" in Linux zet
|
Script name om te laten zien wanneer het is geladen in FXCMMarketss systeem |
description |
d |
Dde gewenste scripts description
Als u ruimte heeft, zorg er dan voor dat u het tussen " in Windows en \" in Linux zet
|
Script description om te laten zien wanneer het is geladen in FXCMMarketss systeem |
Voorbeelden
Compile a custom expert script |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Compile a custom expert script with a custom header script (e.g. in headers directory) |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Beste