السلام عليكم ورحمة الله وبركاته
سنخصص هذا الموضوع لأهم الدوال والتطبيقات بلغة الـ mql4 التي حتما سيحتاجها المبرمج
والله الموفق
عرض للطباعة
السلام عليكم ورحمة الله وبركاته
سنخصص هذا الموضوع لأهم الدوال والتطبيقات بلغة الـ mql4 التي حتما سيحتاجها المبرمج
والله الموفق
أهم مكونات كود الاكسبيرت الضرورية مثل الدوال الرئيسية وقيمة النقطة والكومنت
أول جزء في الإكسبرت
وهو الجزء الخاص بحقوق الملكيه ويمكن حذفه ولن يؤثر على أداء الإكسبرت كما سنلاحظ أنه ذو لون باهت أي أنه عباره عن كومنت أو تعليق لذلك يسبق كل سطر علامه //
ثم يأتي الجزء التابع له وهو أيضا الخاص بحقوق الملكيه وحذفه لن يؤثر على آداء الإكسبرت أيضا.
ثم يليه الجزء الخاص بالمتغيرات الخارجية للإكسبرت والتي ستظهر في خصائص الإكسبرت عن تفعيله على الشارت مثل الأستوب لوز أو الهدف
مثال :
ماذا تعني input
كما لاحظنا أن هذه الكلمة تتلون عند كتابتها في محرر الميتاإيديتور لذلك فهي من الكلمات المحجوزه وتستخدم لتعريف متغير خارجي ويتم كتابتها قبل نوع المتغير.
الجزء : الدالة OnInit
هذه الداله يتم إستدعائها مرة واحد عند بداية العمل، وبهذا سنقوم فقط بوضع كومنت للحقوق البرمجية وتعريف قيمة النقطة والديجيت، وبرسالة نصية بوجوب تفعيل المتاجرة الآلية في حال عدم تفعيلها
الجزء : الدالة OnDeinit
ويتم إستدعائها مرة واحد عند نهاية العمل وحذفه من الشارت، نضيف شرط كومنت فارغ ليتم حذف كومنت الحقوق الذي وضعناه بالدالة OnInit
الجزء الخامس : الدالة الرئيسية OnTick
يتم تنفيذ ما بداخل هذه الداله عند كل تحرك للسعر
دالة الأيام
المتغيرات الخارجية للايام ستكون من نوع منطقي bool حتى تكون اختيارية إما true او false كالتالي :
ثم الشروط عند بداية الدالة الرئيسية OnTick كالتالي :
دالة التوقيت
المتغيرات الخارجية كالتالي :
دالة فرعية خارج الدوال الرئيسية للتوقيت كالتالي :
ثم الشروط قبل دالة او شروط فتح الصفقات كالتالي:
دالة حساب عدد الصفقات حسب النوع أو بدونها
ستكون عبارة عن دالة فرعية خارج الدوال الرئيسية كالتالي :
مثال لشرط عدم وجود أي صفقة مفعلة :
مثال لشرط عدم وجود صفقة شراء مفعلة :
دالة تستخرج تفاصيل آخر صفقة مغلقة من ربح، نوع، سعر، هدف، وقف، زمن ... بدلالة شرط معين عبارة عن كومنت
ستكون عبارة عن دالة فرعية خارج الدوال الرئيسية كالتالي :
مثال لمعرفة ربح آخر صفقة مغلقة كيفما كان نوعها كالتالي :
مثال لمعرفة سعر آخر صفقة بيع مغلقة كالتالي :
دالة تستخرج تفاصيل آخر صفقة مفعلة من ربح، نوع، سعر، هدف، وقف، زمن ... بدلالة شرط معين عبارة عن كومنت
مثال لمعرفة ربح آخر صفقة مفعلة كيفما كان نوعها كالتالي :
مثال لمعرفة سعر آخر صفقة شراء مفعلة كالتالي :
أشهر دوال إستدعاء المؤشرات المستخدمة في الميتاتريدر 4
كما يمكنك عن طريق تظليل أي كلمة محجوزه ثم بالضغط على F1 سوف تظهر لك خصائص هذه الداله ومعنى الإعدادات الخاصه بها فعلى سبيل المثال مؤشر الموفينج عند التظليل عليه سوف تظهر لنا خصائصه كما في الصوره التاليه
https://www.fxprg.com/vb/attachment.p...1&d=1492626395
دالة البيع
دالة الشراء
بحيث المتغيرات الخارجية كالتالي :
دالة "الموديفاي" لتعديل الهدف او الوقف
مثلا لتعديل أي صفقة بدون وقف او بدون هدف سنقوم بعمل الدالة التالية ونستدعيها بالدالة الرئيسية OnTick
دالة الهدف المخفي
دالة الوقف المخفي
ثم نقوم باستدعائهما بالدالة الرئيسية OnTick كالتالي :
بحيث المتغيرات الخارجية كالتالي :
دالة إغلاق الصفقات بدلالة النوع أو بدونها
دالة إغلاق الصفقة عند إغلاق شمعة جديدة
دالة الاغلاق "بواسطة" CloseBy
دالة إدارة المال التناسبية
نقوم بعمل المتغيرات الخارجية التالية :
نقوم بعمل دالة فرعية لادارة المال التناسبية كالتالي :
ثم نقوم بتعريف عدد الأعشار التي تقبلها المنصة بحجم العقود كالتالي :
ثم نقوم بإضافة شروط إدارة المال التناسبية بدالتي الشراء والبيع كالتالي :
دالة مضاعفات الضرب
نقوم بعمل المتغيرات الخارجية التالية :
نقوم بعمل دالة فرعية لمعرفة تفاصيل آخر صفقة مغلقة كالتالي :
ثم نقوم بإضافة شروط مضاعفات الضرب بدالتي الشراء والبيع كالتالي :
دالة مضاعفات الجمع
نقوم بعمل المتغيرات الخارجية التالية :
نقوم بعمل دالة فرعية لمعرفة تفاصيل آخر صفقة مغلقة كالتالي :
ثم نقوم بإضافة شروط مضاعفات الجمع بدالتي الشراء والبيع كالتالي :
دالة مضاعفات الفيبو
نقوم بعمل المتغيرات الخارجية التالية :
نقوم بعمل دالة فرعية لمضاعفات الفيبو كالتالي :
نقوم بعمل دالة فرعية لمعرفة تفاصيل آخر صفقة مغلقة كالتالي :
ثم نقوم بإضافة شروط مضاعفات الفيبو بدالتي الشراء والبيع كالتالي :
دالة مضاعفات اختيارية بناء على المصفوفة
نقوم بعمل المتغيرات الخارجية كالتالي :
ثم تعريف المصفوفة خارج الدوال كالتالي :
ثم دالة فرعية لمعرفة كومنت آخر صفقة مغلقة وتحويله إلى عدد صحيح int كالتالي :
ثم الشروط بدالتي البيع والشراء كالتالي :
دالة التريلينغ
المتغيرات الخارجية كالتالي :
ثم دالة التريلينغ خارج الدوال الرئيسية كالتالي :
ثم الشروط بالدالة الرئيسية OnTick كالتالي :
إذا كان مثلا TrailingStop=20 فبعد ربح 20 نقطه يتم نقل الوقف إلى نقطه الدخول ثم كل ربح نقطه يتم رفع الوقف بمقدار +1
الان مثلا عملت 20=TrailingStop و 10=TrailingStep فبعد ربح 30 نقطة (اجمالي 20+10) سيضع الإكسبريت الوقف بعد نقطة الدخول ب 10 نقاط و سيطارد السعر بفارق 20 نقطة
دالة البريك ايفن
المتغيرات الخارجية كالتالي :
ثم دالة البريك ايفن خارج الدوال الرئيسية كالتالي :
ثم الشروط بالدالة الرئيسية OnTick كالتالي :
مثلا إذا كنت تريد نقل الوقف إلى نقطة الدخول بعد ربح 10 نقاط سوف تجعل BreakEven=10 و BreakEvenPips=0
الان تريد بعد ربح 10 نقاط نقل الوقف ليس إلى نقطة الدخول لكن إلى ربح نقطتين مثلا في هذه الحاله سوف تجعل BreakEven=10 و BreakEvenPips=2
أي أن المتغير BreakEvenPips هو عدد نقاط الربح التي يتم نقل الوقف عندها
دالة الربح الاجمالي بالدولار
المتغيرات الخاجية كالتالي:
دالة فرعية لحساب إجمالي الربح بالدولار بالصفقات المفعلة كالتالي :
ثم الشروط بالدالة الرئيسية OnTick كالتالي :
و دالة الاغلاق كالتالي :
دالة الربح الاجمالي بالنقاط
المتغيرات الخاجية كالتالي:
دالة فرعية لحساب إجمالي الربح بالنقاط بالصفقات المفعلة كالتالي :
ثم الشروط بالدالة الرئيسية OnTick كالتالي :
و دالة الاغلاق كالتالي :
معلومات الحساب
نقوم بعمل دالة فرعية لمعلومات الحساب بالكومنت كالتالي :
ثم الشروط بالدالة الرئيسية OnTick كالتالي :
السلام عليكم
OnChartEvent أحد الدوال التي تم إضافتها بالتحديث الجديد للغة MQL4 لرسم أزرار على الشارت، تمكنك من التنفيذ بضغطة زر مثل تنفيذ البيع او الشراء او الاغلاق...
تعريفها لغويا كالتالي:
بحيث :
id تحفظ نوع الحدث الذي تم ( تحرك الماوس - ضغط على الشارت - تحريك كائن - ضغط على زر في الكيبورد ... )
وأنواعها :
للضغط على زر على الكيبورد
تحرك الماوس على الشارت
رسم كائن جديد على الشارت
تغيير قيم كائن
حذف كائن
كليك على الشارت
إضافة كائن على الشارت
الإنتهاء من تعديل نص في الكائن
تعديل قيم الشارت
عمل كائن فرعي محدد
المتغيرات الثلاث الأخرى تحفظ قيمة معينه حسب نوع الحدث
فمثلا بالنسبه للحدث CHARTEVENT_OBJECT_CREATE
sparam تحفظ إسم الكائن الذي تم رسمه
مثلا CHARTEVENT_OBJECT_CLICK
lparam تحفظ قيمة الإحداثي الأفقي
dparam تحفظ قيمة الإحداثي الراسي
sparam تحفظ إسم الكائن الذي تم الضغط عليه
مثال لعمل اكسبيرت يقوم برسم أزرار على الشارت البيع، الشراء والاغلاق...
دالة لرسم الأزرار على الشارت كالتالي:
ثم بداخل الدالة OnInit نكتب الدوال التالية:
الآن نعود مرة أخرى للداله OnChartEvent
في البداية نقوم بإضافة شرط لمعرفة إذا ما تم الضغط على أي زر على الشارت بإستدعاء إسمه
بقي فقط أن نضيف الأوامر كما هي محدده في الكومنتات لكن قبل ذلك يجب أن نقوم بمعرفة قيم حجم اللوت و الهدف و الاستوب :
أيضا سنضيف كود آخر بحيث بعد الضغط على الأزار تعود إلى طبيعتها مره أخرى
وسيكون الكود في النهاية بشكل كامل :
بقي الآن أن نضيف كود لزيادة أو تقليل حجم اللوت عندما يتم الضغط على زر + أو -
ولا ننسى الجزء البسيط وهو دالة إغلاق الصفقات
وبذلك يكون الإكسبرت جاهز للتجربه و العمل
ملف مرفق 839
مرفق الإكسبرت
(منقول)
//----
وللمزيد من الملعومات راجع الصفحة التالي:
OnChartEvent
لعمل قائمة منسدلة ستستخدم متغير من نوع enum والتي يكون مكانها قبل المتغيرات الخارجية
نستخدم enum ثم كتابة إسم المتغير الذي نريده وبداخل الأقواس نضع أسماء القيم التي نريدها وبينها فاصل وفي نهاية الكود نضع ;مثال :
مثال لشرط فتح صفقة شراء فقط :
او تختصرها بدلالة قيم المتغيرات كالتالي:
مثال لشرط فتح صفقة بيع فقط :
او تختصرها بدلالة قيم المتغيرات كالتالي:
مثال تطبيقي لعمل مؤشر اسهم وتنبيه لتقاطع موفينجين
المؤشر بالمرفقات مع شرح كل أجزائه
السلام عليكم
الشرح بالعربية ضمن كود الاكسبيرت كالتالي :
الاكسبيرت بالمرفقات
والله الموفق
- دالة رسم خط عمودي كالتالي :
//---------------
- دالة رسم خط أفقي كالتالي :
//---------------
- دالة رسم الترند كالتالي :
//---------------
- دالة رسم اسهم كالتالي :
//---------------
- دالة رسم الفيبوناتشي كالتالي:
//---------------
- دالة كتابة كومنت على الشارت كالتالي:
رسم قناه سعريه متساويه الابعاد
بارك الله فيك أخي الكريم والله الموفق
العفو
راجع المشاركة التالية :
دالة تستخرج تفاصيل آخر صفقة مفعلة
والمشاركة التالية :
دالة البيع ودالة الشراء
أي أسئلة برمجية أخرى المرجو مراجعة فهرس الموضوع أو طرحها بالموضوع الموضوع المخصص للأسئلة البرمجية
ويعافيك أخي، والله الموفق
وإياكم أخي والله الموفق
بارك الله فيك وبالتوفيق إن شاء الله
بالتوفيق إن شاء الله
السلام عليكم
الكود بالمرفق لمثال تطبيقي لعمل اكسبيرت لتقاطع موفينجين مع الستوكاستيك مع الشرح
تم الرد بالموضوع المخصص للأسئلة البرمجية
https://www.fxprg.com/vb/showthread.php?t=31457&page=15&p=872671&viewfull=1 #post872671
بالتوفيق إن شاء الله
وعليكم السلام
راجع الموضوع التالي:
المرجع الكامل في تعليم لغة mql4
وعليكم السلام
تم الرد بالموضوع المخصص للأسئلة البرمجية
جزاك الله خيرا أخي الكريم
تم الرد بالمشاركة السابقة
دالة فرعية مقصود بها دالة خارج الدوال الرئيسية
السلام عليكم
الكود بالمرفق لمثال تطبيقي لعمل اكسبيرت لتقاطع موفينجين مع الستوكاستيك مع الشرح
وإياك اخي الكريم
بالتوفيق إن شاء الله
دالة تستخرج تفاصيل آخر صفقة مفعلة من ربح، نوع، سعر، هدف، وقف، زمن ... بدلالة شرط معين عبارة عن كومنت
مثال لمعرفة ربح آخر صفقة مفعلة كيفما كان نوعها كالتالي :
مثال لمعرفة سعر آخر صفقة شراء مفعلة كالتالي :
الشرط سليم إذا كانت الصفقة السابقة لازالت مفعلة أي لم تغلق
! تعني false
يعني الشرط هو نفس الشرط حبيبي
void CloseOrders(int type=-1)
if(OrderType()==type||type==-1)
ليه هنا حددنا -1 للنوع ماذا تعنى عندما نحددها -1
وهل ​OP_SELL ليها عدد يعنى لما نقول اكبر منها يبقى اوامر معلقة بالتالى سنقوم بحذفها وليس اغلاقها
if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
ترتيب نوع الاوامر كالتالي
op_buy = 0,
op_sell = 1,
op_buylimit = 2,
op_buystop = 3,
op_selllimit = 4,
op_sellstop = 5.
وبالتالي الشرط نوع الامر اكبر قطعا من 1 يعني اذا كان الامر معلق
أما 1- حتى نتعامل مع الدالة دون شرط نوع الامر وكأنه غير موجود
وإياك أخي الكريم
تم اضافة كود شكل المؤشر :
UP_Code=233,
DN_Code=234
وهذه صورة بها كل أشكال الاشارة، كل اشارة لها كود خاص بها
ملف مرفق 7305
أما لون وحجم الاشارة يمكنك التحكم بها من الاعدادات
ملف مرفق 7306
وإياك أخي، وكل عام وأنتم بخير
جزاك الله خيرا اخي الكريم
وعليكم السلام
تم الرد بالموضوع المخصص للأسئلة البرمجية #3597
السلام عليكم
الاحظ اختفاء جميع الاكواد البرجية الخاصة بالموضوع
برجاء عمل باكب وارجاء الاكواد لاهميتها
ودمتم بخير
سيتم اصلاح المشكلة بإذن الله
السلام عليكم - الى الان لم يتم استعادة الاكواد للاسف - كان موضوع جيد جدا و مرجع للكثير من المبرمجين - هل هناك امل ؟؟
وعليكم السلام ورحمة الله وبركاته
نعم اخي هناك امل