بسم الله الرحمن الرحيم
في هذا الدرس سنقوم بإذن الله بشرح المؤشرات المبيتة والداخلية والاستفادة منها وقراءة قيمها على أي شمعة على الشارت. المؤشرات المبيتة هي المؤشرات القياسية التي تأتي مع برنامج الميتاتريدر مثل الماكد و RSI و البولينغر باند وغيرها من المؤشرات الأخرى. المؤشرات المبيتة كلها عبارة عن وظائف تبدأ بالحرف i مثل iMA لمؤشر الموفينغ أفريج و iRSI لمؤشر RSI وهكذا. لكل وظيفة مؤشر هناك عدة مدخلات ( بارامترات ) يجب أن نتكبها بشكل صحيح حتى تعطينا الوظيفة القراءة الصحيحة. بعض هذه المدخلات ثابتة ومكررة مع أكثر من مؤشر مثل اسم الزوج والفترة المستخدمة والفريم المستخدم وهكذا. هذه المؤشرات يتم حساب قيمها داخليا بدون أن يكون لنا علاقة بالمعادلات الرياضية الداخلية للوظيفة. مع أنه من المفيد معرفة كيفية حسابها إلا أن الوظيفة تعطينا النتائج دون الخوض في تفاصيل الحساب. وهي أيضا توفر علينا الوقت والجهد وتصحيح الأخطاء وكبر حجم الكود. ولذلك من المفيد أن نتعلم كيفية استخدام هذه المؤشرات داخليا لأنها مفيدة جدا وضرورية جدا لعمل مؤشرات مطورة أكثر ولكنها تعتمد على مؤشرات قياسية. فمثلا مؤشر الانفجار السعري يعتمد على مؤشرين هما البولنغر باند والماكد. وسوف أقوم بشرحه بالتفصيل بعد هذا الدرس مباشرة في درس جديد. وفهم هذا المؤشر وكيفية برمجته وعمله أمر مهم جدا لفهم برمجة المؤشرات بشكل عام. كما قلنا فإن أي مؤشر هو عبارة عن وظيفة Function داخلية وفرتها لنا لغة MQL4 . وكل ما علينا فعله هو استدعاء هذه الوظيفة مع كتابة مدخلاتها بشكل صحيح وسوف نحصل على قيمة وحيدة عند كل شمعة تمثل قيمة المؤشر عند هذه الشمعة على الشارت. نبدأ أولا مع مؤشر معروف وبسيط وهو المتوسط المتحرك Moving Average اسم الوظيفة هو iMA ولها البارامترات التالية: كود PHP:
double iMA(string symbol, int timefra me, int period, int ma_shift, int ma_method, int applied_price, int shift)
شرح البارامترات المطلوبة لعمل هذه الوظيفة:
- اسم الزوج Symbol: وهو قيمة نصية ولدينا ثلاثة احتمالات لكتابة اسم الزوج وهي: 1- أن نكتبه بشكل مباشر مثل "GBPUSD" بأحرف كبيرة وهذه الحالة تكون عندما يكون المؤشر الذي نصممه يعمل فقط مع هذا الزوج وليس مع الزوج الذي وضع المؤشر عليه. ففي بعض الحالات قد نضطر لمعرفة قيمة المتوسط المتحرك لزوج محدد وليس للزوج المحدد على الشارت. ويجب أيضا أن يكون اسم الزوج صحيحا تماما ومطابقا للأسماء القياسية المعروفة. 2- أن نضع الثابت NULL والذي يعني أننا نريد حساب المتوسط للزوج الموجود على الشارت مهما كان نوعه. 3- أن نضع المتحول ()Symbol وهو متحول داخلي يعطينا اسم الزوج الحالي الموجود على الشارت. الطريقة الثانية والثالثة لها نفس التأثير لكني أفضل الطريقة الثالثة لأن بعض الوظائف وخصوصا عند تعاملنا مع الاكسبيرتات لا تقبل الطريقة الثانية في تحديد نوع الزوج وهي تريد تحديد أكثر لاسم الزوج. لذلك يجب أن نعتاد على استخدام Symbol لتحديد اسم الزوج حتى لا نقع في مشاكل مستقبلية. - نوع الفريم المستخدم timefra me: وهو قيمة رقمية تحدد لوظيفة نوع الفريم المستخدم وله أيضا عدة حالات: 1- صفر ( 0 ) وهذا يعني أننا نريد حساب المتوسط المتحرك للفريم الحالي الموجود على الشارت. 2- رقم 1 وهذا يعني أننا نريد حساب المتوسط المتحرك لفريم الدقيقة بغض النظر عن الفريم الحالي. 3- رقم 5 وهذا يعني أننا نريد حساب المتوسط المتحرك لفريم الخمس دقائق بغض النظر عن الفريم الحالي. 4- رقم 15 للربع ساعة و 30 للنصف ساعة و 60 للساعة و 240 للأربع ساعات و 1440 لليوم و 10080 للاسبوع و 43200 للشهر. 5- أن نكتب بدلا من الأرقام السابقة ثوابت تدل عليها ولها نفس التأثير ولكن تكون أوضح للقراءة والتعديل على الكود وهي: كود PHP:
PERIOD_M1 1 1 minute.
PERIOD_M5 5 5 minutes.
PERIOD_M15 15 15 minutes.
PERIOD_M30 30 30 minutes.
PERIOD_H1 60 1 hour.
PERIOD_H4 240 4 hour.
PERIOD_D1 1440 Daily.
PERIOD_W1 10080 Weekly.
PERIOD_MN1 43200 Monthly.
ويجب كتابتها بأحرف كبيرة كما هي مكتوبة بالجدول السابق تماما.
- الفترة period : وهي قيمة رقمية تحدد الفترة المستخدمة لحساب المتوسط هل هي 14 أو 20 وهكذا. هذه الفترة هي نفسها التي تضعها في خصائص مؤشر المتوسط المتحرك من برنامج التداول نفسه. - إزاحة المتوسط ma_shift : وهي قيمة رقمية سالبة أو موجبة تقوم بإزاحة المتوسط إلى اليمين أو اليسار بمقدار محدد من الشموع. وهذه الخاصية أيضا تجدها في خصائص المؤشر في برنامج التداول نفسه. جرب من برنامج التداول وضع قيم مختلفة عن الصفر مثل 10 و -10 وانظر الفرق وكيف يتم إزاحة المؤشر يمينا أو يسارا على الشارت. - طريقة حساب قيم المتوسط ma_method : وهي قيمة رقمية يمكن كتابتها كأرقام 0 - 1 - 2 - 3 حيث: 1- الرقم صفر للمتوسط البسيط Simple . 2- الرقم واحد للمتوسط الأسي Exponential. 3- الرقم اثنان للمتوسط المنعم Smoothed. 4- الرقم ثلاثة للمتوسط الموزون Weighted. يمكن أيضا كتابة ثوابت خاصة حسب الجدول المرفق: كود PHP:
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
يمكنك كتابة رقم مجرد أو اسم الثابت ويفضل طبعا كتابة الثابت لسهولة قراءة الكود وتعديله.
كل طريقة من الطرق السابقة لها كيفية حسابية معينة تعطي نتائج مختلفة قليلا عن سابقتها. - السعر الذي سيطبق عليه حساب المتوسط applied_price : وهو قيمة رقمية تحدد نوع السعر الذي سيطبق عليه حساب المتوسط. هل هو سعر الإغلاق أو الفتح أو الأعلى وهكذا. وهو له القيم التالية: كود PHP:
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
يمكن طبعا كتابة رقم أو اسم الثابت والأسعار فوق واضحة طبعا.
- رقم الشمعة shift : وهو قيمة رقمية تحدد رقم الشمعة على الشارت الذي سنحسب لها المتوسط المتحرك. والشمعة الأولى على اليمين تأخذ الرقم صفر والتي تليها تأخذ الرقم واحد وهكذا. عند تشكل شمعة جديدة فإنها تأخذ فورا الرقم صفر والتي تليها يصبح رقمها واحد وهكذا. أمثلة توضيحية: كود PHP:
double myMA;
myMA=iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,0);
المثال السابق يحسب لنا قيمة المتوسط المتحرك البسيط بفترة 14 للزوج الحالي والفريم الحالي المستخدم على الشارت.
والحساب سيكون وفق سعر الإغلاق وللشمعة رقم صفر وهي أول شمعة على اليمين. كود PHP:
double myMA;
myMA=iMA(NULL,PERIOD_M30,30,0,MODE_EMA,PRICE_HIGH,5);
المثال السابق يحسب لنا قيمة المتوسط الأسي بفترة 30 للزوج الحالي وللفريم نصف ساعة على سعر الهاي.
والحساب هو للشمعة السادسة على الشارت.