Οδηγός Δημιουργίας ZuluScript
Τελευταία ενημέρωση στις
Εισαγωγή
Η ZuluTrade έχει δημιουργήσει μια νέα γενιά αρχείων εντολών συναλλαγών, που επιτρέπει στους Traders να δημιουργούν και να εκτελούν τα προσωπικά τους ρομπότ και δείκτες συναλλαγών, απευθείας μέσω του ZuluTrade Trader λογαριασμού τους, χωρίς να χρειάζεται οποιοδήποτε πρόσθετο λογισμικό! Για τη συγγραφή των
ZuluScripts χρησιμοποιείται η ZuluTrade Query Language (zql), η οποία έχει αναπτυχθεί κατά τέτοιο τρόπο ώστε να είναι συμβατή με τις πιο διαδεδομένες γλώσσες δημιουργίας αρχείων εντολών στο Forex.
Ενεργοποίησης τη ZuluTrade+ από την καρτέλα "Ρυθμίσεις" του Trader λογαριασμού σου και δημιούργησε τα προσωπικά σου ZuluScript!
Πρόσβαση στον Επεξεργαστή Εντολών Συναλλαγών ZuluTrade
Για να αποκτήσεις πρόσβαση στα ZuluTrade Trading Scripts, αφού έχεις εγγραφεί με τη ZuluTrade και συνδέσει το λογαριασμό σου με την πλατφόρμα ZuluTrade+ , θα πρέπει να πλοηγηθείς στο Σταθμό Συναλλαγών ZuluTrade και να κάνεις κλικ στο "Σενάρια Συναλλαγών".
Τότε θα εμφανιστεί ένα νέο pop -up παράθυρο με τίτλο "Συναλλασόμενος πελάτης".
Στην πάνω δεξιά sidebar του Συντάκτη Εντολών (Scripts Editor) μπορείς να βρεις 4 διαφορετικές καρτέλες που αλλάζουν τη λειτουργικότητα του Συντάκτη Εντολών (Scripts Editor).
Η πρώτη θέτει τη λειτουργία στη δημιουργία των Εντολών, η δεύτερη θέτει τη λειτουργία στη δημιουργία Προσαρμοσμένων Δεικτών, η τρίτο στη δημιουργία Κεφαλίδων και η τελευταία εμφανίζει το ZQL Γλωσσάριο, όπου μπορείς να βρεις αναλυτικές πληροφορίες για κάθε εντολή της γλώσσας ZQL.
Αρχή σελίδας
Δημιουργία ZuluScript
Για να δημιουργήσεις τα δικά σου ZuluScript, θα πρέπει να κάνεις κλικ στο κουμπί «Δημιουργία Εντολής» του Συντάκτη Εντολών (Scripts Editor).
Μετά τη δημιουργία της νέας εντολής, το παράθυρο του συντάκτη συμπληρώνεται με ένα πρότυπο κώδικα zql - σε αυτό το πάνελ πρέπει αν εισαχθεί ο κωδικός της εντολής
Κάτω από τον συντάκτη και στη δεξιά πλευρά υπάρχουν τρία κουμπιά, τα οποία βοηθούν στη δημιουργία του ZuluScript σου- Αποθήκευση, Σύνταξη και Εγκατάσταση
Αποθήκευση - το πλήκτρο Αποθήκευση αποθηκεύει την εντολή σου οποιαδήποτε δεδομένη στιγμή, έτσι ώστε οποιαδήποτε αλλαγή και πρόοδος δεν έχει χαθεί.
Ωστόσο, αποθηκεύοντας μια αλλαγή σε μια εντολή δε σημαίνει ότι η αλλαγή αυτή είναι έτοιμη για χρήση. Κάθε αλλαγή πρέπει να Συνταχθεί και Εγκατασταθεί προτού διατεθεί προς χρήση.
Σύνταξη - Συντάσσοντας μια εντολή ελέγχεται ο κώδικας για συντακτικά λάθη και, αν η σύνταξη είναι επιτυχής, θα δημιουργηθούν τα αρχεία που σχετίζονται με την εντολή σου ώστε να μπορεί να εκτελεστεί.
Εάν η διαδικασία σύνταξης αποτύχει, τα σφάλματα που προέκυψαν θα πρέπει να καταγραφούν στον πίνακα «Αποτέλεσμα Σύνταξης»
Βρες παρακάτω ένα παράδειγμα αποτυχημένης σύνταξης:
Εγκατάσταση - για να εγκαταστήσεις μια εντολή, θα πρέπει να έχει πρώτα συνταχθεί. Μόλις ολοκληρωθεί αυτή διαδικασία και έχει δημιουργηθεί το zql αρχείο, τότε μπορείς να αναπτύξεις την εντολή ώστε να είναι διαθέσιμη προς χρήση στον ZuluTrade Σταθμό Συναλλαγών σου!
Meta Data - Στη δεξιά πλευρά του παραθύρου μπορούν να τροποποιηθούν τα Meta Data της εντολής σου.
Στο πεδίο «Όνομα» βρίσκεται το όνομα που θα εμφανίζεται όταν εισάγεις την εντολή σε ένα γράφημα.
Στο πεδίο του «Αρχείο» βρίσκεται το όνομα του αρχείου με το οποίο αποθηκεύεται εσωτερικά η εντολή στον εξυπηρετητή (server) της ZuluTrade. Δεν είναι υποχρεωτικό να αλλάξεις αυτό το πεδίο, αλλά εάν επιθυμείς να το αλλάξεις, έχε κατά νου ότι πρέπει να τελειώνει με την κατάληξη «.zql».
Στο πεδίο «Περιγραφή» βρίσκεται μια σύντομη περιγραφή που θα εμφανίζεται κατά την εισαγωγή της εντολής σε ένα γράφημα. Η περιγραφή μπορεί να βοηθήσει υπενθυμίζοντάς σου την ακριβή λειτουργία της εντολής, γι’ αυτό σε παρακαλούμε να καταχωρήσεις όλες τις λεπτομέρειες που χρειάζεσαι σε αυτό το πεδίο.
Κατάλογος Εντολών - Κάτω από τα πεδία Meta Data, βρίσκεται μια λίστα με όλες τις αποθηκευμένες εντολές. Να θυμάσαι ότι κάθε νέα εντολή που δημιουργείται θα αποθηκεύεται αυτόματα
Η τρέχουσα επιλεγμένη εντολή (της οποίας ο κώδικας εμφανίζεται στο παράθυρο του εκδότη) εμφανίζεται highlighted.
Διαγραφή εντολής - Σε περίπτωση που πρέπει να διαγράψεις μια εντολή, πρέπει απλά να κάνεις κλικ στο εικονίδιο «x» δίπλα στο όνομα της εντολής και να επιβεβαιώσεις τη διαγραφή στο σχετικό pop-up.
Παράδειγμα Εντολής - Ας δούμε ένα παράδειγμα εντολής 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);
}
Η εντολή αυτή ελέγχει σε κάθε κύκλο τον αριθμό των ανοικτών θέσεων. Εάν δεν υπάρχουν ανοικτές θέσεις και πληρούνται ορισμένες προϋποθέσεις του δείκτη, η εντολή ανοίγει μια νέα θέση. Διαφορετικά, εάν υπάρχουν πολλές ανοικτές θέσεις, κλείνει μία.
ΣΗΜΕΙΩΣΗ: Δεν είναι μια πραγματική στρατηγική συναλλαγών και έχει δημιουργηθεί μόνο προς επίδειξη.
Αν σε οποιοδήποτε σημείο πρέπει να δημιουργήσεις μια νέα εντολή, μπορείς απλά κάνοντας κλικ στο κουμπί «Δημιουργία Εντολής» και θα εκκινήσεις εκ νέου αυτή τη διαδικασία.
Αρχή σελίδας
Δημιουργία Προσαρμοσμένου Δείκτη
Προσαρμοσμένοι δείκτες μπορούν να δημιουργηθούν και να χρησιμοποιηθούν έθιμο σε άλλη εντολή συναλλαγών επεκτείνοντας τους τεχνικούς δείκτες που είναι ήδη διαθέσιμοι στη γλώσσα.
Προσαρμοσμένοι δείκτες μπορούν να χρησιμοποιηθούν σε οποιοδήποτε ZuluScript χρησιμοποιώντας τη λειτουργία iCustom () ZQL αφού έχεις αποθηκεύσει, συντάξει και αναπτύξει τον προσαρμοσμένο σου δείκτη.
Σημείωση: Προς το παρόν, δεν υπάρχει η δυνατότητα απόδοσης των προσαρμοσμένων δεικτών στα διαγράμματα
Για να δημιουργήσεις έναν προσαρμοσμένο δείκτη, θα πρέπει να κάνεις κλικ στο κουμπί «Δημιουργία Δείκτη» του Συντάκτη Εντολών (Scripts Editor).
Παρακαλούμε βεβαιώσου ότι ο συντάκτης έχει μεταβεί στην καρτέλα Προσαρμοσμένοι Δείκτες:
Στη συνέχεια θα πρέπει να Επεξεργαστείς, Ονομάσεις, Αποθηκεύσεις και τέλος να Εγκαταστήσεις τον προσαρμοσμένο δείκτη σου όταν είναι έτοιμος!
Οι λειτουργίες Επεξεργασία, Ονομασία, Αποθήκευση και Ανάπτυξη δουλεύουν παρόμοια με τα 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().
Για να δημιουργήσεις την κεφαλίδα σου, πρέπει να κάνεις κλικ στο κουμπί «Δημιουργία Κεφαλίδας» του Συντάκτη Εντολών (Scripts Editor).
Παρακαλούμε βεβαιώσου ότι ο συντάκτης έχει μεταβεί στην καρτέλα Κεφαλίδες:
Σημείωση Ι: Είναι το όνομα του αρχείου που θα χρησιμοποιηθεί στην οδηγία #include<> της εντολής που θα χρειαστείς για να αποκτήσεις πρόσβαση στις λειτουργίες.
Σημείωση ΙΙ: Οι κεφαλίδες απλά αποθηκεύονται. Δεν είναι απαραίτητη η σύνταξη ή η εγκατάσταση καθώς ο κώδικας θα συνταχθεί και αναπτυχθεί όταν εισαχθεί από μια Εντολή ή Προσαρμοσμένο Δείκτη.
Η χρήση της κεφαλίδας σε μια νέα εντολή είναι ιδιαίτερα απλή, όσο το να συμπεριλάβετε το αρχείο κεφαλίδας ως ακολούθως
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Αρχή σελίδας
Γλωσσάρι
Μέσα στο Γλωσσάρι μπορείς να βρεις αναλυτικές πληροφορίες για κάθε εντολή της γλώσσας ZQL.
Απλά κάνε κλικ στα γράμματα στην κορυφή για να κατέβεις αυτόματα στη θέση του γράμματος στη σχετική λίστα. Επίσης, κάνοντας στα γράμματα κεφαλίδες της λίστας, μπορείς να επεκτείνεις/συμπτύξεις τις λειτουργίες του κάθε γράμματος και κάνοντας κλικ στο όνομα/κεφαλίδα της λειτουργίας, μπορείς να επεκτείνεις/συμπτύξεις τις λεπτομέρειες της λειτουργίας.
Αρχή σελίδας
Χρήση εντολής στον Trader λογαριασμό σου
Αφού συντάξεις και εγκαταστήσεις επιτυχώς ένα script, μπορείς να κλείσεις το παράθυρο του Επεξεργαστή Εντολών (Script Editor) και να το εισάγεις σε ένα γράφημα.
Για να το κάνεις αυτό, θα πρέπει να μεταβείς στο ζεύγος νομισμάτων και την περίοδο της επιλογής σου. Για αυτό το παράδειγμα, στο γράφημα EURUSD με περίοδο Η1.
Κάνε κλικ στο κουμπί Εντολές Συναλλαγής (highlighted στην παρακάτω εικόνα) και επίλεξε την εντολή (script) της επιλογής σου.
Αν περάσεις τον κέρσορα πάνω από την εντολή, θα εμφανιστεί ένα tooltip το οποίο περιέχει την περιγραφή της εντολής.
Για να εκκινήσεις την εντολή στο επιλεγμένο Διάγραμμα/Περίοδος, απλά κάνε κλικ στο όνομα τηε εντολής και θα εμφανιστεί ένα νέο παράθυρο, το οποίο περιέχει την περιγραφή της εντολής, καθώς και οποιαδήποτε πεδία αρχικοποίησης για τις εξωτερικές μεταβλητές της εντολής.
Έχοντας ρυθμίσει τις παραμέτρους ανάλογα με τις ανάγκες σου, θα πρέπει στη συνέχεια να κάνεις κλικ στο κουμπί «Έναρξη» και η εντολή θα εισαχθεί στο γράφημα!
Σημείωση: Η εντολή θα εκτελεστεί σε αυτό το γράφημα από τους διακομιστές της ZuluTrade, ανεξάρτητα από το εάν ο υπολογιστής σου είναι ενεργοποιημένος ή εάν είσαι ή όχι συνδεδεμένος στο λογαριασμό σου.
Καρτέλα Εντολές Συναλλαγής (Trading Scripts) - Εδώ μπορείς να επανεξετάσεις όλες τις ενεργές εντολές συναλλαγών για κάθε Γράφημα/Περίοδο, μαζί με την έκδοση υπό εκτέλεση και την ώρα της τελευταίας ενημέρωσής σου.
Μπορείς επίσης να πλοηγηθείς απευθείας στο Γράφημα όπου εκτελείται η εντολή μέσω του εικονιδίου Γράφημα.
Καρτέλα Μηνυμάτων - Όλα τα μηνύματα από την Εντολή σου καθώς και οι εκτυπώσεις, τα μηνύματα από τη ZuluTrade σχετικά με την Εντολή σου κλπ θα εμφανιστούν σε αυτή την ενότητα.
Αρχή σελίδας
Διακοπή και Αποδέσμευση μιας Εντολής
Μπορείς να σταματήσεις και να αποδεσμεύσεις μια εντολή σε κάθε δεδομένη στιγμή
Διακοπή Εντολής - Για να τερματίσεις την εκτέλεση μιας εντολής σε ένα Γράφημα/Περίοδο χρειάζεται απλώς να μεταβείς στην καρτέλα των «Εντολών Συναλλαγής», να κάνεις κλικ στο κουμπί «x» στη δεξιά της Εντολής η οποία θέλεις να τερματιστεί και να επιβεβαιώσεις τη διακοπή στο σχετικό pop -up.
Σημείωση: Διακόπτοντας μια εντολή, θα σταματήσεις μόνο την εκτέλεση σε ένα Γράφημα/Περίοδο. Η Εντολή θα παραμείνει στο Trader λογαριασμό σου και τις Εντολές Συναλλαγών σου
Αποδεσμεύοντας μια Εντολή - Για να αποδεσμεύσεις μια εντολή χρειάζεται απλώς να μεταβείς στο τμήμα Εντολών Συναλλαγών, να κάνεις κλικ στο κουμπί «x» κοντά στην ονομασία της και να επιβεβαιώσεις την αποδέσμευση στο σχετικό pop-up.
Σημείωση: Αποδεσμεύοντας την εντολή θα την καταργήσεις μόνο από τον κατάλογο των διαθέσιμων Εντολών στον Trader λογαριασμό σου, η εντολή δε θα διαγραφεί από το παράθυρο του Επεξεργαστή Εντολών.
Αρχή σελίδας
Οδηγός Χρήσης του ZQL Standalone Compiler
Ξεκίνησε με το ZQL Standalone Compiler
Ο ZQL Standalone Compiler αποτελεί την αυτοδύναμη μορφή Μεταγλωττιστή των ZQL Scripts και σου προσφέρεται από τη ZuluTrade στη διαδικτυακή της πλατφόρμα. Θα μεταγλωττίσει οποιοδήποτε συμβατό script ZQL (π.χ. mq4) σε αρχείο .zl.
Λήψη
Ο ZQL Standalone Compiler διανέμεται από την ιστοσελίδα ZuluTrade
Ο μεταγλωττιστής είναι διαθέσιμος σε μορφές αρχείου zip ή tar.
Απαιτήσεις
- Java JDK 6 (συνιστούμε τη χρήση Java JDK 6 hotspot)
Εγκατάσταση
Απλώς εξάγεις στο φάκελο της επιλογής σου το αρχείο που έχεις επιλέξει να κατεβάσεις. Μπορείς να εγκαταστήσεις το ZQL Standalone Compiler σε οποιοδήποτε λειτουργικό σύστημα που να υποστηρίζει τις μορφές αρχείων zip και tar. Θα θέλαμε να σε παραπέμψουμε στα τελευταία Release Notes για πρόσθετες πληροφορίες αναφορικά με το release.
Γρήγορος Οδηγός
Αφού κατεβάσεις το ZQL Standalone Compiler, το επόμενο βήμα είναι να ορίσεις το σχεδιασμό της κατανομής και να εξερευνήσετε τη δομή του φακέλου του μεταγλωττιστή, τα βασικά αρχεία διάρθρωσης, το αρχείο καταγραφής κ.τ.λ.
Δομή Φακέλου Αρχείων
Φάκελος Αρχείων |
Περιγραφή |
lib/
|
Περιλαμβάνει τα αλληλοεξαρτώμενα αρχεία της βιβλιοθήκης του μεταγλωττιστή. |
conf/
|
Περιλαμβάνει σημαντικά αρχεία διάρθρωσης τα οποία δεν πρέπει να μεταβάλλεις με κανένα τρόπο. |
run.bat
|
Το αρχείο προς εκτέλεση για συστήματα Windows. |
run.sh
|
Το αρχείο προς εκτέλεση για συστήματα Linux/Unix. |
Επιλογές Μεταγλωττιστή
Όνομα Παραμέτρου
|
Περιγραφικό Όνομα Παραμέτρου
|
Τιμη
|
Περιγραφή
|
help |
h |
- |
Τυπώνει τα μηνύματα βοήθειας στην κονσόλα. |
class |
c |
Οποιαδήποτε τιμή λεκτικού |
Το παραγόμενο όνομα κλάσσης. |
package |
p |
Οποιοδήποτε λεκτικό περιγράφει τη διαδρομή ενός πακέτου |
Το παραγόμενο όνομα πακέτου |
output |
o |
Οποιαδήποτε τιμή λεκτικού |
Το όνομα του παραγόμενου μεταγλωττισμένου αρχείου χωρίς κατάληξη |
zqh |
z |
Οποιοδήποτε λεκτικό περιγράφει τη (σχετική ή απόλυτη) διαδρομή ενός φακέλου |
Να συμπεριλάβεις τη διαδρομή του φακέλου αρχείων στα προσαρμοσμένα αρχεία zql |
name |
n |
Το επιθυμητό όνομα του script
αν υπάρχουν κενά, παρακαλούμε να βεβαιωθείς ότι βρίσκονται ανάμεσα σε " σε λειτουργικό Windows και \" σε λειτουργικό Linux
|
Το όνομα του script, όπως θα εμφανιστεί όταν φορτωθεί στο σύστημα ZuluTrade |
description |
d |
Η επιθυμητή περιγραφή του script
αν υπάρχουν κενά, παρακαλούμε να βεβαιωθείς ότι βρίσκονται ανάμεσα σε " σε λειτουργικό Windows και \" σε λειτουργικό Linux
|
Η περιγραφή του script, όπως θα εμφανιστεί όταν φορτωθεί στο σύστημα ZuluTrade |
Παραδείγματα
Μεταγλώττιση ενός προσαρμοσμένου expert script |
Αποτέλεσμα |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Μεταγλώττιση ενός προσαρμοσμένου expert script με ένα προσαρμοσμένο header script (π.χ. στο φάκελο headers) |
Αποτέλεσμα |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Αρχή σελίδας