اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى تعليم الفوركس (https://fx-arabia.com/vb/forumdisplay.php?f=3)
-   -   الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد (https://fx-arabia.com/vb/showthread.php?t=21198)

عمر عبد المجيد 04-06-2012 10:05 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
موضوع رائع واحلا لايكات

غشيم فوركس 04-06-2012 11:07 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
موضوع جميل
بارك الله فيك

مازن المشهداني 05-06-2012 04:15 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
اقتباس:

المشاركة الأصلية كتبت بواسطة عمر عبد المجيد (المشاركة 345887)
موضوع رائع واحلا لايكات

مشكور على مرورك والتقييم

مازن المشهداني 05-06-2012 04:15 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
اقتباس:

المشاركة الأصلية كتبت بواسطة غشيم فوركس (المشاركة 345920)
موضوع جميل
بارك الله فيك

وفيك بارك الله
مشكور عالمرور

عمر عبد المجيد 07-06-2012 05:38 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
السلام عليكم
اخي الكريم ارجو ان تواصل الدروس وموضوعك القيم لانني بحاجة ماسة لتعلم هذه اللغة
وعلى فكرة لك مني على كل درس لايك لاجل جهودك المبذولة في خدمة المنتدى
تحياتي

مازن المشهداني 07-06-2012 08:56 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
اقتباس:

المشاركة الأصلية كتبت بواسطة عمر عبد المجيد (المشاركة 347484)
السلام عليكم
اخي الكريم ارجو ان تواصل الدروس وموضوعك القيم لانني بحاجة ماسة لتعلم هذه اللغة
وعلى فكرة لك مني على كل درس لايك لاجل جهودك المبذولة في خدمة المنتدى
تحياتي

مشكور اخي الكريم على متابعتك وتقييمك الموضوع
وباذن الله سنكمل الدروس

مازن المشهداني 08-06-2012 05:19 PM

الدرس السابع .. المتغيرات
 
بسم الله الرحمن الرحيم

مرحبا بكم في الدرس السابع ... المتغيرات في لغة MQL4 :


المتغيرات Variables ؟

هي اسماء تطلق على قطاع الذاكرة المخزن لنوع معين من البيانات.

لنفهم أكثر سنرسم صورة عامة للموضوع كمثال:

تخيل معي ان ذاكرة الكومبيوتر هي عبارة عن سلسلة من الصناديق مختلفة الأحجام , وحجم الصندوق هو مساحة التخزين بالبايت (وحدة البناء في الكومبيوتر)

* لكي نستخدم صندوقا ما لنخزن به احد البيانات يجب ان نطلق عليه اسم ما , هذه العملية تسمى اعداد declaration.

* خلال عملية الأعداد declaration نستخدم كلمة نخبر بها الكومبيوتر بنوع وحجم الصندوق المطلوب استخدامه , هذه الكلمة نطلق عليها keyword اي كلمة محجوزة تشير الى فئة معينة من البيانات .

* بعد تحديد رمز البيان بكلمة محجوزة , عليك الأن بأختيار اسم معرف خاص للصندوق (والأفضل ان تختار اسما يدل على رمز البيان ايضا لتسهيل البرنامج) ,, مثلا حددت Integer (كلمة محجوزة معتاها عدد صحيح) لتصنيف رمز البيان , وتطلق اسما من مخيلتك وليكن مثلا files (معناها ملفات وهي كلمة اخترعتها انت) وتطلقها على الصندوق , هكذا يعرف الكومبيوتر ان يخزن ارقام صحيحة(نوع البيانات) في صندوق الذاكرة المدعو files .. وهكذا ... هذه المعرفات يطلق عليها اسم ثابت المتغيرات Variables constant.

* الأن حددنا رمز البيانات واسم الصندوق , علينا الأن ان نضع هذه البيانات داخل الصندوق وذلك عن طريق ان ننسب assigning هذه البيانات الى هذا الصندوق (بكتابته برمجيا)

* الأن حددنا رمز البيان في صندوقه المناسب واطلقنا معرفا ثابتا لهذا الصندوق له قيمة افتراضية هي الصفر (هنا نقول ان عملية الأعداد declaration قد تمت) .

* عملية بدء عمل البرنامج بأدخال القيم (ادخال القيم في لغة MQL4 يكون عن طريق بيانات الأسعار القادمة من السيرفر) وتسمى هذه المرحلة ب عملية البدء initialization.

يمكن اختصار الخطوات السابقة بمعنى أخر ايضا لوضوح الفكرة هكذا:

متى انشأنا متغيرا (سمي متغير لتغير قيمه المستمر نتيجة تغير الأسعار المستمر مما يغير في النتائج ايضا) فنحن نخبر الكومبيوتر اننا نريده ان ينسب assigning حجم ذاكرة مخصصة (بوحدة البايت) لمتغيرنا هذه , ونظرا لأن الأرقام الصغيرة والحروف والأرقام الكبيرة لن تشغل نفس المساحة من الذاكرة , فسيسألنا الكومبيوتر عن رمز البيانات وحجم المساحة المطلوبة لتخزينها , ولهذا نشأ علم انواع البيانات في اللغات البرمجية.
(سنحاول ان نفهم اكثر مع كثرة الأمثلة والدروس القادمة)

على سبيل المثال , ماذا لو أخبرنا الكومبيوتر بهذا الكود :

كود PHP:
int MyVaraible=0;


معناه اننا نطلب من الكومبيوتر ان يوفر لنا حجم ذاكرة تبلغ 4 بايت(int تعني ذلك كما سيتضح في هذا الدرس) لمتغيرنا الذي اسميناه ب MyVaraibles.

في المثال السابق استخدمنا:

int ---------- Keyword

int ---------- Integer data type.

int ---------- Declaration

MyVaraible ---------- Variable’s constant.

=0 القيمة الأفتراضية

(راجع الكلمات السابقة بما سبق شرحه)

هناك انواع مختلفة من رموز البيانات :

*اعداد صحيحة int
*اعداد حقيقية(عشرية) double
*حروف char
*الوان color
*السلسلة النصية string
*قيم منطقية(صح وخطأ) bool
*التاريخ datetime

لقد قمت بنسخ السطور السابقة من درس رموز البيانات في لغة MQL4 لكم , لتتذكروا فقط ما هي المتغيرات , والأن كيف نقوم بعملية اعداد للمتغير ؟

* الإعداد declaration :

عملية اعداد المتغير تعني تقديم وتعريف هذا المتغير للبرنامج والمبرمج والمستخدمين وتحديد نوعه ومساحة التخزين الخاصة به , وذلك باستخدام الكلمات المحجوزة التي ذكرناها في درس رموز البيانات (int, double, char, bool, string, color and datetime) مع معرفات نختارها لها .

مثال :

كود PHP:
int MyVaraible;


هنا قمنا بعملية اعداد declaration للمتغير ( الذي عرفناه بالأسم MyVaraible ) وحددنا نوعه كعدد صحيح integer بالكلمة المحجوزة ( int ) .

لا يمكننا ان نستخدم المتغير في البرنامج دون عملية الإعداد تلك ( الكود في المثال اعلاه ) , فلو قمنا مثلا باستخدام المتغير في اكواد اللغة دون عملية اعداده ( الكود اعلاه هو مثال لعملية الإعداد ) ستعطي عملية التجميع compile خطأ برمجي : ( 'MyVaraible' - variable not defined. 1 error(s), 0 warning(s). )

* الإبتداء Initialization :

هذه العملية للمتغير تعني ربط قيمة ما لهذا المتغير

مثال :

كود PHP:
MyVaraible=0;


يمكنك وضع القيمة مع الإعداد في نفس السطر , مثال :

كود PHP:
int MyVaraible=0;


كما يمكنك ان تضع إعداد declaration المتغير في سطر وعملية الأبتداء ( وضع القيمة ) Initialization في سطر أخر , مثال :

كود PHP:
int MyVaraible;





MyVaraible=5;


لكن تذكر دائما ان عملية الإعداد declaration يجب ان تسبق عملية الأبتداء Initialization دائما .

* مجالات المتغيرات في البرنامج Scopes :

المتغيرات يتم وضعها بطريقتين : موضعي Local وعام Global .

ماهو مجال المتغير ؟

هو مكان الكود الذي سيتعرف على المتغير ويستطيع ان يتعامل معه .

ما معنى هذا الكلام ؟

سنشرح بتفصيل اكثر :

a- متغيرات المجال الموضعي local scope :

هي المتغيرات التي يتم إعدادها داخل الدالة و لا يتم التعامل معها الا داخل الدالة او الحلقة او الجملة الشرطية الخاصة بها فقط ( من اسمها "موضعي")

مثال :

كود PHP:
double my_func (double a, double b, double c)

{

int d ;

return (a*b + c);

}



في هذا المثال a ,b ,c and d هم متغيرات موضعية ( داخلية ) اي انهم يستخدمون داخل قالب الدالة فقط ولا يمكن لأي دالة أخرى استخدامهم , حسنا كيف تعرف الدالة والبرنامج انهم خاصين بها وحدها فقط ؟ . الأجابة هي انهم وضعوا داخل القوسين ( ) بعد اسم الدالة ( مما يعني بالضرورة انهم لها وحدها) .

b- متغيرات المجال العام global scope :

وهي المتغيرات التي يتم إعدادها خارج الدوال والحلقات والقرارات ويكن استخدامها من اي مكان داخل البرنامج .

مثال :

كود PHP:
int Global_Variable;

double my_func (double a, double b, double c)

{

return (a*b + c + Global_Variable);

}



هنا في هذا المثال تم إعداد المتغير Global_Variable خارج الدالة ( خارج القوسين ( ) ) وهكذا يمكن استخدامه من اي دالة في البرنامج ككل .

تأخذ متغيرات المجال العام دائما القيمة الأفتراضية صفر , هذا اذا لم تستلم اي قيم أخرى .


* المتغيرات الخارجية Extern variables :


الكلمة المحجوزة ( extern ) تستخدم لإعداد انواع خاصة من المتغيرات , هذه الأنواع هي التي تعرف الإعدادات الرئيسية للبرنامج ( بمعنى اخر هي خصائص المؤشر او الكسبرت التي تظهر للمستخدمين عند فتحها )

مثال :

كود PHP:
extern color Indicator_color = C'0x00,0x00,0xFF'; // blue

int init()

{

...

}




هنا في هذا المثال , المتغير Indicator_color تم تعريفه على انه متغير خارجي .

هذه المتغيرات الخارجية هي المتغيرات التي تظهر على النافذة التي تظهر لك عندما تقوم بتشغيل المؤشر او الكسبرت على الشارت , ونافذة الخصائص ايضا .
ي متغير تريد ان يتم تغييره من قبل المستخدمين العاديين عرفه على انه متغير خارجي extern variable .


في الدرس القادم بأذن الله سنتكلم عن بيانات ما قبل المعالجة في لغة MQL4
اراكم على خير مجددا

مازن المشهداني 08-06-2012 05:23 PM

الدرس الثامن .. بيانات ما قبل المعالجة
 
بسم الله الرحمن الرحيم

مرحبا بكم في الدرس الثامن ... بيانات ما قبل المعالجة في لغة MQL4

ماذا نعني بهذه البيانات ؟

هذه البيانات هي تعليمات يقوم المبرمج بتزويدها للمجمع compiler ليقوم بحفظها كما هي قبل معالجة الكود .

بمعنى اخر , خلال عملية التجميع compile (راجع مقدمة الدروس) يقوم المجمع compiler بتحويل برنامجك (بعد انتهائك منه) من لغتنا البشرية الى لغة الألة (الواحد والصفر) ليقوم بعمله .

حسنا ماذا لو اردت منه ان لا يقوم بتحويل بعض التعليمات الى لغة الألة واخراجها كما هي بلغتنا ( كرابط موقع مثلا او تعريف بصانع الكسبرت وحقوقه .. الخ) ؟

هذه البيانات وتسمى preprossesors ( اي قبل المعالجة ) تقوم بهذه الوظيفة .

مثال :

كود PHP:
#include <win32.h>


هذا الأمر( كما سنعرف لاحقا) يقوم بأخذ محتويات الملف win32.h (ملف به عنوانك مثلا) ووضعه داخل البرنامج دون تغيير فيه , فقط يقوم بفتح محتوياته داخل البرنامج ايا كانت .

هناك 4 انواع من هذه البيانات في لغة MQL4 :

1- بيان التعريف define directive :

وهو الأمر الذي ينتج ثابت ما ..

لا حظ الفرق بين المتغير والثابت فالأول يأخذ قيم متغيرة طوال الوقت سواء من المبرمج او المستخدم او الشارت , اما الثابت فهو ذو قيمة محددة لا تتغير ابدا .

مثال :

كود PHP:
#define my_constant 100


كما تلاحظ في المثال اعلاه لا توجد علامة المساواة ( = ) فقط فراغ space بين اسم الثابت (my_constant ) وبين قيمته ( 100 )

كما يمكنك ان تلاحظ ايضا عدم انتهاء الجملة بأي من علامات الترقيم مثل الفاصلة المنقوطة مثلا ; . وانما انتهت بمجرد انتقالنا الى سطر جديد في البرنامج .

اسم الثابت يخضع لجميع القواعد الخاصة التي تعلمتها الخاصة بتسمية المعرفات ( راجع درس ال SYNTAX ) , مثلا لا يمكنك ان تبدأ برقم او تزيد عدد الأحرف اكثر من 31 حرف مثلا .

يمكنك ان تضع اي قيمة تريدها من اي نوع لهذا الثابت في البداية .

ان استخدمته في كود ما سيتامل معه البرنامج كقيمة ثابتة كما تمت كتاتها .

وهكذا يمكن كتابته على النحو التالي :

كود PHP:
sum = constant1 * 10;


2- بيان الملكية property directive :

هل تتذكرون عبارة “Controlling Compilation” السابق ذكرها في الدرس الأول وأخبرتكم وقتها ان شرحها سيأتي لاحقا .

حسنا , هي احد خواص لغة MQL4 التي تسمح لك بوضع البيان ( prperty ) وامامه اي جملة ( او قيمة ) وسيخرجها المجمع compiler كما هي في ملف البرنامج المستخدم من قبل الألة ( ex4. ) .

امثلة :

كود PHP:
#property link "http://www.forex-tsd.com"

#property copyright "Anyone wants to use"


وهذه قائمة بمعرفات هذا البيان :

http://www.moneyexpertsclub.net/foru...c59bc5f381.jpg

3- بيان الإحتواء include directive :

عندما تخبر البرنامج بالأمر (include) لملف خارجي ما , فكأنك تماما تقوم بنسخ محتويات هذا الملف داخل سطر ( include ) داخل البرنامج .

مثال :

كود PHP:
#include <win32.h>


في المثال اعلاه انت اخبرت الكومبيوتر بفتح الملف (win32.h) وقراءته ونسخ محتوياته داخل جملة ( include ).

حسنا , ما معنى القوسين < > في المثال اعلاه ؟

هما لتحديد مكان الملف المراد قراءته ( win32.h ) , وهنا القوسين < > يحددان المكان (المجلد) الإفتراضي لأي ملف داخل الميتاتريدر على هذا الأمتداد : (metatrader 4\experts\include) .

طيب ماذا لو كان الملف المراد قراءته في مكان أخر ؟

لو كان في نفس مجلد البرنامج , نضع اسمه مباشرة بين العلامتين " " .

مثال :

كود PHP:
#include “mylib.h”


ولو كان في مجلد أخر ( مثلا داخل مجلد D:\books ) نضع اسمه هكذا :

كود PHP:
#include “D:\books\mylib.h”


وفي جميع الحالات ان لم يجد البرنامج الملف في مكانه سيقوم بإصدار رسالة ( error ) اي خطأ في البرنامج .

يمكننا استخدام الأمر ( include ) في اي سطر من البرنامج ولكن جرت العادة ان يكون في رأس البرنامج .

4- بيان الإستيراد import directive : (هذا الأمر للقراءة وهو للمتخصصين فقط )

هو يشبه تماما الأمر السابق ( include ) من حيث جلبه لملف خارجي .

ولكنه يختلف عنه في نوع الملف , فهو يقوم بقراءة الملفات ذات الأمتدادات ( dll. ) و ( ex4. ) لوضعها داخل اكواد البرنامج .

مثال :

كود PHP:
#import "user32.dll"

int MessageBoxA(int hWnd,string lpText,string lpCaption,

int uType);

int MessageBoxExA(int hWnd,string lpText,string lpCaption,

int uType,int wLanguageId);

#import "melib.ex4"

#import "gdi32.dll"

int GetDC(int hWnd);

int ReleaseDC(int hWnd,int hDC);

#import





متى ادخلت دوال خاصة بملف ( ex4 ) فلن تحتاج ان تقوم بإعداداها declaration داخل البرنامج الأصلي.

لكن متى ادخلت دوال من ملف ( dll ) فيجب عليك اعداداها اولا داخل البرنامج الأصلي ( وذلك لأختلاف اللغة فقد يكون الملف مصدره لغة ال C مثلا فيجب وقتها ان توافق بين اللغتين )

مثال :

كود PHP:
int MessageBoxA(int hWnd,string lpText,string lpCaption,

int uType);


وستعمل الدوال التي اعددتها فقط في البرنامج .

يجب ان تنهي امر ( import ) بسطر ( import ) مجرد و خالي من اي اقواس او اسماء

كود PHP:
#import




في الدرس القادم بأذن الله ستبدأ ببرمجة مؤشرك الأول (جزء 1)
اراكم على خير مجددا

wolfkamikaz 10-06-2012 05:54 AM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
واصل الله يوفقك

قيس ياسر 10-06-2012 07:35 PM

رد: الى كل من يريد تعلم لغة MQL4 وباحترافية عالية ...اذن هنا تجد ما تريد
 
واصل اخي الكريم
واحلى لايكات حتى تكون حافز لك ولو اني اعلم انك تحب ان تفيد اخوانك كثيرا
تحياتي


الساعة الآن 04:38 AM

Powered by vBulletin® Copyright ©2000 - 2024

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com