המדריך ליצירת ZuluScripts
עודכן לאחרונה ב
מבוא
ZuluTrade יצרה דור חדש של סקריפטים למסחר המאפשרים לסוחרים ליצור ולפרוס אינדיקטורים ורובוטים למסחר משלהם, ישירות דרך חשבון הסוחר שלהם ב-ZuluTrade וללא צורך בתוכנה חיצונית או הרשמה לשירות של צד שלישי!
השימוש ב-ZuluScripts נעשה באמצעות שפת השאילתות של ZuluTrade (zql) אשר מתאימה לרוב שפות הסקריפטים הנפוצות בשוק המט"ח.
כדי להשתמש ב-ZuluScripts כל שצריך הוא חשבון סוחר שבו האפשרות +ZuluTrade פועלת בכרטיסייה 'הגדרות -> הגדרות קישור לחשבון ברוקר' בחשבון שלך.
גישה לעורך הסקריפטים למסחר של ZuluTrade
כדי לגשת לסקריפטים למסחר של ZuluTrade, לאחר התחברות ל-ZuluTrade וקישור החשבון שלך לפלטלפורמה +ZuluTrade עליך לנווט אל תחנת המסחר של ZuluTrade וללחוץ על 'Trading Scripts' (סקריפטים למסחר).
חלון מוקפץ חדש יופיע עם הכותרת 'Trading Client' (לקוח סוחר).
בסרגל הימני העליון של עורך הסקריפטים ניתן למצוא 4 כרטיסיות שונות שמגדירות את מצב השימוש בעורך הסקריפטים.
הראשונה מגדירה מצב של יצירת סקריפטים, השנייה מגדירה מצב של יצירת אינדיקטורים מותאמים אישית, השלישית מגדירה מצב של יצירת כותרות והאחרונה מעלה את מילון המונחים של ZQL שבו ניתן למצוא מידע נוסף על כל אחת מהפקודות בשפת ZQL.
למעלה
יצירת ZuluScript
כדי ליצור ZuluScript, עליך ללחוץ על הלחצן 'צור סקריפט' בעורך הסקריפטים.
לאחר שתיצור את הסקריפט החדש, חלונית העורך תתמלא בתבנית קוד zql - בחלונית הזו יש להזין את הקוד של הסקריפט.
מתחת לעורך ומצד ימין יש שלושה לחצנים אשר יעזרו לך ליצור ZuluScript - שמור, הדר ופרוס.
שמור - הלחצן 'שמור' מאפשר לך לשמור את הסקריפט שלך בכל רגע נתון כך שלא תאבד את כל השינויים וההתקדמות שביצעת.
עם זאת, שמירת שינוי בסקריפט לא אומרת שבהכרח ניתן להשתמש בשינוי הזה. צריך להדר ולפרוס כל שינוי שמבצעים לפני שניתן להשתמש בסקריפט.
הדר - הידור (Complile) לסקריפט בודק אם יש בקוד שגיאות תחביר ואם ההידור מסתיים בהצלחה, הוא ייצור את הקבצים הבינאריים הקשורים לסקריפט שלנו כדי שיהיה אפשר להפעיל אותו.
אם תהליך ההידור נכשל, השגיאות שבהן הוא נתקל יופיעו ברשימה בחלונית 'Compiler Output' (פלט המהדר).
להלן דוגמה להידור שנכשל:
פרוס - כדי לפרוס (Deploy) סקריפט, קודם כל צריך להדר אותו. לאחר ביצוע ההידור ויצירת קובץ zql. ניתן לפרוס את הסקריפט והוא יהיה זמין לשימוש בתחנת המסחר של ZuluTrade!
מטא נתונים - מצד ימין של החלון ניתן לשנות את המטא נתונים של הסקריפט שלך.
השדה 'Name' (שם) הוא השם שיוצג כשמצרפים את הסקריפט לתרשים.
השדה 'Filename' (שם הקובץ) הוא שם הקובץ שבו הסקריפט מאוחסן בשרת של ZuluTrade. לא חובה לשנות את השדה הזה אך אם רוצים לעשות זאת יש לזכור כי שם הקובץ חייב להסתיים בסיומת 'zql.'
השדה 'Description' (תיאור) מכיל תיאור קצר שיופיע כשמצרפים את הסקריפט לתרשים. התיאור יכול לעזור לך לזכור את הפונקציונליות המדויקת של הסקריפט אז פרט כמה שצריך בשדה הזה.
רשימת הסקריפטים - מתחת לשדות של המטא נתונים יש רשימה של כל הסקריפטים השמורים. שים לב, כל סקריפט חדש שנוצר נשמר אוטומטית.
הסקריפט שנבחר כעת (שהקוד שלו מוצג בחלונית של העורך) מסומן.
מחיקת סקריפט - אם צריך למחוק סקריפט, יש ללחוץ על הסמל "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 אחרי שמירה, הידור ופריסה של האינדיקטור המותאם אישית.
הערה: כרגע לא ניתן ליצור אינדיקטורים מותאמים אישית בתרשימים.
כדי ליצור אינדיקטורים מותאמים אישית צריך ללחוץ על הלחצן 'Create Indicator' (צור אינדיקטור) בעורך הסקריפטים.
ודא שהעורך עובר לכרטיסייה 'אינדיקטורים מותאמים אישית':
כעת צריך לערוך את האינדיקטור, לתת לו שם, לשמור אותו ובסופו של דבר לפרוס את האינדיקטור כשהוא מוכן!
הפונקציות 'Edit' (ערוך), 'Name' (שם), 'Save' (שמור) ו-'Deploy' (פרוס) פועלות כמו ב-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().
כדי ליצור כותרת, צריך ללחוץ על הלחצן 'Create Header' (צור כותרת) בעורך הסקריפטים.
ודא שהעורך עובר לכרטיסייה 'כותרות':
הערה 1:זהו שם הקובץ שבו צריך להשתמש בהנחיה <>include# בסקריפט שבו משתמשים כדי לגשת לפונקציות.
הערה 2: הכותרות רק נשמרות. לא צריך לבצע להן הידור או פריסה כיוון שהקוד יהודר וייפרס כשהסקריפט או האינדיקטור המותאם אישית ייבא אותו.
קל מאוד להשתמש בכותרת בסקריפט חדש, בדיוק כמו צירוף קובץ הכותרת בדוגמה הבאה
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
למעלה
מילון מונחים
במילון המונחים ניתן למצוא מידע מפורט על כל אחת מהפקודות בשפת ZQL.
לחץ על אחת מהאותיות למעלה כדי לעבור אוטומטית למונחים שבאותה האות. בנוסף, ניתן ללחוץ על כותרות האותיות שברשימה כדי להרחיב/לכווץ את הפונקציות שרשומות מתחת לכל אות ועל שם הפונקציה/כותרת כדי להרחיב/לכווץ את פרטי הפונקציה
למעלה
שימוש בסקריפט בחשבון הסוחר שלך
אחרי שמהדרים ופורסים בהצלחה סקריפט ניתן לסגור את החלון של עורך הסקריפטים ולצרף את הסקריפט לתרשים.
לשם כך צריך לנווט אל צמד המטבעות והתקופה המבוקשים. בדוגמה הזו השתמשנו בתרשים בצמד אירו-דולר אמריקאי בתקופה H1.
לחץ על הלחצן 'Trading Scripts' (סקריפטים למסחר, הוא מסומן בצילום המסך למטה) ובחר את הסקריפט המבוקש.
אם תשאיר את סמן העכבר מעל הסקריפט, יופיע שדה תיאור שמכיל את התיאור של הסקריפט.
כדי להפעיל את הסקריפט עבור התרשים/התקופה שנבחרו לחץ על שם הסקריפט. יופיע חלון חדש שמכיל את התיאור של הסקריפט ואת כל שדות ההתחלה של המשתנים השונים של הסקריפט.
שנה את הפרמטרים לפי הצורך ולחץ על הלחצן 'Start' (התחל). הסקריפט יצורף לתרשים!
הערה: הסקריפט יפעל בתרשים הזה דרך השרתים של ZuluTrade, גם אם המחשב שלך לא דלוק או שאינך מחובר לחשבון שלך.
הכרטיסייה סקריפטים למסחר - כאן ניתן לעיין בכל הסקריפטים למסחר שפעילים כעת בכל תרשים/תקופה, יחד עם הגרסאות הפועלות ומועד העדכון האחרון.
ניתן גם לנווט ישירות אל התרשים שבו הסקריפט פועל באמצעות הסמל 'תרשים'.
הכרטיסייה הודעות - הודעות שמתקבלות מהסקריפט, תדפיסים, הודעות מ-ZuluTrade לגבי הסקריפט שלך וכו' יופיעו בחלק הזה.
למעלה
עצירה וביטול פריסה של סקריפט
ניתן לעצור ולבטל את הפריסה של סקריפט בכל רגע נתון.
עצירת סקריפט - כדי לעצור סקריפט פעיל בתרשים/תקופה צריך לנווט אל הכרטיסייה 'סקריפטים למסחר', ללחוץ על הלחצן 'x' שמימין לסקריפט שברצונך לעצור ולאשר את העצירה בחלון המוקפץ.
הערה: עצירת סקריפט רק עוצרת אותו מהתרשים/התקופה. הסקריפט יישאר בחשבון הסוחר שלך וברשימת הסקריפטים למסחר שלך.
ביטול פריסה של סקריפט - כדי לבטל פריסה של סקריפט צריך לנווט אל הקטע 'סקריפטים למסחר', ללחוץ על הלחצן 'x' שמימין לסקריפט שברצונך לעצור ולאשר את ביטול הפריסה בחלון המוקפץ.
הערה: ביטול הפריסה של סקריפט רק מסיר אותו מהרשימה של הסקריפטים הזמינים בחשבון הסוחר שלך. הפעולה לא מוחקת את הסקריפט מהחלון של עורך הסקריפטים.
למעלה
מדריך למשתמש [ZQL Standalone Compiler]
התחלת עבודה עם [ZQL Standalone Compiler]
י[ZQL Standalone Compiler[ הוא המצב העצמאי של מהדר הסקריפטיםZQL (ZQL Script compiler) אשר zulutrade מציעה בפלפטורמת הרשת שלה. הוא יהדר כל סקריפט התואם ל-ZQL (לדוגמא קובץ mp4) לקובץ בעל סיומת zl.
הורדה
[ZQL Standalone Compiler] מופץ דרך אתר Weltrade
המהדר זמין בקבצים בפורמט zip או tar.
דרישות
- Java JDK 6 (אנו ממליצים להשתמש ב-HotSpot של Java JDK 6)
התקנה
פשוט פתח את ההורדה שבחרת בתיקייה שתבחר. תוכל להתקין את [ZQL Standalone Compiler] בכל מערכת הפעלה שתומכת בקבצים בפורמט zip או tar. עיין במסמך "הערות מוצר" למידע נוסף בנוגע למהדר.
סיור מזורז
עכשיו שהורדת את [ZQL Standalone Compiler], הדבר הבא שנדבר עליו הוא מתווה החלוקה, וכן נחקור את מבנה תיקיית המהדר, קבצי התצורה המרכזיים, קבצי יומן וכו'.
מבנה תיקייה
תיקייה |
תיאור |
lib/
|
מכיל את צימודי (dependencies) הספרייה של המהדר |
conf/
|
מכיל קבצי תצורה חיוניים אשר אין לערוך בהם שינויים כלשהם |
run.bat
|
סקריפט ההפעלה למכשירי Windows. |
run.sh
|
סקריפט ההפעלה למכשירי לינוקס / יוניקס. |
אפשרויות מהדר
שם הפרמטר
|
שם הפרמטר בקיצור
|
ערך
|
תיאור
|
help |
h |
- |
מציג את הודעת העזרה במסוף |
class |
c |
ערך מחרוזת כלשהו |
שם המחלקה (class) שנוצרה. |
package |
p |
כל מחרוזת בצורת נתיב חבילה (package) |
שם החבילה (package) שנוצרה |
output |
o |
ערך מחרוזת כלשהו |
שם קובץ הפלט המופק על ידי המהדר, ללא סיומת |
zqh |
z |
כל מחרוזת בצורת נתיב תיקייה (מוחלט או יחסי) |
כלול נתיב תיקייה עם קבצי [zqh] מותאמים |
name |
n |
שם הסקריפט המבוקש
אם יש לך רווחים, שים לב שהם נמצאים בין " במערכת ההפעלה Windows או \" במערכת ההפעלה לינוקס
|
שם הסקריפט שיוצג לאחר שהוא ייטען במערכת Weltrade |
description |
d |
תיאור הסקריפט המבוקש
אם יש לך רווחים, שים לב שהם נמצאים בין " במערכת ההפעלה Windows או \" במערכת ההפעלה לינוקס
|
תיאור הסקריפט שיוצג לאחר שהוא נטען במערכת Weltrade |
דוגמאות
הדר סקריפט מומחה מותאם |
פלט |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
הדר סקריפט מומחה מותאם עם סקריפט כותרת עליונה (header) מותאם (לדוגמא בספריית כותרות עליונות) |
פלט |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
למעלה