عرض مشاركة واحدة
قديم 11-28-2007, 16:49   رقم المشاركة : [3 (permalink)]
شبكه جديد
الصورة الرمزية aqlan
 

aqlan is on a distinguished road
الدرس الاول

Bookmark and Share


الدرس الاول

مرفق:
برنامج Lesson1.mq4
برنامج يقوم بفتح اوامر بيع وشراء عند تقاطع خطين متوسطين 7و15 يشتري عند التقاطع للاعلى ويبيع عند التقاطع للاسفل

الهدف:
نهاية الدرس الاول هي بفهم اجزاء وتفاصيل البرنامج الاساسي بشكل عام غير تفصيلي وغير دقيق (نفهم الكل لنتعلم الاجزاء) سنصل الى فهم عمل البرنامج الاول و اجزائه الرئيسية ودور كل جزء منها.

اجزاء البرنامج:
سوف نشرح هنا اجزاء البرنامج، واعرف مسبقا انه سيكون في كثير من التساؤلات وعدم الوضوح لكن هذا شيء طبيعي ولاتستعجل اخي سوف تصل الى ادق التفاصيل باسرع مما تتصور لكن حاول ان تركز معي في هذا الدرس على عموم الشرح والتصور العام للبرنامج وليس فهم التفاصيل الدقيقة فهي لم ياتي وقتها بعد.
الاكسبيرت يتكون من خمسة مكونات اساسية لايخلو منها برنامج

اولا: مدخلات الاكسبيرت:
رمز:
//+------------------------------------------------------------------+
//| Input Parameters مدخلات الاكسبيرت |
//+------------------------------------------------------------------+
extern double Lots = 1;
extern int StopLoss = 40 ;
extern int TakeProfit = 120 ;
extern int MAS = 15;
extern int MAF = 7;


وهي عبارة عن مدخلات المستخدم والمتغيرات التي سوف تسمح له ان يعدل عليها مثل حجم العقد مثلا وتستطيع تمييزها عن غيرها من المتغيرات بكلمة extern السابقة للتعريف
وسوف نرى انواع اخرى من المتغيرات بالبرنامج.

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

رمز:
//+------------------------------------------------------------------+
//| Static Parameters متغيرات عامة |
//+------------------------------------------------------------------+
int Magic = 10;


ثالثا: دالة التهيئة:
الدالة هي عبارة عن جزء من البرنامج او الكود وكل دالة لها عمل ولها وقت محدد تنفذ فيه الكود الذي بداخلها وهنا هذه الدالة تنفذ مرة واحدة فقط وهو عند تشغيل الاكسبيرت في كل مرة او عند اعادة تشغيل برنامج التداول. وفي مثالنا هذا لم نستخدم اي كود بهذه الدالة ولكن في الدروس المتقدمة سوف نستخدمها بالتاكيد

رمز:
//+------------------------------------------------------------------+
//| Initialization function دالة التهيئة وتنفذ عند الدخول للاكسبيرت |
//+------------------------------------------------------------------+
int init()
{
//---- 


//----
return(0);
}


رابعا: دالة التصفية:
هذه الدالة تعمل بشكل معاكس لسابقتها فهي تنفذ الكود الذي بداخلها عند ايقاف استخدام الاكسبيرت او عند الخروج من برنامج التداول بالكامل. وايضا لم نستخدمها بمثالنا هذا
رمز:
//+------------------------------------------------------------------+
//| Deinitialization function دالة التصفية وتنفذ عند الخروج فقط |
//+------------------------------------------------------------------+
int deinit()
{
//----


//----
return(0);
}



