النتائج 1 إلى 3 من 3
- 19-06-2013, 08:31 PM #1
Global Variables موضوع بسيط للمبرمجين الجدد
بعد مطالعة في لغة MQL4 أحببت المشاركة في التعريف ب Global variables للمبتدئين في البرمجة .
فال Global variables مهمة جدا لك مبرمج
التعريف :
تعني المتغيرات العامة او Global Variables بمتغيرات يمكن تغيير قيمها او قراءتها من قبل الدوال على نطاق أوسع يشمل الاكسبيرتات والمؤشرات بخلاف المتغيرات العادية المحلية local او او المتغيرات الخارجية داخل البرنامج التي يمكن ان يتم قراءتها داخل الدوال في الاكسبيرت نفسه .
فمعنى اذا كان لدي دالة وتم تعريف متغيرات داخلها لا يمكن رؤيتها من قبل الدوال الاخرى وهذه المتغيرات تسمى local اما المتغيرات الخارجية هي متغيرات داخل الاكسبيرت او المؤشر تعرف خارج النطاق العام للدوال جميعها ويتم استخدامها من اي دالة
واما المتغيرات الثابته Constant والتي تعرف ب static فهي متغيرات تأخذ قيم داخل الدالة وتحتفظ بها حتى بعد الخروج من عمل الدالة في حين المتغير العادي داخل الدالة عند الانتهاء من عمله تتغير قيمته الى القيمة الابتدائية .
لكن لنفترض ان المبرمج صمم اكسبيرت لوظيفة معينة حسابية ويحتفظ بالقيمة بعد كل tick اي كل قيمة سعرية تأتي الى السيرفير
ويريد استدعاء اخر قيمة بعد الخروج من دالة start فاما ان يخزنها في متغير ثابت ويعرفه static ولكن تبقى هناك مشكلة وهي اذا توقف السيرفير او انقطع الكهرباء عن الكمبيوتر فما الحل ؟؟؟
هنا يأتي دور Global Variables تخزن القيم في الجهاز وعند استدعائها نباشر عمل الاكسبيرت بالشكل الطبيعي ويمكن رؤية ال global variables من المنصة بالدخول الى Tools ستجد ال Global variabls وقيمها وتاريخ تسجيلها بالجهاز ويمكن ان تحفظ القيم في الجهاز لمدة اسبوعين
هناك وظيفة مهمة أخرى وهي ان ال Global Variables هي حلقة الوصل والاتصل بين مجموعة اكسبيرتات تتبادل المعلومات بينهما كيف؟
لنفترض انك تشغل اكسبيرت على شارت يورودولار واكسبيرت اخر يعمل على شارت آخر وتريد ان يرقب احدهما الاخر هل دخل بيع ام شراء حتى يفعل نفسه لمهمة محددة . هنا يأتي دور ال global variables فان تعرف متغير على انه global variable في اكسبيرت ثم الاكسبيرت الاخر يقرأ هذا المتغير وعليه يحدد مهمته
حتى تصل الصورة أكثر قمت بعمل اكسبيرتين
الاول يعرف متغيرين عامين global variable ويعرض على الشارت قيمة يتم ادخالها ويعرض اغلاق السعر على الشارت
والثاني يقرأ القيم من الاكسبيرت الاول ويعرضها عنده
الاكسبيرت الاول
كود PHP:extern int g=77;
int start()
{
double x,d;
string str="Var";
string str1="Var1";
x=Close[0];
GlobalVariableSet(str,g);
GlobalVariableSet(str1,x);
d= GlobalVariableGet(str);
d=d+5;
Comment(str," ",d," ",GlobalVariableGet(str)," ",GlobalVariableGet(str1));
return(0);
}
كود PHP:int start()
{
double x,d;
if( GlobalVariableCheck("Var"))
d= GlobalVariableGet("Var");
if(GlobalVariableCheck("Var1"))
x=GlobalVariableGet("Var1");
Comment(d," ",x);
return(0);
}
شغل الاكسبيرتين على شارتين مختلفين وراقب النتيجة على الشارت ثم اغلق الكبيوتر او المنصة وراقب النتيجة
أتمنى أن أكون أوصلت المعلومات بشكل واضح
- 20-06-2013, 06:35 AM #2
شكرا ليك كتير كتير يا wadi2012
معلومه مفيده كتير
ولكن لو عملت هاد الاكسبيرتات
وحطيتها هنا كمرفقات بيكون مناسب كتير
- 23-06-2013, 05:28 AM #3
بارك الله فيك معلومات قيمه