دليل إنشاء برامج ZuluScript النصية

أخر تحديث في

مقدمة

أبدعت ZuluTrade جيلاً جديدًا من برامج التداول النصية التي تسمح للمتداولين بإنشاء مؤشرات وآليات التداول المؤتمت الخاصة مباشرة باستخدام حساب متداول ZuluTrade الخاص بهم دون الحاجة إلى أي برنامج خارجي أو التسجيل لدى الغير!
يتم تنفيذ ZuluScripts باستخدام لغة zql (ZuluTrade Query Language) التي أُنشِئَت بحيث تتوافق مع غالبية اللغات الشائعة لكتابة البرامج النصية في سوق الفوركس.

كل ما تحتاجه حتى تتمكن من استخدام ZuluScripts هو حساب متداول مع تمكين خيار ZuluTrade+ على النحو المُبيَّن في علامة التبويب الإعدادات وإعدادات رابط حساب الوسيط لحسابك.

الوصول إلى محرر برامج ZuluTrade النصية للتداول

للوصول إلى برامج ZuluTrade النصية الخاصة بالتداول، يتعين عليك بمجرد الانتهاء من التسجيل لدى ZuluTrade وربط حسابك بمنصة ZuluTrade+ أن تتوجه إلى منصة تداول ZuluTrade وأن تضغط خيار "برامج التداول النصية".
سوف تظهر أمامك نافذة منبثقة جديدة بعنوان "عميل تداول".
وسوف تجد على الشريط الجانبي العلوي الأيمن من محرر البرامج النصية أربع علامات تبويب مختلفة تُستخدم في تغيير وضع الأداء الوظيفي لمحرر البرامج النصية.
تقوم العلامة الأولى بضبط الوضع على إنشاء البرامج النصية، وتقوم الثانية بضبط الوضع على إنشاء مؤشرات مخصصة، بينما تقوم الثالثة بضبطه على إنشاء ترويسات والأخيرة تعرض معجم للمصطلحات والاختصارات حيث تجد معلومات تفصيلية عن كل أمر من أوامر لغة ZQL.

إلى أعلى

إنشاء ZuluScript

لإنشاء برنامج ZuluScript النصي، اضغط زر "إنشاء برنامج نصي" الموجود في محرر البرامج النصية.

فور إنشاء برنامج نصي جديد، يظهر في لوحة المحرر رمز قالب zql – وفي هذه اللوحة عينها يتم إدخال رمز البرنامج النصي.


توجد أسفل المحرر على الجانب الأيمن ثلاثة أزرار تساعدك في إنشاء ZuluScript، وهي حفظ وتجميع ونشر.


حفظ – يقوم زر "حفظ" بحفظ برنامجك النصي في أي وقت حتى لا تفقد أي جزء أنشأته أو عدلته.

غير أن حفظ أي تغيير في البرنامج النصي لا يعني أنه قد أصبح جاهزًا للاستخدام؛ حيث يحتاج أي تغيير إلى "التجميع" و"النشر" قبل أن يصبح جاهزًا للاستخدام.

تجميع – تجميع البرنامج النصي ينطوي على اختبار سلامته من أي خطأ في بناء الجملة، ثم -في حالة استكمال التجميع بنجاح- إنشاء الملفات الثنائية المصاحبة للبرنامج النصي حتى يمكن تنفيذه.
أما إذا فشلت عملية التجميع، فسوف يتم سرد الأخطاء التي واجهت هذه العملية في لوحة "مخرجات التجميع".

يرجى الرجوع إلى المثال الآتي على عملية تجميع غير ناجحة:
نشر –يجب أن تقوم بتجميع البرنامج النصي أولاً حتى يمكنك نشره. وبمجرد أن تقوم بهذا ويتم إنشاء ملف .zql، يكون بإمكانك نشر البرنامج النصي ويصبح متاحًا للاستخدام في منصة تداول ZuluTrade!


بيانات التعريف – يمكن تعديل البيانات التعريفية للبرنامج النصي من الجانب الأيمن للنافذة.
يمثل حقل "الاسم" الاسم الذي سيتم عرضه عند إرفاق البرنامج النصي برسمٍ بياني.
يمثل حقل "اسم الملف" اسم الملف المُستَخدَم في حفظ البرنامج النصي داخليًا على خادم ZuluTrade. ليس من الضروري تغيير هذا الحقل، ولكن إذا رغبتَ في ذلك، انتبه إلى أنه لا بد أن ينتهي باللاحقة ".zql".
يمثل حقل "الوصف" وصفًا مختصرًا يتم عرضه عند إرفاق البرنامج النصي برسمٍ بياني. إن الوصف سوف يساعد في تذكيرك بالأداء الوظيفي للبرنامج النصي؛ لذا، احرص على إظهار أي تفاصيل تحتاجها في هذه المساحة.

