وعليكم السلام ورحمة الله وبركاته
لو مثلا أنت لديك بعض الأوامر تريد تنفيذها في شروط معينه مثل كود إغلاق الصفقة فإذا لم يكن هناك ما يسمى الدوال
فكان يجب أن تكرر كود إغلاق الصفقات مع كل شرط هذه هي فكرة إستخدام الدوال
طريقة تعريف الدالة
سنأخذ كمثال داله بسيطه
في البداية تعريف الداله يكون حسب نوع المخرجات أو القيم التي ستعود بها الداله فمثلا الداله Function وهذا إسم الداله ( يمكنك إختيار أي إسم للداله كما تريد )كود PHP:double Function(double a,double b)
{
double c=a+b;
return(c);
}
جعلت الداله من نوع double فهذا يعني أنها ستأخذ قيم أرقام عشرية ويمكنك تعريفها كأي نوع آخر
int أو string أو bool أو datetime أو color جميع المتغيرات المعروفه
أو إذا كانت الداله لا تحفظ قيمه معينه وتنفذ شروط فقط تستخدم void لتعريفها أي أنها لا تعود بأي قيمه
بعد تعريف الداله بداخل القوسين ( ) هذا الجزء يسمى متغيرات الداله في المثال السابق جعلت
متغيرات الداله هو a و b وجعلتهم من نوع double أي ستأخذ أرقام عشرية
ثم بداخل أقواس الداله { } أقوم بكتابة الكود الذي أريد تنفيذه عند إستدعاء الداله
وفي نهاية الدالة أستخدم الأمر return وهو يستخدم لحفظ القيمه أو المخرجات النهائية للداله بحيث عندما أستدعي الداله سوف تعود بقيمة هذه المخرجات
مثلا لو كتبت
فهذا يعني أني عرفت متغير إسمه Number وسوف يأخذ قيم ناتج مجموع 5 + 10كود PHP:int Number = Function(5,10);
نأتي الآن للداله التي أرفقت الكود لها
أول ما ستلاحظه أن هذه الداله من نوع void أي أنها لا تحفظ أي قيمها لكنها تنفذ فقط مجموعة من الشروط بداخلهاكود PHP:void AddBuy(){
if(Q>ordersS(MagicNumberB)&&ordersS(MagicNumberB)>0){
for(int i=0;i<OrdersHistoryTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY){
int type=OrderType();double open=OrderOpenPrice();double lott=OrderLots();double stop=OrderStopLoss();
double profit=OrderTakeProfit();
}
}{
if(Ask>open+3*point){
OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,profit,"MR.dollar EA",MagicNumberB,0,Green);}
if(Ask<open-3*point){
OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,profit,"MR.dollar EA",MagicNumberB,0,Green);}
}
}
}
إسم الداله هو AddBuy وسوف تجد بين القوسين ( ) لا توجد أي قيمة فهذا يعني أن الداله لا تأخذ أي قيم متغيرات
الكود بداخل الداله وهو الذي سيتم تنفيذه عند إستدعاء الداله
في البدايه يبحث في الصفقات المغلقه بإستخدام الحلقه for ( يجب أن تراجع شرح الحلقات )كود PHP:for(int i=0;i<OrdersHistoryTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY){
ثم يحدد إذا كانت الصفقة نوعها شراء يحفظ بيانات الصفقه ( سعر فتح الصفقه , حجم الوت , الهدف , الأستوب نوع الصفقه )
ثم إذا كانت السعر أكبر من سعر فتح الصفقه يضع أمر ليميت
وإذا كان السعر أقل من سعر فتح الصفقه يضع أمر ستوبكود PHP:if(Ask>open+3*point){
OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,profit,"MR.dollar EA",MagicNumberB,0,Green);}
كود PHP:if(Ask<open-3*point){
OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,profit,"MR.dollar EA",MagicNumberB,0,Green);}
}

