كود:
for(int i=2 ; i<10 ; i++) if(i%2==0
}; (print (iPrint("هذا العدد زوجى");
PlaySound("warning.wav");
{
Printable View
كود:
for(int i=2 ; i<10 ; i++) if(i%2==0
}; (print (iPrint("هذا العدد زوجى");
PlaySound("warning.wav");
{
نحن نتحدث عن لغة MQL4
ادواتها :
الحلقات و اتخاذ القرار
جملتى الكسر و الاستمرار
جملة الكسر The Break statment :
و جملة الأستمرار The Continue Statement:
اولا : جملة الكسر
هي كلمة محجوزة من كلمات لغة MQL4 وظيفتها انهاء الحلقة عند تصل اليها .
يتم وضعها كجملة تنفيذ في جسد الحلقة لتنهي الحلقة عند وصول المتغيرلقيمة محددة ونقل البرنامج الى حلقة اخرى او جزء اخر .
كود:for (int i=0; i<15 ; i++)
{
if (i==10
break;
print (i);
}
في هذا المثال سيتم تنفيذ الحلقة حتى يصل المتغير i الى القيمة 10 , وبعدها تقوم الكلمة المحجوزة ( break ) بانهاء الحلقة. في النهاية سينتج البرنامج هذه النتائج :0 1 2 3 4 5 6 7 8 9.
ثانيا : جملة الاستمرار
جملة الكسر أخرجتنا من الحلقة , ولكن جملة الأستمرار هذهستعيدنا الى الحلقة في حالة خروجنا منها .
كود:for (int i=0; i<15 ; i++)
كود:{
if (i==10
continue;
print (i);
}
في هذا المثال سيتم تنفيذ الحلقة حتى تصل قيمة المتغير i الى 10 وبعدها يجد الكلمة المحجوزة ( continue ) لتعيدنا ثانية الى الحلقة دون اخراج النتيجة ( 10 ) من الحلقة .
وتخرج النتائج هكذا من البرنامج : 0 1 2 3 4 5 6 7 9 1112 13 14 ( لاحظ عدم وجود النتيجة 10)
نحن نتحدث عن لغة MQL4
ادواتها :
الحلقات و اتخاذ القرار
3- الجملة الشرطية () switch :
تستخدم هذه الجملة في حالة تعدد القيم لمتغير واحد ( حرفى ) . فكل قيمة للمتغير لها تنفيذ برمجي محدد .
دعونا نرى مثالا :
عند اعلان نتائج القبول فى وظيفة معينة فاذا فرضنا ان :
احد المتقدمين انطبقت عليه الشروط A و التى تؤهله للعمل
احد المتقدمين انطبقت عليه الشروط B و التى تؤهله للعمل فى المرة القادمة
احد المتقدمين انطبقت عليه الشروط C و التى لا تؤهله للعمل
و المطلوب ان يقوم الحاسب بهذا العمل آليا
هنا نستخدم الجملة switch
و التى تحتاج ان نعرف لها متغير حرفى x
هكذا
كود:int chr x;
الجملة switch تربط المتغير x بجميع القيم
الداخلة للبرنامج وتتعامل معها على هذا النحو :
في حالة 'x=='A سيخرج الكومبيوتر الناتج ناجح والا سينفذ الأمر Break
في حالة 'x=='B سيخرج الكومبيوتر الناتج فرصة اخرى
في حالة !==x اي ان x لا تتطابق مع اي من القيم السابقة سيخرج الكومبيوتر النتيجة الأفتراضية وهى
غير مناسب
يبدو اننا اوشكنا على جني الثمار
مهدي كالعادة
والسلام عليكم
جنى الثمار ان شاء الله
بعد الموضوع القادم
فابقوا معنا
اهلا و سهلا و مرحبا بكم
فى
:0031: :0031: :0031: عالم الدوال :0031: :0031: :0031:
الدوال في اي لغة برمجية هي عصبالبرنامج
وقارب النجاة لكل مبرمج.
و سند المبرمج و عكازه و صاحبة اللمسات
السحرية فى البرنامج
نحن نتحدث عن لغة MQL4
ادواتها :
الدوال
ماذا نعني بالدالة function
"الدالة تشبه في طريقة عملها طريقة عمل مشواة اللحم , فأنت عليك ان تضع اللحم والبهارات وهي عليها ان تخرج لك الكباب المشوي ." و بالهنا و الشفا
"اللحم والبهارت هما العمليات والمتغيرات واسم الدالة , والكباب هو ناتج الدالة والذي يمثل بقيمة return " طيب فين السلطة "اما المشواة ذاتها فهي جسد الدلة .
هناك اختلاف وحيد بين المشواة والدالة وهو ان بعض الدوال لها ناتج خالي (لاشئ) (void) "
بصراحة كلام طعم . يفتح النفس
كدة الموضوع فيه شكولاتة و كباب و يالله
بالهنا و الشفا
نحن نتحدث عن لغة MQL4ما هى الدالة :
ادواتها :
الدوال
هب انك تحسب المتوسط للسعر على شمعة واحدة هاى + لو مقسوما على 2 . لكل شمعة و نفرض انهم 50 شمعة
هل نكتب هذا 50 مرة ؟
كتييييييييييييييييير قوى
طيب نعمل ايه
نكتبه مرة واحدة و نسميه دالة
و كل مرة جديدة نستخدم فيها هذا التعبير لا داعى لكتابته . فقط اكتب اسم الدالة
معقولة !!!!!!
نحن نتحدث عن لغة MQL4
ادواتها :
الدوال
ما هى الدالة :
الدالة : هى مجموعة جمل و تعبيرات تكتب مرة واحدة فى البرنامج و يطلق عليها اسم ما .
و فى كل مرة نريد استدعاء الدالة نكتب اسمها فقط
نشوف مثال :
كود:double
my_func (double a, double b, double c)
{
return (a*b + c);
}
فى المثال :اقتباس:
المشاركة الأصلية كتبت بواسطة ahmed hanafy
السطر الول :
تعريف نوع المتغير double الناتج
اى ان الناتج سيكون عدد به فاصلة عشرية
السطر الثانى :
اسم الدالة my_func (من عندنا) يعنى اى اسم
يعقبه () بينهما المتغيرات المطلوب التعامل معها .
السطر الثالث : جسم الدالة بين قوسين }{
جسم الدالة هو الكلمة المحجوزة return() و ما بداخلها هو التعبير الذى ستحسبه الدالة
هذا معناه ان الدالة لها 3 اقسام يمثلهم السطور السابقة : نوع و (اسم) و {جسم}
فى اى مكان داخل البرنامج اذا عرفت 3 متغيرا حسابية ( لماذا حسابية ؟) و ذكرت اسم الدالة سيقوم البرنامج باستدعاء الدالة من تلقاء نفسه .:016: :006:
اى انه سيضرب المتغير الاول فى الثانى و يضيف اليهما الثالث و يخرج لك الناتج .
ولوحده و بعون الله
ولا فى الاحلام ...... يا سلام
نحن نتحدث عن لغة MQL4
ادواتها :
الدوال
ما هى الدالة :
نقطة مهمة :
ليس كل الدوال تنتهي بالكلمة المحجوزة ( return ) خاصة لو لم يكن هناك اي قيمة ناتجة عن عمليات او ما شابه .
مثل :
نلاحظ هنا ان الكلمة المحجوزة void معناها "انه لا يوجد هناك نتيجة للمعطيات".كود:
void
my_func (string s)
{
Print(s);
}
في هذا المثال لم تخرج لنا الدالة قيمة الناتج بل فقط أخرجت لنا القيمة كما ادخلناها دون تغيير
متى لم تستخدم الدالة الكلمة المحجوزة ( return ) يجب علينا استخدام الكلمة المحجوزة ( void ) لنحدد طبيعة الدالة .
نحن نتحدث عن لغة MQL4
ادواتها :
الدوال
استدعاء الدالة
هناك عدة طرق بعد كتابة الدالة الخاصة بك تمكنك من استخدامها (استدعائها) في برنامجك .
افترض معي انك كتبت دالة تقوم بجمع عددين صحيحين . هكذا
و الان كيف نستدعيهاكود:
int hanafy(int a , int b)
{
return (a+b);
}
في المثال السابق سيخرج البرنامج والكومبيوتر الناتج 15 ( نتيجة جمع العددين 7 , 8 ) داخل الدالة التي كتبتها. !!كود:
int x=7;
int y=8;
int sum = hanafy(x,y);
print (sum);
لا حظ انك سميت الدالة الخاصة بك بالأسم hanafy, وقيمة الكلمة المحجوزة ( return ) بها عملية الجمع .
السطر الخيالي ( int sum = hanafy(x,y); ) هو من قام باستخدام الدالة ( استدعائها ) .
بمعنى شامل : انك كتبت الدالة وأعطيتها اسما ما , ثم كتبت امر استخدامها بكتابة اسمها داخل الأمر فقط (وتم تعريف اسم الدالة كمتغير ) , انت هكذا اساسا استدعيت الدالة الخاصة بك .
لغة MQL4 حين ترى اسم الدالة الخاصة بك ستقوم بأخذ القيم ( 7و 8 في المثال ) وتذهب بهم الى الدالة تبعك وتقوم بمعالجتهم حسب قيمة الكلمة المحجوزة ( return ) وتعود بالقيمة الناتجة الى السطور السابقة لتقوم بطبعها او اخراجها في المكان السابق .
سهلة العملية :007: , اليس كذلك ؟
نحن نتحدث عن لغة MQL4
ادواتها :
الدوال
دوال أساسية ( موجودة جاهزة داخل اللغة )
( ()init() , deinit() , start ):
" كل برنامج في لغة MQL4 سواء كان مؤشر , اكسبرت او اسكربت فهو يبدأ دائما بالدالة " ()init " اختصار كلمة بدأ (initialize) وهي تعمل بمجرد وضع البرنامج ( اكسبرت او مؤشر او اسكربت) على شارت الميتاتريدر , ووظيفتها بدء عمل المتغيرات الرئيسية بالبرنامج . و متى انتهى عمل البرنامج تقوم باغلاق الشارت او مسح المؤشر او الاكسبرت اواغلاق الميتا تريدر. تقوم الدالة " ()deinit " بعملها لأنهاء البرنامج .
الدالة الثالثة " ()start " ( اهم الدوال على الإطلاق ) تعمل بصفة دائمة كلما استقبلت معطيات وقيم جديدة في متغيراتها ( تحرك السعر يعطي قيم جديدة للهاي واللو والكلوز وقيم المؤشرات المختلفة هي قيم تتغير طوال الوقت ) , احب ان اخبركهنا انك ستقضي 90% من حياتك البرمجية داخل هذه الدالة .
سنعرف الكثير عن هذه الدوال الأساسية في حياتنا العملية عندما نبرمج ونكتب المؤشرات والإكسبرتات الخاصة بنا ان شاء الله ."
مازال الحديث عن لغة MQL4
ادواتها :
المصفوفات Arrays :
انتهت مفرداتى و عجزت افكارى عن التعبير عن المصفوفات عندما قرأت هذا الموضوع للدكتور وليد و لذا اورده بنصه
" في حياتنا العادية نحن عادة نجمعالأشياء المتشابهة تحت تصنيف واحد , كذلك في اللغات البرمجية نحتاج ان نجمع البيانات المتشابهة داخل وحدة ما نطلق عليها اسم المصفوفة , وهي من تقوم بهذه المهمة .
المصفوفات تشبه تماما الجداول , فأنت تجمع بيانات ما في جدول وتتعامل معها من ارقام صفوف هذا الجدول , حسنا , الصفوف في الجدول تسمى قوائم Indexes المصفوفة .
لكي تقوم بإعداد declaration اي مصفوفة بالبرنامج , عليك بكتابة مثل هذا الكود :
هنا انت اعددتمصفوفة من نوع ( integer ) اعداد صحيحة , تحمل 50 بيانا , لكل بيان قيمته الخاصة به .كود:int my_array[50];
يمكنك ان تستدعي اي بيان تريده منهم عن طريق قائمة هذا البيان هكذا :
هنا انت وضعتالقيمة 500 للبيان رقم 10 في المصفوفة .كود:My_array[10] = 500;
يمكنك ان تدمج عملية الإعدادوالأستدعاء في سطر واحد هكذا ( تجمع الكودين السابقين في كود واحد ) :
( سأعطيكم مثالايشرح لغز المصفوفة هذا ,, المتوسط المتحرك 5 مثلا , مع كل شمعة ساعة جديدة يعطيقيمة جديد على شارت الساعة , سنأخذ قيم 5 شموع لهذا المتوسط , فيكون كاالتالي :كود:int my_array[5] = {1,24,15,66,500};
1.2469=[1] MA5
1.2676=[2] MA5
1.2659=[3] MA5
1.2359=[4] MA5
1.2229=[5] MA5
وهكذا هذه مصفوفة للموفنج افرج 5 وقيمه لأخر 5 شمعات .)
في حالة مؤشرنا هنا , فنحن نستخدم هذا الكود :
كود:double ExtMapBuffer1[ ];
هنا نحن اعددنا مصفوفة نوعها (doble) اي عدد حقيقي , وسنستخدم هذه المصفوفة لحساب القيم الخاصة بنا والتي سترسم على الشارت .