قائمة البرامج النصية – توجد أسفل حقول بيانات التعريف قائمة بجميع البرامج النصية المحفوظة. يرجى ملاحظة أنه سيتم تلقائيًا حفظ كل برنامج نصي جديد يتم إنشاؤه.
وسيتم تمييز البرنامج النصي المُحدَّد حاليًا (الذي يظهر رمزه في لوحة المحرر)
حذف برنامج نصي – إذا احتجت حذف برنامج نصي، ما عليك سوى أن تضغط رمز "×" المجاور لاسم البرنامج النصي وتأكيد الإلغاء في النافذة المنبثقة التي تظهر.
مثال لبرامج نصي – دعنا نستعرض مثال لبرنامج نصي 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 وذلك بعد حفظها وتجميعها ونشرها.

ملحوظة: يتعذر علينا في الوقت الراهن تقديم المؤشرات المخصصة على الرسومات البيانية.


لإنشاء مؤشر مخصص، اضغط زر "إنشاء مؤشر" الموجود في محرر البرامج النصية.

يرجى التأكد من تحويل المحرر إلى علامة التبويب "مؤشرات مخصصة":

بعد ذلك، عليك بتحرير المؤشر المخصص وتسميته وحفظه ونشره عندما يصبح جاهزًا!

قم بتحرير عملك وتسميته وحفظه ونشره بطريقة مماثلة لتلك المتبعة مع ZuluScript
ملحوظة: اسم المؤشر هو ذاته الاسم الذي سوف يُستَخدَم لاحقًا في مناداة دالة iCustom() للاتصال بالمؤشر في برامج ZuluScript النصية.


دعنا نستعرض مثال لمؤشر مخصص يمكنك أن تستخدمه لأغراض الاختبار:

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().


لإنشاء ترويستك الخاصة، اضغط زر "إنشاء ترويسة" الموجود في محرر البرامج النصية.

يرجى التأكد من تحويل المحرر إلى علامة التبويب "الترويسات":
ملحوظة 1: اسم الملف هو الاسم الذي يجب استخدامه في توجيه #include<> الموجود في البرنامج النصي الذي تحتاجه للوصول إلى الدوال.

ملحوظة 2: الترويسات تُحفَظ فقط ولا تحتاج إلى تجميع أو نشر حيث يتم تجميع الرمز ونشره بمجرد أن يتم استيرادها بواسطة برنامج نصي أو مؤشر.



لا يقل استخدام الترويسة في برنامج نصي جديد في بساطته عن إدراج ترويسة ملف على النحو الآتي

#include "my_common_functions.zqh"

int init() {
}

int start() {
printMyBalance();
}

إلى أعلى

معجم المصطلحات والاختصارات

يشمل معجم المصطلحات والاختصارات معلومات تفصيلية عن كل أمر من أوامر لغة ZQL.

ما عليك سوى أن تضغط على الأحرف الموجودة في الأعلى لتنتقل تلقائيًا إلى قائمة الحَرْف. كذلك يمكنك توسيع/طي دوال كل حرف بالضغط على عناوين الأحرف في القائمة، وتوسيع/طي تفاصيل كل دالة بالضغط على اسم/عنوان الدالة.

إلى أعلى

استخدام برنامج نصي في حساب المتداول

يمكنك بعد استكمال تجميع البرنامج النصي ونشره بنجاح أن تغلق نافذة محرر البرامج النصية وأن تلحق البرنامج النصي برسمٍ بياني.

وللقيام بذلك، اذهب إلى زوج العملات والمدة اللذين تختارهما، مثل الرسم البياني لزوج EURUSD للنصف الأول من العام.

اضغط زر "برامج التداول النصية" (على النحو الموضح في لقطة الشاشة الآتية) وحدد البرنامج النصي الذي تختاره.

إذا تركت الماوس فوق البرنامج النصي، سوف يظهر أمامك تلميح أداة يشمل وصفًا للبرنامج النصي.


لبدء تشغيل البرنامج النصي على الرسم/المدة المحددة، فقط اضغط على اسم البرنامج النصي لتظهر لك نافذة جديدة تشمل وصف البرنامج النصي وأي حقول مطلوبة بصفة مبدئية لإدخال قيم متغيرات خارجية في البرنامج النصي.


بعد ضبط المعلمات تبعًا لاحتياجاتك، ينبغي أن تضغط زر "بداية" حتى يتم إرفاق البرنامج النصي بالرسم البياني!

ملحوظة: سيتم تشغيل البرنامج النصي على هذا الرسم البياني من خوادم ZuluTrade بغض النظر عما إذا كان حاسبك الشخصي يعمل من عدمه أو إذا كنت قد سجلت الدخول إلى حسابك من عدمه.

علامة التبويب برامج التداول النصية – يمكنك من هنا مراجعة جميع برامج التداول النصية النشطة على كل رسم بياني/مدة فضلاً عن الإصدار الذي يجري تشغيله وأخر مرة تم التحديث فيها.

كذلك يمكنك من هنا أن تنتقل مباشرة إلى الرسم البياني الذي يعمل فيه البرنامج النصي من خلال رمز الرسم البياني.