خامسا: الدالة الرئيسية
هنا يتركز الكود الذي معظم العمل عليه، وهنا سننفذ استراتيجياتنا وحساباتنا الرقمية والرياضية وكذلك تنفيذ الاوردرات واغلاق الصفقات وتعديل الاهداف والاستوبات. اذا نستطيع ان نقول ان 99% من الكود موجود بهذه الدالة وسنفرد لها درس خاص وهو القادم باذن الله. يقوم برنامج الميتا ترايدر بتنفيذ الكود المتضمن بهذه الدالة مع كل تغير بالسعر على الزوج الموضوع عليه الاكسبيرت وهذا فرق واضح واساسي بينها وبين الدالتين السابقتين
رمز:
//+------------------------------------------------------------------+
//| Start function الدالة الرئيسية وتنفذ عند كل تغير بالسعر |
//+------------------------------------------------------------------+
int start()
{ 
//===== Part 1: Check opened positions: 
double curTotal=0, BuyRun=0, SellRun=0; 
for (int cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS) ; 
if(OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber()!= Magic) continue; 
if(OrderType()<=OP_SELL) 
{
curTotal+=1 ;
if (OrderType()==OP_SELL) { SellRun=OrderOpenPrice(); }
if (OrderType()==OP_BUY) { BuyRun =OrderOpenPrice(); }
}
} 
 
 
//=======Part 2: Initialize Parms:
double MA_f, MA_s, MA_f1, MA_s1;
MA_f = iMA(Symbol(), 0, MAF, 0, MODE_EMA, PRICE_CLOSE, 1); 
MA_s = iMA(Symbol(), 0, MAS, 0, MODE_EMA, PRICE_CLOSE, 1); 
MA_f1 = iMA(Symbol(), 0, MAF, 0, MODE_EMA, PRICE_CLOSE, 2); 
MA_s1 = iMA(Symbol(), 0, MAS, 0, MODE_EMA, PRICE_CLOSE, 2);  
bool CrossUp = (MA_f1<=MA_s1 && MA_f>MA_s);
bool CrossDn = (MA_f1>=MA_s1 && MA_f<MA_s); 
bool Long = (BuyRun==0 && CrossUp ); 
bool Short= (SellRun==0 && CrossDn ); 
 
 
//===== Part 3: Do Buy Or Sell: 
if(Long) 
{ 
OrderSend(Symbol(),OP_BUY,Lots,Ask, 5, Ask-StopLoss*Point, Ask+TakeProfit*Point,"LetsFX Lesson1", Magic, 0, RoyalBlue);
return ;
}
if(Short) 
{
OrderSend(Symbol(),OP_SELL,Lots,Bid, 0, Bid+StopLoss*Point, Bid-TakeProfit*Point,"LetsFX Lesson1", Magic, 0,LightPink);
return;
} 
 
 
//======Part 4: Handle Running Orders:
double OpenP=0,StopL=0,TakeP=0,Lot=0 ;
int Ticket=0, Type=0 ;
for (int cnt1=0; cnt1<OrdersTotal(); cnt1++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber()!= Magic) continue; 
if (OrderType()<=OP_SELL) 
{
Ticket= OrderTicket();
Type = OrderType();
OpenP = OrderOpenPrice();
StopL = OrderStopLoss();
TakeP = OrderTakeProfit();
Lot = OrderLots(); 
if (Type==OP_BUY) 
{ 
//Handle running Long pos: 
}
else 
{
//Handle running Short pos: 
} 
}
}
// the end. 
 
 
//----
return(0);
}




الجزء التالي هو للدوال الخاصة بالمبرمج، نعم تستطيع ان تعمل دوال خاصة بك تستدعيها من الدوال الرئيسية السابقة ولنضرب مثال بسيط لدالة قد تحتاج اليها وهي انك قد تعمل دالة تحسب لك متوسط الحركة الييومية للسعر لفترات مختلفة، وكثيرة هي الامثلة للدوال الخاصة وسنتطرق لها لكن بدروس متقدمة
رمز:
//+------------------------------------------------------------------+ //| My Functions الدوال الخاصة | //+------------------------------------------------------------------+

ملخص:
يفترض ان تكون اجزاء البرنامج واضحة لدى المتدرب وهي 5 اجزاء رئيسية يحتوي عليها اي برنامج والهدف من كل جزء من هذه الاجزاء يجب ان يكون مستوعب بشكل عام، كذلك 3 دوال رئيسية واساسية كل منها له وقت محدد يقوم نظام التداول بتنفيذ الكود المتضمن بها كل بوقته المحدد.

الدرس التالي هو بتفنيد الدالة الرئيسية وفهم تركيبتها الداخلية وماهي افضل الطرق لهيكلتها وتنظيمها.
سيكون الدرس القادم بعد ان نتأكد من ان الجزء الاول مستوعب ومن عنده تساؤل فاليوضحه مشكورين علما ان الدرس القادم قريب فلا تتاخرو باستفساراتكم.




الملفات المرفقة
نوع الملف: zip LetsFX - Lesson1.zip (1.4 كيلوبايت, المشاهدات 59)

نصائح هتفيدك قبل تحميل المرفق

1- أفحص الملف المرفق بأي برنامج مضاد للفيروسات
2- قم بمراسلة المراقب عن أي مرفق يوجد به فيروس
3- المنتدى غير مسول عن ما يحتويه المرفق من بيانات

التوقيع:

[عزيزي الزائر يتوجب عليك التسجيل للمشاهدة الرابطللتسجيل اضغط هنا]


aqlan غير متواجد حالياً   رد باقتباس
 
1 2 3 4 5 6 7 9 10 11 12 18 19 20 21 22 25 26 27 28 32 39 43 44 47 48 49 50 53 54 55 56 57 58 59