Guia de Criação ZuluScript
Atualização pela última vez em
Introdução
A ZuluTrade criou uma nova geração de scripts de negociações, que permite que Negociadores criem um coloquem seus próprios robôs e indicadores, diretamente via sua conta de Negociador ZuluTrade, sem a necessidade de nenhum software externo ou registros de terceiros!
ZuluScripts são implantados usando-se ZuluTrade Query Language (zql) que foi desenvolvida para ser compatível com a linguagens mais comumente usadas para o mercado Forex.
Tudo o que você precisa fazer para poder usar ZuluScripts é uma conta de Negociador com a ZuluTrade+ a opção ativada como exibido na Settings tab, Broker Account Link Settings, de sua conta.
Acessando o Trading Scripts Editor da ZuluTrade
Para poder acessar ZuluTrade Trading Scripts, uma vez que você tenha se inscrito com a ZuluTrade e ligado sua conta com a plataforma ZuluTrade+, você precisa navegar para ZuluTrade Trading Station e clicar em 'Trading Scripts'.
Uma nova janela suspensa vai então aparecer chamada 'Trading Client'.
No alto da barra lateral direita do Scripts Editor, você pode encontrar 4 diferentes guias que mudam o modo de funcionalidade do Scripts Editor.
A primeira define o modo de criação de Scripts, a segunda define ao modo de criação de Custom Indicators, a terceira a criação de Headers e a última traz o Glossário ZQL, onde você pode encontrar informações detalhadas para cada comando da linguagem ZQL.
Acima
Criando um ZuluScript
Para poder criar seu ZuluScript, precisa clicar no botão "Create Script" do Scripts Editor.
ao criar um novo script, o painel editor fica preenchido com um modelo de código zql – é neste painel em que o código do script é para ser inserido.
Abiaxo do editor e na lateral direita há três botões, que vão lhe ajudar a criar seu ZuluScript - Save, Complile e Deploy.
Save – o botão Save salva seu script a qualquer dada hora, de modo que quaisquer modificaçoes e progressos não sejam perdidos.
Entretanto, salvar uma modificação em um script não indica que esta modificação esteja pronta para uso. Qualquer modificação precisa ser Compilada e Colocada antes de estar disponível para uso.
Compile – Compilar um script vai conferir o código para erros de sintaxe e, se a compilação for bem sucedida, vai criar os arquivos binários associados a seu script de modo que possa ser executado.
Se o processo de compilação falhar, os erros encontrados vão ser listados no painel 'Compiler Output'.
Favor consultar abaixo um exemplo de uma compilação mal sucedida:
Deploy – Para poder posicionar um script, ele precisa primeiro ter sido compilado. Uma vez que tenha acontecido e o arquivo .zql tenha sido criando, você pode então posicionar script e tê-lo disponível para uso na ZuluTrade Trading Station!
Meta Data – Do lado direito da janela os Meta Data de seu script podem ser modificados.
O campo 'Name' é o nome que será exibido ao anexar o script em um gráfico.
O campo Filename é o nome de arquivo com o qual o script vai ser armazenado internamente no servidor ZuluTrade. Não é obrigatório modificar este campo, mas se você desejar fazer isso, tenha em mente de que precisa terminar com o sufixo '.zql'.
O campo 'Description' é uma curta descrição que vai estar visível ao anexar o script a um gráfico. A descrição pode ajudar a se lembrar que a funcionalidade exata do script, então favor elaborara quaisquer detalhes de que precise neste espaço.
Lista de Scripts – Abaixo dos campos Meta Data, uma lista de todos os scripts salvos é disponibilizada. Favor notar que cada script criado vai ser salvo automaticamente.
O script atualmente selecionado (cujo código é exibido no painel do editor) é destacada
Apagando um script – Caso precise apagar um script, basta clicar no ícone "x" ao lado do nome do script, e confirmar na janela suspensa relevante.
Example Script – Vamos dar uma olhada no exemplo do script zql, o qual você pode usar para fins de teste:
#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);
}
Este script confere em todo ciclo quanto ao número de posições abertas. Se não houver nenhuma aberta e algumas condições de indicador forem satisfeitas, o script abre uma nova posição. Se não, se houver muitas posições abertas, fecha uma.
NOTa: Não é para real estratégia de negociação e somente para fins demonstrativos.
Se a qualquer ponto você precisar de um novo script, basta clicar no botão 'Create Script' e começar este processo novamente.
Acima
Criando um Indicador Personalizado
Indicadores personalizados podem ser criados e usados em outro script de negociação estendendo os indicadores técnicos já disponíveis na linguagem.
Indicadores personalizados podem ser usado em qualquer ZuluScript usando-se a função iCustom() ZQL após ter salvo, compilado e colocado seu indicador personalizado.
Nota: Por agora, não podemos fazer indicadores Custom nos gráficos.
Para poder criar seu Custom Indicator, você precisa clicar no botão 'Create Indicator' no Scripts Editor.
Favor se certificar de que o Editor esteja virado para a guia Custom indicators:
Então você precisa Editar, Nomear, Salvar e Posicionar seu indicador personalizado ao estar protnto!
Edite, Nomeie, Salve e Posicione trabalho de modo similar para a ZuluScripts
Nota: o Nome do indicador vai ser o a ser usado mais tarde chamando a função iCustom() para acessá-lo em seu ZuluScripts.
Vamos dar uma olhada no exemplo de indicador personalizado, que você pode usar para fins de teste:
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);
}
Acima
Criando um Header
Aqui você pode definir funções reusáveis que podem ser importadas e usadas por qualquer Script ou Custom Indicator.
Favor notar que Headers não são scripts ZQL então eles não requerem uma função init(), start() ou deinit().
Para poder criar seu Header, você precisa clicar no botão 'Create Header' do Scripts Editor.
Por favor certifique-se de que Editor esteja virado para a guia Headers:
Nota I: É o nome de arquivo que deve ser usado na diretiva #include<> no script que você vai precisar para acessar as funções.
Nota II: Headers são apenas salvos. Compilação ou posicionamento não são necessários pois o código vai ser compilado e posicionado quando importado por um Script ou Custom Indicator.
Usar o header em um novo Script é tão simples quanto incluir o arquivo header como a seguir
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Acima
Glossário
Dentro do Glossário você pode encontrar informações detalhadas para cada comando da linguagem ZQL.
Basta clicar nas letras no alto para auto rolar para a listagem da letra. Também, clicando nos headers da lista de letra, você pode expandir/desmoronar as funções de cada letra e clicando no nome/header de uma função você pode expandir/desmoronar os detalhes da função.
Acima
Usando um Script em sua conta de negociador
Após ter um Script compilado com sucesso e posicionado, você pode fechar a janela Script Editor e anexar o Script a um gráfico.
Para poder fazer isso, você precisa navegar para o par de moedas e período de sua escolha. Para este exemplo, no gráfico EURUSD com um período de H1.
Clique no botão Trading Scripts (destacado na captura de tela abaixo) e selecione o script de sua escolha.
Se você deixar o mouse sobre o script, uma tela suspensa de dica vai aparecer contendo a descrição do Script.
Para poder iniciar o script no Chart/Period selecionado, basta clicar no nome do script e uma nova vai aparecer, contendo a descrição do script assim como quaisquer campos de inicialização para variáveis externas do script.
Tendo ajustado os parâmetros de acordo com suas necessidades, você então pode clicar no botão "Start" e o script é anexado no gráfico!
Nota: O script vai rodar neste gráfico a partir dos servidores ZuluTrade, não importando que seu PC esteja ligado ou que você esteja logado à sua conta ou não.
Guia Trading Scripts – Aqui você pode revisar todos os scripts de negociação atualmente ativos em cada Chart/Period, juntamente com a versão rodando e hora da última atualização.
Você pode também navegar diretamente para o Gráfico onde o Script esteja rodando via ícone Chart.
Guia Messages – Quaisquer mensagens a partir de seu Script, imprime mensagens da ZuluTrade no que diga respeito a seu Script etc., vai aparecer nesta seção.
Acima
Parar e Desposicionar um Script
Você pode Parar e Desposiconar um Script a qualquer dada hora
Parando um Script – Para poder impedir um script de rodar em um Gráfico/Período tudo o que você precisa fazer é navegar até a guia 'Trading Scripts', clicar no botão 'x' à direita do Script que você queira parar e confirmar Stoppage na janela suspensa relevante.
Nota: Parar um script, somente vai parar que ele rode em um Gráfico/Período. O Script vai permanecer na conta de seu negociador e em seus Trading Scripts
Desposicionando um Script – Para poder desposicionar script tudo o que você precisa fazer é navegar para a seção Trading Scipts, clique no botão 'x' perto do nome dele e confirme Undeployment na janela suspensa relevante.
Nota: Desposicionar um script vai somente removê-lo da lista de Scripts disponíveis na conta de seu negociador, não vai apagar o script da janela Script Editor.
Acima
Manual do Investidor do ZQL Standalone Compiler
Começar a usar o ZQL Standalone Compiler
O ZQL Standalone Compiler é o modo standalone do compilador ZQL Script que a zulutrade oferece na sua plataforma online. Irá compilar qualquer script compatível com ZQL (ex. mq4) num ficheiro .zl
Baixar
O ZQL Standalone Compiler é distribuído a partir do site da NatureForex
O compilador está disponível em formatos zip ou tar.
Requisitos
- Java JDK 6 (recomendamos que utilize o hotspot Java JDK 6)
Instalação
Basta extrair o ficheiro que escolheu para um diretório à sua escolha. Pode instalar o ZQL Standalone Compiler em qualquer sistema operativo que suporte os formatos zip ou tar. Consulte as Notas de Versão para informações adicionais relacionadas com a versão.
Visita Rápida
Agora que descarregou o ZQL Standalone Compiler, o próximo item a discutir é o layout da distribuição e explorar a estrutura do diretório do compilador, ficheiros de configuração chave, ficheiros de registo e assim por diante.
Estrutura do Diretório
Diretório |
Descrição |
lib/
|
Contém as dependências da biblioteca do compilador. |
conf/
|
Contém ficheiros de configuração cruciais que não devem ser alterados de forma alguma. |
run.bat
|
Script de execução para máquinas Windows. |
run.sh
|
Script de execução para máquinas Linux/Unix. |
Opções do Compilador
Nome do Parâmetro
|
Nome do Parâmetro Abreviado
|
Valor
|
Descrição
|
help |
h |
- |
Imprime a mensagem de ajuda para a consola. |
class |
c |
Qualquer valor de string |
Nome da classe gerada. |
package |
p |
Qualquer string na forma de caminho de pacote |
Nome do pacote gerado |
output |
o |
Qualquer valor de string |
Nome do ficheiro de saída compilado sem extensão |
zqh |
z |
Qualquer string na forma de caminho de diretório (relativo ou absoluto) |
Incluir o caminho do diretório com os ficheiros personalizados zqh |
name |
n |
Nome dos scripts pretendidos
se tiver espaços, assegure-se de que os coloca entre " em sistemas Windows e \" em sistemas Linux
|
Nome do script a ser mostrado assim que for carregado no sistema da NatureForex |
description |
d |
Descrição dos scripts pretendidos
se tiver espaços, assegure-se de que os coloca entre " em sistemas Windows e \" em sistemas Linux
|
Descrição do script a ser mostrada assim que for carregado no sistema da NatureForex |
Exemplos
Compilar um script personalizado |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Compilar um script personalizado com um script de cabeçalho personalizado (ex. no diretório de cabeçalhos) |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Acima