Guida alla creazione di ZuluScript

Aggiornato il

Introduzione

ZuluTrade ha creato una nuova generazione di script di trading, che permette ai trader di creare e impiegare i propri robot e indicatori di compravendita, direttamente dal proprio conto trader ZuluTrade, senza bisogno di altri software esterni o di altre iscrizioni!
Gli ZuluScript sono implementati usando il ZuluTrade Query Language (zql) che è stato sviluppato in modo da essere compatibile con i linguaggi di scripting del mercato Forex.

Per usare gli ZuluScritp avete bisogno semplicemente di un conto Trader con l'opzione ZuluTrade+ attivata come mostrato nella tab Impostazioni, Impostazioni Link Conto Broker, del vostro conto.

Accedere a Trading Scripts Editor di ZuluTrade

Per accedere ai Trading Script di ZuluTrade, una volta fatto l'accesso a ZuluTrade e collegato il vostro conto alla piattaforma ZuluTrade+, dovete andare alla Trading Station ZuluTrade e cliccare su "Trading Scripts".
Apparirà quindi una nuova finestra pop-up intitolata "Trading Client".
Sulla barra laterale in alto a destra dello Scripts Editor troverete 4 diverse tab che cambiano la modalità di funzionamento dello Scripts Editor.
La prima imposta la modalità di creazione degli Script, la seconda determina la modalità di creazione di Indicatori personalizzati, la terza serve creare Header e l'ultima fa apparire il Glossario ZQL, nel quale troverete informazioni dettagliate su ogni comando del linguaggio ZQL.

Alto

Creare uno ZuluScript

Per creare il vostro ZuluScript, dovete cliccare sul tasto "Crea Script" dello Scripts Editor.

Quando si crea il nuovo script, la finestra dell’editor si riempie di un template di codice zql – è in questa finestra che bisogna inserire il codice script.


Sotto l’editor a destra ci sono tre tasti, che vi aiuteranno a creare il vostro ZuluScript - Salvare, Compilare ed Impiegare.


Salvare – il tasto Salvare salva il vostro script in ogni momento, in modo che le modifiche e i progressi non vadano perduti.

Però salvare una modifica su uno script non indica che questa modifica sia pronta da usare. Qualsiasi modifica deve essere Compilata e Implementata prima di essere disponibile all’uso.

Compilare – L’azione di compilazione di uno script controllerà se ci sono errori sintattici nel codice e, se la compilazione riesce, creerà i file binari associati al nostro script in modo che possano essere eseguiti.
Se il processo di compilazione fallisce, gli errori incontrati saranno elencati nel quadro "Risultato della compilazione".

Qui di seguito potete vedere un esempio di compilazione riuscita:
Implementare – Per implementare uno script, questo deve essere prima compilato. Una volta fatto questo e una volta creato il file .zql, potete implementare lo script e averlo disponibile da usare presso la vostra Trading Station di ZuluTrade!


Meta Data – Sulla parte destra della finestra è possibile modificare i Meta Data del vostro script.
Il campo "nome" è il nome del file con il quale lo script sarà salvato internamente sul server di ZuluTrade. Non è obbligatorio cambiare questo campo, ma se volete farlo, tenete a mente che deve finire con il suffisso ".zql".
Il campo "descrizione" è una breve descrizione che sarà visibile quando si attacca lo script a un grafico. La descrizione può aiutare a ricordarvi l’esatta funzionalità dello script, quindi inserite tutti i dettagli di cui avete bisognio in questo spazio.

Lista di Script – Sotto il campo Meta Data, è fornita una lista di tutti gli script salvati. Ogni nuovo script creato sarà salvato automaticamente.
Lo script attualmente selezionato (il cui codice è mostrato presso la finestra dell’editor) è evidenziato
Cancellare uno script – Se dovete cancellare uno script, non dovete fare altro che cliccare sull’icona "x" che si trova accanto al nome dello script e confermare la cancellazione nel pop-up che appare.
Esempio di Script – Diamo un’occhiata a un esempio di script zql, che potete usare per fare una prova:

