| |||||||
| التسجيل | التعليمـــات | قائمة الأعضاء | المجموعات الإجتماعية | التقويم | البحث | مشاركات اليوم | اجعل كافة الأقسام مقروءة |
![]() |
| | LinkBack | أدوات الموضوع | انواع عرض الموضوع |
| | #1 (permalink) |
| مراقب عام | بسم الله الرحمن الرحيم مرحبا بكم في الدرس الحادي العشر ... برمجة مؤشرك الأول (جزء 3) في درسنا السابق قمنا بدراسة اكواد مؤشرنا الأول سطرا سطرا حتى الدالة ()deinit . اتمنى ان تكونوا قد خرجتم من الدرس السابق بفكرة واضحة عن عمل الأكواد . اليوم بإذن الله سندرس الدالة ()start ومحتوياتها , بالإضافة الى تجميع المؤشر compile (تحويله الى ex4) وفي النهاية تشغيله على الشارت . هل انتم جاهزون لهذا الدرس ؟ اذن دعونا نبدأ بفك شفرات هذه الدالة .. أذكركم بأكواد مؤشرنا : كود PHP: __________________________________________________ كود PHP: كما اخبرتكم من قبل , سنقضي تقريبا %90 من حياتنا البرمجية داخل اقواس الدالة ()start . وذلك لأنها أهم دالة من الدوال الرئيسية في لغة MQL4 . وعلى عكس الدالتين السابقتين ()init و ()deinit . فهي لا تنتهي مرة واحدة من طرف المستخدم , وانما كل مرة يتحرك فيها السعر على الشارت الموضوع فيه المؤشر , تعمل هذه الدالة . دالة ()start مثل جميع دوال MQL4 تعود بنتيجة محددة returtn . حيث ان (0)return معناها انه لا يوجد اخطاء , واي قيمة أخرى غير 0 فهي خاطئة ويتم الأنتقال الى جزء أخر . __________________________________________________ كود PHP: هنا نحن عرفنا متغير ما على انه عدد صحيح int وسميناه ( counted_bars ) واسندنا له قيمة محددة وهي الدالة ( int IndicatorCounted() ) ... ( اي ان القيمة الناتجة من هذه الدالة ستعود الى هذا المتغير .) الدالة ()int IndicatorCounted : وهي الدالة التي ستعود بقيمة ما (عدد صحيح) وهذه القيمة هي عدد الشموع المحسوبة عن طريق مؤشرنا هذا ( مثلا المتوسط المتحرك 5 , عدد الشموع هنا 5 ) لكن في حالة مؤشرنا هنا واحد فقط . مع بداية تشغيل المؤشر على الشارت سيحسب القيمة 0 وذلك لأنه لم يقم بحساب اي عدد من الشموع بعد . بعد ذلك يقوم بحساب الشموع (البارات) الموجودة على الشارت . __________________________________________________ كود PHP: هذه الجملة ( counted_bars ) تحمل القيمة الناتجة من الدالة ()int IndicatorCounted ومن ثم تقوم الجملة الشرطية بعملها . يجب ان تكون القيمة اكبر من او تساوي 0 اما ان تكون اصغر من الصفر فهذا معناه ان هناك خطأ وسيتم انهاء الدالة ( في مثال المتوسط 5 لم يجد المؤشر 5 شموع على الشارت ليقوم بحساباته ولن يظهر على الشارت ) وهذا ما يعنيه السطر الكودي اعلاه __________________________________________________ كود PHP: هنا إذا جائت النتيجة صحيحة . وعدد البارات اكبر من الصفر ( اي ان عدد البارات على الشارت اكبر من المطلوب في المؤشر ). سيتم انقاص قيمة واحد من الناتج ( -- هي للإنقاص , راجع درس العمليات ) وبإنقاصها ستعود الدالة للحساب والمقارنة من جديد ( وهكذا يتم اصدار قيمة بعد قيمة لرسم المؤشر متصلا على الشارت مع كل شمعة ). __________________________________________________ كود PHP: هنا اعددنا متغير وأطلقنا عليه اسم (pos) واسندنا له قيمة ما وهي عدد العمليات التي يتم انجازها بواسطة الحلقة ( while ) والتي سيأتي ذكرها قريبا . يقوم المتغير بطرح الشموع (البارات) المحسوبة بواسطة المؤشر من مجموع الشموع (البارات) الموجودة على الشارت . هنا يسألني سائل , وكيف يتم حساب مجموع الشموع على الشارت في الأصل ؟ .. الأجابة : عن طريق الدالة Bars , حسنا , هذا وقت مناسب لنتكلم عن الدالة Bars وأخواتها : * المتغيرات المعرفة مسبقا في لغة MQL4 : الكلمات ( Ask, Bid, Bars, Close, Open, High, Low, Time ,Volume ) هي دوال لها وظائفها في لغة MQL4 , وتعرف بإسم " المتغيرات المعرفة مسبقا في MQL4 ". وهو ما معناه ان هذه الدوال تستخدم مباشرة في معادلات واكواد اللغة بدون اي تعريف لهم ( يكفي وضعهم فقط وسيتعرف البرنامج عليهم اوتوماتيكيا ). الأن دعونا نناقش كل دالة على حدة : كود PHP: وهي الدالة المسئولة عن حساب عدد الشموع (البارات) الموجودة على الشارت , وباستدعاء هذه الدالة فكأنما تدخل عدد الشموع الموجودة على الشارت المحتوي على المؤشر داخل اكواد هذا المؤشر . كود PHP: وهي الدالة التي تقوم باستدعاء سعر الشراء الحالي لزوج العملات الذي يعمل عليه المؤشر . كود PHP: وهي الدالة التي تقوم باستدعاء سعر البيع الحالي لزوج العملات الذي يعمل عليه المؤشر . مثال : USD/JPY = 133.27/133.32 .. السعر الأول هو سعر البيع Bid والذي سيتم استدعاءه بالدالة Bid ,, اما السعر الثاني فهو سعر الشراء Ask والذي سيتم استدعاءه بالدالة Ask . كود PHP: وسعر الإفتتاح هو اول سعر تبدأ به فترة زمنية محددة (شمعة) (دقيقة ,ساعة ,4 ساعات ,يوم , اسبوع ..الخ) امثلة : [Open[0 هو سعر افتتاح الشمعة الحالية ,, [Open[1 هو سعر افتتاح الشمعة السابقة ,, [Open[2 هو سعر افتتاح الشمعة قبل السابقة .. الخ. كود PHP: وسعر الإغلاق هو نهاية (أخر) سعر لفترة زمنية محددة (شمعة) (دقيقة ,ساعة ,4 ساعات ,يوم , اسبوع ..الخ) امثلة : [Close[0 هو سعر اغلاق الشمعة الحالية ,, [Close[1 هو سعر اغلاق الشمعة السابقة ,, [Close[2 هو سعر اغلاق الشمعة قبل السابقة .. الخ. كود PHP: وأعلى سعر هو أعلى سعر يسجل خلال فترة زمنية محددة (شمعة) (دقيقة ,ساعة ,4 ساعات ,يوم , اسبوع ..الخ) امثلة : [High[0 هو أعلى سعر للشمعة الحالية ,, [High[1 هو أعلى سعر للشمعة السابقة ,, [High[2 هو أعلى سعر للشمعة قبل السابقة .. الخ. كود PHP: وأقل سعر هو أقل سعر يسجل خلال فترة زمنية محددة (شمعة) (دقيقة ,ساعة ,4 ساعات ,يوم , اسبوع ..الخ) امثلة : [Low[0 هو أقل سعر للشمعة الحالية ,, [Low[1 هو أقل سعر للشمعة السابقة ,, [Low[2 هو أقل سعر للشمعة قبل السابقة .. الخ. كود PHP: كود PHP: وهي الدالة التي تقوم باستدعاء عدد الأرقام التي تأتي بعد الفاصلة العشرية للسعر (عادة تكون 4 ارقام ) كود PHP: وهي الدالة التي تقوم باستدعاء قيمة نقطة واحدة من السعر ( وهي عادة 0,0001 ) كود PHP: مثال : [Time [0 وهي زمن افتتاح الشمعة الحالية . __________________________________________________ كود PHP: هنا قمنا بإعداد ثلاثة متغيرات من نوع (double) لنستخدمهم فيما بعد . لاحظ الطريقة التي قمنا بإعداداهم بها , وهي سطر واحد ومفصولين بفاصلة عادية ( , ). __________________________________________________ كود PHP: هذا السطر من الأكواد يقوم بإخراج نتيجة كتابية على الشارت , وهو تعليق (الجملة بين القوسين) يظهر على الركن الأيسر العلوي من النافذة الرئيسية للشارت , وذلك بإستخدام الدالة comment . أنظر الصورة 1 ملاحظة : معنى كلمة comment بالعربية (تعليق) ) هناك دالتان أخرييان يقومان بوظائف مشابهة للدالة comment وهما : كود PHP: كود PHP: * * * * * * * * * * * * * * * * * * * * ![]() صورة 1 (التعليقات) ![]() صورة 2 (سجل الإكسبرت) ![]() صورة 3 (نافذة التنبيهات) __________________________________________________ كود PHP: الأن نصل الى المحرك الرئيسي للمؤشر ,, وهي الحلقة ( while ) (راجع درس الحلقات) التي ستقوم بالعملية الحسابية المطلوبة لإصدار قيمة المؤشر في شمعة ما ومن ثم ارسال هذه القيمة الى المصفوفة ( []ExtMapBuffer1 ) (هل تذكرونها من الدرس السابق ؟ ) . ستقوم المصفوفة ( []ExtMapBuffer1 ) برسم المؤشر على الشارت بسبب ارتباطها بالدالة ( SetIndexBuffer ) المسئولة عن الرسم .(راجع الدرس السابق ) بمعنى أكثر وضوحا : تذهب القيمة الناتجة من الحلقة ( while ) الى المصفوفة ( []ExtMapBuffer1 ) ومن ثم الى الدلة ( SetIndexBuffer ) التي ستقوم برسم المؤشر على الشارت . نعود الى الحلقة ( while ) .. قبل الدخول في هذه الحلقة يجب علينا اولا ان نحدد عدد مرات عمل الحلقة وذلك بطرح الشموع ( البارات ) المحسوبة من مجموع الشموع الموجودة على الشارت . عدد مرات عمل الحلقة تسمى ( متغير الحلقة ) وهو في مثالنا هنا المتغير ( pos ) ( لاحظ انها يجب ان تساوي او اكبر من الصفر حتى يتأكد من وجود شموع يمكن حسابها ويأمر الحلقة لتبدأ عملها ) . الأن نشرح عمل الحلقة : سنستخدم متغير الحلقة ( pos ) لتمثيل الشمعة (البار) الحالية على الشارت ,, مثلا [High[pos تمثل اعلى سعر للشمعة الحالية . في جسد الحلقة ربطنا المتغير ( dHigh ) لأعلى سعر في متغير الحلقة الحالية , وربطنا المتغير ( dLow ) لأقل سعر في متغير الحلقة الحالية . نتيجة طرح قيمتي المتغيرين ( dHigh ) و ( dLow ) ستذهب الى المتغير ( dResult ) . بعد ذلك سنستخدم قيمة المتغير ( dResult ) الناتجة لنرسم خط مؤشرنا على الشارت بربطه الى مصفوفة الرسم ( []ExtMapBuffer1 ) السابق ذكرها . أخر سطر من الحلقة هي المسئولة عن انقاص قيمة متغير الحلقة ( -1 ) وذلك لإنهاء الحلقة وتجهيزها لإستقبال قيمة جديدة (كل تغير في السعر او الهاي او اللو يعتبر قيمة جديدة) أخيرا يمكننا الأن ان نقوم بعملية تجميع compile ( اي تحويل مؤشرنا للغة الألة ) وذلك عن طريق الضغط على F5 او الضغط على compile من قائمة File او من شريط الأدوات ( راجع مقدمة الدروس ). الأن لتشغيل المؤشر على الشارت اضغط F4 لتظهر نافذة المستكشف Navigator ومن ثم تختار منها مؤشرنا (My_First_indicator ) والضغط عليه مرتين لتثبيته على الشارت . انظر الصورة 4 . ![]() صورة 4 ( My_First_indicator ) أمل ان تكونوا قد استمتعتم ببرمجة المؤشر الأول وان تقوموا بتجهيز انفسكم لبرمجة إكسبرتك الأول في الدروس القادمة بإذن الله . في الدرس القادم بأذن الله سنتكلم عن برمجة الإكسبرت الأول (جزء 1) اراكم على خير مجددا |
| | |
![]() |
| الكلمات الدلالية (Tags) |
| مؤشرك, الأول, الحادي, الدرس, برمجة, يصل, عصر |
| أدوات الموضوع | |
| انواع عرض الموضوع | |
|
|
المواضيع المتشابهه | ||||
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| مؤشر ناسداك يرتفع لليوم الحادي عشر على التوالي | fxyard | منتدى الاخبار اليومية في بورصة التداول | 0 | 07-23-2009 06:32 AM |
| الدرس الثاني عشر .. برمجة الإكسبرت الأول (جزء 1) | asklo | منتدى المؤشرات والاكسبريتات | 0 | 03-23-2008 11:14 AM |
| الدرس العاشر .. برمجة مؤشرك الأول (جزء 2) | asklo | منتدى المؤشرات والاكسبريتات | 0 | 03-23-2008 11:03 AM |
| الدرس التاسع .. برمجة مؤشرك الأول (جزء 1) | asklo | منتدى المؤشرات والاكسبريتات | 0 | 03-23-2008 10:55 AM |
| الدرس الأول .. قواعد لغة Mql4 | asklo | منتدى المؤشرات والاكسبريتات | 0 | 03-23-2008 09:43 AM |
جميع الحقوق محفوظة لمنتدى
الفوريكس يو 2008
جميع المشاركات والمواضيع في منتدى الفوريكس يو لا تعبر بالضرورة عن رأي إدارة
المنتدى بل تمثل وجهة نظر كاتبها