تلميذك يا استاذ / وضاحاقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
قراءت شرحك للغة و تعلمت منه
مرورك شرف كبير لى
و شهادتك وسام على صدرى
Printable View
تلميذك يا استاذ / وضاحاقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
قراءت شرحك للغة و تعلمت منه
مرورك شرف كبير لى
و شهادتك وسام على صدرى
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج .
وبعدها سيقوم بفتح المحرر كما في الصورة التالية :
وكما نرى في هذه الصورة سنلاحظ 3 نوافذ في محرر الميتا :
1- نافذة محرر النصوص Editor window :
والتي تقوكم بكتابة برنامجك فيها .
2- نافذة صندوق الأدوات Toolbox window :
وهي تحتوي على 3 اقسام :
قسم الأخطاء Errors : وهنا يمكنك ان ترى أخطاء اكواد برنامجك بعد عملية تجميع البرنامج compile .
قسم البحث في الملفات Find in files : وهنا يمكنك البحث عن اي كلمة محجوزة داخل الميتا بكتابتها هنا لو الضغط على CTRL +SHIFT+ F .
قسم المساعدة Help : يمكنك معرفة كل شئ عن اي دالة او كلمة محجوزة بتظليلها ومن ثم الضغط على F1 وستجد كل المعلومات عنها في هذه النافذة .
3- نافذة مستكشف محرر الميتا Navigtor window :
وتحتوي على 3 اقسام :
قسم الملفات Files : يسهل عملية فتح وادارة الملفات الموجودة بمجلد الميتاتريدر .
الموسوعة Dictionary : ويحتوي على نظام المساعدة Help الكامل لمحرر الميتا .
قسم البحث Search : لتسهيل البحث في الموسوعة .
و مما لا شك فيه انه لابد من الإبحار في برنامج محرر الميتا وقوائمة ليصبح مألوفا أكثر لنا .
يا مسهل يجعلها بداية موفقة
هيا نعمل :
الأن نقوم بتشغيل برنامج محرر الميتا , ومن ثم علينا القيام ب 3 خطوات لبدء عملية برمجة المؤشر :
1- الخطوة الأولى : نضغط على قائمة الملفات file ونختار New ( او نضغط CTRL+N ) ليفتح لنا محرر الميتا برنامج التوجيه ( كما في الصورة ) والذي سينقلنا للخطوة الثانية .
علينا ان نختار خيار المؤشر او Custom Indicator Program ومن ثم نضغط التالي Next كما في الصورة :
يمشى الحال مع ال تريد
هيا نعمل :
الأن نقوم بتشغيل برنامج محرر الميتا , ومن ثم علينا القيام ب 3 خطوات لبدء عملية برمجة المؤشر :
1- الخطوة الثانية :
متى ضغطت على Next , سينقلك برنامج التوجيه الى الصفحة الثانية والتي يمكنك من خلالها ان تكتب خصائص المؤشر الرئيسية , وهذه الخصائص التي يمكنك كتابتها في هذه الخطوة (انظر الصورة ) :
اسم برنامجك ( المؤشر ) Name :
وهو الأسم الذي سيظهر لمستخدمي المؤشر وسيعرف به .
مثل ADX , MACD و هكذا .
اسم المبرمج Auther :
صانع المؤشر ( اسم المبرمج ) .
مثل : د. وليد , المهندس وضاح , ..........
رابط لموقعك الخاص Link .
ان وجد
قائمة Parameters:
وهى قائمة المتغيرات الخارجية External variables list :
والمتغيرات الخارجية يا سادة يا كرام هي المتغيرات التى سيسمح للمستخدم العادي بتغيرها عند تشغيل المؤشر . اى اعدادات المؤشر
مثل اعدادات المتوسط الحسابى و خلافه.
وهذا الجزء من برنامج التوجيه هو من يسهل لك كتابة هذا النوع من المتغيرات (الصورة )
هيا نعمل :
الأن نقوم بتشغيل برنامج محرر الميتا , ومن ثم علينا القيام ب 3 خطوات لبدء عملية برمجة المؤشر :
3- الخطوة الثالثة :
بعد الضغط على Next في الصورة السابقة سينقلك برنامج التوجيه الى الخطوة الثالثة وهي الخطوة الخاصة بخصائص المؤشر الشكلية ( شكل ومكان المؤشر على الشارت ) كما هو موضح بالصورة .
كمثال , هنا في هذه الخطوة يمكنك وضع شكل المؤشر ( خط او هيستوجرام او نقط ) , كما يمكنك ايضا اختيار الألوان الأفتراضية له , عدد خطوط المؤشر , وايضا مكان ظهوره على الشارت ( سواء على النافذة الرئيسية للشارت او في نافذة مستقلة ) .
يحتوي برنامج التوجيه في هذه الخطوة على الخيارات التالية :
خيار مؤشر النافذة المستقلة Indicator in separate window :
ان وضعت علامة على هذا الخيار (صورة 5) سيتم رسم المؤشر في نافذة مستقلة ( مثل مؤشرات RSI والستوكاستيك والمومنتيم ) وليس في الصفحة الرئيسية للشارت , ومن ناحية أخرى ان لم تقم بوضع علامة على هذا الخيار , فسيظهر المؤشر على نافذة الشارت الرئيسية ( مثل مؤشرات الموفنج افرج وباربوليك سار والبولينجر باندز )
خيار الحد الأدنى Minimum :
وهي متاحة فقط في حالة ما وضعت المؤشر في نافذة مستقلة , ووظيفتها وضع حد ادنى للمؤشر ( ارض المؤشر ) .
خيار الحد الأقصى Maximum :
وهي متاحة فقط في حالة ما وضعت المؤشر في نافذة مستقلة , ووظيفتها وضع حد أقصى للمؤشر ( سقف المؤشر ) .
قائمة التصنيفات Indexes :
هنا يمكنك وضع شكل المؤشر ( خط او نقط .. الخ ) ووضع الوانه اللأفتراضية ( احمر , اخضر .. الخ ).
في الصورة التالية قد وضعنا خيار النافذة المستقلة , ورسمه على شكل ( خط ) لونه ( أحمر ) :
الأن بعد ضغط زر انتهى Finish , سيختفي برنامج التوجيه وسيرجع بك المحرر الى نافذة تحرير النصوص , وخمنماذا ايضا ؟
سترى المسودة الأولى لأكواد مؤشرك الأول .
وهذا هو الكودكما ستراه :
عجيب !!!!!!!كود:
//+------------------------------------------------------------------+
//| My_First_Indicator.mq4|
//| dr_waleed |
//| http://www.moneyexpertsclub.com |
//+------------------------------------------------------------------+
#property copyright "dr_waleed"
#property link "http://www.moneyexpertsclub.com"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
string short_name = "Your first indicator is running!";
IndicatorShortName(short_name);
//----
return(1);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- check for possible errors
if (counted_bars<0) return(-1);
//---- last counted bar will be recounted
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
double dHigh , dLow , dResult;
Comment("Hi! I'm here on the main chart windows!");
//---- main calculation loop
while(pos>=0)
{
dHigh = High[pos];
dLow = Low[pos];
dResult = dHigh - dLow;
ExtMapBuffer1[pos]= dResult ;
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
كما ترى , قام برنامج التوجيه بكتابة العديد من الأكواد لك .
عفوا يوجد خلل فى كتابة الكود
و لنا عودة لشرح الكود
مشاركتك تشرفنى يا استاذنااقتباس:
المشاركة الأصلية كتبت بواسطة عبده المصرى
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج .
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ماذا حدث ؟
فتحنا محرر الميتا - ادخلنا له بعض المعلومات.
فكتب لنا كود البرنامج . لوحده و بعون الله
لا ينقص البرنامج الا بعض سطور بسيطة سنضيفها فما بعد
و لكن
هيا بنا الان نقراء ما هو مكتوب
انظر الصورةهذه السطور الخمسة هي عبارة عن تعليقات . تسطيع ان تكتب فيها ما شئت . اسم المبرمج . سنه . تاريخ ميلاده . نحن نستخدم التعليقات لنكتب بعض الملاحظات داخل اكواد البرنامج ويتم تجاهلها من قبل المجمع compiler .
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائج
ثم ماذا
كما تلاحظ في جميع السطور التالية انها تبدأ بالكلمة ( property# ) وهذا لأنها احد انواع البيانات ما قبل المعالجة , تسمى ببيان الملكية والخصائص .
بيانات ما قبل المعالجة هي تعليمات تعطيها للمجمع البرنامج compiler ليقوم بكتابتها في ملف ( ex4 ) دون معالجة برمجية .
وهي معرفات لقيم ثابتة لا تتغير وتدعى “Controlling Compilation” .
وايضا هي احد مكونات لغة MQL4 , ووظيفتها وضع وإظهار خصائص البرنامج ( المؤشر ).
كمثال : هل سيظهر المؤشر على الشاشة الرئيسية للشارت ام في نافذة مستقلة ؟ من هو كاتب البرنامج ؟ وهكذا ..
ملاحظة : تنتهي هذه البيانات بنهاية السطر ولا تنتهي بأي علامة ترقيم مثل الفاصلة المنقوطة ; .
كود:
#property copyright "dr_waleed"
#property link http://www.************.com
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
على بركة الله
سنبدأ من الأن الدروس العملية وصناعة البرامج.
اليوم سنبدأ بصنع مؤشر بسيط , وهو ما سيقدم لنا الكثير في فهمنا لهذه اللغة .
وهو سيقوم على عملية طرح اعلى سعر ( High ) من اقل سعر ( Low ) ويخرج النتائجالسطر الاول يمثل* خاصية الحقوق copyright :
ثم ماذا
فى الكود السابق
وهي الخاصية التي تمثل اسم المبرمج , رمز البيان المخصص لها هو من نوع سلسلة الحروف string
السطر الثانى يمثل* خاصية رابط الموقع Link :
وهي الخاصية التي تسمح لك بوضع رابط لموقع ما (موقعك الشخصي مثلا) من خلال الخطوة الثانية لبرنامج التوجيه امام كلمة Link
السطر الثالث يمثل* خاصية نافذة الشارت الرئيسية indicator_chart_window :
متى وضعت هذه الخاصية ( وترجمتها : مؤشر نافذة الشارت ) سيظهر مؤشرك على النافذة الرئيسية للشارت مع الشموع مثل المتوسط الحسابى
و اذا اردت ظهوره في نافذة مستقلة وهنا عليك استخدام خاصية أخرى وهي ( indicator_separate_window ).مثل الماكد و هذا ما فعلناهكود PHP:
ولا يسمح لك ابدا ان تستخدم الخاصيتين في نفس البرنامج ( المؤشر ).
نقطة هامة
يمكنك ان تضع محيط رقمي للمؤشر في نافذته المستقلة ( المحيط الرقمي لمؤشر ال RSI مثلا هو رقم 100 حده الأقصى , ورقم 0 حده الأدنى ). وفي هذه الحالة ستستخدم خاصيتان لذلك , وهما ( indicator_minimum ) للحد الأدنى للمؤشر , و ( indicator_maximum ) للحد الأقصى للمؤشر .
كما يمكننا ان مستويات محددة للمؤشر في نافذته المستقلة على شكل خطوط مثلا ( مثال ذلك في مؤشر RSI هما المستويان 70 و 30 اللذان يظهران على الشارت في نافذته المستقلة ) , والخاصية المستخدمة لذلك هي ( indicator_levelN ) حيث ان ( N ) هي عدد المستويات المطلوبه ( اما قيمة المستوى فهو القيمة المعطاة له ) .
كلا من الخاصيتين ( indicator_chart_window ) و ( indicator_separate_window ) هما من النوع void اي لا يأخذون اي قيم (كما ذكرنا من قيل) فقط تكتبهم كما هم .
في حالة مؤشرنا هذا سنستخدم خاصية النافذة المستقلة indicator_separate_window :
#property indicator_separate_window
* الحدالأدنى للمؤشر indicator_minimum :
بمساعدة هذه الخاصية يمكننا وضع قيمة للحد الأدنى لمحيط النافذة المستقلة والتي تعتبر الحد السفلي لهذه النافذة .
مثال :
الصورة
في هذا المثال وضعنا الحد السفلي للنافذة رقم ( 0 ) والحد العلوي لها رقم ( 100 ) .
بمعنىأخر ان مدى تحرك المؤشر في نافذته الخاصة هو ما بين ال 0 وال 100 .
نوع البيانات المستخدمة لهذه الخاصية هي ( integer ) اي عدد صحيح .
* الحد الأعلى للمؤشر indicator_maximum :
بمساعدة هذهالخاصية يمكننا وضع قيمة للحد الأقصى لمحيط النافذة المستقلة والتي تعتبر الحدالعلوي لهذه النافذة .
يجب ان تكون قيمة هذه الخاصية اعلى من قيمة خاصيةالحد الأدنى .
نوع البيانات المستخدمة لهذه الخاصية هي ( integer ) اي عدد صحيح .
* خاصية المستوى indicator_levelN :
بمساعدة هذه الخاصية يمكننا وضع مستوى رقمي محدد للمؤشر داخل محيطه الرقمي المحصور بين حده الأعلى وحده السفلي.
يجب ان تكون قيمته اكبر من الحدالأدنى واصغر من الحد الأعلى.
( N ) تمثل عدد المستويان المطلوب رسمها علىنافذة المؤشر ويمكننا رسم الى 8 مستويات كحد اقصى لنا .
الصورة
نوع البيانات المستخدمة لهذه الخاصية هي ( double ) اي عدد حقيقي .
* خاصية عدد وحدات المؤشر indicator_buffers :
بمساعدة هذه الخاصيةيمكننا وضع عدد محدد من وحدات الذاكرة ( مصفوفة ) تمكننا من استخدام اكثر من وحدةللمؤشر ( خطين للمؤشر بدلا من واحد مثلا )
لنفترض اننا وضعنا قيمة 2 لهذهالخاصية ( المدى المسموح لنا من 1 الى 8 ) فإننا نخبر المؤشر بعدد وحدتينله
( الستوكاستيك مثلا له خطان K+ و D+ اي ان قيمة هذه الخاصية عنده 2 ,, ال ADx قيمة الخاصية فيه 3 لوجود 3 خطوط هم تكوين هذا المؤشر )
في مؤشرنا هناقيمة هذه الخاصية هنا 1( بفر 1 )
كود PHP:
#property indicator_buffers 1
وهذا لأننانستخدم خط واحد فقط للمؤشر .
* خاصية اللون indicator_colorN :
كما اننا نستطيع ان نستخدم حتى 8 خطوط للمؤشر , يمكننا وضع لون خاص لكل منهم عن طريق هذه الخاصية ( indicator_colorN ) حيث ان ( N ) هي رقم الخط المعرف بالخاصية السابقة ( indicator_buffers ) .
المستخدمالعادي للمؤشر يمكنه تغيير اللون عن طريق نافذة خصائص المؤشر (صورة 2).
مؤشرنا هنا لونه أحمر
كود PHP:
#property indicator_color1 Red
نوع البيانات المستخدمة لهذه الخاصية هي ( color ) اي لون .