คำแนะนำการสร้าง ZuluScript
ปรับเปลี่ยนคครั้งที่แล้วเมื่อ
คำนำ
ZuluTrade ได้สร้างสคริปต์ในการซื้อขายรุ่นใหม่ซึ่งจะช่วยให้ผู้ซื้อขายสามารถสร้างและใช้โรบอทและตัวบ่งชี้การซื้อขายของตน โดยตรงผ่านผู้ซื้อขาย ZuluTrade ของตน โดยไม่ต้องใช้ซอฟต์แวร์ภายนอกหรือการลงทะเบียนกับบุคคลที่ 3!
ZuluScripts ใช้ภาษา ZuluTrade Query Language (zql) ซึ่งได้รับการพัฒนาเพื่อให้เข้ากันได้กับภาษาสคริปทั่วไปที่ใช้ในตลาด Forex
ในการใช้งาน ZuluScripts คุณจำเป็นต้องมีเพียงบัญชีผู้ซื้อขายที่เปิดใช้งาน ZuluTrade+ ดังที่แสดงในแท็บการตั้งค่า การตั้งค่าการลิงก์บัญชีโบรกเกอร์ของบัญชีของคุณ
การเข้าถึงหน้าแก้ไขสคริปต์ซื้อขาย ZuluTrade
ในการเข้าถึงสคริปต์การซื้อขาย ZuluTrade เมื่อคุณได้ลงทะเบียนกับ ZuluTrade และลิงก์บัญชีของคุณกับแพลตฟอร์ม ZuluTrade+ คุณจะต้องเปิดหน้าสถานีซื้อขาย ZuluTrade และคลิก 'สคริปต์ซื้อขาย'
หน้าต่างป๊อปอัปหน้าใหม่ชื่อ 'ลูกข่ายการซื้อขาย' จะปรากฏ
ที่แถบด้านข้างทางขวาของหน้าแก้ไขสคริปต์คุณจะพบแท็บ 4 แท็บสำหรับสลับระหว่างโหมดการทำงานของหน้าแก้ไขสคริปต์ได้
แท็บแรกใช้ตั้งโหมดในการสร้างสคริปต์ แท็บที่สองสำหรับโหมดการสร้างตัวบ่งชี้ที่กำหนดเอง แท็บที่สามสำหรับการสร้าง Headers แท็บสุดท้ายสำหรับอภิธานศัพท์ ZQL ซึ่งคุณจะพบรายละเอียดเกี่ยวกับคำสั่งแต่ละคำสั่งในภาษา ZQL
ดีที่สุด
การสร้าง ZuluScript
ในการสร้าง ZuluScript ของคุณ คุณต้องคลิกที่ปุ่ม 'สร้างสคริปต์' ในหน้าแก้ไขสคริปต์
เมื่อสร้างสคริปต์ใหม่ หน้าแก้ไขจะแสดงโค้ดแม่แบบ zql ในแผงหน้าจอนี้เป็นหน้าจอสำหรับป้อนโค้ดสคริปต์
ที่ด้านล่างของหน้าแก้ไขและด้านขวาจะมีปุ่มสามปุ่มซึ่งจะช่วยในการสร้าง บันทึก คอมไพล์ และนำไปใช้ ZuluScript ของคุณ
บันทึก - ปุ่มบันทึกใช้เพื่อบันทึกสคริปต์ของคุณทุกเมื่อ เพื่อไม่ให้สูญเสียการแก้ไขหรือกระบวนการใดๆ
อย่างไรก็ดี การบันทึกสคริปต์ไม่ได้หมายความว่าการเปลี่ยนแปลงจะพร้อมสำหรับใช้งาน การเปลี่ยนแปลงจะต้องผ่านการคอมไพล์และนำไปใช้ก่อนที่จะพร้อมใช้งาน
คอมไพล์ - การคอมไพล์สคริปต์จะตรวจสอบโค้ดว่ามีข้อผิดพลาดของรูปแบบหรือไม่ หากการคอมไพล์สำเร็จจะมีการสร้างไฟล์ไบนารี่ที่เชื่อมโยงกับสคริปต์ของเราเพื่อให้สามารถเรียกใช้ได้
หากการคอมไพล์ไม่สำเร็จจะมีการแสดงข้อผิดพลาดที่พบภายในแผงหน้าจอ 'เอาท์พุทคอมไพเลอร์'
โปรดดูตัวอย่างของการคอมไพล์ที่ไม่สำเร็จด้านล่าง:
นำไปใช้ - ก่อนการนำสคริปต์ไปใช้จะต้องมีการคอมไพล์ เมื่อดำเนินการแล้วจะได้ไฟล์ .zql คุณสามารถนำสคริปต์ไปใช้และพบได้ในสถานีซื้อขาย ZuluTrade!
Meta Data - ที่ด้านขวาของหน้าตางจะพบ Meta Data ของสคริปต์ของคุณ
ชอ่ง 'Name' เป็นชื่อที่จะแสดงเมื่อผนวกสคริปต์เข้ากับแผนภูมิ
ช่อง Filename' เป็นชื่อไฟล์เพื่อจัดเก็บสคริปต์ภายในเซิร์ฟเวอร์ของ ZuluTrade ไม่มีความจำเป็นต้องเปลี่ยนช่องนี้ แต่หากคุณต้องการ โปรดใช้ชื่อที่ลงท้ายด้วย '.zql'
ช่อง 'Description' เป็นคำอธิบายสั้นๆ ที่จะแสดงเมื่อผนวกสคริปต์เข้ากับแผนภูมิ คำอธิบายสามารถช่วยเตือนคุณเกี่ยวกับการทำงานที่แท้จริงของสคริปต์ ฉะนั้นโปรดระบุรายละเอียดที่คุณต้องการในนี้
รายชื่อสคริปต์ - ใต้ช่อง 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);
}
สคริปต์นี้จะตรวจสอบหาจำนวนการซื้อขายเปิดในแต่ละรอบ หากไม่มีการซื้อขายเปิดและมีเงื่อนไขตัวบ่งชี้บางประการที่ตรง สคริปต์จะเปิดการซื้อขายใหม่ กลับกัน หากมีการซื้อขายเปิดจำนวนมาก จะมีการปิดหนึ่งรายการ
หมายเหตุ: ไม่เป็นกลยุทธ์การซื้อขายจริงและใช้สำหรับเป็นตัวอย่างเท่านั้น
หากคุณต้องการสร้างสคริปต์ในตอนนี้ เพียงคลิกที่ปุ่ม 'สร้างสคริปต์' และเริ่มต้นกระบวนการอีกครั้ง
ดีที่สุด
การสร้างตัวบ่งชี้ที่กำหนดเอง
คุณสามารถสร้างตัวบ่งชี้ทีกำหนดเองและใช้ในสคริปต์ซื้อขายอื่นๆ เพื่อขยายตัวบ่งชี้ทางเทคนิคที่มีอยู่ในภาษานั้นแล้วได้
คุณสามารถใช้ตัวบ่งชี้ที่กำหนดเองใน ZuluScript โดยใช้ฟังก์ชัน 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);
}
ดีที่สุด
การสร้าง Header
ที่นี่คุณสามารถกำหนดฟังก์ชันที่นำมาใช้ใหม่ได้ที่สามารถนำเข้าและใช้ด้วยสคริปต์หรือตัวบ่งชี้ที่กำหนดเอง
โปรดทราบว่า Headers ไม่ใช่สคริปต์ ZQL ดังนั้น จึงไม่จำเป็นต้องมีฟังก์ชัน init(), start() หรือ deinit()
ในการสร้าง Header ของคุณ ให้คลิกที่ปุ่ม 'สร้าง Header' ในหน้าแก้ไข
โปรดตรวจสอบในหน้าแก้ไขว่าสลับไปยังแท็บ Headers:
หมายเหตุ I: ภายใน #include<> ให้ใช้ชื่อไฟล์ซึ่งมีสคริปต์ที่คุณต้องการใช้ฟังก์ชัน
หมายเหตุ II: Headers จะถูกบันทึกเท่านั้น ไม่จำเป็นต้องทำการคอมไพล์หรือการนำไปใช้ เนื่องจากโค้ดจะผ่านการคอมไพล์และนำไปใช้เมื่อถูกนำเข้าโดยสคริปต์หรือตัวบ่งชี้ที่กำหนดเอง
การใช้ Header ในสคริปต์ใหม่ง่ายเหมือนกับการใส่ไฟล์ Headers ดังต่อไปนี้
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
ดีที่สุด
อภิธานศัพท์
ภายในอภิธานศัพท์ คุณสามารถดูรายละเอียดสำหรับคำสั่งของภาษา ZQL แต่ละคำสั่ง
เพียงคลิกที่ตัวอักษาด้านบนเพื่อเลื่อนหน้าไปยังรายชื่อของตัวอักษรนั้น นอกจากนี้ เมื่อคลิกที่ตัวอักษรนำของรายชื่อ คุณสามารถขยาย/ย่อฟังก์ชันของตัวอักษรแต่ละตัว และเมื่อคลิกที่ชื่อฟังก์ชัน/header คุณก็สามารถขยาย/ย่อรายละเอียดฟังก์ชันได้
ดีที่สุด
การใช้งานสคริปต์ในบัญชีผู้ซื้อขายของคุณ
หลังจากคอมไพล์และนำสคริปต์ไปใช้สำเร็จ คุณสามารถปิดหน้าแก้ไขสคริปต์และผนวกสคริปต์เข้ากับแผนภูมิ
ด้วยการไปหน้าคู่สกุลเงินและช่วงเวลาที่คุณต้องการ สำหรับตัวอย่างนี้ แผนภูมิ EURUSD กับช่วงเวลา H1
คลิกที่ปุ่มสคริปต์ซื้อขาย (ที่เน้นในภาพหน้าจอด้านล่าง) และเลือกสคริปต์ที่คุณต้องการ
หากคุณวางเมาส์ไว้บนสคริปต์ Tooltip ที่มีคำอธิบายสคริปต์จะปรากฏ
ในการเริ่มต้นสคริปต์ในแผนภูมิ/ช่วงเวลาทีเลือก เพียงคลิกที่ชื่อสคริปต์ แล้วหน้าต่างใหม่ซึ่งประกอบด้วยคำอธิบายสคริปต์รวมทั้งช่องป้อนข้อมูลพื้นฐานสำหรับตัวแปรภายนอกของสคริปต์จะปรากฏ
ปรับตัวแปรให้ตรงกับความต้องการของคุณแล้วคลิกที่ปุ่ม "เริ่มต้น" แล้วสคริปต์จะถูกผนวกเข้ากับแผนภูมิ!
หมายเหตุ: สคริปต์จะถูกเรียกใช้กับแผนภูมินี้จากเซิร์ฟเวอร์ ZuluTrade ไม่ว่าคุณจะเปิดเครื่อง PC หรือลงชื่อเข้าใช้งานในบัญชีของคุณหรือไม่ก็ตาม
แท็บสคริปต์ซื้อขาย - ที่นี่คุณสามารถดูสคริปต์ซื้อขายที่ทำงานอยู่ในปัจจุบันในแต่ละแผนภูมิ/ช่วงเวลา ร่วมกับรุ่นและเวลาของการอัปเดตล่าสุด
คุณยังสามารถเปิดไปยังหน้าแผนภูมิที่เรียกใช้สคริปต์อยู่ด้วยไอคอนแชท
แท็บข้อความ - ข้อความทุกข้อความจากสคริปต์ ปรินต์ ข้อความจาก ZuluTrade เกี่ยวกับสคริปต์ของคุณ ฯลฯ จะแสดงในส่วนนี้
ดีที่สุด
หยุดและยกเลิกการนำสคริปต์ไปใช้
คุณสามารถหยุดและเลิกใช้สคริปต์ได้ทุกเมื่อ
การหยุดสคริปต์ - ในการหยุดไม่ให้สคริปต์ทำงานกับแผนภูมิ/ช่วงเวลา คุณเพียงไปยังแท็บ 'สคริปต์ซื้อขาย' คลิกที่ปุ่ม 'x' ที่ด้านขวาของสคริปต์ที่คุณต้องการหยุดและยืนยันหน้าหยุดภายในป๊อปอัปที่ปรากฏ
หมายเหตุ: การหยุดสคริปต์จะหยุดสคริปต์จากการทำงานในแผนภูมิ/ช่วงเวลาหนึ่งๆ สคริปต์จะยังคงอยู่ในบัญชีผู้ซื้อขายและสคริปต์ซื้อขายของคุณ
การเลิกการนำสคริปต์ไปใช้ - ในการยกเลิกการนำสคริปต์ไปใช้ คุณเพียงไปยังส่วนสคริปต์ซื้อขาย คลิกที่ปุ่ม 'x' ใกล้กับชื่อสคริปต์และยืนยันการยกเลิกการนำไปใช้ในหน้าต่างป๊อปอัปที่ปรากฏ
หมายเหตุ: การยกเลิกการนำสคริปต์ไปใช้จะลบสคริปต์ออกจากรายชื่อสคริปต์ที่นำไปใช้ได้ในบัญชีผู้ซื้อขายของคุณ และจะไปลบออกจาหน้าแก้ไขสคริปต์
ดีที่สุด
คู่มือผู้ใช้ ZQL Standalone Compiler
เริ่มต้นกับ ZQL Standalone Compiler
ZQL Standalone Compiler คือโหมดสแตนด์อโลนของ ZQL Script Compiler ซึ่ง มีในเว็บแพลตฟอร์มของ ZuluTrade มันจะคอมไพล์สคริปต์ที่เข้ากันได้กับ ZQL (เช่น mq4) ไปเป็นไฟล์ .zl
ดาวน์โหลด
ZQL Standalone Compiler กระจายมาจากเว็บไซต์ของ FXCMMarkets
คอมไพเลอร์มีทั้งไฟล์รูปแบบ zip หรือ tar
สิ่งที่จำเป็น
- Java JDK 6 (เราแนะนำให้คุณใช้ Java JDK 6 ฮอตสปอต)
การติดตั้ง
เพียงแค่คัดลอกดาวน์โหลดที่คุณเลือกไปยังไดเร็คทอรี่ที่คุณต้องการ คุณสามารถติดตั้ง ZQL Standalone Compiler กับระบบปฏิบัติการใดๆ ก็ได้ที่รองรับรูปแบบ zip หรือ tar อ้างอิงถึงบันทึกการเปิดตัวสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปิดตัว
คำแนะนำอย่างรวดเร็ว
ตอนนี้คุณได้ดาวน์โหลด ZQL Standalone Compiler แล้ว สิ่งที่ต้องพิจารณาต่อไปคือรูปแบบของการกระจายและสำรวจโครงสร้างไดเร็คทอรี่ของคอมไพเลอร์ ไฟล์โครงแบบหลัก ไฟล์บันทึกเหตุการณ์ เป็นต้น
โครงสร้างไดเร็คทอรี่
ไดเร็คทอรี่ |
คำอธิบาย |
lib/
|
ประกอบด้วยห้องสมุดอ้างอิงของคอมไพเลอร์ |
conf/
|
ประกอบด้วยไฟล์โครงแบบที่ไม่ควรมีการปรับเปลี่ยนไม่ว่าด้วยวิธีการใดก็ตาม |
run.bat
|
การรันสคริปต์สำหรับเครื่องวินโดวส์ |
run.sh
|
การรันสคริปต์สำหรับเครื่องลินุกซ์ |
ทางเลือก Compiler
Parameter Name
|
Parameter Short Name
|
มูลค่า
|
คำอธิบาย
|
help |
h |
- |
พิมพ์ข้อความขอความช่วยเหลือไปยังส่วนเฝ้าคุม |
class |
c |
ค่าสตริงใดๆ |
ชื่อชั้นที่สร้างขึ้น |
package |
p |
สตริงใดๆ ในรูปแบบของ แพกเกจพาท (Package Path) |
ชื่อแพคเกจที่สร้างขึ้น |
output |
o |
ค่าสตริงใดๆ |
ชื่อของไฟล์เอาท์พุทที่ถูกคอมไพล์โดยที่ไม่มีการขยาย |
zqh |
z |
สตริงใดๆ ในรูปแบบของไดเร็คทอรี่พาท (Directory Path) (โดยเทียบเคียงหรือโดยแท้จริง) |
ประกอบด้วยไดเร็คทอรี่พาทพร้อมด้วยไฟล์ zqh ที่กำหนดเอง |
name |
n |
ชื่อสคริปต์ที่ต้องการ
หากคุณมีช่องไฟ ให้แน่ใจว่าคุณใส่มันระหว่าง " ในวินโดวส์ และ \" ในลินุกซ์
|
ชื่อของสคริปต์เพื่อแสดงเมื่อมันถูกโหลดในระบบของ FXCMMarkets |
description |
d |
คำอธิบายสคริปต์ที่ต้องการ
หากคุณมีช่องไฟ ให้แน่ใจว่าคุณใส่มันระหว่าง " ในวินโดวส์ และ \" ในลินุกซ์
|
คำอธิบายของสคริปต์เพื่อแสดงเมื่อมันถูกโหลดในระบบของ FXCMMarkets |
ตัวอย่าง
Compile a custom expert script |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
Compile a custom expert script with a custom header script (e.g. in headers directory) |
Output |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
ดีที่สุด