#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);
}
Lo script controlla in ogni ciclo il numero di posizioni aperte. Se non ci sono posizioni aperte e se si soddisfano alcune condizioni dell’indicatore, lo script apre una nuova posizione. Altrimenti, se ci sono tante posizioni aperte, ne chiude una.
NOTA: Non è una vera strategia di trading ed è solo a fini dimostrativi.

Se in qualunque momento dovete creare un nuovo script, cliccate semplicemente su "Crea script" e ricominciate il procedimento.

Alto

Creare un indicatore personalizzato

Gli indicatori personalizzati si possono creare e usare in un altro script di trading che espande gli indicatori tecnici già disponibili in quel linguaggio.

Gli indicatori personalizzati si possono usare in qualsiasi ZuluScript usando la funzione iCustom() ZQL dopo aver salvato, compilato e implementato il proprio indicatore personalizzato.

Nota: Per il momento, non possiamo rappresentare gli indicatori personalizzati sui grafici.


Per creare il vostro indicatore personalizzato, dovete cliccare su "Crea indicatore" dello Scripts Editor.

Assicuratevi che l’Editor sia impostato sulla tab indicatori personalizzati:

A questo punto dovete modificare, nominare, salvare e implementare il vostro indicatore personalizzato quando siete pronti!

Le funzioni modifica, nomina, salva e implementa funzionano in maniera simile a ZuluScript
Nota: il nome dell’indicatore sarà quello da usare dopo per la funzione iCustom() per farla accedere ai vostri ZuluScript.


Diamo un’occhiata a un esempio di indicatore personalizzato, che potete usare per fare una prova:

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

Alto

Creare un Header

Qui potete definire funzioni riutilizzabili che si possono importare e possono essere usate da qualunque Script o indicatore personalizzato.

Gli Header non sono script ZQL quindi non necessitano di una funzione init(), start() or deinit().


Per creare il vostro Header, dovete cliccare su "Crea Header" nello Scripts Editor.

Assicuratevi che l’Editor sia impostato sulla tab Header:
Nota I: È il nome di file che deve essere usato nella #include<> directive sullo script di cui avrete bisogno per accedere alle funzioni.

Nota II: Gli Header sono solo salvati. La compilazione e impiego non sono necessari perché il codice sarà compilato e sviluppato quando è importato da uno Script o da un indicatore personalizzato.



Usare l’header in un nuovo Script è semplice come includere il fine dell’header come segue

#include "my_common_functions.zqh"

int init() {
}

int start() {
printMyBalance();
}

Alto

Glossario

Nel Glossario troverete informazioni dettagliate per ogni comando del linguaggio ZQL.

Cliccate sulle lettere in alto per scorrere fino all’elenco delle lettere. Inoltre cliccando sul’header della lettera nella lista, potete espandere/restringere le funzioni di ogni lettera e cliccando su un nome/header di funzione potete espandere/restringere i dettagli della funzione.

Alto

Usare uno script sul vostro conto Trader

Dopo aver compilato e implementato correttamente uno Script, potete chiudere la finestra dello Script Editor e allegare lo Script a un grafico.

Per fare questo, dovete andare alla coppia di valute e periodo che desiderate. Per questo esempio, sul grafico EURUSD con un periodo di H1.

Cliccate sul tasto Trading Scripts (evidenziato nell’immagine qui sotto) e selezionate lo script che desiderate.

Se lasciate il mouse su uno script, apparirà un tooltip contenente la descrizione dello Script.


Per attivare lo script sul Grafico/Periodo selezionato, cliccate sul nome dello script e apparirà una nuova finestra, contenente la descrizione dello script e qualsiasi campo di inizializzazione per le variabili esterne dello script.


Dopo aver regolato i parametri a seconda delle vostre esigenze, dovete poi cliccare sul tasto "Avvia" e lo script verrà allegato al grafico!

Nota: Lo script girerà su questo grafico dai server di ZuluTrade, a prescindere dal fatto che il vostro PC sia accesso o che abbiate effettuato il login sul vostro conto o meno.

