ZuluScripts创建指南
最后一次更新于
简介
ZuluTrade创建了新一代的交易脚本程序,此功能使策略者在通过网页平台登录后,可以直接创建并载入自动交易指示器,无需使用任何外部软件或注册第三方账户!
ZuluScripts使用ZuluTrade智能语言(zql)植入,并且与多数被普遍使用的外汇交易脚本程序兼容。
使用ZuluScripts您只需要一个策略者账户,在登录后进入设置页面,点击交易商账户链接设置选项后,启用选项中的ZuluTrade+。
进入ZuluScript编辑器
进入ZuluScripts编辑器请首先注册策略者账户,登录账户后在设置页面启用 ZuluTrade+,选择ZuluTrade交易平台后点击‘ZuluScripts’。
新弹出的窗口叫做‘交易用户端’。
此页面右侧上方显示有四个用来编辑脚本程序的模式工具条。
第一项用来创建脚本的模式,第二项用来创建脚本的自定义指标,第三项用来创建脚本的标题,最后一项提供了ZQL术语汇编。
返回顶部
创建一个ZuluScript
创建ZuluScript,您需要在脚本编辑器内点击‘创建脚本’。
在创建新脚本后,编辑器面板将被zql符号样板填充
编辑器右下侧有3个选项帮助您创建ZuluScript – 保存,编辑和载入。
保存 – 保存用来在任何时间保存您的脚本,以使修改和更新不被丢失。
但是,在脚本内保存修改及更新不代表这个更改已经可用。任何更改及更新都需要在完成编辑和载入后才可以被使用。
编辑 – 编辑脚本将检查您的编码是否存在执行目标文件引发的错误,如果没有错误编辑成功,将创建二进制脚本配置的文件以使其可被执行。
如果编辑过程失败,被编辑出的错误将会列在‘Compiler Output’面板。
下面的例子为编辑不成功的案例:
载入 – 载入脚本之前首先需要对脚本进行编辑。编辑成功后.zql文件将被创建,然后您可以载入并在ZuluTrade交易平台使用此脚本!
Meta Data – 在窗口右侧脚本的Meta Data是可以修改的。
‘名称’是在图像导入脚本后,此脚本在图像上显示的名字。
文件名是脚本在ZuluTrade服务器内被存储的文件名。此处并非一定需要更改,如果您想更改请记住文件名需添加'.zql'后缀。
使用‘描述’后,脚本在被导入的图像内将显示剪短描述。描述可以帮助提醒脚本的功能,所以请您在此处输入明确的脚本说明。
脚本列表 – Meta Data下方提供已经保存的脚本列表。一个新的脚本创建后将被自动保存。
当前被选定的脚本(其编码显示在编辑器面板)被突出显示
删除脚本 – 删除脚本只需要在脚本名称旁边点击"x"图标,并在弹出窗口内确认。
脚本举例 – 我们来看一个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);
}
这个脚本会检查不同时期的账户持仓量。如时期内无交易开仓或者一些指标的条件被满足,脚本将开一单新的交易。否则,如时期内已有很多开仓,将平掉一单交易。
注意: 这并不是真实的交易策略,只以演示为目的。
如果您稍后需要创建新的脚本,只需要点击‘创建脚本’并开始此步骤.
返回顶部
创建自定义指示器
自定义指标可以创建并使用在其他脚本以扩展语言中已经存在的技术分析指标。
自定义指标可以在任何ZuluScripts内通过 设置iCustom() ZQL ,保存编辑或载入自定义指标。
注意:目前,在图表上直接进行自定义指标无法实现。
为了创建自定义指标,您需要在脚本编辑器内点击"创建指标"按钮。
请确认编辑器选定了自定义指标栏:
然后编辑,命名保存并在准备好之后载入自定义指标!
编辑,命名,保存和载入与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()。
创建标题时,请在脚本编辑器内点击‘创建标题’按钮。
确认编辑器选定了标题面板:
注意 i:文件名需要使用在包含#载入<>指令的您所需要调用的文件脚本里。
注意 ii 标题只可保存 。在导入脚本程序或创建自定义指示器时,标题编码将被编辑载入。
在新脚本使用标题只需按照如下所示简单包含头文件
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
返回顶部
术语汇编
在术语汇编内您可以找到ZQL信息指令的详细解释。
您只需要点击字母表中的首选字母,列表将自动滚动到所选字母定义功能,点击功能名称/标题,就可以展开/收起功能说明。
返回顶部
在策略者账户使用程序脚本
脚本成功编辑并载入后,您可以关闭脚本编辑器窗口并向图表内导入脚本。
导入脚本时,您需要选择货币对类型并指定周期。如下例,指定EURUSD图像选定周期H1。
点击脚本按钮 (下方截屏内注明的指向右侧的箭头)并选定脚本。
将鼠标停滞在脚本上将显示包含脚本描述的提示。
在选定的图表/周期启用脚本只需选择脚本名称,然后弹出的窗口包含脚本描述和初始化外部变量区域。
在窗口内设置好所需数据并点击"开始"按钮后,脚本将被启用到选定的图表内!
注意:图像内启用的脚本将通过ZuluTrade服务器运行,不论是否登录账户还是电脑是否开机
ZuluScripts键 - 此处您可以查阅所有当前在各个图像/周期上使用的脚本,运行版本和上一次的更新时间。
您也可以通过点击脚本运行图像图标来直接打开图像。
消息栏 - 此处将显示在ZuluTrade平台由脚本产生的任何消息或留言。
返回顶部
停止或卸载当前程序脚本
您可以随时停止或卸载一个脚本程序
停止脚本程序 - 如需在特定的图像/周期停止一个脚本程序运行,请点击‘Zulu Scripts’键,在找到需要停止的脚本程序后,点击其右侧的‘x'按钮,并在弹出窗口内选择确认。
请注意:停止脚本程序将暂停此脚本在一个特定的图像/周期运行。 但是脚本程序还保留在策略者的交易脚本程序内
卸载脚本程序 - 如需卸载一个脚本程序,进入交易平台并点击脚本,在需要卸载的脚本傍边点击'x',然后在弹出窗口内确认。
请注意:卸载脚本程序将只在策略者可用的脚本列表内卸载此脚本程序,但是不会在脚本编辑器删除此脚本。
返回顶部
ZQL Standalone Compiler投资者指南
开始使用ZQL Standalone Compiler
ZQL Standalone Compiler是ZQL脚本编辑器的独立模式,由ZuluTrade通过其网络平台提供。它能将任意ZQL兼容脚本(例如mq4)编辑成为.zl文件。
下载
ZQL Standalone Compiler是由FXCMMarkets网站发布的。
编辑器有zip和tar两种格式的文件。
要求
- Java JDK 6 (我们推荐您使用Java JDK 6热点)
安装
只需将您选择的下载文件解压缩到您指定的目录下。您可以在任何支持zip或tar各式的操作系统上安装ZQL Standalone Compiler。请参考软件发布说明以获取更多软件相关信息。
快速导览
现在您已经下载了ZQL Standalone Compiler,下一步让我们来讨论分配布局并了解编辑器的目录结构、重要配置文件、日志文件等。
目录结构
目录 |
描述 |
lib/
|
包含编辑器的库从属性。 |
conf/
|
包含关键配置文件,不可以任何方式进行改动。 |
run.bat
|
Windows平台上的运行脚本。 |
run.sh
|
Linux/Unix平台上的运行脚本。 |
编辑器选项
参数名称
|
参数简称
|
价格
|
描述
|
help |
h |
- |
在控制端打印帮助消息 |
class |
c |
任何字符串值 |
生成的类名称。 |
package |
p |
任何包路径形式的字符串 |
生成的包名称 |
output |
o |
任何字符串值 |
编辑后输出文件的名称,不带扩展名 |
zqh |
z |
任何目录路径形式的字符串(无论是绝对路径或相对路径) |
令自定义zqh文件包含目录路径 |
name |
n |
您想要的脚本名称
如果有空格,在Windows系统中一定要放在"之间,在Linux系统中一定要放在\"之间
|
脚本在FXCMMarkets的系统中加载后所显示的脚本名称 |
description |
d |
您想要的脚本描述
如果有空格,在Windows系统中一定要放在"之间,在Linux系统中一定要放在\"之间
|
脚本在FXCMMarkets的系统中加载后所显示的脚本描述 |
范例
编辑自定义专业脚本 |
输出 |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
编辑带自定义头标脚本的自定义专业脚本(例如在头标目录中) |
输出 |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
返回顶部