Hướng dẫn tạo ZuluScript
Lần cập nhật gần đây vào ngày
Giới thiệu
ZuluTrade đã tạo ra một thế hệ tập lệnh giao dịch mới cho phép Nhà giao dịch tạo và triển khai các chỉ số và robot giao dịch của chính mình trực tiếp qua tài khoản Nhà giao dịch ZuluTrade của họ mà không cần bất kỳ phần mềm bên ngoài hoặc đăng ký với bên thứ 3 nào!
ZuluScripts được thực hiện với Ngôn ngữ ZuluTrade Query (zql), đây là ngôn ngữ được phát triển tương thích với các ngôn ngữ lập trình kịch bản được dùng phổ biến nhất trên thị trường Ngoại hối.
Tất cả những gì bạn cần làm để dùng ZuluScripts là mở tài khoản Nhà giao dịch với tùy chọn ZuluTrade+ được hiển thị như ở tab Cài đặt, Cài đặt Đường dẫn Tài khoản Nhà môi giới trong tài khoản của bạn.
Truy cập Trình biên tập Tập lệnh Giao dịch ZuluTrade
Để truy cập Tập tin Giao dịch ZuluTrade, sau khi bạn đã đăng ký với ZuluTrade và liên kết tài khoản của bạn với nền tảng ZuluTrade+, bạn cần đến Trung tâm Giao dịch ZuluTrade và bấm vào 'Tập tin Giao dịch'.
Sau đó một sửa sổ pop-up mới sẽ xuất hiện với tiêu đề 'Khách hàng giao dịch'.
Ở phía trên cùng bên phải thanh Trình biên tập Tập lệnh, bạn có thể tìm thấy 4 tab khác nhau để chuyển chế độ chức năng của Trình biên tập Tập lệnh.
Tab thứ nhất đặt chế độ tạo Tập lệnh, tab thứ hai đặt chế độ tạo Chỉ số Tùy chỉnh, thứ ba tạo Tiêu đề và tab cuối cùng là cung cấp Thuật ngữ ZQL, nơi bạn có thể tìm thấy các thông tin chi tiết cho từng lệnh của ngôn ngữ ZQL.
Về đầu
Tạo ZuluScript
Để tạo ZuluScript, bạn cần bấm vào nút 'Tạo tập lệnh' của Trình biên tập Tập lệnh.
Sau khi tạo ra tập tin mới, cửa sổ biên tập sẽ được điền với mã zql mẫu - bảng điều khiển này chính là nơi mã tập lệnh sẽ được nhập.
Dưới đây là trình biên tập và bên phải có ba nút sẽ hỗ trợ việc tạo ZuluScript của bạn - Lưu, Biên dịch và Triển khai.
Lưu - Nút Lưu sẽ lưu tập lệnh của bạn tại bất kỳ thời điểm xác định nào, vì thế sẽ không xảy ra tình trạng bị lỡ bất kỳ thay đổi và tiến trình nào.
Tuy nhiên, việc lưu thay đổi trên tập lệnh không có nghĩa là thay đổi này đã sẵn sàng để sử dụng. Bất kỳ thay đổi nào cũng cần được Biên dịch và Triển khai trước khi sẵn sàng để sử dụng.
Biên dịch - Nếu biên dịch tập lệnh thành công, thao tác này sẽ kiểm tra mã cho các lỗi cú pháp và sẽ tạo các tệp nhị phân liên kết với tập lệnh của chúng tôi để lệnh có thể được thực hiện.
Nếu biên dịch không thành công, các lỗi gặp phải sẽ được liệt kê trong bảng điều khiển 'Kết quả Biên dịch'.
Vui lòng xem bên dưới một ví dụ của việc biên dịch không thành công:
Triển khai - Để triển khai tập lệnh, trước hết tập lệnh phải được biên dịch. Sau khi đã biên dịch và đã tạo ra các file .zql, bạn có thể Triển khai tập lệnh và sẵn sàng để dùng tại Trung tâm Giao dịch ZuluTrade!
Siêu Dữ liệu - Ở bên phải cửa sổ Siêu Dữ liệu, bạn có thể thay đổi tập lệnh của mình.
Trường 'Tên' là tên sẽ được hiển thị khi đính kèm tập lệnh trên biểu đồ.
Trường 'Tên file' là tên của file mà tập lệnh sẽ được lưu trữ nội bộ trong máy chủ ZuluTrade. Việc thay đổi trường này là không bắt buộc, nhưng nếu bạn muốn thay đổi, hãy lưu ý rằng file cần kết thúc với đuôi '.zql'.
Trường 'Mô tả' là phần mô tả ngắn gọn sẽ được hiển thị khi đính kèm tập lệnh vào biểu đồ. Mô tả có thể giúp nhắc bạn về chức năng chính xác của tập lệnh, vì vậy hãy giải thích bất kỳ thông tin chi tiết nào bạn cần trong khu vực này.
Danh sách Tập lệnh - Bên dưới trường Siêu Dữ liệu là danh sách tất cả tập lệnh đã lưu được. Vui lòng lưu ý rằng mỗi tập lệnh mới được tạo sẽ tự động được lưu.
Tập lệnh đã chọn gần đây (có mã được hiển thị ở bảng biên tập) được đánh dấu
Xóa tập lệnh - Nếu cần xóa tập lệnh, bạn chỉ cần bấm vào biểu tượng "x" bên cạnh tên tập lệnh và xác nhận việc xóa trên bảng pop-up liên quan.
Tập lệnh Mẫu - Hãy xem vào một tập lệnh zql mẫu mà bạn có thể dùng cho mục đích thử nghiệm:
#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);
}
Tập lệnh này kiểm tra số lượng các vị trí mở trong mỗi chu kỳ. Nếu không có vi trí mở nào và chỉ có một số điều kiện chỉ số được đáp ứng, tập lệnh sẽ mở một vị trí mới. Ngược lại, nếu có nhiều vị trí mở, tập lệnh sẽ đóng bớt một vị trí.
LƯU Ý: Đây không phải là một chiến lược giao dịch thực và chỉ nhằm mục đích thử nghiệm.
Nếu lúc nào bạn cần tạo một tập tin mới, bạn chỉ cần bấm vào nút 'Tạo Tập lệnh' và bắt đầu lại quy trình này.
Về đầu
Tạo Chỉ số Tùy chỉnh
Chỉ số tùy chỉnh có thể được tạo và sử dụng trong tập tin giao dịch khác mở rộng các chỉ số kỹ thuật đã có sẵn trong ngôn ngữ.
Chỉ số tùy chỉnh có thể được sử dụng trong bất kỳ ZuluScript có chức năng iCustom()ZQL sau khi đã lưu, biên soạn và triển khai chỉ số tùy chỉnh của bạn.
Lưu ý: Hiện tại, chúng tôi không thể làm cho các chỉ số tùy chỉnh trên biểu đồ.
Để tạo Chỉ số Tùy chỉnh của bạn, bạn cần bấm vào nút 'Tạo Chỉ số' trong Biên tập Tập tin.
Vui lòng đảm bảo rằng Trình Biên tập đã được đổi sang tab Tùy chỉnh chỉ số:
Sau đó bạn cần Sửa, Đặt tên, Lưu và Triển khai chỉ số tùy chỉnh khi sẵn sàng!
Sửa, Đặt tên, Lưu và Triển khai công việc theo cách tương tự đối với ZuluScripts
Lưu ý: Tên của chỉ số sẽ được sử dụng sau này khi gọi chức năng iCustom () để truy cập trong ZuluScripts của bạn.
Vui lòng xem ví dụ của Chỉ số tùy chỉnh, mà bạn có thể dùng cho mục đích thử nghiệm:
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);
}
Về đầu
Tạo Tiêu đề
Tại đây bạn có thể xác định các hàm có khả năng tái sử dụng mà bất kỳ Tập tin hoặc Chỉ số Tùy chỉnh nào có thể nhập và sử dụng.
Xin lưu ý rằng Tiêu đề không phải là tập tin ZQL nên chúng không yêu cầu hàm init(), start() hay deinit().
Để tạo Tiêu đề, bạn cần bấm vào nút 'Tạo tiêu đề' trong Trình biên tập Tập tin.
Hãy chắc chắn rằng trình Trình biên tập được chuyển sang tab Tiêu đề:
Lưu ý I: Đây là tên file nên dùng trong #include<> directive ở tập tin mà bạn sẽ cần để truy cập các hàm.
Lưu ý II: Tiêu đề chỉ cần lưu. Việc biên dịch hay triển khai là không cần thiết vì mã sẽ được biên dịch và triển khai khi nhập bởi Tập tin hoặc Chỉ số Tùy chỉnh.
Việc sử dụng tiêu đề trong Tập tin mới đơn giản như việc bao gồm tệp tiêu đề như sau
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
Về đầu
Thuật ngữ
Trong bảng Chú giải bạn có thể tìm thấy thông tin chi tiết cho mỗi lệnh của ngôn ngữ ZQP.
Chỉ đơn giản bấm vào chữ cái trên cùng để tự động di chuyển đến danh sách chữ cái. Ngoài ra, bằng cách bấm vào tiêu đề chữ cái của danh sách, bạn cũng có thể mở rộng/thu nhỏ chức năng của từng chữ cái và bằng cách bấm vào tên/tiêu đề chức năng bạn có thể mở rộng/thu nhỏ chi tiết chức năng.
Về đầu
Sử dụng Tập lệnh trong tài khoản Nhà giao dịch của bạn
Sau khi biên dịch và triển khai Tập lệnh thành công, bạn có thể đóng cửa sổ Trình biên tập Tập tin và đính kèn Tập lệnh vào biểu đồ.
Để làm được điều này, bạn cần điều hướng đến cặp tiền tệ và thời gian bạn chọn. Ví dụ, trong biểu đồ EURUSD với một khoảng thời gian H1.
Bấm vào nút Tập lệnh Giao dịch (được đánh dấu ở hình bên dưới) và chọn tập lệnh do bạn chọn.
Nếu bạn để con chuột trên tập lệnh, chỉ dẫn công cụ sẽ xuất hiện chứa các mô tả của Tập lệnh.
Để bắt đầu tập lệnh trên Biểu đồ/Thời gian đã chọn, chỉ cần bấm vào tên của tập tin và một cửa sổ mới sẽ xuất hiện có chứa mô tả của tập lệnh cũng như các trường khởi tạo cho các biến bên ngoài của tập lệnh.
Sau khi điều chỉnh các thông số theo nhu cầu, sau đó bạn cần bấm vào nút "Bắt đầu" và tập lệnh sẽ được đính kèm vào biểu đồ!
Lưu ý: Tập lệnh sẽ chạy trên biểu đồ này từ máy chủ ZuluTrade, bất kể máy tính của bạn đã được bật chưa hay bạn có đăng nhập tài khoản của mình hay không.
Tab Tập lệnh Giao dịch - Tại đây bạn có thể xem lại tất cả các tập lệnh giao dịch đang hoạt động trên mỗi Biểu đồ/Thời gian cùng với phiên bản chạy thử và thời gian của phiên bản mới nhất.
Bạn cũng có thể điều hướng trực tiếp đến Biểu đồ nơi Tập lệnh đang chạy qua biểu tượng Biểu đồ.
Tab Tin nhắn - Bất kỳ tin nhắn nào từ Tập lệnh, bản in, tin nhắn từ ZuluTrade liên quan đến Tập lệnh của bạn v,v… sẽ xuất hiện trên phần này.
Về đầu
Dừng và Không triển khai Tập lệnh
Bạn có thể Dừng và Không triển khai Tập lệnh tại bất kỳ thời điểm xác định nào
Dừng Tập lệnh - Để dừng chạy tập lệnh trên Biểu đồ/Thời gian, bạn cần điều hướng đến tab 'Tập lệnh Giao dịch', bấm vào nút 'x' bên phải Tập lệnh bạn muốn Dừng và xác nhận Dừng tại cửa sổ pop-up liên quan.
Lưu ý: Việc dừng tập lệnh sẽ chỉ khiến tập lệnh dừng chạy trên Biểu đồ/Thời gian. Tập lệnh sẽ vẫn còn trên tài khoản Giao dịch và Tập lệnh Giao dịch của bạn
Không triển khai Tập lệnh - Để không triển khai tập lệnh, chúng ta cần điều hướng đến mục Tập lệnh Giao dịch, bấm vào nút 'x' gần tên của tập lệnh, rồi xác nhận Không triển khai tại cửa sổ pop-up liên quan.
Lưu ý: Việc không triển khai tập lệnh sẽ chỉ xóa tập lệnh ra khỏi danh sách Tập lệnh sẵn dùng tại tài khoản Nhà giao dịch của bạn, điều này sẽ không xóa tập lệnh khỏi cửa sổ Trình biên tập Tập lệnh.
Về đầu
Hướng dẫn sử dụng ZQL Standalone Compiler
Bắt đầu với ZQL Standalone Compiler
ZQL Standalone Compiler là phiên bản tự hoạt động của ZQL Script compiler được ZuluTrade giới thiệu trên trang web. Nó có thể biên soạn bất cứ script nào tương thích với ZQL (ví dụ mq4) thành file dạng .zl
Tải về
ZQL Standalone Compiler có nguồn gốc từ trang Moneta Markets
Compiler được tải về dưới dạng file nén zip hoặc rar
Thủ tục
- Java JDK 6 (Chúng tôi khuyên bạn nên dùng hotspot Java JDK 6)
Cài đặt
Giải nén tập tin tải về vào bất cứ thư mục nào bạn muốn. Bạn có thể cài đặt ZQL Standalone Compiler trên bất cứ hệ điều hành nào hỗ trợ file zip hoặc rar. Hãy mở mục Ghi chú xuất file khi có nhu cầu xem thêm thông tin về việc xuất file
Khám phá bao quát
Bạn vừa cài đặt ZQL Standalone Compiler thành công, bước kế tiếp chính là quyết định về giao diện hiển thị cách phân loại, và khám phá kết cấu thư mục của Compiler, các file cấu hình mấu chốt, log files, cùng nhiều chức năng khác
Kết cấu thư mục
Thư mục |
Mô tả |
lib/
|
Chứa những file phụ thuộc của Compliler |
conf/
|
Chứa những tập tin cấu hình quan trọng không thể thay đổi dù trong bất kỳ trường hợp nào |
run.bat
|
script chạy với thiết bị Windows |
run.sh
|
Script chạy với thiết bị Linux/Unix |
Mục tùy chọn của Compiler
Tên thông số
|
Tên ngắn của thông số
|
Giá trị
|
Mô tả
|
help |
h |
- |
In tin nhắn trợ giúp gửi đến trung tâm điều khiển |
class |
c |
Bất cứ mã nào |
Tên nhóm đã xuất |
package |
p |
Bất cứ mã nào dạng đường dẫn gói |
Tên gói đã xuất |
output |
o |
Bất cứ mã nào |
Tên file đã xuất sau khi soạn (chưa được gia hạn) |
zqh |
z |
Bất cứ mã nào dạng đường dẫn (tương đối hoặc tuyệt đối) |
Bao gồm đường dẫn cùng các tập tin zqh tiêu chuẩn |
name |
n |
Tên script được yêu cầu
Nếu có khoảng trắng, xin đặt chúng giữa " cho Windows và \" cho Linux.
|
Tên script sẽ hiển thị khi nó được tải trong hệ thống Moneta Markets |
description |
d |
Mô tả script được yêu cầu
Nếu có khoảng trắng, xin đặt chúng giữa " cho Windows và \" cho Linux.
|
Mô tả về script sẽ hiển thị khi nó được tải trong hệ thống Moneta Markets |
Ví dụ
Soạn một script dạng tiêu chuẩn |
Đầu ra |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Soạn một script dạng tiêu chuẩn cùng script tiêu đề tiêu chuẩn (ví dụ trong các thư mục tiêu đề) |
Đầu ra |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
Về đầu