نظام التداول أومل

نظام التداول أومل

خيارات الأسهم بأقل من قيمتها
خيارات الأسهم توربوتاكس
نظام تداول العملات الأجنبية الربح


إشارة فوركس يوروس إشارات مركز التداول أفضل 100 وسطاء خيار ثنائي تي إيناي تداول العملات الأجنبية خيارات الأسهم 911 وظائف أنظمة التداول المطور

استخدام مخططات الحالة. استخدام مخططات الحالة. بالإضافة إلى إدخال حالات الاستخدام كعناصر أساسية في تطوير البرمجيات، كما قدم جاكوبسون (1994) مخططا لتصور حالات الاستخدام. مخطط حالة الاستخدام هو أيضا جزء من أومل. كثير من الناس يجدون هذا النوع من الرسم البياني مفيدا. ومع ذلك، لا بد لي من التأكيد على أنك لا تحتاج إلى رسم مخطط لاستخدام حالات الاستخدام. واحدة من المشاريع الأكثر فعالية وأنا أعلم أن استخدام حالات الاستخدام تنطوي على حفظ كل واحد على بطاقة فهرس وفرز البطاقات إلى أكوام لإظهار ما تحتاجه البناء في كل التكرار. ويبين الشكل 3-2 بعض حالات الاستخدام لنظام التداول المالي. الشكل 3-2. استخدم الرسم البياني. الممثل هو دور يقوم به المستخدم فيما يتعلق بالنظام. هناك أربعة جهات فاعلة في الشكل 3-2: مدير التداول، المتداول، مندوب المبيعات، ونظام المحاسبة. (نعم، أنا أعلم أنه سيكون من الأفضل استخدام كلمة "دور"، ولكن على ما يبدو، كان هناك سوء تفسير من السويدية.) ومن المحتمل أن يكون هناك العديد من التجار في المنظمة المعنية، ولكن فيما يتعلق بالنظام، فإنهم جميعا يلعبون نفس الدور. يمكن للمستخدم أيضا أن يلعب أكثر من دور واحد. على سبيل المثال، أحد كبار المتداولين قد يلعب دور مدير التداول ويكون أيضا تاجر عادي؛ قد يكون التاجر أيضا مندوب مبيعات. عند التعامل مع الفاعلین، من المھم التفکیر في الأدوار بدلا من الأشخاص أو الألقاب المھنیة. الجهات الفاعلة تنفذ حالات الاستخدام. قد يقوم ممثل واحد بالعديد من حالات الاستخدام؛ وعلى العكس من ذلك، قد يكون لحالة استخدام العديد من الجهات الفاعلة أداء ذلك. في الممارسة العملية، أجد أن الجهات الفاعلة هي الأكثر فائدة عند محاولة التوصل إلى حالات الاستخدام. في مواجهة نظام كبير، قد يكون من الصعب في كثير من الأحيان التوصل إلى قائمة من حالات الاستخدام. ومن الأسهل في تلك الحالات الوصول إلى قائمة الجهات الفاعلة أولا، ثم محاولة وضع حالات الاستخدام لكل فاعل. لا يحتاج الممثلون إلى أن يكونوا إنسانيين، على الرغم من تمثيل الممثلين كأرقام عصا في الرسم البياني لحالة الاستخدام. ويمكن أن يكون الفاعل أيضا نظاما خارجيا يحتاج إلى بعض المعلومات من النظام الحالي. في الشكل 3-2، يمكننا أن نرى الحاجة إلى تحديث الحسابات لنظام المحاسبة. هناك العديد من الاختلافات حول ما يظهره الناس كممثلين. بعض الناس تظهر كل نظام خارجي أو الممثل البشري على الرسم البياني حالة الاستخدام. والبعض الآخر يفضلون إظهار البادئ من حالة الاستخدام. أنا أفضل أن تظهر الممثل الذي يحصل على قيمة من حالة الاستخدام، والتي بعض الناس يشير إلى الممثل الأساسي. ومع ذلك، أنا لا تأخذ هذا بعيدا جدا. أنا سعيد لرؤية نظام المحاسبة الحصول على قيمة، دون محاولة لمعرفة الممثل البشري الذي يحصل على قيمة من نظام المحاسبة سوف تنطوي على نمذجة النظام المحاسبي نفسه. ومع ذلك، يجب أن تسأل دائما حالات الاستخدام مع الجهات الفاعلة في النظام، ومعرفة ما هي أهداف المستخدمين الحقيقية، والنظر في طرق بديلة لتحقيق تلك الأهداف. عندما أعمل مع الممثلين واستخدام الحالات، أنا لا تقلق كثيرا حول ما هي العلاقات الدقيقة فيما بينها. معظم الوقت، ما أنا حقا بعد هو حالات الاستخدام. فإن الجهات الفاعلة ليست سوى وسيلة للوصول إلى هناك. طالما أنا الحصول على جميع حالات الاستخدام، وأنا لست قلقا بشأن تفاصيل الجهات الفاعلة. هناك بعض الحالات التي يمكن أن يكون من المفيد تتبع الجهات الفاعلة في وقت لاحق. قد يحتاج النظام إلى تهيئة لأنواع مختلفة من المستخدمين. في هذه الحالة، كل نوع من المستخدمين هو ممثل، وحالات الاستخدام تظهر لك ما يحتاج كل فاعل القيام به. يمكن أن يساعدك تتبع من يريد حالات الاستخدام على التفاوض على الأولويات بين مختلف الجهات الفاعلة. ولا توجد في بعض حالات الاستخدام صلات واضحة مع جهات فاعلة محددة. النظر في شركة المرافق. ومن الواضح أن واحدة من حالات استخدامها هو إرسال فاتورة. ليس من السهل جدا التعرف على الممثل المرتبط، ومع ذلك. لا يطلب أي دور مستخدم معين فاتورة. يتم إرسال الفاتورة إلى العميل، ولكن العميل لن يعترض إذا لم يحدث. إن أفضل تخمين لدى أحد الممثلين هنا هو قسم الفوترة، حيث يحصل على قيمة من حالة الاستخدام. ولكن الفواتير لا تشارك عادة في اللعب من حالة الاستخدام. كن على علم بأن بعض حالات الاستخدام لن تخرج نتيجة لعملية التفكير في حالات الاستخدام لكل فاعل. إذا حدث ذلك، لا تقلق كثيرا. الشيء المهم هو فهم حالات الاستخدام وأهداف المستخدمين التي تلبيها. وثمة مصدر جيد لتحديد حالات الاستخدام هو الأحداث الخارجية. التفكير في جميع الأحداث من العالم الخارجي الذي تريد الرد. حدث معين قد يسبب رد فعل النظام الذي لا ينطوي على المستخدمين، أو أنه قد يسبب رد فعل في المقام الأول من المستخدمين. تحديد الأحداث التي تحتاج إلى الرد عليها سوف تساعدك على تحديد حالات الاستخدام. استخدام علاقات الحالة. بالإضافة إلى الروابط بين الجهات الفاعلة وحالات الاستخدام، يمكنك إظهار عدة أنواع من العلاقات بين حالات الاستخدام. تحدث العلاقة تضمين عندما يكون لديك جزء من السلوك الذي يشبه أكثر من حالة استخدام واحد وكنت لا تريد أن تبقي نسخ وصف هذا السلوك. على سبيل المثال، يتطلب كل من "تحليل المخاطر" و "صفقة الأسعار" تقييم الصفقة. وصف وصف الصفقة ينطوي على جزء عادل من الكتابة، وأنا أكره نسخ ولصق. لذلك أنا فصلت حالة استخدام قيمة الصفقة منفصلة لهذا الوضع، وأشار إليها من حالات الاستخدام الأصلي. يمكنك استخدام تعميم حالة الاستخدام عندما يكون لديك حالة استخدام واحدة مشابهة لحالة استخدام أخرى ولكن أكثر قليلا. في الواقع، وهذا يعطينا طريقة أخرى لالتقاط السيناريوهات البديلة. في مثالنا، حالة الاستخدام الأساسي هي كابتشر ديل. وهذا هو الحال الذي يسير فيه كل شيء بسلاسة. ولكن الأمور يمكن أن تخل بالسلاسة على صفقة. واحد هو عندما يتم تجاوز الحد الأقصى على سبيل المثال، الحد الأقصى للمبلغ الذي أنشأته منظمة تجارية لعميل معين. نحن هنا لا تؤدي السلوك المعتاد المرتبطة حالة الاستخدام المعطى. نقوم بتنفيذ بديل. ويمكننا أن نضع هذا الاختلاف ضمن حالة استخدام صفقة الالتقاط كبديل، كما هو الحال مع حالة شراء منتج ما وصفته سابقا. ومع ذلك، قد نشعر بأن ھذا البدیل مختلف بما فیھ الکفایة لاستحقاق حالة استخدام منفصلة. وضعنا المسار البديل في حالة استخدام المتخصصة التي تشير إلى حالة استخدام قاعدة. يمكن لحالة الاستخدام المتخصصة تجاوز أي جزء من حالة الاستخدام الأساسي، على الرغم من أنه يجب أن يكون على وشك تحقيق هدف المستخدم الأساسي نفسه. العلاقة الثالثة، التي لم تظهر في الشكل 3-2، يسمى تمديد. أساسا، وهذا يشبه التعميم ولكن مع المزيد من القواعد لذلك. مع هذا البناء، قد توسع حالة الاستخدام إضافة السلوك إلى حالة استخدام قاعدة، ولكن هذه المرة يجب أن حالة استخدام قاعدة تعلن بعض "نقاط التمديد"، وتمديد استخدام حالة قد إضافة سلوك إضافي فقط في تلك النقاط التمديد. (انظر الشكل 3-3) الشكل 3-3. تمديد العلاقة. قد تحتوي حالة الاستخدام على العديد من نقاط الإرشاد، وقد تمتد حالة الاستخدام الممتدة إلى واحد أو أكثر من نقاط التمديد هذه. يمكنك تحديد أي منها على الخط بين حالات الاستخدام على الرسم التخطيطي. كل من تعميم وتمديد تسمح لك لتقسيم حالة الاستخدام. وأثناء عملية التقسيم، غالبا ما أقسم أي حالة استخدام تكون معقدة للغاية. أنا انقسمت خلال مرحلة البناء من المشروع إذا وجدت أن لا أستطيع بناء حالة استخدام كله في التكرار واحد. عندما انقسام، أود أن تفعل الحالة العادية أولا والاختلافات في وقت لاحق. تطبيق القواعد التالية. يتضمن الاستخدام عند تكرار نفسك في حالتين منفصلتين أو أكثر للاستخدام وتريد تجنب التكرار. استخدم التعميم عندما تصف وصفا للسلوك العادي وترغب في وصفه بشكل عرضي. استخدام تمديد عندما كنت تصف الاختلاف على السلوك العادي وكنت ترغب في استخدام شكل أكثر رقابة، وإعلان نقاط التمديد الخاص بك في حالة استخدام قاعدة الخاص بك. كيفية تطوير مستشار خبير باستخدام أدوات أومل. العلماء التحقيق ما هو بالفعل؛ المهندسين خلق التي لم تكن أبدا. المقدمة. في مقالتي سيمولينك: دليل لمطوري المستشارين الخبراء اقترحت النمذجة مستشار خبير باستخدام النظم الحيوية. ومع ذلك، يمثل هذا النهج جانبا واحدا فقط من مصمم أنظمة التداول - السلوك الديناميكي للنظام. المهنيين لديهم أداة محددة لتوسيع منهجية مطور نظام التداول. في هذه المقالة سوف نناقش كيفية تطوير مستشار الخبراء باستخدام أداة عالمية - لغة أومل رسومية. بشكل عام، كونها لغة رسومية، يستخدم أومل للنمذجة البصرية من أنظمة البرمجيات الكائن المنحى. ولكن، كما أرى، يمكننا استخدام أدواتها لتطوير نظام التداول. وعلاوة على ذلك، MQL5 ينتمي إلى عائلة من لغات وجوه المنحى، وهذا يجعل مهمتنا أسهل. لأغراض النمذجة، اخترت مجانا للبرامج غير التجارية البرمجيات أفكار موديلر. كيف يمكن أن يساعد أومل في إنشاء خبير خبير؟ أولا، الرسومات - مشكلة نماذج متعددة الجوانب يمكن حلها باستخدام الصور الرسومية التي تتوفر في اللغة. ثانيا، قابلية القراءة. حتى هو خبير مستشار كبير ومعقد، عالمية من أومل يسمح لتقديم نموذجها باستخدام الرسوم البيانية. كما يقول المطورين من أومل، وميزة محددة للإدراك البشري يكمن في حقيقة أن النص مع الصور هو أكثر سهولة ينظر إليها من نص عارية. دعونا نناقش بإيجاز أساسيات أومل. إذا كنت مهتما في هذا الموضوع، يمكنك معرفة أدوات أومل من العديد من المنشورات التي تتوفر بحرية على شبكة الإنترنت. يمكن عرض هيكل أومل في رسم بياني (الشكل 1). الشكل 1. بنية أومل. وتشمل اللبنات ما يلي: الكيانات (عناصر النموذج)، والعلاقات (التي تربط الأشياء) والرسوم البيانية (التي تمثل نماذج أومل). مخططات أومل تسمح لتصور تمثيل النظام المصمم من وجهات نظر مختلفة. وتشمل الآليات الشائعة ما يلي: المواصفات (وصف الدلالات)، والزينة (تمييز الخصائص الهامة للنموذج)، والانقسامات المشتركة (التجريد وحالاته، واجهات التنفيذ والتنفيذ)، وآليات التمدد (المعوقات والقوالب النمطية والقيم الموسومة). العمارة هي المسؤولة عن العرض الرفيع المستوى للنظام في بيئته. ويمكن وصف معمارية أومل بشكل أفضل من خلال "عرض معماري 4 + 1" (الشكل 2): الشكل 2. 4 + 1 عرض العمارة. وتجدر الإشارة أيضا إلى أن أومل له تسلسل هرمي خاص به من الرسوم البيانية الكنسي (الشكل 3). يستخدم الإصدار 2.2 اللغة 14 نوعا من المخططات أومل. الشكل 3. مخططات أومل الكنسي. وعلاوة على ذلك أقترح النظر في بعض الحالات الخاصة لاستخدام المخططات أومل. وهكذا، يمكننا الانتقال من التجريد إلى متغير معين من استخدام أي من المخططات لأغراض التنمية إي. ومرة أخرى، يساهم مبدأ التصميم متعدد الجوانب لأنظمة التداول، الذي يوفره التسلسل الهرمي لخرائط أومل، في الحل المنهجي والشامل لمهمة إنشاء تيسي. 2.1 استخدام مخططات الحالة. وكما يقول المثل، بداية جيدة هي نصف المعركة. عادة، وإن لم يكن بالضرورة، يبدأ العمل التحليلي مع المخططات حالة الاستخدام. وهو يصف النظام من وجهة نظر المستخدمين. عند إنشائه، يمكننا: تحديد المتغيرات من تيسي استخدام تحديد حدود تيسي تحدد الجهات الفاعلة تيسي العلاقة بين الجهات الفاعلة والإصدارات تيسي. حالة الاستخدام هي قائمة من الخطوات، وعادة ما تحدد التفاعلات بين الدور (المعروف في أومل بأنه "فاعل") ونظام، لتحقيق هدف. يحدد الفاعل "الدور الذي يقوم به المستخدم أو أي نظام آخر يتفاعل مع الموضوع، وقد يمثل الممثلون الأدوار التي يقوم بها المستخدمون البشريون أو الأجهزة الخارجية أو الموضوعات الأخرى. العلاقة هي علاقة دلالية بين العناصر الفردية للنموذج. قد تلاحظ أن هذا النوع من الرسم البياني عام إلى حد ما، ويعكس الطبيعة المفاهيمية لل تيسي، بدلا من تنفيذه. ولكن هذه هي النقطة - الانتقال من عامة إلى محددة، من مجردة إلى ملموسة. من قال أننا لسنا فنانين؟ نرسم صورة، بدءا من الأفكار العامة والرسومات. أولا نرسم السكتات الدماغية في قماش. ثم إضافة الألوان. رسم التفاصيل. لذلك، دعونا نحاول إنشاء مخطط حالة الاستخدام لنظام التداول. كجهات فاعلة مساهمة، لقد اخترت الأدوار التالية: المطور، محلل النظام، مدير المخاطر ومسؤول. وتجدر الإشارة إلى أن هذه الأدوار يمكن أن يقوم بها شخص واحد أو أكثر. ما هي الإجراءات التي يتخذها نظامنا التجاري وما هي الإجراءات المتخذة فيما يتعلق به؟ وهكذا، يمكن للمطور إنشاء وتنفيذ تيسي. بالإضافة إلى ذلك، يمكن له أو هي المشاركة في تحسين تيسي. يحلل محلل النظام تيسي. مدير المخاطر هو المسؤول عن إدارة المخاطر. ويقوم مدير البرنامج برصد العمل العام للمدير الفني. على جانب الإخراج، ونحن نرى أن المستخدم يجعل الربح نتيجة لعمل تيسي. هذا الدور هو مجموع الأدوار مثل التاجر والمستثمر. والمدير وكذلك مدير يشرف على عمل تيسي. يحتوي الرسم البياني على كتلة "نظام التداول". وهي تعبر عن حدود تيسي وتفصلها عن العالم الخارجي. الآن بضع كلمات عن العلاقة بين الجهات الفاعلة وحالات الاستخدام، وكذلك بين الجهات الفاعلة والجهات الفاعلة الأخرى، وحالات الاستخدام وحالات الاستخدام الأخرى. وتمثل معظم العلاقات من قبل الجمعيات، تميزت خط متين. وهذا يعني أن جهة فاعلة معينة تبدأ حالة استخدام. وبالتالي، فإن مدير المخاطر يبدأ عملية إدارة المخاطر، إلخ. والجهات الفاعلة التي تبدأ حالات الاستخدام هي الرئيسية، وتلك التي تستخدم نتائج الإجراءات المرتكبة - هي ثانوية. على سبيل المثال، الممثل الثانوي هو مدير على جانب الإخراج. قد تشير الرابطة إلى أن الممثل يبدأ حالة الاستخدام المناسبة. التعميم يحاكي العموم المناسب للأدوار. التمديد هو نوع من علاقة التبعية بين حالة الاستخدام الأساسي وحالته الخاصة. وتشمل تعريف العلاقة بين حالة الاستخدام الأساسي وحالة الاستخدام الأخرى، التي لا يستخدم سلوكها الوظيفي دائما في الحالة الأساسية، ولكن فقط في ظل ظروف إضافية. ومع ذلك، لاحظ أن الدور الثانوي فيما يتعلق بقضية الاستخدام لا يعني أن هذا الدور ذو أهمية ثانوية. وبالإضافة إلى ذلك، في الرسم البياني نرى أن دور المستخدم تيسي يتكون من أدوار التاجر والمستثمر من خلال علاقات التعميم، كما هو موضح كخط مع "غير مصبوغ" رأس السهم الثلاثي. الشكل 4. مخطط حالة الاستخدام لل تيسي. حالات الاستخدام "موقف فتح" و "موقف إغلاق"، بدوره، ترتبط عن طريق تعميم مع "التداول". وهذه الحالة الأخيرة هي القاعدة بالنسبة للاثنتين الأخريين. وهكذا، فإنه يشمل حالة استخدام "إدارة المخاطر". وسلوكها مكمل للحالة التابعة "الربح". بما أن ربح تيسي يتم تكوينه بشرط أن يكون سعر بيع الأصل أكبر من سعر الشراء، فقد استخدمت علاقة التمديد لهذه الحالات. ويظهر الرسم البياني أيضا نقطة التمديد، أي شرط محدد، تستخدم بموجبه الحالة "إلى الربح". يتم عرض علاقات التبعية من خلال خط متقطع مع سهم مع الصور النمطية المقابلة "تشمل" و "تمديد". لكل حالة استخدام تحتاج إلى إنشاء سيناريو، وهذا هو وصف سلسلة من الخطوات التي تؤدي إلى الهدف المقصود. يمكن وصف حالة الاستخدام في عدة أشكال. وتشمل الأشكال المقبولة عموما ما يلي: وصف النص، بسيودوكود، الرسم التخطيطي النشاط، الرسم التخطيطي التفاعل. وتجدر الإشارة إلى أن التاجر مهتم في تيسي بالمعنى الدقيق للكلمة، بدلا من ذلك الذي يظهر في الشكل 4. ولذلك، أقترح كذلك التركيز على حالة الاستخدام "التداول" مع التمديد "للربح". 2.2 مخطط الطبقات. باستخدام الرسم البياني الطبقة سوف تصف هيكل تيسي. وعلى وجه التحديد، سوف نقدم نموذجا للهيكل الثابت للنظام التجاري من حيث فئات البرمجة الموجهة نحو الكائن. وبالتالي، فإننا سوف تعكس منطق البرمجة من تيسي. في أومل مخطط الرسم البياني هو نوع من الرسوم البيانية بنية ثابتة. وهو يصف هيكل النظام من خلال إظهار الطبقات، وخصائصها والمشغلين، فضلا عن العلاقة بين الطبقات. ما هي مزايا هذا النوع من الرسم البياني؟ أولئك الذين هم على دراية بعض الشيء مع لغات البرمجة وجوه المنحى، وسوف تلاحظ على الفور فكرة مألوفة من "الطبقة". يعمل الفصل في مخطط فئة أومل كبنة البناء الأساسية. على سبيل المثال، عند إنشاء رمز C ++، يتم إنشاء كتلة فئة أومل تلقائيا في قالب قالب فئة. سوف تحتاج فقط لإنهاء تنفيذ كل طريقة والممتلكات. الآن دعونا نحاول تصميم شيء كمثال. ولكن أود أولا أن ألفت انتباهكم إلى المادة "نموذج روبوت التداول"، الذي يصف المؤلف مزايا استخدام منطق مستقيم. في رأيي، فعالة جدا ومنتجة هو مبدأ التعشيش - "وحدات الماكرو وظائف وحدات التجارة". على سبيل المثال، نحن بحاجة إلى مستشار الخبراء الذي يستخدم إمكانية تداول فئات المكتبة القياسية. باستخدام كتلة الفئة إنشاء نموذج فئة في الرسم البياني للفئة. اتصلت به كتراديكسيرت. نضيف بعض السمات (في MQL5 هم أعضاء البيانات من الطبقة) لفئة جديدة. وهي: Magic_No، e_trade، e_account، e_deal، e_symbol، e_pnt. نحن أيضا إدراج طريقة منشئ من فئة كتراديكسيرت. ومن الناحية البيانية، ستكون العملية كما هو مبين في الشكل 5. الشكل 5. نموذج أومل من فئة كتراديكسيرت. الحرف "-" أمام السمة يشير إلى أن السمة لديه حق الوصول في وضع «الخاص»، «#» - «المحمية»، «+» - «الجمهور». وهكذا، بالنسبة للسمة Magic_No يتم تعيين محدد الوصول كخاص، ل e_pnt - كما العامة، وبالنسبة للآخرين - كما هي محمية. نقطتين يتبعان اسم الخاصية المميزة، يشير الى نوع بيانات للسمات ونوع البيانات التي تم ارجاعها للطرق. على سبيل المثال، السمة Magic_No هي من نوع إنت، e_trade - كتريد، الخ. نحن لا نضيف أي الأساليب والصفات الآن، وتبين ببساطة كيف لدينا فئة كتراديكسيرت متصل مع فئات المكتبة القياسية. للقيام بذلك، إضافة 6 كتل من الطبقات إلى الرسم البياني وندعو لهم على النحو التالي: كتريد، كاكونتينفو، دديلينفو، كسيمبولينفو، كوبجيكت. نحن الآن ربط نموذج كتراديكسيرت الطبقة مع 4 كتل من الطبقات التجارية من خلال علاقات الاعتماد مع "الاستخدام" النمطية (خط اندفاعة منقط مع سهم). التبعية هي علاقة دلالية بين كيانين، حيث التغيير في واحد منهم يمكن أن تؤثر على دلالات الأخرى التابعة واحدة. القالب النمطي في أومل هو وصف لسلوك الكائن. ثم، ونحن ربط هذه الكتل مع كوبجيكت كتلة من خلال علاقة التعميم باستخدام خط مع "غير مصبوغ" رأس السهم الثلاثي. إضافة تعليقات إلى فصول المكتبة القياسية. الآن، الرسم البياني أومل لدينا يبدو كما هو مبين في الشكل 6. الشكل 6. مخطط فئة أومل. نحن الآن بحاجة فقط لتوليد رمز باستخدام وظيفة "توليد" من "إنشاء" علامة التبويب على الشريط الجانبي (الشكل 7). الشكل 7. الأكثر مناسبة هي اللغة ++ ++. سوف نستخدم C ++ إنشاء التعليمات البرمجية من فئة خبير الخبراء، وبعد ذلك سوف نقوم بترجمته بسهولة إلى MQL5. لهذا الرسم البياني رمز ولدت على النحو التالي: بنية مألوفة حقا، أليس كذلك؟ نحن بحاجة فقط لتناسب الجسم من الطبقة. لهذا الغرض في ميتايديتور نخلق ملفا لفئة جديدة TradeExpert.mqh. نسخ التعليمات البرمجية التي تم إنشاؤها مسبقا إليها. لقراءة نحن حذف محدد الوصول المتكرر المحمية لأعضاء كتراديكسيرت الطبقة. احذف الخطوط المرتبطة بإعلان فئات المكتبة القياسية. بعد ذلك، قم بإضافة الملف بما في ذلك التعليمات # تضمين لكل فئة المستخدمة من المكتبة القياسية، لأن هذه الفئات هي بالفعل معرفة من قبل المطور. وإضافة تعليقاتنا. ونتيجة لذلك، نحصل على الرمز كما يلي: الآن دعونا إضافة بعض المزيد من وحدات وظيفة التداول لدينا فئة مستشار الخبراء. قد تكون هذه: تشيكسيغنال، أوبنبوسيتيون، تشيكبوسيتيون، كلوسيبوزيتيون الخ. آمل أن تعرف بالفعل مبدأ "حالة خدمة". في هذه الحالة لدينا اختبار الطبقة كتراديكسيرت لن تبدو صعبة بالنسبة لك. ركزت تحديدا على بعض الأمثلة المألوفة بالفعل لمستشار خبير لتسهيل عليك فهم آليات أومل. لذلك، يظهر الآن نموذج الطبقة كما هو مبين في الشكل 8. الشكل 8. نموذج أومل من فئة كتراديكسيرت. للحصول على نموذج محدث من فئة يمكننا أيضا إنشاء رمز باستخدام الطريقة التي سبق وصفها. 2.3 مخطط النشاط. باستخدام هذا النوع من الرسوم البيانية أومل، يمكننا دراسة سلوك النظام باستخدام نماذج تدفق البيانات وتدفق السيطرة. المخططات النشاط هي تمثيل رسومية لسير العمل من الأنشطة والإجراءات التدريجية. يختلف مخطط النشاط عن المخطط الانسيابي، الذي يصف فقط خطوات الخوارزمية. الرسم البياني النشاط النشاط هو أوسع. على سبيل المثال، من الممكن تحديد حالة الكائنات فيه. يتم استخدام المخططات النشاط من قبل المطورين لوصف: قواعد العمل حالات استخدام واحدة معقدة سلسلة من حالات الاستخدام متعددة العمليات مع الحلول والجداول البديلة عمليات متوازية تدفقات البرنامج وهياكل التحكم المنطق. افترض أن فئة الخبراء التي تم إنشاؤها كتراديكسيرت سيتم استخدامها في ملف خبير الخبراء Test_TradeExpert.mq5. كما نتذكر، يوفر النموذج الافتراضي عند إنشاء إي في ميتايديتور 5 ثلاث وظائف معالج الأحداث الافتراضي: أونينيت و أوندينيت و أونتيك. دعونا نسكن عليها. دعونا نحاول عرض رسم بياني مع عملية إي لدينا وهو يمثل Test_TradeExpert.mq5. هنا تجدر الإشارة إلى أن مستشار الخبراء، أو بالأحرى هيكلها، بدائية بدلا من ذلك. نحن فقط التدريب الآن. بنية إي بسيطة على ما يرام لهذا الغرض. دعونا تصميم مخطط لاستخدام مستشار الخبراء لدينا، وهو خوارزمية منها في الملف Test_TradeExpert.mq5. لذلك، كل شيء يبدأ مع العقدة الأولية (الشكل 9). من هذه العقدة يتحرك رمز التحكم إلى العقدة التي تدعو إلى إجراء "إنشاء مثيل خبير الخبراء". هذا الإجراء يبدأ تدفق الكائن (السهم الأزرق)، الذي يغير حالة عقدة الكائن (مايت = إنشاء)، وتدفق التحكم إلى العقدة التي تدعو "تهيئة خبير المستشار". يتم تمثيل تدفق التحكم في شكل حافة النشاط، الذي يربط العقدتين من النشاط والتي يتم تمرير رموز التحكم فقط. يتم تمثيل تدفق العنصر كحافة نشاط، والتي يتم تمرير رموز الكائن أو البيانات فقط. عقدة النشاط هي فئة مجردة للنقاط الفردية في تدفق الأنشطة المتصلة بواسطة الحواف. عقدة القرار هي عقدة تحكم، والتي تختار بين التدفقات الصادرة. تمثل عقدة العنصر الكائنات المستخدمة في النشاط. حافة النشاط هي فئة مجردة للاتصالات الموجهة بين عقد نشاط. توضح العقدة الأولية مكان بدء النشاط. العقدة الأخيرة من النشاط يكمل كل تدفقات النشاط. فإنه، بدوره، يغير حالة الكائن ماتي (ماتي = تهيئة) ويمر رمز التحكم إلى عقدة القرار. إذا تم تهيئة المستشار الخبراء بنجاح، يذهب تدفق التحكم إلى العقدة "معالجة الحدث التجاري نوتيك» إذا فشل التهيئة، ثم رمز التحكم الأول يدخل عقدة التعميم، ثم عقدة العمل "إلغاء تهيئة مستشار الخبراء". الرموز المميزة هي منشآت مجردة يتم تقديمها للراحة في وصف العملية الديناميكية لتنفيذ رسم بياني للنشاط المعرف إحصائيا. لا يمكن أن يحتوي الرمز المميز على أية معلومات إضافية (رمز مميز فارغ)؛ في هذه الحالة يطلق عليه رمز تدفق التحكم، أو قد يحتوي على مرجع إلى كائن أو بنية بيانات، وفي هذه الحالة يطلق عليه رمز تدفق البيانات. دعونا ننظر إلى تدفق السيطرة الأولى التي تأتي من عقدة القرار. يتم توجيهها إلى منطقة مع العمل المتقطع، كما هو مبين من مستطيل مع زوايا مدورة رسمها الخط الأحمر منقط وصورة نمطية من "انقطاع". عندما يكون تدفق التحكم في هذه المنطقة، قد يتوقف بشكل غير متوقع. إذا قمت بتنشيط عقدة العمل (العلم البرتقالي) الذي يتلقى الحدث "تفريغ مستشار الخبراء"، وسوف يقطع كل التدفقات. يتحرك رمز التحكم إلى حافة المقاطعة (السهم المتعرج البرتقالي)، ثم إلى عقدة التوصيل. بعد ذلك يتم إينيتياليزد إي. ثم، رمز التحكم يذهب إلى عقدة "حذف المتغيرات العالمية"، ثم سيتم الانتهاء من تدفق في عقدة النشاط النهائي. عقدة العمل "دينيتاليز مستشار الخبراء" أيضا بتغيير حالة الكائن ماتي (ماتي = دينيتسياليزد) بواسطة تدفق الكائن. العقدة "حذف المتغيرات العالمية"، بدوره، يزيل الكائن مايت (ماتي = حذف). الشكل 9. مخطط النشاط ل Test_TradeExpert.mq5. نفترض أن تدفق التحكم مستقر: إي لم يتم تفريغها. من العقدة "معالجة الحدث التجاري نوتيك» تدفق يتحرك إلى كتلة أخرى - منطقة التوسع، وتعرف الصورة النمطية التي هي "تكرارية" (المستطيل الأخضر مع خطوط منقطة). أدعو هذا المجال "كتلة التداول"، لتعكس الخصائص الأساسية وتحسين تصور الرسم البياني. وهناك سمة مميزة للكتلة هي التنفيذ الدوري لعمليات الكائنات الواردة. نحن بحاجة فقط 2 دورات - التعامل مع الاتجاهات الطويلة والقصيرة. عند مدخل كتلة والإخراج من كتلة هناك العقد التوسع التي تشمل كائنات اتجاه التجارة (طويلة أو قصيرة). عقدة التوسيع هي مجموعة من الكائنات التي تدخل أو تخرج من منطقة التوسيع، والتي يتم تشغيلها مرة واحدة لكل كائن. عقدة العمل التي ترسل إشارة (إرسال إشارة العمل) يمثل إشارة الإرسال. عقدة الإجراء التي تقبل حدث (قبول إجراء الحدث)، ينتظر تلقي حدث من النوع المناسب. وهكذا، فإن كل اتجاه يتم التعامل معه من خلال هذه العقد مثل: "إشارة التحقق" (عقدة إرسال الإشارة) و "إشارة الاستقبال" (عقدة استقبال الإشارة) و "موقع فتح" (عقدة إرسال الإشارة) و "موقع التحقق" (عقدة إرسال الإشارة) ، "موقف إغلاق" (إشارة إرسال عقدة). وتجدر الإشارة إلى أنه يمكن تمرير الكائن الاتجاه (دير) في تدفق الكائن بين عقد العمل، كما هو موضح من قبل الأسهم البنفسجي. وستستمر العمليات في كتلة ما دام تفريغ مستشار الخبراء. 2.4 مخطط التسلسل. نحن نستخدم مخطط تسلسل لوصف تسلسل التفاعل الكائن. وهناك جانب مهم جدا من هذا النوع من الرسم البياني هو الوقت. لذلك، الرسم البياني له مقياسين في شكل ضمني. والأخرى الأفقية هي المسؤولة عن تسلسل التفاعلات الكائن. المحور الرأسي هو محور زمني. بداية الفاصل الزمني هو الجزء العلوي من الرسم البياني. الجزء العلوي من الرسم البياني يحتوي على كائنات الرسم البياني، التي تتفاعل. كائن له شريان الحياة الخاصة بها كما خط عمودي منقط. الكائنات تبادل الرسائل. وهي ممثلة بالسهام. عندما يكون الكائن نشطا، فإنه يتلقى التركيز على عنصر التحكم. بيانيا، يتم التعبير عن هذا التركيز كمستطيل ضيق على شريان الحياة. الكائن هو مستطيل يحتوي على اسم كائن تحت اسم واسم فئة (اختياري) مفصولة بنقطتين. شريان الحياة الكائن هو الخط الذي يدل على وجود كائن لبعض فترة من الزمن. كلما كان الخط أطول، كلما كان الكائن موجودا. يتم رسم التركيز السيطرة كمستطيل ضيق، الجانب العلوي منه يدل على بداية تلقي تركيز السيطرة من قبل الكائن (بداية النشاط)، والجانب السلبي - نهاية التركيز السيطرة (نهاية النشاط). في أومل، يتم وصف كل تفاعل من قبل مجموعة من الرسائل، والتي الكائنات المشاركة في تبادل. دعونا لدينا بعض الممارسة. المحطة هو الفاعل. فإنه يبدأ تشغيل مستشار الخبراء. الكائنات الأخرى التي تحمل علامة "الحدث" هي أحداث محطة العميل: إينيت، دينيت، نيوتيك. وبطبيعة الحال، إذا كنت تريد يمكنك توسيع نطاق الأحداث. عند بدء تشغيل مستشار خبير، يتم إنشاء كائن متي على المستوى العالمي. وهو مثال من فئة كتراديكسيرت. كائن فئة أقل قليلا من الكائنات الأخرى في الرسم التخطيطي، مما يشير إلى أنه يتم إنشاؤه بعد وظيفة منشئ. يتم وضع علامة إنشاء أمر مع خط اندفاعة منقط مع سهم مفتوح ورسالة 1.1 كتراديكسيرت (). يشير الخط المنقطة بخط متقطع مع سهم إلى نوع "إنشاء" للمكون الافتراضي كتراديكسيرت (). بعد إنشاء مثيل من كتراديكسيرت الخطوة 1.2 تنشيط - يتم إرجاع التركيز السيطرة إلى المحطة. لقراءة، وأشير إلى رسائل متزامنة في شكل #. #، مثل 1.1، وغير متزامن - #. ثم، يتعامل الجهاز مع الحدث إينيت باستخدام الدالة أونينيت () في الخطوة 2.1، يتم إرجاع التركيز على الخطوة 2.2. يتم عرض رسائل "الاتصال" نوع كخطوط مع "المثلث" السهم مثلث في نهاية المطاف. إذا كان الحدث إينيت بإرجاع قيمة غير صفرية إلى المحطة الطرفية، فهذا يعني أن التهيئة فشلت: يتم استخدام الخطوة 3.1 الذي يؤدي إلى توليد ومعالجة الحدث دينيت. في الخطوة 3.2 يتم إرجاع تركيز التحكم إلى الجهاز الطرفي. ثم يتم حذف كائن الفئة كتراديكسيرت (الخطوة 4.1). بالمناسبة، عند إنشاء مخطط فئة، وأنا لم تدرج وظيفة ديستروكتور كتراديكسيرت في الصف. ويمكن القيام بذلك في وقت لاحق. هذا هو واحد من مزايا البناء الرسم البياني - عملية بناء العديد من المخططات هو تكرارية. ما تم القيام به لأول مرة لرسم تخطيطي واحد، ويمكن القيام به ثم لآخر، وبعد ذلك يمكنك تعديل أول واحد. تجدر الإشارة إلى أن رمز MQL5 لقالب إي القياسية لا يحتوي على كتلة يتعامل مع التهيئة الفاشلة. لقد حددت ذلك لحفظ منطق تسلسل. يستخدم مخطط تسلسل أومل كتلة اختيار مع حالة حارس أونينيت ()! = 0، وهو ما يعادل البناء MQL5 إذا (أونينيت () = 0) <>. في الخطوة 4.2، يتم نقل التحكم إلى المحطة الطرفية. الآن المحطة على استعداد للتعامل مع الحدث نيوتيك. معالجة هذا الحدث في حلقة كتلة يعني حلقة لانهائية. أي أن إي سوف تتعامل مع هذا الحدث حتى نقوم بتعطيله. يقوم الجهاز بمعالجة حدث نوتيك باستخدام الدالة أونتيك (الخطوة 5). في الخطوة 6، يتم نقل التركيز السيطرة إلى مستشار الخبراء مايتي. باستخدام 4 رسائل الانعكاسية، فإنه ينفذ الوظائف التالية: تشيكسيغنال، أوبنبوسيتيون، تشيكبوسيتيون، كلوسيبوزيتيون. ترجع الانعكاسية إلى حقيقة أن كائن خبير الخبراء يرسل رسائل إلى نفسه. وبالإضافة إلى ذلك، يتم تضمين هذه الوظائف من فئة كتراديكسيرت في حلقة (2) كتلة. اثنين يعني أن حلقة تتكون من اثنين من التصاريح. لماذا اثنين؟ لأنه يعالج اتجاهين للتجارة - طويلة وقصيرة (من الخطوة 7 إلى 10). في الخطوة ال 11، يتم تمرير التركيز إلى المحطة. تكون الخطوتان 12 و 13 مسئولين عن إلغاء حذف كائن إكسيرت أدفيسور وحذفه، على التوالي. الشكل 10. مخطط سد ل Test_TradeExpert.mq5. وهكذا، لدينا مهارات التصميم الأساسية. مع مساعدة من المخططات التي تم إنشاؤها، هو الأمثل للعمل المطور. يمكننا الآن البدء في كتابة رمز للملف Test_TradeExpert.mq5. بالطبع، يمكنك أن تفعل دون الرسوم البيانية. ولكن عندما يكون لديك مستشار خبير معقدة، واستخدام المخططات يقلل من احتمال الأخطاء ويسمح لك لإدارة بكفاءة تطوير تيسي الخاص بك. باستخدام نموذج "مستشار الخبراء"، نقوم الآن بإنشاء Test_TradeExpert.mq5. نخلق مثيل من فئة كتيريدكسيرت مايتي على المستوى العالمي. الآن دعونا ملء الجسم من أونتيك () وظيفة. نكتب وظائف الطبقة على النحو التالي: شيء من هذا القبيل سيكون التعامل مع الحدث نوتيك. وبطبيعة الحال، ما زلنا بحاجة إلى تحديد كل من الوظائف التي سيتم استخدامها من قبل أعضاء البيانات الطبقة، من بين أمور أخرى. ولكن دعونا نترك هذه المهمة للمستقبل. الآن هدفنا هو نقل منطق المخططات أومل إلى رمز MQL5. 3. Development and Presentation of an Expert Advisor Based on the UML Diagrams. As an example, let's create diagrams for a complex Expert Advisor. Let's define its features in the context of a given strategy implemented in the MQL 5. In general, our Expert Advisor will perform trade operations; in particular it will generate trading signals, maintain open positions and money management. It is rather a template trading strategy. However, for training purposes we will try to work with this one. First, we create a use case diagram for our EA. Only to some extent will it be different from the one discussed earlier. I paid attention to the internal environment of the TS, ignoring the outside (Fig. 11), as in the code we will implement only the trading tasks. Fig. 11. Use-case diagram of the TS. Now let us define the structure of the Expert Advisor. Assume that we will use the standard library developments, because it is consistent with the stated objectives of the TS. Recently, it has been substantially expanded. And above all it concerns the classes of trading strategies . So, our goal is to create a class diagram. It will not be simple, so you need patience. Here I would like to note that we consider the standard library for a few reasons. First, on its basis we try to create a trading robot. And, second, which is also important, we have some practice working with UML diagrams. Third, perhaps the library itself is very valuable. So we can learn many useful things from the libraryt, and at the same time try to understand its not quite simple structure. The conversion of a code in the structure of a UML diagram is called reverse engineering. In fact, we are doing this manually. There is professional software that allows you to do this automatically (IBM Rational Rose, Visual Paradigm for UML, etc.). But for practical purposes, I think we need to work "manually". Let's create a model of the base class to implement trading strategies CExpert using the "Class" block. Let's see what other classes and constructions are used in the body of the C Expert class. First, it should be noted that the C Expert class is derived from the base class CExpertBase , which, in turn, is derived from the base class CObject . In the diagram we create blocks for these classes, and define the relationship between the classes using a line with an "unpainted" triangular arrowhead (generalization) . Add a comment to the model of the CExpert class (a yellow rectangle with a bent corner). The intermediate class structure now looks like this - Fig. 12. Let's call the diagram Expert . Fig. 12. The Expert diagram, the initial view. Let's see the code in the Expert.mqh file. The class CExpert , among other things, involves enumerations ENUM_TRADE_EVENTS and ENUM_TIMEFRAMES , one of the 8 predefined structures MqlDateTime. The class also uses other class instances, such as: CExpertTrade, CExpertSignal, CExpertMoney, CExpertTrailing, CIndicators, CPositiontInfo, COrderInfo. Let's mark the dependency relations with the " use " stereotype between the block of the CExpert class and other classes, do not forget about the MqlDateTime structure and enumerations. We change the color style of the blocks and obtain the following structure - Fig. 13. Fig. 13. The Expert diagram, the initial view. However, this structure does not reflect the full picture, because there are a number of classes that are indirectly used by the already mentioned classes. What kind of classes are they? First, the CExpertTrade class is derived from CTrade . The latter is a subclass of CObject. The CExpertTrade class uses the ENUM_ORDER_TYPE_TIME enumeration, classes CSymbolInfo and CAccountInfo are also children of CObject . The CTrade class also uses instances of the CSymbolInfo classes. Let's make changes to the diagram. Now our diagram has the following form - Fig. 14. Fig. 14. The Expert diagram, the initial view. Again, the diagram is not complete. For example, if you look in the standard library file Trade.mqh , you will see that CTrade uses several different structures, enumerations and the CSymbolInfo class. If they are all displayed on one diagram, it will be too much loaded. And this will make it hard to understand. To cope with this difficulty, I used a package for the diagram. It encapsulates related classes, enumerations, other packages, etc. I connected the package with the diagram elements through the interface. For example, the diagram for the package CTrade can be represented as follows - Fig. 15. Fig. 15. The class diagram for the CTrade package. The diagram of the CTrade package shows dependence relations of the CTrade class with enumerations and structure. Relations with the CObject base class and the used CSymbolInfo class is implemented through an interface. Near the interfaces there is an icon of relation with the class diagram that contains the CTrade package as a single element. Clicking on any of the interfaces automatically brings to the original diagram (Fig. 16). Fig. 16. The Expert diagram with interfaces. Interface relations are orange. The icon of the class diagram next to the CTrade package indicates the possibility of moving to this diagram. Thus, using the encapsulation, we can significantly improve the readability of the class diagram. So, let's move on. The CObject class uses pointers to instances of the same class in its body. Therefore, we can set the dependence relationship for the CObject block with the stereotype " use " relative to itself. Let's look at the block of the CExpertBase class model. Based on the first lines of the header file ExpertBase.mqh we can say that this class uses multiple instances of various classes, and enumerations. Therefore, for the class model and its relationships it is reasonable to create the package CE xpertBase . So, first we define the CExpertBase class model in the package diagram. Through the interface we show relationship with the base class CObject , and the relationship of use with the classes CSymbolInfo and CAccountInfo. Then, using blocks of classes and relations of dependence, we specify that the CExpertBase class uses the following classes: CiOpen, CiHigh, CiLow, CiSpread, CiTime, CiTickVolume, CiRealVolume. The first four classes are derived from CPriceSeries, and the latter four – from CSeries. Moreover, the CSeries class has a child CPriceSeries and is, in turn, a child of CArrayObj. The inheritance relationships have been used before, as we remember. Denote them as a generalization relationship in the diagram. Do not forget that the class CExpertBase uses in its body such enumerations as: ENUM_TYPE_TREND , ENUM_USED_SERIES , ENUM_INIT_PHASE , ENUM_TIMEFRAMES . The last enumeration is also used by the children of the class CPriceSeries and class CSeries . Not to lose the relationships, and to make the diagram clear, let's adjust the style for each of the elements of the diagram. As a result, we obtain the following diagram (Fig. 17). Fig.. 17. The class diagram for the CExpertBase package. It is not complete yet, and we will have to work some more on it. It turns out that the four classes, which inherit the CPriceSeries class also use the CDoubleBuffer class. In addition, each of the four classes uses its buffer class that derives from CDoubleBuffer. Thus, COpen uses COpenBuffer etc.. CDoubleBuffer has a base class (CArrayDouble ) and uses ENUM_TIMEFRAMES . CArrayDouble inherits CArray , uses pointers to the instances of its same class and the ENUM_DATATYPE enumeration. The COpenBuffer class and other buffer classes of price series (CHighBuffer, CLowBuffer, CCloseBuffer) use the ENUM_TIMEFRAMES enumeration. The four classes that inherit the CSeries class only use their own buffer classes (CSpreadBuffer, CTimeBuffer, CTickVolumeBuffer, CRealVolumeBuffer) . The first of the class buffers CSpreadBuffer inherits CArrayInt , others – CArrayLong . The last two classes use the pointers to the instances of their own class, the ENUM_DATATYPE enumeration and are derived from CArray , which, in turn, is a child of class CObject. The CPriceSeries class and its children use the CDoubleBuffer class and the ENUM_TIMEFRAMES enumeration. CSeries uses enumerations ENUM_SERIES_INFO_INTEGER , ENUM_TIMEFRAMES . It inherits CArrayObj. The latter one inherits CArray, uses ENUM_POINTER_TYPE , pointers at the instances of its own class and the CObject class . As a result, we obtain the diagram shown in Figure 18. Fig. 18. Extended class diagram for the CExpertBase package. And the original diagram Expert for classes and packages CExpert , CExpertBase , CSymbolInfo , CAccountInfo and CObject with interfaces looks as follows (Fig.19). Fig. 19. The Expert diagram with interfaces. I've also added the ENUM_ORDER_TYPE enumeration used by CExpertTrade . For readability, I've marked the group of relationships with different colors. We continue our work. I hope that you understand the logic. The model of a class on the diagram may have many relationships with other classes and other entities. So I just replace some set with a package in the base diagram. So, let's study CSymbolInfo . If you look at the code of SymbolInfo.mqh , you will see that the base class CSymbolInfo uses some MQL5 enumerations and structures . It's good to use a package for it and its relationships (Fig. 20). Fig. 20. Diagram of the CSymbolInfo package. Some free space in the diagram can be used for comments. Also, I've marked the interface of relation with the parent class CObject . The original Expert diagram of packages and classes will be slightly modified. I will give its updated version later on, when all the classes and packages are reflected in the diagram. So, let's move on. Let's look at the MQL 5 code in AccountInfo.mqh . As it turns out, CAccountInfo also uses some enumerations. We reflect them on the diagram of the package that will create for this class and its relationships with other entities (Fig. 21). Fig. 21. CAccountlInfo package diagram. Now let's deal with the CExpert class. For this class, we also create a package CExpert , which will appear as shown in Fig. 22. We continue to improve the readability of our main diagram. The CExpert class is connected with several other classes, as indicated by the orange interface lines with an arrow. Fig. 22. CExpert package diagram. Let's explore other remaining classes. We will creaet more packages for them. CExpertSignal derives from CExpertBase . This relationship has already been shown on the original diagram Expert . In addition, the CExpertSignal class uses CArrayObj , COrderInfo , CIndicators and instances of its own class (Fig .23). In particular, the interface of relationship with the CArrayOb j class will bring us to the CExpertBase package diagram, which shows the relationship of the CArrayObj class with other entities. Fig. 23. CExpertSignal package diagram. I am not showing all the diagrams now - they are all available in the attached file Expert.simp . Now let's take a look at our updated diagram of packages and classes Expert (Fig. 24). As you can see, almost all the key classes in the diagram have been encapsulated into packages to make the diagram easier to understand. I have changed the color of the generalization line into brown, to distinguish it from the line of the dependency relationship. Fig. 24. The diagram of packages and classes Expert. So, we have reflected all that can be taken from the code available in the standard library for creating diagrams. We only need to add some more blocks, which specify the trading operations of the Expert Advisor. The very first block is the block of CmyExpert that inherits trading "skills" from the CExpert class. This is the block, for which we have so long been engaged in reverse engineering. He will implement a specific trading strategy. We also need to specify the virtual functions of the base classes of the EA. for this purpose, we create a block of classes CmyExpertSignal, CmyExpertMoney , CmyExpertTrailing and indicate that they are derived from the appropriate (Fig. 25). Fig. 25. Expanded diagram of packages and classes Expert. What functions and data should each of the classes include is up to the developer. Here, I'm trying to show the more general scheme, not a specific implementation of a derived class. Thus, for each of the derived classes we can create a separate diagram with a detailed list of included methods and properties, as has been done, for example, in Fig. 8. Now let's see how we can use the sequence diagram in our work. Let me remind you that it shows how our EA operates with respect to the timeline. So, we write details of the EA work in chronological order (Fig. 26). Fig. 26. The Sequence diagram of the Expert Advisor. The terminal serves as an actor. At the global level it creates the myTrader object - an instance of CmyExpert (Step 1.1). Green denotes predefined events of the client terminal (Init, Deinit, NewTick, Trade.) The sequence diagram logic has been described earlier. Here I would like to point out some specific points. When the body of the Expert Advisor grows, and there is more and more code, it becomes more difficult to display it in a diagram. To solve this problem, use the block approach. A set of some common functions is visualizes in the form of a block. As a rule, it is another sequence diagram. It is said to be an interaction use. Thus, in this case, I created a sequence diagram called OnInit in order to reflect the logic of handling of the terminal event Init in a separate diagram. Syntactically it is defined as a border with the keyword ref ( reference) and is used when the control token passes from OnInit (step 2.1) to the lifeline of the Init object. In addition, I've set an interface move to this sequence diagram for OnInit . That is, if you click 2 times on the border, you can actually open a detailed sequence diagram of OnInit (Fig. 27). Fig. 27. The sequence diagram of OnInit. Moves to other sequence diagrams is very convenient for repetitions of some actions. For example, the OnInit diagram contains actions connected with EA deinitialization, the processing of which is done in myTrader _ Deinit (Fig. 28). Fig. 28. The sequence diagram of myTrader_Deinit. In general, at this stage of EA design I have four sequence diagrams. Naturally, during a more serious development you may need additional diagrams. For example, I haven't handled other events of the client terminal (NewTick, Trade). الاستنتاجات. In this article, I suggested to take into account the multidimensional nature of the Expert Advisor development process using the graphical language UML, which is used for visual modeling of object-oriented software systems. The main advantage of this approach is the visualization of the designer. As with any complex phenomenon, UML has its own disadvantages that the developer should be aware of (redundancy, imprecise semantics, etc.). I hope that the described methodology of EA development is interesting for you. I would be grateful for any comments and constructive criticism. Location of files: Translated from Russian by MetaQuotes Software Corp.

