لقد قمت ببرمجت أكسبرت
كل شيئ مشروح بالعربية داخل الكود لكيفية البرمجة
أرجو الإطلاع على الكود و مراجعت صحته و إعطاء بعض النصائح
لأنني مبتدأ في البرمجة
كود:
// تعريف بمتغيرات و مدخلات الموفنج السريع
extern string s1 = "faste MA setting " ; // faste MA setting
extern int FastMAperiod = 10 ; // Fast Period
extern int FastMAshift = 0 ; // Fast Shift
extern ENUM_MA_METHOD FastMAmethod = 0; // Fast Methode
extern ENUM_APPLIED_PRICE FastMAapllyto = 0; // Fast Applied to
// تعريف بمتغيرات و مدخلات الموفنج البطيئ
extern string s2 = "SLow MA setting " ; // SLow MA setting
extern int SLowMAperiod = 20 ; // SLow Period
extern int SLowMAshift = 0 ; // SLow Shift
extern ENUM_MA_METHOD SLowMAmethod = 0; // SLow Methode
extern ENUM_APPLIED_PRICE SLowMAapllyto = 0; // SLow Applied to
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double FastMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج السريع للشمعة 2 و تخزينها
double FastMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج السريع للشمعة 1 و تخزينها
double slowMALast = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,2);
// هذا السطر لجب قيمة الموفنج البطيئ للشمعة 2 و تخزينها
double slowMANow = iMA(NULL,0,FastMAperiod,FastMAshift,FastMAmethod,FastMAapllyto,1);
// هذا السطر لجلب قيمة الموفنج البطيئ للشمعة 1 و تخزينها
for(int i=OrdersTotal()-1 ; i >=0; i-- )
// هذا سطر هو حلقة التكرارية
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
// هذا السطر لإختيار و تحديد صفقة معينة
int ticket=OrderTicket();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة تيكت
double lots=OrderLots();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة اللوت
int type=OrderType();
// هذا السطر من أجل إمكانية تحديد قيمة الدالة أو الصفقة بدلالة نوع الصفقة , شراء أو بيع
if(OrderSymbol()==Symbol())
// هذا السطر لإختيار الصفقات التي مفتوحة على الشارت الموضوع عليه الأكسبرت
{
if(FastMALast<slowMALast && FastMANow>slowMANow)
// هذا شرط التقاطع للأسفل
// هذا الشرط يعني أن السعر في صعود
// هذا يعني أنه يجب غلق صفقات البيع
{
// هذا المكان لوضع أمر الإغلاق الصفقات
if(type==OP_SELL)
// هذا السطر هو أمر لإغلاق صفقة البيع
{
OrderClose(ticket,lots,Ask,3);
}
else if(type==OP_BUY && FastMALast>slowMALast && FastMANow<slowMANow)
// هذا السطر هو أمر لإغلاق صفقة الشراء في حالة لم يحدث الشرط الذي في الأعلى و حدث العكس
{
OrderClose(ticket,lots,Bid,3);
}
}
}
}
}