علامة التبويب الرسائل – سوف تظهر في هذا القسم أي رسالة من برامجك النصية أو مطبوعات أو رسائل من ZuluTrade تتعلق ببرامجك النصية أو غير ذلك.

إلى أعلى

إيقاف تشغيل ونشر برنامج نصي

يمكنك في أي وقت إيقاف نشر أي برنامج نصي


إيقاف برنامج نصي – لإيقاف تشغيل أي برنامج نصي على رسم بياني/مدة، كل ما تحتاج القيام به هو الانتقال إلى علامة التبويب "برامج التداول النصية" والضغط على زر "×" الموجود على يمين البرنامج النصي الذي ترغب في إيقافه ثم تأكيد الإيقاف في النافذة المنبثقة المناسبة.

ملحوظة: لن يؤدي إيقاف البرنامج النصي إلا إلى إيقاف تشغيله على رسم بياني/مدة محددة، وسوف يظل البرنامج النصي موجود في "حساب المتداول" الخاص بك وضمن برامج التداول النصية الخاصة بك


إلغاء نشر برنامج نصي – لإلغاء نشر برنامج نصي، ما عليك سوى الانتقال إلى علامة التبويب "برامج التداول النصية" والضغط على زر "×" الموجود بجوار اسمه ثم تأكيد إلغاء النشر في النافذة المنبثقة المناسبة.

ملحوظة: لن يؤدي إلغاء نشر البرنامج النصي إلا إلى حذفه من قائمة البرامج النصية المتاحة في "حساب المتداول" الخاص بك لكنه لن يُحذف من نافذة محرر البرامج النصية.

إلى أعلى

دليل المستخدم ZQL Standalone Compiler

إبدأ مع ZQL Standalone Compiler

ZQL Standalone Compiler هو وضع مستقل من ZQL Script compiler الذي توفره zulutrade في منصتها على شبكة الإنترنت. وهوسيقوم بعمل compile لأي نص برمجي متوافق مع ZQL (على سبيل المثال mq4) إلى ملف zl.

تنزيل

يتم توزيع ZQL Standalone Compiler من NatureForex الموقع.

ال compiler متاح في صيغ ملفات zip أو tar.

MD5 SHA1
zql-standalone-compiler-stable.zip zql-standalone-compiler-stable.zip.md5 zql-standalone-compiler-stable.zip.sha1
zql-standalone-compiler-stable.tar.bz2 zql-standalone-compiler-stable.tar.bz2.md5 zql-standalone-compiler-stable.tar.bz2.sha1

المتطلبات

  • Java JDK 6 (نحن ننصح بإستخدام Java JDK 6 hotspot)

التثبيت

ببساطة قم بإستخراج التحميل المختار إلى مجلد من إختيارك. يمكنك تثبيت ZQL Standalone Compiler على أي نظام تشغيل يدعم صيغ zip أو tar.قم بالرجوع إلى ملاحظات الإصدار للحصول على معلومات إضافية تتعلق بالإصدار.

جولة سريعة

الآن بعد أن قمت بتحميل ZQL Standalone Compiler، الشيء التالي لتتم مناقشته هو تنسيق التوزيع وإستكشاف بنية المجلدات لل compiler، ملفات التهيئة الرئيسية، ملفات السجل وإلى آخره.

بنية المجلدات
مجلد البيان
lib/
يحتوي المكتبات التى يعتمد عليها ال compiler
conf/
يحتوي على ملفات تهيئة هامة والتي لا يجب تغييرها بأي حال من الأحوال.
run.bat
النص البرمجي الذي يتم تنفيذه لأجهزة ويندوز.
run.sh
النص البرمجي الذي يتم تنفيذه لأجهزة لينكس / يونكس.
إعدادات ال Compiler
إسم المُعامل
الإسم المختصر للمُعامل
القيمة
البيان
help h - قم بطباعة رسالة المساعدة إلى وحدة التحكم الطرفية.
class c أي قيمة نصية إسم ال class التي تم إنشاؤها.
package p أي قيمة نصية في شكل مسار الحزمة إسم ال package التى تم إنشاؤها
output o أي قيمة نصية إسم ملف ال compiled output بدون إمتداد
zqh z أي قيمة نصية في شكل مسار المجلد (نسبية أو مطلقة) وتشمل مسار المجلد مع ملفات zqh المخصصة
name n

إسم النص البرمجي المطلوب

إذا كان لديك مسافات تأكد من وضعها بين " في الويندوز و\" في اللينكس

إسم النص البرمجي يظهر بمجرد تحميله في NatureForex النظام
description d

وصف النص البرمجي المطلوب

إذا كان لديك مسافات تأكد من وضعها بين " في الويندوز و\" في اللينكس

وصف النص البرمجي يظهر بمجرد تحميله في NatureForex النظام
أمثلة
Compile نص برمجي خبير مخصص Output
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
my_expert.zl
Compile نص برمجي خبير مخصص مع header مخصص (على سبيل المثال مجلد headers) Output
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
my_expert.zl
إلى أعلى