tab Trading Scripts – Qui potete rivedere tutti gli script di trading attualmente attivi su ogni Grafico/Periodo, la versione attiva e il momento dell'ultimo aggiornamento.

Potete anche andare direttamente al Grafico nel quale lo script sta girando attraverso l’icona del Grafico.


tab Messaggi – Qualsiasi messaggio del vostro Script, stampe, messaggi di ZuluTrade riguardanti il vostro Script ecc. appariranno su questa sessione.

Alto

Fermare e revocare l’impiego di uno script

Potete fermare e revocare l’impiego di uno script in ogni momento


Fermare uno Script – Per fermare uno script su un Grafico/Periodo basta andare alla tab "Trading Scripts", cliccare sul tasto "x" a destra dello script che volete fermare e confermare nel pop up che apparirà.

Nota: Quando si ferma uno script questo smetterà solo di girare in un Grafico/Periodo. Lo script rimarrà sul vostro conto Trader e nei vostri Trading Scripts


Revocare l’impiego di uno Script – Per revocare l’impiego di uno script basta andare alla sezione Trading Scripts, cliccare sul tasto "x" vicino al nome e confermare nel pop-up che apparirà.

Nota: La revoca dell’impiego rimuoverà solo lo script dalla lista di script disponibili presso il vostro conto Trader, non lo cancellerà dalla finestra Script Editor.

Alto

Guida all'utilizzo di ZQL Standalone Compiler

Primi passi con ZQL Standalone Compiler

ZQL Standalone Compiler è la modalità stand-alone di ZQL Script Compiler che zulutrade offre sulla sua piattaforma. Il programma compilerà qualsiasi script compatibile ZQL (ad esempio mq4) in un file con estensione .zl.

Scarica

ZQL Standalone Compiler è distribuito sul sito FXCMMarkets

Il compilatore è disponibile in formato zip o 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

Requisiti

  • Java JDK 6 (Raccomandiamo di utilizzare l'hotspot Java JDK 6)

Installazione

Semplicemente estrai il download selezionato nella directory preferita. Puoi installare ZQL Standalone Compiler su qualsiasi sistema operativo che supporti i formati zip o tar. Consulta le Note di Rilascio per ulteriori informazioni riguardo la versione utilizzata.

Una breve Panoramica

Ora che hai scaricato ZQL Standalone Compiler, il passo successivo è decidere il layout della distribuzione ed esplorare la struttura del compilatore, i file con la chiave di configurazione, i file di log e così via.

Struttura della Directory
Directory Descrizione
lib/
Contiene le dipendenze delle librerie del compilatore.
conf/
Contiene file fondamentali per la configurazione che non devono essere modificati in alcun modo.
run.bat
L'esecuzione dello script per macchine Windows.
run.sh
L'esecuzione dello script per macchine Linux/Unix.
Opzioni del Compilatore
Nome del Parametro
Breve Nome del Parametro
Valore
Descrizione
help h - Stampa il messaggio di aiuto nella console.
class c Qualsiasi valore della stringa Il nome della classe generata.
package p Qualsiasi stringa sottoforma di percorso del pacchetto Il nome del pacchetto generato
output o Qualsiasi valore della stringa Il nome del file di output compilato senza estensione
zqh z Qualsiasi stringa sottoforma di percorso della directory (relativo o assoluto) Includi il percorso della directory con i file zqh predefiniti
name n

Il nome degli script richiesti

se sono presenti degli spazi assicurati di inserirlo tra " in Windows e \" in Linux

Il nome dello script da mostrare una volta che lo script è caricato nel sistema di FXCMMarkets
description d

La descrizione degli script richiesti

se sono presenti degli spazi assicurati di inserirlo tra " in Windows e \" in Linux

La descrizione dello script da mostrare una volta che lo script è caricato nel sistema di FXCMMarkets
Esempi
Compila uno script complesso predefinito Output
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
my_expert.zl
Compila uno script complesso predefinito con uno script per inserire un'intestazione predefinita (ad esempio nelle intestazioni della directory) Output
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
my_expert.zl
Alto