النتائج 1 إلى 12 من 12
- 23-04-2010, 07:36 PM #1
بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
حقيقة لطالما لم يجذبني الكلام النظري الممل وكانت أفضل الطرق التي إتخذتها للتعلم في جميع المجالات هي بالتطبيق المباشر وهذا بإذن الله ما سنلجأ إلى
سنتبع في خطوات التعليم على السلم التصاعدي فنبدأ بالإكسبرتات البسيطه جدا ثم نبدأ بشرح كل متغير نصل إليه وما فائدته
ثم نتدرج في الإكسبرتات الأكثر صعوبه والأكواد الأكثر تعقيدا
وبعدها يبقى عليك مرحلة التعلم الذاتي بالإطلاع على الإكسبرتات المختلفة مفتوحة الكود وهي أفضل الوسائل للوصول إلى الإحترافيه بإذن الله
حفاظا على تسلسل الموضوع وتناسقه أي إستفسار
ويمكنكم أيضا الإطلاع على الدروس المثبتة للمهندس وضاح العطار فهي ذات فائدة كبيره
فتح محرر الميتاإيديتور
قم بفتح برنامج الميتاتريدر والضغط على F4 أو إضغط على الأيقونه في الصوره التاليه وهي الخاصه بمحرر الميتاإيديتور
ثم نتبع الشرح كما في الصور لإنشاء ورقة عمل جديده
سوف نجد عدة خيارات من حيث نوع العمل الذي تريد إنشاءه سواء إكسبرت أو مؤشر أو سكربت أو ملف DLL
في حالتنا هذه سنختار إنشاء إكسبرت
ثم
ستظهر لنا نافذه جديده وهي التي يمكن من خلالها كتابة إسم الإكسبرت وإسم المؤلف أي حقوق الملكيه ويمكن تغييرها جميعا بعد كتابتها من داخل الإكسبرت
سوف نجد خانة Parameters وهي الخاصه بالمتغيرات الخارجية للإكسبرت أو بمعنى أوضح إعدادات الإكسبرت مثل حجم اللوت وخلافه وحاليا سنتركها بدون تعديل ولن نضيف أي متغيرات خارجيه .
بعد الضغط على Finish سيبدأ سيبدأ برنامج الميتاإيديتور بنقلنا إلى نافذة التحرير والتي سيتم فيها كتابة الأوامر البرمجية التي نريد من الإكسبرت عملها .
وما علينا سوى البدء في كتابة الأسطر البرمجية التي نريد من الإكسبرت تنفيذه
بعد فتح نافذة التحرير سوف تجد أن هناك بعض الأسطر البرمجيه المكتوبة سابقا وهي عباره عن الأسطر الرئيسيه الخاصه بلغة MQL
كما في الصوره التاليه:
سوف نجد أن نافذة التحرير مقسمة إلى عدة أقسام بالإضافة إلى قسم المتغيرات الخارجيه (سوف نتكلم عنهم بإختصار في الدروس القادمه)
القسم الأول
الدالهكود PHP:init()
القسم الثاني
الدالهكود PHP:deinit()
القسم الثالث
الدالهكود PHP:start()
أول ما سنلاحظه في بداية تعلمنا للبرمجه هو وجود بعض الكلمات التي تكون ذو لون رمادي باهت
والبعض الآخر يكون ذو اللون الأسود والبعض الآخر تكون له عدة ألوان مختلفه مثل الأزرق أو الأحمر أو الأخضر
فماذا تعني هذه الألوان :
الكلمات الملونه باللون الرمادي الباهت تسمى تعليقات وهو يشبه تماما الهامش الذي كنا نستخدمه في الإمتحانات فهو لا يؤثر على عمل الإكسبرت وحتى أن الإكسبرت لا يقرأه فمثلا إذا أراد المبرمج توضيح معلومه في الكود يقوم بإستخدام التعليقات
ويتم كتابة التعليقات بطريقتين
1_ أن يسبق السطر علامةكود PHP://
لأ . هناك طريقة أخرى لكتابة التعليقات بوضع هذه العلامةكود PHP:/*
كود PHP:*/
مثال :
كود PHP://this is comment
كود PHP:/*
this is comment
thanks
*/
ويتم إستخدامها للتعبير عن شيء محدد ولا يمكن إستخدامها لغير ذلك
النوع الثالث هي الكلمات ذو اللون العادي أو الأسود أي ليست الملونه وهي ليست كلمات محجوزه في لغة MQL وليست تعليقات بل هي كلمات قمنا بإستخدامها وأعطيناها دلالة محدده أو قيمة معينه تعبر عنها
وسوف نتكلم عن هذه المتغيرات بالتفصيل
بالنسبه للكلام السابق لا تهتموا به أو تعتقدوا بصعوبته فلاحقا ستعلمون أن الموضوع أبسط ما يمكن عند التطبيق الحي
أما الآن سنبدأ في دراسة إكسبرت لتقاطع خطي موفينج أفريج .
كود PHP://+------------------------------------------------------------------+
//| |
//| Copyright, created 16 Apr 2010 |
//| Desinged by MR.dollar |
//| |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "MR.dollar EA"
#property link "[email protected]"
extern string MM_Parameters = "---------- Money Management";
extern double Lots = 1;
extern string S5="---------------- Order Management";
extern int StopLoss=50;
extern int TakeProfit=50;
extern int MagicNumber=2533;
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي "+"\n"+"www.arabictrader.com/vb");
//////////////////////////////////////////////////
double ma1,ma2,ma11,ma22,rsi1,rsi2,ma3,ma33,ma4,ma44;
ma1=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,1);
ma11=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,2);
ma2=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);
ma22=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,2);
////////////////////////////////////////////////////
double SL,TP;
////////////////////////////////
if (ma22<ma11&&ma2>ma1 ){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
}
/////////////////////
if (ma22>ma11&&ma2<ma1 ){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
}
حفاظا على تسلسل الموضوع وتناسقه أي إستفسار يرجى وضعه في الموضوع المخصص للأسئله البرمجيه على هذا الرابط
https://forum.arabictrader.com/t37612.htmlآخر تعديل بواسطة MR.dollar ، 23-04-2010 الساعة 08:21 PM
- 23-04-2010, 07:41 PM #2
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
اتشرف ان اكون اول من يشكرك لفتح هذا الموضوع
تحياتي لك
- 23-04-2010, 07:56 PM #3
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
خطوة رائعة
بارك الله فيك اخي الكريم ولكن اتمنى منك الشرح بالتفصيل الممل ..
متابع معك
- 23-04-2010, 08:12 PM #4
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
السلام عليكم
في اول الصفوف تلميذ نشيط
وشكرا لك الموضوع من انفع المواضيع
تطبيق عملي
ابو نواف
- 23-04-2010, 08:18 PM #5
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
شكرا لردودكم الكريمه
وأي إستفسار أرجو وضعه في هذا الموضوع حفاظا على التسلسل
https://forum.arabictrader.com/t37612.html
- 26-04-2010, 05:53 PM #6
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
بسم الله الرحمن الرحيم
الآن لنبدأ في شرح الإكسبرت السابق بالتفصيل الممل
أول جزء في الإكسبرت
كود PHP://+------------------------------------------------------------------+
//| |
//| Copyright, created 16 Apr 2010 |
//| Desinged by MR.dollar |
//| |
//| [email protected] |
//+------------------------------------------------------------------+
كود PHP:#property copyright "MR.dollar EA"
#property link "[email protected]"
الجزء الثاني
كود PHP:extern string MM_Parameters = "---------- Money Management";
extern double Lots = 1;
extern string S5="---------------- Order Management";
extern int StopLoss=50;
extern int TakeProfit=50;
extern int MagicNumber=2533;
ولكن لنلاحظ شيء الآن
ماذا تعني extern
كما لاحظنا أن هذه الكلمة تتلون عند كتابتها في محرر الميتاإيديتور لذلك فهي من الكلمات المحجوزه وتستخدم لتعريف متغير خارجي ويتم كتابتها قبل نوع المتغير (ولكن ما هي المتغيرات وماذا تعني بنوع المتغير ؟)
المتغيرات
كما قلنا في الدرس السابق هي كلمات قمنا بإستخدامها وأعطيناها دلالة محدده أو قيمة معينه تعبر عنها
فمثلا أنا كتبت المتغير A وقمت بإعطاءه الرقم 1
فيعتبر A هو المتغير والقيمه التي أعطيتها له هي الرقم 1
ولكن هل يمكن أن أكتب في محرر الميتاإيدتور مباشره
كود PHP:A=1
تماما كما لو أنك أعطيت شخص علبه وقلت له إستخدمها ولكن هو لا يعرف ما هذه العلبه هل سيستطيع إستخدامها . بالتأكيد لأ
ولكن إذا أخبرته بأنها يوضع بها الماء عندها سيتمكن من إستخدامها
وبنفس الطريقه سنقوم بتعريف هذه المتغيرات
إذا كيف نقوم بتعريف المتغيرات ؟
وماذا تعني string double int bool
int
هذه الكلمة المحجوزه تستخدم لتعريف متغير على أنه رقم صحيح وليس عشري
مثال:
كود PHP:int StopLoss=30;
int ahmed=1;
ونفس الشيء عرفنا المتغير ahmed على أنه عدد صحيح وأعطيناه القيمه 1
double
تستخدم هذه الكلمة لتعريف متغير على أنه رقم عشري
مثال:
كود PHP:double Lots = 1.5;
string
تستخدم هذه الكلمة المحجوزه لتعريف متغير على أنه سلسلة نصيه أو كلمه ويجب كتابة هذه الكلمة بين علامتي تنصيص " "
مثال:
كود PHP:string MM_Parameters = "---------- Money Management";
"---------- Money Management"
bool
تستخدم هذه الكلمة المحجوزه لتعريف متغير على أنه متغير منطقي يأخذ قيمتين فقط إما صح (true) أو خطأ (false)
مثال:
كود PHP:bool Buy=false;
bool Sell=true;
عندها سيقوم الإكسبرت بإختبار الشرط هل قيمة Sell=true فإذا كان صحيح سيقوم بالبيع
ويجب ملاحظة أن في نهاية كل سطر برمجي نقوم بوضع علامة الفاصله المنقوطه ;
وهي شيء أساسي يجب أن تكون موجوده في نهاية السطر البرمجي في لغة MQL
الجزء الثالث
وهو الداله init
كود PHP:int init()
{
//----
//----
return(0);
}
الجزء الرابع
كود PHP:int deinit()
{
//----
//----
return(0);
}
ويتم إستدعائها مرة واحد عند نهاية عمل الإكسبرت أو المؤشر وحذفه من الشارت
وبإذن الله في الدرس القادم سندخل مباشرة في الداله start
أي سؤال يرجى وضعه في هذا الموضوع
https://forum.arabictrader.com/t93908.html#post1643767آخر تعديل بواسطة MR.dollar ، 30-04-2010 الساعة 02:18 PM
- 30-04-2010, 04:00 PM #7
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
الداله start
يتم تنفيذ هذه الداله every tick أو عند كل تحرك للسعر
الشكل العام للداله يكون كالآتي
كود PHP:int start()
{
return(0);
}
كود PHP:{
}
في البدايه قمنا بوضع هذا السطر
كود PHP:Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي "+"\n"+"www.arabictrader.com/vb");
هذا الأمر يقوم بوضع التعليق الذي قمت بتعريفه في أعلى يسار الصفحه كما في الصوره التاليه
وتقوم بكتابة التعريفات التي تريدها بين القوسين ( ) وإذا كانت جمل نصيه يجب كتابتها بين علامتي تنصيص "" بداخل القوسين ويتم الفصل بين كل تعليق أو جمله وآخرى بعلامة ( + ) أو فاصله ( , )
ونلاحظ في نهاية السطر لا ننسى الفاصله المنقوطه دليل على إنتهاء السطر البرمجي ( ; )
ويمكن بالتأكيد حذف هذا السطر دون أن يؤثر على عمل الإكسبرت .
نأتي الآن إلى تعريف المؤشرات التي نريد إستخدامها وهي عبارة عن خطي الموفينج
في البداية قمنا بتعريف المتغيرات التي سنستخدمها للدلاله على الموفينج أفريج على أنها متغير من نوع double أو متغير عدد عشري في السطر التالي
كود PHP:double ma1,ma2,ma11,ma22;
فيمكن كتابتها بالشكل السابق أو كتابتها بهذه الطريقه
كود PHP:double ma1;
double ma2;
double ma11;
double ma22;
كود PHP:double ma1,
ma2,
ma11,
ma22;
كود PHP:ma1=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,1);
ma11=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,2);
ma2=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);
ma22=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,2);
كود PHP:iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) ;
وهي إختصار ل Moving Average
symbol العمله التي سنقوم بحساب قيمة الموفينج أفريج لها إجعلها NULL لعملة الشارت الحالي
timeframe التايم فريم المستخدم
period , ma_shift ,ma_method ,applied_price إعدادات مؤشر الموفينج أفريج
shift وهي رقم الشمعة التي سنحسب عندها قيمة الموفينج افريج
0 تعني الشمعة الحالية , 1 تعني الشمعة السابقه ,2 تعني الشمعة قبل السابقه وهكذا .
وهذه قائمة بأشهر دوال إستدعاء المؤشرات المستخدمة في الميتاتريدر
كود PHP:iADX( string symbol, int timeframe, int period, int applied_price, int mode, int shift);
iATR( string symbol, int timeframe, int period, int shift);
iBands( string symbol, int timeframe, int period, int deviation, int bands_shift, int applied_price, int mode, int shift);
iCCI( string symbol, int timeframe, int period, int applied_price, int shift);
iDeMarker( string symbol, int timeframe, int period, int shift);
iForce( string symbol, int timeframe, int period, int ma_method, int applied_price, int shift);
iIchimoku( string symbol, int timeframe, int tenkan_sen, int kijun_sen, int senkou_span_b, int mode, int shift);
iMomentum( string symbol, int timeframe, int period, int applied_price, int shift);
iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift);
iOsMA( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int shift);
iMACD( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift);
iSAR( string symbol, int timeframe, double step, double maximum, int shift);
iRSI( string symbol, int timeframe, int period, int applied_price, int shift);
iStochastic( string symbol, int timeframe, int Kperiod, int Dperiod, int slowing, int method, int price_field, int mode, int shift);
iWPR( string symbol, int timeframe, int period, int shift);
iStdDev( string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift);
الآن كيف يتم إستدعاء مؤشر خارجي غير موجود في الميتاتريدر
يتم ذلك بإستخدام الداله iCustom
كود PHP:iCustom( string symbol, int timeframe, string name, ..., int mode, int shift);
symbol هو إسم العمله إجعلها NULL لكي تكون العمله للشارت المستخدم
timeframe التايم فريم المستخدم إجعله 0 لكي يكون التايم فريم للشارت المستخدم
name إسم المؤشر ويوضع بين علامتي تنصيص ""
ثم تقوم بعد ذلك بكتابة متغيرات المؤشر الخارجيه تباعا أو يمكنك عدم كتابتها في حال أردتها أن تكون الإعدادات الإفتراضيه
mode وهو رقم الإندكس للمؤشر لاحظ الصوره التاليه
shift وهو رقم الشمعة التي سنأخذ عندها قيمة المؤشر
مع ملاحظة أنه يجب أن يتم وضع المؤشر بصيغة ex4 عن طريق عمل Compile له ويوضع في مجلد indicators في برنامج الميتاتريدر حتى يتمكن الإكسبرت من إستدعائه
على سبيل المثال في الصوره التاليه سوف تجد أن السهم ذو اللون الأصفر رقم الإندكس له هو 0 فإذا أردنا إستدعاء السهم الأصفر سنقوم بكتابة 0 في خانة mode وإذا أردنا إستدعاء السهم الأحمر سيكون الإندكس 2
للمزيد عن الداله iCustom راجع هذا الإستفسار
https://forum.arabictrader.com/t93175.html
لأي إستفسار يوضع في هذا الموضوع
https://forum.arabictrader.com/t93908.htmlآخر تعديل بواسطة MR.dollar ، 30-04-2010 الساعة 04:13 PM
- 07-05-2010, 12:50 PM #8
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
بسم الله الرحمن الرحيم
في الدرس السابق قمنا بشرح كيفية إستدعاء المؤشرات بمختلف أنواعها وبهذه الطريقة نكون أنجزنا جزء كبير من بداية الإنتهاء من أول أكسبرت نصممه
قمنا بإستدعاء مؤشرات الموفينج أفريج التي سنستخدمها في التقاطع كما شرحنا في الدرس السابق
كود PHP:double ma1,ma2,ma11,ma22,rsi1,rsi2,ma3,ma33,ma4,ma44;
ma1=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,1);
ma11=iMA(NULL,0,30,0,MODE_EMA,PRICE_CLOSE,2);
ma2=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);
ma22=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,2);
لاحظ في الصورة التاليه
الشمعة رقم 2 هي الشمعة قبل التقاطع والتي قمنا بتعريف الموفينج لها بالمتغير ma11 , ma22
الشمعة رقم 1 هي شمعة التقاطع والتي قمنا بتعريف الموفينج أفريج لها بالمتغير ma1 , ma2
وتعريف التقاطع سيكون إذا كان الموفينج أفريج الصغير في الشمعة 2 أكبر من الموفينج أفريج الكبير في الشمعة 2 ثم أصبح الموفينج أفريج الصغير في الشمعة 1 أصغر من الموفينج أفريج الكبير في الشمعة 1
وبالتالي يتأكد التقاطع ويتم الدخول شورت
ونستخدم عمليات المقارنه التي درسناها جميعا سابقا
العمليات الحسابيه والمقارنه والعطف
سنحاول شرح أهم العمليات الحسابيه وعمليات المقارنه التي نستخدمها دائما في لغة البرمجة MQL4
العمليات الحسابيه
1_ عملية الجمع ( + )
كود PHP:A=3+5;
2_عملية الطرح( - )
كود PHP:A=20-5;
فيكون A=15
3_عملية الضرب ( * )
كود PHP:A=2*3;
4_ عملية القسمه ( / )
كود PHP:A=6/2;
5_ عملية الزياده ( ++ )
كود PHP:i++
6_ عملية النقصان ( -- )
كود PHP:i--
هذه تعتبر أهم العمليات الحسابيه التي سنستخدمها كثيرا أثناء البرمجه
7_ عملية المساواه ( = )
كود PHP:A = 3
عمليات المقارنه
1_ أكبر من ( < )
كود PHP:A > 3
2_ أكبر من أو يساوي (=< )
كود PHP:A >= 7
3_ أصغر من ( > )
كود PHP:A < 0
4_ أصغر من أو يساوي ( => )
كود PHP:A <= 1
5_ لا يساوي ( =! )
كود PHP:A != 10
6_ عملية التساوي ( == )
كود PHP:A == 4
وهي تختلف عن العملية الحسابيه ( = )
عمليات العطف
1_ و ( && )
كود PHP:A > 3 && B <7
2_ أو ( || )
كود PHP:A > 3 || B < 7
3_ لا تتحقق ( ! )
كود PHP:!(A == 7)
- 14-05-2010, 04:05 PM #9
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
بسم الله الرحمن الرحيم
تحدثنا في الدرس السابق عن العمليات الحسابيه وكيفية إستخدامها وغالبا لا يخلوا أي إكسبرت أو مؤشر من بعض هذه العمليات الحسابيه
وصلنا في الإكسبرت إلى السطر البرمجي التالي
كود PHP:if (ma22<ma11&&ma2>ma1 ){
الجمل الشرطيه ( if )
تستخدم الجمل الشرطيه للتحقق من شرط ما فإذا تحقق الشرط يقوم بتنفيذ جسد الشرط وإذا لم يتحقق الشرط لا ينفذه وينتقل إلى السطر الذي يليه
ويتم كتابتها بالشكل التالي
كود PHP:if(------)
{--------;}
ثم يلي ذلك جسد الشرط وهو ما سيتم تنيفذه عند تحقق الشرط ويكتب بين القوسين { } ولا ننسى في نهاية الأمر وضع الفاصله المنقوطه ;
فمثلا لو قلت إذا كان A أكبر من 80 قم بإظهار رساله فسيكون الشرط كالتالي
كود PHP:if( A > 80 )
{ Alert(" A above 80 "); }
إذا كان جسد الشرط يتكون من جمله واحد يمكن الإستغناء عن الأقواس { } ويمكن كتابة الشرط بالشكال التالي
كود PHP:if( A > 80 )
Alert(" A above 80 ");
يمكن وضع أكثر من أمر في جسد الجمله الشرطيه يتم تنفيذه عند تحقق شرط معين كما في المثال التالي
كود PHP:if( A > 80 )
{
Alert(" A above 80 ");
PlaySound("Alert.wav");
}
في هذه الحاله يمكننا إستخدام الجمله الشرطيه if .....else
الجمله الشرطيه if .....else
إذا قلت إذا كان A =50 إطبع A تساوي 50 وإلا إطبع A لا تساوي 50 في هذه الحاله يمكننا إستخدام الجمله الشرطيه if ....... else
وسيتم كتابتها بالشكل التالي
كود PHP:if( A==50){
Print("A = 50");}
else{
Print("A != 50");}
كود PHP:if (ma22<ma11&&ma2>ma1 )
و ma2 أكبر من ma1
أي إذا كان موفينج 9 للشمعة قبل السابقه الشمعة رقم 2 أقل من موفينج 30 للشمعة قبل السابقه ثم أصبح موفينج 9 للشمعة السابقه الشمعة رقم 1 أكبر من موفينج 30 للشمعة السابقه
عندها يتأكد التقاطع ثم يتم تنفيذ جسد جملة الشرط وهو ما تم وضعه بين القوسين { }
ثم الجزء الخاص بتعريف الأستوب لوز والهدف
كود PHP:if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
وهي إذا كان StopLoss يساوي 0 وهو ما نقوم بتحديده من المتغيرات الخارجيه للإكسبرت فاجعل SL =0
وإلا فإنه ينفذ الأمر الآخر وهو
SL=Ask-StopLoss*Point
حيث Ask هو سعر الدخول شراء
StopLoss وهو عدد نقاط الأستوب لوز
فمثلا إذا كان سعر الدخول شراء هو 1.3077 وجعلت الأستوب لوز يساوي 20 نقطة
Point وهي قيمة النقطة للزوج الحالي
فسيكون SL=1.3077-20*Point
فيصبح الأستوب لوز 1.3057
ونفس الشيء بالنسبه للهدف
وبعد ذلك ينفذ الأمر OrderSend
كود PHP:OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
كود PHP:PlaySound("Alert.wav");
ويتم كتابة الأمر OrderSend بالشكل التالي
كود PHP:OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, color arrow_color);
symbol هو إسم العمله
cmd وهو نوع الصفقه شراء أو بيع او غير ذلك
volume وهو حجم اللوت
price وهو سعر الدخول بالنسبة للشراء فيكون سعر الدخول هو سعر Ask وبالنسبه للبيع فيكون سعر الدخول هو سعر Bid
إذا كانت الأوامر معلقه فيكون سعر الدخول هو مكان وضع الأمر المعلق
slippage أقصى تغير في السعر يسمح به فمثلا إذا وضعته 3 وكان سعر الدخول 90.15 فسوف يسمح الإكسبرت بتحرك أقصى حد 3 نقاط ويمكن الدخول في الصفقه
stoploss الأستوب لوز
takeprofit الهدف
comment التعليق الذي يتم كتابته بجوار الصفقه
magic الماجيك نمبر
expiration تاريخ إنتهاء الصفقه وهو خاص بالأوامر المعلقه
arrow_color لون السهم الذي سيظهر على الشاشه عند فتح الصفقه
بعد ذلك نضع شروط الدخول بيع
كود PHP:if (ma22>ma11&&ma2<ma1 ){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
ونكون قد أنهينا بفضل الله تصميم أول إكسبرت لك قد يكون الموضوع صعب في البدايه بسبب كثرة الأوامر والأكواد ولكن مع الإستمرار في التعلم ستجد الأمر بسيط
وفي الدرس القادم سنحاول نضيف بعض الخصائص الإضافيه للإكسبرت مثل أقصى عدد للصفقات ودالة إغلاق الأمر ونصعب الأمر قليلا
أي إستفسار يرجى إضافة في الموضوع التالي
https://forum.arabictrader.com/t93908.html
- 28-05-2010, 07:38 PM #10
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
بسم الله الرحمن الرحيم
بعد إنتهائنا من شرح الإكسبرت السابق بجميع أكواده
لنقم بعمل باك تست بسيط للإكسبرت فسوف نلاحظ أن الإكسبرت يفتح أكثر من صفقة والسبب أننا لم نحدد للإكسبرت عدد الصفقات التي يجب عليه فتحها ولا يزيد عنها في هذه الحالة نستخدم الدوال وغالبا ما تستخدم الدوال بدلا من تكرار الكود في كل مره نحتاجه فنقوم بعمل داله تنفذ الأمر الذي أخبرناه بها ثم نقوم بإستدعاء هذه الداله في كل مره نحتاجها
لكن قبل أن نتكلم عن الدول سنتكلم أولا عن الحلقات والتي غالبا ما يتم إستخدامها في الدوال
تستخدم الحلقات لعمليات المقارنه التي تتكرر ما دامت شروط المقارنه صحيحه ثم تقوم بتنفيذ جسم الحاله ما دامت هذه الشروط صحيحه وبمجرد إنتهاء الحلقه تقوم بنقل العمل إلى الأمر التالي ويوجد نوعين من الحلقات :
الحلقه for
الحلقه while
أولا : الحلقه for
سوف تتضح أكثر بمثال لنرى المثال التالي بالنسبة للحلقه for
كود PHP:for(int i=5;i>0;i--)
{
PlaySound("Alert.wav");
}
هل i>0 إذا كانت الإجابه نعم سيطرح واحد من i ثم ينفذ جسم الحلقه وهو إصدار التنبيه
ثم يعود إلى المقارنه مرة أخرى حتى يصل إلى i=0 ثم يقارن هل i>0 فستكون الإجابه فولس بالتالي يتم إنهاء الحلقه وينتقل إلى الأمر التالي
ثانيا : الحلقه while
هذه الحلقه لا تختلف عن الحلقه for إلا أنها لا تحتوي على إبتداء للحلقه أو نقصان أو زياده بل تقوم مباشرة بعملية المقارنه كما في المثال التالي
كود PHP:int i;
while(i<20)
{
PlaySound("Alert.wav");i++
}
ملحوظات :
يمكن إستخدام أكثر من أمر في جسم الحلقه مثلا
كود PHP:for(int i=5;i>0;i--)
{
PlaySound("Alert.wav");
Print("ArabicTrader");
}
كود PHP:int i;
for(i=0;i<20;i++)
{
PlaySound("Alert.wav");
}
الدوال :
كما أخبرنا سابقا أن الدوال الأساسيه الموجوده في المؤشر أو الإكسبرت ثلاثة دوال هم
كود PHP:init() start() deinit(
كود PHP:int orderscnt(){
return(0);
}
فمثلا إذا أردنا أن تعود الداله بقيمة عدد صحيح فسوف نقوم بتعريفها على أنها int أو عدد صحيح
وإذا أردنا أن تعود الداله بقيمة عدد عشري سنقوم بتعريفها بإستخدام الأمر double
وإذا كانت ستعود بقيمة منطقيه ترو أو فولس سنقوم بتعريفها على أنها متغير من نوع bool
ثم بعد ذلك يتبع الداله قوسين ()
بعد ذلك نستخدم الأقواس { } ويوضع بداخلها الأوامر التي ستنفذها الداله عند إستدعائها
ثم تأتي في النهاية الداله return وهي تقوم بإنهاء هذه الداله وتعود بالقيمه التي أخذتها هذه الداله
طبعا في مثالنا السابق الداله سوف تعود بالقيمه 0
لنبدأ بدالة بسيطه تحسب قيمة حاصل جمع متغيرين
كود PHP:int equal(){
int a=5; int b=12;
int c=a+b;
return(c);
}
والمتغير c=a+b
ثم قمنا بإنهاء الداله وحفظ الناتج عن طريق الأمركود PHP:return(c);
سنقوم بكتابة بداخل الداله start
كود PHP:if( equal() < 20 ){PlaySound("Alert.wav");}
الآن ماذا إذا أردت أن أجعل الرقمين 12 و 5 كمتغيرين يتم تحديدهم كل مره عند إستدعاء الداله
في هذه الحاله سنقوم أولا بتعريف الداله بشكل آخر فبدلا من أن نقوم بتعريف المتغيرين a و b بداله الداله نفسها سنقوم بتعريفهم بداخل القوسين ( ) كما في المثال التالي
كود PHP:int equal(int a , int b){
double c=a+b;
return(c);
}
ستكون المقارنه كالآتي
كود PHP:if(equal(12, 5)<20){PlaySound("Alert.wav");}
وفي الدرس القادم سوف نقوم بإنشاء دالة تعود بعدد الصفقات المفتوحه لنستخدمها في الإكسبرت الذي نعمل عليهآخر تعديل بواسطة MR.dollar ، 16-07-2010 الساعة 08:49 PM
- 17-06-2010, 08:38 PM #11
رد: بالتطبيق المباشر تعلم برمجة الإكسبرتات من البدايه حتى الإحتراف
آخر تعديل بواسطة MR.dollar ، 09-09-2010 الساعة 12:46 AM
- 11-12-2011, 12:31 AM #12
المواضيع المتشابهه
-
{{ ملخص مفيد لتعلم برمجة المؤشرات بالتطبيق المباشر }}
By man2forex in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 92آخر مشاركة: 15-10-2017, 06:31 PM -
مناقشة دروس تعلم برمجة الإكسبرتات بالتطبيق المباشر
By MR.dollar in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 143آخر مشاركة: 17-12-2012, 02:57 AM -
لماذا توقف موضوع بالتطبيق المباشر تعلم البرمجة اخى أسامة ؟
By Ahmed Shihab in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 1آخر مشاركة: 24-09-2010, 10:52 AM