Trading system uml

Code 1-20 of 60 Pages: Go to 1 2 3 Next >> page. Nevron Diagram for (Windows Forms and ASP) is a fully managed, extensible and powerful diagramming framework, which can help you create feature rich diagramming solutions in WinForms and WebForms. The programs compute the enthalpy versus composition diagram for ethanol-water binary system at 760mmHg and 76 mmHg. We also draw the tie lines and the conjugate line. The programs compute the bifurcation diagram for the cubic map and a realistic population dynamics model. The value of parameter r, when the cycle of period three appears, is indicated. As expected, for higher values of r, we observe chaotic. Development tools for modeling XML applications with UML, including UML profiles for XML Schema ans SOA. Plugins are based on Eclipse Modeling Tools (MDT). You may install from the Eclipse Update Site URL xmlmodeling.sourceforge/updates. This tool helps you to reverse engineer UML Sequence Diagram for your java program at runtime. It works well with both complex java programs (that have multiple threads) and J2EE applications deployed on Application Servers. 'A technical trading system comprises a set of trading rules that can be used to generate trading signals. In general, a simple trading system has one or two parameters that determine the timing of trading signals. Each rule contained in a trading. This is the only link trading system you will ever need. It is designed to send the same amount of visitors to your affiliates as they send you. This project is a Local Exchange and Trading System admin tool, accessible from the web for the use of LETS members. It is composed of an online directory, accounting and payment system, and an online newsletter. The Nevron Diagram for is a fully managed, extensible and powerful diagramming framework, which can help you create interactive and feature rich diagram and map solutions in WinForms and ASP projects. The product is based on the solid. mcdp is a small (maybe the smallest) cd-player for linux operating system. - it can be compiled against dietlibc ( - working play methods: reapeat cd. Heisler Diagram for Heat transfer applications. Webmail-Client for DBMail-Servers, a browser based Client for the dbmail system on mysql databases written in PHP 5.3. No POP3 or IMAP used. Domain specific language for automated trading (robot) using opentick-ruby (for realtime quotes) and ib-ruby (for orders) Traders can develop their own trading system by plugging-in their trading algorithm to this distributed Framework. Supports: client acct, portfolio abstraction, open i/f for (a) tick data sub., and (b) multiple broker APIs per client port. Wrappers for simple file system operations on directories. For example, listing the contents of a directory: instead of doing the whole openDir/readDir/closeDir gig everytime, you'd use the function read_file that handles errors. a very simple printer module for any *nix system that has lpr. ..but build a primitive, stylized automated trading system operated by a fixed-rate timer and handling retrieval, storage and analysis of data; a 'strategy' guides rebalancing the portfolio at each iteration, and basic output is displayed in a. This block for Simulink provides a chirp source for stimulating unknown system dynamics. The block has been developed specifically for the purpose of system identification, however it should be of interest to anyone looking for a robust and. + simulink models for the simulation system. IRC PHPbot is an IRC bot coded in PHP using MySQL for its database system. All files and free downloads are copyright of their respective owners. We do not provide any hacked, cracked, illegal, pirated version of scripts, codes, components downloads. All files are downloaded from the publishers website, our file servers or download mirrors. Always Virus check files downloaded from the web specially zip, rar, exe, trial, full versions etc. Download links from rapidshare, depositfiles, megaupload etc not published. UML use case diagram - Ticket processing system. UML use case diagram - Ticket processing system. (1) A customer service technician receives a telephone call, , or other communication from a customer about a problem. Some applications provide built-in messaging system and automatic error reporting from exception handling blocks. (2) The technician verifies that the problem is real, and not just perceived. The technician will also ensure that enough information about the problem is obtained from the customer. This information generally includes the environment of the customer, when and how the issue occurs, and all other relevant circumstances. (3) The technician creates the issue in the system, entering all relevant data, as provided by the customer. (4) As work is done on that issue, the system is updated with new data by the technician. Any attempt at fixing the problem should be noted in the issue system. Ticket status most likely will be changed from open to pending. (5) After the issue has been fully addressed, it is marked as resolved in the issue tracking system. If the problem is not fully resolved, the ticket will be reopened once the technician receives new information from the customer. A Run Book Automation process that implements best practices for these workflows and increases IT personnel effectiveness is becoming very common." [Issue tracking system. Wikipedia] The UML use case diagram example "Ticket processing system" was created using the ConceptDraw PRO diagramming and vector drawing software extended with the Rapid UML solution from the Software Development area of ConceptDraw Solution Park. Read more. UML use case diagram - Trading system usage scenarios. A special class of algorithmic trading is "high-frequency trading" (HFT), which is often most profitable during periods of high market volatility. During the past years, companies such as Algorates have employed HFT strategies, recording high profits even during periods in which the markets have seen steep declines." [Algorithmic trading. Wikipedia] The UML use case diagram example "Trading system usage scenarios" was created using the ConceptDraw PRO diagramming and vector drawing software extended with the Rapid UML solution from the Software Development area of ConceptDraw Solution Park. Read more. Jacobson Use Cases Diagram. UML Use Case Diagram Example. Services UML Diagram. ATM system. Bank ATM use case diagram. "If you are designing an auto-teller, for example, the use case for a particular aspect of the functionality of the system is able to describe what the auto-teller does in every possible situation. Each of these “situations” is referred to as a scenario, and a use case can be considered a collection of scenarios. You can think of a scenario as a question that starts with: “What does the system do if. ” For example, “What does the auto-teller do if a customer has just deposited a check within the last 24 hours, and there’s not enough in the account without the check having cleared to provide a desired withdrawal?”. Use case diagrams are intentionally simple to prevent you from getting bogged down in system implementation details prematurely. Each stick person represents an “actor,” which is typically a human or some other kind of free agent. (These can even be other computer systems, as is the case with “ATM.”) The box represents the boundary of your system. The ellipses represent the use cases, which are descriptions of valuable work that can be performed with the system. The lines between the actors and the use cases represent the interactions. It doesn’t matter how the system is actually implemented, as long as it looks like this to the user." This automated teller machine (ATM) UML use case diagram example was created using the ConceptDraw PRO diagramming and vector drawing software extended with the ATM UML Diagrams solution from the Software Development area of ConceptDraw Solution Park. Read more.
تحليل الفوركس فسفكس
نظام التداول قسم النخبة الفوركس