Tuesday 30 January 2018

أوامر mql4 وثيقة مفتوحة و الفوركس


MQL4 المرجع ميتاكوتس اللغة 4 (MQL4) هي لغة مدمجة لاستراتيجيات التداول البرمجة. تم تطوير هذه اللغة من قبل شركة ميتاكوتس البرمجيات على أساس خبرتهم الطويلة في إنشاء منصات التداول عبر الإنترنت. باستخدام هذه اللغة، يمكنك إنشاء المستشارين الخبراء الخاصة بك التي تجعل إدارة التداول الآلي ومناسبة تماما لتنفيذ استراتيجيات التداول الخاصة بك. الى جانب ذلك، باستخدام MQL4 يمكنك إنشاء المؤشرات الفنية الخاصة بك (مؤشرات مخصصة)، والبرامج النصية والمكتبات. MQL4 يحتوي على عدد كبير من الوظائف اللازمة لتحليل الحالي ونقلت وردت سابقا، وقد بنيت في المؤشرات الأساسية والوظائف لإدارة أوامر التجارة والسيطرة عليها. يتم استخدام ميتايديتور (محرر النصوص) الذي يسلط الضوء على إنشاءات مختلفة من لغة MQL4 لكتابة رمز البرنامج. فإنه يساعد المستخدمين على توجيه أنفسهم في النص نظام الخبراء بسهولة تامة. يحتوي الدليل الموجز على الوظائف والعمليات والكلمات المحجوزة والمنشورات اللغوية الأخرى مقسمة إلى فئات، ويتيح العثور على وصف لكل عنصر مستخدم في اللغة. البرامج المكتوبة في ميتاكوتس اللغة 4 لها سمات وأغراض مختلفة: مستشار خبير هو نظام التداول الميكانيكية مرتبطة تصل إلى مخطط معين. يبدأ مستشار خبير في التشغيل عندما يحدث حدث التي يمكن التعامل معها من قبل: أحداث التهيئة والتداول، الحدث من تلقي علامة جديدة، حدث الموقت، وعمق السوق تغيير الحدث، الحدث المخطط والأحداث المخصصة. مستشار خبير يمكن أن أبلغكم عن إمكانية للتجارة وتجارة تلقائيا على حساب إرسال أوامر مباشرة إلى خادم التجارة. يتم تخزين المستشارين الخبراء في TerminaldirectoryMQL4Experts. مؤشر مخصص هو مؤشر فني مكتوب بشكل مستقل بالإضافة إلى تلك التي تم دمجها بالفعل في محطة العميل. مثل المؤشرات المضمنة، فإنها لا يمكن أن تتاجر تلقائيا والمقصود منها لتنفيذ المهام التحليلية فقط. يتم تخزين المؤشرات المخصصة في ترمينالديركتوري MQL4Indicators النصي هو برنامج يهدف لتنفيذ واحد من بعض الإجراءات. على عكس مستشاري الخبراء، لا تقوم البرامج النصية بمعالجة أية إجراءات، باستثناء حدث البداية (يتطلب ذلك وظيفة معالج أونستارت في نص برمجي). يتم تخزين البرامج النصية في TerminaldirectoryMQL4Scripts المكتبة هي مجموعة من الوظائف المخصصة المخصصة لتخزين وتوزيع كتل المستخدمة بشكل متكرر من البرامج المخصصة. لا يمكن للمكتبات البدء في التنفيذ بنفسها. يتم تخزين المكتبات في TerminaldirectoryMQL4Libraries تضمين الملف هو نص المصدر من كتل الأكثر استخداما من البرامج المخصصة. ويمكن تضمين هذه الملفات في النصوص المصدر للمستشارين الخبراء، والنصوص، والمؤشرات المخصصة، والمكتبات في مرحلة التجميع. استخدام الملفات المضمنة هو أكثر تفضيلا من استخدام المكتبات بسبب العبء الإضافي الذي يحدث في وظائف المكتبة الدعوة. تضمين الملفات يمكن تخزينها في نفس الدليل كملف المصدر - في هذه الحالة يتم استخدام التوجيه تضمين مع علامات الاقتباس المزدوجة. مكان آخر لتخزين تشمل الملفات هو TerminaldirectoryMQL4Include، في هذه الحالة يتم استخدام التوجيه تشمل مع قوسين زاوية. الغلق وحذف أوامر تتشكل طلبات التجارة لإغلاق أوامر السوق باستخدام الدالة أوردركلوس (). وظيفة أوردركلوس () وهي وظيفة تستخدم لإغلاق نظام السوق. ترجع الدالة ترو، إذا تم تنفيذ الصفقة بنجاح. ترجع فالس، إذا فشل التداول. تذكرة - رقم فريد من النظام. الكثير - كمية من الكثير ليتم إغلاقها. ويسمح لها بتحديد قيمة أقل من الكمية المتاحة من الكميات بالترتيب. في هذه الحالة، إذا تم تنفيذ الطلب التجاري بنجاح، سيتم إغلاق النظام جزئيا. السعر - سعر الإغلاق. يتم تعيين هذه المعلمة وفقا للمتطلبات والقيود المقبولة لأداء الصفقات (انظر خصائص النظام وقواعد لجعل الصفقات والتذييل 3). إذا لم يكن هناك سعر مطلوب لإغلاق نظام السوق في تدفق السعر أو إذا كان قد عفا عليها الزمن، سيتم رفض هذا الطلب التجاري إذا كان السعر عفا عليها الزمن، ولكن وجدت في تدفق الأسعار، وفي الوقت نفسه، انحرافه من السعر الحالي يتراوح ضمن قيمة الانزلاق، سيتم قبول طلب التجارة من قبل محطة العميل وإرسالها إلى خادم التجارة. الانزلاق - الحد الأقصى المسموح به لانحراف السعر المطلوب لإغلاق الأمر من سعر السوق (بالنقاط). اللون - لون سهم الإغلاق في الرسم البياني. إذا كانت هذه المعلمة غير متوفرة أو قيمته تساوي قيمة كلرنون، فلن يتم عرض السهم في المخطط. إذا كان البرنامج يحتوي على معلومات حول نوع من النظام ليتم إغلاقها، حول رقم فريد من نوعه، وكذلك عن كمية من الكثير ليتم إغلاقها، فمن السهل جدا لإغلاق النظام. لهذا، يجب أن تستخدم في التعليمات البرمجية البرنامج استدعاء الدالة أوردركلوس () مع المعلمات مسبقا. على سبيل المثال، إذا كان الرقم الفريد للشراء هو 12345 وإذا كنت ترغب في إغلاق 0.5 لوت، فإن الدعوة إلى وظيفة إغلاق الأمر قد تبدو على النحو التالي: من أجل تحديد ما هي أوامر وفي أي تسلسل يجب أن تكون مغلقة، لديك لديك بيانات من جميع أوامر فتحت في الوضع الحالي. في MQL4، هناك عدد من الوظائف التي يمكن استخدامها للحصول على البيانات المختلفة التي تميز أي أمر. على سبيل المثال، ترجع الدالة أورديروبنبريس () قيمة السعر المفتوح للطلب (أو السعر المطلوب للأوامر المعلقة)، تقوم الدالة أورديرلوتس () بإرجاع كمية القطع، تقوم الدالة أوردرتيب () بإرجاع نوع الطلب، الخ. كافة الدالات التي تقوم بارجاع قيم طلب خاصية مميزة عند تنفيذها الى الترتيب الذي تم تحديده بواسطة الدالة أوردرزليكت (). الدالة أوردرزليكت () للحصول على معلمات أي من طلباتك (بغض النظر عن السوق أو المعلقة، المغلقة أو المحذوفة منها)، يجب عليك أولا تحديده باستخدام الدالة أوردرزليكت (). أوردرزيليكت هي الدالة التي تختار أمر لمزيد من العمليات معها. ترجع ترو، إذا تم تنفيذ الدالة بنجاح. وإلا، فإنها ترجع فالس. مؤشر - موقف النظام أو رقم، فإنه يعتمد على المعلمة الثانية. حدد - علم طريقة الاختيار. يمكن تحديد المعلمة اختيار واحد من اثنين من القيم المحتملة: سيليكتبيبوس - في فهرس المعلمة، يتم إرجاع رقم الطلب في القائمة (الترقيم يبدأ مع 0)، سيليكتبيتيكيت - في فهرس المعلمة، رقم التذكرة (رقم الطلب الفريد) هو عاد. تجمع - مصدر البيانات للاختيار. يتم استخدام تجمع المعلمة عندما يكون اختيار المعلمة مساويا لقيمة سيليكتبيبوس. يتم تجاهل تجمع المعلمة، إذا تم تحديد الطلب من قبل رقم التذكرة (سيليكتبيتيكيت). يمكن أن يأخذ تجمع المعلمة من قيمتين ممكنتين: موديتراديس (افتراضيا) - يتم تحديد الأمر في الأوامر المفتوحة والمعلقة، أي بين الأوامر المعروضة في علامة التبويب كوتراديكوت من نافذة كوترمينالكوت مودهيستوري - يتم تحديد الترتيب في مغلقة ومحذوفة أوامر، أي بين الأوامر المعروضة في علامة التبويب كاكونت هيستوريكوت من نافذة كوترمينالكوت. في هذه الحالة، عمق التاريخ المحدد من قبل المستخدم لعرض أوامر مغلقة ومحذوفة مهم. من أجل إثبات طريقة استخدام الوظائف التجارية لإغلاق أوامر السوق، يتيح حل مشكلة: مشكلة 28. كتابة السيناريو الذي يغلق واحدة من أوامر السوق المتاحة على الحساب. يجب أن يؤدي تنفيذ البرنامج النصي إلى إغلاق الطلب الأقرب إلى موقع النص البرمجي المرفق بنافذة الرمز بالماوس. لنفرض أن هناك ثلاثة أوامر السوق فتحت في محطة للرمز وروز وأمر معلق فتح ل أوسشف: الشكل 90. عرض عدة أوامر فتحت لرموز مختلفة في إطار المحطة الطرفية. يجب أن نكتب مثل هذا السيناريو الذي يمكن سحبه من قبل الماوس من نافذة كوتنافيغاتوركوت في نافذة الرمز، والتي ينبغي أن تؤدي إلى إغلاق أحد أوامر السوق، وهي أقرب إلى المؤشر (اعتبارا من لحظة عندما المستخدم صدر زر الماوس). في الشكل 91، يمكنك أن ترى البديل، الذي يكون المؤشر الأقرب إلى النظام بيع 4372889. هذا هو الأمر الذي يجب إغلاقه نتيجة لتنفيذ البرنامج النصي. لحل المشكلة، يجب أن نختار (باستخدام الدالة أوردرزيمبول ()) بين جميع الطلبات فقط تلك التي فتحت للرمز، في الإطار الذي يتم إسقاط السيناريو. ثم يجب أن نجد أسعار مفتوحة لجميع أوامر السوق المحددة (أي تنفيذ وظيفة أورديروبنبريس () تباعا لكل أمر). معرفة النظام بأسعار مفتوحة، يمكننا بسهولة اختيار واحد منهم أن يتوافق مع بيان المشكلة. لتحديد القيم الصحيحة للمعلمات في الدالة أوردركلوس ()، سوف نحتاج أيضا إلى معرفة بعض البيانات الأخرى حول الترتيب المحدد: كمية اللوت (التي تحددها الدالة أورديرلوتس ()) ورقم الطلب الفريد (الذي يحدده فونكتيون أوردرتيكيت ()). الى جانب ذلك، للعثور على واحد أو آخر سعر الاقتباس في اتجاهين، علينا أن نعرف نوع من النظام (يحدده وظيفة أوردرتيب ()). يتيح النظر في المعلمات التي يجب تحديدها في الدالة أوردرزليكت () للحصول على خصائص الترتيب أعلاه. أولا وقبل كل شيء، فمن الضروري اختيار طريقة اختيار النظام. في مشكلتنا، يتم تحديد طريقة الاختيار من خلال بيان المشكلة نفسه: من المفترض أن تكون البيانات المتعلقة بأرقام الطلب غير متوفرة في البرنامج اعتبارا من لحظة بدء تشغيل البرنامج النصي للتنفيذ، أي يعتبر البرنامج لاحتواء كتلة من شأنها أن حدد أرقام الطلبات هذه. وهذا يعني أنه يجب علينا التحقق من جميع الطلبات واحدا تلو الآخر عرض في كوترمينالكوت (الشكل 64.1)، لذلك علينا استخدام المعلمة سيليكتبيبوس. مصدر لاختيار أوامر واضح، كذلك. لحل المشكلة، ليست هناك حاجة لتحليل أوامر مغلقة ومحذوفة. في هذه الحالة، نحن مهتمون في أوامر السوق فقط، ولذا فإننا سوف البحث فيها باستخدام المعلمة مودترادس في وظيفة أوردرزليكت (). وبالنسبة إلى تجمع المعلمة، تحدد القيمة الافتراضية للموديتراديس في رأس الدالة، بحيث يمكن تخطيها. ويبين الجدول أدناه كيف يمكن بناء كتلة لتحليل أوامر السوق والمعلقة: في عنوان مشغل الدورة، تحدد القيمة الأولية ك I1، في حين أن شرط الخروج من الدورة هو التعبير إيلتوردرزتوتال (). فونكتيون أوردرزتوتال () ترجع إجمالي مبلغ السوق والأوامر المعلقة، أي تلك الأوامر التي تظهر في علامة التبويب كوترادوكوت من نافذة كوترمينالكوت. هذا هو السبب في أنه سيكون هناك العديد من التكرارات في دورة العديد من أوامر المشاركة في التداول. في كل تكرار، عندما يتم حساب الشرط في المشغل إذا، سيتم تنفيذ الدالة أوردرزليكت (i-1، سيليكتبيبوس). يجب ملاحظة الأمر المهم التالي: ترقيم الأوامر في قائمة السوق والأوامر المعلقة يبدأ بالصفر. وهذا يعني أن الترتيب الأول في القائمة (الشكل 90) يوضع في موضع الصفر، وموقف المرتبة الثانية هو 1، أن من الترتيب الثالث هو رقم 2، الخ هذا هو السبب، في وظيفة استدعاء أوردرسلكت ()، وتعطى قيمة المؤشر كما i-1. وهكذا، بالنسبة لجميع الطلبات المختارة، سيكون هذا المؤشر دائما أقل من قيمة المتغير i (الذي يتزامن مع عدد التكرار التالي). ترجع الدالة أوردرزليكت () ترو، إذا تم تحديد الطلب بنجاح. وهذا يعني أنه من الممكن أن اختيار أمر يمكن أن تفشل. هذا يمكن أن يحدث، إذا كان مقدار أوامر تغيرت أثناء معالجتها. عند البرمجة في MQL4، يجب أن نتذكر جيدا أن برنامج التطبيق سوف تعمل في وضع في الوقت الحقيقي وأنه، في حين أنه يتم معالجة بعض المعلمات، قد تتغير قيم هذه المعلمات. على سبيل المثال، يمكن أن تتغير كمية أوامر السوق نتيجة لكل من فتح الأوامر وتعديل الأوامر المعلقة إلى الأسواق. هذا هو السبب في أنه يجب أن تبقي على القاعدة التالية عند معالجة معالجة النظام: يجب معالجة الطلبات في أقرب وقت ممكن، في حين أن كتلة البرنامج المسؤولة عن هذه المعالجة يجب أن تحتوي، إن أمكن، على خطوط برنامج زائدة عن الحاجة. وفقا للرمز الممثلة في الشكل 64.3، في رأس المشغل إذا، يقوم البرنامج بتحليل ما إذا كان الترتيب التالي متوفرا في قائمة الأوامر في الوقت الذي يتم فيه تحديده. إذا كان النظام المقبل هو متاح، سيتم تمرير عنصر التحكم في الجسم من المشغل إذا لمعالجة المعلمات النظام. وتجدر الإشارة إلى أن مثل هذا البناء لا يساعد كثيرا، في حالة الصراعات المحتملة، لأن النظام يمكن أن تضيع (مغلقة) أثناء معالجة المعلمات لها. ومع ذلك، هذا الحل تبين أن تكون أكثر كفاءة إذا، اعتبارا من لحظة اختيارها، والنظام غير متوفر بعد الآن. في الجسم من المشغل إذا، يتم تحليل المعلمات من النظام المحدد. عند تنفيذ الدالات أورديروبنبريس ()، أوردرتيكيت ()، أورديرتيب () وغيرها من النوع، كل واحد منهم سيعود قيمة سمة معينة من الترتيب المحدد نتيجة لتنفيذ الدالة أوردرزليكت (). تم استخدام كل الاستدلال أعلاه في البرنامج الذي من شأنه أن يحل المشكلة 28. مثال على نص بسيط يهدف إلى إغلاق نظام السوق، سعره المفتوح هو أقرب إلى موقع مرفق البرنامج النصي من الأسعار المفتوحة لأوامر أخرى (closeorder. mq4). وتتركز التعليمات البرمجية بأكملها من البرنامج closeorder. mq4 في بدء وظيفة خاصة (). في كتلة 1-2، يتم تهيئة بعض المتغيرات. المتغير ديست هو المسافة من الموقع حيث تم إسقاط البرنامج النصي إلى أقرب ترتيب. المتغير ريلوردر هو العلم الذي يعرض توافر نظام سوق واحد على الأقل في محطة العميل (قيمة غير سالبة). المتغير وينبريس هو السعر، الذي يعلق المستخدم السيناريو على نافذة الرمز. في الكتلة 2-6، يتم تحليل الطلب: يتم تعيين أحد الأوامر المتاحة ليتم إغلاقها. كتلة 6-10 هي كتلة إغلاق النظام ومعالجة الأخطاء التي يمكن أن تحدث أثناء أداء التجارة. بدءا من اللحظة التي يعلق فيها المستخدم السيناريو على نافذة الرمز، يتم حساب قيم المتغيرات في كتلة 1-2، المتغير وينبريس أخذ قيمة السعر، على مستوى الذي يعلق المستخدم السيناريو. من الضروري الآن العثور على النظام (مع خصائصه) الأقرب إلى هذا الموقع. في دورة ل (كتلة 2-6)، يتم البحث في أوامر. في كتلة 2-3، يتحقق البرنامج ما إذا كان هناك أمر في السطر التالي من كوترمينالكوت. إذا تم العثور على أمر، يتم تمرير عنصر التحكم إلى الجسم من المشغل إذا للحصول على وتحليل خصائص هذا النظام. في الكتلة 3-4، يتم تصفيتها أوامر فتح لرموز خاطئة (وليس الرمز، الذي يتم تنفيذ البرنامج). في حالتنا، فمن أجل 4372930 فتحت أوسشف. يقوم الدالة أوردسيمبول () بإرجاع اسم الرمز للترتيب المحدد. إذا كان اسم الرمز هذا بخلاف ذلك، الذي يتم تنفيذه البرنامج، يتم كسر التكرار الحالي، منع فتح الطلب لرمز آخر من معالجتها. إذا تبين أن الأمر قيد التحليل ليتم فتحه لرمز كوتوركوت، سيتم إجراء فحص واحد أكثر. يتم تحديد نوع الأمر باستخدام الدالة أوردرتيب () (راجع أنواع الصفقات). إذا تبين أن نوع الطلب أكثر من 1، فهذا يعني أن الأمر معلق. في هذه الحالة، تتوقف التكرار الحالي أيضا، لأننا غير مهتمين بالأوامر المعلقة. في مثالنا، لدينا مثل هذا الأمر، ولكن يتم فتحه لرمز آخر، لذلك تم بالفعل تصفيتها. جميع الطلبات التي تمرير كتلة 3-4 بنجاح منها السوق. بلوك 4-5 مخصص لاختيار أمر واحد فقط من جميع أوامر السوق التي اجتازت الفكرة السابقة بنجاح. يجب أن يكون هذا الطلب الأقرب إلى السعر المحدد مسبقا (قيمة المتغير وينبريس). ليس مطلوبا من المستخدم ل كوتينبوانتكيوت خط النظام مع له أو لها مؤشر الماوس. سيتم تحديد الترتيب الذي هو أقرب من أي أوامر أخرى إلى المؤشر اعتبارا من لحظة إطلاق البرنامج النصي للتنفيذ. يتم العثور على السعر المفتوح للطلب الذي تمت معالجته باستخدام الدالة أورديروبنبريس (). وإذا كانت القيمة المطلقة للمسافة بين سعر النظام الحالي والسعر المقطوع أقل من نفس المسافة بالنسبة للنظام السابق، فسيتم اختيار الترتيب الحالي (القيمة المطلقة للمسافة ضرورية لاستبعاد تأثير وضع المؤشر - تحت أو فوق خط الطلب). في هذه الحالة، سيتم حفظ هذا الترتيب في التكرار الحالي للدورة لكونها عداء الجبهة ليتم إغلاقها. لهذا الترتيب، يتم احتساب رقم التذكرة (العدد الفردي للنظام) وكمية اللوت في نهاية الكتلة 4-5. في هذا المثال (الشكل 90)، فإن المبلغ الإجمالي للأوامر هو أربعة (ثلاثة منها السوق وأمر واحد في انتظار)، لذلك سيكون هناك أربعة تكرارات تنفيذها في دورة ل، الأمر الذي سيؤدي إلى العثور على جميع البيانات اللازمة لإغلاق واحد النظام المحدد. ثم سيتم تمرير عنصر التحكم في برنامج التنفيذ إلى مشغل الدورة بينما (كتلة 6-10). في الكتلة 6-7، يتم التحقق من أوامر السوق التي تم العثور عليها. إذا لم يتم العثور على أوامر السوق في كتلة 2-4 (فمن الممكن جدا، بشكل عام)، قيمة ريلوردر العلم لا يزال مساويا -1، مما يعني عدم توافر أوامر السوق. إذا كشف في الكتلة 6-7 لا يكتشف أوامر السوق، وتنفيذ دورة بينما يتم كسر، البرنامج ثم ينتهي عملياته. إذا تبين أن قيمة المتغير ريالوردر تساوي 0 أو 1، فهذا يعني أن السوق محدد مسبقا للإغلاق ويجب إغلاقه. في كتلة 7-8، وفقا لنوع النظام، يتم احتساب سعر إغلاق النظام. وهي قيمة المزايدة لشراء أوامر، وقيمة طلبات البيع للبيع (انظر المتطلبات والقيود في جعل الصفقات). في الكتلة 7-8، يتم حساب قيم المتغير المساعد. طلب التجارة لإغلاق النظام يتم تشكيله في الدالة أوردركلوس () في السطر التالي: الدالة التجارية أورديركلوس () ترجع ترو، إذا تم إجراء الصفقة بنجاح، و كاذبة، إن لم يكن. إذا تم تنفيذ طلب التجارة بنجاح على الملقم، سيتم تعيين القيمة الحقيقية للمتغير أنس (الجواب). في هذه الحالة، عند تنفيذ كتلة 8-9، سيقوم البرنامج بإعلام المستخدم حول إغلاق النظام الناجح. بعد ذلك، سيتم إيقاف تنفيذ دورة المشغل بينما سيتم إنهاء البرنامج عملياته. وإلا، سيتم تمرير عنصر التحكم لمنع 9-10 من أجل تحليل الخطأ الذي تم إرجاعه من قبل محطة العميل إلى البرنامج. في بداية الكتلة 9-10، يتم حساب رمز الخطأ. بعد ذلك، وفقا لرمز الخطأ، يتم تنفيذ إما خروج البرنامج أو العملية المتكررة. في مفتاح التشغيل الأول، يقوم البرنامج بمعالجة الأخطاء التي تكون مفرطة ضمنا، أي يمكن اعتبار الأخطاء صعوبات مؤقتة في أداء التجارة. يتم اتخاذ كافة الإجراءات اللازمة لكل من هذه الأخطاء، ثم يتم إيقاف التكرار الحالي وتنفيذ الدورة أثناء إعادة تشغيل. (يرجى ملاحظة أنه في هذا المثال الذي نستخدمه في معالجة الخطأ يتم استبدال مفتاح التشغيل الذي تم الخروج منه نتيجة لاستخدام المشغل، على هذا النحو، ليس من أجل تمرير عنصر التحكم خارج مفتاح التشغيل، فقط لأن مفتاح المشغل هو جزء من محتويات مشغل الدورة الخارجية بينما يستمر المشغل في مقاطعة التكرار الحالي عن طريق تمرير عنصر التحكم إلى رأس المشغل أثناء). إذا لم تتم معالجة رمز الخطأ في مفتاح التشغيل الأول، يعتبر هذا الخطأ حاسما. في هذه الحالة، يتم تمرير عنصر التحكم إلى مفتاح التشغيل الثاني، الذي يتم تنفيذه من أجل إعلام المستخدم بأنه حدث خطأ حاسم أو آخر. وعلاوة على ذلك، يستخدم البرنامج كسر المشغل الذي يقطع تنفيذ دورة بينما. الخروج من الدورة في حين، لأي سبب من الأسباب، سوف يؤدي إلى تمرير عنصر التحكم لمنع 9-10 التي تنتج رسالة حول نهاية عمليات البرنامج. عودة المشغل توقف تنفيذ بدء وظيفة خاصة ()، وينتهي البرنامج عملياته. والنتيجة العملية التي تم الحصول عليها بعد إطلاق النص تحت الشروط المذكورة (انظر الشكل 90 و 91) مبينة أدناه. تم إجراء التجارة بنجاح على الخادم. نتيجة لإغلاق أحد الأوامر، هناك أمرين اليسار في نافذة يوروس. كما تم عرض إغلاق الطلب في نافذة كوترمينالكوت: الشكل 94. بعد تنفيذ البرنامج وثيق closeorder. mq4. يتم عرض اثنين من أوامر السوق في إطار كوترمينالكوت. وفي وقت لاحق، يتم إغلاق الأمرين الآخرين باستخدام هذا البرنامج النصي أيضا. حذف الطلبات المعلقة يتم تشكيل الطلبات التجارية لحذف الأوامر المعلقة باستخدام الدالة أوردرديليت (). فونكتيون أوردرديليت () تقوم الدالة بحذف الطلب الذي تم وضعه في انتظار المراجعة. فإنه يعود ترو، إذا كان قد نجحت بنجاح. وإلا، فإنها ترجع فالس. تذكرة - رقم فريد من أمر. أروكولور - لون السهم في المخطط. إذا كانت هذه المعلمة غير متوفرة أو قيمته تساوي قيمة كلرنون، فلن يتم عرض السهم في المخطط. من السهل أن نرى أن الدالة أوردرديليت () لا تحتوي على مواصفات حجم وسعر إغلاق النظام المراد حذفه. يتم حذف الطلب بغض النظر عن أي أسعار السوق. حذف جزء من أمر مستحيل أيضا. يمكنك تقليل كمية الكثير في أمر معلق على مرحلتين: حذف النظام الموجود ثم وضع أمر معلق جديد مع انخفاض (أي) كمية من الكثير. خوارزمية البرنامج التي سيتم حذف أمر معلق يمكن أن تكون مطابقة تماما لتلك التي من أجل إغلاق السوق. وهناك فرق طفيف في أنه ليس هناك حاجة إلى سعر إغلاق لحذف أمر معلق، وبالتالي فإن البرنامج أدناه لا يحتوي على كتلة تحديث أسعار السوق. مثال على نص بسيط يهدف إلى حذف أمر معلق، السعر المطلوب الذي هو أقرب إلى موقع مرفق البرنامج النصي من أسعار أوامر المعلقة الأخرى (deleteorder. mq4). كما تم تغيير كتلة معالجة الأخطاء بشكل طفيف. يجب أن تنظر في إمكانية حدوث أخطاء تتعلق بتغيرات الأسعار (الأخطاء 135 و 136) عند إغلاق أوامر السوق، ولكن لا تحدث مثل هذه الأخطاء عند حذف الأوامر المعلقة. لنفس السبب، يتم استخدام وظيفة ريفريشراتس () في أي مكان في البرنامج. يمكن معالجة مثل هذه الأخطاء كخطأ 4 والخطأ 137 (انظر رموز الخطأ) يكون من الصعب بعض الشيء. على سبيل المثال، عند الحصول على الخطأ 137، يمكن للبرنامج أن يأخذ في الاعتبار أن الوسيط هو بوسيكوت. ومع ذلك، فإن السؤال الطبيعي ينشأ: عندما يكون الوسيط مجانا، للمستخدم لمواصلة له أو لها تداول خطأ 137does لا توفر مثل هذه المعلومات. هذا هو السبب في مبرمج يجب أن يقرر له أو نفسها كيفية بناء معالجة البرنامج مثل هذه الأخطاء بشكل صحيح. في حالة بسيطة، يمكن تكرار الطلب بعد وقفة معينة (في مثالنا، في 3 ثوان). من ناحية أخرى، بعد سلسلة من المحاولات غير الناجحة لحذف (أو، في حالة مشتركة، لإغلاق أو فتح أو تعديل) أمر، الملقم قد يرجع الخطأ 141 - الكثير من الطلبات. يؤدي هذا الخطأ إلى أن البرنامج النصي deleteorder. mq4 يتوقف عن العمل. وعموما، فإن هذه النزاعات ليست مسائل البرمجة. في مثل هذه الحالات، يجب عليك الاتصال بخدمة دعم مراكز التعامل وتوضيح أسباب رفض تنفيذ الطلب التجاري. يمكن أن يحدث خطأ 145، إذا كان أمر معلق (في حالة شائعة، يمكن أن يكون أمر وقف لأمر السوق) قريب جدا من سعر السوق. هذا الخطأ لا يحدث، إذا كنت تتداول باطراد في سوق هادئة. إذا تغيرت الأسعار بسرعة، قد يقرر الوسيط الخاص بك أنه سيتم فتح طلب معين قريبا، وبالتالي فإن الوسيط لن يسمح لحذف أو تعديله. ويعتبر هذا الخطأ في البرنامج النصي باعتبارها واحدة حاسمة والنتائج في إنهاء البرنامج (فإنه لا يجعل أي معنى لإزعاج الوسيط مع طلبات التجارة). إذا تغير السعر بعد فترة من الوقت، يمكنك محاولة حذف الطلب من خلال تشغيل البرنامج النصي للتنفيذ مرة أخرى. بشكل عام، يمكن منع حدوث الخطأ 145، إذا كنت تعتبر مستوى التجميد الذي يحدده مركز التعامل. مستوى التجميد هو قيمة تحدد نطاق السعر، حيث يعتبر الأمر مجمدا، أي أنه يمكن أن يحظر حذفه. على سبيل المثال، إذا تم وضع أمر معلق في 1.2500 ومستوى التجميد يساوي 10 نقطة، فهذا يعني أنه إذا كان السعر يتراوح من 1.2490 إلى 1.2510، يحظر حذف أمر معلق. يمكنك الحصول على قيمة مستوى التجميد بعد تنفيذ الدالة ماركيتينفو () مع معرف طلب مودفريزليفيل. إغلاق مقابل أوامر مقابل (مكافحة) أمر هو أمر السوق فتح في الاتجاه المعاكس لاتجاه نظام السوق آخر فتح لنفس الرمز. إذا كان لديك أمرين متعاكسين لرمز معين، يمكنك إغلاقها في وقت واحد، واحدا تلو الآخر، باستخدام الدالة أوردركلوسيبي (). يمكنك حفظ واحد انتشار إذا قمت بإجراء مثل هذه العملية. الدالة فونكتيونكلوسيبي () تغلق الدالة أمر سوق واحد بواسطة أمر سوق آخر يفتح لنفس الرمز في الاتجاه المعاكس. ترجع الدالة ترو، إذا تم إكمالها بنجاح، و فالس، إن لم يكن. تذكرة - عدد فريد من أجل أن تكون مغلقة. مقابل - عدد فريد من النظام المعاكس. اللون - لون سهم الإغلاق في الرسم البياني. إذا كانت هذه المعلمة غير متوفرة أو قيمته تساوي قيمة كلرنون، فلن يتم عرض السهم في المخطط. ليس من الضروري أن أوامر المعاكس لها نفس الحجم. إذا قمت بإغلاق أمر من قبل أمر معاكس، سيتم تنفيذ التجارة في حجم النظام الذي يحتوي على حجم أصغر. دعونا نعتبر مثالا. دعونا نكون هناك اثنين من أوامر السوق من نفس الحجم في محطة العميل، واحد شراء واحد بيع. إذا قمنا بإغلاق كل منها بشكل منفصل باستخدام الدالة أوردركلوس ()، فإن ناتجنا الاقتصادي سيكون مجموع الأرباح التي تم الحصول عليها من كل أمر: الشكل 95. نتيجة إغلاق أوامر منفصلة باستخدام الدالة أوردركلوس (). ومع ذلك، إذا استخدمنا في هذه الحالة الدالة أوردركلوسيبي () المخصصة للإغلاق المعاكس للأوامر، فإن الناتج الاقتصادي سيكون أفضل (بالمقارنة مع البديل السابق) بالمبلغ النسبي لتكلفة انتشار أمر واحد: الشكل 96. نتيجة إغلاق أوامر أوامر أخرى باستخدام الدالة أوردركلوسيبي (). ومن الواضح أنه إذا كان هناك أوامر المعاكس أن تكون مغلقة في المحطة، سيكون من الناحية الاقتصادية سليمة لاستخدام الدالة أوردركلوسيبي ()، وليس أوردركلوس (). من أجل توفير انتشار عند إغلاق أوامر المعاكس، يجب أن نقدم بعض التفسيرات أكثر عمومية. في الواقع، فتح أمر (على سبيل المثال، أمر الشراء) هو ضمنا التجارة التي هي عكس فتح أمر في الاتجاه المعاكس (أي أمر بيع) إلى نفس الدرجة كما إغلاق النظام (شراء طلب). وبعبارة أخرى، فمن الناحية الاقتصادية هي نفسها التي من بدائل الاستخدام: فقط لإغلاق نظام السوق أو لفتح أمر معاكس من نفس الحجم (ومن ثم إغلاق كل من أوامر من قبل بعضها البعض). والفرق بين هذين البديلين لا يمكن أن يتألف إلا من طرائق مختلفة تستخدم في مراكز تعامل مختلفة لحساب الأموال الواجب تحويلها لدعم أوامر السوق (انظر الشكل 85 والشكل 88). ومن السهل أيضا أن نرى أن سعر الإغلاق ليس من الضروري أن يتم تحديدها في الدالة أوردركلوسيبي () لإغلاق أوامر المعاكس. فمن غير الضروري، لأن الربح وفقدان اثنين من أوامر المعاكس تسديد متبادل، وبالتالي فإن الناتج الاقتصادي الإجمالي لا يعتمد على سعر السوق. وبطبيعة الحال، هذه القاعدة فعالة فقط لأوامر من نفس الحجم. إذا، على سبيل المثال، لدينا أمرين لرمز واحد: أمر شراء من 1 لوت وبيع أمر من 0.7 لوت، هذه التجارة يعتمد فقط على سعر السوق فيما يتعلق جزء أمر الشراء من 0.3 لوت، في حين أن 0.7 الكثير من كلا أوامر لا تعتمد على سعر الرمز. أوامر المعاكس لا تؤثر على إجمالي نتائج التداول. هذا هو السبب في أن تكتيكات التداول القائمة على فتح أوامر عكسية لا تحتوي على أي محتويات غير رسمية (لهذا السبب، بعض مراكز التعامل بإغلاق قسري أي أوامر عكسية ضمن كميات متزامنة من الكثير). وقد يكون التأثير الوحيد (السلبي) لهذه التكتيكات في تحويل الأموال وفقا للقواعد المقبولة في بعض مراكز التعامل. إلى جانب ذلك، توفر العديد من الأوامر المعاكسة المزيد من الصعوبات في سياق التداول المبرمج، من أمر واحد. إذا نظرنا في مختلف العمولات والمقايضات (لكل نظام السوق بشكل منفصل)، وضرورة إغلاق أوامر المعاكس يصبح واضحا. مثال على نص بسيط يغلق جميع الأوامر العكسية لرمز (closeby. mq4). خوارزمية النص أعلاه تختلف قليلا عن تلك السابقة. هذا الاختلاف يتكون من أن نفس التعليمات البرمجية يجب أن تنفذ عدة مرات من أجل إغلاق عدة أوامر (كمية أوامر ليتم إغلاقها في غير محدود) بنجاح. تم اختبار البرنامج النصي على مجموعة عشوائية من أوامر السوق. وترد في الشكل 97 أدناه 5 أوامر من وحدات تخزين مختلفة. من أجل إغلاق أوامر المعاكس المتاحة، يجب علينا أن نحدد مسبقا معايير الاختيار. هذا المعيار في خوارزمية معينة هو حجم النظام - أوامر من أحجام أكبر يتم إغلاق أولا، ثم يتم إغلاق أوامر أحجام أصغر. بعد أن تم إغلاق الأوامر المقابلة من وحدات التخزين المختلفة، تبقى أوامر من حجم يستريح. على سبيل المثال، فإن إغلاق أوامر المعاكس شراء (1 وحدة) وبيع (0.8 الكثير) يؤدي إلى أن النظام شراء (0.2 لوت) لا يزال مفتوحا. هذا هو السبب، بعد كل إغلاق ناجح، يجب أن يشير البرنامج إلى قائمة محدثة من أوامر للعثور على اثنين من أكبر أوامر المعاكس الأخرى في هذه القائمة المحدثة. تتحقق الحسابات أعلاه في دورة (مشروط) مستمرة بينما، في كتل 2-10. بداية الدورة، في كل تكرار البرنامج يفترض أنه لا توجد أوامر من نوع معين بعد الآن. لهذا، يتم تعيين قيمة -1 للمتغيرات هيدغبوي و هدجزيل. يتم الحفاظ على خوارزمية كتلة معالجة الطلبات بشكل عام (راجع كود closeby. mq4). في دورة البحث عن الترتيب ل، وهي في كتلة 3-4، كما هو الحال في البرامج السابقة، يتم تصفية أوامر كوتورونغكوت بها. في هذه الحالة، هذه هي أوامر فتح لرمز آخر والأوامر المعلقة. في كتلة 4-5، يتم حساب حجم كل أمر فحص في كتلة 3-4. إذا اتضح أثناء الحسابات أن الترتيب الذي تتم معالجته حاليا هو الأكبر في الحجم بين جميع الطلبات التي تمت معالجتها، يتم تخزين التذكرة. وهذا يعني أن ترتيب وجود هذه التذكرة، في هذه المرحلة من الحسابات، مرشح لإغلاق أوامر المعاكس. في اللحظة التي كانت فيها التكرار الأخير لدورة التشطيبات، فإن تذاكر الأوامر بأكبر قدر ممكن من القطع المفتوحة في اتجاهات متعاكسة معروفة بالفعل. يتم اختيار هذه الأوامر من قبل البرنامج. إذا كان أي أوامر من أي نوع أصبحت بالفعل غير متوفرة في هذه اللحظة، كتلة 5-6 خروج البرنامج. يمثل المربع 6-10 معالجة الأخطاء. هو تماما نفس تلك المذكورة أعلاه (في هذه الأقسام السابقة). يتم تشكيل طلب التجارة لإغلاق أوامر المعاكس في كتلة 7-8 باستخدام الدالة أوردركلوسيبي (). إذا فشل، وفقا لرمز الخطأ، البرنامج يمر عنصر التحكم إما لإعادة محاولة جعل التجارة (لنفس التذاكر) أو لعودة المشغل الذي ينتهي عمليات البرنامج. إذا تم تنفيذ التجارة بنجاح، البرنامج يخرج كتلة معالجة الأخطاء، والتكرار الحالي من معظم دورة خارجية في حين ستنتهي. والتكرار التالي لهذه الدورة، وسوف تتكرر جميع الحسابات: البحث في أوامر المتاحة، واختيار أوامر السوق، واختيار واحد تيكيد لكل من أنواع النظام، وتشكيل طلب التجارة لإغلاق المعاكس، وتحليل الخطأ اللاحقة. يتم تنفيذ هذه الدورة حتى لا تكون هناك أوامر متوفرة من نوع معين (أو في حالة معينة من كلا النوعين) في المحطة. سيتم حساب هذا الحدث في كتلة 5-6، ثم ينتهي البرنامج عملياته. تم استلام الرسائل التالية عند تنفيذ البرنامج النصي closeby. mq4 المخصص لإغلاق أوامر السوق الموضح في الشكل 97: في علامة التبويب كاكونت هيستوريكوت من نافذة كوترمينالكوت، يمكنك أن ترى أن بعض الطلبات يتم إغلاقها مع ربح صفر. هذا هو ما نقوم بحفظه عند إغلاق أوامر المعاكس. يمكنك مقارنة النتائج الاقتصادية في الشكل 97 والشكل 99: في علامة التبويب كوجورنالكيوت في نافذة كوترمينالكوت، يمكنك تتبع تاريخ إغلاق النظام (آخر الأحداث على أعلى): تنفيذ البرنامج النصي، وفقا للخوارزمية ، سيتم إغلاق أوامر الحد الأقصى لحجم المتاحة في الوقت الراهن. على الرغم من أن أوامر فتحت في تسلسل عشوائي (الشكل 97)، وكانت الأوامر الأولى التي سيتم إغلاقها شراء 778594 وبيع 778595، مع أحجام 1 لوت و 0.8 لوت، على التوالي (الخطوط السفلية في الشكل 100). منذ هذه الأوامر لها أحجام مختلفة، وإغلاق عكس إنتاج النظام الجديد، شراء 778597، مع حجم يستريح من 0.2 لوت. ثم البرنامج المحدد أوامر شراء 778592 وبيع 778593، 0.5 الكثير لكل منهما، ليتم إغلاقها على عكس أوامر. وأغلقت هذه الطلبات دون فتح أمر يستريح. وبحلول لحظة التكرار الثالث بدأت، ظلت طلبيتين في نافذة الرمز في الدورة الخارجية: النظام الأولي بيع 778596 من 0.3 لوت والنظام فتح نتيجة لتنفيذ السيناريو، شراء 778597 من 0.2 لوت. في الأسطر العليا من الشكل 100، يمكنك أن ترى أن تلك الأوامر هي أيضا مغلقة كما أوامر المعاكس. وكانت أحجام هذه الأوامر مختلفة، وبالتالي فإن التجارة الأخيرة أدت إلى أن نظام السوق واحد من 0.1 لوت ظلت في نافذة الرمز (يرجى ملاحظة النتائج الاقتصادية): فمن المريح لاستخدام النصي closeby. mq4 في التداول اليدوي، وخاصة في حالات العديد من أوامر السوق الموجهة بشكل مختلف المتاحة في نافذة الرمز.

No comments:

Post a Comment